schematox 1.2.4 → 1.3.0-alpha
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 +35 -7
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +48 -8
- package/dist/parse.js.map +1 -1
- package/dist/struct.d.ts +11 -8
- package/dist/struct.d.ts.map +1 -1
- package/dist/struct.js +19 -7
- package/dist/struct.js.map +1 -1
- package/dist/types/infer.d.ts +2 -2
- package/dist/types/infer.d.ts.map +1 -1
- package/dist/types/schema.d.ts +7 -1
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/struct.d.ts +10 -5
- package/dist/types/struct.d.ts.map +1 -1
- package/package.json +1 -2
- package/src/constants.ts +1 -0
- package/src/index.ts +4 -0
- package/src/parse.ts +51 -0
- package/src/struct.ts +31 -24
- package/src/types/infer.ts +12 -9
- package/src/types/schema.ts +11 -2
- package/src/types/struct.ts +12 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Schematox is a lightweight typesafe schema defined parser. All schemas are JSON compatible.
|
|
4
4
|
|
|
5
|
-
The library is focusing on fixed set of schema types: boolean, literal, number, string, array, object, record, tuple, union. Each schema can have parameters: optional, nullable, description. Each primitive schema has "brand" parameter as mean of making its subject type [nominal](https://github.com/Microsoft/TypeScript/wiki/FAQ#can-i-make-a-type-alias-nominal). The rest parameters is schema specific range limiters.
|
|
5
|
+
The library is focusing on fixed set of schema types: boolean, literal, number, bigint, string, array, object, record, tuple, union. Each schema can have parameters: optional, nullable, description. Each primitive schema has "brand" parameter as mean of making its subject type [nominal](https://github.com/Microsoft/TypeScript/wiki/FAQ#can-i-make-a-type-alias-nominal). The rest parameters is schema specific range limiters.
|
|
6
6
|
|
|
7
7
|
Library supports static schema definition which means your schemas could be completely independent from schematox. One could use such schemas as source for generation other structures like DB models.
|
|
8
8
|
|
|
@@ -19,6 +19,7 @@ The library is small so exploring README.md is enough for understanding its API,
|
|
|
19
19
|
- [Boolean](#boolean)
|
|
20
20
|
- [Literal](#literal)
|
|
21
21
|
- [Number](#number)
|
|
22
|
+
- [BigInt](#bigint)
|
|
22
23
|
- [String](#string)
|
|
23
24
|
- [Compound Schema](#compound-schema)
|
|
24
25
|
- [Array](#array)
|
|
@@ -37,12 +38,12 @@ npm install schematox
|
|
|
37
38
|
|
|
38
39
|
## Minimal Requirements
|
|
39
40
|
|
|
40
|
-
- ECMAScript version: `
|
|
41
|
+
- ECMAScript version: `2020`
|
|
41
42
|
- TypeScript version: `5.3.2`
|
|
42
43
|
|
|
43
44
|
## Features
|
|
44
45
|
|
|
45
|
-
- Statically defined **JSON** compatible schema
|
|
46
|
+
- Statically defined **JSON** compatible schema (easy to serialize/deserialize/generate/store/transfer)
|
|
46
47
|
- Programmatically defined schema (**struct**, **construct**)
|
|
47
48
|
- Check defined schema correctness using non generic type **Schema**
|
|
48
49
|
- Ether-style error handling (no unexpected throws)
|
|
@@ -105,7 +106,7 @@ parsed.data
|
|
|
105
106
|
|
|
106
107
|
### Struct
|
|
107
108
|
|
|
108
|
-
Is commonly accepted way of schema, as seen in [zod](https://github.com/colinhacks/zod) or [superstruct](https://github.com/ianstormtaylor/superstruct) library:
|
|
109
|
+
Is commonly accepted way of schema definition, as seen in [zod](https://github.com/colinhacks/zod) or [superstruct](https://github.com/ianstormtaylor/superstruct) library:
|
|
109
110
|
|
|
110
111
|
```typescript
|
|
111
112
|
import { object, string } from 'schematox'
|
|
@@ -237,7 +238,7 @@ const schema = {
|
|
|
237
238
|
nullable: true,
|
|
238
239
|
brand: ['x', 'y'],
|
|
239
240
|
min: 1,
|
|
240
|
-
max:
|
|
241
|
+
max: 4,
|
|
241
242
|
description: 'x',
|
|
242
243
|
} as const satisfies Schema
|
|
243
244
|
|
|
@@ -246,13 +247,40 @@ const struct = number()
|
|
|
246
247
|
.nullable()
|
|
247
248
|
.brand('x', 'y')
|
|
248
249
|
.min(1)
|
|
249
|
-
.max(
|
|
250
|
+
.max(4)
|
|
250
251
|
.description('x')
|
|
251
252
|
|
|
252
253
|
// (number & { __x: 'y' }) | undefined | null
|
|
253
254
|
type FromSchema = Infer<typeof schema>
|
|
254
255
|
type FromStruct = Infer<typeof struct>
|
|
255
|
-
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### BigInt
|
|
259
|
+
|
|
260
|
+
Native support for JavaScript's `bigint` primitive type.
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
const schema = {
|
|
264
|
+
type: 'bigint',
|
|
265
|
+
optional: true,
|
|
266
|
+
nullable: true,
|
|
267
|
+
brand: ['x', 'y'],
|
|
268
|
+
min: '1',
|
|
269
|
+
max: '4',
|
|
270
|
+
description: 'x',
|
|
271
|
+
} as const satisfies Schema
|
|
272
|
+
|
|
273
|
+
const struct = bigint()
|
|
274
|
+
.optional()
|
|
275
|
+
.nullable()
|
|
276
|
+
.brand('x', 'y')
|
|
277
|
+
.min('1')
|
|
278
|
+
.max('4')
|
|
279
|
+
.description('x')
|
|
280
|
+
|
|
281
|
+
// (bigint & { __x: 'y' }) | undefined | null
|
|
282
|
+
type FromSchema = Infer<typeof schema>
|
|
283
|
+
type FromStruct = Infer<typeof struct>
|
|
256
284
|
```
|
|
257
285
|
|
|
258
286
|
## Compound Schema
|
package/dist/constants.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const PARAMS_BY_SCHEMA_TYPE: {
|
|
|
6
6
|
readonly boolean: Set<"optional" | "nullable" | "brand" | "description">;
|
|
7
7
|
readonly literal: Set<"optional" | "nullable" | "brand" | "description">;
|
|
8
8
|
readonly number: Set<"optional" | "nullable" | "brand" | "description" | "min" | "max">;
|
|
9
|
+
readonly bigint: Set<"optional" | "nullable" | "brand" | "description" | "min" | "max">;
|
|
9
10
|
readonly string: Set<"optional" | "nullable" | "brand" | "description" | "minLength" | "maxLength">;
|
|
10
11
|
readonly array: Set<"optional" | "nullable" | "description" | "minLength" | "maxLength">;
|
|
11
12
|
readonly object: Set<"optional" | "nullable" | "description">;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;CAGb,CAAA;AAGV,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;CAGb,CAAA;AAGV,eAAO,MAAM,qBAAqB;;;;;;;;;;;CAYxB,CAAA;AAEV,eAAO,MAAM,eAAe;;;CAGlB,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -7,6 +7,7 @@ export const PARAMS_BY_SCHEMA_TYPE = {
|
|
|
7
7
|
boolean: new Set(['optional', 'nullable', 'brand', 'description']),
|
|
8
8
|
literal: new Set(['optional', 'nullable', 'brand', 'description']),
|
|
9
9
|
number: new Set(['optional', 'nullable', 'brand', 'description', 'min', 'max']),
|
|
10
|
+
bigint: new Set(['optional', 'nullable', 'brand', 'description', 'min', 'max']),
|
|
10
11
|
string: new Set(['optional', 'nullable', 'brand', 'description', 'minLength', 'maxLength']),
|
|
11
12
|
//
|
|
12
13
|
array: new Set(['optional', 'nullable', 'description', 'minLength', 'maxLength']),
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;CACrB,CAAA;AAEV,kBAAkB;AAClB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAU,CAAC;IAC5E,OAAO,EAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAU,CAAC;IAC5E,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;IAC1F,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;IACtG,EAAE;IACF,KAAK,EAAK,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;IAC7F,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;IACnE,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;IAC7F,KAAK,EAAK,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;IACnE,KAAK,EAAK,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;CAC3D,CAAA;AAEV,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,WAAW;CACX,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;CACrB,CAAA;AAEV,kBAAkB;AAClB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAU,CAAC;IAC5E,OAAO,EAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAU,CAAC;IAC5E,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;IAC1F,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;IAC1F,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;IACtG,EAAE;IACF,KAAK,EAAK,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;IAC7F,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;IACnE,MAAM,EAAI,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;IAC7F,KAAK,EAAK,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;IACnE,KAAK,EAAK,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAU,CAAC;CAC3D,CAAA;AAEV,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,WAAW;CACX,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { ERROR_CODE, PARAMS_BY_SCHEMA_TYPE } from './constants';
|
|
2
2
|
export { parse } from './parse';
|
|
3
|
-
export { makeStruct, boolean, literal, number, string, array, object, record, tuple, union, } from './struct';
|
|
3
|
+
export { makeStruct, boolean, literal, number, bigint, string, array, object, record, tuple, union, } from './struct';
|
|
4
4
|
export { error, success, tCh } from './utils';
|
|
5
5
|
export type { ErrorCode, ErrorPath, InvalidSubject, ParseError, ParseResult, ParseSuccess, PrettifyObject, } from './types/utils';
|
|
6
6
|
export type { Infer, InferSchema, InferPrimitive, InferArray, InferObject, InferRecord, InferUnion, } from './types/infer';
|
|
7
|
-
export type { Schema, PrimitiveSchema, ArraySchema, ObjectSchema, RecordSchema, UnionSchema, BrandSchema, BooleanSchema, LiteralSchema, NumberSchema, StringSchema, } from './types/schema';
|
|
7
|
+
export type { Schema, PrimitiveSchema, ArraySchema, ObjectSchema, RecordSchema, UnionSchema, BrandSchema, BigIntSchema, BooleanSchema, LiteralSchema, NumberSchema, StringSchema, BigIntString, } from './types/schema';
|
|
8
8
|
export type { Struct, StructShape, StructParams } from './types/struct';
|
|
9
9
|
export type { ExtendParams, ExtendBrand, ExtendOptional, ExtendNullable, } from './types/extensions';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,UAAU,EAEV,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EAEN,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAE7C,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,KAAK,EAEL,WAAW,EACX,cAAc,EAEd,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,MAAM,EACN,eAAe,EAEf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,WAAW,EAEX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEvE,YAAY,EACV,YAAY,EAEZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,UAAU,EAEV,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EAEN,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAE7C,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,KAAK,EAEL,WAAW,EACX,cAAc,EAEd,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,MAAM,EACN,eAAe,EAEf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,WAAW,EAEX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EAEZ,YAAY,GACb,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEvE,YAAY,EACV,YAAY,EAEZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { ERROR_CODE, PARAMS_BY_SCHEMA_TYPE } from './constants';
|
|
|
2
2
|
export { parse } from './parse';
|
|
3
3
|
export { makeStruct,
|
|
4
4
|
//
|
|
5
|
-
boolean, literal, number, string,
|
|
5
|
+
boolean, literal, number, bigint, string,
|
|
6
6
|
//
|
|
7
7
|
array, object, record, tuple, union, } from './struct';
|
|
8
8
|
export { error, success, tCh } from './utils';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,UAAU;AACV,EAAE;AACF,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM;AACN,EAAE;AACF,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,UAAU;AACV,EAAE;AACF,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM;AACN,EAAE;AACF,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAA6B,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,KAAK,EACV,MAAM,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAA6B,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3E,OAAO,KAAK,EACV,MAAM,EAaP,MAAM,gBAAgB,CAAA;AAgBvB,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EACpC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,OAAO,GACf,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/parse.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ERROR_CODE } from './constants';
|
|
2
2
|
import { error, success } from './utils';
|
|
3
3
|
const PARSE_FN_BY_SCHEMA_KIND = {
|
|
4
|
+
bigint: parseBigInt,
|
|
4
5
|
boolean: parseBoolean,
|
|
5
6
|
literal: parseLiteral,
|
|
6
7
|
number: parseNumber,
|
|
@@ -24,6 +25,45 @@ function parseRecursively(errorPath, schema, subject) {
|
|
|
24
25
|
}
|
|
25
26
|
return PARSE_FN_BY_SCHEMA_KIND[schema.type](errorPath, schema, subject);
|
|
26
27
|
}
|
|
28
|
+
function parseBigInt(errorPath, schema, subject) {
|
|
29
|
+
if (typeof subject !== 'bigint') {
|
|
30
|
+
return error([
|
|
31
|
+
{
|
|
32
|
+
code: ERROR_CODE.invalidType,
|
|
33
|
+
path: errorPath,
|
|
34
|
+
subject,
|
|
35
|
+
schema,
|
|
36
|
+
},
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
if (typeof schema.min === 'string') {
|
|
40
|
+
const min = BigInt(schema.min);
|
|
41
|
+
if (subject < min) {
|
|
42
|
+
return error([
|
|
43
|
+
{
|
|
44
|
+
code: ERROR_CODE.invalidRange,
|
|
45
|
+
path: errorPath,
|
|
46
|
+
subject,
|
|
47
|
+
schema,
|
|
48
|
+
},
|
|
49
|
+
]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (typeof schema.max === 'string') {
|
|
53
|
+
const max = BigInt(schema.max);
|
|
54
|
+
if (subject > max) {
|
|
55
|
+
return error([
|
|
56
|
+
{
|
|
57
|
+
code: ERROR_CODE.invalidRange,
|
|
58
|
+
path: errorPath,
|
|
59
|
+
subject,
|
|
60
|
+
schema,
|
|
61
|
+
},
|
|
62
|
+
]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return success(subject);
|
|
66
|
+
}
|
|
27
67
|
function parseBoolean(errorPath, schema, subject) {
|
|
28
68
|
if (typeof subject !== 'boolean') {
|
|
29
69
|
return error([
|
|
@@ -143,7 +183,7 @@ function parseArray(errorPath, schema, subject) {
|
|
|
143
183
|
const updatedErrorPath = [...errorPath, i];
|
|
144
184
|
const parsed = parseRecursively(updatedErrorPath, nestedSchema, nestedValue);
|
|
145
185
|
if (parsed.error) {
|
|
146
|
-
invalidSubjects = invalidSubjects
|
|
186
|
+
invalidSubjects = invalidSubjects ?? [];
|
|
147
187
|
for (const invalidSubject of parsed.error) {
|
|
148
188
|
invalidSubjects.push(invalidSubject);
|
|
149
189
|
}
|
|
@@ -162,7 +202,7 @@ function parseArray(errorPath, schema, subject) {
|
|
|
162
202
|
]);
|
|
163
203
|
}
|
|
164
204
|
}
|
|
165
|
-
if (invalidSubjects
|
|
205
|
+
if (invalidSubjects?.length) {
|
|
166
206
|
return error(invalidSubjects);
|
|
167
207
|
}
|
|
168
208
|
if (typeof schema.minLength === 'number' &&
|
|
@@ -201,7 +241,7 @@ function parseObject(errorPath, schema, subject) {
|
|
|
201
241
|
const updatedErrorPath = [...errorPath, key];
|
|
202
242
|
const parsed = parseRecursively(updatedErrorPath, nestedSchema, nestedValue);
|
|
203
243
|
if (parsed.error) {
|
|
204
|
-
invalidSubjects = invalidSubjects
|
|
244
|
+
invalidSubjects = invalidSubjects ?? [];
|
|
205
245
|
for (const invalidSubject of parsed.error) {
|
|
206
246
|
invalidSubjects.push(invalidSubject);
|
|
207
247
|
}
|
|
@@ -211,7 +251,7 @@ function parseObject(errorPath, schema, subject) {
|
|
|
211
251
|
result[key] = parsed.data;
|
|
212
252
|
}
|
|
213
253
|
}
|
|
214
|
-
if (invalidSubjects
|
|
254
|
+
if (invalidSubjects?.length) {
|
|
215
255
|
return error(invalidSubjects);
|
|
216
256
|
}
|
|
217
257
|
return success(result);
|
|
@@ -241,7 +281,7 @@ function parseRecord(errorPath, schema, subject) {
|
|
|
241
281
|
const updatedErrorPath = [...errorPath, key];
|
|
242
282
|
const parsed = parseRecursively(updatedErrorPath, schema.of, nestedValue);
|
|
243
283
|
if (parsed.error) {
|
|
244
|
-
invalidSubjects = invalidSubjects
|
|
284
|
+
invalidSubjects = invalidSubjects ?? [];
|
|
245
285
|
for (const invalidSubject of parsed.error) {
|
|
246
286
|
invalidSubjects.push(invalidSubject);
|
|
247
287
|
}
|
|
@@ -272,7 +312,7 @@ function parseRecord(errorPath, schema, subject) {
|
|
|
272
312
|
},
|
|
273
313
|
]);
|
|
274
314
|
}
|
|
275
|
-
if (invalidSubjects
|
|
315
|
+
if (invalidSubjects?.length) {
|
|
276
316
|
return error(invalidSubjects);
|
|
277
317
|
}
|
|
278
318
|
return success(result);
|
|
@@ -296,7 +336,7 @@ function parseTuple(errorPath, schema, subject) {
|
|
|
296
336
|
const updatedErrorPath = [...errorPath, i];
|
|
297
337
|
const parsed = parseRecursively(updatedErrorPath, nestedSchema, nestedValue);
|
|
298
338
|
if (parsed.error) {
|
|
299
|
-
invalidSubjects = invalidSubjects
|
|
339
|
+
invalidSubjects = invalidSubjects ?? [];
|
|
300
340
|
for (const invalidSubject of parsed.error) {
|
|
301
341
|
invalidSubjects.push(invalidSubject);
|
|
302
342
|
}
|
|
@@ -304,7 +344,7 @@ function parseTuple(errorPath, schema, subject) {
|
|
|
304
344
|
}
|
|
305
345
|
result.push(parsed.data);
|
|
306
346
|
}
|
|
307
|
-
if (invalidSubjects
|
|
347
|
+
if (invalidSubjects?.length) {
|
|
308
348
|
return error(invalidSubjects);
|
|
309
349
|
}
|
|
310
350
|
return success(result);
|
package/dist/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/struct.d.ts
CHANGED
|
@@ -14,6 +14,9 @@ export declare function literal<T extends string | number | boolean>(of: T): Str
|
|
|
14
14
|
export declare function number(): Struct<{
|
|
15
15
|
type: "number";
|
|
16
16
|
}>;
|
|
17
|
+
export declare function bigint(): Struct<{
|
|
18
|
+
type: "bigint";
|
|
19
|
+
}>;
|
|
17
20
|
export declare function string(): Struct<{
|
|
18
21
|
type: "string";
|
|
19
22
|
}>;
|
|
@@ -28,14 +31,14 @@ export declare function object<T extends Record<string, StructShape<Schema>>>(of
|
|
|
28
31
|
type: "object";
|
|
29
32
|
of: { [K in keyof T]: T[K]["__schema"]; };
|
|
30
33
|
}>;
|
|
31
|
-
export declare function record<T extends StructShape<Schema
|
|
32
|
-
type:
|
|
33
|
-
of: T[
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
type:
|
|
37
|
-
of: T[
|
|
38
|
-
key
|
|
34
|
+
export declare function record<T extends StructShape<Schema>, U extends StructShape<StringSchema> | undefined>(of: T, key?: U): Struct<{
|
|
35
|
+
type: "record";
|
|
36
|
+
of: T["__schema"];
|
|
37
|
+
key: NonNullable<U>["__schema"];
|
|
38
|
+
} | {
|
|
39
|
+
type: "record";
|
|
40
|
+
of: T["__schema"];
|
|
41
|
+
key?: undefined;
|
|
39
42
|
}>;
|
|
40
43
|
export declare function tuple<T extends [StructShape<Schema>, ...Array<StructShape<Schema>>]>(of: T): Struct<{
|
|
41
44
|
readonly type: "tuple";
|
package/dist/struct.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EAGN,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,MAAM,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEvE,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AA0ElE;;IAEI;AAEJ,wBAAgB,OAAO;;GAEtB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC;;;GAEjE;AAED,wBAAgB,MAAM;;GAErB;AAED,wBAAgB,MAAM;;GAErB;AAED,wBAAgB,MAAM;;GAErB;AAED;;IAEI;AAEJ,wBAAgB,KAAK,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;;;GAKzD;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;;;GAW1E;AAED,wBAAgB,MAAM,CACpB,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAC7B,CAAC,SAAS,WAAW,CAAC,YAAY,CAAC,GAAG,SAAS,EAC/C,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;;;;;;;;GAUf;AAED,wBAAgB,KAAK,CACnB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAC9D,EAAE,EAAE,CAAC;;;GAON;AAED,wBAAgB,KAAK,CACnB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAC9D,EAAE,EAAE,CAAC;UAEG,OAAO;;GAahB"}
|
package/dist/struct.js
CHANGED
|
@@ -38,10 +38,20 @@ export function makeStruct(schema) {
|
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
if (params.has('min')) {
|
|
41
|
-
|
|
41
|
+
if (schema.type === 'bigint') {
|
|
42
|
+
result.min = (min) => makeStruct({ ...schema, min });
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
result.min = (min) => makeStruct({ ...schema, min });
|
|
46
|
+
}
|
|
42
47
|
}
|
|
43
48
|
if (params.has('max')) {
|
|
44
|
-
|
|
49
|
+
if (schema.type === 'bigint') {
|
|
50
|
+
result.max = (max) => makeStruct({ ...schema, max });
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
result.max = (max) => makeStruct({ ...schema, max });
|
|
54
|
+
}
|
|
45
55
|
}
|
|
46
56
|
if (params.has('minLength')) {
|
|
47
57
|
result.minLength = (minLength) => makeStruct({ ...schema, minLength });
|
|
@@ -63,6 +73,9 @@ export function literal(of) {
|
|
|
63
73
|
export function number() {
|
|
64
74
|
return makeStruct({ type: 'number' });
|
|
65
75
|
}
|
|
76
|
+
export function bigint() {
|
|
77
|
+
return makeStruct({ type: 'bigint' });
|
|
78
|
+
}
|
|
66
79
|
export function string() {
|
|
67
80
|
return makeStruct({ type: 'string' });
|
|
68
81
|
}
|
|
@@ -86,14 +99,13 @@ export function object(of) {
|
|
|
86
99
|
return makeStruct(schema);
|
|
87
100
|
}
|
|
88
101
|
export function record(of, key) {
|
|
89
|
-
|
|
90
|
-
|
|
102
|
+
return makeStruct(key
|
|
103
|
+
? {
|
|
91
104
|
type: 'record',
|
|
92
105
|
of: of.__schema,
|
|
93
106
|
key: key.__schema,
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return makeStruct({ type: 'record', of: of.__schema });
|
|
107
|
+
}
|
|
108
|
+
: { type: 'record', of: of.__schema });
|
|
97
109
|
}
|
|
98
110
|
export function tuple(of) {
|
|
99
111
|
const schema = {
|
package/dist/struct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
|
package/dist/types/infer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Schema, ArraySchema, ObjectSchema, RecordSchema, TupleSchema, UnionSchema, PrimitiveSchema, BooleanSchema, LiteralSchema, NumberSchema, StringSchema, BrandSchema } from './schema';
|
|
1
|
+
import type { Schema, ArraySchema, ObjectSchema, RecordSchema, TupleSchema, UnionSchema, PrimitiveSchema, BigIntSchema, BooleanSchema, LiteralSchema, NumberSchema, StringSchema, BrandSchema } from './schema';
|
|
2
2
|
import type { StructShape } from './struct';
|
|
3
3
|
import type { PrettifyObject } from './utils';
|
|
4
4
|
import type { ExtendParams, ExtendBrand } from './extensions';
|
|
@@ -10,7 +10,7 @@ export type InferSchema<T> = ExtendParams<T, T extends PrimitiveSchema ? InferPr
|
|
|
10
10
|
export type InferBrand<T extends BrandSchema> = T extends BrandSchema<infer Category, infer SubCategory> ? Category extends string ? {
|
|
11
11
|
[K in `__${Category}`]: SubCategory;
|
|
12
12
|
} : never : never;
|
|
13
|
-
export type InferPrimitive<T> = T extends
|
|
13
|
+
export type InferPrimitive<T> = T extends BigIntSchema ? bigint : T extends BooleanSchema ? boolean : T extends NumberSchema ? number : T extends StringSchema ? string : T extends LiteralSchema<infer U> ? U : never;
|
|
14
14
|
export type InferArray<T> = T extends ArraySchema<infer U> ? Array<InferSchema<U>> : never;
|
|
15
15
|
export type InferObject<T> = T extends ObjectSchema<infer U> ? PrettifyObject<{
|
|
16
16
|
[K in keyof U as U[K] extends {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../../src/types/infer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAEN,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EAEX,eAAe,EAEf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EAEZ,WAAW,EACZ,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE7D;;IAEI;AACJ,MAAM,MAAM,KAAK,CAAC,CAAC,IACjB,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAElE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,YAAY,CACvC,CAAC,EACD,CAAC,SAAS,eAAe,GACrB,cAAc,CAAC,CAAC,CAAC,GACjB,CAAC,SAAS,WAAW,GACnB,UAAU,CAAC,CAAC,CAAC,GACb,CAAC,SAAS,YAAY,GACpB,WAAW,CAAC,CAAC,CAAC,GACd,CAAC,SAAS,YAAY,GACpB,WAAW,CAAC,CAAC,CAAC,GACd,CAAC,SAAS,WAAW,GACnB,UAAU,CAAC,CAAC,CAAC,GACb,CAAC,SAAS,WAAW,GACnB,UAAU,CAAC,CAAC,CAAC,GACb,KAAK,CACpB,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,WAAW,IAC1C,CAAC,SAAS,WAAW,CAAC,MAAM,QAAQ,EAAE,MAAM,WAAW,CAAC,GACpD,QAAQ,SAAS,MAAM,GACrB;KAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,GAAG,WAAW;CAAE,GACvC,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,GAClD,MAAM,GACN,CAAC,SAAS,YAAY,GACpB,MAAM,GACN,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../../src/types/infer.ts"],"names":[],"mappings":"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"}
|
package/dist/types/schema.d.ts
CHANGED
|
@@ -72,7 +72,7 @@ export type PrimitiveSchemaShared = SchemaShared & {
|
|
|
72
72
|
**/
|
|
73
73
|
brand?: BrandSchema;
|
|
74
74
|
};
|
|
75
|
-
export type PrimitiveSchema =
|
|
75
|
+
export type PrimitiveSchema = BigIntSchema | BooleanSchema | LiteralSchema | NumberSchema | StringSchema;
|
|
76
76
|
export type BooleanSchema = PrimitiveSchemaShared & {
|
|
77
77
|
type: 'boolean';
|
|
78
78
|
};
|
|
@@ -86,6 +86,12 @@ export type NumberSchema = PrimitiveSchemaShared & {
|
|
|
86
86
|
min?: number;
|
|
87
87
|
max?: number;
|
|
88
88
|
};
|
|
89
|
+
export type BigIntString = `${bigint}`;
|
|
90
|
+
export type BigIntSchema = PrimitiveSchemaShared & {
|
|
91
|
+
type: 'bigint';
|
|
92
|
+
min?: BigIntString;
|
|
93
|
+
max?: BigIntString;
|
|
94
|
+
};
|
|
89
95
|
export type LiteralSchema<T extends string | number | boolean = string | number | boolean> = PrimitiveSchemaShared & {
|
|
90
96
|
type: 'literal';
|
|
91
97
|
of: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/types/schema.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GACb,eAAe,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,GACpF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,YAAY,GAC7D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,YAAY,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,GACzG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,YAAY,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,YAAY,CAAA;AAExD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG;IACzB;;QAEI;IACJ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;QAEI;IACJ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;QAGI;IACJ,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;IAEI;AAEJ,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,GAAG;IACpD,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,CAAC,CAAA;IACL,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,GAAG;IACrD,IAAI,EAAE,QAAQ,CAAA;IACd,EAAE,EAAE,CAAC,CAAA;CACN,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,GAAG;IACrD,IAAI,EAAE,QAAQ,CAAA;IACd,EAAE,EAAE,CAAC,CAAA;IACL,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,GAAG;IACpD,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,CAAC,CAAA;CACN,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,GAAG;IACpD,IAAI,EAAE,OAAO,CAAA;IACb,EAAE,EAAE,CAAC,CAAA;CACN,CAAA;AAED;;IAEI;AAEJ,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG;IACjD;;QAEI;IACJ,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/types/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/types/struct.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ParseResult } from './utils';
|
|
2
2
|
import type { StandardSchemaV1 } from './standard-schema';
|
|
3
|
-
import type { Schema, ArraySchema, ObjectSchema, RecordSchema, TupleSchema, UnionSchema, BrandSchema, BooleanSchema, LiteralSchema, NumberSchema, StringSchema } from './schema';
|
|
3
|
+
import type { Schema, ArraySchema, ObjectSchema, RecordSchema, TupleSchema, UnionSchema, BrandSchema, BigIntSchema, BooleanSchema, LiteralSchema, NumberSchema, StringSchema, BigIntString } from './schema';
|
|
4
4
|
import type { InferSchema } from './infer';
|
|
5
5
|
export type Struct<T extends Schema> = Omit<Pick<{
|
|
6
6
|
optional: () => Struct<T & {
|
|
@@ -18,12 +18,16 @@ export type Struct<T extends Schema> = Omit<Pick<{
|
|
|
18
18
|
maxLength: <U extends number>(maxLength: U) => Struct<T & {
|
|
19
19
|
maxLength: U;
|
|
20
20
|
}>;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
max: <U extends number>(max: U) => Struct<T & {
|
|
21
|
+
max: T extends BigIntSchema ? <U extends BigIntString>(max: U) => Struct<T & {
|
|
22
|
+
max: U;
|
|
23
|
+
}> : <U extends number>(max: U) => Struct<T & {
|
|
25
24
|
max: U;
|
|
26
25
|
}>;
|
|
26
|
+
min: T extends BigIntSchema ? <U extends BigIntString>(min: U) => Struct<T & {
|
|
27
|
+
min: U;
|
|
28
|
+
}> : <U extends number>(min: U) => Struct<T & {
|
|
29
|
+
min: U;
|
|
30
|
+
}>;
|
|
27
31
|
description: <U extends string>(description: U) => Struct<T & {
|
|
28
32
|
description: U;
|
|
29
33
|
}>;
|
|
@@ -36,6 +40,7 @@ export type StructShape<T> = {
|
|
|
36
40
|
__schema: T;
|
|
37
41
|
};
|
|
38
42
|
type ParamsBySchemaType = {
|
|
43
|
+
bigint: ExtractParams<BigIntSchema>;
|
|
39
44
|
boolean: ExtractParams<BooleanSchema>;
|
|
40
45
|
literal: ExtractParams<LiteralSchema>;
|
|
41
46
|
number: ExtractParams<NumberSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../src/types/struct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EACV,MAAM,EAEN,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EAEX,WAAW,EAEX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACb,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACzC,IAAI,CACF;IACE,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;IAC9C,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;IAE9C,KAAK,EAAE,CACL,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAErE,GAAG,IAAI,EAAE,CAAC,KACP,MAAM,CACT,CAAC,GAAG;QACF,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC/B,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GACjB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GACtC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GACjB,KAAK,CAAA;KACZ,CACF,CAAA;IAED,SAAS,EAAE,CAAC,CAAC,SAAS,MAAM,EAC1B,SAAS,EAAE,CAAC,KACT,MAAM,CAAC,CAAC,GAAG;QAAE,SAAS,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../src/types/struct.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const PARAMS_BY_SCHEMA_TYPE = {
|
|
|
8
8
|
boolean: new Set(['optional', 'nullable', 'brand', 'description'] as const),
|
|
9
9
|
literal: new Set(['optional', 'nullable', 'brand', 'description'] as const),
|
|
10
10
|
number: new Set(['optional', 'nullable', 'brand', 'description', 'min', 'max'] as const),
|
|
11
|
+
bigint: new Set(['optional', 'nullable', 'brand', 'description', 'min', 'max'] as const),
|
|
11
12
|
string: new Set(['optional', 'nullable', 'brand', 'description', 'minLength', 'maxLength'] as const),
|
|
12
13
|
//
|
|
13
14
|
array: new Set(['optional', 'nullable', 'description', 'minLength', 'maxLength'] as const),
|
package/src/index.ts
CHANGED
|
@@ -8,6 +8,7 @@ export {
|
|
|
8
8
|
boolean,
|
|
9
9
|
literal,
|
|
10
10
|
number,
|
|
11
|
+
bigint,
|
|
11
12
|
string,
|
|
12
13
|
//
|
|
13
14
|
array,
|
|
@@ -52,10 +53,13 @@ export type {
|
|
|
52
53
|
//
|
|
53
54
|
BrandSchema,
|
|
54
55
|
//
|
|
56
|
+
BigIntSchema,
|
|
55
57
|
BooleanSchema,
|
|
56
58
|
LiteralSchema,
|
|
57
59
|
NumberSchema,
|
|
58
60
|
StringSchema,
|
|
61
|
+
//
|
|
62
|
+
BigIntString,
|
|
59
63
|
} from './types/schema'
|
|
60
64
|
|
|
61
65
|
export type { Struct, StructShape, StructParams } from './types/struct'
|
package/src/parse.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
TupleSchema,
|
|
14
14
|
UnionSchema,
|
|
15
15
|
//
|
|
16
|
+
BigIntSchema,
|
|
16
17
|
BooleanSchema,
|
|
17
18
|
LiteralSchema,
|
|
18
19
|
NumberSchema,
|
|
@@ -20,6 +21,7 @@ import type {
|
|
|
20
21
|
} from './types/schema'
|
|
21
22
|
|
|
22
23
|
const PARSE_FN_BY_SCHEMA_KIND = {
|
|
24
|
+
bigint: parseBigInt,
|
|
23
25
|
boolean: parseBoolean,
|
|
24
26
|
literal: parseLiteral,
|
|
25
27
|
number: parseNumber,
|
|
@@ -61,6 +63,55 @@ function parseRecursively(
|
|
|
61
63
|
)
|
|
62
64
|
}
|
|
63
65
|
|
|
66
|
+
function parseBigInt(
|
|
67
|
+
errorPath: ErrorPath,
|
|
68
|
+
schema: BigIntSchema,
|
|
69
|
+
subject: unknown
|
|
70
|
+
) {
|
|
71
|
+
if (typeof subject !== 'bigint') {
|
|
72
|
+
return error([
|
|
73
|
+
{
|
|
74
|
+
code: ERROR_CODE.invalidType,
|
|
75
|
+
path: errorPath,
|
|
76
|
+
subject,
|
|
77
|
+
schema,
|
|
78
|
+
},
|
|
79
|
+
])
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (typeof schema.min === 'string') {
|
|
83
|
+
const min = BigInt(schema.min)
|
|
84
|
+
|
|
85
|
+
if (subject < min) {
|
|
86
|
+
return error([
|
|
87
|
+
{
|
|
88
|
+
code: ERROR_CODE.invalidRange,
|
|
89
|
+
path: errorPath,
|
|
90
|
+
subject,
|
|
91
|
+
schema,
|
|
92
|
+
},
|
|
93
|
+
])
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (typeof schema.max === 'string') {
|
|
98
|
+
const max = BigInt(schema.max)
|
|
99
|
+
|
|
100
|
+
if (subject > max) {
|
|
101
|
+
return error([
|
|
102
|
+
{
|
|
103
|
+
code: ERROR_CODE.invalidRange,
|
|
104
|
+
path: errorPath,
|
|
105
|
+
subject,
|
|
106
|
+
schema,
|
|
107
|
+
},
|
|
108
|
+
])
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return success(subject)
|
|
113
|
+
}
|
|
114
|
+
|
|
64
115
|
function parseBoolean(
|
|
65
116
|
errorPath: ErrorPath,
|
|
66
117
|
schema: BooleanSchema,
|
package/src/struct.ts
CHANGED
|
@@ -2,7 +2,12 @@ import { PARAMS_BY_SCHEMA_TYPE, STANDARD_SCHEMA } from './constants'
|
|
|
2
2
|
import { parse } from './parse'
|
|
3
3
|
|
|
4
4
|
import type { StandardSchemaV1 } from './types/standard-schema'
|
|
5
|
-
import type {
|
|
5
|
+
import type {
|
|
6
|
+
Schema,
|
|
7
|
+
BigIntString,
|
|
8
|
+
BrandSchema,
|
|
9
|
+
StringSchema,
|
|
10
|
+
} from './types/schema'
|
|
6
11
|
import type { Struct, StructParams, StructShape } from './types/struct'
|
|
7
12
|
|
|
8
13
|
export function makeStruct<T extends Schema>(schema: T): Struct<T>
|
|
@@ -51,11 +56,19 @@ export function makeStruct(schema: Schema) {
|
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
if (params.has('min')) {
|
|
54
|
-
|
|
59
|
+
if (schema.type === 'bigint') {
|
|
60
|
+
result.min = (min: BigIntString) => makeStruct({ ...schema, min })
|
|
61
|
+
} else {
|
|
62
|
+
result.min = (min: number) => makeStruct({ ...schema, min })
|
|
63
|
+
}
|
|
55
64
|
}
|
|
56
65
|
|
|
57
66
|
if (params.has('max')) {
|
|
58
|
-
|
|
67
|
+
if (schema.type === 'bigint') {
|
|
68
|
+
result.max = (max: BigIntString) => makeStruct({ ...schema, max })
|
|
69
|
+
} else {
|
|
70
|
+
result.max = (max: number) => makeStruct({ ...schema, max })
|
|
71
|
+
}
|
|
59
72
|
}
|
|
60
73
|
|
|
61
74
|
if (params.has('minLength')) {
|
|
@@ -87,6 +100,10 @@ export function number() {
|
|
|
87
100
|
return makeStruct({ type: 'number' })
|
|
88
101
|
}
|
|
89
102
|
|
|
103
|
+
export function bigint() {
|
|
104
|
+
return makeStruct({ type: 'bigint' })
|
|
105
|
+
}
|
|
106
|
+
|
|
90
107
|
export function string() {
|
|
91
108
|
return makeStruct({ type: 'string' })
|
|
92
109
|
}
|
|
@@ -115,29 +132,19 @@ export function object<T extends Record<string, StructShape<Schema>>>(of: T) {
|
|
|
115
132
|
return makeStruct(schema)
|
|
116
133
|
}
|
|
117
134
|
|
|
118
|
-
export function record<T extends StructShape<Schema>>(
|
|
119
|
-
of: T,
|
|
120
|
-
key?: undefined
|
|
121
|
-
): Struct<{ type: 'record'; of: T['__schema'] }>
|
|
122
|
-
|
|
123
135
|
export function record<
|
|
124
136
|
T extends StructShape<Schema>,
|
|
125
|
-
U extends StructShape<StringSchema
|
|
126
|
-
>(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
type: 'record',
|
|
135
|
-
|
|
136
|
-
key: key.__schema,
|
|
137
|
-
})
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return makeStruct({ type: 'record', of: of.__schema })
|
|
137
|
+
U extends StructShape<StringSchema> | undefined,
|
|
138
|
+
>(of: T, key?: U) {
|
|
139
|
+
return makeStruct(
|
|
140
|
+
key
|
|
141
|
+
? {
|
|
142
|
+
type: 'record',
|
|
143
|
+
of: of.__schema as T['__schema'],
|
|
144
|
+
key: key.__schema as (typeof key)['__schema'],
|
|
145
|
+
}
|
|
146
|
+
: { type: 'record', of: of.__schema as T['__schema'] }
|
|
147
|
+
)
|
|
141
148
|
}
|
|
142
149
|
|
|
143
150
|
export function tuple<
|
package/src/types/infer.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
//
|
|
10
10
|
PrimitiveSchema,
|
|
11
11
|
//
|
|
12
|
+
BigIntSchema,
|
|
12
13
|
BooleanSchema,
|
|
13
14
|
LiteralSchema,
|
|
14
15
|
NumberSchema,
|
|
@@ -52,15 +53,17 @@ export type InferBrand<T extends BrandSchema> =
|
|
|
52
53
|
: never
|
|
53
54
|
: never
|
|
54
55
|
|
|
55
|
-
export type InferPrimitive<T> = T extends
|
|
56
|
-
?
|
|
57
|
-
: T extends
|
|
58
|
-
?
|
|
59
|
-
: T extends
|
|
60
|
-
?
|
|
61
|
-
: T extends
|
|
62
|
-
?
|
|
63
|
-
:
|
|
56
|
+
export type InferPrimitive<T> = T extends BigIntSchema
|
|
57
|
+
? bigint
|
|
58
|
+
: T extends BooleanSchema
|
|
59
|
+
? boolean
|
|
60
|
+
: T extends NumberSchema
|
|
61
|
+
? number
|
|
62
|
+
: T extends StringSchema
|
|
63
|
+
? string
|
|
64
|
+
: T extends LiteralSchema<infer U>
|
|
65
|
+
? U
|
|
66
|
+
: never
|
|
64
67
|
|
|
65
68
|
export type InferArray<T> =
|
|
66
69
|
T extends ArraySchema<infer U> ? Array<InferSchema<U>> : never
|
package/src/types/schema.ts
CHANGED
|
@@ -74,10 +74,11 @@ export type PrimitiveSchemaShared = SchemaShared & {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
export type PrimitiveSchema =
|
|
77
|
-
|
|
|
78
|
-
| NumberSchema
|
|
77
|
+
| BigIntSchema
|
|
79
78
|
| BooleanSchema
|
|
80
79
|
| LiteralSchema
|
|
80
|
+
| NumberSchema
|
|
81
|
+
| StringSchema
|
|
81
82
|
|
|
82
83
|
export type BooleanSchema = PrimitiveSchemaShared & {
|
|
83
84
|
type: 'boolean'
|
|
@@ -95,6 +96,14 @@ export type NumberSchema = PrimitiveSchemaShared & {
|
|
|
95
96
|
max?: number /* <= */
|
|
96
97
|
}
|
|
97
98
|
|
|
99
|
+
export type BigIntString = `${bigint}`
|
|
100
|
+
|
|
101
|
+
export type BigIntSchema = PrimitiveSchemaShared & {
|
|
102
|
+
type: 'bigint'
|
|
103
|
+
min?: BigIntString /* >= */
|
|
104
|
+
max?: BigIntString /* <= */
|
|
105
|
+
}
|
|
106
|
+
|
|
98
107
|
export type LiteralSchema<
|
|
99
108
|
T extends string | number | boolean = string | number | boolean,
|
|
100
109
|
> = PrimitiveSchemaShared & {
|
package/src/types/struct.ts
CHANGED
|
@@ -12,10 +12,13 @@ import type {
|
|
|
12
12
|
//
|
|
13
13
|
BrandSchema,
|
|
14
14
|
//
|
|
15
|
+
BigIntSchema,
|
|
15
16
|
BooleanSchema,
|
|
16
17
|
LiteralSchema,
|
|
17
18
|
NumberSchema,
|
|
18
19
|
StringSchema,
|
|
20
|
+
//
|
|
21
|
+
BigIntString,
|
|
19
22
|
} from './schema'
|
|
20
23
|
|
|
21
24
|
import type { InferSchema } from './infer'
|
|
@@ -43,12 +46,18 @@ export type Struct<T extends Schema> = Omit<
|
|
|
43
46
|
minLength: <U extends number>(
|
|
44
47
|
minLength: U
|
|
45
48
|
) => Struct<T & { minLength: U }>
|
|
49
|
+
|
|
46
50
|
maxLength: <U extends number>(
|
|
47
51
|
maxLength: U
|
|
48
52
|
) => Struct<T & { maxLength: U }>
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
max: T extends BigIntSchema
|
|
55
|
+
? <U extends BigIntString>(max: U) => Struct<T & { max: U }>
|
|
56
|
+
: <U extends number>(max: U) => Struct<T & { max: U }>
|
|
57
|
+
|
|
58
|
+
min: T extends BigIntSchema
|
|
59
|
+
? <U extends BigIntString>(min: U) => Struct<T & { min: U }>
|
|
60
|
+
: <U extends number>(min: U) => Struct<T & { min: U }>
|
|
52
61
|
|
|
53
62
|
description: <U extends string>(
|
|
54
63
|
description: U
|
|
@@ -72,6 +81,7 @@ type BrandSubType =
|
|
|
72
81
|
export type StructShape<T> = { __schema: T }
|
|
73
82
|
|
|
74
83
|
type ParamsBySchemaType = {
|
|
84
|
+
bigint: ExtractParams<BigIntSchema>
|
|
75
85
|
boolean: ExtractParams<BooleanSchema>
|
|
76
86
|
literal: ExtractParams<LiteralSchema>
|
|
77
87
|
number: ExtractParams<NumberSchema>
|