@jsbot-tellus/core 2.5.1 → 2.6.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/declaration.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACjB,MAAM,YAAY,CAAA;AAKnB,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAczD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAyDxD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAoEnD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAkDtD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAYlD;AAED,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACb,OAAO,CA+CT"}
1
+ {"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/declaration.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,gBAAgB,EAErB,KAAK,SAAS,EACjB,MAAM,YAAY,CAAA;AAWnB,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAczD;AAsFD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAyDxD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAqFnD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAkDtD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAYlD;AAED,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACb,OAAO,CA+CT"}
@@ -1,6 +1,7 @@
1
1
  import { declarationError, } from './types.js';
2
- import { parseBoolean, parseTimeValue, unquote } from './values.js';
2
+ import { measureLength, parseBoolean, parseTimeValue, unquote, } from './values.js';
3
3
  const NAME_PATTERN = /^[\p{L}_][\p{L}\p{N}_-]*$/u;
4
+ const LENGTH_PATTERN = /^(\d*)\.\.(\d*)$/;
4
5
  export function parseType(value) {
5
6
  switch (value) {
6
7
  case 'string':
@@ -16,6 +17,58 @@ export function parseType(value) {
16
17
  throw declarationError(`未知的参数类型 "${value}"`);
17
18
  }
18
19
  }
20
+ function parseLengthNumber(raw, token) {
21
+ const value = Number(raw);
22
+ if (!Number.isSafeInteger(value)) {
23
+ throw declarationError(`长度限制不是安全的整数:${token}`);
24
+ }
25
+ return value;
26
+ }
27
+ function parseLength(raw, token) {
28
+ const value = raw.trim();
29
+ const match = LENGTH_PATTERN.exec(value);
30
+ if (!match) {
31
+ throw declarationError(`非法的长度限制 "${raw}":${token}`);
32
+ }
33
+ const minRaw = match[1] ?? '';
34
+ const maxRaw = match[2] ?? '';
35
+ if (minRaw === '' && maxRaw === '') {
36
+ throw declarationError(`长度限制不能为空:${token}`);
37
+ }
38
+ const min = minRaw === '' ? undefined : parseLengthNumber(minRaw, token);
39
+ const max = maxRaw === '' ? undefined : parseLengthNumber(maxRaw, token);
40
+ if (min !== undefined && max !== undefined && min > max) {
41
+ throw declarationError(`长度下限不能大于上限:${token}`);
42
+ }
43
+ return { min, max };
44
+ }
45
+ function parseTypeDeclaration(raw, token) {
46
+ const value = raw.trim();
47
+ const open = value.indexOf('(');
48
+ if (open < 0) {
49
+ return { type: parseType(value) };
50
+ }
51
+ if (!value.endsWith(')')) {
52
+ throw declarationError(`非法的参数声明 "${token}"`);
53
+ }
54
+ const type = parseType(value.slice(0, open).trim());
55
+ const length = parseLength(value.slice(open + 1, -1), token);
56
+ if (type !== 'string' && type !== 'text') {
57
+ throw declarationError(`只有 string/text 参数支持长度限制:${token}`);
58
+ }
59
+ return { type, length };
60
+ }
61
+ function validateDefaultLength(name, value, length) {
62
+ if (length === undefined)
63
+ return;
64
+ const measured = measureLength(value);
65
+ if (length.min !== undefined && measured < length.min) {
66
+ throw declarationError(`参数 ${name} 的默认值至少需要 ${length.min} 个字符`);
67
+ }
68
+ if (length.max !== undefined && measured > length.max) {
69
+ throw declarationError(`参数 ${name} 的默认值不能超过 ${length.max} 个字符`);
70
+ }
71
+ }
19
72
  export function validateName(value) {
20
73
  const name = value.trim();
21
74
  if (!name) {
@@ -89,7 +142,11 @@ export function parseToken(token) {
89
142
  if (required) {
90
143
  throw declarationError('变长参数必须使用 [ ]');
91
144
  }
92
- const name = validateName(inner.slice(3));
145
+ const rest = inner.slice(3);
146
+ if (rest.includes('(')) {
147
+ throw declarationError(`变长参数不支持长度限制:${token}`);
148
+ }
149
+ const name = validateName(rest);
93
150
  return {
94
151
  name,
95
152
  type: 'string',
@@ -106,18 +163,23 @@ export function parseToken(token) {
106
163
  const defaultRaw = equals >= 0 ? inner.slice(equals + 1).trim() : undefined;
107
164
  const colon = head.indexOf(':');
108
165
  const name = validateName(colon >= 0 ? head.slice(0, colon) : head);
109
- const type = parseType(colon >= 0 ? head.slice(colon + 1).trim() : 'string');
166
+ const { type, length } = parseTypeDeclaration(colon >= 0 ? head.slice(colon + 1) : 'string', token);
110
167
  if (required && defaultRaw !== undefined) {
111
168
  throw declarationError(`必填参数不能有默认值:${token}`);
112
169
  }
113
170
  if (defaultRaw !== undefined) {
171
+ const defaultValue = parseDefaultValue(type, defaultRaw, name);
172
+ if (typeof defaultValue === 'string') {
173
+ validateDefaultLength(name, defaultValue, length);
174
+ }
114
175
  return {
115
176
  name,
116
177
  type,
117
178
  required,
118
179
  rest: false,
119
180
  hasDefault: true,
120
- defaultValue: parseDefaultValue(type, defaultRaw, name),
181
+ defaultValue,
182
+ length,
121
183
  };
122
184
  }
123
185
  return {
@@ -126,6 +188,7 @@ export function parseToken(token) {
126
188
  required,
127
189
  rest: false,
128
190
  hasDefault: false,
191
+ length,
129
192
  };
130
193
  }
131
194
  export function validateSpecs(specs) {
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/declaration.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,GAGnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAEnE,MAAM,YAAY,GAAG,4BAA4B,CAAA;AAEjD,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,IAAI,CAAC;QACV,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACP,OAAO,KAAK,CAAA;QAChB;YACI,MAAM,gBAAgB,CAAC,YAAY,KAAK,GAAG,CAAC,CAAA;IACpD,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,gBAAgB,CAAC,WAAW,IAAI,GAAG,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,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,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC/B,MAAM,gBAAgB,CAAC,YAAY,IAAI,GAAG,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACtC,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAA;QACnB,IAAI,KAAK,GAAkB,IAAI,CAAA;QAE/B,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAE1B,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAK;YAEhC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACnB,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;gBACZ,CAAC;gBAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;oBACpB,KAAK,GAAG,IAAI,CAAA;gBAChB,CAAC;gBAED,SAAQ;YACZ,CAAC;YAED,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBACrC,KAAK,GAAG,OAAO,CAAA;gBACf,SAAQ;YACZ,CAAC;YAED,IAAI,OAAO,KAAK,KAAK;gBAAE,MAAK;QAChC,CAAC;QAED,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC9C,MAAM,gBAAgB,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAA;QACpE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACvC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAErC,IACI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;QAC9B,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;QAChC,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,EACpC,CAAC;QACC,MAAM,gBAAgB,CAAC,YAAY,KAAK,GAAG,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAA;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAEvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAEzC,OAAO;YACH,IAAI;YACJ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,KAAK;SACpB,CAAA;IACL,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,gBAAgB,CAAC,YAAY,KAAK,GAAG,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IACvE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAE5E,IAAI,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,gBAAgB,CAAC,cAAc,KAAK,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACH,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;SAC1D,CAAA;IACL,CAAC;IAED,OAAO;QACH,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,KAAK;KACpB,CAAA;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAkB;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,IAAI,YAAY,GAAG,KAAK,CAAA;IACxB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,IAAI,CAAC,IAAI;YAAE,SAAQ;QAEnB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,gBAAgB,CAAC,UAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAClD,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEpB,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAA;QAC1C,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAA;QAC1C,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAA;YACxC,CAAC;YAED,QAAQ,GAAG,IAAI,CAAA;YACf,SAAQ;QACZ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAA;YACxC,CAAC;YAED,QAAQ,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,YAAY,EAAE,CAAC;gBACf,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;YAC7C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,YAAY,GAAG,IAAI,CAAA;QACvB,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAkB;IACtC,OAAO,KAAK;SACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACV,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,OAAO,IAAI,CAAC,IAAI,GAAG,CAAA;QAC9B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAEjE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAA;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,IAAsB,EACtB,GAAW,EACX,IAAY;IAEZ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAE1B,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,OAAO,KAAK,CAAA;QAChB,KAAK,QAAQ,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAE/D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,gBAAgB,CAAC,MAAM,IAAI,WAAW,CAAC,CAAA;YACjD,CAAC;YAED,OAAO,MAAM,CAAA;QACjB,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAE/D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,MAAM,gBAAgB,CAAC,MAAM,IAAI,WAAW,CAAC,CAAA;YACjD,CAAC;YAED,OAAO,MAAM,CAAA;QACjB,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YAEnC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,gBAAgB,CAAC,MAAM,IAAI,YAAY,CAAC,CAAA;YAClD,CAAC;YAED,OAAO,OAAO,CAAA;QAClB,CAAC;QACD,KAAK,IAAI,CAAC;QACV,KAAK,OAAO;YACR,MAAM,gBAAgB,CAAC,MAAM,IAAI,SAAS,CAAC,CAAA;QAC/C,KAAK,MAAM,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YAErC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,gBAAgB,CAAC,MAAM,IAAI,WAAW,CAAC,CAAA;YACjD,CAAC;YAED,OAAO,OAAO,CAAA;QAClB,CAAC;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"declaration.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/declaration.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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;AA4BD,wBAAgB,UAAU,CACtB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACd,OAAO,CA+CT;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"}
@@ -1,5 +1,5 @@
1
1
  import { CommandParamsError, } from './types.js';
2
- import { parseAt, parseBoolean, parseTime } from './values.js';
2
+ import { measureLength, parseAt, parseBoolean, parseTime } from './values.js';
3
3
  export function tokenizeInput(input, usage) {
4
4
  const tokens = [];
5
5
  let index = 0;
@@ -75,9 +75,24 @@ export function tokenizeInput(input, usage) {
75
75
  }
76
76
  return tokens;
77
77
  }
78
+ function enforceLength(spec, value, usage) {
79
+ const length = spec.length;
80
+ if (length === undefined) {
81
+ return value;
82
+ }
83
+ const measured = measureLength(value);
84
+ if (length.min !== undefined && measured < length.min) {
85
+ throw new CommandParamsError(`参数 ${spec.name} 至少需要 ${length.min} 个字符`, usage);
86
+ }
87
+ if (length.max !== undefined && measured > length.max) {
88
+ throw new CommandParamsError(`参数 ${spec.name} 不能超过 ${length.max} 个字符`, usage);
89
+ }
90
+ return value;
91
+ }
78
92
  export function parseValue(spec, raw, usage) {
79
93
  switch (spec.type) {
80
94
  case 'string':
95
+ return enforceLength(spec, raw, usage);
81
96
  case 'text':
82
97
  return raw;
83
98
  case 'number': {
@@ -150,7 +165,7 @@ export function parseInput(specs, input, usage, quoteId) {
150
165
  }
151
166
  const remaining = tokens.length - index;
152
167
  const value = remaining === 1 ? token.value : input.slice(token.start).trim();
153
- args.push(value);
168
+ args.push(enforceLength(spec, value, usage));
154
169
  index = tokens.length;
155
170
  continue;
156
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/input.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ type Whitespace = ' ' | '\n' | '\r' | '\t' | '\v' | '\f';
2
2
  type TrimLeft<Source extends string> = Source extends `${Whitespace}${infer Rest}` ? TrimLeft<Rest> : Source;
3
3
  type TrimRight<Source extends string> = Source extends `${infer Rest}${Whitespace}` ? TrimRight<Rest> : Source;
4
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;
5
+ type StripLength<Type extends string> = Trim<Type> extends `${infer Base}(${string})` ? Trim<Base> : Trim<Type>;
6
+ type ParamValue<Type extends string> = StripLength<Type> extends 'string' | 'text' ? string : StripLength<Type> extends 'number' | 'integer' | 'at' | 'reply' | 'time' ? number : StripLength<Type> extends 'boolean' ? boolean : unknown;
6
7
  interface VariadicParam {
7
8
  readonly variadic: true;
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"type-level.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/type-level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-level.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/params/type-level.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@ export declare class CommandParamsError extends Error {
12
12
  readonly usage: string;
13
13
  constructor(message: string, usage: string);
14
14
  }
15
+ export interface ParamLength {
16
+ min?: number | undefined;
17
+ max?: number | undefined;
18
+ }
15
19
  export interface ParamSpec {
16
20
  name: string;
17
21
  type: CommandParamType;
@@ -19,6 +23,7 @@ export interface ParamSpec {
19
23
  rest: boolean;
20
24
  hasDefault: boolean;
21
25
  defaultValue?: unknown;
26
+ length?: ParamLength | undefined;
22
27
  }
23
28
  export interface InputToken {
24
29
  value: string;
@@ -1 +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"}
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,WAAW;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B;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;IACtB,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CACnC;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"}
@@ -1 +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"}
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;AAsBD,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC5C,OAAO,IAAI,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;AACzC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export declare function unquote(value: string): string;
2
+ export declare function measureLength(value: string): number;
2
3
  export declare function parseBoolean(value: string): boolean | null;
3
4
  export declare function parseAt(value: string, name: string, usage: string): number;
4
5
  export declare function parseTimeValue(value: string): number | null;
@@ -1 +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"}
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,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;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"}
@@ -26,6 +26,9 @@ export function unquote(value) {
26
26
  }
27
27
  return result;
28
28
  }
29
+ export function measureLength(value) {
30
+ return Array.from(value).length;
31
+ }
29
32
  export function parseBoolean(value) {
30
33
  const normalized = value.trim().toLowerCase();
31
34
  if (['true', '1', 'yes', 'y', 'on'].includes(normalized)) {
@@ -1 +1 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/core/plugin/params/values.ts"],"names":[],"mappings":"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"}
@@ -240,14 +240,15 @@ ctx.commands.register(
240
240
 
241
241
  声明语法:
242
242
 
243
- | 写法 | 说明 |
244
- | -------------------- | ---------------------------------------- |
245
- | `<arg>` | 必填字符串参数 |
246
- | `[arg]` | 可选字符串参数 |
247
- | `<arg:type>` | 指定类型的必填参数 |
248
- | `[arg:type=default]` | 可选参数及默认值 |
249
- | `<arg:text>` | 文本参数,消费全部剩余输入,必须放在最后 |
250
- | `[...rest]` | 变长参数,每个剩余 token 作为一个字符串 |
243
+ | 写法 | 说明 |
244
+ | --------------------- | ---------------------------------------- |
245
+ | `<arg>` | 必填字符串参数 |
246
+ | `[arg]` | 可选字符串参数 |
247
+ | `<arg:type>` | 指定类型的必填参数 |
248
+ | `[arg:type=default]` | 可选参数及默认值 |
249
+ | `<arg:string(2..10)>` | 带长度限制的字符串参数 |
250
+ | `<arg:text>` | 文本参数,消费全部剩余输入,必须放在最后 |
251
+ | `[...rest]` | 变长参数,每个剩余 token 作为一个字符串 |
251
252
 
252
253
  内置类型:
253
254
 
@@ -261,15 +262,27 @@ ctx.commands.register(
261
262
  - `reply`:当前消息引用(回复)的消息 ID,解析为数字。该参数不消费命令文本,而是从事件中的 `reply` 分段读取;未引用消息时必填参数会报错,且不能声明默认值。引用消息发送命令时,`raw_message` 开头的 `[CQ:reply,...]` 会被忽略,命令仍能正常匹配。
262
263
  - `[...rest]`:把剩余 token 依次收集为字符串;只能放在最后,且没有必填形式。
263
264
 
265
+ `string` 和 `text` 可以在类型后追加长度限制,按 Unicode 码点计数,区间两端都包含:
266
+
267
+ ```ts
268
+ params: '<message:text(2..200)> [nickname:string(..16)]'
269
+ ```
270
+
271
+ - `(..10)`:最多 10 个字符。
272
+ - `(2..)`:至少 2 个字符。
273
+ - `(2..10)`:2 到 10 个字符。
274
+ - 只能用于 `string` / `text`;其他类型和 `[...rest]` 会报声明错误。
275
+ - 默认值也会在注册时校验;usage 不会显示长度限制。
276
+
264
277
  固定参数可以用双引号或单引号包裹,例如 `/ask "hello world" 2` 会把 `hello world` 作为一个 token;引号内的反斜杠用于转义。
265
278
 
266
279
  解析规则:
267
280
 
268
281
  - `match.args` 和 `match.rest` 保持原始内容,不会被参数解析结果替换。
269
282
  - 声明槽位填完后,多余 token 会被忽略并记录 debug 日志,不会报错。`text` 和 `rest` 会消费全部剩余输入,因此不存在多余 token。
270
- - 必填参数缺失、已声明槽位类型错误或引号未闭合时,Router 会自动回复错误和用法,handler 不会执行。
283
+ - 必填参数缺失、已声明槽位类型错误、长度不符合限制或引号未闭合时,Router 会自动回复错误和用法,handler 不会执行。
271
284
  - usage 会自动生成,并显示在 `/help` 和指令组根命令的用法提示中。
272
- - 必填参数不能出现在可选参数之后;参数名不能重复;`text` 和变长参数必须放在最后;必填参数不能声明默认值。
285
+ - 必填参数不能出现在可选参数之后;参数名不能重复;`text` 和变长参数必须放在最后;必填参数不能声明默认值;长度限制只能用于 `string` / `text`,上下限必须是非负整数且下限不能大于上限。
273
286
  - 当 `params` 是字符串字面量时,handler 从第四个参数开始的位置参数类型会自动推导。例如 `<question:string> [count:integer=1]` 会推导为 `(question: string, count: number)`,`[name:string]` 会推导为 `string | undefined`,`[...rest]` 会推导为 `...string[]`。
274
287
  - 需要在类型位置复用推导结果时,可以使用导出的 `CommandParamArgs<'<question:string>'>`。
275
288
  - 也可以继续手写 handler 参数注解;注解与声明不一致时会在编译期报错。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsbot-tellus/core",
3
- "version": "2.5.1",
3
+ "version": "2.6.0",
4
4
  "engines": {
5
5
  "node": "^24.22.1 || >=26.12.1"
6
6
  },
@@ -1,11 +1,18 @@
1
1
  import {
2
2
  declarationError,
3
3
  type CommandParamType,
4
+ type ParamLength,
4
5
  type ParamSpec,
5
6
  } from './types.js'
6
- import { parseBoolean, parseTimeValue, unquote } from './values.js'
7
+ import {
8
+ measureLength,
9
+ parseBoolean,
10
+ parseTimeValue,
11
+ unquote,
12
+ } from './values.js'
7
13
 
8
14
  const NAME_PATTERN = /^[\p{L}_][\p{L}\p{N}_-]*$/u
15
+ const LENGTH_PATTERN = /^(\d*)\.\.(\d*)$/
9
16
 
10
17
  export function parseType(value: string): CommandParamType {
11
18
  switch (value) {
@@ -23,6 +30,90 @@ export function parseType(value: string): CommandParamType {
23
30
  }
24
31
  }
25
32
 
33
+ interface ParsedType {
34
+ type: CommandParamType
35
+ length?: ParamLength | undefined
36
+ }
37
+
38
+ function parseLengthNumber(raw: string, token: string): number {
39
+ const value = Number(raw)
40
+
41
+ if (!Number.isSafeInteger(value)) {
42
+ throw declarationError(`长度限制不是安全的整数:${token}`)
43
+ }
44
+
45
+ return value
46
+ }
47
+
48
+ function parseLength(raw: string, token: string): ParamLength {
49
+ const value = raw.trim()
50
+ const match = LENGTH_PATTERN.exec(value)
51
+
52
+ if (!match) {
53
+ throw declarationError(`非法的长度限制 "${raw}":${token}`)
54
+ }
55
+
56
+ const minRaw = match[1] ?? ''
57
+ const maxRaw = match[2] ?? ''
58
+
59
+ if (minRaw === '' && maxRaw === '') {
60
+ throw declarationError(`长度限制不能为空:${token}`)
61
+ }
62
+
63
+ const min = minRaw === '' ? undefined : parseLengthNumber(minRaw, token)
64
+ const max = maxRaw === '' ? undefined : parseLengthNumber(maxRaw, token)
65
+
66
+ if (min !== undefined && max !== undefined && min > max) {
67
+ throw declarationError(`长度下限不能大于上限:${token}`)
68
+ }
69
+
70
+ return { min, max }
71
+ }
72
+
73
+ function parseTypeDeclaration(raw: string, token: string): ParsedType {
74
+ const value = raw.trim()
75
+ const open = value.indexOf('(')
76
+
77
+ if (open < 0) {
78
+ return { type: parseType(value) }
79
+ }
80
+
81
+ if (!value.endsWith(')')) {
82
+ throw declarationError(`非法的参数声明 "${token}"`)
83
+ }
84
+
85
+ const type = parseType(value.slice(0, open).trim())
86
+ const length = parseLength(value.slice(open + 1, -1), token)
87
+
88
+ if (type !== 'string' && type !== 'text') {
89
+ throw declarationError(`只有 string/text 参数支持长度限制:${token}`)
90
+ }
91
+
92
+ return { type, length }
93
+ }
94
+
95
+ function validateDefaultLength(
96
+ name: string,
97
+ value: string,
98
+ length: ParamLength | undefined
99
+ ): void {
100
+ if (length === undefined) return
101
+
102
+ const measured = measureLength(value)
103
+
104
+ if (length.min !== undefined && measured < length.min) {
105
+ throw declarationError(
106
+ `参数 ${name} 的默认值至少需要 ${length.min} 个字符`
107
+ )
108
+ }
109
+
110
+ if (length.max !== undefined && measured > length.max) {
111
+ throw declarationError(
112
+ `参数 ${name} 的默认值不能超过 ${length.max} 个字符`
113
+ )
114
+ }
115
+ }
116
+
26
117
  export function validateName(value: string): string {
27
118
  const name = value.trim()
28
119
 
@@ -120,7 +211,13 @@ export function parseToken(token: string): ParamSpec {
120
211
  throw declarationError('变长参数必须使用 [ ]')
121
212
  }
122
213
 
123
- const name = validateName(inner.slice(3))
214
+ const rest = inner.slice(3)
215
+
216
+ if (rest.includes('(')) {
217
+ throw declarationError(`变长参数不支持长度限制:${token}`)
218
+ }
219
+
220
+ const name = validateName(rest)
124
221
 
125
222
  return {
126
223
  name,
@@ -140,20 +237,30 @@ export function parseToken(token: string): ParamSpec {
140
237
  const defaultRaw = equals >= 0 ? inner.slice(equals + 1).trim() : undefined
141
238
  const colon = head.indexOf(':')
142
239
  const name = validateName(colon >= 0 ? head.slice(0, colon) : head)
143
- const type = parseType(colon >= 0 ? head.slice(colon + 1).trim() : 'string')
240
+ const { type, length } = parseTypeDeclaration(
241
+ colon >= 0 ? head.slice(colon + 1) : 'string',
242
+ token
243
+ )
144
244
 
145
245
  if (required && defaultRaw !== undefined) {
146
246
  throw declarationError(`必填参数不能有默认值:${token}`)
147
247
  }
148
248
 
149
249
  if (defaultRaw !== undefined) {
250
+ const defaultValue = parseDefaultValue(type, defaultRaw, name)
251
+
252
+ if (typeof defaultValue === 'string') {
253
+ validateDefaultLength(name, defaultValue, length)
254
+ }
255
+
150
256
  return {
151
257
  name,
152
258
  type,
153
259
  required,
154
260
  rest: false,
155
261
  hasDefault: true,
156
- defaultValue: parseDefaultValue(type, defaultRaw, name),
262
+ defaultValue,
263
+ length,
157
264
  }
158
265
  }
159
266
 
@@ -163,6 +270,7 @@ export function parseToken(token: string): ParamSpec {
163
270
  required,
164
271
  rest: false,
165
272
  hasDefault: false,
273
+ length,
166
274
  }
167
275
  }
168
276
 
@@ -4,7 +4,7 @@ import {
4
4
  type ParamSpec,
5
5
  type ParsedCommandParams,
6
6
  } from './types.js'
7
- import { parseAt, parseBoolean, parseTime } from './values.js'
7
+ import { measureLength, parseAt, parseBoolean, parseTime } from './values.js'
8
8
 
9
9
  export function tokenizeInput(input: string, usage: string): InputToken[] {
10
10
  const tokens: InputToken[] = []
@@ -101,6 +101,32 @@ export function tokenizeInput(input: string, usage: string): InputToken[] {
101
101
  return tokens
102
102
  }
103
103
 
104
+ function enforceLength(spec: ParamSpec, value: string, usage: string): string {
105
+ const length = spec.length
106
+
107
+ if (length === undefined) {
108
+ return value
109
+ }
110
+
111
+ const measured = measureLength(value)
112
+
113
+ if (length.min !== undefined && measured < length.min) {
114
+ throw new CommandParamsError(
115
+ `参数 ${spec.name} 至少需要 ${length.min} 个字符`,
116
+ usage
117
+ )
118
+ }
119
+
120
+ if (length.max !== undefined && measured > length.max) {
121
+ throw new CommandParamsError(
122
+ `参数 ${spec.name} 不能超过 ${length.max} 个字符`,
123
+ usage
124
+ )
125
+ }
126
+
127
+ return value
128
+ }
129
+
104
130
  export function parseValue(
105
131
  spec: ParamSpec,
106
132
  raw: string,
@@ -108,6 +134,7 @@ export function parseValue(
108
134
  ): unknown {
109
135
  switch (spec.type) {
110
136
  case 'string':
137
+ return enforceLength(spec, raw, usage)
111
138
  case 'text':
112
139
  return raw
113
140
  case 'number': {
@@ -218,7 +245,7 @@ export function parseInput(
218
245
  const value =
219
246
  remaining === 1 ? token.value : input.slice(token.start).trim()
220
247
 
221
- args.push(value)
248
+ args.push(enforceLength(spec, value, usage))
222
249
  index = tokens.length
223
250
  continue
224
251
  }
@@ -8,12 +8,16 @@ type TrimRight<Source extends string> =
8
8
 
9
9
  type Trim<Source extends string> = TrimLeft<TrimRight<Source>>
10
10
 
11
+ type StripLength<Type extends string> =
12
+ Trim<Type> extends `${infer Base}(${string})` ? Trim<Base> : Trim<Type>
13
+
11
14
  type ParamValue<Type extends string> =
12
- Trim<Type> extends 'string' | 'text'
15
+ StripLength<Type> extends 'string' | 'text'
13
16
  ? string
14
- : Trim<Type> extends 'number' | 'integer' | 'at' | 'reply' | 'time'
17
+ : StripLength<Type> extends
18
+ 'number' | 'integer' | 'at' | 'reply' | 'time'
15
19
  ? number
16
- : Trim<Type> extends 'boolean'
20
+ : StripLength<Type> extends 'boolean'
17
21
  ? boolean
18
22
  : unknown
19
23
 
@@ -30,6 +30,11 @@ export class CommandParamsError extends Error {
30
30
  }
31
31
  }
32
32
 
33
+ export interface ParamLength {
34
+ min?: number | undefined
35
+ max?: number | undefined
36
+ }
37
+
33
38
  export interface ParamSpec {
34
39
  name: string
35
40
  type: CommandParamType
@@ -37,6 +42,7 @@ export interface ParamSpec {
37
42
  rest: boolean
38
43
  hasDefault: boolean
39
44
  defaultValue?: unknown
45
+ length?: ParamLength | undefined
40
46
  }
41
47
 
42
48
  export interface InputToken {
@@ -37,6 +37,10 @@ export function unquote(value: string): string {
37
37
  return result
38
38
  }
39
39
 
40
+ export function measureLength(value: string): number {
41
+ return Array.from(value).length
42
+ }
43
+
40
44
  export function parseBoolean(value: string): boolean | null {
41
45
  const normalized = value.trim().toLowerCase()
42
46