UNPKG

@hadss/hmrouter-plugin

Version:

HMRouter Compiler Plugin

69 lines (68 loc) 2.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskManager = void 0; const extension_1 = require("../extension"); const utils_1 = require("../utils"); const TaskStage_1 = require("./TaskStage"); class TaskManager { constructor(context, moduleExtensions) { this.extensionManager = extension_1.ExtensionManager.getInstance(); this.moduleExtensions = moduleExtensions || []; this.context = context; } executeStage(stage) { switch (stage) { case TaskStage_1.TaskStage.AFTER_ANNOTATION_ANALYSIS: this.executeAnnotationAnalysis(); break; default: this.getExtensions().forEach((extension) => { const methodName = stage.toString(); extension[methodName]?.(this.context); }); break; } } executeAnnotationAnalysis() { const extensions = this.getExtensions(); this.context.scanFiles.forEach((file) => { this.context.setCurrentFilePath(file); const sourceFile = utils_1.TsAstUtil.getSourceFile(file); extensions.forEach((extension) => { if (extension.afterAnnotationAnalysis) { extension.afterAnnotationAnalysis(sourceFile, file, this.context); } }); }); this.context.setCurrentFilePath(''); this.validateTemplateData(); } getExtensions() { const globalExtensions = this.extensionManager.getExtensions(); const allExtensions = globalExtensions.concat(this.moduleExtensions); return allExtensions.sort((a, b) => { const aIsHMRouter = a.name?.includes('HMRouter') || false; const bIsHMRouter = b.name?.includes('HMRouter') || false; if (aIsHMRouter && !bIsHMRouter) return -1; if (!aIsHMRouter && bIsHMRouter) return 1; return 0; }); } validateTemplateData() { const componentNames = new Set(); this.context.getAnalyzeResults().forEach((result) => { if (result.name) { componentNames.add(result.name); } }); const templateComponentNames = new Set(this.context.getTemplateDataMap().keys()); templateComponentNames.forEach((name) => { if (!componentNames.has(name)) { utils_1.Logger.warn(this.context.node.getNodeName(), `Component ${name} has template data but was not found in analyze results.`); } }); } } exports.TaskManager = TaskManager;