@sinclair/typebox 0.33.22 → 0.34.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/build/cjs/compiler/compiler.d.ts +2 -2
- package/build/cjs/compiler/compiler.js +13 -2
- package/build/cjs/errors/errors.js +7 -0
- package/build/cjs/index.d.ts +1 -2
- package/build/cjs/index.js +1 -2
- package/build/cjs/syntax/parse.d.ts +14 -15
- package/build/cjs/syntax/parse.js +6 -5
- package/build/cjs/syntax/runtime.d.ts +17 -4
- package/build/cjs/syntax/runtime.js +180 -27
- package/build/cjs/syntax/static.d.ts +104 -20
- package/build/cjs/type/guard/kind.d.ts +3 -0
- package/build/cjs/type/guard/kind.js +5 -0
- package/build/cjs/type/guard/type.d.ts +3 -0
- package/build/cjs/type/guard/type.js +13 -0
- package/build/cjs/type/index.d.ts +1 -2
- package/build/cjs/type/index.js +1 -2
- package/build/cjs/type/module/index.d.ts +1 -0
- package/build/cjs/type/{strict → module}/index.js +1 -1
- package/build/cjs/type/module/module.d.ts +71 -0
- package/build/cjs/type/module/module.js +34 -0
- package/build/cjs/type/ref/ref.d.ts +4 -7
- package/build/cjs/type/ref/ref.js +3 -11
- package/build/cjs/type/static/static.d.ts +1 -1
- package/build/cjs/type/type/json.d.ts +4 -17
- package/build/cjs/type/type/json.js +52 -68
- package/build/cjs/type/type/type.d.ts +1 -2
- package/build/cjs/type/type/type.js +55 -57
- package/build/cjs/value/cast/cast.js +8 -1
- package/build/cjs/value/check/check.js +8 -1
- package/build/cjs/value/clean/clean.js +8 -1
- package/build/cjs/value/convert/convert.js +7 -0
- package/build/cjs/value/create/create.js +7 -0
- package/build/cjs/value/default/default.js +7 -0
- package/build/cjs/value/transform/decode.js +11 -0
- package/build/cjs/value/transform/encode.js +11 -0
- package/build/esm/compiler/compiler.d.mts +2 -2
- package/build/esm/compiler/compiler.mjs +13 -2
- package/build/esm/errors/errors.mjs +7 -0
- package/build/esm/index.d.mts +1 -2
- package/build/esm/index.mjs +1 -2
- package/build/esm/syntax/parse.d.mts +14 -15
- package/build/esm/syntax/parse.mjs +6 -5
- package/build/esm/syntax/runtime.d.mts +17 -4
- package/build/esm/syntax/runtime.mjs +180 -27
- package/build/esm/syntax/static.d.mts +104 -20
- package/build/esm/type/guard/kind.d.mts +3 -0
- package/build/esm/type/guard/kind.mjs +4 -0
- package/build/esm/type/guard/type.d.mts +3 -0
- package/build/esm/type/guard/type.mjs +12 -0
- package/build/esm/type/index.d.mts +1 -2
- package/build/esm/type/index.mjs +1 -2
- package/build/esm/type/module/index.d.mts +1 -0
- package/build/esm/type/module/index.mjs +1 -0
- package/build/esm/type/module/module.d.mts +71 -0
- package/build/esm/type/module/module.mjs +28 -0
- package/build/esm/type/ref/ref.d.mts +4 -7
- package/build/esm/type/ref/ref.mjs +3 -11
- package/build/esm/type/static/static.d.mts +1 -1
- package/build/esm/type/type/json.d.mts +4 -17
- package/build/esm/type/type/json.mjs +7 -23
- package/build/esm/type/type/type.d.mts +1 -2
- package/build/esm/type/type/type.mjs +1 -2
- package/build/esm/value/cast/cast.mjs +9 -2
- package/build/esm/value/check/check.mjs +9 -2
- package/build/esm/value/clean/clean.mjs +9 -2
- package/build/esm/value/convert/convert.mjs +7 -0
- package/build/esm/value/create/create.mjs +7 -0
- package/build/esm/value/default/default.mjs +7 -0
- package/build/esm/value/transform/decode.mjs +11 -0
- package/build/esm/value/transform/encode.mjs +11 -0
- package/package.json +1 -1
- package/readme.md +219 -97
- package/build/cjs/type/deref/deref.d.ts +0 -22
- package/build/cjs/type/deref/deref.js +0 -106
- package/build/cjs/type/deref/index.d.ts +0 -1
- package/build/cjs/type/deref/index.js +0 -18
- package/build/cjs/type/strict/index.d.ts +0 -1
- package/build/cjs/type/strict/strict.d.ts +0 -12
- package/build/cjs/type/strict/strict.js +0 -16
- package/build/esm/type/deref/deref.d.mts +0 -22
- package/build/esm/type/deref/deref.mjs +0 -102
- package/build/esm/type/deref/index.d.mts +0 -1
- package/build/esm/type/deref/index.mjs +0 -1
- package/build/esm/type/strict/index.d.mts +0 -1
- package/build/esm/type/strict/index.mjs +0 -1
- package/build/esm/type/strict/strict.d.mts +0 -12
- package/build/esm/type/strict/strict.mjs +0 -12
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Deref = Deref;
|
|
5
|
-
const type_1 = require("../clone/type");
|
|
6
|
-
const index_1 = require("../discard/index");
|
|
7
|
-
const value_1 = require("../guard/value");
|
|
8
|
-
// ------------------------------------------------------------------
|
|
9
|
-
// TypeGuard
|
|
10
|
-
// ------------------------------------------------------------------
|
|
11
|
-
const kind_1 = require("../guard/kind");
|
|
12
|
-
function FromRest(schema, references) {
|
|
13
|
-
return schema.map((schema) => Deref(schema, references));
|
|
14
|
-
}
|
|
15
|
-
// prettier-ignore
|
|
16
|
-
function FromProperties(properties, references) {
|
|
17
|
-
const Acc = {};
|
|
18
|
-
for (const K of globalThis.Object.getOwnPropertyNames(properties)) {
|
|
19
|
-
Acc[K] = Deref(properties[K], references);
|
|
20
|
-
}
|
|
21
|
-
return Acc;
|
|
22
|
-
}
|
|
23
|
-
// prettier-ignore
|
|
24
|
-
function FromConstructor(schema, references) {
|
|
25
|
-
schema.parameters = FromRest(schema.parameters, references);
|
|
26
|
-
schema.returns = Deref(schema.returns, references);
|
|
27
|
-
return schema;
|
|
28
|
-
}
|
|
29
|
-
// prettier-ignore
|
|
30
|
-
function FromFunction(schema, references) {
|
|
31
|
-
schema.parameters = FromRest(schema.parameters, references);
|
|
32
|
-
schema.returns = Deref(schema.returns, references);
|
|
33
|
-
return schema;
|
|
34
|
-
}
|
|
35
|
-
// prettier-ignore
|
|
36
|
-
function FromIntersect(schema, references) {
|
|
37
|
-
schema.allOf = FromRest(schema.allOf, references);
|
|
38
|
-
return schema;
|
|
39
|
-
}
|
|
40
|
-
// prettier-ignore
|
|
41
|
-
function FromUnion(schema, references) {
|
|
42
|
-
schema.anyOf = FromRest(schema.anyOf, references);
|
|
43
|
-
return schema;
|
|
44
|
-
}
|
|
45
|
-
// prettier-ignore
|
|
46
|
-
function FromTuple(schema, references) {
|
|
47
|
-
if ((0, value_1.IsUndefined)(schema.items))
|
|
48
|
-
return schema;
|
|
49
|
-
schema.items = FromRest(schema.items, references);
|
|
50
|
-
return schema;
|
|
51
|
-
}
|
|
52
|
-
// prettier-ignore
|
|
53
|
-
function FromArray(schema, references) {
|
|
54
|
-
schema.items = Deref(schema.items, references);
|
|
55
|
-
return schema;
|
|
56
|
-
}
|
|
57
|
-
// prettier-ignore
|
|
58
|
-
function FromObject(schema, references) {
|
|
59
|
-
schema.properties = FromProperties(schema.properties, references);
|
|
60
|
-
return schema;
|
|
61
|
-
}
|
|
62
|
-
// prettier-ignore
|
|
63
|
-
function FromPromise(schema, references) {
|
|
64
|
-
schema.item = Deref(schema.item, references);
|
|
65
|
-
return schema;
|
|
66
|
-
}
|
|
67
|
-
// prettier-ignore
|
|
68
|
-
function FromAsyncIterator(schema, references) {
|
|
69
|
-
schema.items = Deref(schema.items, references);
|
|
70
|
-
return schema;
|
|
71
|
-
}
|
|
72
|
-
// prettier-ignore
|
|
73
|
-
function FromIterator(schema, references) {
|
|
74
|
-
schema.items = Deref(schema.items, references);
|
|
75
|
-
return schema;
|
|
76
|
-
}
|
|
77
|
-
// prettier-ignore
|
|
78
|
-
function FromRef(schema, references) {
|
|
79
|
-
const target = references.find(remote => remote.$id === schema.$ref);
|
|
80
|
-
if (target === undefined)
|
|
81
|
-
throw Error(`Unable to dereference schema with $id ${schema.$ref}`);
|
|
82
|
-
const discard = (0, index_1.Discard)(target, ['$id']);
|
|
83
|
-
return Deref(discard, references);
|
|
84
|
-
}
|
|
85
|
-
// prettier-ignore
|
|
86
|
-
function DerefResolve(schema, references) {
|
|
87
|
-
return ((0, kind_1.IsConstructor)(schema) ? FromConstructor(schema, references) :
|
|
88
|
-
(0, kind_1.IsFunction)(schema) ? FromFunction(schema, references) :
|
|
89
|
-
(0, kind_1.IsIntersect)(schema) ? FromIntersect(schema, references) :
|
|
90
|
-
(0, kind_1.IsUnion)(schema) ? FromUnion(schema, references) :
|
|
91
|
-
(0, kind_1.IsTuple)(schema) ? FromTuple(schema, references) :
|
|
92
|
-
(0, kind_1.IsArray)(schema) ? FromArray(schema, references) :
|
|
93
|
-
(0, kind_1.IsObject)(schema) ? FromObject(schema, references) :
|
|
94
|
-
(0, kind_1.IsPromise)(schema) ? FromPromise(schema, references) :
|
|
95
|
-
(0, kind_1.IsAsyncIterator)(schema) ? FromAsyncIterator(schema, references) :
|
|
96
|
-
(0, kind_1.IsIterator)(schema) ? FromIterator(schema, references) :
|
|
97
|
-
(0, kind_1.IsRef)(schema) ? FromRef(schema, references) :
|
|
98
|
-
schema);
|
|
99
|
-
}
|
|
100
|
-
// ------------------------------------------------------------------
|
|
101
|
-
// TDeref
|
|
102
|
-
// ------------------------------------------------------------------
|
|
103
|
-
/** `[Json]` Creates a dereferenced type */
|
|
104
|
-
function Deref(schema, references) {
|
|
105
|
-
return DerefResolve((0, type_1.CloneType)(schema), (0, type_1.CloneRest)(references));
|
|
106
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './deref';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
__exportStar(require("./deref"), exports);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './strict';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { TSchema } from '../schema/index';
|
|
2
|
-
export type TStrict<T extends TSchema> = T;
|
|
3
|
-
/**
|
|
4
|
-
* @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended
|
|
5
|
-
* to use the JSON parse/stringify to remove compositing symbols if needed. This
|
|
6
|
-
* is how Strict works internally.
|
|
7
|
-
*
|
|
8
|
-
* ```typescript
|
|
9
|
-
* JSON.parse(JSON.stringify(Type.String()))
|
|
10
|
-
* ```
|
|
11
|
-
*/
|
|
12
|
-
export declare function Strict<T extends TSchema>(schema: T): TStrict<T>;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Strict = Strict;
|
|
5
|
-
/**
|
|
6
|
-
* @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended
|
|
7
|
-
* to use the JSON parse/stringify to remove compositing symbols if needed. This
|
|
8
|
-
* is how Strict works internally.
|
|
9
|
-
*
|
|
10
|
-
* ```typescript
|
|
11
|
-
* JSON.parse(JSON.stringify(Type.String()))
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
function Strict(schema) {
|
|
15
|
-
return JSON.parse(JSON.stringify(schema));
|
|
16
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { TSchema } from '../schema/index.mjs';
|
|
2
|
-
import type { Evaluate } from '../helpers/index.mjs';
|
|
3
|
-
import type { TTuple } from '../tuple/index.mjs';
|
|
4
|
-
import type { TIntersect } from '../intersect/index.mjs';
|
|
5
|
-
import type { TUnion } from '../union/index.mjs';
|
|
6
|
-
import type { TPromise } from '../promise/index.mjs';
|
|
7
|
-
import type { TAsyncIterator } from '../async-iterator/index.mjs';
|
|
8
|
-
import type { TIterator } from '../iterator/index.mjs';
|
|
9
|
-
import type { TArray } from '../array/index.mjs';
|
|
10
|
-
import type { TConstructor } from '../constructor/index.mjs';
|
|
11
|
-
import type { TFunction } from '../function/index.mjs';
|
|
12
|
-
import type { TRef } from '../ref/index.mjs';
|
|
13
|
-
import type { TObject, TProperties } from '../object/index.mjs';
|
|
14
|
-
export type TFromRest<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest<R, [...Acc, TDeref<L>]> : Acc);
|
|
15
|
-
type FromProperties<T extends TProperties> = Evaluate<{
|
|
16
|
-
[K in keyof T]: TDeref<T[K]>;
|
|
17
|
-
}>;
|
|
18
|
-
declare function FromProperties(properties: TProperties, references: TSchema[]): never;
|
|
19
|
-
export type TDeref<T extends TSchema> = T extends TConstructor<infer S extends TSchema[], infer R extends TSchema> ? TConstructor<TFromRest<S>, TDeref<R>> : T extends TFunction<infer S extends TSchema[], infer R extends TSchema> ? TFunction<TFromRest<S>, TDeref<R>> : T extends TIntersect<infer S extends TSchema[]> ? TIntersect<TFromRest<S>> : T extends TUnion<infer S extends TSchema[]> ? TUnion<TFromRest<S>> : T extends TTuple<infer S extends TSchema[]> ? TTuple<TFromRest<S>> : T extends TObject<infer S extends TProperties> ? TObject<FromProperties<S>> : T extends TArray<infer S extends TSchema> ? TArray<TDeref<S>> : T extends TPromise<infer S extends TSchema> ? TPromise<TDeref<S>> : T extends TAsyncIterator<infer S extends TSchema> ? TAsyncIterator<TDeref<S>> : T extends TIterator<infer S extends TSchema> ? TIterator<TDeref<S>> : T extends TRef<infer S extends TSchema> ? TDeref<S> : T;
|
|
20
|
-
/** `[Json]` Creates a dereferenced type */
|
|
21
|
-
export declare function Deref<T extends TSchema>(schema: T, references: TSchema[]): TDeref<T>;
|
|
22
|
-
export {};
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { CloneType, CloneRest } from '../clone/type.mjs';
|
|
2
|
-
import { Discard } from '../discard/index.mjs';
|
|
3
|
-
import { IsUndefined } from '../guard/value.mjs';
|
|
4
|
-
// ------------------------------------------------------------------
|
|
5
|
-
// TypeGuard
|
|
6
|
-
// ------------------------------------------------------------------
|
|
7
|
-
import { IsConstructor, IsFunction, IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsPromise, IsAsyncIterator, IsIterator, IsRef } from '../guard/kind.mjs';
|
|
8
|
-
function FromRest(schema, references) {
|
|
9
|
-
return schema.map((schema) => Deref(schema, references));
|
|
10
|
-
}
|
|
11
|
-
// prettier-ignore
|
|
12
|
-
function FromProperties(properties, references) {
|
|
13
|
-
const Acc = {};
|
|
14
|
-
for (const K of globalThis.Object.getOwnPropertyNames(properties)) {
|
|
15
|
-
Acc[K] = Deref(properties[K], references);
|
|
16
|
-
}
|
|
17
|
-
return Acc;
|
|
18
|
-
}
|
|
19
|
-
// prettier-ignore
|
|
20
|
-
function FromConstructor(schema, references) {
|
|
21
|
-
schema.parameters = FromRest(schema.parameters, references);
|
|
22
|
-
schema.returns = Deref(schema.returns, references);
|
|
23
|
-
return schema;
|
|
24
|
-
}
|
|
25
|
-
// prettier-ignore
|
|
26
|
-
function FromFunction(schema, references) {
|
|
27
|
-
schema.parameters = FromRest(schema.parameters, references);
|
|
28
|
-
schema.returns = Deref(schema.returns, references);
|
|
29
|
-
return schema;
|
|
30
|
-
}
|
|
31
|
-
// prettier-ignore
|
|
32
|
-
function FromIntersect(schema, references) {
|
|
33
|
-
schema.allOf = FromRest(schema.allOf, references);
|
|
34
|
-
return schema;
|
|
35
|
-
}
|
|
36
|
-
// prettier-ignore
|
|
37
|
-
function FromUnion(schema, references) {
|
|
38
|
-
schema.anyOf = FromRest(schema.anyOf, references);
|
|
39
|
-
return schema;
|
|
40
|
-
}
|
|
41
|
-
// prettier-ignore
|
|
42
|
-
function FromTuple(schema, references) {
|
|
43
|
-
if (IsUndefined(schema.items))
|
|
44
|
-
return schema;
|
|
45
|
-
schema.items = FromRest(schema.items, references);
|
|
46
|
-
return schema;
|
|
47
|
-
}
|
|
48
|
-
// prettier-ignore
|
|
49
|
-
function FromArray(schema, references) {
|
|
50
|
-
schema.items = Deref(schema.items, references);
|
|
51
|
-
return schema;
|
|
52
|
-
}
|
|
53
|
-
// prettier-ignore
|
|
54
|
-
function FromObject(schema, references) {
|
|
55
|
-
schema.properties = FromProperties(schema.properties, references);
|
|
56
|
-
return schema;
|
|
57
|
-
}
|
|
58
|
-
// prettier-ignore
|
|
59
|
-
function FromPromise(schema, references) {
|
|
60
|
-
schema.item = Deref(schema.item, references);
|
|
61
|
-
return schema;
|
|
62
|
-
}
|
|
63
|
-
// prettier-ignore
|
|
64
|
-
function FromAsyncIterator(schema, references) {
|
|
65
|
-
schema.items = Deref(schema.items, references);
|
|
66
|
-
return schema;
|
|
67
|
-
}
|
|
68
|
-
// prettier-ignore
|
|
69
|
-
function FromIterator(schema, references) {
|
|
70
|
-
schema.items = Deref(schema.items, references);
|
|
71
|
-
return schema;
|
|
72
|
-
}
|
|
73
|
-
// prettier-ignore
|
|
74
|
-
function FromRef(schema, references) {
|
|
75
|
-
const target = references.find(remote => remote.$id === schema.$ref);
|
|
76
|
-
if (target === undefined)
|
|
77
|
-
throw Error(`Unable to dereference schema with $id ${schema.$ref}`);
|
|
78
|
-
const discard = Discard(target, ['$id']);
|
|
79
|
-
return Deref(discard, references);
|
|
80
|
-
}
|
|
81
|
-
// prettier-ignore
|
|
82
|
-
function DerefResolve(schema, references) {
|
|
83
|
-
return (IsConstructor(schema) ? FromConstructor(schema, references) :
|
|
84
|
-
IsFunction(schema) ? FromFunction(schema, references) :
|
|
85
|
-
IsIntersect(schema) ? FromIntersect(schema, references) :
|
|
86
|
-
IsUnion(schema) ? FromUnion(schema, references) :
|
|
87
|
-
IsTuple(schema) ? FromTuple(schema, references) :
|
|
88
|
-
IsArray(schema) ? FromArray(schema, references) :
|
|
89
|
-
IsObject(schema) ? FromObject(schema, references) :
|
|
90
|
-
IsPromise(schema) ? FromPromise(schema, references) :
|
|
91
|
-
IsAsyncIterator(schema) ? FromAsyncIterator(schema, references) :
|
|
92
|
-
IsIterator(schema) ? FromIterator(schema, references) :
|
|
93
|
-
IsRef(schema) ? FromRef(schema, references) :
|
|
94
|
-
schema);
|
|
95
|
-
}
|
|
96
|
-
// ------------------------------------------------------------------
|
|
97
|
-
// TDeref
|
|
98
|
-
// ------------------------------------------------------------------
|
|
99
|
-
/** `[Json]` Creates a dereferenced type */
|
|
100
|
-
export function Deref(schema, references) {
|
|
101
|
-
return DerefResolve(CloneType(schema), CloneRest(references));
|
|
102
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './deref.mjs';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './deref.mjs';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './strict.mjs';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './strict.mjs';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { TSchema } from '../schema/index.mjs';
|
|
2
|
-
export type TStrict<T extends TSchema> = T;
|
|
3
|
-
/**
|
|
4
|
-
* @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended
|
|
5
|
-
* to use the JSON parse/stringify to remove compositing symbols if needed. This
|
|
6
|
-
* is how Strict works internally.
|
|
7
|
-
*
|
|
8
|
-
* ```typescript
|
|
9
|
-
* JSON.parse(JSON.stringify(Type.String()))
|
|
10
|
-
* ```
|
|
11
|
-
*/
|
|
12
|
-
export declare function Strict<T extends TSchema>(schema: T): TStrict<T>;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended
|
|
3
|
-
* to use the JSON parse/stringify to remove compositing symbols if needed. This
|
|
4
|
-
* is how Strict works internally.
|
|
5
|
-
*
|
|
6
|
-
* ```typescript
|
|
7
|
-
* JSON.parse(JSON.stringify(Type.String()))
|
|
8
|
-
* ```
|
|
9
|
-
*/
|
|
10
|
-
export function Strict(schema) {
|
|
11
|
-
return JSON.parse(JSON.stringify(schema));
|
|
12
|
-
}
|