import { decachePlugin } from '@server/helpers/decache'
import { MOAuthTokenUser, MUser } from '@server/types/models'
import { getCompleteLocale } from '@shared/core-utils'
-import { ClientScript, PluginPackageJson, PluginTranslation, PluginTranslationPaths, RegisterServerHookOptions } from '@shared/models'
+import {
+ ClientScriptJSON,
+ PluginPackageJSON,
+ PluginTranslation,
+ PluginTranslationPathsJSON,
+ RegisterServerHookOptions
+} from '@shared/models'
import { getHookType, internalRunHook } from '../../../shared/core-utils/plugins/hooks'
import { PluginType } from '../../../shared/models/plugins/plugin.type'
import { ServerHook, ServerHookName } from '../../../shared/models/plugins/server/server-hook.model'
path: string
staticDirs: { [name: string]: string }
- clientScripts: { [name: string]: ClientScript }
+ clientScripts: { [name: string]: ClientScriptJSON }
css: string[]
logger.info('Regenerating registered plugin CSS to global file.')
await this.regeneratePluginGlobalCSS()
}
+
+ ClientHtml.invalidCache()
}
// ###################### Installation ######################
registerHelpers = result.registerStore
}
- const clientScripts: { [id: string]: ClientScript } = {}
+ const clientScripts: { [id: string]: ClientScriptJSON } = {}
for (const c of packageJSON.clientScripts) {
clientScripts[c.script] = c
}
}
await this.addTranslations(plugin, npmName, packageJSON.translations)
+
+ ClientHtml.invalidCache()
}
- private async registerPlugin (plugin: PluginModel, pluginPath: string, packageJSON: PluginPackageJson) {
+ private async registerPlugin (plugin: PluginModel, pluginPath: string, packageJSON: PluginPackageJSON) {
const npmName = PluginModel.buildNpmName(plugin.name, plugin.type)
// Delete cache if needed
// ###################### Translations ######################
- private async addTranslations (plugin: PluginModel, npmName: string, translationPaths: PluginTranslationPaths) {
+ private async addTranslations (plugin: PluginModel, npmName: string, translationPaths: PluginTranslationPathsJSON) {
for (const locale of Object.keys(translationPaths)) {
const path = translationPaths[locale]
const json = await readJSON(join(this.getPluginPath(plugin.name, plugin.type), path))
// ###################### CSS ######################
private resetCSSGlobalFile () {
- ClientHtml.invalidCache()
-
return outputFile(PLUGIN_GLOBAL_CSS_PATH, '')
}
for (const cssPath of cssRelativePaths) {
await this.concatFiles(join(pluginPath, cssPath), PLUGIN_GLOBAL_CSS_PATH)
}
-
- ClientHtml.invalidCache()
}
private concatFiles (input: string, output: string) {
private getPackageJSON (pluginName: string, pluginType: PluginType) {
const pluginPath = join(this.getPluginPath(pluginName, pluginType), 'package.json')
- return readJSON(pluginPath) as Promise<PluginPackageJson>
+ return readJSON(pluginPath) as Promise<PluginPackageJSON>
}
private getPluginPath (pluginName: string, pluginType: PluginType) {
}
}
- private sanitizeAndCheckPackageJSONOrThrow (packageJSON: PluginPackageJson, pluginType: PluginType) {
+ private sanitizeAndCheckPackageJSONOrThrow (packageJSON: PluginPackageJSON, pluginType: PluginType) {
if (!packageJSON.staticDirs) packageJSON.staticDirs = {}
if (!packageJSON.css) packageJSON.css = []
if (!packageJSON.clientScripts) packageJSON.clientScripts = []