@infra-blocks/zod-utils 0.18.0 → 0.19.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.
Files changed (40) hide show
  1. package/README.md +42 -15
  2. package/lib/cjs/codec/csv.js.map +1 -0
  3. package/lib/cjs/codec/index.d.ts +6 -0
  4. package/lib/cjs/codec/index.js +13 -0
  5. package/lib/cjs/codec/index.js.map +1 -0
  6. package/lib/cjs/codec/string-to-integer.d.ts +13 -0
  7. package/lib/cjs/codec/string-to-integer.js +25 -0
  8. package/lib/cjs/codec/string-to-integer.js.map +1 -0
  9. package/lib/cjs/codec/string-to-url.d.ts +9 -0
  10. package/lib/cjs/codec/string-to-url.js +20 -0
  11. package/lib/cjs/codec/string-to-url.js.map +1 -0
  12. package/lib/cjs/index.d.ts +6 -24
  13. package/lib/cjs/index.js +10 -49
  14. package/lib/cjs/index.js.map +1 -1
  15. package/lib/cjs/lib.d.ts +5 -0
  16. package/lib/cjs/lib.js +8 -0
  17. package/lib/cjs/lib.js.map +1 -0
  18. package/lib/esm/codec/csv.js.map +1 -0
  19. package/lib/esm/codec/index.d.ts +6 -0
  20. package/lib/esm/codec/index.js +10 -0
  21. package/lib/esm/codec/index.js.map +1 -0
  22. package/lib/esm/codec/string-to-integer.d.ts +13 -0
  23. package/lib/esm/codec/string-to-integer.js +21 -0
  24. package/lib/esm/codec/string-to-integer.js.map +1 -0
  25. package/lib/esm/codec/string-to-url.d.ts +9 -0
  26. package/lib/esm/codec/string-to-url.js +16 -0
  27. package/lib/esm/codec/string-to-url.js.map +1 -0
  28. package/lib/esm/index.d.ts +6 -24
  29. package/lib/esm/index.js +2 -41
  30. package/lib/esm/index.js.map +1 -1
  31. package/lib/esm/lib.d.ts +5 -0
  32. package/lib/esm/lib.js +5 -0
  33. package/lib/esm/lib.js.map +1 -0
  34. package/package.json +1 -1
  35. package/lib/cjs/csv.js.map +0 -1
  36. package/lib/esm/csv.js.map +0 -1
  37. /package/lib/cjs/{csv.d.ts → codec/csv.d.ts} +0 -0
  38. /package/lib/cjs/{csv.js → codec/csv.js} +0 -0
  39. /package/lib/esm/{csv.d.ts → codec/csv.d.ts} +0 -0
  40. /package/lib/esm/{csv.js → codec/csv.js} +0 -0
package/README.md CHANGED
@@ -13,7 +13,7 @@ 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,
16
+ One caveat of using branded types schema is that the default value must also be branded (as should be). So,
17
17
  for example, where you would write `z.int().default(5)`, you instead have to write `zu.integer().default(zu.integer().parse(5))`.
18
18
  This is, however, exactly correct. Indeed, with vanilla zod, you could write `z.int().default(123.456)`, which violates
19
19
  the schema and is accepted both at compile time and runtime at the time of this writing.
@@ -21,18 +21,18 @@ the schema and is accepted both at compile time and runtime at the time of this
21
21
  ## API
22
22
 
