@yumerijs/core 1.1.0-alpha.2 → 1.1.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/command.d.ts +26 -0
  2. package/dist/command.js +36 -3
  3. package/dist/command.js.map +1 -1
  4. package/dist/config.d.ts +1 -1
  5. package/dist/config.js +1 -2
  6. package/dist/context.d.ts +17 -0
  7. package/dist/context.js +53 -0
  8. package/dist/context.js.map +1 -0
  9. package/dist/core.d.ts +25 -5
  10. package/dist/core.js +175 -30
  11. package/dist/core.js.map +1 -1
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.js +1 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/logger.d.ts +4 -0
  16. package/dist/logger.js +112 -1
  17. package/dist/logger.js.map +1 -1
  18. package/dist/middleware.d.ts +2 -0
  19. package/dist/middleware.js +2 -0
  20. package/dist/middleware.js.map +1 -0
  21. package/dist/platform.js +0 -1
  22. package/dist/session.js +0 -1
  23. package/package.json +2 -2
  24. package/dist/src/command.d.ts +0 -19
  25. package/dist/src/command.js +0 -28
  26. package/dist/src/command.js.map +0 -1
  27. package/dist/src/config.d.ts +0 -133
  28. package/dist/src/config.js +0 -205
  29. package/dist/src/config.js.map +0 -1
  30. package/dist/src/core.d.ts +0 -66
  31. package/dist/src/core.js +0 -363
  32. package/dist/src/core.js.map +0 -1
  33. package/dist/src/index.d.ts +0 -11
  34. package/dist/src/index.js +0 -28
  35. package/dist/src/index.js.map +0 -1
  36. package/dist/src/logger.d.ts +0 -15
  37. package/dist/src/logger.js +0 -39
  38. package/dist/src/logger.js.map +0 -1
  39. package/dist/src/platform.d.ts +0 -159
  40. package/dist/src/platform.js +0 -195
  41. package/dist/src/platform.js.map +0 -1
  42. package/dist/src/session.d.ts +0 -29
  43. package/dist/src/session.js +0 -106
  44. package/dist/src/session.js.map +0 -1
package/dist/index.js CHANGED
@@ -25,4 +25,4 @@ __exportStar(require("./command"), exports);
25
25
  __exportStar(require("./config"), exports);
26
26
  __exportStar(require("./logger"), exports);
27
27
  __exportStar(require("./platform"), exports);
