@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.
- package/README.md +42 -15
- package/lib/cjs/codec/csv.js.map +1 -0
- package/lib/cjs/codec/index.d.ts +6 -0
- package/lib/cjs/codec/index.js +13 -0
- package/lib/cjs/codec/index.js.map +1 -0
- package/lib/cjs/codec/string-to-integer.d.ts +13 -0
- package/lib/cjs/codec/string-to-integer.js +25 -0
- package/lib/cjs/codec/string-to-integer.js.map +1 -0
- package/lib/cjs/codec/string-to-url.d.ts +9 -0
- package/lib/cjs/codec/string-to-url.js +20 -0
- package/lib/cjs/codec/string-to-url.js.map +1 -0
- package/lib/cjs/index.d.ts +6 -24
- package/lib/cjs/index.js +10 -49
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/lib.d.ts +5 -0
- package/lib/cjs/lib.js +8 -0
- package/lib/cjs/lib.js.map +1 -0
- package/lib/esm/codec/csv.js.map +1 -0
- package/lib/esm/codec/index.d.ts +6 -0
- package/lib/esm/codec/index.js +10 -0
- package/lib/esm/codec/index.js.map +1 -0
- package/lib/esm/codec/string-to-integer.d.ts +13 -0
- package/lib/esm/codec/string-to-integer.js +21 -0
- package/lib/esm/codec/string-to-integer.js.map +1 -0
- package/lib/esm/codec/string-to-url.d.ts +9 -0
- package/lib/esm/codec/string-to-url.js +16 -0
- package/lib/esm/codec/string-to-url.js.map +1 -0
- package/lib/esm/index.d.ts +6 -24
- package/lib/esm/index.js +2 -41
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/lib.d.ts +5 -0
- package/lib/esm/lib.js +5 -0
- package/lib/esm/lib.js.map +1 -0
- package/package.json +1 -1
- package/lib/cjs/csv.js.map +0 -1
- package/lib/esm/csv.js.map +0 -1
- /package/lib/cjs/{csv.d.ts → codec/csv.d.ts} +0 -0
- /package/lib/cjs/{csv.js → codec/csv.js} +0 -0
- /package/lib/esm/{csv.d.ts → codec/csv.d.ts} +0 -0
- /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
|
|
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"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -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
|
|
7
|
-
const
|
|
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
|
|
10
|
-
const
|
|
11
|
-
const
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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;
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
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"}
|
package/lib/cjs/lib.d.ts
ADDED
package/lib/cjs/lib.js
ADDED
|
@@ -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"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -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 {
|
|
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 };
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
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"}
|
package/lib/esm/lib.d.ts
ADDED
package/lib/esm/lib.js
ADDED
|
@@ -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
package/lib/cjs/csv.js.map
DELETED
|
@@ -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"}
|
package/lib/esm/csv.js.map
DELETED
|
@@ -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
|