@zhin.js/core 1.0.0 → 1.0.2

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 (133) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +295 -74
  4. package/lib/adapter.d.ts +39 -0
  5. package/lib/adapter.d.ts.map +1 -0
  6. package/{dist → lib}/adapter.js +20 -2
  7. package/lib/adapter.js.map +1 -0
  8. package/lib/app.d.ts +115 -0
  9. package/lib/app.d.ts.map +1 -0
  10. package/{dist → lib}/app.js +148 -78
  11. package/lib/app.js.map +1 -0
  12. package/lib/bot.d.ts +31 -0
  13. package/lib/bot.d.ts.map +1 -0
  14. package/lib/command.d.ts +32 -0
  15. package/lib/command.d.ts.map +1 -0
  16. package/lib/command.js +46 -0
  17. package/lib/command.js.map +1 -0
  18. package/lib/component.d.ts +27 -0
  19. package/lib/component.d.ts.map +1 -0
  20. package/lib/component.js +469 -0
  21. package/lib/component.js.map +1 -0
  22. package/{dist → lib}/config.d.ts.map +1 -1
  23. package/{dist → lib}/config.js +6 -9
  24. package/lib/config.js.map +1 -0
  25. package/lib/cron.d.ts +81 -0
  26. package/lib/cron.d.ts.map +1 -0
  27. package/lib/cron.js +159 -0
  28. package/lib/cron.js.map +1 -0
  29. package/lib/errors.d.ts +165 -0
  30. package/lib/errors.d.ts.map +1 -0
  31. package/lib/errors.js +306 -0
  32. package/lib/errors.js.map +1 -0
  33. package/lib/index.d.ts +15 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +17 -0
  36. package/lib/index.js.map +1 -0
  37. package/lib/jsx-runtime.d.ts +12 -0
  38. package/lib/jsx-runtime.d.ts.map +1 -0
  39. package/lib/jsx-runtime.js +11 -0
  40. package/lib/jsx-runtime.js.map +1 -0
  41. package/lib/jsx.d.ts +32 -0
  42. package/lib/jsx.d.ts.map +1 -0
  43. package/lib/jsx.js +57 -0
  44. package/lib/jsx.js.map +1 -0
  45. package/lib/message.d.ts +47 -0
  46. package/lib/message.d.ts.map +1 -0
  47. package/lib/message.js +11 -0
  48. package/lib/message.js.map +1 -0
  49. package/lib/plugin.d.ts +50 -0
  50. package/lib/plugin.d.ts.map +1 -0
  51. package/lib/plugin.js +170 -0
  52. package/lib/plugin.js.map +1 -0
  53. package/lib/prompt.d.ts +116 -0
  54. package/lib/prompt.d.ts.map +1 -0
  55. package/lib/prompt.js +240 -0
  56. package/lib/prompt.js.map +1 -0
  57. package/lib/schema.d.ts +83 -0
  58. package/lib/schema.d.ts.map +1 -0
  59. package/lib/schema.js +245 -0
  60. package/lib/schema.js.map +1 -0
  61. package/{dist → lib}/types-generator.d.ts.map +1 -1
  62. package/{dist → lib}/types-generator.js +6 -3
  63. package/lib/types-generator.js.map +1 -0
  64. package/lib/types.d.ts +121 -0
  65. package/lib/types.d.ts.map +1 -0
  66. package/lib/utils.d.ts +52 -0
  67. package/lib/utils.d.ts.map +1 -0
  68. package/lib/utils.js +340 -0
  69. package/lib/utils.js.map +1 -0
  70. package/package.json +23 -9
  71. package/src/adapter.ts +25 -9
  72. package/src/app.ts +363 -258
  73. package/src/bot.ts +29 -8
  74. package/src/command.ts +50 -0
  75. package/src/component.ts +561 -0
  76. package/src/config.ts +9 -12
  77. package/src/cron.ts +176 -0
  78. package/src/errors.ts +365 -0
  79. package/src/index.ts +16 -13
  80. package/src/jsx-runtime.ts +12 -0
  81. package/src/jsx.d.ts +52 -0
  82. package/src/jsx.ts +92 -0
  83. package/src/message.ts +47 -0
  84. package/src/plugin.ts +148 -66
  85. package/src/prompt.ts +290 -0
  86. package/src/schema.ts +273 -0
  87. package/src/types-generator.ts +7 -3
  88. package/src/types.ts +80 -31
  89. package/src/utils.ts +313 -0
  90. package/tests/adapter.test.ts +36 -22
  91. package/tests/app.test.ts +30 -0
  92. package/tests/command.test.ts +545 -0
  93. package/tests/component-new.test.ts +348 -0
  94. package/tests/config.test.ts +1 -1
  95. package/tests/errors.test.ts +311 -0
  96. package/tests/expression-evaluation.test.ts +258 -0
  97. package/tests/message.test.ts +402 -0
  98. package/tests/plugin.test.ts +284 -143
  99. package/tests/utils.test.ts +80 -0
  100. package/tsconfig.json +3 -4
  101. package/dist/adapter.d.ts +0 -22
  102. package/dist/adapter.d.ts.map +0 -1
  103. package/dist/adapter.js.map +0 -1
  104. package/dist/app.d.ts +0 -69
  105. package/dist/app.d.ts.map +0 -1
  106. package/dist/app.js.map +0 -1
  107. package/dist/bot.d.ts +0 -9
  108. package/dist/bot.d.ts.map +0 -1
  109. package/dist/config.js.map +0 -1
  110. package/dist/index.d.ts +0 -9
  111. package/dist/index.d.ts.map +0 -1
  112. package/dist/index.js +0 -12
  113. package/dist/index.js.map +0 -1
  114. package/dist/logger.d.ts +0 -3
  115. package/dist/logger.d.ts.map +0 -1
  116. package/dist/logger.js +0 -3
  117. package/dist/logger.js.map +0 -1
  118. package/dist/plugin.d.ts +0 -41
  119. package/dist/plugin.d.ts.map +0 -1
  120. package/dist/plugin.js +0 -95
  121. package/dist/plugin.js.map +0 -1
  122. package/dist/types-generator.js.map +0 -1
  123. package/dist/types.d.ts +0 -69
  124. package/dist/types.d.ts.map +0 -1
  125. package/src/logger.ts +0 -3
  126. package/tests/logger.test.ts +0 -170
  127. package/tsconfig.tsbuildinfo +0 -1
  128. /package/{dist → lib}/bot.js +0 -0
  129. /package/{dist → lib}/bot.js.map +0 -0
  130. /package/{dist → lib}/config.d.ts +0 -0
  131. /package/{dist → lib}/types-generator.d.ts +0 -0
  132. /package/{dist → lib}/types.js +0 -0
  133. /package/{dist → lib}/types.js.map +0 -0