28
- //# sourceMappingURL=index.js.map
28
+ __exportStar(require("./context"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;IAII;;;;;;;;;;;;;;;;AAEJ,yCAAuB;AACvB,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;IAII;;;;;;;;;;;;;;;;AAEJ,yCAAuB;AACvB,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,4CAA0B"}
package/dist/logger.d.ts CHANGED
@@ -3,9 +3,13 @@
3
3
  * @author: FireGuo
4
4
  * WindyPear-Team All right reserved
5
5
  */
6
+ import { Core } from './core';
6
7
  export declare class Logger {
7
8
  private title;
8
9
  private titleColor;
10
+ static coreInstance: Core | null;
11
+ static logs: string[];
12
+ static setCore(core: Core): void;
9
13
  constructor(title: string);
10
14
  private getRandomColor;
11
15
  private log;
package/dist/logger.js CHANGED
@@ -11,6 +11,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.Logger = void 0;
12
12
  const ansi_colors_1 = __importDefault(require("ansi-colors")); // 引入 ansi-colors
13
13
  class Logger {
14
+ static setCore(core) {
15
+ if (Logger.coreInstance !== null) {
16
+ const logger = new Logger('Logger');
17
+ logger.warn("Logger.coreInstance is already set. Overwriting would cause confusion.");
18
+ }
19
+ Logger.coreInstance = core;
20
+ }
14
21
  constructor(title) {
15
22
  this.title = title;
16
23
  this.titleColor = this.getRandomColor();
@@ -24,6 +31,7 @@ class Logger {
24
31
  const now = new Date();
25
32
  const timestamp = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, '0')}/${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
26
33
  console.log(`${timestamp} [${level}] ${this.titleColor(this.title)} `, ...args);
34
+ Logger.coreInstance?.emit('log', { level, message: args.join(' ') });
27
35
  }
28
36
  info(...args) {
29
37
  this.log('I', ...args);
@@ -36,4 +44,107 @@ class Logger {
36
44
  }
37
45
  }
38
46
  exports.Logger = Logger;
39
- //# sourceMappingURL=logger.js.map
47
+ Logger.coreInstance = null;
48
+ Logger.logs = [];
49
+ function stringifyDebug(value, seen = new WeakSet(), depth = 0, indent = 2, maxDepth = 5) {
50
+ const pad = ' '.repeat(depth * indent);
51
+ const nextPad = ' '.repeat((depth + 1) * indent);
52
+ // --- 1. 处理基本类型和 null ---
53
+ if (value === null) {
54
+ return 'null';
55
+ }
56
+ const type = typeof value;
57
+ if (type === 'string') {
58
+ // 确保 value 是字符串,并正确转义内部单引号
59
+ return `'${value.replace(/'/g, "\\'")}'`;
60
+ }
61
+ if (type === 'number' || type === 'boolean') {
62
+ return String(value);
63
+ }
64
+ if (type === 'undefined') {
65
+ return 'undefined';
66
+ }
67
+ if (type === 'symbol') {
68
+ return value.toString();
69
+ }
70
+ if (type === 'function') {
71
+ // 类型断言,确保可以访问函数的 name 属性
72
+ return `[Function: ${value.name || '(anonymous)'}]`;
73
+ }
74
+ if (type === 'bigint') {
75
+ // BigInt 的特殊表示,确保 value 是 BigInt 类型
76
+ return `${String(value)}n`;
77
+ }
78
+ // At this point, 'value' must be a non-primitive object type (object, array, Map, Set, Date, RegExp, custom class)
79
+ // --- 2. 处理简单的内置对象 (它们不会有循环引用问题) ---
80
+ if (value instanceof RegExp) {
81
+ return value.toString();
82
+ }
83
+ if (value instanceof Date) {
84
+ return value.toISOString();
85
+ }
86
+ // --- 3. 深度限制检查 ---
87
+ // 此时 value 确定是一个可以被 seen WeakSet 存储的对象
88
+ if (depth >= maxDepth) {
89
+ return '[Object]';
90
+ }
91
+ // --- 4. 循环引用检测 ---
92
+ // 将当前对象添加到 seen Set,以便在后续递归中检测循环引用
93
+ // 这里需要断言 value 是一个 object 类型,因为 WeakSet 只能存储对象
94
+ if (seen.has(value)) {
95
+ return '[Circular]';
96
+ }
97
+ seen.add(value); // 添加到已访问集合
98
+ // --- 5. 处理复杂内置对象 (Array, Map, Set) ---
99
+ if (Array.isArray(value)) {
100
+ // 在这一分支中,TypeScript 已经把 value 缩小为 unknown[] 类型
101
+ if (value.length === 0)
102
+ return '[]';
103
+ const elements = value.map(el => stringifyDebug(el, seen, depth + 1, indent, maxDepth));
104
+ return `[\n${nextPad}${elements.join(`,\n${nextPad}`)}\n${pad}]`;
105
+ }
106
+ if (value instanceof Map) {
107
+ // 在这一分支中,TypeScript 已经把 value 缩小为 Map<unknown, unknown> 类型
108
+ if (value.size === 0)
109
+ return 'Map(0) {}';
110
+ const entries = Array.from(value.entries()).map(([k, v]) => `${stringifyDebug(k, seen, depth + 1, indent, maxDepth)} => ${stringifyDebug(v, seen, depth + 1, indent, maxDepth)}`);
111
+ return `Map(${value.size}) {\n${nextPad}${entries.join(`,\n${nextPad}`)}\n${pad}}`;
112
+ }
113
+ if (value instanceof Set) {
114
+ // 在这一分支中,TypeScript 已经把 value 缩小为 Set<unknown> 类型
115
+ if (value.size === 0)
116
+ return 'Set(0) {}';
117
+ const elements = Array.from(value.values()).map(el => stringifyDebug(el, seen, depth + 1, indent, maxDepth));
118
+ return `Set(${value.size}) {\n${nextPad}${elements.join(`,\n${nextPad}`)}\n${pad}}`;
119
+ }
120
+ // --- 6. 处理普通对象和自定义类的实例 ---
121
+ // 此时,value 确定是一个对象 (除了上面已处理的 Array, Map, Set, Date, RegExp, primitive, null)
122
+ // 并且它已经添加到了 seen 集合
123
+ const keys = Object.keys(value); // 将 value 断言为 object,确保 Object.keys 可以接受
124
+ // 获取构造函数名(如果不是普通的 Object)
125
+ let constructorName = '';
126
+ // 同样,确保 value 被视为 object 以访问 constructor 属性
127
+ if (value.constructor && value.constructor.name && value.constructor.name !== 'Object') {
128
+ constructorName = `${value.constructor.name} `;
129
+ }
130
+ if (keys.length === 0) {
131
+ return `${constructorName}{}`; // 空对象/空类实例
132
+ }
133
+ const properties = keys.map(key => {
134
+ // 将 value 断言为带有索引签名的 Record,以便可以通过字符串键访问属性
135
+ const propValue = value[key];
136
+ return `${nextPad}${normalizeObjectKey(key)}: ${stringifyDebug(propValue, seen, depth + 1, indent, maxDepth)}`;
137
+ });
138
+ return `${constructorName}{\n${properties.join(',\n')}\n${pad}}`;
139
+ }
140
+ // 辅助函数:格式化对象键名,确保它在字面量中是有效的
141
+ function normalizeObjectKey(key) {
142
+ // 检查 key 是否是有效的 JavaScript 标识符,且不是保留字
143
+ // 简化的判断:如果包含非字母数字下划线,或以数字开头,则需要引用。
144
+ // 更严谨的判断需要解析器级别的检查。这里我们简单处理为如果包含特殊字符或空格就引用。
145
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) && !['null', 'undefined', 'true', 'false'].includes(key)) {
146
+ return key; // 不需要引用
147
+ }
148
+ // 引用并转义内部的单引号
149
+ return `'${key.replace(/'/g, "\\'")}'`;
150
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,8DAAiC,CAAC,iBAAiB;AAEnD,MAAa,MAAM;IAIjB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAEO,cAAc;QACpB,MAAM,eAAe,GAAG,CAAC,qBAAM,CAAC,GAAG,EAAE,qBAAM,CAAC,KAAK,EAAE,qBAAM,CAAC,MAAM,EAAE,qBAAM,CAAC,IAAI,EAAE,qBAAM,CAAC,OAAO,EAAE,qBAAM,CAAC,IAAI,EAAE,qBAAM,CAAC,KAAK,EAAE,qBAAM,CAAC,IAAI,CAAC,CAAC;QACvI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACvE,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAEO,GAAG,CAAC,KAAa,EAAE,GAAG,IAAW;QACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACvQ,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,KAAK,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,IAAW;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;CACF;AAhCD,wBAgCC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Session } from './session';
2
+ export type Middleware = (session: Session, next: () => Promise<void>) => Promise<void>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":""}
package/dist/platform.js CHANGED
@@ -192,4 +192,3 @@ class Platform {
192
192
  }
193
193
  }
194
194
  exports.Platform = Platform;
195
- //# sourceMappingURL=platform.js.map
package/dist/session.js CHANGED
@@ -103,4 +103,3 @@ class Session {
103
103
  }
104
104
  }
