+ // ###################### Generate register helpers ######################
+
+ private getRegisterHelpers (
+ npmName: string,
+ plugin: PluginModel
+ ): { registerStore: RegisterHelpers, registerOptions: RegisterServerOptions } {
+ const onHookAdded = (options: RegisterServerHookOptions) => {
+ if (!this.hooks[options.target]) this.hooks[options.target] = []
+
+ this.hooks[options.target].push({
+ npmName,
+ pluginName: plugin.name,
+ handler: options.handler,
+ priority: options.priority || 0
+ })
+ }
+
+ const registerHelpers = new RegisterHelpers(npmName, plugin, onHookAdded.bind(this))
+
+ return {
+ registerStore: registerHelpers,
+ registerOptions: registerHelpers.buildRegisterHelpers()
+ }
+ }
+
+ private sanitizeAndCheckPackageJSONOrThrow (packageJSON: PluginPackageJSON, pluginType: PluginType) {
+ if (!packageJSON.staticDirs) packageJSON.staticDirs = {}
+ if (!packageJSON.css) packageJSON.css = []
+ if (!packageJSON.clientScripts) packageJSON.clientScripts = []
+ if (!packageJSON.translations) packageJSON.translations = {}
+
+ const { result: packageJSONValid, badFields } = isPackageJSONValid(packageJSON, pluginType)
+ if (!packageJSONValid) {
+ const formattedFields = badFields.map(f => `"${f}"`)
+ .join(', ')
+
+ throw new Error(`PackageJSON is invalid (invalid fields: ${formattedFields}).`)
+ }
+ }
+