UNPKG

@hadss/hmrouter-plugin

Version:

HMRouter Compiler Plugin

67 lines (66 loc) 3.02 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 packageJsonContent = framework_1.PluginFileUtil.readFileSync(packageJsonPath); let packageJson = JSON.parse(packageJsonContent.toString()); let hspNameArr = framework_1.PluginStore.getInstance().get('hspModuleNames'); if (!hspNameArr) { framework_1.PluginStore.getInstance().set('hspModuleNames', []); } framework_1.PluginStore.getInstance().get('hspModuleNames')?.push(packageJson.name); } } addModuleNode(node) { this.moduleNodes.push(node); } } exports.HMRouterPluginManager = HMRouterPluginManager; HMRouterPluginManager.instance = null;