zodvex 0.7.2-beta.0 → 0.7.2

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.
@@ -20,4 +20,15 @@ export type ZodvexModelMeta = {
20
20
  export type ZodvexMeta = ZodvexFunctionMeta | ZodvexModelMeta;
21
21
  export declare function attachMeta(target: object, meta: ZodvexMeta): void;
22
22
  export declare function readMeta(target: unknown): ZodvexMeta | undefined;
23
+ /**
24
+ * Attaches a provenance brand to a codec instance. Codegen reads this at
25
+ * discovery time to match a function-embedded codec to its importable twin
26
+ * by *declared* identity instead of inferring it from structure. Stored
27
+ * non-enumerably so it never leaks into user data, and survives
28
+ * `.optional()` / `.nullable()` wrapping (codegen unwraps to the codec).
29
+ * See `docs/decisions/2026-06-08-codec-provenance-brands.md`.
30
+ */
31
+ export declare function attachCodecBrand(target: object, brand: string): void;
32
+ /** Reads a codec's provenance brand, or undefined if unbranded. */
33
+ export declare function readCodecBrand(target: unknown): string | undefined;
23
34
  //# sourceMappingURL=meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/internal/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAI1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,UAAU,CAAC,EAAE,QAAQ,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,2BAA2B,CAAA;IAC9C,OAAO,CAAC,EAAE;QACR,GAAG,EAAE,QAAQ,CAAA;QACb,MAAM,EAAE,QAAQ,CAAA;QAChB,MAAM,EAAE,QAAQ,CAAA;QAChB,QAAQ,EAAE,QAAQ,CAAA;QAClB,YAAY,EAAE,QAAQ,CAAA;KACvB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAE7D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAOjE;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAKhE"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/internal/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAI1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,UAAU,CAAC,EAAE,QAAQ,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,2BAA2B,CAAA;IAC9C,OAAO,CAAC,EAAE;QACR,GAAG,EAAE,QAAQ,CAAA;QACb,MAAM,EAAE,QAAQ,CAAA;QAChB,MAAM,EAAE,QAAQ,CAAA;QAChB,QAAQ,EAAE,QAAQ,CAAA;QAClB,YAAY,EAAE,QAAQ,CAAA;KACvB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAE7D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAOjE;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAKhE;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAOpE;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIlE"}
@@ -77,6 +77,13 @@ declare function id<TableName extends string>(tableName: TableName): ZxId<TableN
77
77
  * @param wire - Zod schema for the wire format (stored in Convex)
78
78
  * @param runtime - Zod schema for the runtime format (used in code)
79
79
  * @param transforms - Encode/decode functions
80
+ * @param opts.brand - Optional provenance brand. When set, codegen matches a
81
+ * function-embedded instance of this codec to its importable twin (an
82
+ * exported const or model field with the same brand) by *declared* identity
83
+ * rather than inferring it from structure — collision-free and namespaced
84
+ * across factories. Useful for codec factories like `tagged()` / `sensitive()`
85
+ * whose every call returns a fresh instance. See
86
+ * `docs/decisions/2026-06-08-codec-provenance-brands.md`.
80
87
  *
81
88
  * @example
82
89
  * ```typescript
@@ -89,11 +96,18 @@ declare function id<TableName extends string>(tableName: TableName): ZxId<TableN
89
96
  * encode: (value) => ({ encrypted: encrypt(value) })
90
97
  * }
91
98
  * )
99
+ *
100
+ * // Branded factory codec — codegen matches inline instances by brand
101
+ * function tagged(inner, name) {
102
+ * return zx.codec(wire(inner), runtime(inner), transforms, { brand: `tagged:${name}` })
103
+ * }
92
104
  * ```
93
105
  */
94
106
  declare function codec<W extends $ZodType, R extends $ZodType, WO = zoutput<W>, RI = zoutput<R>>(wire: W, runtime: R, transforms: {
95
107
  decode: (wire: WO) => RI;
96
108
  encode: (runtime: RI) => WO;
109
+ }, opts?: {
110
+ brand?: string;
97
111
  }): FullZodvexCodec<W, R>;
98
112
  /**
99
113
  * Minimal model shape accepted by zx helpers.
@@ -1 +1 @@
1
- {"version":3,"file":"zx.d.ts","sourceRoot":"","sources":["../../src/internal/zx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,UAAU,EAEf,KAAK,QAAQ,EAEb,KAAK,MAAM,IAAI,OAAO,EACvB,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACpF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEnB,MAAM,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAExE;;;;;;;;;;;;;GAaG;AACH,iBAAS,IAAI,IAAI,MAAM,CAWtB;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,CAAC,SAAS,SAAS,MAAM,IAAI,CAAC,CAAC,SAAS,GACtD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG;IAChC,UAAU,EAAE,SAAS,CAAA;CACtB,CAAA;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,EAAE,CAAC,SAAS,SAAS,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAoB3E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAS,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EACrF,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,UAAU,EAAE;IACV,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAA;IACxB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAA;CAC5B,GACA,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAEvB;AAED;;;GAGG;AACH,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAiDD;;;;;;;GAOG;AACH,iBAAS,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAY3C;AAED;;;GAGG;AACH,iBAAS,GAAG,CAAC,KAAK,EAAE,YAAY,OAS/B;AAED;;;GAGG;AACH,iBAAS,MAAM,CAAC,KAAK,EAAE,YAAY,OASlC;AAED;;;GAGG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,YAAY,OASpC;AAiBD;;GAEG;AACH,iBAAS,cAAc;;;;;;;kBAStB;AAED;;GAEG;AACH,iBAAS,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,CAAC;;;;;;kBAQ1D;AAED;;;;GAIG;AACH,eAAO,MAAM,EAAE;IACb;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;CAEK,CAAA"}
1
+ {"version":3,"file":"zx.d.ts","sourceRoot":"","sources":["../../src/internal/zx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,UAAU,EAEf,KAAK,QAAQ,EAEb,KAAK,MAAM,IAAI,OAAO,EACvB,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACpF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEnB,MAAM,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAExE;;;;;;;;;;;;;GAaG;AACH,iBAAS,IAAI,IAAI,MAAM,CAWtB;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,CAAC,SAAS,SAAS,MAAM,IAAI,CAAC,CAAC,SAAS,GACtD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG;IAChC,UAAU,EAAE,SAAS,CAAA;CACtB,CAAA;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,EAAE,CAAC,SAAS,SAAS,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAoB3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,iBAAS,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EACrF,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EACV,UAAU,EAAE;IACV,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAA;IACxB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAA;CAC5B,EACD,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAIvB;AAED;;;GAGG;AACH,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAiDD;;;;;;;GAOG;AACH,iBAAS,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAY3C;AAED;;;GAGG;AACH,iBAAS,GAAG,CAAC,KAAK,EAAE,YAAY,OAS/B;AAED;;;GAGG;AACH,iBAAS,MAAM,CAAC,KAAK,EAAE,YAAY,OASlC;AAED;;;GAGG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,YAAY,OASpC;AAiBD;;GAEG;AACH,iBAAS,cAAc;;;;;;;kBAStB;AAED;;GAEG;AACH,iBAAS,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,UAAU,EAAE,CAAC;;;;;;kBAQ1D;AAED;;;;GAIG;AACH,eAAO,MAAM,EAAE;IACb;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;CAEK,CAAA"}
@@ -442,6 +442,15 @@ function attachMeta(target, meta) {
442
442
  configurable: false
443
443
  });
444
444
  }
445
+ var CODEC_BRAND_KEY = "__zodvexCodecBrand";
446
+ function attachCodecBrand(target, brand) {
447
+ Object.defineProperty(target, CODEC_BRAND_KEY, {
448
+ value: brand,
449
+ enumerable: false,
450
+ writable: false,
451
+ configurable: false
452
+ });
453
+ }
445
454
  function containsNativeZodDate(schema) {
446
455
  if (schema instanceof $ZodDate) return true;
447
456
  if (schema instanceof $ZodCodec) return false;
@@ -846,8 +855,10 @@ function id(tableName) {
846
855
  branded._tableName = tableName;
847
856
  return branded;
848
857
  }
849
- function codec(wire, runtime, transforms) {
850
- return zodvexCodec(wire, runtime, transforms);
858
+ function codec(wire, runtime, transforms, opts) {
859
+ const built = zodvexCodec(wire, runtime, transforms);
860
+ if (opts?.brand) attachCodecBrand(built, opts.brand);
861
+ return built;
851
862
  }
852
863
  function sharedWeakMap(name) {
853
864
  const key = /* @__PURE__ */ Symbol.for(`zodvex.zx.cache.${name}`);