@jsbot-tellus/core 2.4.0 → 2.5.1

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 (183) hide show
  1. package/README.md +8 -5
  2. package/dist/app/cli.d.ts +10 -0
  3. package/dist/app/cli.d.ts.map +1 -0
  4. package/dist/app/cli.js +37 -0
  5. package/dist/app/cli.js.map +1 -0
  6. package/dist/app/runtime.d.ts +121 -0
  7. package/dist/app/runtime.d.ts.map +1 -0
  8. package/dist/app/runtime.js +296 -0
  9. package/dist/app/runtime.js.map +1 -0
  10. package/dist/app.js +63 -273
  11. package/dist/app.js.map +1 -1
  12. package/dist/core/dispatch/command.d.ts.map +1 -1
  13. package/dist/core/dispatch/command.js +5 -1
  14. package/dist/core/dispatch/command.js.map +1 -1
  15. package/dist/core/dispatch/router.d.ts.map +1 -1
  16. package/dist/core/dispatch/router.js +1 -1
  17. package/dist/core/dispatch/router.js.map +1 -1
  18. package/dist/core/plugin/command-params.d.ts +3 -36
  19. package/dist/core/plugin/command-params.d.ts.map +1 -1
  20. package/dist/core/plugin/command-params.js +2 -461
  21. package/dist/core/plugin/command-params.js.map +1 -1
  22. package/dist/core/plugin/install/paths.d.ts +7 -0
  23. package/dist/core/plugin/install/paths.d.ts.map +1 -0
  24. package/dist/core/plugin/install/paths.js +49 -0
  25. package/dist/core/plugin/install/paths.js.map +1 -0
  26. package/dist/core/plugin/install/state.d.ts +23 -0
  27. package/dist/core/plugin/install/state.d.ts.map +1 -0
  28. package/dist/core/plugin/install/state.js +129 -0
  29. package/dist/core/plugin/install/state.js.map +1 -0
  30. package/dist/core/plugin/install/validate-script.d.ts +3 -0
  31. package/dist/core/plugin/install/validate-script.d.ts.map +1 -0
  32. package/dist/core/plugin/install/validate-script.js +154 -0
  33. package/dist/core/plugin/install/validate-script.js.map +1 -0
  34. package/dist/core/plugin/install-dir.d.ts +3 -28
  35. package/dist/core/plugin/install-dir.d.ts.map +1 -1
  36. package/dist/core/plugin/install-dir.js +3 -326
  37. package/dist/core/plugin/install-dir.js.map +1 -1
  38. package/dist/core/plugin/installer/checks.d.ts +6 -0
  39. package/dist/core/plugin/installer/checks.d.ts.map +1 -0
  40. package/dist/core/plugin/installer/checks.js +99 -0
  41. package/dist/core/plugin/installer/checks.js.map +1 -0
  42. package/dist/core/plugin/installer/support.d.ts +37 -0
  43. package/dist/core/plugin/installer/support.d.ts.map +1 -0
  44. package/dist/core/plugin/installer/support.js +67 -0
  45. package/dist/core/plugin/installer/support.js.map +1 -0
  46. package/dist/core/plugin/installer/warnings.d.ts +5 -0
  47. package/dist/core/plugin/installer/warnings.d.ts.map +1 -0
  48. package/dist/core/plugin/installer/warnings.js +28 -0
  49. package/dist/core/plugin/installer/warnings.js.map +1 -0
  50. package/dist/core/plugin/installer.d.ts +4 -30
  51. package/dist/core/plugin/installer.d.ts.map +1 -1
  52. package/dist/core/plugin/installer.js +21 -202
  53. package/dist/core/plugin/installer.js.map +1 -1
  54. package/dist/core/plugin/params/compile.d.ts +3 -0
  55. package/dist/core/plugin/params/compile.d.ts.map +1 -0
  56. package/dist/core/plugin/params/compile.js +23 -0
  57. package/dist/core/plugin/params/compile.js.map +1 -0
  58. package/dist/core/plugin/params/declaration.d.ts +9 -0
  59. package/dist/core/plugin/params/declaration.d.ts.map +1 -0
  60. package/dist/core/plugin/params/declaration.js +223 -0
  61. package/dist/core/plugin/params/declaration.js.map +1 -0
  62. package/dist/core/plugin/params/input.d.ts +5 -0
  63. package/dist/core/plugin/params/input.d.ts.map +1 -0
  64. package/dist/core/plugin/params/input.js +181 -0
  65. package/dist/core/plugin/params/input.js.map +1 -0
  66. package/dist/core/plugin/params/reply.d.ts +3 -0
  67. package/dist/core/plugin/params/reply.d.ts.map +1 -0
  68. package/dist/core/plugin/params/reply.js +49 -0
  69. package/dist/core/plugin/params/reply.js.map +1 -0
  70. package/dist/core/plugin/params/type-level.d.ts +23 -0
  71. package/dist/core/plugin/params/type-level.d.ts.map +1 -0
  72. package/dist/core/plugin/params/type-level.js +2 -0
  73. package/dist/core/plugin/params/type-level.js.map +1 -0
  74. package/dist/core/plugin/params/types.d.ts +28 -0
  75. package/dist/core/plugin/params/types.d.ts.map +1 -0
  76. package/dist/core/plugin/params/types.js +12 -0
  77. package/dist/core/plugin/params/types.js.map +1 -0
  78. package/dist/core/plugin/params/values.d.ts +6 -0
  79. package/dist/core/plugin/params/values.d.ts.map +1 -0
  80. package/dist/core/plugin/params/values.js +108 -0
  81. package/dist/core/plugin/params/values.js.map +1 -0
  82. package/dist/core/web/api.d.ts +2 -14
  83. package/dist/core/web/api.d.ts.map +1 -1
  84. package/dist/core/web/api.js +8 -500
  85. package/dist/core/web/api.js.map +1 -1
  86. package/dist/core/web/routes/actions.d.ts +4 -0
  87. package/dist/core/web/routes/actions.d.ts.map +1 -0
  88. package/dist/core/web/routes/actions.js +33 -0
  89. package/dist/core/web/routes/actions.js.map +1 -0
  90. package/dist/core/web/routes/config.d.ts +5 -0
  91. package/dist/core/web/routes/config.d.ts.map +1 -0
  92. package/dist/core/web/routes/config.js +30 -0
  93. package/dist/core/web/routes/config.js.map +1 -0
  94. package/dist/core/web/routes/kv.d.ts +6 -0
  95. package/dist/core/web/routes/kv.d.ts.map +1 -0
  96. package/dist/core/web/routes/kv.js +80 -0
  97. package/dist/core/web/routes/kv.js.map +1 -0
  98. package/dist/core/web/routes/plugins.d.ts +5 -0
  99. package/dist/core/web/routes/plugins.d.ts.map +1 -0
  100. package/dist/core/web/routes/plugins.js +98 -0
  101. package/dist/core/web/routes/plugins.js.map +1 -0
  102. package/dist/core/web/routes/sessions.d.ts +8 -0
  103. package/dist/core/web/routes/sessions.d.ts.map +1 -0
  104. package/dist/core/web/routes/sessions.js +130 -0
  105. package/dist/core/web/routes/sessions.js.map +1 -0
  106. package/dist/core/web/routes/shared.d.ts +18 -0
  107. package/dist/core/web/routes/shared.d.ts.map +1 -0
  108. package/dist/core/web/routes/shared.js +19 -0
  109. package/dist/core/web/routes/shared.js.map +1 -0
  110. package/dist/core/web/routes/status.d.ts +6 -0
  111. package/dist/core/web/routes/status.d.ts.map +1 -0
  112. package/dist/core/web/routes/status.js +132 -0
  113. package/dist/core/web/routes/status.js.map +1 -0
  114. package/dist/core/web/server/auth.d.ts +17 -0
  115. package/dist/core/web/server/auth.d.ts.map +1 -0
  116. package/dist/core/web/server/auth.js +68 -0
  117. package/dist/core/web/server/auth.js.map +1 -0
  118. package/dist/core/web/server/csp.d.ts +11 -0
  119. package/dist/core/web/server/csp.d.ts.map +1 -0
  120. package/dist/core/web/server/csp.js +31 -0
  121. package/dist/core/web/server/csp.js.map +1 -0
  122. package/dist/core/web/server/request.d.ts +6 -0
  123. package/dist/core/web/server/request.d.ts.map +1 -0
  124. package/dist/core/web/server/request.js +33 -0
  125. package/dist/core/web/server/request.js.map +1 -0
  126. package/dist/core/web/server/security.d.ts +4 -0
  127. package/dist/core/web/server/security.d.ts.map +1 -0
  128. package/dist/core/web/server/security.js +12 -0
  129. package/dist/core/web/server/security.js.map +1 -0
  130. package/dist/core/web/server/sse.d.ts +18 -0
  131. package/dist/core/web/server/sse.d.ts.map +1 -0
  132. package/dist/core/web/server/sse.js +49 -0
  133. package/dist/core/web/server/sse.js.map +1 -0
  134. package/dist/core/web/server/static.d.ts +16 -0
  135. package/dist/core/web/server/static.d.ts.map +1 -0
  136. package/dist/core/web/server/static.js +80 -0
  137. package/dist/core/web/server/static.js.map +1 -0
  138. package/dist/core/web/server.d.ts +0 -7
  139. package/dist/core/web/server.d.ts.map +1 -1
  140. package/dist/core/web/server.js +41 -263
  141. package/dist/core/web/server.js.map +1 -1
  142. package/docs/architecture.md +28 -11
  143. package/docs/configuration.md +1 -1
  144. package/docs/migration.md +2 -2
  145. package/docs/plugin-api.md +3 -1
  146. package/docs/plugin-development.md +1 -1
  147. package/package.json +19 -17
  148. package/src/app/cli.ts +47 -0
  149. package/src/app/runtime.ts +522 -0
  150. package/src/app.ts +87 -395
  151. package/src/core/dispatch/command.ts +7 -1
  152. package/src/core/dispatch/router.ts +2 -1
  153. package/src/core/plugin/command-params.ts +8 -713
  154. package/src/core/plugin/install/paths.ts +72 -0
  155. package/src/core/plugin/install/state.ts +196 -0
  156. package/src/core/plugin/install/validate-script.ts +154 -0
  157. package/src/core/plugin/install-dir.ts +19 -427
  158. package/src/core/plugin/installer/checks.ts +137 -0
  159. package/src/core/plugin/installer/support.ts +120 -0
  160. package/src/core/plugin/installer/warnings.ts +52 -0
  161. package/src/core/plugin/installer.ts +52 -301
  162. package/src/core/plugin/params/compile.ts +41 -0
  163. package/src/core/plugin/params/declaration.ts +286 -0
  164. package/src/core/plugin/params/input.ts +254 -0
  165. package/src/core/plugin/params/reply.ts +59 -0
  166. package/src/core/plugin/params/type-level.ts +71 -0
  167. package/src/core/plugin/params/types.ts +49 -0
  168. package/src/core/plugin/params/values.ts +146 -0
  169. package/src/core/web/api.ts +33 -759
  170. package/src/core/web/routes/actions.ts +43 -0
  171. package/src/core/web/routes/config.ts +42 -0
  172. package/src/core/web/routes/kv.ts +122 -0
  173. package/src/core/web/routes/plugins.ts +151 -0
  174. package/src/core/web/routes/sessions.ts +188 -0
  175. package/src/core/web/routes/shared.ts +42 -0
  176. package/src/core/web/routes/status.ts +191 -0
  177. package/src/core/web/server/auth.ts +126 -0
  178. package/src/core/web/server/csp.ts +33 -0
  179. package/src/core/web/server/request.ts +38 -0
  180. package/src/core/web/server/security.ts +14 -0
  181. package/src/core/web/server/sse.ts +74 -0
  182. package/src/core/web/server/static.ts +112 -0
  183. package/src/core/web/server.ts +41 -383
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/declaration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type InputToken, type ParamSpec, type ParsedCommandParams } from './types.js';
2
+ export declare function tokenizeInput(input: string, usage: string): InputToken[];
3
+ export declare function parseValue(spec: ParamSpec, raw: string, usage: string): unknown;
4
+ export declare function parseInput(specs: ParamSpec[], input: string, usage: string, quoteId: number | undefined): ParsedCommandParams;
5
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,mBAAmB,EAC3B,MAAM,YAAY,CAAA;AAGnB,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CA6FxE;AAED,wBAAgB,UAAU,CACtB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACd,OAAO,CA8CT;AAED,wBAAgB,UAAU,CACtB,KAAK,EAAE,SAAS,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,GAC5B,mBAAmB,CA6FrB"}
@@ -0,0 +1,181 @@
1
+ import { CommandParamsError, } from './types.js';
2
+ import { parseAt, parseBoolean, parseTime } from './values.js';
3
+ export function tokenizeInput(input, usage) {
4
+ const tokens = [];
5
+ let index = 0;
6
+ while (index < input.length) {
7
+ const char = input[index];
8
+ if (char === undefined)
9
+ break;
10
+ if (/\s/.test(char)) {
11
+ index += 1;
12
+ continue;
13
+ }
14
+ const start = index;
15
+ let value = '';
16
+ let quote = null;
17
+ while (index < input.length) {
18
+ const current = input[index];
19
+ if (current === undefined)
20
+ break;
21
+ if (quote !== null) {
22
+ if (current === '\\') {
23
+ const next = input[index + 1];
24
+ if (next !== undefined) {
25
+ value += next;
26
+ index += 2;
27
+ continue;
28
+ }
29
+ value += current;
30
+ index += 1;
31
+ continue;
32
+ }
33
+ if (current === quote) {
34
+ quote = null;
35
+ index += 1;
36
+ continue;
37
+ }
38
+ value += current;
39
+ index += 1;
40
+ continue;
41
+ }
42
+ if (/\s/.test(current))
43
+ break;
44
+ if (current === '[' && input.startsWith('[CQ:', index)) {
45
+ const close = input.indexOf(']', index + 4);
46
+ if (close >= 0) {
47
+ value += input.slice(index, close + 1);
48
+ index = close + 1;
49
+ continue;
50
+ }
51
+ }
52
+ if (current === '"' || current === "'") {
53
+ quote = current;
54
+ index += 1;
55
+ continue;
56
+ }
57
+ if (current === '\\') {
58
+ const next = input[index + 1];
59
+ if (next !== undefined) {
60
+ value += next;
61
+ index += 2;
62
+ continue;
63
+ }
64
+ value += current;
65
+ index += 1;
66
+ continue;
67
+ }
68
+ value += current;
69
+ index += 1;
70
+ }
71
+ if (quote !== null) {
72
+ throw new CommandParamsError('参数引号未闭合', usage);
73
+ }
74
+ tokens.push({ value, start });
75
+ }
76
+ return tokens;
77
+ }
78
+ export function parseValue(spec, raw, usage) {
79
+ switch (spec.type) {
80
+ case 'string':
81
+ case 'text':
82
+ return raw;
83
+ case 'number': {
84
+ const value = raw.trim() === '' ? Number.NaN : Number(raw);
85
+ if (!Number.isFinite(value)) {
86
+ throw new CommandParamsError(`参数 ${spec.name} 需要是数字`, usage);
87
+ }
88
+ return value;
89
+ }
90
+ case 'integer': {
91
+ const value = raw.trim() === '' ? Number.NaN : Number(raw);
92
+ if (!Number.isInteger(value)) {
93
+ throw new CommandParamsError(`参数 ${spec.name} 需要是整数`, usage);
94
+ }
95
+ return value;
96
+ }
97
+ case 'boolean': {
98
+ const value = parseBoolean(raw);
99
+ if (value === null) {
100
+ throw new CommandParamsError(`参数 ${spec.name} 需要是布尔值`, usage);
101
+ }
102
+ return value;
103
+ }
104
+ case 'at':
105
+ return parseAt(raw, spec.name, usage);
106
+ case 'time':
107
+ return parseTime(raw, spec.name, usage);
108
+ }
109
+ }
110
+ export function parseInput(specs, input, usage, quoteId) {
111
+ const tokens = tokenizeInput(input, usage);
112
+ const args = [];
113
+ let index = 0;
114
+ for (const spec of specs) {
115
+ if (spec.type === 'reply') {
116
+ if (quoteId !== undefined) {
117
+ args.push(quoteId);
118
+ }
119
+ else if (spec.required) {
120
+ throw new CommandParamsError(`参数 ${spec.name} 需要引用一条消息`, usage);
121
+ }
122
+ else {
123
+ args.push(undefined);
124
+ }
125
+ continue;
126
+ }
127
+ if (spec.rest) {
128
+ for (let tokenIndex = index; tokenIndex < tokens.length; tokenIndex += 1) {
129
+ const token = tokens[tokenIndex];
130
+ if (token) {
131
+ args.push(token.value);
132
+ }
133
+ }
134
+ index = tokens.length;
135
+ continue;
136
+ }
137
+ if (spec.type === 'text') {
138
+ const token = tokens[index];
139
+ if (!token) {
140
+ if (spec.hasDefault) {
141
+ args.push(spec.defaultValue);
142
+ }
143
+ else if (spec.required) {
144
+ throw new CommandParamsError(`缺少参数:${spec.name}`, usage);
145
+ }
146
+ else {
147
+ args.push(undefined);
148
+ }
149
+ continue;
150
+ }
151
+ const remaining = tokens.length - index;
152
+ const value = remaining === 1 ? token.value : input.slice(token.start).trim();
153
+ args.push(value);
154
+ index = tokens.length;
155
+ continue;
156
+ }
157
+ const token = tokens[index];
158
+ if (!token) {
159
+ if (spec.hasDefault) {
160
+ args.push(spec.defaultValue);
161
+ }
162
+ else if (spec.required) {
163
+ throw new CommandParamsError(`缺少参数:${spec.name}`, usage);
164
+ }
165
+ else {
166
+ args.push(undefined);
167
+ }
168
+ continue;
169
+ }
170
+ index += 1;
171
+ args.push(parseValue(spec, token.value, usage));
172
+ }
173
+ while (args.length > 0 && args[args.length - 1] === undefined) {
174
+ args.pop();
175
+ }
176
+ const ignored = index < tokens.length
177
+ ? tokens.slice(index).map((token) => token.value)
178
+ : [];
179
+ return { args, ignored };
180
+ }
181
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/input.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,GAIrB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE9D,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,KAAa;IACtD,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,IAAI,IAAI,KAAK,SAAS;YAAE,MAAK;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAA;QACnB,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,KAAK,GAAkB,IAAI,CAAA;QAE/B,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;YAE5B,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAK;YAEhC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACnB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;oBAE7B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;wBACrB,KAAK,IAAI,IAAI,CAAA;wBACb,KAAK,IAAI,CAAC,CAAA;wBACV,SAAQ;oBACZ,CAAC;oBAED,KAAK,IAAI,OAAO,CAAA;oBAChB,KAAK,IAAI,CAAC,CAAA;oBACV,SAAQ;gBACZ,CAAC;gBAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;oBACpB,KAAK,GAAG,IAAI,CAAA;oBACZ,KAAK,IAAI,CAAC,CAAA;oBACV,SAAQ;gBACZ,CAAC;gBAED,KAAK,IAAI,OAAO,CAAA;gBAChB,KAAK,IAAI,CAAC,CAAA;gBACV,SAAQ;YACZ,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,MAAK;YAE7B,IAAI,OAAO,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBAE3C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACb,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBACtC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAA;oBACjB,SAAQ;gBACZ,CAAC;YACL,CAAC;YAED,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBACrC,KAAK,GAAG,OAAO,CAAA;gBACf,KAAK,IAAI,CAAC,CAAA;gBACV,SAAQ;YACZ,CAAC;YAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;gBAE7B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrB,KAAK,IAAI,IAAI,CAAA;oBACb,KAAK,IAAI,CAAC,CAAA;oBACV,SAAQ;gBACZ,CAAC;gBAED,KAAK,IAAI,OAAO,CAAA;gBAChB,KAAK,IAAI,CAAC,CAAA;gBACV,SAAQ;YACZ,CAAC;YAED,KAAK,IAAI,OAAO,CAAA;YAChB,KAAK,IAAI,CAAC,CAAA;QACd,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAClD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,IAAe,EACf,GAAW,EACX,KAAa;IAEb,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,OAAO,GAAG,CAAA;QACd,KAAK,QAAQ,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,kBAAkB,CACxB,MAAM,IAAI,CAAC,IAAI,QAAQ,EACvB,KAAK,CACR,CAAA;YACL,CAAC;YAED,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAE1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,kBAAkB,CACxB,MAAM,IAAI,CAAC,IAAI,QAAQ,EACvB,KAAK,CACR,CAAA;YACL,CAAC;YAED,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAE/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,kBAAkB,CACxB,MAAM,IAAI,CAAC,IAAI,SAAS,EACxB,KAAK,CACR,CAAA;YACL,CAAC;YAED,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,KAAK,IAAI;YACL,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACzC,KAAK,MAAM;YACP,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,KAAkB,EAClB,KAAa,EACb,KAAa,EACb,OAA2B;IAE3B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAc,EAAE,CAAA;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACxB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtB,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvB,MAAM,IAAI,kBAAkB,CACxB,MAAM,IAAI,CAAC,IAAI,WAAW,EAC1B,KAAK,CACR,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACxB,CAAC;YAED,SAAQ;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,KACI,IAAI,UAAU,GAAG,KAAK,EACtB,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,UAAU,IAAI,CAAC,EACjB,CAAC;gBACC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;gBAEhC,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAC1B,CAAC;YACL,CAAC;YAED,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;YACrB,SAAQ;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;YAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAChC,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACvB,MAAM,IAAI,kBAAkB,CACxB,QAAQ,IAAI,CAAC,IAAI,EAAE,EACnB,KAAK,CACR,CAAA;gBACL,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACxB,CAAC;gBAED,SAAQ;YACZ,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;YACvC,MAAM,KAAK,GACP,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;YAEnE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAChB,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;YACrB,SAAQ;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAChC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvB,MAAM,IAAI,kBAAkB,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;YAC5D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACxB,CAAC;YAED,SAAQ;QACZ,CAAC;QAED,KAAK,IAAI,CAAC,CAAA;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC5D,IAAI,CAAC,GAAG,EAAE,CAAA;IACd,CAAC;IAED,MAAM,OAAO,GACT,KAAK,GAAG,MAAM,CAAC,MAAM;QACjB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QACjD,CAAC,CAAC,EAAE,CAAA;IAEZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type OneBotMessageEvent } from '@snowluma/sdk';
2
+ export declare function quoteIdOf(event: OneBotMessageEvent | undefined): number | undefined;
3
+ //# sourceMappingURL=reply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAoCtE,wBAAgB,SAAS,CACrB,KAAK,EAAE,kBAAkB,GAAG,SAAS,GACtC,MAAM,GAAG,SAAS,CAoBpB"}
@@ -0,0 +1,49 @@
1
+ import { parseSegments } from '@snowluma/sdk';
2
+ function isRecord(value) {
3
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
4
+ }
5
+ function toMessageId(value) {
6
+ const raw = typeof value === 'string' ? value.trim() : value;
7
+ if (typeof raw !== 'number' && typeof raw !== 'string') {
8
+ return undefined;
9
+ }
10
+ const parsed = typeof raw === 'string'
11
+ ? /^-?\d+$/.test(raw)
12
+ ? Number(raw)
13
+ : Number.NaN
14
+ : raw;
15
+ return Number.isSafeInteger(parsed) && parsed !== 0 ? parsed : undefined;
16
+ }
17
+ function replyIdIn(segments) {
18
+ for (const segment of segments) {
19
+ if (!isRecord(segment) || segment.type !== 'reply')
20
+ continue;
21
+ const data = isRecord(segment.data) ? segment.data : undefined;
22
+ const id = toMessageId(data?.id);
23
+ if (id !== undefined)
24
+ return id;
25
+ }
26
+ return undefined;
27
+ }
28
+ export function quoteIdOf(event) {
29
+ if (!event)
30
+ return undefined;
31
+ const message = event.message;
32
+ if (typeof message === 'string') {
33
+ const id = replyIdIn(parseSegments(message));
34
+ if (id !== undefined)
35
+ return id;
36
+ }
37
+ else if (Array.isArray(message)) {
38
+ const id = replyIdIn(message);
39
+ if (id !== undefined)
40
+ return id;
41
+ }
42
+ else if (isRecord(message)) {
43
+ const id = replyIdIn([message]);
44
+ if (id !== undefined)
45
+ return id;
46
+ }
47
+ return replyIdIn(parseSegments(event.raw_message));
48
+ }
49
+ //# sourceMappingURL=reply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,eAAe,CAAA;AAEtE,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IAC/B,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;IAE5D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrD,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,MAAM,MAAM,GACR,OAAO,GAAG,KAAK,QAAQ;QACnB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACjB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,MAAM,CAAC,GAAG;QAChB,CAAC,CAAC,GAAG,CAAA;IAEb,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5E,CAAC;AAED,SAAS,SAAS,CAAC,QAA4B;IAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YAAE,SAAQ;QAE5D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9D,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAEhC,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;IACnC,CAAC;IAED,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,SAAS,CACrB,KAAqC;IAErC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAE7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;QAE5C,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;IACnC,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAE7B,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;IACnC,CAAC;SAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QAE/B,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;IACnC,CAAC;IAED,OAAO,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,23 @@
1
+ type Whitespace = ' ' | '\n' | '\r' | '\t' | '\v' | '\f';
2
+ type TrimLeft<Source extends string> = Source extends `${Whitespace}${infer Rest}` ? TrimLeft<Rest> : Source;
3
+ type TrimRight<Source extends string> = Source extends `${infer Rest}${Whitespace}` ? TrimRight<Rest> : Source;
4
+ type Trim<Source extends string> = TrimLeft<TrimRight<Source>>;
5
+ type ParamValue<Type extends string> = Trim<Type> extends 'string' | 'text' ? string : Trim<Type> extends 'number' | 'integer' | 'at' | 'reply' | 'time' ? number : Trim<Type> extends 'boolean' ? boolean : unknown;
6
+ interface VariadicParam {
7
+ readonly variadic: true;
8
+ }
9
+ type ParamType<Head extends string> = Head extends `${string}:${infer Type}` ? ParamValue<Type> : string;
10
+ type ParamElement<Body extends string, Required extends boolean> = Trim<Body> extends `...${string}` ? VariadicParam : Trim<Body> extends `${infer Head}=${string}` ? ParamType<Head> : Required extends true ? ParamType<Body> : ParamType<Body> | undefined;
11
+ type AppendParam<Acc extends unknown[], Element> = [Element] extends [
12
+ VariadicParam
13
+ ] ? [...Acc, ...string[]] : [...Acc, Element];
14
+ type ParseCommandParams<Source extends string, Acc extends unknown[] = []> = Trim<Source> extends '' ? Acc : Trim<Source> extends `<${infer Body}>${infer Rest}` ? ParamElement<Body, true> extends VariadicParam ? any[] : ParseCommandParams<Rest, AppendParam<Acc, ParamElement<Body, true>>> : Trim<Source> extends `[${infer Body}]${infer Rest}` ? ParamElement<Body, false> extends VariadicParam ? Trim<Rest> extends '' ? [...Acc, ...string[]] : any[] : ParseCommandParams<Rest, AppendParam<Acc, ParamElement<Body, false>>> : any[];
15
+ /**
16
+ * 把 `params` 声明字符串推导成 handler 的位置参数 tuple。
17
+ *
18
+ * 非字面量声明(例如运行时拼接的 `string`)或无法解析的声明会回退为
19
+ * `any[]`,以保证现有插件仍然可以编译。
20
+ */
21
+ export type CommandParamArgs<Declaration extends string> = string extends Declaration ? any[] : ParseCommandParams<Declaration>;
22
+ export {};
23
+ //# sourceMappingURL=type-level.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-level.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/type-level.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-level.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/type-level.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import type { OneBotMessageEvent } from '@snowluma/sdk';
2
+ export type CommandParamType = 'string' | 'text' | 'number' | 'integer' | 'boolean' | 'at' | 'reply' | 'time';
3
+ export interface ParsedCommandParams {
4
+ args: unknown[];
5
+ ignored: string[];
6
+ }
7
+ export interface CompiledCommandParams {
8
+ usage: string;
9
+ parse(input: string, event?: OneBotMessageEvent): ParsedCommandParams;
10
+ }
11
+ export declare class CommandParamsError extends Error {
12
+ readonly usage: string;
13
+ constructor(message: string, usage: string);
14
+ }
15
+ export interface ParamSpec {
16
+ name: string;
17
+ type: CommandParamType;
18
+ required: boolean;
19
+ rest: boolean;
20
+ hasDefault: boolean;
21
+ defaultValue?: unknown;
22
+ }
23
+ export interface InputToken {
24
+ value: string;
25
+ start: number;
26
+ }
27
+ export declare function declarationError(message: string): Error;
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,MAAM,gBAAgB,GACtB,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,GACT,IAAI,GACJ,OAAO,GACP,MAAM,CAAA;AAEZ,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,CAAA;CACxE;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAIzC;CACJ;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,gBAAgB,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAEvD"}
@@ -0,0 +1,12 @@
1
+ export class CommandParamsError extends Error {
2
+ usage;
3
+ constructor(message, usage) {
4
+ super(message);
5
+ this.name = 'CommandParamsError';
6
+ this.usage = usage;
7
+ }
8
+ }
9
+ export function declarationError(message) {
10
+ return new Error(`参数声明错误:${message}`);
11
+ }
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/types.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAChC,KAAK,CAAQ;IAEtB,YAAY,OAAe,EAAE,KAAa;QACtC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;CACJ;AAgBD,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC5C,OAAO,IAAI,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function unquote(value: string): string;
2
+ export declare function parseBoolean(value: string): boolean | null;
3
+ export declare function parseAt(value: string, name: string, usage: string): number;
4
+ export declare function parseTimeValue(value: string): number | null;
5
+ export declare function parseTime(value: string, name: string, usage: string): number;
6
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/values.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkC7C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAY1D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA2B1E;AAmBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiC3D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAW5E"}
@@ -0,0 +1,108 @@
1
+ import { parseSegments } from '@snowluma/sdk';
2
+ import { CommandParamsError, declarationError } from './types.js';
3
+ export function unquote(value) {
4
+ const trimmed = value.trim();
5
+ const quote = trimmed[0];
6
+ if (quote !== '"' && quote !== "'") {
7
+ return trimmed;
8
+ }
9
+ if (trimmed.length < 2 || trimmed[trimmed.length - 1] !== quote) {
10
+ throw declarationError('默认值引号未闭合');
11
+ }
12
+ let result = '';
13
+ for (let index = 1; index < trimmed.length - 1; index += 1) {
14
+ const char = trimmed[index];
15
+ if (char === undefined)
16
+ break;
17
+ if (char === '\\') {
18
+ const next = trimmed[index + 1];
19
+ if (next !== undefined) {
20
+ result += next;
21
+ index += 1;
22
+ }
23
+ continue;
24
+ }
25
+ result += char;
26
+ }
27
+ return result;
28
+ }
29
+ export function parseBoolean(value) {
30
+ const normalized = value.trim().toLowerCase();
31
+ if (['true', '1', 'yes', 'y', 'on'].includes(normalized)) {
32
+ return true;
33
+ }
34
+ if (['false', '0', 'no', 'n', 'off'].includes(normalized)) {
35
+ return false;
36
+ }
37
+ return null;
38
+ }
39
+ export function parseAt(value, name, usage) {
40
+ const raw = value.trim();
41
+ const segments = parseSegments(raw);
42
+ const segment = segments[0];
43
+ if (segments.length === 1 && segment?.type === 'at') {
44
+ const qq = segment.data.qq;
45
+ if (qq !== 'all') {
46
+ const parsed = Number(qq);
47
+ if (Number.isSafeInteger(parsed) && parsed > 0) {
48
+ return parsed;
49
+ }
50
+ }
51
+ }
52
+ else if (/^\d+$/.test(raw)) {
53
+ const parsed = Number(raw);
54
+ if (Number.isSafeInteger(parsed) && parsed > 0) {
55
+ return parsed;
56
+ }
57
+ }
58
+ throw new CommandParamsError(`参数 ${name} 需要 @ 一个用户或填写 QQ 号`, usage);
59
+ }
60
+ const TIME_UNITS = {
61
+ s: 1,
62
+ 秒: 1,
63
+ m: 60,
64
+ 分: 60,
65
+ 分钟: 60,
66
+ h: 3600,
67
+ 时: 3600,
68
+ 小时: 3600,
69
+ d: 86400,
70
+ 天: 86400,
71
+ w: 604800,
72
+ 周: 604800,
73
+ };
74
+ const TIME_PART = /^(\d+(?:\.\d+)?)(分钟|小时|秒|分|时|天|周|[smhdw])/i;
75
+ export function parseTimeValue(value) {
76
+ const raw = value.trim();
77
+ if (/^\d+$/.test(raw)) {
78
+ const seconds = Number(raw);
79
+ return Number.isSafeInteger(seconds) ? seconds : null;
80
+ }
81
+ let index = 0;
82
+ let total = 0;
83
+ let parsed = false;
84
+ while (index < raw.length) {
85
+ const match = TIME_PART.exec(raw.slice(index));
86
+ if (!match)
87
+ return null;
88
+ const unit = TIME_UNITS[match[2]?.toLowerCase() ?? ''];
89
+ const amount = Number(match[1]);
90
+ if (unit === undefined)
91
+ return null;
92
+ total += amount * unit;
93
+ index += match[0].length;
94
+ parsed = true;
95
+ }
96
+ if (!parsed || !Number.isSafeInteger(total) || total < 0) {
97
+ return null;
98
+ }
99
+ return total;
100
+ }
101
+ export function parseTime(value, name, usage) {
102
+ const seconds = parseTimeValue(value);
103
+ if (seconds === null) {
104
+ throw new CommandParamsError(`参数 ${name} 需要是时间,例如 10s、5m、1h30m`, usage);
105
+ }
106
+ return seconds;
107
+ }
108
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/values.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,4 @@
1
- import type { IncomingMessage, ServerResponse } from 'node:http';
2
- import type { AuthSession } from './auth.js';
3
- import type { WebUiDeps } from './types.js';
4
- import { type URLSearchParamsLike } from './http.js';
5
- export interface ApiContext {
6
- deps: WebUiDeps;
7
- req: IncomingMessage;
8
- res: ServerResponse;
9
- method: string;
10
- pathname: string;
11
- segments: string[];
12
- search: URLSearchParamsLike;
13
- session: AuthSession;
14
- }
1
+ import type { ApiContext } from './routes/shared.js';
2
+ export type { ApiContext } from './routes/shared.js';
15
3
  export declare function handleApiRoute(ctx: ApiContext): Promise<boolean>;
16
4
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/core/web/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAWhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAG5C,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,YAAY,CAAA;AACzD,OAAO,EAMH,KAAK,mBAAmB,EAC3B,MAAM,WAAW,CAAA;AAElB,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,eAAe,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,mBAAmB,CAAA;IAC3B,OAAO,EAAE,WAAW,CAAA;CACvB;AAytBD,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAyKtE"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/core/web/api.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAyKtE"}