@umpire/zod 0.1.0-alpha.6

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.
@@ -0,0 +1,16 @@
1
+ import type { AvailabilityMap, FieldDef } from '@umpire/core';
2
+ export type NormalizedFieldError = {
3
+ field: string;
4
+ message: string;
5
+ };
6
+ type ZodIssueLike = {
7
+ path: readonly (string | number)[];
8
+ message: string;
9
+ };
10
+ type ZodErrorLike = {
11
+ issues: readonly ZodIssueLike[];
12
+ };
13
+ export declare function activeErrors<F extends Record<string, FieldDef>>(availability: AvailabilityMap<F>, errors: NormalizedFieldError[]): Partial<Record<keyof F & string, string>>;
14
+ export declare function zodErrors(error: ZodErrorLike): NormalizedFieldError[];
15
+ export {};
16
+ //# sourceMappingURL=active-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-errors.d.ts","sourceRoot":"","sources":["../src/active-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAClC,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;CAChC,CAAA;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC7D,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,EAChC,MAAM,EAAE,oBAAoB,EAAE,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAW3C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,oBAAoB,EAAE,CAKrE"}
@@ -0,0 +1,17 @@
1
+ export function activeErrors(availability, errors) {
2
+ const result = {};
3
+ for (const error of errors) {
4
+ const field = error.field;
5
+ if (availability[field]?.enabled && result[field] === undefined) {
6
+ result[field] = error.message;
7
+ }
8
+ }
9
+ return result;
10
+ }
11
+ export function zodErrors(error) {
12
+ return error.issues.map((issue) => ({
13
+ field: String(issue.path[0] ?? ''),
14
+ message: issue.message,
15
+ }));
16
+ }
17
+ //# sourceMappingURL=active-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-errors.js","sourceRoot":"","sources":["../src/active-errors.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,YAAY,CAC1B,YAAgC,EAChC,MAA8B;IAE9B,MAAM,MAAM,GAA8C,EAAE,CAAA;IAE5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAyB,CAAA;QAC7C,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAmB;IAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC,CAAA;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { z } from 'zod';
2
+ import type { AvailabilityMap, FieldDef } from '@umpire/core';
3
+ type FieldSchemas<F extends Record<string, FieldDef>> = Partial<Record<keyof F & string, z.ZodTypeAny>>;
4
+ /**
5
+ * Pass per-field schemas directly, or use `yourSchema.shape` to extract
6
+ * them from an existing `z.object()`.
7
+ *
8
+ * ```ts
9
+ * // Per-field
10
+ * activeSchema(availability, { email: z.string().email() }, z)
11
+ *
12
+ * // From an existing z.object()
13
+ * activeSchema(availability, formSchema.shape, z)
14
+ * ```
15
+ */
16
+ export declare function activeSchema<F extends Record<string, FieldDef>>(availability: AvailabilityMap<F>, schemas: FieldSchemas<F>, zod: {
17
+ object(shape: Record<string, z.ZodTypeAny>): z.ZodObject<Record<string, z.ZodTypeAny>>;
18
+ }): z.ZodObject<Record<string, z.ZodTypeAny>>;
19
+ export {};
20
+ //# sourceMappingURL=active-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-schema.d.ts","sourceRoot":"","sources":["../src/active-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE7D,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,OAAO,CAC7D,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CACvC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC7D,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC,EAChC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,GAAG,EAAE;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;CACvF,GACA,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CA6B3C"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Pass per-field schemas directly, or use `yourSchema.shape` to extract
3
+ * them from an existing `z.object()`.
4
+ *
5
+ * ```ts
6
+ * // Per-field
7
+ * activeSchema(availability, { email: z.string().email() }, z)
8
+ *
9
+ * // From an existing z.object()
10
+ * activeSchema(availability, formSchema.shape, z)
11
+ * ```
12
+ */
13
+ export function activeSchema(availability, schemas, zod) {
14
+ // Catch the common mistake of passing a z.object() instead of its .shape
15
+ if ('_def' in schemas || '_zod' in schemas) {
16
+ throw new Error('[@umpire/zod] activeSchema() expects per-field schemas, not a z.object(). ' +
17
+ 'Pass formSchema.shape instead of formSchema.');
18
+ }
19
+ const fieldSchemas = schemas;
20
+ const shape = {};
21
+ for (const [field, status] of Object.entries(availability)) {
22
+ if (!status.enabled) {
23
+ continue;
24
+ }
25
+ const base = fieldSchemas[field];
26
+ if (!base) {
27
+ continue;
28
+ }
29
+ shape[field] = status.required ? base : base.optional();
30
+ }
31
+ return zod.object(shape);
32
+ }
33
+ //# sourceMappingURL=active-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-schema.js","sourceRoot":"","sources":["../src/active-schema.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAC1B,YAAgC,EAChC,OAAwB,EACxB,GAEC;IAED,yEAAyE;IACzE,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,4EAA4E;YAC5E,8CAA8C,CAC/C,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAA;IAE5B,MAAM,KAAK,GAAiC,EAAE,CAAA;IAE9C,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAExD,EAAE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAQ;QACV,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IACzD,CAAC;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { activeSchema } from './active-schema.js';
2
+ export { activeErrors, zodErrors } from './active-errors.js';
3
+ export type { NormalizedFieldError } from './active-errors.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { activeSchema } from './active-schema.js';
2
+ export { activeErrors, zodErrors } from './active-errors.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@umpire/zod",
3
+ "version": "0.1.0-alpha.6",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "test": "NODE_OPTIONS='--experimental-vm-modules' jest",
17
+ "typecheck": "tsc --noEmit"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ ".claude"
22
+ ],
23
+ "dependencies": {
24
+ "@umpire/core": "workspace:^"
25
+ },
26
+ "peerDependencies": {
27
+ "zod": "^3.0.0 || ^4.0.0"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/sdougbrown/umpire.git",
32
+ "directory": "packages/zod"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "devDependencies": {
38
+ "zod": "^3.23.8"
39
+ }
40
+ }