@geometra/router 1.10.9 → 1.12.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.
package/dist/path.d.ts CHANGED
@@ -15,8 +15,9 @@ export type PathParams<Path extends string> = {
15
15
  * dynamic `:id` and optional `:id?` are filled from `params`; splat `*rest` (or a lone `*`, key `'*'`)
16
16
  * inserts the remainder with internal slashes preserved (slashes are not percent-encoded; string values are still
17
17
  * passed through `String.prototype.toWellFormed` so lone surrogates match `:param` / query parity). For optional segments, `null`, `undefined`,
18
- * empty string, a non-finite number (`NaN`, `±Infinity`), or a `BigInt` omits the segment (same as leaving the key unset).
19
- * Required dynamic and splat params throw when missing, empty, non-finite numeric, or `BigInt`. `:param` values are
18
+ * empty string, a non-finite number (`NaN`, `±Infinity`), a `BigInt`, or any value that is not a primitive
19
+ * string or finite number (`boolean`, boxed numbers, plain objects, symbols, …) omits the segment (same as leaving the key unset).
20
+ * Required dynamic and splat params throw when missing, empty, or when the value fails that scalar guard. `:param` values are
20
21
  * percent-encoded after `String.prototype.toWellFormed` (parity with `stringifyQuery` in `query.ts`).
21
22
  * Leading and trailing slashes on `pattern` are trimmed before building.
22
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,IAAI,SAAS,MAAM,IACvC,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GACtC,gBAAgB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAC/C,IAAI,SAAS,IAAI,MAAM,KAAK,GAAG,GAC7B,KAAK,GACL,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,KAAK,GACL,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,CAAC,KAAK,SAAS,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,GAChC,KAAK,CAAA;AAEjB,KAAK,wBAAwB,CAAC,IAAI,SAAS,MAAM,IAC/C,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GACtC,wBAAwB,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAC/D,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,CAAC,KAAK,SAAS,GAAG,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,GAC5C,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,CAAC,KAAK,SAAS,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,GAChC,KAAK,CAAA;AAEf,KAAK,wBAAwB,CAAC,IAAI,SAAS,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAA;AAEpH;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,IAAI,SAAS,MAAM,IAAI;KAC3C,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM;CACvD,GAAG;KACD,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CACxD,CAAA;AA0BD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAkC9F"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,IAAI,SAAS,MAAM,IACvC,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GACtC,gBAAgB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAC/C,IAAI,SAAS,IAAI,MAAM,KAAK,GAAG,GAC7B,KAAK,GACL,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,KAAK,GACL,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,CAAC,KAAK,SAAS,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,GAChC,KAAK,CAAA;AAEjB,KAAK,wBAAwB,CAAC,IAAI,SAAS,MAAM,IAC/C,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GACtC,wBAAwB,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAC/D,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,CAAC,KAAK,SAAS,GAAG,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,GAC5C,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GAC5B,CAAC,KAAK,SAAS,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,GAChC,KAAK,CAAA;AAEf,KAAK,wBAAwB,CAAC,IAAI,SAAS,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAA;AAEpH;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,IAAI,SAAS,MAAM,IAAI;KAC3C,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM;CACvD,GAAG;KACD,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CACxD,CAAA;AA+BD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAkC9F"}
package/dist/path.js CHANGED
@@ -11,23 +11,30 @@ function wellFormedSplatRemainder(value) {
11
11
  const raw = typeof value === 'string' ? value.toWellFormed() : String(value);
12
12
  return trimSlashes(raw);
13
13
  }
14
- /** True when a param value should participate in the path (non-finite numbers and `bigint` omitted; mirrors `stringifyQuery` in `query.ts`). */
14
+ /**
15
+ * True when a param value should participate in the path. Only **primitive** `string` and finite
16
+ * `number` count — same scalar guard as {@link import('./query.js').stringifyQuery} (no `boolean`,
17
+ * boxed numbers, objects, symbols, `bigint`, or non-finite doubles).
18
+ */
15
19
  function paramValuePresent(value) {
16
20
  if (value == null || value === '')
17
21
  return false;
18
22
  if (typeof value === 'bigint')
19
23
  return false;
20
- if (typeof value === 'number' && !Number.isFinite(value))
21
- return false;
22
- return true;
24
+ if (typeof value === 'number')
25
+ return Number.isFinite(value);
26
+ if (typeof value === 'string')
27
+ return true;
28
+ return false;
23
29
  }
24
30
  /**
25
31
  * Build a pathname from a route pattern and {@link PathParams}. Static segments are copied as-is;
26
32
  * dynamic `:id` and optional `:id?` are filled from `params`; splat `*rest` (or a lone `*`, key `'*'`)
27
33
  * inserts the remainder with internal slashes preserved (slashes are not percent-encoded; string values are still
28
34
  * passed through `String.prototype.toWellFormed` so lone surrogates match `:param` / query parity). For optional segments, `null`, `undefined`,
29
- * empty string, a non-finite number (`NaN`, `±Infinity`), or a `BigInt` omits the segment (same as leaving the key unset).
30
- * Required dynamic and splat params throw when missing, empty, non-finite numeric, or `BigInt`. `:param` values are
35
+ * empty string, a non-finite number (`NaN`, `±Infinity`), a `BigInt`, or any value that is not a primitive
36
+ * string or finite number (`boolean`, boxed numbers, plain objects, symbols, …) omits the segment (same as leaving the key unset).
37
+ * Required dynamic and splat params throw when missing, empty, or when the value fails that scalar guard. `:param` values are
31
38
  * percent-encoded after `String.prototype.toWellFormed` (parity with `stringifyQuery` in `query.ts`).
32
39
  * Leading and trailing slashes on `pattern` are trimmed before building.
33
40
  */
package/dist/path.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geometra/router",
3
- "version": "1.10.9",
3
+ "version": "1.12.0",
4
4
  "description": "Routing primitives for Geometra",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,6 +34,6 @@
34
34
  "check": "tsc --noEmit"
35
35
  },
36
36
  "dependencies": {
37
- "@geometra/core": "^1.10.9"
37
+ "@geometra/core": "^1.12.0"
38
38
  }
39
39
  }