@moltzap/protocol 2026.502.1 → 2026.503.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":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GACnB,OAAO,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,CACxE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,WAEtC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,SAAuC,CAAC;AAEnE;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B;IACD,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAOA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAElC,wBAAgB,aAAa,CAC3B,SAAS,EAAE,sBAAsB,EACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,iBAAiB,GACtB;IACD,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,sBAAsB,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAQA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA6CvE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GACnB,OAAO,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,CACxE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,WAEtC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,SAAuC,CAAC;AAEnE;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B;IACD,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAOA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAElC,wBAAgB,aAAa,CAC3B,SAAS,EAAE,sBAAsB,EACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,iBAAiB,GACtB;IACD,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,sBAAsB,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAQA"}
package/dist/helpers.js CHANGED
@@ -1,4 +1,38 @@
1
- import { Type } from "@sinclair/typebox";
1
+ import { FormatRegistry, Type } from "@sinclair/typebox";
2
+ /**
3
+ * Register the string formats this protocol uses with TypeBox's
4
+ * `FormatRegistry` as a side effect at module load. Without this,
5
+ * `Value.Decode` against any schema that uses `format: "uuid"` (and friends)
6
+ * fails with `Unknown format uuid` and every frame is rejected — see #370.
7
+ *
8
+ * Registering here makes downstream consumers correct by construction:
9
+ * importing anything from `@moltzap/protocol` registers the formats, even
10
+ * via dynamic-import paths that never reach a bin entrypoint.
11
+ *
12
+ * `FormatRegistry` is a process-global, so we gate on `Has(...)` to avoid
13
+ * clobbering a consumer-provided stricter validator that ran before us.
14
+ */
15
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
16
+ // Shape filter for RFC 3339 / ISO 8601. We pair it with `Date.parse` so
17
+ // values like "2026-99-99T99:99:99Z" — shape-valid but semantically
18
+ // impossible — also reject.
19
+ const DATE_TIME_RE = /^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/;
20
+ // Liberal URI matcher: scheme + ":" + non-whitespace remainder. Tighter
21
+ // validation (e.g., authority parsing) lives in the consumer if needed.
22
+ const URI_RE = /^[A-Za-z][A-Za-z0-9+.-]*:\S+$/;
23
+ if (!FormatRegistry.Has("uuid")) {
24
+ FormatRegistry.Set("uuid", (value) => typeof value === "string" && UUID_RE.test(value));
25
+ }
26
+ if (!FormatRegistry.Has("date-time")) {
27
+ FormatRegistry.Set("date-time", (value) => {
28
+ if (typeof value !== "string" || !DATE_TIME_RE.test(value))
29
+ return false;
30
+ return Number.isFinite(Date.parse(value));
31
+ });
32
+ }
33
+ if (!FormatRegistry.Has("uri")) {
34
+ FormatRegistry.Set("uri", (value) => typeof value === "string" && URI_RE.test(value));
35
+ }
2
36
  /**
3
37
  * Creates a string enum schema without producing anyOf (which some validators reject).
4
38
  * Uses Type.String + enum constraint (Kind="String") so TypeBox's Value.Decode
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,mBAAmB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAqB,MAAc;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAoC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,IAA8B;IAO9B,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,OAAO;QACb,KAAK;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAwBD,MAAM,UAAU,aAAa,CAC3B,SAAiC,EACjC,EAAU,EACV,IAAuB;IASvB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,UAAU;QAChB,SAAS;QACT,EAAE;QACF,GAAG,IAAI;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAgB,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,GACX,iEAAiE,CAAC;AACpE,wEAAwE;AACxE,oEAAoE;AACpE,4BAA4B;AAC5B,MAAM,YAAY,GAChB,qEAAqE,CAAC;AACxE,wEAAwE;AACxE,wEAAwE;AACxE,MAAM,MAAM,GAAG,+BAA+B,CAAC;AAE/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,cAAc,CAAC,GAAG,CAChB,MAAM,EACN,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAC5D,CAAC;AACJ,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;IACrC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,cAAc,CAAC,GAAG,CAChB,KAAK,EACL,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAqB,MAAc;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAoC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,IAA8B;IAO9B,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,OAAO;QACb,KAAK;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAwBD,MAAM,UAAU,aAAa,CAC3B,SAAiC,EACjC,EAAU,EACV,IAAuB;IASvB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,UAAU;QAChB,SAAS;QACT,EAAE;QACF,GAAG,IAAI;KACR,CAAC;AACJ,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const PROTOCOL_VERSION = "2026.502.1";
1
+ export declare const PROTOCOL_VERSION = "2026.503.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Auto-bumped by publish workflow
2
- export const PROTOCOL_VERSION = "2026.502.1";
2
+ export const PROTOCOL_VERSION = "2026.503.0";
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moltzap/protocol",
3
- "version": "2026.502.1",
3
+ "version": "2026.503.0",
4
4
  "description": "Protocol types and validators for MoltZap messaging",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {