@infra-blocks/zod-utils 0.14.0-alpha.1 → 0.15.0-alpha.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/README.md +23 -0
- package/lib/cjs/index.d.ts +3 -0
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/string/index.d.ts +4 -0
- package/lib/cjs/string/index.js +9 -0
- package/lib/cjs/string/index.js.map +1 -0
- package/lib/cjs/string/integer.d.ts +9 -0
- package/lib/cjs/string/integer.js +12 -0
- package/lib/cjs/string/integer.js.map +1 -0
- package/lib/cjs/string/types.d.ts +1 -0
- package/lib/cjs/string/types.js +3 -0
- package/lib/cjs/string/types.js.map +1 -0
- package/lib/esm/index.d.ts +3 -0
- package/lib/esm/index.js +2 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/string/index.d.ts +4 -0
- package/lib/esm/string/index.js +6 -0
- package/lib/esm/string/index.js.map +1 -0
- package/lib/esm/string/integer.d.ts +9 -0
- package/lib/esm/string/integer.js +8 -0
- package/lib/esm/string/integer.js.map +1 -0
- package/lib/esm/string/types.d.ts +1 -0
- package/lib/esm/string/types.js +2 -0
- package/lib/esm/string/types.js.map +1 -0
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -13,6 +13,11 @@ the documentation will highlight that fact. Otherwise, assume classical structur
|
|
|
13
13
|
When branding is used, the brand is a string that's the same as the name of the type. For example, the `AwsAccountId`
|
|
14
14
|
is an alias for `string & z.$brand<"AwsAccountId">`.
|
|
15
15
|
|
|
16
|
+
One caveat while using branded types schema is that the default value must also be branded (as should be). So,
|
|
17
|
+
for example, where you would write `z.int().default(5)`, you instead have to write `zu.integer().default(zu.integer().parse(5))`.
|
|
18
|
+
This is, however, exactly correct. Indeed, with vanilla zod, you could write `z.int().default(123.456)`, which violates
|
|
19
|
+
the schema and is accepted both at compile time and runtime at the time of this writing.
|
|
20
|
+
|
|
16
21
|
## API
|
|
17
22
|
|
|
18
23
|
- [aws](#aws)
|
|
@@ -21,6 +26,7 @@ is an alias for `string & z.$brand<"AwsAccountId">`.
|
|
|
21
26
|
- [iso](#iso)
|
|
22
27
|
- [json](#json)
|
|
23
28
|
- [csv](#csv)
|
|
29
|
+
- [string](#string)
|
|
24
30
|
- [typeGuard](#type-guard)
|
|
25
31
|
- [isValid](#is-valid)
|
|
26
32
|
|
|
@@ -293,6 +299,23 @@ import { zu } from "@infra-blocks/zod-utils";
|
|
|
293
299
|
const items = zu.csv().parse("one,two,three"); // items is ["one", "two", "three"]
|
|
294
300
|
```
|
|
295
301
|
|
|
302
|
+
### String
|
|
303
|
+
|
|
304
|
+
The `zu.string` module exposes schemas for manipulating strings. All schemas return [branded types](#branded-types).
|
|
305
|
+
|
|
306
|
+
#### Integer
|
|
307
|
+
|
|
308
|
+
```typescript
|
|
309
|
+
import { zu } from "@infra-blocks/zod-utils";
|
|
310
|
+
import { IntegerString } from "@infra-blocks/zod-utils/string";
|
|
311
|
+
import { expectTypeOf } from "expect-type";
|
|
312
|
+
|
|
313
|
+
// Uses z.string().regex(z.regexes.integer) internally.
|
|
314
|
+
const result = zu.string.integer().parse("1234");
|
|
315
|
+
expectTypeOf(result).toEqualTypeOf<IntegerString>();
|
|
316
|
+
expect(result).to.equal("1234");
|
|
317
|
+
```
|
|
318
|
+
|
|
296
319
|
### Type Guard
|
|
297
320
|
|
|
298
321
|
The `typeGuard` utility allows to obtain a function that will act as a type guard for the type
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -87,6 +87,9 @@ declare const zu: {
|
|
|
87
87
|
primitive: typeof import("./json/json.js").primitive;
|
|
88
88
|
stringified: typeof import("./json/json.js").stringifiedJson;
|
|
89
89
|
};
|
|
90
|
+
string: {
|
|
91
|
+
integer: () => z.core.$ZodBranded<z.ZodString, "IntegerString">;
|
|
92
|
+
};
|
|
90
93
|
csv: typeof csv;
|
|
91
94
|
isValid: typeof isValid;
|
|
92
95
|
integer: () => z.core.$ZodBranded<z.ZodInt, "Integer">;
|
package/lib/cjs/index.js
CHANGED
|
@@ -7,8 +7,8 @@ const index_js_2 = require("./geojson/index.js");
|
|
|
7
7
|
const integer_js_1 = require("./integer.js");
|
|
8
8
|
const index_js_3 = require("./iso/index.js");
|
|
9
9
|
const index_js_4 = require("./json/index.js");
|
|
10
|
+
const index_js_5 = require("./string/index.js");
|
|
10
11
|
const csvSchema = zod_1.z.string().transform((str) => str.split(","));
|
|
11
|
-
csvSchema.brand("Toto");
|
|
12
12
|
/**
|
|
13
13
|
* Returns a string schema that transforms its input using a string split on commas.
|
|
14
14
|
*
|
|
@@ -85,6 +85,7 @@ const zu = {
|
|
|
85
85
|
geojson: index_js_2.geojson,
|
|
86
86
|
iso: index_js_3.iso,
|
|
87
87
|
json: index_js_4.json,
|
|
88
|
+
string: index_js_5.string,
|
|
88
89
|
csv,
|
|
89
90
|
isValid,
|
|
90
91
|
integer: integer_js_1.integer,
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,6BAAwB;AACxB,6CAAqC;AACrC,iDAA6C;AAC7C,6CAAuC;AACvC,6CAAqC;AACrC,8CAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,6BAAwB;AACxB,6CAAqC;AACrC,iDAA6C;AAC7C,6CAAuC;AACvC,6CAAqC;AACrC,8CAAuC;AACvC,gDAA2C;AAE3C,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhE;;;;GAIG;AACH,SAAS,GAAG;IACV,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAC,CAAC,GAAG,EAAE,EAAE;IAC7E,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAS,WAAW;IAClB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,GAAG,EAAE,EAAE,OAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAC3D,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI;CAC1B,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAS,WAAW;IAClB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,SAAS,CAAsB,MAAS;IAC/C,OAAO,CAAC,KAAc,EAAuB,EAAE;QAC7C,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,OAAO,CACd,MAAS,EACT,KAAc;IAEd,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED,MAAM,EAAE,GAAG;IACT,GAAG,EAAH,cAAG;IACH,OAAO,EAAP,kBAAO;IACP,GAAG,EAAH,cAAG;IACH,IAAI,EAAJ,eAAI;IACJ,MAAM,EAAN,iBAAM;IACN,GAAG;IACH,OAAO;IACP,OAAO,EAAP,oBAAO;IACP,WAAW;IACX,WAAW;IACX,SAAS;CACV,CAAC;AAGO,gBAAE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.string = void 0;
|
|
4
|
+
const integer_js_1 = require("./integer.js");
|
|
5
|
+
const string = {
|
|
6
|
+
integer: integer_js_1.integer,
|
|
7
|
+
};
|
|
8
|
+
exports.string = string;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/string/index.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC,MAAM,MAAM,GAAG;IACb,OAAO,EAAP,oBAAO;CACR,CAAC;AAEO,wBAAM"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const schema: z.core.$ZodBranded<z.ZodString, "IntegerString">;
|
|
3
|
+
export type IntegerString = z.infer<typeof schema>;
|
|
4
|
+
/**
|
|
5
|
+
* @returns A schema that uses `z.string().regex(z.regexes.integer)` internally and returns an {@link IntegerString}
|
|
6
|
+
* upon success.
|
|
7
|
+
*/
|
|
8
|
+
export declare const integer: () => z.core.$ZodBranded<z.ZodString, "IntegerString">;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.integer = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const schema = zod_1.z.string().regex(zod_1.z.regexes.integer).brand("IntegerString");
|
|
6
|
+
/**
|
|
7
|
+
* @returns A schema that uses `z.string().regex(z.regexes.integer)` internally and returns an {@link IntegerString}
|
|
8
|
+
* upon success.
|
|
9
|
+
*/
|
|
10
|
+
const integer = () => schema;
|
|
11
|
+
exports.integer = integer;
|
|
12
|
+
//# sourceMappingURL=integer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer.js","sourceRoot":"","sources":["../../../src/string/integer.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAI1E;;;GAGG;AACI,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;AAAvB,QAAA,OAAO,WAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { IntegerString } from "./integer.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/string/types.ts"],"names":[],"mappings":""}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -87,6 +87,9 @@ declare const zu: {
|
|
|
87
87
|
primitive: typeof import("./json/json.js").primitive;
|
|
88
88
|
stringified: typeof import("./json/json.js").stringifiedJson;
|
|
89
89
|
};
|
|
90
|
+
string: {
|
|
91
|
+
integer: () => z.core.$ZodBranded<z.ZodString, "IntegerString">;
|
|
92
|
+
};
|
|
90
93
|
csv: typeof csv;
|
|
91
94
|
isValid: typeof isValid;
|
|
92
95
|
integer: () => z.core.$ZodBranded<z.ZodInt, "Integer">;
|
package/lib/esm/index.js
CHANGED
|
@@ -4,8 +4,8 @@ import { geojson } from "./geojson/index.js";
|
|
|
4
4
|
import { integer } from "./integer.js";
|
|
5
5
|
import { iso } from "./iso/index.js";
|
|
6
6
|
import { json } from "./json/index.js";
|
|
7
|
+
import { string } from "./string/index.js";
|
|
7
8
|
const csvSchema = z.string().transform((str) => str.split(","));
|
|
8
|
-
csvSchema.brand("Toto");
|
|
9
9
|
/**
|
|
10
10
|
* Returns a string schema that transforms its input using a string split on commas.
|
|
11
11
|
*
|
|
@@ -82,6 +82,7 @@ const zu = {
|
|
|
82
82
|
geojson,
|
|
83
83
|
iso,
|
|
84
84
|
json,
|
|
85
|
+
string,
|
|
85
86
|
csv,
|
|
86
87
|
isValid,
|
|
87
88
|
integer,
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhE;;;;GAIG;AACH,SAAS,GAAG;IACV,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7E,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAS,WAAW;IAClB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAC3D,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI;CAC1B,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAS,WAAW;IAClB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,SAAS,CAAsB,MAAS;IAC/C,OAAO,CAAC,KAAc,EAAuB,EAAE;QAC7C,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,OAAO,CACd,MAAS,EACT,KAAc;IAEd,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED,MAAM,EAAE,GAAG;IACT,GAAG;IACH,OAAO;IACP,GAAG;IACH,IAAI;IACJ,MAAM;IACN,GAAG;IACH,OAAO;IACP,OAAO;IACP,WAAW;IACX,WAAW;IACX,SAAS;CACV,CAAC;AAGF,OAAO,EAAE,EAAE,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/string/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,MAAM,GAAG;IACb,OAAO;CACR,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const schema: z.core.$ZodBranded<z.ZodString, "IntegerString">;
|
|
3
|
+
export type IntegerString = z.infer<typeof schema>;
|
|
4
|
+
/**
|
|
5
|
+
* @returns A schema that uses `z.string().regex(z.regexes.integer)` internally and returns an {@link IntegerString}
|
|
6
|
+
* upon success.
|
|
7
|
+
*/
|
|
8
|
+
export declare const integer: () => z.core.$ZodBranded<z.ZodString, "IntegerString">;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const schema = z.string().regex(z.regexes.integer).brand("IntegerString");
|
|
3
|
+
/**
|
|
4
|
+
* @returns A schema that uses `z.string().regex(z.regexes.integer)` internally and returns an {@link IntegerString}
|
|
5
|
+
* upon success.
|
|
6
|
+
*/
|
|
7
|
+
export const integer = () => schema;
|
|
8
|
+
//# sourceMappingURL=integer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer.js","sourceRoot":"","sources":["../../../src/string/integer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAI1E;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { IntegerString } from "./integer.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/string/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infra-blocks/zod-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0-alpha.0",
|
|
4
4
|
"description": "Extensions to the zod package.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"zod",
|
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
"import": "./lib/esm/geojson/types.js",
|
|
41
41
|
"require": "./lib/cjs/geojson/types.js",
|
|
42
42
|
"default": "./lib/esm/geojson/types.js"
|
|
43
|
+
},
|
|
44
|
+
"./string": {
|
|
45
|
+
"import": "./lib/esm/string/types.js",
|
|
46
|
+
"require": "./lib/cjs/string/types.js",
|
|
47
|
+
"default": "./lib/esm/string/types.js"
|
|
43
48
|
}
|
|
44
49
|
},
|
|
45
50
|
"files": [
|