@hadss/hmrouter-plugin
Version:
HMRouter Compiler Plugin
74 lines (73 loc) • 3.35 kB
JavaScript
;
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;