UNPKG

@hadss/hmrouter-plugin

Version:

HMRouter Compiler Plugin

74 lines (73 loc) 3.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HMRouterPluginManager = void 0; const hvigor_1 = require("@ohos/hvigor"); const PluginError_1 = require("./hmrouter_extension/error/PluginError"); const HMRouterExtension_1 = require("./hmrouter_extension/HMRouterExtension"); const framework_1 = require("./framework"); class HMRouterPluginManager { constructor() { this.controllerMap = new Map(); this.moduleNodes = []; framework_1.Logger.info('', 'HMRouterPlugin starting...'); (0, framework_1.registerPluginExtension)(new HMRouterExtension_1.HMRouterDefaultExtension()); hvigor_1.hvigor.nodesEvaluated(() => { this.moduleNodes.forEach((node) => { if (this.controllerMap.has(node.getNodeName())) return; node.getAllPluginIds().forEach((pluginId) => { this.registerPlugin(node, pluginId, {}); }); }); for (const [_key, controller] of this.controllerMap) { controller.start(); } }); hvigor_1.hvigor.buildFinished(() => { this.controllerMap.forEach((controller) => { controller.complete(); }); HMRouterPluginManager.instance = null; framework_1.PluginStore.destroy(); framework_1.ExtensionManager.destroy(); this.controllerMap.clear(); framework_1.TsAstUtil.clearProject(); }); } static getInstance() { if (!HMRouterPluginManager.instance) { HMRouterPluginManager.instance = new HMRouterPluginManager(); } return HMRouterPluginManager.instance; } registerPlugin(node, pluginId, options) { const moduleContext = node.getContext(pluginId); if (!moduleContext) { throw PluginError_1.PluginError.create(PluginError_1.ErrorCode.ERROR_CONFIG, node.getNodeName(), node.getNodePath()); } const controller = new framework_1.PluginExecutionController(node, moduleContext, options.extensions); this.controllerMap.set(node.getNodeName(), controller); if ((0, framework_1.isHspModule)(node)) { let packageJsonPath = framework_1.PluginFileUtil.pathResolve(node.getNodePath(), 'oh-package.json5'); let packageJson = framework_1.PluginFileUtil.readJson5(packageJsonPath); let hspNameArr = framework_1.PluginStore.getInstance().get('hspModuleNames'); if (!hspNameArr) { framework_1.PluginStore.getInstance().set('hspModuleNames', []); } let hspModulesInfo = framework_1.PluginStore.getInstance().get('hspModulesInfo'); if (!hspModulesInfo) { framework_1.PluginStore.getInstance().set('hspModulesInfo', []); } framework_1.PluginStore.getInstance().get('hspModuleNames')?.push(packageJson.name); framework_1.PluginStore.getInstance().get('hspModulesInfo')?.push({ moduleName: node.getNodeName(), packageName: packageJson.name }); } } addModuleNode(node) { this.moduleNodes.push(node); } } exports.HMRouterPluginManager = HMRouterPluginManager; HMRouterPluginManager.instance = null;