23
23
  - [aws](#aws)
24
+ - [codec](#codec)
24
25
  - [geojson](#geojson)
25
26
  - [integer](#integer)
26
27
  - [iso](#iso)
27
28
  - [json](#json)
28
- - [csv](#csv)
29
29
  - [string](#string)
30
30
  - [typeGuard](#type-guard)
31
31
  - [isValid](#is-valid)
32
32
 
33
33
  ### AWS
34
34
 
35
- The `aws` module contains utilities to validate various AWS elements. All schemas return [branded types](#branded-types).
35
+ The `zu.aws` module contains utilities to validate various AWS elements. All schemas return [branded types](#branded-types).
36
36
 
37
37
  ```typescript
38
38
  import { zu } from "@infra-blocks/zod-utils";
@@ -48,6 +48,45 @@ zu.aws.partition().parse("aws");
48
48
  zu.aws.region().parse("us-east-1");
49
49
  ```
50
50
 
51
+ ### codec
52
+
53
+ The `zu.codec` module contains codecs.
54
+
55
+ #### csv
56
+
57
+ The `zu.codec.csv()` utility is a codec transforming a string into an array of string using the string `split` method
58
+ to do so.
59
+
60
+ ```typescript
61
+ import { zu } from "@infra-blocks/zod-utils";
62
+
63
+ const items = zu.codec.csv().parse("one,two,three"); // items is ["one", "two", "three"]
64
+ ```
65
+
66
+ #### stringToInteger
67
+
68
+ The `zu.codec.stringToInteger()` codec is taken almost verbatim
69
+ from [Zod's own documentation](https://zod.dev/codecs#stringtoint). The
70
+ only difference is the final type is branded as it is using `zu.integer()` internally.
71
+
72
+ ```typescript
73
+ import { zu } from "@infra-blocks/zod-utils";
74
+ import { Integer } from "@infra-blocks/zod-utils";
75
+
76
+ const item: Integer = zu.codec.stringToInteger().parse("1234");
77
+ ```
78
+
79
+ #### stringToUrl
80
+
81
+ The `zu.codec.stringToUrl()` codec is taken [Zod's own documentation](https://zod.dev/codecs#stringtourl).
82
+ The result is a URL object. No branding here esé.
83
+
84
+ ```typescript
85
+ import { zu } from "@infra-blocks/zod-utils";
86
+
87
+ const item: URL = zu.codec.stringToUrl().parse("http://localhost:3000");
88
+ ```
89
+
51
90
  ### GeoJson
52
91
 
53
92
  The `geojson` module contains utilities to validate GeoJSON objects.
@@ -287,18 +326,6 @@ zu.json.object().parse(5); // Boom.
287
326
  zu.json.object().parse([]); // Boom.
288
327
  ```
289
328
 
290
- ### CSV
291
-
292
- The `csv` utility is nothing but a shorthand for `z.string().transform(s => s.split(","))`, which
293
- is commonly written, in my experience. One can stop retyping all those letters and replace them
294
- with a simple `zu.csv()` call.
295
-
296
- ```typescript
297
- import { zu } from "@infra-blocks/zod-utils";
298
-
299
- const items = zu.csv().parse("one,two,three"); // items is ["one", "two", "three"]
300
- ```
301
-
302
329
  ### String
303
330
 
304
331
  The `zu.string` module exposes schemas for manipulating strings. All schemas return [branded types](#branded-types).
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/codec/csv.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,MAAM,KAAK,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE;IACrD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;CAC/B,CAAC,CAAC;AAEH;;;;;;GAMG;AACI,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;AAAlB,QAAA,GAAG,OAAe"}
@@ -0,0 +1,6 @@
1
+ declare const codec: {
2
+ csv: () => import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodArray<import("zod").ZodString>>;
3
+ stringtoInteger: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "IntegerString">, import("zod/v4/core").$ZodBranded<import("zod").ZodInt, "Integer">>;
4
+ stringToUrl: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodURL, "UrlString">, import("zod").ZodCustom<import("url").URL, import("url").URL>>;
5
+ };
6
+ export { codec };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.codec = void 0;
4
+ const csv_js_1 = require("./csv.js");
5
+ const string_to_integer_js_1 = require("./string-to-integer.js");
6
+ const string_to_url_js_1 = require("./string-to-url.js");
7
+ const codec = {
8
+ csv: csv_js_1.csv,
9
+ stringtoInteger: string_to_integer_js_1.stringtoInteger,
10
+ stringToUrl: string_to_url_js_1.stringToUrl,
11
+ };
12
+ exports.codec = codec;
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codec/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAC/B,iEAAyD;AACzD,yDAAiD;AAEjD,MAAM,KAAK,GAAG;IACZ,GAAG,EAAH,YAAG;IACH,eAAe,EAAf,sCAAe;IACf,WAAW,EAAX,8BAAW;CACZ,CAAC;AAEO,sBAAK"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * A string to integer codec.
4
+ *
5
+ * Same as defined in Zod's documentation, except branding is included using
6
+ * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
7
+ * in place of `z.string().regex(z.regexes.integer)`.
8
+ *
9
+ * @returns A string to integer codec.
10
+ *
11
+ * @see https://zod.dev/codecs#stringtoint
12
+ */
13
+ export declare const stringtoInteger: () => z.ZodCodec<z.core.$ZodBranded<z.ZodString, "IntegerString">, z.core.$ZodBranded<z.ZodInt, "Integer">>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringtoInteger = void 0;
4
+ const zod_1 = require("zod");
5
+ const integer_js_1 = require("../integer.js");
6
+ const lib_js_1 = require("../lib.js");
7
+ const index_js_1 = require("../string/index.js");
8
+ const stringToIntegerCodec = zod_1.z.codec(index_js_1.string.integer(), (0, integer_js_1.integer)(), {
9
+ decode: (str) => Number.parseInt(str, 10),
10
+ encode: (num) => (0, lib_js_1.trusted)(num.toString()),
11
+ });
12
+ /**
13
+ * A string to integer codec.
14
+ *
15
+ * Same as defined in Zod's documentation, except branding is included using
16
+ * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
17
+ * in place of `z.string().regex(z.regexes.integer)`.
18
+ *
19
+ * @returns A string to integer codec.
20
+ *
21
+ * @see https://zod.dev/codecs#stringtoint
22
+ */
23
+ const stringtoInteger = () => stringToIntegerCodec;
24
+ exports.stringtoInteger = stringtoInteger;
25
+ //# sourceMappingURL=string-to-integer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-to-integer.js","sourceRoot":"","sources":["../../../src/codec/string-to-integer.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,8CAAwC;AACxC,sCAAoC;AACpC,iDAA4C;AAE5C,MAAM,oBAAoB,GAAG,OAAC,CAAC,KAAK,CAAC,iBAAM,CAAC,OAAO,EAAE,EAAE,IAAA,oBAAO,GAAE,EAAE;IAChE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACI,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC;AAA7C,QAAA,eAAe,mBAA8B"}
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * A string to URL codec, as defined in Zod's documentation.
4
+ *
5
+ * @returns A string to URL codec.
6
+ *
7
+ * @see https://zod.dev/codecs#stringtourl
8
+ */
9
+ export declare const stringToUrl: () => z.ZodCodec<z.core.$ZodBranded<z.ZodURL, "UrlString">, z.ZodCustom<import("url").URL, import("url").URL>>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringToUrl = void 0;
4
+ const zod_1 = require("zod");
5
+ const lib_js_1 = require("../lib.js");
6
+ const index_js_1 = require("../string/index.js");
7
+ const stringToURLCodec = zod_1.z.codec(index_js_1.string.url(), zod_1.z.instanceof(URL), {
8
+ decode: (urlString) => new URL(urlString),
9
+ encode: (url) => (0, lib_js_1.trusted)(url.href),
10
+ });
11
+ /**
12
+ * A string to URL codec, as defined in Zod's documentation.
13
+ *
14
+ * @returns A string to URL codec.
15
+ *
16
+ * @see https://zod.dev/codecs#stringtourl
17
+ */
18
+ const stringToUrl = () => stringToURLCodec;
19
+ exports.stringToUrl = stringToUrl;
20
+ //# sourceMappingURL=string-to-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-to-url.js","sourceRoot":"","sources":["../../../src/codec/string-to-url.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,sCAAoC;AACpC,iDAA4C;AAE5C,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC,iBAAM,CAAC,GAAG,EAAE,EAAE,OAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAChE,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAEH;;;;;;GAMG;AACI,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC;AAArC,QAAA,WAAW,eAA0B"}
@@ -1,25 +1,5 @@
1
1
  import type { TypeGuard } from "@infra-blocks/types";
2
- import { z } from "zod";
3
- /**
4
- * A string to integer codec.
5
- *
6
- * Same as defined in Zod's documentation, except branding is included using
7
- * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
8
- * in place of `z.string().regex(z.regexes.integer)`.
9
- *
10
- * @returns A string to integer codec.
11
- *
12
- * @see https://zod.dev/codecs#stringtoint
13
- */
14
- declare function stringtoInteger(): z.ZodCodec<z.core.$ZodBranded<z.ZodString, "IntegerString">, z.core.$ZodBranded<z.ZodInt, "Integer">>;
15
- /**
16
- * A string to URL codec, as defined in Zod's documentation.
17
- *
18
- * @returns A string to URL codec.
19
- *
20
- * @see https://zod.dev/codecs#stringtourl
21
- */
22
- declare function stringToUrl(): z.ZodCodec<z.core.$ZodBranded<z.ZodURL, "UrlString">, z.ZodCustom<import("url").URL, import("url").URL>>;
2
+ import type { z } from "zod";
23
3
  /**
24
4
  * Returns a type guard function using the provided schema as the source of truth.
25
5
  *
@@ -56,6 +36,11 @@ declare const zu: {
56
36
  region: typeof import("./aws/region.js").region;
57
37
  partition: typeof import("./aws/partition.js").partition;
58
38
  };
39
+ codec: {
40
+ csv: () => z.ZodCodec<z.ZodString, z.ZodArray<z.ZodString>>;
41
+ stringtoInteger: () => z.ZodCodec<z.core.$ZodBranded<z.ZodString, "IntegerString">, z.core.$ZodBranded<z.ZodInt, "Integer">>;
42
+ stringToUrl: () => z.ZodCodec<z.core.$ZodBranded<z.ZodURL, "UrlString">, z.ZodCustom<import("url").URL, import("url").URL>>;
43
+ };
59
44
  geojson: typeof import("./geojson/geojson.js").geojson & {
60
45
  boundingBox: typeof import("./geojson/bounding-box.js").boundingBox;
61
46
  feature: typeof import("./geojson/feature.js").feature;
@@ -89,11 +74,8 @@ declare const zu: {
89
74
  integer: () => z.core.$ZodBranded<z.ZodString, "IntegerString">;
90
75
  url: () => z.core.$ZodBranded<z.ZodURL, "UrlString">;
91
76
  };
92
- csv: () => z.ZodCodec<z.ZodString, z.ZodArray<z.ZodString>>;
93
77
  isValid: typeof isValid;
94
78
  integer: () => z.core.$ZodBranded<z.ZodInt, "Integer">;
95
- stringtoInteger: typeof stringtoInteger;
96
- stringToUrl: typeof stringToUrl;
97
79
  typeGuard: typeof typeGuard;
98
80
  };
99
81
  export type * from "./types.js";
package/lib/cjs/index.js CHANGED
@@ -1,50 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.zu = void 0;
4
- const zod_1 = require("zod");
5
4
  const index_js_1 = require("./aws/index.js");
6
- const csv_js_1 = require("./csv.js");
7
- const index_js_2 = require("./geojson/index.js");
5
+ const index_js_2 = require("./codec/index.js");
6
+ const index_js_3 = require("./geojson/index.js");
8
7
  const integer_js_1 = require("./integer.js");
9
- const index_js_3 = require("./iso/index.js");
10
- const index_js_4 = require("./json/index.js");
11
- const index_js_5 = require("./string/index.js");
12
- // TODO: ts-types.
13
- function trusted(value) {
14
- return value;
15
- }
16
- const stringToIntegerCodec = zod_1.z.codec(index_js_5.string.integer(), (0, integer_js_1.integer)(), {
17
- decode: (str) => Number.parseInt(str, 10),
18
- encode: (num) => trusted(num.toString()),
19
- });
20
- /**
21
- * A string to integer codec.
22
- *
23
- * Same as defined in Zod's documentation, except branding is included using
24
- * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
25
- * in place of `z.string().regex(z.regexes.integer)`.
26
- *
27
- * @returns A string to integer codec.
28
- *
29
- * @see https://zod.dev/codecs#stringtoint
30
- */
31
- function stringtoInteger() {
32
- return stringToIntegerCodec;
33
- }
34
- const stringToURLCodec = zod_1.z.codec(index_js_5.string.url(), zod_1.z.instanceof(URL), {
35
- decode: (urlString) => new URL(urlString),
36
- encode: (url) => trusted(url.href),
37
- });
38
- /**
39
- * A string to URL codec, as defined in Zod's documentation.
40
- *
41
- * @returns A string to URL codec.
42
- *
43
- * @see https://zod.dev/codecs#stringtourl
44
- */
45
- function stringToUrl() {
46
- return stringToURLCodec;
47
- }
8
+ const index_js_4 = require("./iso/index.js");
9
+ const index_js_5 = require("./json/index.js");
10
+ const index_js_6 = require("./string/index.js");
48
11
  /**
49
12
  * Returns a type guard function using the provided schema as the source of truth.
50
13
  *
@@ -82,15 +45,13 @@ function isValid(schema, value) {
82
45
  }
83
46
  const zu = {
84
47
  aws: index_js_1.aws,
85
- geojson: index_js_2.geojson,
86
- iso: index_js_3.iso,
87
- json: index_js_4.json,
88
- string: index_js_5.string,
89
- csv: csv_js_1.csv,
48
+ codec: index_js_2.codec,
49
+ geojson: index_js_3.geojson,
50
+ iso: index_js_4.iso,
51
+ json: index_js_5.json,
52
+ string: index_js_6.string,
90
53
  isValid,
91
54
  integer: integer_js_1.integer,
92
- stringtoInteger,
93
- stringToUrl,
94
55
  typeGuard,
95
56
  };
96
57
  exports.zu = zu;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,6BAAwB;AACxB,6CAAqC;AACrC,qCAA+B;AAC/B,iDAA6C;AAC7C,6CAAuC;AACvC,6CAAqC;AACrC,8CAAuC;AACvC,gDAA2C;AAE3C,kBAAkB;AAClB,SAAS,OAAO,CAAI,KAAc;IAChC,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,MAAM,oBAAoB,GAAG,OAAC,CAAC,KAAK,CAAC,iBAAM,CAAC,OAAO,EAAE,EAAE,IAAA,oBAAO,GAAE,EAAE;IAChE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,SAAS,eAAe;IACtB,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC,iBAAM,CAAC,GAAG,EAAE,EAAE,OAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAChE,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;CACnC,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,EAAH,YAAG;IACH,OAAO;IACP,OAAO,EAAP,oBAAO;IACP,eAAe;IACf,WAAW;IACX,SAAS;CACV,CAAC;AAGO,gBAAE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,6CAAqC;AACrC,+CAAyC;AACzC,iDAA6C;AAC7C,6CAAuC;AACvC,6CAAqC;AACrC,8CAAuC;AACvC,gDAA2C;AAE3C;;;;;;;;;;;;;;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,KAAK,EAAL,gBAAK;IACL,OAAO,EAAP,kBAAO;IACP,GAAG,EAAH,cAAG;IACH,IAAI,EAAJ,eAAI;IACJ,MAAM,EAAN,iBAAM;IACN,OAAO;IACP,OAAO,EAAP,oBAAO;IACP,SAAS;CACV,CAAC;AAGO,gBAAE"}
@@ -0,0 +1,5 @@
1
+ import type { z } from "zod";
2
+ export declare function trusted<T>(value: unknown): T;
3
+ type Brand<T> = T extends z.$brand<infer B> ? B : never;
4
+ export type Unbranded<T> = T extends infer U & z.$brand<Brand<T>> ? Unbranded<U> : T;
5
+ export {};
package/lib/cjs/lib.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.trusted = trusted;
4
+ // TODO: ts-types.
5
+ function trusted(value) {
6
+ return value;
7
+ }
8
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":";;AAIA,0BAEC;AAHD,kBAAkB;AAClB,SAAgB,OAAO,CAAI,KAAc;IACvC,OAAO,KAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/codec/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;IACrD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;CAC/B,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare const codec: {
2
+ csv: () => import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodArray<import("zod").ZodString>>;
3
+ stringtoInteger: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "IntegerString">, import("zod/v4/core").$ZodBranded<import("zod").ZodInt, "Integer">>;
4
+ stringToUrl: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodURL, "UrlString">, import("zod").ZodCustom<import("url").URL, import("url").URL>>;
5
+ };
6
+ export { codec };
@@ -0,0 +1,10 @@
1
+ import { csv } from "./csv.js";
2
+ import { stringtoInteger } from "./string-to-integer.js";
3
+ import { stringToUrl } from "./string-to-url.js";
4
+ const codec = {
5
+ csv,
6
+ stringtoInteger,
7
+ stringToUrl,
8
+ };
9
+ export { codec };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codec/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,KAAK,GAAG;IACZ,GAAG;IACH,eAAe;IACf,WAAW;CACZ,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * A string to integer codec.
4
+ *
5
+ * Same as defined in Zod's documentation, except branding is included using
6
+ * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
7
+ * in place of `z.string().regex(z.regexes.integer)`.
8
+ *
9
+ * @returns A string to integer codec.
10
+ *
11
+ * @see https://zod.dev/codecs#stringtoint
12
+ */
13
+ export declare const stringtoInteger: () => z.ZodCodec<z.core.$ZodBranded<z.ZodString, "IntegerString">, z.core.$ZodBranded<z.ZodInt, "Integer">>;
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ import { integer } from "../integer.js";
3
+ import { trusted } from "../lib.js";
4
+ import { string } from "../string/index.js";
5
+ const stringToIntegerCodec = z.codec(string.integer(), integer(), {
6
+ decode: (str) => Number.parseInt(str, 10),
7
+ encode: (num) => trusted(num.toString()),
8
+ });
9
+ /**
10
+ * A string to integer codec.
11
+ *
12
+ * Same as defined in Zod's documentation, except branding is included using
13
+ * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
14
+ * in place of `z.string().regex(z.regexes.integer)`.
15
+ *
16
+ * @returns A string to integer codec.
17
+ *
18
+ * @see https://zod.dev/codecs#stringtoint
19
+ */
20
+ export const stringtoInteger = () => stringToIntegerCodec;
21
+ //# sourceMappingURL=string-to-integer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-to-integer.js","sourceRoot":"","sources":["../../../src/codec/string-to-integer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * A string to URL codec, as defined in Zod's documentation.
4
+ *
5
+ * @returns A string to URL codec.
6
+ *
7
+ * @see https://zod.dev/codecs#stringtourl
8
+ */
9
+ export declare const stringToUrl: () => z.ZodCodec<z.core.$ZodBranded<z.ZodURL, "UrlString">, z.ZodCustom<import("url").URL, import("url").URL>>;
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ import { trusted } from "../lib.js";
3
+ import { string } from "../string/index.js";
4
+ const stringToURLCodec = z.codec(string.url(), z.instanceof(URL), {
5
+ decode: (urlString) => new URL(urlString),
6
+ encode: (url) => trusted(url.href),
7
+ });
8
+ /**
9
+ * A string to URL codec, as defined in Zod's documentation.
10
+ *
11
+ * @returns A string to URL codec.
12
+ *
13
+ * @see https://zod.dev/codecs#stringtourl
14
+ */
15
+ export const stringToUrl = () => stringToURLCodec;
16
+ //# sourceMappingURL=string-to-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-to-url.js","sourceRoot":"","sources":["../../../src/codec/string-to-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAChE,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC"}
@@ -1,25 +1,5 @@
1
1
  import type { TypeGuard } from "@infra-blocks/types";
2
- import { z } from "zod";
3
- /**
4
- * A string to integer codec.
5
- *
6
- * Same as defined in Zod's documentation, except branding is included using
7
- * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
8
- * in place of `z.string().regex(z.regexes.integer)`.
9
- *
10
- * @returns A string to integer codec.
11
- *
12
- * @see https://zod.dev/codecs#stringtoint
13
- */
14
- declare function stringtoInteger(): z.ZodCodec<z.core.$ZodBranded<z.ZodString, "IntegerString">, z.core.$ZodBranded<z.ZodInt, "Integer">>;
15
- /**
16
- * A string to URL codec, as defined in Zod's documentation.
17
- *
18
- * @returns A string to URL codec.
19
- *
20
- * @see https://zod.dev/codecs#stringtourl
21
- */
22
- declare function stringToUrl(): z.ZodCodec<z.core.$ZodBranded<z.ZodURL, "UrlString">, z.ZodCustom<import("url").URL, import("url").URL>>;
2
+ import type { z } from "zod";
23
3
  /**
24
4
  * Returns a type guard function using the provided schema as the source of truth.
25
5
  *
@@ -56,6 +36,11 @@ declare const zu: {
56
36
  region: typeof import("./aws/region.js").region;
57
37
  partition: typeof import("./aws/partition.js").partition;
58
38
  };
39
+ codec: {
40
+ csv: () => z.ZodCodec<z.ZodString, z.ZodArray<z.ZodString>>;
41
+ stringtoInteger: () => z.ZodCodec<z.core.$ZodBranded<z.ZodString, "IntegerString">, z.core.$ZodBranded<z.ZodInt, "Integer">>;
42
+ stringToUrl: () => z.ZodCodec<z.core.$ZodBranded<z.ZodURL, "UrlString">, z.ZodCustom<import("url").URL, import("url").URL>>;
43
+ };
59
44
  geojson: typeof import("./geojson/geojson.js").geojson & {
60
45
  boundingBox: typeof import("./geojson/bounding-box.js").boundingBox;
61
46
  feature: typeof import("./geojson/feature.js").feature;
@@ -89,11 +74,8 @@ declare const zu: {
89
74
  integer: () => z.core.$ZodBranded<z.ZodString, "IntegerString">;
90
75
  url: () => z.core.$ZodBranded<z.ZodURL, "UrlString">;
91
76
  };
92
- csv: () => z.ZodCodec<z.ZodString, z.ZodArray<z.ZodString>>;
93
77
  isValid: typeof isValid;
94
78
  integer: () => z.core.$ZodBranded<z.ZodInt, "Integer">;
95
- stringtoInteger: typeof stringtoInteger;
96
- stringToUrl: typeof stringToUrl;
97
79
  typeGuard: typeof typeGuard;
98
80
  };
99
81
  export type * from "./types.js";
package/lib/esm/index.js CHANGED
@@ -1,47 +1,10 @@
1
- import { z } from "zod";
2
1
  import { aws } from "./aws/index.js";
3
- import { csv } from "./csv.js";
2
+ import { codec } from "./codec/index.js";
4
3
  import { geojson } from "./geojson/index.js";
5
4
  import { integer } from "./integer.js";
6
5
  import { iso } from "./iso/index.js";
7
6
  import { json } from "./json/index.js";
8
7
  import { string } from "./string/index.js";
9
- // TODO: ts-types.
10
- function trusted(value) {
11
- return value;
12
- }
13
- const stringToIntegerCodec = z.codec(string.integer(), integer(), {
14
- decode: (str) => Number.parseInt(str, 10),
15
- encode: (num) => trusted(num.toString()),
16
- });
17
- /**
18
- * A string to integer codec.
19
- *
20
- * Same as defined in Zod's documentation, except branding is included using
21
- * {@link zu.integer} in place of {@link z.int} and {@link zu.string.integer}
22
- * in place of `z.string().regex(z.regexes.integer)`.
23
- *
24
- * @returns A string to integer codec.
25
- *
26
- * @see https://zod.dev/codecs#stringtoint
27
- */
28
- function stringtoInteger() {
29
- return stringToIntegerCodec;
30
- }
31
- const stringToURLCodec = z.codec(string.url(), z.instanceof(URL), {
32
- decode: (urlString) => new URL(urlString),
33
- encode: (url) => trusted(url.href),
34
- });
35
- /**
36
- * A string to URL codec, as defined in Zod's documentation.
37
- *
38
- * @returns A string to URL codec.
39
- *
40
- * @see https://zod.dev/codecs#stringtourl
41
- */
42
- function stringToUrl() {
43
- return stringToURLCodec;
44
- }
45
8
  /**
46
9
  * Returns a type guard function using the provided schema as the source of truth.
47
10
  *
@@ -79,15 +42,13 @@ function isValid(schema, value) {
79
42
  }
80
43
  const zu = {
81
44
  aws,
45
+ codec,
82
46
  geojson,
83
47
  iso,
84
48
  json,
85
49
  string,
86
- csv,
87
50
  isValid,
88
51
  integer,
89
- stringtoInteger,
90
- stringToUrl,
91
52
  typeGuard,
92
53
  };
93
54
  export { zu };
@@ -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,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,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,kBAAkB;AAClB,SAAS,OAAO,CAAI,KAAc;IAChC,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,SAAS,eAAe;IACtB,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAChE,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;CACnC,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,eAAe;IACf,WAAW;IACX,SAAS;CACV,CAAC;AAGF,OAAO,EAAE,EAAE,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,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;;;;;;;;;;;;;;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,KAAK;IACL,OAAO;IACP,GAAG;IACH,IAAI;IACJ,MAAM;IACN,OAAO;IACP,OAAO;IACP,SAAS;CACV,CAAC;AAGF,OAAO,EAAE,EAAE,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { z } from "zod";
2
+ export declare function trusted<T>(value: unknown): T;
3
+ type Brand<T> = T extends z.$brand<infer B> ? B : never;
4
+ export type Unbranded<T> = T extends infer U & z.$brand<Brand<T>> ? Unbranded<U> : T;
5
+ export {};
package/lib/esm/lib.js ADDED
@@ -0,0 +1,5 @@
1
+ // TODO: ts-types.
2
+ export function trusted(value) {
3
+ return value;
4
+ }
5
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAGA,kBAAkB;AAClB,MAAM,UAAU,OAAO,CAAI,KAAc;IACvC,OAAO,KAAU,CAAC;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infra-blocks/zod-utils",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Extensions to the zod package.",
5
5
  "keywords": [
6
6
  "zod",
@@ -1 +0,0 @@
1
- {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,MAAM,KAAK,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE;IACrD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;CAC/B,CAAC,CAAC;AAEH;;;;;;GAMG;AACI,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;AAAlB,QAAA,GAAG,OAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;IACrD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;CAC/B,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC"}
File without changes
File without changes
File without changes
File without changes