@hadss/hmrouter-plugin
Version:
HMRouter Compiler Plugin
76 lines (75 loc) • 4.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PluginError = exports.ErrorCode = void 0;
const framework_1 = require("../../framework");
var ErrorCode;
(function (ErrorCode) {
ErrorCode[ErrorCode["UNKNOWN_ERROR"] = 40000000] = "UNKNOWN_ERROR";
ErrorCode[ErrorCode["DUPLICATE_NAME"] = 40000001] = "DUPLICATE_NAME";
ErrorCode[ErrorCode["WRONG_DECORATION"] = 40000002] = "WRONG_DECORATION";
ErrorCode[ErrorCode["REPEAT_ANNOTATION"] = 40000003] = "REPEAT_ANNOTATION";
ErrorCode[ErrorCode["ERROR_CONFIG"] = 40000004] = "ERROR_CONFIG";
ErrorCode[ErrorCode["NOT_EMPTY_STRING"] = 40000005] = "NOT_EMPTY_STRING";
ErrorCode[ErrorCode["INVALID_STRING_VALUE"] = 40000006] = "INVALID_STRING_VALUE";
ErrorCode[ErrorCode["ERROR_PAGE_SOURCE_FILE"] = 40000007] = "ERROR_PAGE_SOURCE_FILE";
ErrorCode[ErrorCode["FILE_ACCESS_ERROR"] = 40000101] = "FILE_ACCESS_ERROR";
ErrorCode[ErrorCode["FILE_NOT_FOUND"] = 40000102] = "FILE_NOT_FOUND";
ErrorCode[ErrorCode["PARSE_FILE_ERROR"] = 40000103] = "PARSE_FILE_ERROR";
ErrorCode[ErrorCode["TEMPLATE_RENDER_ERROR"] = 40000201] = "TEMPLATE_RENDER_ERROR";
ErrorCode[ErrorCode["TEMPLATE_NOT_FOUND"] = 40000202] = "TEMPLATE_NOT_FOUND";
ErrorCode[ErrorCode["UNKNOWN_CLASS"] = 40000301] = "UNKNOWN_CLASS";
ErrorCode[ErrorCode["UNKNOWN_PROPERTY"] = 40000302] = "UNKNOWN_PROPERTY";
ErrorCode[ErrorCode["UNKNOWN_CONSTANT"] = 40000303] = "UNKNOWN_CONSTANT";
ErrorCode[ErrorCode["UNKNOWN_VARIABLE"] = 40000304] = "UNKNOWN_VARIABLE";
ErrorCode[ErrorCode["EXTENSION_LOAD_ERROR"] = 40000401] = "EXTENSION_LOAD_ERROR";
ErrorCode[ErrorCode["EXTENSION_EXECUTE_ERROR"] = 40000402] = "EXTENSION_EXECUTE_ERROR";
})(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));
const ERROR_MAP = new Map([
[ErrorCode.UNKNOWN_ERROR, 'Unknown error'],
[ErrorCode.DUPLICATE_NAME, 'Duplicate name: %s'],
[ErrorCode.WRONG_DECORATION, 'Structure with @HMRouter annotation cannot contain NavDestination component, filePath: %s'],
[ErrorCode.REPEAT_ANNOTATION, 'File contains multiple annotations of the same type: %s'],
[ErrorCode.ERROR_CONFIG, 'Module context is empty, please check the hvigorfile.ts file in the module directory: %s'],
[ErrorCode.NOT_EMPTY_STRING, 'Constant value cannot be an empty string: %s'],
[ErrorCode.INVALID_STRING_VALUE, 'Invalid string value: %s'],
[ErrorCode.ERROR_PAGE_SOURCE_FILE, 'Page source file is empty, please check the pageSourceFile: %s'],
[ErrorCode.FILE_ACCESS_ERROR, 'File access error: %s'],
[ErrorCode.FILE_NOT_FOUND, 'File not found: %s'],
[ErrorCode.PARSE_FILE_ERROR, 'File parsing error: %s'],
[ErrorCode.TEMPLATE_RENDER_ERROR, 'Template rendering error: %s'],
[ErrorCode.TEMPLATE_NOT_FOUND, 'Template not found: %s'],
[ErrorCode.UNKNOWN_CLASS, 'Unknown class: %s'],
[ErrorCode.UNKNOWN_PROPERTY, 'Unknown property: %s'],
[ErrorCode.UNKNOWN_CONSTANT, 'Unknown constant: %s'],
[ErrorCode.UNKNOWN_VARIABLE, 'Unknown variable: %s'],
[ErrorCode.EXTENSION_LOAD_ERROR, 'Extension loading error: %s'],
[ErrorCode.EXTENSION_EXECUTE_ERROR, 'Extension execution error: %s'],
]);
class PluginError extends Error {
constructor(code, module, params, data) {
let message = ERROR_MAP.get(code) || 'Unknown error';
if (params) {
if (Array.isArray(params)) {
params.forEach((param) => {
message = message.replace(`%s`, param);
});
}
else {
message = message.replace('%s', params);
}
}
super(message);
this.code = code;
this.module = module;
this.data = data;
Object.setPrototypeOf(this, PluginError.prototype);
this.logError();
}
logError() {
framework_1.Logger.error(this.module, `error code: ${this.code}, error message: ${this.message}`, this.data);
}
static create(code, module, params, data) {
return new PluginError(code, module, params, data);
}
}
exports.PluginError = PluginError;