@sinclair/typebox 0.32.0-dev-26 → 0.32.0-dev-27
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/import/index.d.mts +2 -2
- package/build/import/type/awaited/awaited.mjs +2 -6
- package/build/import/type/composite/composite.d.mts +1 -2
- package/build/import/type/composite/composite.mjs +2 -2
- package/build/import/type/const/const.mjs +6 -6
- package/build/import/type/constructor/constructor.d.mts +1 -1
- package/build/import/type/constructor/constructor.mjs +1 -1
- package/build/import/type/deref/deref.mjs +1 -2
- package/build/import/type/discard/discard.mjs +2 -2
- package/build/import/type/enum/enum.mjs +3 -0
- package/build/import/type/exclude/exclude-from-mapped-result.d.mts +5 -5
- package/build/import/type/exclude/exclude-from-mapped-result.mjs +7 -7
- package/build/import/type/exclude/exclude.mjs +0 -1
- package/build/import/type/extends/extends-from-mapped-key.d.mts +1 -1
- package/build/import/type/extends/extends-from-mapped-key.mjs +4 -5
- package/build/import/type/extends/extends-from-mapped-result.d.mts +5 -5
- package/build/import/type/extends/extends-from-mapped-result.mjs +7 -7
- package/build/import/type/extends/extends.mjs +0 -1
- package/build/import/type/extract/extract-from-mapped-result.d.mts +5 -5
- package/build/import/type/extract/extract-from-mapped-result.mjs +7 -7
- package/build/import/type/extract/extract.d.mts +1 -2
- package/build/import/type/extract/extract.mjs +4 -2
- package/build/import/type/index.d.mts +1 -1
- package/build/import/type/index.mjs +1 -1
- package/build/import/type/indexed/indexed-from-mapped-key.d.mts +2 -2
- package/build/import/type/indexed/indexed-from-mapped-key.mjs +4 -5
- package/build/import/type/indexed/indexed-from-mapped-result.d.mts +1 -1
- package/build/import/type/indexed/indexed-property-keys.d.mts +6 -6
- package/build/import/type/indexed/indexed-property-keys.mjs +3 -5
- package/build/import/type/indexed/indexed.d.mts +1 -1
- package/build/import/type/indexed/indexed.mjs +9 -27
- package/build/import/type/intersect/intersect-evaluated.mjs +3 -13
- package/build/import/type/intrinsic/capitalize.d.mts +2 -2
- package/build/import/type/intrinsic/intrinsic-from-mapped-key.d.mts +1 -1
- package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +4 -5
- package/build/import/type/intrinsic/intrinsic.d.mts +2 -3
- package/build/import/type/intrinsic/intrinsic.mjs +2 -5
- package/build/import/type/intrinsic/lowercase.d.mts +2 -2
- package/build/import/type/intrinsic/uncapitalize.d.mts +2 -2
- package/build/import/type/intrinsic/uppercase.d.mts +2 -2
- package/build/import/type/iterator/iterator.mjs +1 -1
- package/build/import/type/keyof/keyof-from-mapped-result.d.mts +3 -3
- package/build/import/type/keyof/keyof-from-mapped-result.mjs +4 -4
- package/build/import/type/keyof/keyof-property-keys.d.mts +3 -3
- package/build/import/type/keyof/keyof-property-keys.mjs +9 -15
- package/build/import/type/keyof/keyof.mjs +2 -8
- package/build/import/type/mapped/mapped.d.mts +6 -1
- package/build/import/type/mapped/mapped.mjs +21 -14
- package/build/import/type/not/not.mjs +1 -1
- package/build/import/type/object/object.d.mts +1 -1
- package/build/import/type/object/object.mjs +0 -1
- package/build/import/type/omit/index.d.mts +1 -0
- package/build/import/type/omit/index.mjs +1 -0
- package/build/import/type/omit/omit-from-mapped-key.mjs +4 -5
- package/build/import/type/omit/omit-from-mapped-result.d.mts +11 -0
- package/build/import/type/omit/omit-from-mapped-result.mjs +17 -0
- package/build/import/type/omit/omit.d.mts +6 -3
- package/build/import/type/omit/omit.mjs +11 -9
- package/build/import/type/optional/optional-from-mapped-result.d.mts +5 -5
- package/build/import/type/optional/optional-from-mapped-result.mjs +7 -7
- package/build/import/type/partial/partial-from-mapped-result.d.mts +5 -5
- package/build/import/type/partial/partial-from-mapped-result.mjs +4 -4
- package/build/import/type/partial/partial.d.mts +2 -3
- package/build/import/type/partial/partial.mjs +8 -21
- package/build/import/type/pick/index.d.mts +1 -0
- package/build/import/type/pick/index.mjs +1 -0
- package/build/import/type/pick/pick-from-mapped-key.mjs +4 -5
- package/build/import/type/pick/pick-from-mapped-result.d.mts +11 -0
- package/build/import/type/pick/pick-from-mapped-result.mjs +17 -0
- package/build/import/type/pick/pick.d.mts +5 -2
- package/build/import/type/pick/pick.mjs +11 -10
- package/build/import/type/promise/promise.mjs +1 -1
- package/build/import/type/readonly/readonly-from-mapped-result.d.mts +5 -5
- package/build/import/type/readonly/readonly-from-mapped-result.mjs +4 -4
- package/build/import/type/record/record.d.mts +2 -2
- package/build/import/type/record/record.mjs +3 -0
- package/build/import/type/ref/ref.mjs +1 -1
- package/build/import/type/required/required-from-mapped-result.d.mts +5 -5
- package/build/import/type/required/required-from-mapped-result.mjs +7 -7
- package/build/import/type/required/required.d.mts +2 -3
- package/build/import/type/required/required.mjs +4 -14
- package/build/import/type/rest/rest.d.mts +2 -2
- package/build/import/type/rest/rest.mjs +1 -2
- package/build/import/type/sets/index.d.mts +1 -0
- package/build/import/type/sets/index.mjs +1 -0
- package/build/import/type/sets/set.d.mts +24 -0
- package/build/import/type/sets/set.mjs +35 -0
- package/build/import/type/strict/strict.d.mts +1 -1
- package/build/import/type/strict/strict.mjs +1 -1
- package/build/import/type/template-literal/syntax.d.mts +1 -1
- package/build/import/type/template-literal/template-literal.d.mts +1 -1
- package/build/import/type/transform/transform.mjs +1 -1
- package/build/import/type/type/json.d.mts +6 -2
- package/build/import/type/union/union-evaluated.mjs +3 -14
- package/build/require/index.d.ts +2 -2
- package/build/require/type/awaited/awaited.js +2 -6
- package/build/require/type/composite/composite.d.ts +1 -2
- package/build/require/type/composite/composite.js +5 -6
- package/build/require/type/const/const.js +6 -6
- package/build/require/type/constructor/constructor.d.ts +1 -1
- package/build/require/type/constructor/constructor.js +1 -1
- package/build/require/type/deref/deref.js +0 -1
- package/build/require/type/discard/discard.js +2 -2
- package/build/require/type/enum/enum.js +3 -0
- package/build/require/type/exclude/exclude-from-mapped-result.d.ts +5 -5
- package/build/require/type/exclude/exclude-from-mapped-result.js +7 -7
- package/build/require/type/exclude/exclude.js +0 -1
- package/build/require/type/extends/extends-from-mapped-key.d.ts +1 -1
- package/build/require/type/extends/extends-from-mapped-key.js +4 -5
- package/build/require/type/extends/extends-from-mapped-result.d.ts +5 -5
- package/build/require/type/extends/extends-from-mapped-result.js +7 -7
- package/build/require/type/extends/extends.js +0 -1
- package/build/require/type/extract/extract-from-mapped-result.d.ts +5 -5
- package/build/require/type/extract/extract-from-mapped-result.js +7 -7
- package/build/require/type/extract/extract.d.ts +1 -2
- package/build/require/type/extract/extract.js +4 -3
- package/build/require/type/index.d.ts +1 -1
- package/build/require/type/index.js +1 -1
- package/build/require/type/indexed/indexed-from-mapped-key.d.ts +2 -2
- package/build/require/type/indexed/indexed-from-mapped-key.js +4 -5
- package/build/require/type/indexed/indexed-from-mapped-result.d.ts +1 -1
- package/build/require/type/indexed/indexed-property-keys.d.ts +6 -6
- package/build/require/type/indexed/indexed-property-keys.js +3 -5
- package/build/require/type/indexed/indexed.d.ts +1 -1
- package/build/require/type/indexed/indexed.js +9 -27
- package/build/require/type/intersect/intersect-evaluated.js +3 -13
- package/build/require/type/intrinsic/capitalize.d.ts +2 -2
- package/build/require/type/intrinsic/intrinsic-from-mapped-key.d.ts +1 -1
- package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +4 -5
- package/build/require/type/intrinsic/intrinsic.d.ts +2 -3
- package/build/require/type/intrinsic/intrinsic.js +2 -5
- package/build/require/type/intrinsic/lowercase.d.ts +2 -2
- package/build/require/type/intrinsic/uncapitalize.d.ts +2 -2
- package/build/require/type/intrinsic/uppercase.d.ts +2 -2
- package/build/require/type/iterator/iterator.js +1 -1
- package/build/require/type/keyof/keyof-from-mapped-result.d.ts +3 -3
- package/build/require/type/keyof/keyof-from-mapped-result.js +4 -4
- package/build/require/type/keyof/keyof-property-keys.d.ts +3 -3
- package/build/require/type/keyof/keyof-property-keys.js +9 -15
- package/build/require/type/keyof/keyof.js +2 -8
- package/build/require/type/mapped/mapped.d.ts +6 -1
- package/build/require/type/mapped/mapped.js +21 -14
- package/build/require/type/not/not.js +1 -1
- package/build/require/type/object/object.d.ts +1 -1
- package/build/require/type/object/object.js +0 -1
- package/build/require/type/omit/index.d.ts +1 -0
- package/build/require/type/omit/index.js +1 -0
- package/build/require/type/omit/omit-from-mapped-key.js +4 -5
- package/build/require/type/omit/omit-from-mapped-result.d.ts +11 -0
- package/build/require/type/omit/omit-from-mapped-result.js +22 -0
- package/build/require/type/omit/omit.d.ts +6 -3
- package/build/require/type/omit/omit.js +10 -8
- package/build/require/type/optional/optional-from-mapped-result.d.ts +5 -5
- package/build/require/type/optional/optional-from-mapped-result.js +7 -7
- package/build/require/type/partial/partial-from-mapped-result.d.ts +5 -5
- package/build/require/type/partial/partial-from-mapped-result.js +4 -4
- package/build/require/type/partial/partial.d.ts +2 -3
- package/build/require/type/partial/partial.js +8 -21
- package/build/require/type/pick/index.d.ts +1 -0
- package/build/require/type/pick/index.js +1 -0
- package/build/require/type/pick/pick-from-mapped-key.js +4 -5
- package/build/require/type/pick/pick-from-mapped-result.d.ts +11 -0
- package/build/require/type/pick/pick-from-mapped-result.js +22 -0
- package/build/require/type/pick/pick.d.ts +5 -2
- package/build/require/type/pick/pick.js +10 -9
- package/build/require/type/promise/promise.js +1 -1
- package/build/require/type/readonly/readonly-from-mapped-result.d.ts +5 -5
- package/build/require/type/readonly/readonly-from-mapped-result.js +4 -4
- package/build/require/type/record/record.d.ts +2 -2
- package/build/require/type/record/record.js +3 -0
- package/build/require/type/ref/ref.js +1 -1
- package/build/require/type/required/required-from-mapped-result.d.ts +5 -5
- package/build/require/type/required/required-from-mapped-result.js +7 -7
- package/build/require/type/required/required.d.ts +2 -3
- package/build/require/type/required/required.js +4 -14
- package/build/require/type/rest/rest.d.ts +2 -2
- package/build/require/type/rest/rest.js +1 -3
- package/build/require/type/sets/index.d.ts +1 -0
- package/build/require/type/{operators → sets}/index.js +1 -1
- package/build/require/type/sets/set.d.ts +24 -0
- package/build/require/type/sets/set.js +47 -0
- package/build/require/type/strict/strict.d.ts +1 -1
- package/build/require/type/strict/strict.js +1 -1
- package/build/require/type/template-literal/parse.js +1 -1
- package/build/require/type/template-literal/syntax.d.ts +1 -1
- package/build/require/type/template-literal/template-literal.d.ts +1 -1
- package/build/require/type/transform/transform.js +1 -1
- package/build/require/type/type/json.d.ts +6 -2
- package/build/require/type/union/union-evaluated.js +3 -14
- package/package.json +1 -1
- package/readme.md +64 -64
- package/build/import/type/operators/index.d.mts +0 -1
- package/build/import/type/operators/index.mjs +0 -1
- package/build/import/type/operators/operators.d.mts +0 -24
- package/build/import/type/operators/operators.mjs +0 -77
- package/build/require/type/operators/index.d.ts +0 -1
- package/build/require/type/operators/operators.d.ts +0 -24
- package/build/require/type/operators/operators.js +0 -89
|
@@ -4,9 +4,10 @@ import { type TRecursive } from '../recursive/index.mjs';
|
|
|
4
4
|
import { type TIntersect } from '../intersect/index.mjs';
|
|
5
5
|
import { type TUnion } from '../union/index.mjs';
|
|
6
6
|
import { type TObject, type TProperties } from '../object/index.mjs';
|
|
7
|
+
import type { TMappedKey, TMappedResult } from '../mapped/index.mjs';
|
|
7
8
|
import { type TIndexPropertyKeys } from '../indexed/index.mjs';
|
|
8
|
-
import { TMappedKey } from '../mapped/index.mjs';
|
|
9
9
|
import { type TPickFromMappedKey } from './pick-from-mapped-key.mjs';
|
|
10
|
+
import { type TPickFromMappedResult } from './pick-from-mapped-result.mjs';
|
|
10
11
|
type FromIntersect<T extends TSchema[], K extends PropertyKey[], Acc extends TSchema[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? FromIntersect<R, K, [...Acc, PickResolve<L, K>]> : Acc;
|
|
11
12
|
declare function FromIntersect<T extends TSchema[], K extends PropertyKey[]>(T: T, K: K): FromIntersect<T, K, []>;
|
|
12
13
|
type FromUnion<T extends TSchema[], K extends PropertyKey[], Acc extends TSchema[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? FromUnion<R, K, [...Acc, PickResolve<L, K>]> : Acc;
|
|
@@ -17,7 +18,9 @@ export type PickResolve<T extends TProperties, K extends PropertyKey[]> = T exte
|
|
|
17
18
|
export declare function PickResolve<T extends TSchema, K extends PropertyKey[]>(T: T, K: [...K]): PickResolve<T, K>;
|
|
18
19
|
export type TPick<T extends TSchema, K extends PropertyKey[]> = PickResolve<T, K>;
|
|
19
20
|
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
20
|
-
export declare function Pick<T extends
|
|
21
|
+
export declare function Pick<T extends TMappedResult, K extends PropertyKey[]>(T: T, K: [...K], options?: SchemaOptions): TPickFromMappedResult<T, K>;
|
|
22
|
+
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
23
|
+
export declare function Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K, options?: SchemaOptions): TPickFromMappedKey<T, K>;
|
|
21
24
|
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
22
25
|
export declare function Pick<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TPick<T, I>;
|
|
23
26
|
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
@@ -6,11 +6,11 @@ import { Discard } from '../discard/index.mjs';
|
|
|
6
6
|
import { TransformKind } from '../symbols/index.mjs';
|
|
7
7
|
import { CloneType } from '../clone/type.mjs';
|
|
8
8
|
import { PickFromMappedKey } from './pick-from-mapped-key.mjs';
|
|
9
|
+
import { PickFromMappedResult } from './pick-from-mapped-result.mjs';
|
|
9
10
|
// ------------------------------------------------------------------
|
|
10
11
|
// TypeGuard
|
|
11
12
|
// ------------------------------------------------------------------
|
|
12
|
-
|
|
13
|
-
import { IsMappedKey, IsIntersect, IsUnion, IsObject, IsSchema, } from '../guard/type.mjs';
|
|
13
|
+
import { IsMappedKey, IsMappedResult, IsIntersect, IsUnion, IsObject, IsSchema } from '../guard/type.mjs';
|
|
14
14
|
function FromIntersect(T, K) {
|
|
15
15
|
return T.map((T) => PickResolve(T, K));
|
|
16
16
|
}
|
|
@@ -32,13 +32,14 @@ export function PickResolve(T, K) {
|
|
|
32
32
|
Object({}));
|
|
33
33
|
}
|
|
34
34
|
export function Pick(T, K, options = {}) {
|
|
35
|
-
|
|
35
|
+
// mapped
|
|
36
|
+
if (IsMappedKey(K))
|
|
36
37
|
return PickFromMappedKey(T, K, options);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
38
|
+
if (IsMappedResult(T))
|
|
39
|
+
return PickFromMappedResult(T, K, options);
|
|
40
|
+
// non-mapped
|
|
41
|
+
const I = IsSchema(K) ? IndexPropertyKeys(K) : K;
|
|
42
|
+
const D = Discard(T, [TransformKind, '$id', 'required']);
|
|
43
|
+
const R = CloneType(PickResolve(T, I), options);
|
|
44
|
+
return { ...D, ...R };
|
|
44
45
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { TProperties } from '../object/index.mjs';
|
|
2
2
|
import { type TMappedResult } from '../mapped/index.mjs';
|
|
3
3
|
import { type TReadonlyWithFlag } from './readonly.mjs';
|
|
4
|
-
type TFromProperties<
|
|
5
|
-
[K2 in keyof
|
|
4
|
+
type TFromProperties<P extends TProperties, F extends boolean> = ({
|
|
5
|
+
[K2 in keyof P]: TReadonlyWithFlag<P[K2], F>;
|
|
6
6
|
});
|
|
7
|
-
type TFromMappedResult<
|
|
8
|
-
export type TReadonlyFromMappedResult<
|
|
9
|
-
export declare function ReadonlyFromMappedResult<
|
|
7
|
+
type TFromMappedResult<R extends TMappedResult, F extends boolean> = (TFromProperties<R['properties'], F>);
|
|
8
|
+
export type TReadonlyFromMappedResult<R extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<R, F>> = (TMappedResult<P>);
|
|
9
|
+
export declare function ReadonlyFromMappedResult<R extends TMappedResult, F extends boolean, P extends TProperties = TFromMappedResult<R, F>>(R: R, F: F): TMappedResult<P>;
|
|
10
10
|
export {};
|
|
@@ -7,11 +7,11 @@ function FromProperties(K, F) {
|
|
|
7
7
|
}, {});
|
|
8
8
|
}
|
|
9
9
|
// prettier-ignore
|
|
10
|
-
function FromMappedResult(
|
|
11
|
-
return FromProperties(
|
|
10
|
+
function FromMappedResult(R, F) {
|
|
11
|
+
return FromProperties(R.properties, F);
|
|
12
12
|
}
|
|
13
13
|
// prettier-ignore
|
|
14
|
-
export function ReadonlyFromMappedResult(
|
|
15
|
-
const P = FromMappedResult(
|
|
14
|
+
export function ReadonlyFromMappedResult(R, F) {
|
|
15
|
+
const P = FromMappedResult(R, F);
|
|
16
16
|
return MappedResult(P);
|
|
17
17
|
}
|
|
@@ -2,14 +2,14 @@ import type { TSchema } from '../schema/index.mjs';
|
|
|
2
2
|
import type { Static } from '../static/index.mjs';
|
|
3
3
|
import type { Evaluate, Ensure, Assert } from '../helpers/index.mjs';
|
|
4
4
|
import { type TObject, type TProperties, type TAdditionalProperties, type ObjectOptions } from '../object/index.mjs';
|
|
5
|
-
import { type TLiteral, TLiteralValue } from '../literal/index.mjs';
|
|
5
|
+
import { type TLiteral, type TLiteralValue } from '../literal/index.mjs';
|
|
6
6
|
import { type TNever } from '../never/index.mjs';
|
|
7
7
|
import { type TUnion } from '../union/index.mjs';
|
|
8
8
|
import { type TString } from '../string/index.mjs';
|
|
9
9
|
import { type TInteger } from '../integer/index.mjs';
|
|
10
10
|
import { type TNumber } from '../number/index.mjs';
|
|
11
11
|
import { type TEnum } from '../enum/index.mjs';
|
|
12
|
-
import {
|
|
12
|
+
import { TIsTemplateLiteralFinite, type TTemplateLiteral } from '../template-literal/index.mjs';
|
|
13
13
|
import { Kind } from '../symbols/index.mjs';
|
|
14
14
|
type TFromTemplateLiteralKeyInfinite<K extends TTemplateLiteral, T extends TSchema> = Ensure<TRecord<K, T>>;
|
|
15
15
|
type TFromTemplateLiteralKeyFinite<K extends TTemplateLiteral, T extends TSchema, I extends string = Static<K>> = (Ensure<TObject<Evaluate<{
|
|
@@ -6,6 +6,9 @@ import { PatternStringExact, PatternNumberExact } from '../patterns/index.mjs';
|
|
|
6
6
|
import { IndexPropertyKeys } from '../indexed/index.mjs';
|
|
7
7
|
import { Kind, Hint } from '../symbols/index.mjs';
|
|
8
8
|
import { CloneType } from '../clone/type.mjs';
|
|
9
|
+
// ------------------------------------------------------------------
|
|
10
|
+
// ValueGuard
|
|
11
|
+
// ------------------------------------------------------------------
|
|
9
12
|
import { IsUndefined } from '../guard/value.mjs';
|
|
10
13
|
// ------------------------------------------------------------------
|
|
11
14
|
// TypeGuard
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Kind } from '../symbols/index.mjs';
|
|
2
2
|
// ------------------------------------------------------------------
|
|
3
|
-
//
|
|
3
|
+
// ValueGuard
|
|
4
4
|
// ------------------------------------------------------------------
|
|
5
5
|
import { IsString, IsUndefined } from '../guard/value.mjs';
|
|
6
6
|
/** `[Json]` Creates a Ref type. */
|
|
@@ -2,10 +2,10 @@ import type { SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import type { TProperties } from '../object/index.mjs';
|
|
3
3
|
import { type TMappedResult } from '../mapped/index.mjs';
|
|
4
4
|
import { type TRequired } from './required.mjs';
|
|
5
|
-
type TFromProperties<
|
|
6
|
-
[K2 in keyof
|
|
5
|
+
type TFromProperties<P extends TProperties> = ({
|
|
6
|
+
[K2 in keyof P]: TRequired<P[K2]>;
|
|
7
7
|
});
|
|
8
|
-
type TFromMappedResult<
|
|
9
|
-
export type TRequiredFromMappedResult<
|
|
10
|
-
export declare function RequiredFromMappedResult<
|
|
8
|
+
type TFromMappedResult<R extends TMappedResult> = (TFromProperties<R['properties']>);
|
|
9
|
+
export type TRequiredFromMappedResult<R extends TMappedResult, P extends TProperties = TFromMappedResult<R>> = (TMappedResult<P>);
|
|
10
|
+
export declare function RequiredFromMappedResult<R extends TMappedResult, P extends TProperties = TFromMappedResult<R>>(R: R, options: SchemaOptions): TMappedResult<P>;
|
|
11
11
|
export {};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
2
|
import { Required } from './required.mjs';
|
|
3
3
|
// prettier-ignore
|
|
4
|
-
function FromProperties(
|
|
5
|
-
return globalThis.Object.getOwnPropertyNames(
|
|
6
|
-
return { ...Acc, [K2]: Required(
|
|
4
|
+
function FromProperties(P, options) {
|
|
5
|
+
return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
|
|
6
|
+
return { ...Acc, [K2]: Required(P[K2], options) };
|
|
7
7
|
}, {});
|
|
8
8
|
}
|
|
9
9
|
// prettier-ignore
|
|
10
|
-
function FromMappedResult(
|
|
11
|
-
return FromProperties(
|
|
10
|
+
function FromMappedResult(R, options) {
|
|
11
|
+
return FromProperties(R.properties, options);
|
|
12
12
|
}
|
|
13
13
|
// prettier-ignore
|
|
14
|
-
export function RequiredFromMappedResult(
|
|
15
|
-
const P = FromMappedResult(
|
|
14
|
+
export function RequiredFromMappedResult(R, options) {
|
|
15
|
+
const P = FromMappedResult(R, options);
|
|
16
16
|
return MappedResult(P);
|
|
17
17
|
}
|
|
@@ -9,12 +9,11 @@ import { type TIntersect } from '../intersect/index.mjs';
|
|
|
9
9
|
import { type TUnion } from '../union/index.mjs';
|
|
10
10
|
import { type TObject, type TProperties } from '../object/index.mjs';
|
|
11
11
|
import { type TRequiredFromMappedResult } from './required-from-mapped-result.mjs';
|
|
12
|
-
type
|
|
13
|
-
type TFromUnion<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromUnion<R, [...Acc, TRequiredResolve<L>]> : Acc);
|
|
12
|
+
type TFromRest<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest<R, [...Acc, TRequiredResolve<L>]> : Acc);
|
|
14
13
|
type TFromProperties<T extends TProperties> = Evaluate<{
|
|
15
14
|
[K in keyof T]: T[K] extends (TReadonlyOptional<infer S>) ? TReadonly<S> : T[K] extends (TReadonly<infer S>) ? TReadonly<S> : T[K] extends (TOptional<infer S>) ? S : T[K];
|
|
16
15
|
}>;
|
|
17
|
-
type TRequiredResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<TRequiredResolve<S>> : T extends TIntersect<infer S> ? TIntersect<
|
|
16
|
+
type TRequiredResolve<T extends TSchema> = (T extends TRecursive<infer S> ? TRecursive<TRequiredResolve<S>> : T extends TIntersect<infer S> ? TIntersect<TFromRest<S>> : T extends TUnion<infer S> ? TUnion<TFromRest<S>> : T extends TObject<infer S> ? TObject<TFromProperties<S>> : TObject<{}>);
|
|
18
17
|
export type TRequired<T extends TSchema> = TRequiredResolve<T>;
|
|
19
18
|
/** `[Json]` Constructs a type where all properties are required */
|
|
20
19
|
export declare function Required<T extends TMappedResult>(T: T, options?: SchemaOptions): TRequiredFromMappedResult<T>;
|
|
@@ -10,18 +10,8 @@ import { RequiredFromMappedResult } from './required-from-mapped-result.mjs';
|
|
|
10
10
|
// ------------------------------------------------------------------
|
|
11
11
|
import { IsMappedResult, IsIntersect, IsUnion, IsObject } from '../guard/type.mjs';
|
|
12
12
|
// prettier-ignore
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
return (T.length > 0
|
|
16
|
-
? FromIntersect(R, [...Acc, RequiredResolve(L)])
|
|
17
|
-
: Acc);
|
|
18
|
-
}
|
|
19
|
-
// prettier-ignore
|
|
20
|
-
function FromUnion(T, Acc = []) {
|
|
21
|
-
const [L, ...R] = T;
|
|
22
|
-
return (T.length > 0
|
|
23
|
-
? FromUnion(R, [...Acc, RequiredResolve(L)])
|
|
24
|
-
: Acc);
|
|
13
|
+
function FromRest(T) {
|
|
14
|
+
return T.map(L => RequiredResolve(L));
|
|
25
15
|
}
|
|
26
16
|
// prettier-ignore
|
|
27
17
|
function FromProperties(T) {
|
|
@@ -31,8 +21,8 @@ function FromProperties(T) {
|
|
|
31
21
|
}
|
|
32
22
|
// prettier-ignore
|
|
33
23
|
function RequiredResolve(T) {
|
|
34
|
-
return (IsIntersect(T) ? Intersect(
|
|
35
|
-
IsUnion(T) ? Union(
|
|
24
|
+
return (IsIntersect(T) ? Intersect(FromRest(T.allOf)) :
|
|
25
|
+
IsUnion(T) ? Union(FromRest(T.anyOf)) :
|
|
36
26
|
IsObject(T) ? Object(FromProperties(T.properties)) :
|
|
37
27
|
Object({}));
|
|
38
28
|
}
|
|
@@ -2,9 +2,9 @@ import type { TSchema } from '../schema/index.mjs';
|
|
|
2
2
|
import type { TIntersect } from '../intersect/index.mjs';
|
|
3
3
|
import type { TUnion } from '../union/index.mjs';
|
|
4
4
|
import type { TTuple } from '../tuple/index.mjs';
|
|
5
|
-
|
|
5
|
+
type TRestResolve<T extends TSchema> = T extends TIntersect<infer S> ? [...S] : T extends TUnion<infer S> ? [...S] : T extends TTuple<infer S> ? [...S] : [
|
|
6
6
|
];
|
|
7
|
-
export declare function RestResolve<T extends TSchema>(T: T): TRestResolve<T>;
|
|
8
7
|
export type TRest<T extends TSchema> = TRestResolve<T>;
|
|
9
8
|
/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */
|
|
10
9
|
export declare function Rest<T extends TSchema>(T: T): TRest<T>;
|
|
10
|
+
export {};
|
|
@@ -2,10 +2,9 @@ import { CloneRest } from '../clone/type.mjs';
|
|
|
2
2
|
// ------------------------------------------------------------------
|
|
3
3
|
// TypeGuard
|
|
4
4
|
// ------------------------------------------------------------------
|
|
5
|
-
// prettier-ignore
|
|
6
5
|
import { IsIntersect, IsUnion, IsTuple } from '../guard/type.mjs';
|
|
7
6
|
// prettier-ignore
|
|
8
|
-
|
|
7
|
+
function RestResolve(T) {
|
|
9
8
|
return (IsIntersect(T) ? [...T.allOf] :
|
|
10
9
|
IsUnion(T) ? [...T.anyOf] :
|
|
11
10
|
IsTuple(T) ? [...(T.items ?? [])] :
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './set.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './set.mjs';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type TSetIncludes<T extends PropertyKey[], S extends PropertyKey> = (T extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? S extends L ? true : TSetIncludes<R, S> : false);
|
|
2
|
+
/** Returns true if element S is in the set of T */
|
|
3
|
+
export declare function SetIncludes<T extends PropertyKey[], S extends PropertyKey>(T: [...T], S: S): TSetIncludes<T, S>;
|
|
4
|
+
export type SetIsSubset<T extends PropertyKey[], S extends PropertyKey[]> = (T extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? TSetIncludes<S, L> extends true ? SetIsSubset<R, S> : false : true);
|
|
5
|
+
/** Returns true if T is a subset of S */
|
|
6
|
+
export declare function SetIsSubset<T extends PropertyKey[], S extends PropertyKey[]>(T: [...T], S: [...S]): SetIsSubset<T, S>;
|
|
7
|
+
export type TSetDistinct<T extends PropertyKey[], Acc extends PropertyKey[] = []> = T extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? TSetIncludes<Acc, L> extends false ? TSetDistinct<R, [...Acc, L]> : TSetDistinct<R, [...Acc]> : Acc;
|
|
8
|
+
/** Returns a distinct set of elements */
|
|
9
|
+
export declare function SetDistinct<T extends PropertyKey[]>(T: [...T]): TSetDistinct<T>;
|
|
10
|
+
export type TSetIntersect<T extends PropertyKey[], S extends PropertyKey[], Acc extends PropertyKey[] = []> = (T extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? TSetIncludes<S, L> extends true ? TSetIntersect<R, S, [L, ...Acc]> : TSetIntersect<R, S, [...Acc]> : Acc);
|
|
11
|
+
/** Returns the Intersect of the given sets */
|
|
12
|
+
export declare function SetIntersect<T extends PropertyKey[], S extends PropertyKey[]>(T: [...T], S: [...S]): TSetIntersect<T, S>;
|
|
13
|
+
export type TSetUnion<T extends PropertyKey[], S extends PropertyKey[], Acc extends PropertyKey[] = S> = (T extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? TSetUnion<R, S, [...Acc, L]> : Acc);
|
|
14
|
+
/** Returns the Union of the given sets */
|
|
15
|
+
export declare function SetUnion<T extends PropertyKey[], S extends PropertyKey[]>(T: [...T], S: [...S]): TSetUnion<T, S>;
|
|
16
|
+
export type TSetComplement<T extends PropertyKey[], S extends PropertyKey[], Acc extends PropertyKey[] = []> = (T extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? TSetIncludes<S, L> extends true ? TSetComplement<R, S, [...Acc]> : TSetComplement<R, S, [...Acc, L]> : Acc);
|
|
17
|
+
/** Returns the Complement by omitting elements in T that are in S */
|
|
18
|
+
export declare function SetComplement<T extends PropertyKey[], S extends PropertyKey[]>(T: [...T], S: [...S]): TSetComplement<T, S>;
|
|
19
|
+
export type TSetIntersectMany<T extends PropertyKey[][], Acc extends PropertyKey[] = []> = (T extends [infer L extends PropertyKey[]] ? L : T extends [infer L extends PropertyKey[], ...infer R extends PropertyKey[][]] ? TSetIntersectMany<R, TSetIntersect<Acc, L>> : Acc);
|
|
20
|
+
/** Returns the Intersect of multiple sets */
|
|
21
|
+
export declare function SetIntersectMany<T extends PropertyKey[][]>(T: [...T]): TSetIntersectMany<T>;
|
|
22
|
+
export type TSetUnionMany<T extends PropertyKey[][], Acc extends PropertyKey[] = []> = (T extends [infer L extends PropertyKey[], ...infer R extends PropertyKey[][]] ? TSetUnionMany<R, TSetUnion<Acc, L>> : Acc);
|
|
23
|
+
/** Returns the Union of multiple sets */
|
|
24
|
+
export declare function SetUnionMany<T extends PropertyKey[][]>(T: [...T]): TSetUnionMany<T>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Returns true if element S is in the set of T */
|
|
2
|
+
// prettier-ignore
|
|
3
|
+
export function SetIncludes(T, S) {
|
|
4
|
+
return T.includes(S);
|
|
5
|
+
}
|
|
6
|
+
/** Returns true if T is a subset of S */
|
|
7
|
+
export function SetIsSubset(T, S) {
|
|
8
|
+
return T.every((L) => SetIncludes(S, L));
|
|
9
|
+
}
|
|
10
|
+
/** Returns a distinct set of elements */
|
|
11
|
+
export function SetDistinct(T) {
|
|
12
|
+
return [...new Set(T)];
|
|
13
|
+
}
|
|
14
|
+
/** Returns the Intersect of the given sets */
|
|
15
|
+
export function SetIntersect(T, S) {
|
|
16
|
+
return T.filter((L) => S.includes(L));
|
|
17
|
+
}
|
|
18
|
+
/** Returns the Union of the given sets */
|
|
19
|
+
export function SetUnion(T, S) {
|
|
20
|
+
return [...T, ...S];
|
|
21
|
+
}
|
|
22
|
+
/** Returns the Complement by omitting elements in T that are in S */
|
|
23
|
+
// prettier-ignore
|
|
24
|
+
export function SetComplement(T, S) {
|
|
25
|
+
return T.filter(L => !S.includes(L));
|
|
26
|
+
}
|
|
27
|
+
/** Returns the Intersect of multiple sets */
|
|
28
|
+
// prettier-ignore
|
|
29
|
+
export function SetIntersectMany(T) {
|
|
30
|
+
return (T.length === 1 ? T[0] : T.reduce((Acc, L) => [...SetIntersect(Acc, L)], []));
|
|
31
|
+
}
|
|
32
|
+
/** Returns the Union of multiple sets */
|
|
33
|
+
export function SetUnionMany(T) {
|
|
34
|
+
return T.reduce((Acc, L) => [...Acc, ...L], []);
|
|
35
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Assert, Trim } from '../helpers/index.mjs';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TTemplateLiteral, TTemplateLiteralKind } from './index.mjs';
|
|
3
3
|
import { type TLiteral } from '../literal/index.mjs';
|
|
4
4
|
import { type TBoolean } from '../boolean/index.mjs';
|
|
5
5
|
import { type TBigInt } from '../bigint/index.mjs';
|
|
@@ -9,7 +9,7 @@ import type { TString } from '../string/index.mjs';
|
|
|
9
9
|
import type { TBoolean } from '../boolean/index.mjs';
|
|
10
10
|
import type { TNever } from '../never/index.mjs';
|
|
11
11
|
import type { Static } from '../static/index.mjs';
|
|
12
|
-
import { TTemplateLiteralSyntax } from './syntax.mjs';
|
|
12
|
+
import { type TTemplateLiteralSyntax } from './syntax.mjs';
|
|
13
13
|
import { EmptyString } from '../helpers/index.mjs';
|
|
14
14
|
import { Kind } from '../symbols/index.mjs';
|
|
15
15
|
type TemplateLiteralStaticKind<T, Acc extends string> = T extends TUnion<infer U> ? {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CloneType } from '../clone/type.mjs';
|
|
2
1
|
import { TransformKind } from '../symbols/index.mjs';
|
|
2
|
+
import { CloneType } from '../clone/type.mjs';
|
|
3
3
|
// ------------------------------------------------------------------
|
|
4
4
|
// TypeGuard
|
|
5
5
|
// ------------------------------------------------------------------
|
|
@@ -21,10 +21,10 @@ import { type TNull } from '../null/index.mjs';
|
|
|
21
21
|
import { type TMappedKey } from '../mapped/index.mjs';
|
|
22
22
|
import { type TNumber, type NumberOptions } from '../number/index.mjs';
|
|
23
23
|
import { type TObject, type TProperties, type ObjectOptions } from '../object/index.mjs';
|
|
24
|
-
import { type TOmit, type TOmitFromMappedKey } from '../omit/index.mjs';
|
|
24
|
+
import { type TOmit, type TOmitFromMappedKey, type TOmitFromMappedResult } from '../omit/index.mjs';
|
|
25
25
|
import { type TOptionalWithFlag, type TOptionalFromMappedResult } from '../optional/index.mjs';
|
|
26
26
|
import { type TPartial, type TPartialFromMappedResult } from '../partial/index.mjs';
|
|
27
|
-
import { type TPick, type TPickFromMappedKey } from '../pick/index.mjs';
|
|
27
|
+
import { type TPick, type TPickFromMappedKey, type TPickFromMappedResult } from '../pick/index.mjs';
|
|
28
28
|
import { type TReadonlyWithFlag, type TReadonlyFromMappedResult } from '../readonly/index.mjs';
|
|
29
29
|
import { type TReadonlyOptional } from '../readonly-optional/index.mjs';
|
|
30
30
|
import { type TRecordOrObject } from '../record/index.mjs';
|
|
@@ -127,6 +127,8 @@ export declare class JsonTypeBuilder {
|
|
|
127
127
|
/** `[Json]` Creates an Object type */
|
|
128
128
|
Object<T extends TProperties>(properties: T, options?: ObjectOptions): TObject<T>;
|
|
129
129
|
/** `[Json]` Constructs a type whose keys are omitted from the given type */
|
|
130
|
+
Omit<T extends TMappedResult, K extends PropertyKey[]>(T: T, K: [...K], options?: SchemaOptions): TOmitFromMappedResult<T, K>;
|
|
131
|
+
/** `[Json]` Constructs a type whose keys are omitted from the given type */
|
|
130
132
|
Omit<T extends TSchema, K extends TMappedKey>(T: T, K: K): TOmitFromMappedKey<T, K>;
|
|
131
133
|
/** `[Json]` Constructs a type whose keys are omitted from the given type */
|
|
132
134
|
Omit<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TOmit<T, I>;
|
|
@@ -137,6 +139,8 @@ export declare class JsonTypeBuilder {
|
|
|
137
139
|
/** `[Json]` Constructs a type where all properties are optional */
|
|
138
140
|
Partial<T extends TSchema>(schema: T, options?: ObjectOptions): TPartial<T>;
|
|
139
141
|
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
142
|
+
Pick<T extends TMappedResult, K extends PropertyKey[]>(T: T, K: [...K]): TPickFromMappedResult<T, K>;
|
|
143
|
+
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
140
144
|
Pick<T extends TSchema, K extends TMappedKey>(T: T, K: K): TPickFromMappedKey<T, K>;
|
|
141
145
|
/** `[Json]` Constructs a type whose keys are picked from the given type */
|
|
142
146
|
Pick<T extends TSchema, K extends TSchema, I extends PropertyKey[] = TIndexPropertyKeys<K>>(T: T, K: K, options?: SchemaOptions): TPick<T, I>;
|
|
@@ -7,25 +7,14 @@ import { UnionCreate } from './union-create.mjs';
|
|
|
7
7
|
// ------------------------------------------------------------------
|
|
8
8
|
// TypeGuard
|
|
9
9
|
// ------------------------------------------------------------------
|
|
10
|
-
// prettier-ignore
|
|
11
10
|
import { IsOptional } from '../guard/type.mjs';
|
|
12
11
|
// prettier-ignore
|
|
13
12
|
function IsUnionOptional(T) {
|
|
14
|
-
|
|
15
|
-
return (T.length > 0
|
|
16
|
-
? IsOptional(L)
|
|
17
|
-
? true
|
|
18
|
-
: IsUnionOptional(R)
|
|
19
|
-
: false);
|
|
13
|
+
return T.some(L => IsOptional(L));
|
|
20
14
|
}
|
|
21
15
|
// prettier-ignore
|
|
22
|
-
function RemoveOptionalFromRest(T
|
|
23
|
-
|
|
24
|
-
return (T.length > 0
|
|
25
|
-
? IsOptional(L)
|
|
26
|
-
? RemoveOptionalFromRest(R, [...Acc, RemoveOptionalFromType(L)])
|
|
27
|
-
: RemoveOptionalFromRest(R, [...Acc, L])
|
|
28
|
-
: Acc);
|
|
16
|
+
function RemoveOptionalFromRest(T) {
|
|
17
|
+
return T.map(L => IsOptional(L) ? RemoveOptionalFromType(L) : L);
|
|
29
18
|
}
|
|
30
19
|
// prettier-ignore
|
|
31
20
|
function RemoveOptionalFromType(T) {
|
package/build/require/index.d.ts
CHANGED
|
@@ -36,11 +36,11 @@ export { Not, type TNot } from './type/not/index';
|
|
|
36
36
|
export { Null, type TNull } from './type/null/index';
|
|
37
37
|
export { Number, type TNumber, type NumberOptions } from './type/number/index';
|
|
38
38
|
export { Object, type TObject, type TProperties, type ObjectOptions } from './type/object/index';
|
|
39
|
-
export { Omit, type TOmit, type TOmitFromMappedKey } from './type/omit/index';
|
|
39
|
+
export { Omit, type TOmit, type TOmitFromMappedKey, type TOmitFromMappedResult } from './type/omit/index';
|
|
40
40
|
export { Optional, OptionalFromMappedResult, type TOptional, type TOptionalWithFlag, type TOptionalFromMappedResult } from './type/optional/index';
|
|
41
41
|
export { Parameters, type TParameters } from './type/parameters/index';
|
|
42
42
|
export { Partial, PartialFromMappedResult, type TPartial, type TPartialFromMappedResult } from './type/partial/index';
|
|
43
|
-
export { Pick, type TPick, type TPickFromMappedKey } from './type/pick/index';
|
|
43
|
+
export { Pick, type TPick, type TPickFromMappedKey, type TPickFromMappedResult } from './type/pick/index';
|
|
44
44
|
export { Promise, type TPromise } from './type/promise/index';
|
|
45
45
|
export { Readonly, ReadonlyFromMappedResult, type TReadonly, type TReadonlyWithFlag, type TReadonlyFromMappedResult } from './type/readonly/index';
|
|
46
46
|
export { ReadonlyOptional, type TReadonlyOptional } from './type/readonly-optional/index';
|
|
@@ -8,14 +8,10 @@ const type_1 = require("../clone/type");
|
|
|
8
8
|
// ------------------------------------------------------------------
|
|
9
9
|
// TypeGuard
|
|
10
10
|
// ------------------------------------------------------------------
|
|
11
|
-
// prettier-ignore
|
|
12
11
|
const type_2 = require("../guard/type");
|
|
13
12
|
// prettier-ignore
|
|
14
|
-
function FromRest(T
|
|
15
|
-
|
|
16
|
-
return (T.length > 0
|
|
17
|
-
? FromRest(R, [...Acc, FromSchema(L)])
|
|
18
|
-
: Acc);
|
|
13
|
+
function FromRest(T) {
|
|
14
|
+
return T.map(L => FromSchema(L));
|
|
19
15
|
}
|
|
20
16
|
// prettier-ignore
|
|
21
17
|
function FromIntersect(T) {
|
|
@@ -7,8 +7,7 @@ type TCompositeIndex<T extends TIntersect<TObject[]>, K extends string[], Acc ex
|
|
|
7
7
|
[_ in L]: TIndex<T, [L]>;
|
|
8
8
|
}> : Acc;
|
|
9
9
|
type TCompositeReduce<T extends TObject[]> = UnionToTuple<TCompositeKeys<T>> extends infer K ? Evaluate<TCompositeIndex<TIntersect<T>, Assert<K, string[]>>> : {};
|
|
10
|
-
|
|
11
|
-
export declare function CompositeResolve<T extends TObject[]>(T: [...T]): TCompositeResolve<T>;
|
|
10
|
+
type TCompositeResolve<T extends TObject[]> = TIntersect<T> extends TIntersect ? TObject<TCompositeReduce<T>> : TObject<{}>;
|
|
12
11
|
export type TComposite<T extends TObject[]> = TCompositeResolve<T>;
|
|
13
12
|
/** `[Json]` Creates a Composite object type */
|
|
14
13
|
export declare function Composite<T extends TObject[]>(T: [...T], options?: ObjectOptions): TComposite<T>;
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Composite =
|
|
4
|
+
exports.Composite = void 0;
|
|
5
5
|
const index_1 = require("../object/index");
|
|
6
6
|
const index_2 = require("../intersect/index");
|
|
7
|
-
const index_3 = require("../
|
|
8
|
-
const index_4 = require("../
|
|
7
|
+
const index_3 = require("../indexed/index");
|
|
8
|
+
const index_4 = require("../keyof/index");
|
|
9
9
|
const type_1 = require("../clone/type");
|
|
10
10
|
function CompositeResolve(T) {
|
|
11
11
|
const intersect = (0, index_2.Intersect)(T, {});
|
|
12
|
-
const keys = (0,
|
|
13
|
-
const properties = keys.reduce((acc, key) => ({ ...acc, [key]: (0,
|
|
12
|
+
const keys = (0, index_4.KeyOfPropertyKeys)(intersect);
|
|
13
|
+
const properties = keys.reduce((acc, key) => ({ ...acc, [key]: (0, index_3.Index)(intersect, [key]) }), {});
|
|
14
14
|
return (0, index_1.Object)(properties);
|
|
15
15
|
}
|
|
16
|
-
exports.CompositeResolve = CompositeResolve;
|
|
17
16
|
/** `[Json]` Creates a Composite object type */
|
|
18
17
|
function Composite(T, options) {
|
|
19
18
|
return (0, type_1.CloneType)(CompositeResolve(T), options);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Const = void 0;
|
|
5
|
-
const value_1 = require("../guard/value");
|
|
6
5
|
const index_1 = require("../any/index");
|
|
7
6
|
const index_2 = require("../bigint/index");
|
|
8
7
|
const index_3 = require("../date/index");
|
|
@@ -17,12 +16,13 @@ const index_11 = require("../undefined/index");
|
|
|
17
16
|
const index_12 = require("../uint8array/index");
|
|
18
17
|
const index_13 = require("../unknown/index");
|
|
19
18
|
const index_14 = require("../clone/index");
|
|
19
|
+
// ------------------------------------------------------------------
|
|
20
|
+
// ValueGuard
|
|
21
|
+
// ------------------------------------------------------------------
|
|
22
|
+
const value_1 = require("../guard/value");
|
|
20
23
|
// prettier-ignore
|
|
21
24
|
function FromArray(T) {
|
|
22
|
-
|
|
23
|
-
return (T.length > 0
|
|
24
|
-
? [FromValue(L, false), ...FromArray(R)]
|
|
25
|
-
: []);
|
|
25
|
+
return T.map(L => FromValue(L, false));
|
|
26
26
|
}
|
|
27
27
|
// prettier-ignore
|
|
28
28
|
function FromProperties(value) {
|
|
@@ -37,7 +37,7 @@ function ConditionalReadonly(T, root) {
|
|
|
37
37
|
function FromValue(value, root) {
|
|
38
38
|
return ((0, value_1.IsAsyncIterator)(value) ? ConditionalReadonly((0, index_1.Any)(), root) :
|
|
39
39
|
(0, value_1.IsIterator)(value) ? ConditionalReadonly((0, index_1.Any)(), root) :
|
|
40
|
-
(0, value_1.IsArray)(value) ? (0, index_10.Readonly)((0, index_9.Tuple)(FromArray(value))) :
|
|
40
|
+
(0, value_1.IsArray)(value) ? (0, index_10.Readonly)((0, index_9.Tuple)(FromArray(value))) :
|
|
41
41
|
(0, value_1.IsUint8Array)(value) ? (0, index_12.Uint8Array)() :
|
|
42
42
|
(0, value_1.IsDate)(value) ? (0, index_3.Date)() :
|
|
43
43
|
(0, value_1.IsObject)(value) ? ConditionalReadonly((0, index_7.Object)(FromProperties(value)), root) :
|
|
@@ -4,7 +4,7 @@ import type { Ensure } from '../helpers/index';
|
|
|
4
4
|
import { Kind } from '../symbols/index';
|
|
5
5
|
type ConstructorStaticReturnType<T extends TSchema, P extends unknown[]> = Static<T, P>;
|
|
6
6
|
type ConstructorStaticParameters<T extends TSchema[], P extends unknown[], Acc extends unknown[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? ConstructorStaticParameters<R, P, [...Acc, Static<L, P>]> : Acc;
|
|
7
|
-
|
|
7
|
+
type ConstructorStatic<T extends TSchema[], U extends TSchema, P extends unknown[]> = (Ensure<new (...param: ConstructorStaticParameters<T, P>) => ConstructorStaticReturnType<U, P>>);
|
|
8
8
|
export interface TConstructor<T extends TSchema[] = TSchema[], U extends TSchema = TSchema> extends TSchema {
|
|
9
9
|
[Kind]: 'Constructor';
|
|
10
10
|
static: ConstructorStatic<T, U, this['params']>;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Constructor = void 0;
|
|
5
|
-
const index_1 = require("../symbols/index");
|
|
6
5
|
const type_1 = require("../clone/type");
|
|
6
|
+
const index_1 = require("../symbols/index");
|
|
7
7
|
/** `[JavaScript]` Creates a Constructor type */
|
|
8
8
|
function Constructor(parameters, returns, options) {
|
|
9
9
|
return {
|
|
@@ -8,7 +8,6 @@ const value_1 = require("../guard/value");
|
|
|
8
8
|
// ------------------------------------------------------------------
|
|
9
9
|
// TypeGuard
|
|
10
10
|
// ------------------------------------------------------------------
|
|
11
|
-
// prettier-ignore
|
|
12
11
|
const type_2 = require("../guard/type");
|
|
13
12
|
function FromRest(schema, references) {
|
|
14
13
|
return schema.map((schema) => Deref(schema, references));
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Discard = void 0;
|
|
5
|
-
function
|
|
5
|
+
function DiscardKey(value, key) {
|
|
6
6
|
const { [key]: _, ...rest } = value;
|
|
7
7
|
return rest;
|
|
8
8
|
}
|
|
9
9
|
function Discard(value, keys) {
|
|
10
|
-
return keys.reduce((acc, key) =>
|
|
10
|
+
return keys.reduce((acc, key) => DiscardKey(acc, key), value);
|
|
11
11
|
}
|
|
12
12
|
exports.Discard = Discard;
|
|
@@ -5,6 +5,9 @@ exports.Enum = void 0;
|
|
|
5
5
|
const index_1 = require("../literal/index");
|
|
6
6
|
const index_2 = require("../symbols/index");
|
|
7
7
|
const index_3 = require("../union/index");
|
|
8
|
+
// ------------------------------------------------------------------
|
|
9
|
+
// ValueGuard
|
|
10
|
+
// ------------------------------------------------------------------
|
|
8
11
|
const value_1 = require("../guard/value");
|
|
9
12
|
/** `[Json]` Creates a Enum type */
|
|
10
13
|
function Enum(item, options = {}) {
|