105
105
  exports.Session = Session;
106
- //# sourceMappingURL=session.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yumerijs/core",
3
- "version": "1.1.0-alpha.2",
3
+ "version": "1.1.0-alpha.4",
4
4
  "description": "Core module for yumeri",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,8 +31,8 @@
31
31
  "typescript": "^5.8.2"
32
32
  },
33
33
  "dependencies": {
34
- "@yumerijs/loader": "1.1.0-alpha.2",
35
34
  "@types/chalk": "^2.2.4",
35
+ "@yumerijs/loader": "1.1.0-alpha.4",
36
36
  "ansi-colors": "^4.1.3",
37
37
  "chalk": "^5.4.1",
38
38
  "chokidar": "^4.0.3",
@@ -1,19 +0,0 @@
1
- /**
2
- * @time: 2025/03/25 23:53
3
- * @author: FireGuo
4
- * WindyPear-Team All right reserved
5
- **/
6
- import { Core } from './core';
7
- import { Session } from './session';
8
- interface ActionFn {
9
- (session: any, ...args: any[]): Promise<any>;
10
- }
11
- export declare class Command {
12
- name: string;
13
- actionFn: ActionFn | null;
14
- core: Core;
15
- constructor(core: Core, name: string);
16
- action(fn: ActionFn): this;
17
- execute(session: any, ...args: any[]): Promise<Session | null>;
18
- }
19
- export {};
@@ -1,28 +0,0 @@
1
- "use strict";
2
- /**
3
- * @time: 2025/03/25 23:53
4
- * @author: FireGuo
5
- * WindyPear-Team All right reserved
6
- **/
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.Command = void 0;
9
- class Command {
10
- constructor(core, name) {
11
- this.actionFn = null; // Corrected type: ActionFn | null
12
- this.core = core; // 接收 Core 实例
13
- this.name = name;
14
- }
15
- action(fn) {
16
- this.actionFn = fn;
17
- return this;
18
- }
19
- async execute(session, ...args) {
20
- if (this.actionFn) {
21
- await this.actionFn(session, ...args);
22
- return session;
23
- }
24
- return null;
25
- }
26
- }
27
- exports.Command = Command;
28
- //# sourceMappingURL=command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/command.ts"],"names":[],"mappings":";AAAA;;;;IAII;;;AASJ,MAAa,OAAO;IAKlB,YAAY,IAAU,EAAE,IAAY;QAHpC,aAAQ,GAAoB,IAAI,CAAC,CAAC,kCAAkC;QAIlE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,aAAa;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,EAAY;QACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAY,EAAE,GAAG,IAAW;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACtC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAtBD,0BAsBC"}
@@ -1,133 +0,0 @@
1
- /**
2
- * @time: 2025/03/24 12:26
3
- * @author: FireGuo
4
- * WindyPear-Team All right reserved
5
- **/
6
- /**
7
- * 插件配置模式定义类
8
- * 用于描述插件配置项的类型、默认值、描述等信息
9
- */
10
- export declare class ConfigSchema {
11
- /**
12
- * 配置项类型
13
- */
14
- type: 'string' | 'number' | 'boolean' | 'object' | 'array';
15
- /**
16
- * 默认值
17
- */
18
- default?: any;
19
- /**
20
- * 配置项描述
21
- */
22
- description?: string;
23
- /**
24
- * 是否必需
25
- */
26
- required?: boolean;
27
- /**
28
- * 枚举值列表(可选项)
29
- */
30
- enum?: any[];
31
- /**
32
- * 数组项类型定义(当type为array时使用)
33
- */
34
- items?: ConfigSchema;
35
- /**
36
- * 对象属性定义(当type为object时使用)
37
- */
38
- properties?: Record<string, ConfigSchema>;
39
- /**
40
- * 创建配置模式对象
41
- * @param type 配置项类型
42
- * @param options 配置项选项
43
- */
44
- constructor(type: 'string' | 'number' | 'boolean' | 'object' | 'array', options?: {
45
- default?: any;
46
- description?: string;
47
- required?: boolean;
48
- enum?: any[];
49
- items?: ConfigSchema;
50
- properties?: Record<string, ConfigSchema>;
51
- });
52
- /**
53
- * 创建字符串类型配置模式
54
- * @param options 配置项选项
55
- * @returns 配置模式对象
56
- */
57
- static string(options?: Omit<ConfigSchema, 'type' | 'items' | 'properties'>): ConfigSchema;
58
- /**
59
- * 创建数字类型配置模式
60
- * @param options 配置项选项
61
- * @returns 配置模式对象
62
- */
63
- static number(options?: Omit<ConfigSchema, 'type' | 'items' | 'properties'>): ConfigSchema;
64
- /**
65
- * 创建布尔类型配置模式
66
- * @param options 配置项选项
67
- * @returns 配置模式对象
68
- */
69
- static boolean(options?: Omit<ConfigSchema, 'type' | 'items' | 'properties'>): ConfigSchema;
70
- /**
71
- * 创建对象类型配置模式
72
- * @param properties 对象属性定义
73
- * @param options 配置项选项
74
- * @returns 配置模式对象
75
- */
76
- static object(properties: Record<string, ConfigSchema>, options?: Omit<ConfigSchema, 'type' | 'items' | 'properties'>): ConfigSchema;
77
- /**
78
- * 创建数组类型配置模式
79
- * @param items 数组项类型定义
80
- * @param options 配置项选项
81
- * @returns 配置模式对象
82
- */
83
- static array(items: ConfigSchema, options?: Omit<ConfigSchema, 'type' | 'items' | 'properties'>): ConfigSchema;
84
- /**
85
- * 验证值是否符合配置模式
86
- * @param value 要验证的值
87
- * @returns 验证结果,如果通过返回true,否则返回错误信息
88
- */
89
- validate(value: any): true | string;
90
- }
91
- export declare class Config {
92
- /**
93
- * 配置名称
94
- */
95
- name: string;
96
- /**
97
- * 配置内容
98
- */
99
- content: {
100
- [name: string]: any;
101
- };
102
- /**
103
- * 配置模式
104
- */
105
- schema?: Record<string, ConfigSchema>;
106
- /**
107
- * 创建配置对象
108
- * @param name 配置名称
109
- * @param content 配置内容
110
- * @param schema 配置模式
111
- */
112
- constructor(name: string, content?: {
113
- [name: string]: any;
114
- }, schema?: Record<string, ConfigSchema>);
115
- /**
116
- * 获取配置项值
117
- * @param key 配置项键名
118
- * @param defaultValue 默认值
119
- * @returns 配置项值
120
- */
121
- get<T>(key: string, defaultValue?: T): T;
122
- /**
123
- * 设置配置项值
124
- * @param key 配置项键名
125
- * @param value 配置项值
126
- */
127
- set(key: string, value: any): void;
128
- /**
129
- * 验证配置是否符合schema
130
- * @returns 验证结果,如果通过返回true,否则返回错误信息
131
- */
132
- validate(): true | string;
133
- }
@@ -1,205 +0,0 @@
1
- "use strict";
2
- /**
3
- * @time: 2025/03/24 12:26
4
- * @author: FireGuo
5
- * WindyPear-Team All right reserved
6
- **/
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.Config = exports.ConfigSchema = void 0;
9
- /**
10
- * 插件配置模式定义类
11
- * 用于描述插件配置项的类型、默认值、描述等信息
12
- */
13
- class ConfigSchema {
14
- /**
15
- * 创建配置模式对象
16
- * @param type 配置项类型
17
- * @param options 配置项选项
18
- */
19
- constructor(type, options) {
20
- this.type = type;
21
- if (options) {
22
- this.default = options.default;
23
- this.description = options.description;
24
- this.required = options.required;
25
- this.enum = options.enum;
26
- this.items = options.items;
27
- this.properties = options.properties;
28
- }
29
- }
30
- /**
31
- * 创建字符串类型配置模式
32
- * @param options 配置项选项
33
- * @returns 配置模式对象
34
- */
35
- static string(options) {
36
- return new ConfigSchema('string', options);
37
- }
38
- /**
39
- * 创建数字类型配置模式
40
- * @param options 配置项选项
41
- * @returns 配置模式对象
42
- */
43
- static number(options) {
44
- return new ConfigSchema('number', options);
45
- }
46
- /**
47
- * 创建布尔类型配置模式
48
- * @param options 配置项选项
49
- * @returns 配置模式对象
50
- */
51
- static boolean(options) {
52
- return new ConfigSchema('boolean', options);
53
- }
54
- /**
55
- * 创建对象类型配置模式
56
- * @param properties 对象属性定义
57
- * @param options 配置项选项
58
- * @returns 配置模式对象
59
- */
60
- static object(properties, options) {
61
- return new ConfigSchema('object', { ...options, properties });
62
- }
63
- /**
64
- * 创建数组类型配置模式
65
- * @param items 数组项类型定义
66
- * @param options 配置项选项
67
- * @returns 配置模式对象
68
- */
69
- static array(items, options) {
70
- return new ConfigSchema('array', { ...options, items });
71
- }
72
- /**
73
- * 验证值是否符合配置模式
74
- * @param value 要验证的值
75
- * @returns 验证结果,如果通过返回true,否则返回错误信息
76
- */
77
- validate(value) {
78
- // 检查必需项
79
- if (this.required && value === undefined) {
80
- return `Missing required value`;
81
- }
82
- // 如果值存在,检查类型
83
- if (value !== undefined) {
84
- // 类型检查
85
- switch (this.type) {
86
- case 'string':
87
- if (typeof value !== 'string') {
88
- return `Value should be string`;
89
- }
90
- break;
91
- case 'number':
92
- if (typeof value !== 'number') {
93
- return `Value should be number`;
94
- }
95
- break;
96
- case 'boolean':
97
- if (typeof value !== 'boolean') {
98
- return `Value should be boolean`;
99
- }
100
- break;
101
- case 'object':
102
- if (typeof value !== 'object' || value === null || Array.isArray(value)) {
103
- return `Value should be object`;
104
- }
105
- // 如果有属性定义,检查每个属性
106
- if (this.properties) {
107
- for (const key in this.properties) {
108
- const propSchema = this.properties[key];
109
- const propValue = value[key];
110
- const propResult = propSchema.validate(propValue);
111
- if (propResult !== true) {
112
- return `Property ${key}: ${propResult}`;
113
- }
114
- }
115
- }
116
- break;
117
- case 'array':
118
- if (!Array.isArray(value)) {
119
- return `Value should be array`;
120
- }
121
- // 如果有数组项定义,检查每个项
122
- if (this.items) {
123
- for (let i = 0; i < value.length; i++) {
124
- const itemResult = this.items.validate(value[i]);
125
- if (itemResult !== true) {
126
- return `Item at index ${i}: ${itemResult}`;
127
- }
128
- }
129
- }
130
- break;
131
- }
132
- // 枚举值检查
133
- if (this.enum && !this.enum.includes(value)) {
134
- return `Value should be one of: ${this.enum.join(', ')}`;
135
- }
136
- }
137
- return true;
138
- }
139
- }
140
- exports.ConfigSchema = ConfigSchema;
141
- class Config {
142
- /**
143
- * 创建配置对象
144
- * @param name 配置名称
145
- * @param content 配置内容
146
- * @param schema 配置模式
147
- */
148
- constructor(name, content, schema) {
149
- /**
150
- * 配置名称
151
- */
152
- this.name = '';
153
- /**
154
- * 配置内容
155
- */
156
- this.content = {};
157
- this.name = name;
158
- this.content = content || {}; // 如果 content 是 undefined,则赋值为空对象
159
- this.schema = schema;
160
- }
161
- /**
162
- * 获取配置项值
163
- * @param key 配置项键名
164
- * @param defaultValue 默认值
165
- * @returns 配置项值
166
- */
167
- get(key, defaultValue) {
168
- if (this.content[key] !== undefined) {
169
- return this.content[key];
170
- }
171
- // 如果有schema,尝试从schema中获取默认值
172
- if (this.schema && this.schema[key] && this.schema[key].default !== undefined) {
173
- return this.schema[key].default;
174
- }
175
- return defaultValue;
176
- }
177
- /**
178
- * 设置配置项值
179
- * @param key 配置项键名
180
- * @param value 配置项值
181
- */
182
- set(key, value) {
183
- this.content[key] = value;
184
- }
185
- /**
186
- * 验证配置是否符合schema
187
- * @returns 验证结果,如果通过返回true,否则返回错误信息
188
- */
189
- validate() {
190
- if (!this.schema) {
191
- return true; // 没有schema,视为验证通过
192
- }
193
- for (const key in this.schema) {
194
- const schemaItem = this.schema[key];
195
- const value = this.content[key];
196
- const result = schemaItem.validate(value);
197
- if (result !== true) {
198
- return `Config ${key}: ${result}`;
199
- }
200
- }
201
- return true;
202
- }
203
- }
204
- exports.Config = Config;
205
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}