@xylabs/zod 5.0.42 → 5.0.44

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,6 +1,8 @@
1
1
  export * from './Config.ts';
2
2
  export * from './zodAllFactory.ts';
3
+ export * from './zodAsAsyncFactory.ts';
3
4
  export * from './zodAsFactory.ts';
4
5
  export * from './zodIsFactory.ts';
6
+ export * from './zodToAsyncFactory.ts';
5
7
  export * from './zodToFactory.ts';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA"}
@@ -4,7 +4,7 @@ function zodAsFactory(zod, name) {
4
4
  function asFunc(value, assert) {
5
5
  const result = zod.safeParse(value);
6
6
  if (result.success) {
7
- return result.data;
7
+ return value;
8
8
  }
9
9
  if (assert !== void 0) {
10
10
  let assertConfig;
@@ -53,10 +53,54 @@ function zodAllFactory(zod, name) {
53
53
  [`to${name}`]: zodToFactory(zod, `to${name}`)
54
54
  };
55
55
  }
56
+
57
+ // src/zodAsAsyncFactory.ts
58
+ import { assertError as assertError2 } from "@xylabs/error";
59
+ function zodAsAsyncFactory(zod, name) {
60
+ async function asFunc(value, assert) {
61
+ const result = await zod.safeParseAsync(value);
62
+ if (result.success) {
63
+ return value;
64
+ }
65
+ if (assert !== void 0) {
66
+ let assertConfig;
67
+ switch (typeof assert) {
68
+ case "string": {
69
+ assertConfig = `[${name}][${value}] ${assert}`;
70
+ break;
71
+ }
72
+ case "object": {
73
+ assertConfig = `[${name}][${assert.name}][${value}] ${result.error.message}`;
74
+ break;
75
+ }
76
+ case "boolean": {
77
+ assertConfig = `[${name}][${value}] ${result.error.message}`;
78
+ break;
79
+ }
80
+ case "function": {
81
+ assertConfig = assert(value, result.error.message);
82
+ break;
83
+ }
84
+ default: {
85
+ assertConfig = true;
86
+ }
87
+ }
88
+ return assertError2(value, assertConfig, result.error.message);
89
+ }
90
+ }
91
+ return asFunc;
92
+ }
93
+
94
+ // src/zodToAsyncFactory.ts
95
+ function zodToAsyncFactory(zod, name) {
96
+ return zodAsAsyncFactory(zod, name);
97
+ }
56
98
  export {
57
99
  zodAllFactory,
100
+ zodAsAsyncFactory,
58
101
  zodAsFactory,
59
102
  zodIsFactory,
103
+ zodToAsyncFactory,
60
104
  zodToFactory
61
105
  };
62
106
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/zodAsFactory.ts","../../src/zodIsFactory.ts","../../src/zodToFactory.ts","../../src/zodAllFactory.ts"],"sourcesContent":["import type { AssertConfig } from '@xylabs/error'\nimport { assertError } from '@xylabs/error'\nimport type z from 'zod'\n\nimport type { ZodFactoryConfig } from './Config.ts'\n\nexport function zodAsFactory<T>(zod: z.ZodType<T>, name: string) {\n function asFunc(value: unknown): T | undefined\n function asFunc(value: unknown, assert: ZodFactoryConfig): T\n function asFunc(value: unknown, assert?: ZodFactoryConfig): T | undefined {\n const result = zod.safeParse(value)\n if (result.success) {\n return result.data\n }\n if (assert !== undefined) {\n let assertConfig: AssertConfig\n switch (typeof assert) {\n case 'string': {\n assertConfig = `[${name}][${value}] ${assert}`\n break\n }\n case 'object': {\n assertConfig = `[${name}][${assert.name}][${value}] ${result.error.message}`\n break\n }\n case 'boolean': {\n assertConfig = `[${name}][${value}] ${result.error.message}`\n break\n }\n case 'function': {\n assertConfig = assert(value, result.error.message)\n break\n }\n default: {\n assertConfig = true\n }\n }\n return assertError(value, assertConfig, result.error.message)\n }\n }\n\n return asFunc\n}\n","import type z from 'zod'\n\nexport function zodIsFactory<TZod>(zod: z.ZodType<TZod>) {\n return <T>(value: T): value is T & TZod => zod.safeParse(value).success\n}\n","import type z from 'zod'\n\nimport { zodAsFactory } from './zodAsFactory.ts'\n\nexport function zodToFactory<T>(zod: z.ZodType<T>, name: string) {\n return zodAsFactory<T>(zod, name)\n}\n","import type z from 'zod'\n\nimport { zodAsFactory } from './zodAsFactory.ts'\nimport { zodIsFactory } from './zodIsFactory.ts'\nimport { zodToFactory } from './zodToFactory.ts'\n\n/** @alpha */\nexport type AllZodFactories<TType, TName extends string> = {\n [K in `is${TName}`]: ReturnType<typeof zodIsFactory<TType>>\n} & {\n [K in `as${TName}`]: ReturnType<typeof zodAsFactory<TType>>\n} & {\n [K in `to${TName}`]: ReturnType<typeof zodToFactory<TType>>\n}\n\n/** @alpha */\nexport function zodAllFactory<T, TName extends string>(zod: z.ZodType<T>, name: TName) {\n return {\n [`is${name}`]: zodIsFactory<T>(zod),\n [`as${name}`]: zodAsFactory<T>(zod, `as${name}`),\n [`to${name}`]: zodToFactory<T>(zod, `to${name}`),\n }\n}\n"],"mappings":";AACA,SAAS,mBAAmB;AAKrB,SAAS,aAAgB,KAAmB,MAAc;AAG/D,WAAS,OAAO,OAAgB,QAA0C;AACxE,UAAM,SAAS,IAAI,UAAU,KAAK;AAClC,QAAI,OAAO,SAAS;AAClB,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,WAAW,QAAW;AACxB,UAAI;AACJ,cAAQ,OAAO,QAAQ;AAAA,QACrB,KAAK,UAAU;AACb,yBAAe,IAAI,IAAI,KAAK,KAAK,KAAK,MAAM;AAC5C;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AACb,yBAAe,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,OAAO,MAAM,OAAO;AAC1E;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,yBAAe,IAAI,IAAI,KAAK,KAAK,KAAK,OAAO,MAAM,OAAO;AAC1D;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,yBAAe,OAAO,OAAO,OAAO,MAAM,OAAO;AACjD;AAAA,QACF;AAAA,QACA,SAAS;AACP,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,aAAO,YAAY,OAAO,cAAc,OAAO,MAAM,OAAO;AAAA,IAC9D;AAAA,EACF;AAEA,SAAO;AACT;;;ACxCO,SAAS,aAAmB,KAAsB;AACvD,SAAO,CAAI,UAAgC,IAAI,UAAU,KAAK,EAAE;AAClE;;;ACAO,SAAS,aAAgB,KAAmB,MAAc;AAC/D,SAAO,aAAgB,KAAK,IAAI;AAClC;;;ACUO,SAAS,cAAuC,KAAmB,MAAa;AACrF,SAAO;AAAA,IACL,CAAC,KAAK,IAAI,EAAE,GAAG,aAAgB,GAAG;AAAA,IAClC,CAAC,KAAK,IAAI,EAAE,GAAG,aAAgB,KAAK,KAAK,IAAI,EAAE;AAAA,IAC/C,CAAC,KAAK,IAAI,EAAE,GAAG,aAAgB,KAAK,KAAK,IAAI,EAAE;AAAA,EACjD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/zodAsFactory.ts","../../src/zodIsFactory.ts","../../src/zodToFactory.ts","../../src/zodAllFactory.ts","../../src/zodAsAsyncFactory.ts","../../src/zodToAsyncFactory.ts"],"sourcesContent":["import type { AssertConfig } from '@xylabs/error'\nimport { assertError } from '@xylabs/error'\nimport type z from 'zod'\n\nimport type { ZodFactoryConfig } from './Config.ts'\n\nexport function zodAsFactory<TZod>(zod: z.ZodType<TZod>, name: string) {\n function asFunc<T>(value: unknown): (T & TZod) | undefined\n function asFunc<T>(value: unknown, assert: ZodFactoryConfig): (T & TZod)\n function asFunc<T>(value: unknown, assert?: ZodFactoryConfig): (T & TZod) | undefined {\n const result = zod.safeParse(value)\n if (result.success) {\n return value as (T & TZod)\n }\n if (assert !== undefined) {\n let assertConfig: AssertConfig\n switch (typeof assert) {\n case 'string': {\n assertConfig = `[${name}][${value}] ${assert}`\n break\n }\n case 'object': {\n assertConfig = `[${name}][${assert.name}][${value}] ${result.error.message}`\n break\n }\n case 'boolean': {\n assertConfig = `[${name}][${value}] ${result.error.message}`\n break\n }\n case 'function': {\n assertConfig = assert(value, result.error.message)\n break\n }\n default: {\n assertConfig = true\n }\n }\n return assertError(value, assertConfig, result.error.message)\n }\n }\n\n return asFunc\n}\n","import type z from 'zod'\n\nexport function zodIsFactory<TZod>(zod: z.ZodType<TZod>) {\n return <T>(value: T): value is T & TZod => zod.safeParse(value).success\n}\n","import type z from 'zod'\n\nimport { zodAsFactory } from './zodAsFactory.ts'\n\nexport function zodToFactory<T>(zod: z.ZodType<T>, name: string) {\n return zodAsFactory<T>(zod, name)\n}\n","import type z from 'zod'\n\nimport { zodAsFactory } from './zodAsFactory.ts'\nimport { zodIsFactory } from './zodIsFactory.ts'\nimport { zodToFactory } from './zodToFactory.ts'\n\n/** @alpha */\nexport type AllZodFactories<TType, TName extends string> = {\n [K in `is${TName}`]: ReturnType<typeof zodIsFactory<TType>>\n} & {\n [K in `as${TName}`]: ReturnType<typeof zodAsFactory<TType>>\n} & {\n [K in `to${TName}`]: ReturnType<typeof zodToFactory<TType>>\n}\n\n/** @alpha */\nexport function zodAllFactory<T, TName extends string>(zod: z.ZodType<T>, name: TName) {\n return {\n [`is${name}`]: zodIsFactory<T>(zod),\n [`as${name}`]: zodAsFactory<T>(zod, `as${name}`),\n [`to${name}`]: zodToFactory<T>(zod, `to${name}`),\n }\n}\n","import type { AssertConfig } from '@xylabs/error'\nimport { assertError } from '@xylabs/error'\nimport type z from 'zod'\n\nimport type { ZodFactoryConfig } from './Config.ts'\n\nexport function zodAsAsyncFactory<TZod>(zod: z.ZodType<TZod>, name: string) {\n function asFunc<T>(value: unknown): Promise<(T & TZod) | undefined>\n function asFunc<T>(value: unknown, assert: ZodFactoryConfig): Promise<(T & TZod)>\n async function asFunc<T>(value: unknown, assert?: ZodFactoryConfig): Promise<(T & TZod) | undefined> {\n const result = await zod.safeParseAsync(value)\n if (result.success) {\n return value as (T & TZod)\n }\n if (assert !== undefined) {\n let assertConfig: AssertConfig\n switch (typeof assert) {\n case 'string': {\n assertConfig = `[${name}][${value}] ${assert}`\n break\n }\n case 'object': {\n assertConfig = `[${name}][${assert.name}][${value}] ${result.error.message}`\n break\n }\n case 'boolean': {\n assertConfig = `[${name}][${value}] ${result.error.message}`\n break\n }\n case 'function': {\n assertConfig = assert(value, result.error.message)\n break\n }\n default: {\n assertConfig = true\n }\n }\n return assertError(value, assertConfig, result.error.message)\n }\n }\n\n return asFunc\n}\n","import type z from 'zod'\n\nimport { zodAsAsyncFactory } from './zodAsAsyncFactory.ts'\n\nexport function zodToAsyncFactory<T>(zod: z.ZodType<T>, name: string) {\n return zodAsAsyncFactory<T>(zod, name)\n}\n"],"mappings":";AACA,SAAS,mBAAmB;AAKrB,SAAS,aAAmB,KAAsB,MAAc;AAGrE,WAAS,OAAU,OAAgB,QAAmD;AACpF,UAAM,SAAS,IAAI,UAAU,KAAK;AAClC,QAAI,OAAO,SAAS;AAClB,aAAO;AAAA,IACT;AACA,QAAI,WAAW,QAAW;AACxB,UAAI;AACJ,cAAQ,OAAO,QAAQ;AAAA,QACrB,KAAK,UAAU;AACb,yBAAe,IAAI,IAAI,KAAK,KAAK,KAAK,MAAM;AAC5C;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AACb,yBAAe,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,OAAO,MAAM,OAAO;AAC1E;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,yBAAe,IAAI,IAAI,KAAK,KAAK,KAAK,OAAO,MAAM,OAAO;AAC1D;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,yBAAe,OAAO,OAAO,OAAO,MAAM,OAAO;AACjD;AAAA,QACF;AAAA,QACA,SAAS;AACP,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,aAAO,YAAY,OAAO,cAAc,OAAO,MAAM,OAAO;AAAA,IAC9D;AAAA,EACF;AAEA,SAAO;AACT;;;ACxCO,SAAS,aAAmB,KAAsB;AACvD,SAAO,CAAI,UAAgC,IAAI,UAAU,KAAK,EAAE;AAClE;;;ACAO,SAAS,aAAgB,KAAmB,MAAc;AAC/D,SAAO,aAAgB,KAAK,IAAI;AAClC;;;ACUO,SAAS,cAAuC,KAAmB,MAAa;AACrF,SAAO;AAAA,IACL,CAAC,KAAK,IAAI,EAAE,GAAG,aAAgB,GAAG;AAAA,IAClC,CAAC,KAAK,IAAI,EAAE,GAAG,aAAgB,KAAK,KAAK,IAAI,EAAE;AAAA,IAC/C,CAAC,KAAK,IAAI,EAAE,GAAG,aAAgB,KAAK,KAAK,IAAI,EAAE;AAAA,EACjD;AACF;;;ACrBA,SAAS,eAAAA,oBAAmB;AAKrB,SAAS,kBAAwB,KAAsB,MAAc;AAG1E,iBAAe,OAAU,OAAgB,QAA4D;AACnG,UAAM,SAAS,MAAM,IAAI,eAAe,KAAK;AAC7C,QAAI,OAAO,SAAS;AAClB,aAAO;AAAA,IACT;AACA,QAAI,WAAW,QAAW;AACxB,UAAI;AACJ,cAAQ,OAAO,QAAQ;AAAA,QACrB,KAAK,UAAU;AACb,yBAAe,IAAI,IAAI,KAAK,KAAK,KAAK,MAAM;AAC5C;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AACb,yBAAe,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,OAAO,MAAM,OAAO;AAC1E;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,yBAAe,IAAI,IAAI,KAAK,KAAK,KAAK,OAAO,MAAM,OAAO;AAC1D;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,yBAAe,OAAO,OAAO,OAAO,MAAM,OAAO;AACjD;AAAA,QACF;AAAA,QACA,SAAS;AACP,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,aAAOA,aAAY,OAAO,cAAc,OAAO,MAAM,OAAO;AAAA,IAC9D;AAAA,EACF;AAEA,SAAO;AACT;;;ACtCO,SAAS,kBAAqB,KAAmB,MAAc;AACpE,SAAO,kBAAqB,KAAK,IAAI;AACvC;","names":["assertError"]}
@@ -12,9 +12,9 @@ export type AllZodFactories<TType, TName extends string> = {
12
12
  };
13
13
  /** @alpha */
14
14
  export declare function zodAllFactory<T, TName extends string>(zod: z.ZodType<T>, name: TName): {
15
- [x: string]: (<T_1>(value: T_1) => value is T_1 & T) | {
16
- (value: unknown): T | undefined;
17
- (value: unknown, assert: import("./Config.ts").ZodFactoryConfig): T;
15
+ [x: string]: {
16
+ <T_1>(value: unknown): (T_1 & T) | undefined;
17
+ <T_1>(value: unknown, assert: import("./Config.ts").ZodFactoryConfig): T_1 & T;
18
18
  };
19
19
  };
20
20
  //# sourceMappingURL=zodAllFactory.d.ts.map
@@ -0,0 +1,7 @@
1
+ import type z from 'zod';
2
+ import type { ZodFactoryConfig } from './Config.ts';
3
+ export declare function zodAsAsyncFactory<TZod>(zod: z.ZodType<TZod>, name: string): {
4
+ <T>(value: unknown): Promise<(T & TZod) | undefined>;
5
+ <T>(value: unknown, assert: ZodFactoryConfig): Promise<(T & TZod)>;
6
+ };
7
+ //# sourceMappingURL=zodAsAsyncFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodAsAsyncFactory.d.ts","sourceRoot":"","sources":["../../src/zodAsAsyncFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM;KACxD,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;KACnD,CAAC,SAAS,OAAO,UAAU,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;EAkClF"}
@@ -1,7 +1,7 @@
1
1
  import type z from 'zod';
2
2
  import type { ZodFactoryConfig } from './Config.ts';
3
- export declare function zodAsFactory<T>(zod: z.ZodType<T>, name: string): {
4
- (value: unknown): T | undefined;
5
- (value: unknown, assert: ZodFactoryConfig): T;
3
+ export declare function zodAsFactory<TZod>(zod: z.ZodType<TZod>, name: string): {
4
+ <T>(value: unknown): (T & TZod) | undefined;
5
+ <T>(value: unknown, assert: ZodFactoryConfig): (T & TZod);
6
6
  };
7
7
  //# sourceMappingURL=zodAsFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zodAsFactory.d.ts","sourceRoot":"","sources":["../../src/zodAsFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM;YACtC,OAAO,GAAG,CAAC,GAAG,SAAS;YACvB,OAAO,UAAU,gBAAgB,GAAG,CAAC;EAkC7D"}
1
+ {"version":3,"file":"zodAsFactory.d.ts","sourceRoot":"","sources":["../../src/zodAsFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM;KACnD,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS;KAC1C,CAAC,SAAS,OAAO,UAAU,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAkCzE"}
@@ -0,0 +1,6 @@
1
+ import type z from 'zod';
2
+ export declare function zodToAsyncFactory<T>(zod: z.ZodType<T>, name: string): {
3
+ <T_1>(value: unknown): Promise<(T_1 & T) | undefined>;
4
+ <T_1>(value: unknown, assert: import("./Config.ts").ZodFactoryConfig): Promise<T_1 & T>;
5
+ };
6
+ //# sourceMappingURL=zodToAsyncFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodToAsyncFactory.d.ts","sourceRoot":"","sources":["../../src/zodToAsyncFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM;;;EAEnE"}
@@ -1,6 +1,6 @@
1
1
  import type z from 'zod';
2
2
  export declare function zodToFactory<T>(zod: z.ZodType<T>, name: string): {
3
- (value: unknown): T | undefined;
4
- (value: unknown, assert: import("./Config.ts").ZodFactoryConfig): T;
3
+ <T_1>(value: unknown): (T_1 & T) | undefined;
4
+ <T_1>(value: unknown, assert: import("./Config.ts").ZodFactoryConfig): T_1 & T;
5
5
  };
6
6
  //# sourceMappingURL=zodToFactory.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/zod",
3
- "version": "5.0.42",
3
+ "version": "5.0.44",
4
4
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -38,7 +38,7 @@
38
38
  "!**/*.test.*"
39
39
  ],
40
40
  "dependencies": {
41
- "@xylabs/error": "~5.0.42",
41
+ "@xylabs/error": "~5.0.44",
42
42
  "zod": "~4.1.12"
43
43
  },
44
44
  "devDependencies": {
package/src/index.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from './Config.ts'
2
2
  export * from './zodAllFactory.ts'
3
+ export * from './zodAsAsyncFactory.ts'
3
4
  export * from './zodAsFactory.ts'
4
5
  export * from './zodIsFactory.ts'
6
+ export * from './zodToAsyncFactory.ts'
5
7
  export * from './zodToFactory.ts'
@@ -0,0 +1,43 @@
1
+ import type { AssertConfig } from '@xylabs/error'
2
+ import { assertError } from '@xylabs/error'
3
+ import type z from 'zod'
4
+
5
+ import type { ZodFactoryConfig } from './Config.ts'
6
+
7
+ export function zodAsAsyncFactory<TZod>(zod: z.ZodType<TZod>, name: string) {
8
+ function asFunc<T>(value: unknown): Promise<(T & TZod) | undefined>
9
+ function asFunc<T>(value: unknown, assert: ZodFactoryConfig): Promise<(T & TZod)>
10
+ async function asFunc<T>(value: unknown, assert?: ZodFactoryConfig): Promise<(T & TZod) | undefined> {
11
+ const result = await zod.safeParseAsync(value)
12
+ if (result.success) {
13
+ return value as (T & TZod)
14
+ }
15
+ if (assert !== undefined) {
16
+ let assertConfig: AssertConfig
17
+ switch (typeof assert) {
18
+ case 'string': {
19
+ assertConfig = `[${name}][${value}] ${assert}`
20
+ break
21
+ }
22
+ case 'object': {
23
+ assertConfig = `[${name}][${assert.name}][${value}] ${result.error.message}`
24
+ break
25
+ }
26
+ case 'boolean': {
27
+ assertConfig = `[${name}][${value}] ${result.error.message}`
28
+ break
29
+ }
30
+ case 'function': {
31
+ assertConfig = assert(value, result.error.message)
32
+ break
33
+ }
34
+ default: {
35
+ assertConfig = true
36
+ }
37
+ }
38
+ return assertError(value, assertConfig, result.error.message)
39
+ }
40
+ }
41
+
42
+ return asFunc
43
+ }
@@ -4,13 +4,13 @@ import type z from 'zod'
4
4
 
5
5
  import type { ZodFactoryConfig } from './Config.ts'
6
6
 
7
- export function zodAsFactory<T>(zod: z.ZodType<T>, name: string) {
8
- function asFunc(value: unknown): T | undefined
9
- function asFunc(value: unknown, assert: ZodFactoryConfig): T
10
- function asFunc(value: unknown, assert?: ZodFactoryConfig): T | undefined {
7
+ export function zodAsFactory<TZod>(zod: z.ZodType<TZod>, name: string) {
8
+ function asFunc<T>(value: unknown): (T & TZod) | undefined
9
+ function asFunc<T>(value: unknown, assert: ZodFactoryConfig): (T & TZod)
10
+ function asFunc<T>(value: unknown, assert?: ZodFactoryConfig): (T & TZod) | undefined {
11
11
  const result = zod.safeParse(value)
12
12
  if (result.success) {
13
- return result.data
13
+ return value as (T & TZod)
14
14
  }
15
15
  if (assert !== undefined) {
16
16
  let assertConfig: AssertConfig
@@ -0,0 +1,7 @@
1
+ import type z from 'zod'
2
+
3
+ import { zodAsAsyncFactory } from './zodAsAsyncFactory.ts'
4
+
5
+ export function zodToAsyncFactory<T>(zod: z.ZodType<T>, name: string) {
6
+ return zodAsAsyncFactory<T>(zod, name)
7
+ }