package/lib/prompt.js ADDED
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Prompt类:用于实现机器人与用户的交互式提问与输入收集。
3
+ * 支持文本、数字、确认、列表、选项、Schema等多种输入类型,自动处理超时、默认值、格式化等。
4
+ * 典型用法:await new Prompt(plugin, event).text('请输入内容')
5
+ * @template P 适配器类型
6
+ */
7
+ export class Prompt {
8
+ plugin;
9
+ event;
10
+ /**
11
+ * 构造函数
12
+ * @param plugin 所属插件实例
13
+ * @param event 当前消息事件
14
+ */
15
+ constructor(plugin, event) {
16
+ this.plugin = plugin;
17
+ this.event = event;
18
+ }
19
+ /**
20
+ * 获取当前会话唯一标识(适配器-机器人-频道-用户)
21
+ */
22
+ getChannelAddress(event) {
23
+ return `${event.$adapter}-${event.$bot}-${event.$channel.type}:${event.$channel.id}-${event.$sender.id}`;
24
+ }
25
+ /**
26
+ * 通用提问方法,支持自定义格式化、超时、默认值等
27
+ * @param config 提问配置
28
+ */
29
+ prompt(config) {
30
+ return new Promise((resolve, reject) => {
31
+ this.event.$reply(config.tips);
32
+ this.middleware(input => {
33
+ if (input instanceof Error) {
34
+ this.event.$reply(input.message);
35
+ if (config.defaultValue)
36
+ resolve(config.defaultValue);
37
+ else
38
+ reject(input);
39
+ return;
40
+ }
41
+ resolve(config.format(input));
42
+ }, config.timeout, config.timeoutText);
43
+ });
44
+ }
45
+ /**
46
+ * 注册一次性消息中间件,等待用户输入或超时
47
+ * @param callback 输入回调
48
+ * @param timeout 超时时间(默认3分钟)
49
+ * @param timeoutText 超时提示
50
+ */
51
+ middleware(callback, timeout = 3 * 60 * 1000, timeoutText = '输入超时') {
52
+ const middleware = (event, next) => {
53
+ if (this.getChannelAddress(event) !== this.getChannelAddress(this.event))
54
+ return next();
55
+ callback(event.$raw);
56
+ dispose();
57
+ clearTimeout(timer);
58
+ };
59
+ const dispose = this.plugin.addMiddleware(middleware);
60
+ const timer = setTimeout(() => {
61
+ dispose();
62
+ callback(new Error(timeoutText));
63
+ }, timeout);
64
+ }
65
+ /**
66
+ * 文本输入
67
+ */
68
+ async text(tips, timeout, defaultValue = '', timeoutText) {
69
+ return this.prompt({
70
+ tips,
71
+ defaultValue,
72
+ timeoutText,
73
+ timeout,
74
+ format: (input) => input,
75
+ });
76
+ }
77
+ /**
78
+ * 任意输入
79
+ */
80
+ async any(tips, timeout, defaultValue = '', timeoutText) {
81
+ return this.prompt({
82
+ tips,
83
+ defaultValue,
84
+ timeoutText,
85
+ timeout,
86
+ format: (input) => input,
87
+ });
88
+ }
89
+ /**
90
+ * 数字输入
91
+ */
92
+ async number(tips, timeout, defaultValue = 0, timeoutText) {
93
+ return this.prompt({
94
+ tips,
95
+ defaultValue,
96
+ timeoutText,
97
+ timeout,
98
+ format: (input) => +input,
99
+ });
100
+ }
101
+ /**
102
+ * 确认输入(如 yes/no)
103
+ */
104
+ async confirm(tips, condition = 'yes', timeout, defaultValue = false, timeoutText) {
105
+ return this.prompt({
106
+ tips: `${tips}\n输入“${condition}”以确认`,
107
+ defaultValue,
108
+ timeout,
109
+ timeoutText,
110
+ format: (input) => input === condition,
111
+ });
112
+ }
113
+ /**
114
+ * 列表输入,支持多值分隔
115
+ */
116
+ async list(tips, config = { type: 'text' }, timeoutText) {
117
+ const separator = config.separator || ',';
118
+ return this.prompt({
119
+ tips: `${tips}\n值之间使用“${separator}”分隔`,
120
+ defaultValue: config.defaultValue || [],
121
+ timeout: config.timeout,
122
+ timeoutText,
123
+ format: (input) => input.split(separator).map(v => {
124
+ switch (config.type) {
125
+ case 'boolean':
126
+ return Boolean(v);
127
+ case 'number':
128
+ return +v;
129
+ case 'text':
130
+ return v;
131
+ }
132
+ }),
133
+ });
134
+ }
135
+ /**
136
+ * 返回常量值(用于Schema)
137
+ */
138
+ async const(value) {
139
+ return value;
140
+ }
141
+ /**
142
+ * 选项选择,支持单选/多选
143
+ */
144
+ async pick(tips, config, timeoutText) {
145
+ const moreTextArr = config.options.map((o, idx) => {
146
+ return `${idx + 1}.${o.label}`;
147
+ });
148
+ const separator = config.separator || ',';
149
+ if (config.multiple)
150
+ moreTextArr.push(`多选请用“${separator}”分隔`);
151
+ return this.prompt({
152
+ tips: `${tips}\n${moreTextArr.join('\n')}`,
153
+ defaultValue: config.defaultValue,
154
+ timeout: config.timeout,
155
+ timeoutText,
156
+ format: (input) => {
157
+ if (!config.multiple)
158
+ return config.options.find((o, idx) => {
159
+ return idx + 1 === +input;
160
+ })?.value;
161
+ const pickIdx = input.split(separator).map(Number);
162
+ return config.options
163
+ .filter((o, idx) => {
164
+ return pickIdx.includes(idx + 1);
165
+ })
166
+ .map(o => o.value);
167
+ },
168
+ });
169
+ }
170
+ /**
171
+ * 基于Schema的选项选择
172
+ */
173
+ async pickValueWithSchema(schema) {
174
+ return this.pick(schema.meta.description, {
175
+ type: '',
176
+ options: schema.meta.options.map(o => ({
177
+ label: o.label,
178
+ value: o.value,
179
+ })),
180
+ multiple: schema.meta.multiple,
181
+ defaultValue: schema.meta.default,
182
+ });
183
+ }
184
+ /**
185
+ * 批量Schema输入
186
+ */
187
+ async getValueWithSchemas(schemas) {
188
+ const result = {};
189
+ for (const key of Object.keys(schemas)) {
190
+ const schema = schemas[key];
191
+ result[key] = await this.getValueWithSchema(schema);
192
+ }
193
+ return result;
194
+ }
195
+ /**
196
+ * 单个Schema输入,自动分发到不同类型
197
+ */
198
+ async getValueWithSchema(schema) {
199
+ if (schema.meta.options)
200
+ return this.pickValueWithSchema(schema);
201
+ switch (schema.meta.type) {
202
+ case 'number':
203
+ return (await this.number(schema.meta.description));
204
+ case 'string':
205
+ return (await this.text(schema.meta.description));
206
+ case 'boolean':
207
+ return (await this.confirm(schema.meta.description));
208
+ case 'object':
209
+ if (schema.meta.description)
210
+ await this.event.$reply(schema.meta.description);
211
+ return (await this.getValueWithSchemas(schema.options.object));
212
+ case 'date':
213
+ return await this.prompt({
214
+ tips: schema.meta.description,
215
+ defaultValue: schema.meta.default || new Date(),
216
+ format: (input) => new Date(input),
217
+ });
218
+ case 'regexp':
219
+ return await this.prompt({
220
+ tips: schema.meta.description,
221
+ defaultValue: schema.meta.default || '',
222
+ format: (input) => new RegExp(input),
223
+ });
224
+ case 'const':
225
+ return await this.const(schema.meta.default);
226
+ case 'list':
227
+ const inner = schema.options.inner;
228
+ if (!['string', 'boolean', 'number'].includes(inner.meta.type))
229
+ throw new Error(`unsupported inner type :${inner.meta.type}`);
230
+ return (await this.list(schema.meta.description, {
231
+ type: inner.meta.type === 'string' ? 'text' : inner.meta.type,
232
+ defaultValue: schema.meta.default,
233
+ }));
234
+ case 'dict':
235
+ default:
236
+ throw new Error(`Unsupported schema input type: ${schema.meta.type}`);
237
+ }
238
+ }
239
+ }
240
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ export declare class Schema<S = any, T = S> {
2
+ meta: Schema.Meta<S, T>;
3
+ options: Schema.Options;
4
+ [Symbol.toStringTag]: string;
5
+ constructor(meta: Schema.Meta<S, T>, options?: Schema.Options);
6
+ static fromJSON<S, T>(json: Schema.JSON<S, T>): Schema<S, T>;
7
+ toJSON(): Record<string, any>;
8
+ [Symbol.unscopables](): {
9
+ options: boolean;
10
+ meta: boolean;
11
+ };
12
+ /** 设置是否必填 */
13
+ required(): this;
14
+ /** 是否隐藏 */
15
+ hidden(): this;
16
+ /** 设置描述 */
17
+ description(description: string): this;
18
+ /** 设置默认值 */
19
+ default(defaultValue: T): this;
20
+ /** 设置选项列表 */
21
+ option(list: (T | Schema.Option<T>)[]): this;
22
+ /** 设置是否允许多选 */
23
+ multiple(): this;
24
+ /** 声明一个数字类型 */
25
+ static number(description: string): Schema<number>;
26
+ /** 声明一个字符串类型 */
27
+ static string(description: string): Schema<string>;
28
+ /** 声明一个布尔类型 */
29
+ static boolean(description: string): Schema<boolean>;
30
+ /** 声明一个正则类型 */
31
+ static regexp(description: string): Schema<string | RegExp, RegExp>;
32
+ /** 声明一个日期类型 */
33
+ static date(description: string): Schema<number | Date, Date>;
34
+ /** 声明一个字典类型 */
35
+ static dict<X extends Schema>(input: X, description: string): Schema<Record<string, Schema.Types<X>>, Record<string, Schema.Types<X>>>;
36
+ static object<X extends Record<string, Schema>>(input: X, description?: string): Schema<Schema.RecordTypes<X>, Schema.RecordTypes<X>>;
37
+ /** 声明一个列表类型 */
38
+ static list<X extends Schema>(inner: X, description: string): Schema<Schema.Types<X>[], Schema.Types<X>[]>;
39
+ /** 声明一个常量 */
40
+ static const<X extends string | number | boolean>(value: X, description: string): Schema<X, X>;
41
+ static resolve<T extends string>(type: T): Schema.Formatter;
42
+ static extend<T extends string>(type: T, formatter: Schema.Formatter): void;
43
+ }
44
+ export interface Schema<S = any> {
45
+ (value?: S): S;
46
+ }
47
+ export declare namespace Schema {
48
+ const formatters: Map<string, Formatter>;
49
+ type Formatter<S = any, T = S> = (this: Schema, value: S) => T;
50
+ type JSON<S = any, T = S> = Meta<S, T> & {
51
+ object?: Record<string, JSON>;
52
+ inner?: JSON;
53
+ list?: JSON[];
54
+ };
55
+ interface Meta<S = any, T = S> {
56
+ hidden?: boolean;
57
+ type: string;
58
+ default?: T;
59
+ required?: boolean;
60
+ options?: Option<T>[];
61
+ multiple?: boolean;
62
+ description: string;
63
+ component?: string;
64
+ min?: number;
65
+ max?: number;
66
+ step?: number;
67
+ }
68
+ interface Options {
69
+ object?: Record<string, Schema>;
70
+ inner?: Schema;
71
+ }
72
+ type Types<T> = T extends Schema<infer S> ? S : never;
73
+ type RecordTypes<T> = T extends Record<string, Schema> ? {
74
+ [K in keyof T]?: Types<T[K]>;
75
+ } : unknown;
76
+ function checkDefault<T>(schema: Schema, value: T, fallback?: T): T;
77
+ type Option<T = any> = {
78
+ label: string;
79
+ value: T;
80
+ };
81
+ function formatOptionList<T extends (any | Schema.Option)[]>(list: T): Schema.Option[];
82
+ }
83
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/lib/schema.js ADDED
@@ -0,0 +1,245 @@
1
+ import { isEmpty } from './utils.js';
2
+ export class Schema {
3
+ meta;
4
+ options;
5
+ [Symbol.toStringTag] = 'Schema';
6
+ constructor(meta, options = {}) {
7
+ this.meta = meta;
8
+ this.options = options;
9
+ const _this = this;
10
+ const schema = function (value) {
11
+ const formatter = Schema.resolve(_this.meta.type);
12
+ if (!formatter)
13
+ throw new Error(`type ${_this.meta.type} not found`);
14
+ return formatter.call(_this, value);
15
+ };
16
+ return new Proxy(schema, {
17
+ get(target, p, receiver) {
18
+ return Reflect.get(_this, p, receiver);
19
+ },
20
+ set(target, p, value, receiver) {
21
+ return Reflect.set(_this, p, value, receiver);
22
+ },
23
+ });
24
+ }
25
+ static fromJSON(json) {
26
+ const { object, inner, list, ...meta } = json;
27
+ const options = {};
28
+ if (object)
29
+ options.object = Object.fromEntries(Object.entries(object).map(([key, value]) => [key, Schema.fromJSON(value)]));
30
+ if (inner)
31
+ options.inner = Schema.fromJSON(inner);
32
+ return new Schema(meta, options);
33
+ }
34
+ toJSON() {
35
+ return Object.fromEntries(Object.entries({
36
+ ...this.meta,
37
+ default: typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default,
38
+ inner: this.options.inner?.toJSON(),
39
+ dict: this.options.object
40
+ ? Object.fromEntries(Object.entries(this.options.object || {}).map(([key, value]) => [key, value.toJSON()]))
41
+ : undefined,
42
+ }).filter(([key, value]) => typeof value !== 'undefined'));
43
+ }
44
+ [Symbol.unscopables]() {
45
+ return {
46
+ options: true,
47
+ meta: true,
48
+ };
49
+ }
50
+ /** 设置是否必填 */
51
+ required() {
52
+ this.meta.required = true;
53
+ return this;
54
+ }
55
+ /** 是否隐藏 */
56
+ hidden() {
57
+ this.meta.hidden = true;
58
+ return this;
59
+ }
60
+ /** 设置描述 */
61
+ description(description) {
62
+ this.meta.description = description;
63
+ return this;
64
+ }
65
+ /** 设置默认值 */
66
+ default(defaultValue) {
67
+ this.meta.default = defaultValue;
68
+ return this;
69
+ }
70
+ /** 设置选项列表 */
71
+ option(list) {
72
+ this.meta.options = Schema.formatOptionList(list);
73
+ return this;
74
+ }
75
+ /** 设置是否允许多选 */
76
+ multiple() {
77
+ if (this.meta.type !== 'list')
78
+ throw new Error('multiple only support list type');
79
+ this.meta.multiple = true;
80
+ return this;
81
+ }
82
+ /** 声明一个数字类型 */
83
+ static number(description) {
84
+ return new Schema({ type: 'number', description });
85
+ }
86
+ /** 声明一个字符串类型 */
87
+ static string(description) {
88
+ return new Schema({ type: 'string', description });
89
+ }
90
+ /** 声明一个布尔类型 */
91
+ static boolean(description) {
92
+ return new Schema({ type: 'boolean', description });
93
+ }
94
+ /** 声明一个正则类型 */
95
+ static regexp(description) {
96
+ return new Schema({ type: 'regexp', description });
97
+ }
98
+ /** 声明一个日期类型 */
99
+ static date(description) {
100
+ return new Schema({ type: 'date', description });
101
+ }
102
+ /** 声明一个字典类型 */
103
+ static dict(input, description) {
104
+ return new Schema({ type: 'dict', description }, { inner: input });
105
+ }
106
+ static object(input, description = '') {
107
+ return new Schema({ type: 'object', description }, { object: input });
108
+ }
109
+ /** 声明一个列表类型 */
110
+ static list(inner, description) {
111
+ return new Schema({ type: 'list', description }, { inner });
112
+ }
113
+ /** 声明一个常量 */
114
+ static const(value, description) {
115
+ return new Schema({ type: 'const', default: value, description });
116
+ }
117
+ static resolve(type) {
118
+ return Schema.formatters.get(type);
119
+ }
120
+ static extend(type, formatter) {
121
+ Schema.formatters.set(type, formatter);
122
+ }
123
+ }
124
+ (function (Schema) {
125
+ Schema.formatters = new Map();
126
+ function checkDefault(schema, value, fallback = value) {
127
+ if (isEmpty(value)) {
128
+ value = schema.meta.default || fallback;
129
+ }
130
+ const validateType = (schema, value) => {
131
+ switch (schema.meta.type) {
132
+ case 'string':
133
+ if (!['string', 'undefined'].includes(typeof value))
134
+ throw new TypeError(`value is not a string`);
135
+ break;
136
+ case 'number':
137
+ if (!['number', 'undefined'].includes(typeof value))
138
+ throw new TypeError(`value is not a number`);
139
+ break;
140
+ case 'boolean':
141
+ if (!['boolean', 'undefined'].includes(typeof value))
142
+ throw new TypeError(`value is not a boolean`);
143
+ break;
144
+ case 'regexp':
145
+ if (!['string', 'undefined'].includes(typeof value) && !(value instanceof RegExp))
146
+ throw new TypeError(`value is not a RegExp|string`);
147
+ break;
148
+ case 'date':
149
+ if (!['number', 'undefined'].includes(typeof value) && !(value instanceof Date))
150
+ throw new TypeError(`value is not a Date|number`);
151
+ if (value instanceof Date && isNaN(value.getTime()))
152
+ throw new TypeError(`value is not a valid Date`);
153
+ break;
154
+ case 'dict':
155
+ if (!['object', 'undefined', 'null'].includes(typeof value))
156
+ throw new TypeError(`value is not a object`);
157
+ break;
158
+ case 'object':
159
+ if (!['object', 'undefined', 'null'].includes(typeof value))
160
+ throw new TypeError(`value is not a object`);
161
+ break;
162
+ case 'list':
163
+ if (typeof value !== 'undefined' && !Array.isArray(value))
164
+ throw new TypeError(`value is not a list`);
165
+ break;
166
+ case 'const':
167
+ if (typeof value !== 'undefined' && value !== schema.meta.default)
168
+ throw new TypeError(`value is not const`);
169
+ break;
170
+ default:
171
+ throw new TypeError(`value is not a valid type`);
172
+ }
173
+ };
174
+ if (schema.meta.required && typeof value === 'undefined')
175
+ throw new Error(`value is required`);
176
+ validateType(schema, value);
177
+ return value;
178
+ }
179
+ Schema.checkDefault = checkDefault;
180
+ function formatOptionList(list) {
181
+ return list.map(item => {
182
+ if (typeof item === 'string') {
183
+ return {
184
+ label: `${item}`,
185
+ value: item,
186
+ };
187
+ }
188
+ return item;
189
+ });
190
+ }
191
+ Schema.formatOptionList = formatOptionList;
192
+ })(Schema || (Schema = {}));
193
+ Schema.extend('number', function (value) {
194
+ value = Schema.checkDefault(this, value);
195
+ return value;
196
+ });
197
+ Schema.extend('string', function (value) {
198
+ value = Schema.checkDefault(this, value);
199
+ return value;
200
+ });
201
+ Schema.extend('boolean', function (value) {
202
+ return Schema.checkDefault(this, value);
203
+ });
204
+ Schema.extend('dict', function (value) {
205
+ value = Schema.checkDefault(this, value, {});
206
+ return Object.fromEntries(Object.entries(value).map(([key, schema]) => {
207
+ return [key, this.options.inner(schema)];
208
+ }));
209
+ });
210
+ Schema.extend('object', function (value) {
211
+ const getDefault = (schema) => {
212
+ const result = Object.create(null);
213
+ for (const key in schema.options.object) {
214
+ result[key] = getDefault(schema.options.object[key]);
215
+ }
216
+ return result;
217
+ };
218
+ value = Schema.checkDefault(this, value, getDefault(this));
219
+ return Object.fromEntries(Object.entries(value).map(([key, schema]) => {
220
+ return [key, this.options.object[key](schema)];
221
+ }));
222
+ });
223
+ Schema.extend('list', function (value) {
224
+ value = Schema.checkDefault(this, value, []);
225
+ return value.map((item) => this.options.inner(item));
226
+ });
227
+ Schema.extend('regexp', function (value) {
228
+ value = Schema.checkDefault(this, value);
229
+ if (typeof value === 'string') {
230
+ return new RegExp(value);
231
+ }
232
+ return value;
233
+ });
234
+ Schema.extend('date', function (value) {
235
+ value = Schema.checkDefault(this, value);
236
+ return new Date(value);
237
+ });
238
+ Schema.extend('const', function (value) {
239
+ value = Schema.checkDefault(this, value);
240
+ if (value !== this.meta.default) {
241
+ throw new Error('const value not match');
242
+ }
243
+ return value;
244
+ });
245
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types-generator.d.ts","sourceRoot":"","sources":["../src/types-generator.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEjE"}
1
+ {"version":3,"file":"types-generator.d.ts","sourceRoot":"","sources":["../src/types-generator.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEjE"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
- import { logger } from './logger.js';
3
+ import { getLogger } from '@zhin.js/logger';
4
+ const logger = getLogger('TypesGenerator');
4
5
  /**
5
6
  * 更新 tsconfig.json 的类型声明
6
7
  * @param cwd 项目根目录
@@ -45,7 +46,7 @@ export async function generateEnvTypes(cwd) {
45
46
  tsconfig = JSON.parse(fs.readFileSync(tsconfigPath, 'utf-8'));
46
47
  }
47
48
  catch (err) {
48
- console.error(err);
49
+ // console.error 已替换为注释
49
50
  logger.warn('⚠️ Failed to parse tsconfig.json, creating new one');
50
51
  }
51
52
  }
@@ -63,7 +64,9 @@ export async function generateEnvTypes(cwd) {
63
64
  logger.info('✅ Updated TypeScript types configuration');
64
65
  }
65
66
  catch (error) {
66
- logger.warn('⚠️ Failed to update TypeScript types:', error);
67
+ logger.warn('⚠️ Failed to update TypeScript types', {
68
+ error: error instanceof Error ? error.message : String(error)
69
+ });
67
70
  }
68
71
  }
69
72
  //# sourceMappingURL=types-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-generator.js","sourceRoot":"","sources":["../src/types-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAC9C,IAAI,CAAC;QACD,SAAS;QACT,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE1C,uBAAuB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG;gBACZ,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;aACjC,CAAC;YAEF,sBAAsB;YACtB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrD,IAAI,CAAC;wBACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;wBACxE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;4BAChE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gCACjC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACpB,CAAC;wBACL,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,eAAe;wBACf,SAAS;oBACb,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACrD,IAAI,QAAQ,GAAsB,EAAE,CAAC;QAErC,sBAAsB;QACtB,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,uBAAuB;gBACvB,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC5B,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;QAClC,CAAC;QAED,cAAc;QACd,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QAEvD,cAAc;QACd,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,OAAO;QACP,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE;YAChD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAChE,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}