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