@fraqjs/fraq 0.10.1 → 0.10.3

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.
package/dist/index.d.mts CHANGED
@@ -5486,6 +5486,8 @@ declare class Parameter<T> {
5486
5486
  description?: string;
5487
5487
  constructor(capturer: Capturer<T>);
5488
5488
  describe(description: string): this;
5489
+ refine<U extends T>(predicate: (value: T) => value is U): Parameter<U>;
5490
+ refine(predicate: (value: T) => boolean): Parameter<T>;
5489
5491
  }
5490
5492
  declare namespace param {
5491
5493
  function literal<T extends string>(literal: T): Parameter<T>;
package/dist/index.mjs CHANGED
@@ -241,6 +241,16 @@ var CommandBuilder = class {
241
241
  };
242
242
  //#endregion
243
243
  //#region src/routing/tokenizer.ts
244
+ const WHITESPACE_CHARS = new Set([
245
+ " ",
246
+ " ",
247
+ "\n",
248
+ "\r",
249
+ "\v",
250
+ "\f",
251
+ "\xA0",
252
+ " "
253
+ ]);
244
254
  var Tokenizer = class {
245
255
  segments;
246
256
  offset = 0;
@@ -353,12 +363,12 @@ var Tokenizer = class {
353
363
  }
354
364
  findTextTokenStart(text, from) {
355
365
  let offset = from;
356
- while (offset < text.length && text[offset] === " ") offset += 1;
366
+ while (offset < text.length && WHITESPACE_CHARS.has(text[offset])) offset += 1;
357
367
  return offset;
358
368
  }
359
369
  readTextToken(text, from) {
360
370
  let offset = from;
361
- while (offset < text.length && text[offset] !== " ") offset += 1;
371
+ while (offset < text.length && !WHITESPACE_CHARS.has(text[offset])) offset += 1;
362
372
  return text.slice(from, offset);
363
373
  }
364
374
  };
@@ -1219,7 +1229,7 @@ const milkyVersion = "1.3";
1219
1229
  const milkyPackageVersion = "1.3.0-rc.1";
1220
1230
  //#endregion
1221
1231
  //#region src/routing/parameter.ts
1222
- var Parameter = class {
1232
+ var Parameter = class Parameter {
1223
1233
  capturer;
1224
1234
  description;
1225
1235
  constructor(capturer) {
@@ -1229,6 +1239,18 @@ var Parameter = class {
1229
1239
  this.description = description;
1230
1240
  return this;
1231
1241
  }
1242
+ refine(predicate) {
1243
+ const capturer = this.capturer;
1244
+ const refined = new Parameter({
1245
+ typeInstruction: capturer.typeInstruction,
1246
+ capture(tokenizer) {
1247
+ const value = capturer.capture(tokenizer);
1248
+ if (value === void 0 || predicate(value)) return value;
1249
+ }
1250
+ });
1251
+ refined.description = this.description;
1252
+ return refined;
1253
+ }
1232
1254
  };
1233
1255
  let param;
1234
1256
  (function(_param) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fraqjs/fraq",
3
3
  "type": "module",
4
- "version": "0.10.1",
4
+ "version": "0.10.3",
5
5
  "description": "Milky Bot framework",
6
6
  "files": [
7
7
  "dist"