typebox 1.0.61 → 1.0.63
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/build/compile/validator.d.mts +1 -1
- package/build/type/action/indexed.d.mts +1 -1
- package/build/type/action/omit.d.mts +1 -1
- package/build/type/action/pick.d.mts +1 -1
- package/build/type/script/parser.mjs +1 -0
- package/build/type/types/schema.d.mts +1 -1
- package/package.json +1 -1
- package/readme.md +42 -43
|
@@ -34,7 +34,7 @@ export declare class Validator<Context extends TProperties = TProperties, Type e
|
|
|
34
34
|
/** Clones this validator. */
|
|
35
35
|
Clone(): Validator<Context, Type>;
|
|
36
36
|
/** Parses a value */
|
|
37
|
-
Parse(value: unknown):
|
|
37
|
+
Parse(value: unknown): Encode;
|
|
38
38
|
/** Decodes a value */
|
|
39
39
|
Decode(value: unknown): Decode;
|
|
40
40
|
/** Encodes a value */
|
|
@@ -9,6 +9,6 @@ export declare function IndexDeferred<Type extends TSchema, Indexer extends TSch
|
|
|
9
9
|
/** Applies a Index action using the given types. */
|
|
10
10
|
export type TIndex<Type extends TSchema, Indexer extends TSchema> = (TInstantiate<{}, TIndexDeferred<Type, Indexer>>);
|
|
11
11
|
/** Applies a Index action using the given types. */
|
|
12
|
-
export declare function Index<Type extends TSchema, Indexer extends PropertyKey[]>(type: Type, indexer: [...Indexer], options?: TSchemaOptions): TIndex<Type, TKeysToIndexer<Indexer>>;
|
|
12
|
+
export declare function Index<Type extends TSchema, Indexer extends PropertyKey[]>(type: Type, indexer: readonly [...Indexer], options?: TSchemaOptions): TIndex<Type, TKeysToIndexer<Indexer>>;
|
|
13
13
|
/** Applies a Index action using the given types. */
|
|
14
14
|
export declare function Index<Type extends TSchema, Indexer extends TSchema>(type: Type, indexer: Indexer, options?: TSchemaOptions): TIndex<Type, Indexer>;
|
|
@@ -9,6 +9,6 @@ export declare function OmitDeferred<Type extends TSchema, Indexer extends TSche
|
|
|
9
9
|
/** Applies a Omit action using the given types. */
|
|
10
10
|
export type TOmit<Type extends TSchema, Indexer extends TSchema> = (TInstantiate<{}, TOmitDeferred<Type, Indexer>>);
|
|
11
11
|
/** Applies a Omit action using the given types. */
|
|
12
|
-
export declare function Omit<Type extends TSchema, Indexer extends PropertyKey[]>(type: Type, indexer: [...Indexer], options?: TSchemaOptions): TOmit<Type, TKeysToIndexer<Indexer>>;
|
|
12
|
+
export declare function Omit<Type extends TSchema, Indexer extends PropertyKey[]>(type: Type, indexer: readonly [...Indexer], options?: TSchemaOptions): TOmit<Type, TKeysToIndexer<Indexer>>;
|
|
13
13
|
/** Applies a Omit action using the given types. */
|
|
14
14
|
export declare function Omit<Type extends TSchema, Indexer extends TSchema>(type: Type, indexer: Indexer, options?: TSchemaOptions): TOmit<Type, Indexer>;
|
|
@@ -9,6 +9,6 @@ export declare function PickDeferred<Type extends TSchema, Indexer extends TSche
|
|
|
9
9
|
/** Applies a Pick action using the given types. */
|
|
10
10
|
export type TPick<Type extends TSchema, Indexer extends TSchema> = (TInstantiate<{}, TPickDeferred<Type, Indexer>>);
|
|
11
11
|
/** Applies a Pick action using the given types. */
|
|
12
|
-
export declare function Pick<Type extends TSchema, Indexer extends PropertyKey[]>(type: Type, indexer: [...Indexer], options?: TSchemaOptions): TPick<Type, TKeysToIndexer<Indexer>>;
|
|
12
|
+
export declare function Pick<Type extends TSchema, Indexer extends PropertyKey[]>(type: Type, indexer: readonly [...Indexer], options?: TSchemaOptions): TPick<Type, TKeysToIndexer<Indexer>>;
|
|
13
13
|
/** Applies a Pick action using the given types. */
|
|
14
14
|
export declare function Pick<Type extends TSchema, Indexer extends TSchema>(type: Type, indexer: Indexer, options?: TSchemaOptions): TPick<Type, Indexer>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// deno-fmt-ignore-file
|
|
2
2
|
// deno-lint-ignore-file
|
|
3
|
+
// auto-generated: design/syntax/syntax.ts
|
|
3
4
|
import * as S from './mapping.mjs';
|
|
4
5
|
import * as Token from './token/index.mjs';
|
|
5
6
|
const If = (result, left, right = () => []) => result.length === 2 ? left(result) : right();
|
|
@@ -152,7 +152,7 @@ export interface TNumberOptions extends TSchemaOptions {
|
|
|
152
152
|
*/
|
|
153
153
|
multipleOf?: number | bigint;
|
|
154
154
|
}
|
|
155
|
-
export type TFormat = 'date-time' | 'date' | 'duration' | 'email' | 'hostname' | 'idn-email' | 'idn-hostname' | 'ipv4' | 'ipv6' | 'iri-reference' | 'iri' | 'json-pointer-uri-fragment' | 'json-pointer' | 'json-string' | 'regex' | 'relative-json-pointer' | 'time' | 'uri-reference' | 'uri-template' | 'url' | 'uuid' | ({} & string);
|
|
155
|
+
export type TFormat = 'date-time' | 'date' | 'duration' | 'email' | 'hostname' | 'idn-email' | 'idn-hostname' | 'ipv4' | 'ipv6' | 'iri-reference' | 'iri' | 'json-pointer-uri-fragment' | 'json-pointer' | 'json-string' | 'regex' | 'relative-json-pointer' | 'time' | 'uri-reference' | 'uri-template' | 'uri' | 'url' | 'uuid' | ({} & string);
|
|
156
156
|
export interface TStringOptions extends TSchemaOptions {
|
|
157
157
|
/**
|
|
158
158
|
* Specifies the expected string format.
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -61,8 +61,8 @@ License: MIT
|
|
|
61
61
|
- [Type](#Type)
|
|
62
62
|
- [Value](#Value)
|
|
63
63
|
- [Compile](#Compile)
|
|
64
|
-
- [Schema](#Schema)
|
|
65
64
|
- [Script](#Script)
|
|
65
|
+
- [Schema](#Schema)
|
|
66
66
|
- [Contribute](#Contribute)
|
|
67
67
|
|
|
68
68
|
## Upgrade
|
|
@@ -180,48 +180,6 @@ const A = C.Parse({ // const A: {
|
|
|
180
180
|
}) // } = ...
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
<a name="Schema"></a>
|
|
184
|
-
|
|
185
|
-
## Schema
|
|
186
|
-
|
|
187
|
-
[Example 1](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgYQuYAbApnAvnAMyjTgHIYBPMLAIwgA8B6AYzTEy1ICgfWA7AM7xkcALwo2HABQIucOJWoAuMhBoArLMxikANHLhQsARwCuwIwBMVAbVL09ZCo9IAvUgF198sMWqxgLAEVWXl5ehCFKiwVUj5TEBosKFI8bzCKSMUYsnjE5NTcdPlXLOjYvKSUvANcLlwASl4IQXgAQTEUADoABQBDKAEsGTDRsfGJycZGOH4hODaQgwi4AAZdSc2t7YnpsJXK5PTMtY2d84uxvfkTw6h00rgARkvXy+u4R7v6hre-95m+HEXRBQA) | [Example 2](https://tsplay.dev/mxrl7w)
|
|
188
|
-
|
|
189
|
-
TypeBox is built upon a high-performance validation infrastructure that supports the direct compilation and inference of Json Schema schematics. TypeBox implements Draft 3 to 2020-12 and is compliance tested via the official Json Schema [Test Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite). It offers high-performance JIT compilation with automatic fallback to dynamic checking in JIT restricted environments.
|
|
190
|
-
|
|
191
|
-
### Example
|
|
192
|
-
|
|
193
|
-
The following compiles Json Schema. Type inference is supported.
|
|
194
|
-
|
|
195
|
-
```typescript
|
|
196
|
-
const C = Compile({
|
|
197
|
-
type: 'object',
|
|
198
|
-
required: ['x', 'y', 'z'],
|
|
199
|
-
properties: {
|
|
200
|
-
x: { type: 'number' },
|
|
201
|
-
y: { type: 'number' },
|
|
202
|
-
z: { type: 'number' }
|
|
203
|
-
}
|
|
204
|
-
})
|
|
205
|
-
|
|
206
|
-
const A = C.Parse({ // const A: {
|
|
207
|
-
x: 0, // x: number,
|
|
208
|
-
y: 0, // y: number,
|
|
209
|
-
z: 1 // z: number
|
|
210
|
-
}) // } = ...
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
It can also be used to accelerate remote libraries via Json Schema translation.
|
|
214
|
-
|
|
215
|
-
```typescript
|
|
216
|
-
const C = Compile(x.toJsonSchema(x.object({
|
|
217
|
-
x: x.number(),
|
|
218
|
-
y: x.number(),
|
|
219
|
-
z: x.number()
|
|
220
|
-
})))
|
|
221
|
-
|
|
222
|
-
const A = C.Check(...) // high performance runtime checking
|
|
223
|
-
```
|
|
224
|
-
|
|
225
183
|
## Script
|
|
226
184
|
|
|
227
185
|
[Documentation](https://sinclairzx81.github.io/typebox/#/docs/script/overview) | [Example 1](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgGUBjKYMGVAE0SOqYgB2AZ3gI4AXh5oAdM1bsAFAAMA3nEpw4ZAFxwBAVxDFUUADTrNSXSNYCA5uY1wAXrtIQANqgCGA9QF8lAEpNULDwiMio6PC6OH5hUV0EAHliACtUJhgAHhUnGMKi4rC4zR1EADlDYzMCkobG0vpLZIYYWwd6pp7ispdkgCEITx8Bbt7JqLj-AD5qOIApIUFGJgALVBBvOABJAQ6IITRs4EFqBGlCNCnb0Li8CAysmCpLqFQAR31gD+47npxADaeAo5jwSDw4OceAAupRLmBsGhYMBUEIAY04moKtI8eYrHA8dJzK4iXi4P4FvQ5GwONxkDcFABhHBgfT0oJ8QQiRgSKSoWQsOkKNRifzmVROIEAaTgwD8AGtUEgIBhELDkrLYXAAD56fQeDyUQIhTF3OIJXkMZJpTLZPITc2TfoVBAAVQEZwEOSBCGqRhM5n9ho8sNmpidzsBLTghI9XsEvoQ7U6weqRvDkejAP6ZIT3uTw1GvnTofDUZzDRm81oNJgvk43ig3H2GBMqAETFQ1Gu6AY-MZgva3hgwCYOT7asYs1ucT7fMk+Src9jFQMgageoNRuzK5dscJNgVdm3Bl3lf3hTzbhGXl8Z9Dl6v0RmQA) | [Example 2](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgAkIA3VKOGAC1QGd0NocYADsMbVMIDG6ABQ9OEAK4AbACZwQAQxiTOHbnB6SowMDFTrCaAJSVUZSLA5E4AMQgQ4AXkREAdADKMNrAkgA8VqgQGG4eAHx2DtDwkXAAQprsPshogcEwoRFE0emZCbT0AMIQYEhwmsLqYJo85ogBzmg8QsIwnjmogcamMDJ+49b1jXAA5qjwxJqSANadqAC0PJpicABSAQDyAHJwAbqoWomO8JIQwq1wAN6xEAA0pewAvt6+uWcmZhkAANKKl3J4fI9KHA4GQAFxwYSKEDENjQuBIBFIlFomEALyxyNRUEon2oqQyWSe6KgqE0qjuyjqAG0ANI9ODLVBIErg+rdACymjAYVZcQAugiAIKqZgNaSqUVxOAAHxebPFpPJLhlcqkFlF3PeADVMsAGjBuj48AANPCq-AATXtarwAC08MqfDJ0QAdIG+gAkjwAqmA0FBJC1UIakHFPkHHqaTBaeJ91qBIDweMBiMpUP7KLZQS4hSLWdyvXAwxGo3wwuiK3V7OZGt08BQ4AB+fCae1wxvcuAtiSqdtIe09vDEfuD5tkVtj-B4yf4SSzmHCVCsEnlIG2OhwA6KGBgE9rbqZfgqJlwWkYfOSYJ59D7Y6nc6XcF+VIwv---9DzwCBiAAK1QJ97TgShvzAbAIwKXgAL-Q9nnhOBxj8d5MQw8Z3gJXC-DgMlv1pABHRRgFpdRkJQ+hmQ7PB3jwCdmJXcUgA)
|
|
@@ -266,6 +224,47 @@ type S = Type.Static<typeof S> // type S = {
|
|
|
266
224
|
// }
|
|
267
225
|
```
|
|
268
226
|
|
|
227
|
+
<a name="Schema"></a>
|
|
228
|
+
|
|
229
|
+
## Schema
|
|
230
|
+
|
|
231
|
+
[Documentation](https://sinclairzx81.github.io/typebox/#/docs/schema/overview) | [Example 1](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgYQuYAbApnAvnAMyjTgHIYBPMLAIwgA8B6AYzTEy1ICgfWA7AM7xkcALwo2HABQIucOJWoAuMhBoArLMxikANHLhQsARwCuwIwBMVAbVL09ZCo9IAvUgF198sMWqxgLAEVWXl5ehCFKiwVUj5TEBosKFI8bzCKSMUYsnjE5NTcdPlXLOjYvKSUvANcLlwASl4IQXgAQTEUADoABQBDKAEsGTDRsfGJycZGOH4hODaQgwi4AAZdSc2t7YnpsJXK5PTMtY2d84uxvfkTw6h00rgARkvXy+u4R7v6hre-95m+HEXRBQA) | [Example 2](https://tsplay.dev/mxrl7w)
|
|
232
|
+
|
|
233
|
+
TypeBox is built upon a high-performance validation infrastructure that supports the direct compilation and inference of Json Schema schematics. TypeBox implements Draft 3 to 2020-12 and is compliance tested via the official Json Schema [Test Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite). It offers high-performance JIT compilation with automatic fallback to dynamic checking in JIT restricted environments.
|
|
234
|
+
|
|
235
|
+
### Example
|
|
236
|
+
|
|
237
|
+
The following compiles Json Schema. Type inference is supported.
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
const C = Compile({
|
|
241
|
+
type: 'object',
|
|
242
|
+
required: ['x', 'y', 'z'],
|
|
243
|
+
properties: {
|
|
244
|
+
x: { type: 'number' },
|
|
245
|
+
y: { type: 'number' },
|
|
246
|
+
z: { type: 'number' }
|
|
247
|
+
}
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
const A = C.Parse({ // const A: {
|
|
251
|
+
x: 0, // x: number,
|
|
252
|
+
y: 0, // y: number,
|
|
253
|
+
z: 1 // z: number
|
|
254
|
+
}) // } = ...
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
It can also be used to accelerate remote libraries via Json Schema translation.
|
|
258
|
+
|
|
259
|
+
```typescript
|
|
260
|
+
const C = Compile(x.toJsonSchema(x.object({
|
|
261
|
+
x: x.number(),
|
|
262
|
+
y: x.number(),
|
|
263
|
+
z: x.number()
|
|
264
|
+
})))
|
|
265
|
+
|
|
266
|
+
const A = C.Check(...) // high performance runtime checking
|
|
267
|
+
```
|
|
269
268
|
|
|
270
269
|
## Contribute
|
|
271
270
|
|