@sinclair/typebox 0.34.31 → 0.34.33

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.
@@ -0,0 +1,167 @@
1
+ import * as T from '../type/index';
2
+ type TDereference<Context extends T.TProperties, Key extends string> = (Key extends keyof Context ? Context[Key] : T.TRef<Key>);
3
+ type TDelimitedDecode<Input extends ([unknown, unknown] | unknown)[], Result extends unknown[] = []> = (Input extends [infer Left, ...infer Right] ? Left extends [infer Item, infer _] ? TDelimitedDecode<Right, [...Result, Item]> : TDelimitedDecode<Right, [...Result, Left]> : Result);
4
+ type TDelimited<Input extends [unknown, unknown]> = Input extends [infer Left extends unknown[], infer Right extends unknown[]] ? TDelimitedDecode<[...Left, ...Right]> : [];
5
+ export type TGenericReferenceParameterListMapping<Input extends [unknown, unknown], Context extends T.TProperties> = TDelimited<Input>;
6
+ export declare function GenericReferenceParameterListMapping(input: [unknown, unknown], context: unknown): unknown[];
7
+ export type TGenericReferenceMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties, Result = Context extends T.TProperties ? Input extends [infer Reference extends string, '<', infer Args extends T.TSchema[], '>'] ? T.TInstantiate<TDereference<Context, Reference>, Args> : never : never> = Result;
8
+ export declare function GenericReferenceMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
9
+ export type TGenericArgumentsListMapping<Input extends [unknown, unknown], Context extends T.TProperties> = TDelimited<Input>;
10
+ export declare function GenericArgumentsListMapping(input: [unknown, unknown], context: unknown): unknown[];
11
+ type GenericArgumentsContext<Arguments extends string[], Context extends T.TProperties, Result extends T.TProperties = {}> = (Arguments extends [...infer Left extends string[], infer Right extends string] ? GenericArgumentsContext<Left, Context, Result & {
12
+ [_ in Right]: T.TArgument<Left['length']>;
13
+ }> : T.Evaluate<Result & Context>);
14
+ export type TGenericArgumentsMapping<Input extends [unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['<', infer Arguments extends string[], '>'] ? Context extends infer Context extends T.TProperties ? GenericArgumentsContext<Arguments, Context> : never : never;
15
+ declare const GenericArgumentsContext: (_arguments: string[], context: T.TProperties) => T.TProperties;
16
+ export declare function GenericArgumentsMapping(input: [unknown, unknown, unknown], context: unknown): T.TProperties;
17
+ export type TKeywordStringMapping<Input extends 'string', Context extends T.TProperties> = T.TString;
18
+ export declare function KeywordStringMapping(input: 'string', context: unknown): T.TString;
19
+ export type TKeywordNumberMapping<Input extends 'number', Context extends T.TProperties> = T.TNumber;
20
+ export declare function KeywordNumberMapping(input: 'number', context: unknown): T.TNumber;
21
+ export type TKeywordBooleanMapping<Input extends 'boolean', Context extends T.TProperties> = T.TBoolean;
22
+ export declare function KeywordBooleanMapping(input: 'boolean', context: unknown): T.TBoolean;
23
+ export type TKeywordUndefinedMapping<Input extends 'undefined', Context extends T.TProperties> = T.TUndefined;
24
+ export declare function KeywordUndefinedMapping(input: 'undefined', context: unknown): T.TUndefined;
25
+ export type TKeywordNullMapping<Input extends 'null', Context extends T.TProperties> = T.TNull;
26
+ export declare function KeywordNullMapping(input: 'null', context: unknown): T.TNull;
27
+ export type TKeywordIntegerMapping<Input extends 'integer', Context extends T.TProperties> = T.TInteger;
28
+ export declare function KeywordIntegerMapping(input: 'integer', context: unknown): T.TInteger;
29
+ export type TKeywordBigIntMapping<Input extends 'bigint', Context extends T.TProperties> = T.TBigInt;
30
+ export declare function KeywordBigIntMapping(input: 'bigint', context: unknown): T.TBigInt;
31
+ export type TKeywordUnknownMapping<Input extends 'unknown', Context extends T.TProperties> = T.TUnknown;
32
+ export declare function KeywordUnknownMapping(input: 'unknown', context: unknown): T.TUnknown;
33
+ export type TKeywordAnyMapping<Input extends 'any', Context extends T.TProperties> = T.TAny;
34
+ export declare function KeywordAnyMapping(input: 'any', context: unknown): T.TAny;
35
+ export type TKeywordNeverMapping<Input extends 'never', Context extends T.TProperties> = T.TNever;
36
+ export declare function KeywordNeverMapping(input: 'never', context: unknown): T.TNever;
37
+ export type TKeywordSymbolMapping<Input extends 'symbol', Context extends T.TProperties> = T.TSymbol;
38
+ export declare function KeywordSymbolMapping(input: 'symbol', context: unknown): T.TSymbol;
39
+ export type TKeywordVoidMapping<Input extends 'void', Context extends T.TProperties> = T.TVoid;
40
+ export declare function KeywordVoidMapping(input: 'void', context: unknown): T.TVoid;
41
+ export type TKeywordMapping<Input extends unknown, Context extends T.TProperties> = Input;
42
+ export declare function KeywordMapping(input: unknown, context: unknown): unknown;
43
+ export type TLiteralStringMapping<Input extends string, Context extends T.TProperties> = Input extends T.TLiteralValue ? T.TLiteral<Input> : never;
44
+ export declare function LiteralStringMapping(input: string, context: unknown): T.TLiteral<string>;
45
+ export type TLiteralNumberMapping<Input extends string, Context extends T.TProperties> = Input extends `${infer Value extends number}` ? T.TLiteral<Value> : never;
46
+ export declare function LiteralNumberMapping(input: string, context: unknown): T.TLiteral<number>;
47
+ export type TLiteralBooleanMapping<Input extends 'true' | 'false', Context extends T.TProperties> = Input extends 'true' ? T.TLiteral<true> : T.TLiteral<false>;
48
+ export declare function LiteralBooleanMapping(input: 'true' | 'false', context: unknown): T.TLiteral<boolean>;
49
+ export type TLiteralMapping<Input extends unknown, Context extends T.TProperties> = Input;
50
+ export declare function LiteralMapping(input: unknown, context: unknown): unknown;
51
+ export type TKeyOfMapping<Input extends [unknown] | [], Context extends T.TProperties> = Input extends [unknown] ? true : false;
52
+ export declare function KeyOfMapping(input: [unknown] | [], context: unknown): boolean;
53
+ type TIndexArrayMappingReduce<Input extends unknown[], Result extends unknown[] = []> = (Input extends [infer Left extends unknown, ...infer Right extends unknown[]] ? Left extends ['[', infer Type extends T.TSchema, ']'] ? TIndexArrayMappingReduce<Right, [...Result, [Type]]> : TIndexArrayMappingReduce<Right, [...Result, []]> : Result);
54
+ export type TIndexArrayMapping<Input extends ([unknown, unknown, unknown] | [unknown, unknown])[], Context extends T.TProperties> = Input extends unknown[] ? TIndexArrayMappingReduce<Input> : [];
55
+ export declare function IndexArrayMapping(input: ([unknown, unknown, unknown] | [unknown, unknown])[], context: unknown): unknown[];
56
+ export type TExtendsMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown] | [], Context extends T.TProperties> = Input extends ['extends', infer Type extends T.TSchema, '?', infer True extends T.TSchema, ':', infer False extends T.TSchema] ? [Type, True, False] : [];
57
+ export declare function ExtendsMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown] | [], context: unknown): unknown[];
58
+ export type TBaseMapping<Input extends [unknown, unknown, unknown] | unknown, Context extends T.TProperties> = (Input extends ['(', infer Type extends T.TSchema, ')'] ? Type : Input extends infer Type extends T.TSchema ? Type : never);
59
+ export declare function BaseMapping(input: [unknown, unknown, unknown] | unknown, context: unknown): unknown;
60
+ type TFactorIndexArray<Type extends T.TSchema, IndexArray extends unknown[]> = (IndexArray extends [...infer Left extends unknown[], infer Right extends T.TSchema[]] ? (Right extends [infer Indexer extends T.TSchema] ? T.TIndex<TFactorIndexArray<Type, Left>, T.TIndexPropertyKeys<Indexer>> : Right extends [] ? T.TArray<TFactorIndexArray<Type, Left>> : T.TNever) : Type);
61
+ type TFactorExtends<Type extends T.TSchema, Extends extends unknown[]> = (Extends extends [infer Right extends T.TSchema, infer True extends T.TSchema, infer False extends T.TSchema] ? T.TExtends<Type, Right, True, False> : Type);
62
+ export type TFactorMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends [infer KeyOf extends boolean, infer Type extends T.TSchema, infer IndexArray extends unknown[], infer Extends extends unknown[]] ? KeyOf extends true ? TFactorExtends<T.TKeyOf<TFactorIndexArray<Type, IndexArray>>, Extends> : TFactorExtends<TFactorIndexArray<Type, IndexArray>, Extends> : never;
63
+ export declare function FactorMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
64
+ type TExprBinaryMapping<Left extends T.TSchema, Rest extends unknown[]> = (Rest extends [infer Operator extends unknown, infer Right extends T.TSchema, infer Next extends unknown[]] ? (TExprBinaryMapping<Right, Next> extends infer Schema extends T.TSchema ? (Operator extends '&' ? (Schema extends T.TIntersect<infer Types extends T.TSchema[]> ? T.TIntersect<[Left, ...Types]> : T.TIntersect<[Left, Schema]>) : Operator extends '|' ? (Schema extends T.TUnion<infer Types extends T.TSchema[]> ? T.TUnion<[Left, ...Types]> : T.TUnion<[Left, Schema]>) : never) : never) : Left);
65
+ export type TExprTermTailMapping<Input extends [unknown, unknown, unknown] | [], Context extends T.TProperties> = Input;
66
+ export declare function ExprTermTailMapping(input: [unknown, unknown, unknown] | [], context: unknown): [] | [unknown, unknown, unknown];
67
+ export type TExprTermMapping<Input extends [unknown, unknown], Context extends T.TProperties> = (Input extends [infer Left extends T.TSchema, infer Rest extends unknown[]] ? TExprBinaryMapping<Left, Rest> : []);
68
+ export declare function ExprTermMapping(input: [unknown, unknown], context: unknown): T.TSchema;
69
+ export type TExprTailMapping<Input extends [unknown, unknown, unknown] | [], Context extends T.TProperties> = Input;
70
+ export declare function ExprTailMapping(input: [unknown, unknown, unknown] | [], context: unknown): [] | [unknown, unknown, unknown];
71
+ export type TExprMapping<Input extends [unknown, unknown], Context extends T.TProperties> = Input extends [infer Left extends T.TSchema, infer Rest extends unknown[]] ? TExprBinaryMapping<Left, Rest> : [];
72
+ export declare function ExprMapping(input: [unknown, unknown], context: unknown): T.TSchema;
73
+ export type TTypeMapping<Input extends unknown, Context extends T.TProperties> = Input;
74
+ export declare function TypeMapping(input: unknown, context: unknown): unknown;
75
+ export type TPropertyKeyMapping<Input extends string, Context extends T.TProperties> = Input;
76
+ export declare function PropertyKeyMapping(input: string, context: unknown): string;
77
+ export type TReadonlyMapping<Input extends [unknown] | [], Context extends T.TProperties> = Input extends [unknown] ? true : false;
78
+ export declare function ReadonlyMapping(input: [unknown] | [], context: unknown): boolean;
79
+ export type TOptionalMapping<Input extends [unknown] | [], Context extends T.TProperties> = Input extends [unknown] ? true : false;
80
+ export declare function OptionalMapping(input: [unknown] | [], context: unknown): boolean;
81
+ export type TPropertyMapping<Input extends [unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends [infer IsReadonly extends boolean, infer Key extends string, infer IsOptional extends boolean, string, infer Type extends T.TSchema] ? {
82
+ [_ in Key]: ([
83
+ IsReadonly,
84
+ IsOptional
85
+ ] extends [true, true] ? T.TReadonlyOptional<Type> : [
86
+ IsReadonly,
87
+ IsOptional
88
+ ] extends [true, false] ? T.TReadonly<Type> : [
89
+ IsReadonly,
90
+ IsOptional
91
+ ] extends [false, true] ? T.TOptional<Type> : Type);
92
+ } : never;
93
+ export declare function PropertyMapping(input: [unknown, unknown, unknown, unknown, unknown], context: unknown): {
94
+ [x: string]: T.TSchema;
95
+ };
96
+ export type TPropertyDelimiterMapping<Input extends [unknown, unknown] | [unknown], Context extends T.TProperties> = Input;
97
+ export declare function PropertyDelimiterMapping(input: [unknown, unknown] | [unknown], context: unknown): [unknown] | [unknown, unknown];
98
+ export type TPropertyListMapping<Input extends [unknown, unknown], Context extends T.TProperties> = TDelimited<Input>;
99
+ export declare function PropertyListMapping(input: [unknown, unknown], context: unknown): unknown[];
100
+ type TObjectMappingReduce<PropertiesList extends T.TProperties[], Result extends T.TProperties = {}> = (PropertiesList extends [infer Left extends T.TProperties, ...infer Right extends T.TProperties[]] ? TObjectMappingReduce<Right, Result & Left> : {
101
+ [Key in keyof Result]: Result[Key];
102
+ });
103
+ export type TObjectMapping<Input extends [unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['{', infer PropertyList extends T.TProperties[], '}'] ? T.TObject<TObjectMappingReduce<PropertyList>> : never;
104
+ export declare function ObjectMapping(input: [unknown, unknown, unknown], context: unknown): T.TObject<T.TProperties>;
105
+ export type TElementListMapping<Input extends [unknown, unknown], Context extends T.TProperties> = TDelimited<Input>;
106
+ export declare function ElementListMapping(input: [unknown, unknown], context: unknown): unknown[];
107
+ export type TTupleMapping<Input extends [unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['[', infer Types extends T.TSchema[], ']'] ? T.TTuple<Types> : never;
108
+ export declare function TupleMapping(input: [unknown, unknown, unknown], context: unknown): T.TTuple<T.TSchema[]>;
109
+ export type TParameterMapping<Input extends [unknown, unknown, unknown], Context extends T.TProperties> = Input extends [string, ':', infer Type extends T.TSchema] ? Type : never;
110
+ export declare function ParameterMapping(input: [unknown, unknown, unknown], context: unknown): T.TSchema;
111
+ export type TParameterListMapping<Input extends [unknown, unknown], Context extends T.TProperties> = TDelimited<Input>;
112
+ export declare function ParameterListMapping(input: [unknown, unknown], context: unknown): unknown[];
113
+ export type TFunctionMapping<Input extends [unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['(', infer ParameterList extends T.TSchema[], ')', '=>', infer ReturnType extends T.TSchema] ? T.TFunction<ParameterList, ReturnType> : never;
114
+ export declare function FunctionMapping(input: [unknown, unknown, unknown, unknown, unknown], context: unknown): T.TFunction<T.TSchema[], T.TSchema>;
115
+ export type TConstructorMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['new', '(', infer ParameterList extends T.TSchema[], ')', '=>', infer InstanceType extends T.TSchema] ? T.TConstructor<ParameterList, InstanceType> : never;
116
+ export declare function ConstructorMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown], context: unknown): T.TConstructor<T.TSchema[], T.TSchema>;
117
+ export type TMappedMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['{', '[', infer _Key extends string, 'in', infer _Right extends T.TSchema, ']', ':', infer _Type extends T.TSchema, '}'] ? T.TLiteral<'Mapped types not supported'> : never;
118
+ export declare function MappedMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown], context: unknown): T.TLiteral<"Mapped types not supported">;
119
+ export type TAsyncIteratorMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['AsyncIterator', '<', infer Type extends T.TSchema, '>'] ? T.TAsyncIterator<Type> : never;
120
+ export declare function AsyncIteratorMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TAsyncIterator<T.TSchema>;
121
+ export type TIteratorMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Iterator', '<', infer Type extends T.TSchema, '>'] ? T.TIterator<Type> : never;
122
+ export declare function IteratorMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TIterator<T.TSchema>;
123
+ export type TArgumentMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Argument', '<', infer Type extends T.TSchema, '>'] ? Type extends T.TLiteral<infer Index extends number> ? T.TArgument<Index> : T.TNever : never;
124
+ export declare function ArgumentMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TNever | T.TArgument<number>;
125
+ export type TAwaitedMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Awaited', '<', infer Type extends T.TSchema, '>'] ? T.TAwaited<Type> : never;
126
+ export declare function AwaitedMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
127
+ export type TArrayMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Array', '<', infer Type extends T.TSchema, '>'] ? T.TArray<Type> : never;
128
+ export declare function ArrayMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TArray<T.TSchema>;
129
+ export type TRecordMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Record', '<', infer Key extends T.TSchema, ',', infer Type extends T.TSchema, '>'] ? T.TRecordOrObject<Key, Type> : never;
130
+ export declare function RecordMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown], context: unknown): T.TNever;
131
+ export type TPromiseMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Promise', '<', infer Type extends T.TSchema, '>'] ? T.TPromise<Type> : never;
132
+ export declare function PromiseMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TPromise<T.TSchema>;
133
+ export type TConstructorParametersMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['ConstructorParameters', '<', infer Type extends T.TSchema, '>'] ? T.TConstructorParameters<Type> : never;
134
+ export declare function ConstructorParametersMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TNever;
135
+ export type TFunctionParametersMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Parameters', '<', infer Type extends T.TSchema, '>'] ? T.TParameters<Type> : never;
136
+ export declare function FunctionParametersMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TNever;
137
+ export type TInstanceTypeMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['InstanceType', '<', infer Type extends T.TSchema, '>'] ? T.TInstanceType<Type> : never;
138
+ export declare function InstanceTypeMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TNever;
139
+ export type TReturnTypeMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['ReturnType', '<', infer Type extends T.TSchema, '>'] ? T.TReturnType<Type> : never;
140
+ export declare function ReturnTypeMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TNever;
141
+ export type TPartialMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Partial', '<', infer Type extends T.TSchema, '>'] ? T.TPartial<Type> : never;
142
+ export declare function PartialMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TObject<{}>;
143
+ export type TRequiredMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Required', '<', infer Type extends T.TSchema, '>'] ? T.TRequired<Type> : never;
144
+ export declare function RequiredMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TObject<{}>;
145
+ export type TPickMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Pick', '<', infer Type extends T.TSchema, ',', infer Key extends T.TSchema, '>'] ? T.TPick<Type, Key> : never;
146
+ export declare function PickMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown], context: unknown): T.TObject<{}>;
147
+ export type TOmitMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Omit', '<', infer Type extends T.TSchema, ',', infer Key extends T.TSchema, '>'] ? T.TOmit<Type, Key> : never;
148
+ export declare function OmitMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown], context: unknown): T.TObject<{}>;
149
+ export type TExcludeMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Exclude', '<', infer Type extends T.TSchema, ',', infer Key extends T.TSchema, '>'] ? T.TExclude<Type, Key> : never;
150
+ export declare function ExcludeMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown], context: unknown): T.TNever;
151
+ export type TExtractMapping<Input extends [unknown, unknown, unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Extract', '<', infer Type extends T.TSchema, ',', infer Key extends T.TSchema, '>'] ? T.TExtract<Type, Key> : never;
152
+ export declare function ExtractMapping(input: [unknown, unknown, unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
153
+ export type TUppercaseMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Uppercase', '<', infer Type extends T.TSchema, '>'] ? T.TUppercase<Type> : never;
154
+ export declare function UppercaseMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
155
+ export type TLowercaseMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Lowercase', '<', infer Type extends T.TSchema, '>'] ? T.TLowercase<Type> : never;
156
+ export declare function LowercaseMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
157
+ export type TCapitalizeMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Capitalize', '<', infer Type extends T.TSchema, '>'] ? T.TCapitalize<Type> : never;
158
+ export declare function CapitalizeMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
159
+ export type TUncapitalizeMapping<Input extends [unknown, unknown, unknown, unknown], Context extends T.TProperties> = Input extends ['Uncapitalize', '<', infer Type extends T.TSchema, '>'] ? T.TUncapitalize<Type> : never;
160
+ export declare function UncapitalizeMapping(input: [unknown, unknown, unknown, unknown], context: unknown): T.TSchema;
161
+ export type TDateMapping<Input extends 'Date', Context extends T.TProperties> = T.TDate;
162
+ export declare function DateMapping(input: 'Date', context: unknown): T.TDate;
163
+ export type TUint8ArrayMapping<Input extends 'Uint8Array', Context extends T.TProperties> = T.TUint8Array;
164
+ export declare function Uint8ArrayMapping(input: 'Uint8Array', context: unknown): T.TUint8Array;
165
+ export type TReferenceMapping<Input extends string, Context extends T.TProperties> = Context extends T.TProperties ? Input extends string ? TDereference<Context, Input> : never : never;
166
+ export declare function ReferenceMapping(input: string, context: unknown): T.TSchema;
167
+ export {};
@@ -0,0 +1,458 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.GenericReferenceParameterListMapping = GenericReferenceParameterListMapping;
5
+ exports.GenericReferenceMapping = GenericReferenceMapping;
6
+ exports.GenericArgumentsListMapping = GenericArgumentsListMapping;
7
+ exports.GenericArgumentsMapping = GenericArgumentsMapping;
8
+ exports.KeywordStringMapping = KeywordStringMapping;
9
+ exports.KeywordNumberMapping = KeywordNumberMapping;
10
+ exports.KeywordBooleanMapping = KeywordBooleanMapping;
11
+ exports.KeywordUndefinedMapping = KeywordUndefinedMapping;
12
+ exports.KeywordNullMapping = KeywordNullMapping;
13
+ exports.KeywordIntegerMapping = KeywordIntegerMapping;
14
+ exports.KeywordBigIntMapping = KeywordBigIntMapping;
15
+ exports.KeywordUnknownMapping = KeywordUnknownMapping;
16
+ exports.KeywordAnyMapping = KeywordAnyMapping;
17
+ exports.KeywordNeverMapping = KeywordNeverMapping;
18
+ exports.KeywordSymbolMapping = KeywordSymbolMapping;
19
+ exports.KeywordVoidMapping = KeywordVoidMapping;
20
+ exports.KeywordMapping = KeywordMapping;
21
+ exports.LiteralStringMapping = LiteralStringMapping;
22
+ exports.LiteralNumberMapping = LiteralNumberMapping;
23
+ exports.LiteralBooleanMapping = LiteralBooleanMapping;
24
+ exports.LiteralMapping = LiteralMapping;
25
+ exports.KeyOfMapping = KeyOfMapping;
26
+ exports.IndexArrayMapping = IndexArrayMapping;
27
+ exports.ExtendsMapping = ExtendsMapping;
28
+ exports.BaseMapping = BaseMapping;
29
+ exports.FactorMapping = FactorMapping;
30
+ exports.ExprTermTailMapping = ExprTermTailMapping;
31
+ exports.ExprTermMapping = ExprTermMapping;
32
+ exports.ExprTailMapping = ExprTailMapping;
33
+ exports.ExprMapping = ExprMapping;
34
+ exports.TypeMapping = TypeMapping;
35
+ exports.PropertyKeyMapping = PropertyKeyMapping;
36
+ exports.ReadonlyMapping = ReadonlyMapping;
37
+ exports.OptionalMapping = OptionalMapping;
38
+ exports.PropertyMapping = PropertyMapping;
39
+ exports.PropertyDelimiterMapping = PropertyDelimiterMapping;
40
+ exports.PropertyListMapping = PropertyListMapping;
41
+ exports.ObjectMapping = ObjectMapping;
42
+ exports.ElementListMapping = ElementListMapping;
43
+ exports.TupleMapping = TupleMapping;
44
+ exports.ParameterMapping = ParameterMapping;
45
+ exports.ParameterListMapping = ParameterListMapping;
46
+ exports.FunctionMapping = FunctionMapping;
47
+ exports.ConstructorMapping = ConstructorMapping;
48
+ exports.MappedMapping = MappedMapping;
49
+ exports.AsyncIteratorMapping = AsyncIteratorMapping;
50
+ exports.IteratorMapping = IteratorMapping;
51
+ exports.ArgumentMapping = ArgumentMapping;
52
+ exports.AwaitedMapping = AwaitedMapping;
53
+ exports.ArrayMapping = ArrayMapping;
54
+ exports.RecordMapping = RecordMapping;
55
+ exports.PromiseMapping = PromiseMapping;
56
+ exports.ConstructorParametersMapping = ConstructorParametersMapping;
57
+ exports.FunctionParametersMapping = FunctionParametersMapping;
58
+ exports.InstanceTypeMapping = InstanceTypeMapping;
59
+ exports.ReturnTypeMapping = ReturnTypeMapping;
60
+ exports.PartialMapping = PartialMapping;
61
+ exports.RequiredMapping = RequiredMapping;
62
+ exports.PickMapping = PickMapping;
63
+ exports.OmitMapping = OmitMapping;
64
+ exports.ExcludeMapping = ExcludeMapping;
65
+ exports.ExtractMapping = ExtractMapping;
66
+ exports.UppercaseMapping = UppercaseMapping;
67
+ exports.LowercaseMapping = LowercaseMapping;
68
+ exports.CapitalizeMapping = CapitalizeMapping;
69
+ exports.UncapitalizeMapping = UncapitalizeMapping;
70
+ exports.DateMapping = DateMapping;
71
+ exports.Uint8ArrayMapping = Uint8ArrayMapping;
72
+ exports.ReferenceMapping = ReferenceMapping;
73
+ const T = require("../type/index");
74
+ // prettier-ignore
75
+ const Dereference = (context, key) => {
76
+ return key in context ? context[key] : T.Ref(key);
77
+ };
78
+ // prettier-ignore
79
+ const DelimitedDecode = (input, result = []) => {
80
+ return input.reduce((result, left) => {
81
+ return T.ValueGuard.IsArray(left) && left.length === 2
82
+ ? [...result, left[0]]
83
+ : [...result, left];
84
+ }, []);
85
+ };
86
+ // prettier-ignore
87
+ const Delimited = (input) => {
88
+ const [left, right] = input;
89
+ return DelimitedDecode([...left, ...right]);
90
+ };
91
+ // prettier-ignore
92
+ function GenericReferenceParameterListMapping(input, context) {
93
+ return Delimited(input);
94
+ }
95
+ // prettier-ignore
96
+ function GenericReferenceMapping(input, context) {
97
+ const type = Dereference(context, input[0]);
98
+ const args = input[2];
99
+ return T.Instantiate(type, args);
100
+ }
101
+ // prettier-ignore
102
+ function GenericArgumentsListMapping(input, context) {
103
+ return Delimited(input);
104
+ }
105
+ // ...
106
+ // prettier-ignore
107
+ const GenericArgumentsContext = (_arguments, context) => {
108
+ return _arguments.reduce((result, arg, index) => {
109
+ return { ...result, [arg]: T.Argument(index) };
110
+ }, context);
111
+ };
112
+ // prettier-ignore
113
+ function GenericArgumentsMapping(input, context) {
114
+ return input.length === 3
115
+ ? GenericArgumentsContext(input[1], context)
116
+ : {};
117
+ }
118
+ // prettier-ignore
119
+ function KeywordStringMapping(input, context) {
120
+ return T.String();
121
+ }
122
+ // prettier-ignore
123
+ function KeywordNumberMapping(input, context) {
124
+ return T.Number();
125
+ }
126
+ // prettier-ignore
127
+ function KeywordBooleanMapping(input, context) {
128
+ return T.Boolean();
129
+ }
130
+ // prettier-ignore
131
+ function KeywordUndefinedMapping(input, context) {
132
+ return T.Undefined();
133
+ }
134
+ // prettier-ignore
135
+ function KeywordNullMapping(input, context) {
136
+ return T.Null();
137
+ }
138
+ // prettier-ignore
139
+ function KeywordIntegerMapping(input, context) {
140
+ return T.Integer();
141
+ }
142
+ // prettier-ignore
143
+ function KeywordBigIntMapping(input, context) {
144
+ return T.BigInt();
145
+ }
146
+ // prettier-ignore
147
+ function KeywordUnknownMapping(input, context) {
148
+ return T.Unknown();
149
+ }
150
+ // prettier-ignore
151
+ function KeywordAnyMapping(input, context) {
152
+ return T.Any();
153
+ }
154
+ // prettier-ignore
155
+ function KeywordNeverMapping(input, context) {
156
+ return T.Never();
157
+ }
158
+ // prettier-ignore
159
+ function KeywordSymbolMapping(input, context) {
160
+ return T.Symbol();
161
+ }
162
+ // prettier-ignore
163
+ function KeywordVoidMapping(input, context) {
164
+ return T.Void();
165
+ }
166
+ // prettier-ignore
167
+ function KeywordMapping(input, context) {
168
+ return input;
169
+ }
170
+ // prettier-ignore
171
+ function LiteralStringMapping(input, context) {
172
+ return T.Literal(input);
173
+ }
174
+ // prettier-ignore
175
+ function LiteralNumberMapping(input, context) {
176
+ return T.Literal(parseFloat(input));
177
+ }
178
+ // prettier-ignore
179
+ function LiteralBooleanMapping(input, context) {
180
+ return T.Literal(input === 'true');
181
+ }
182
+ // prettier-ignore
183
+ function LiteralMapping(input, context) {
184
+ return input;
185
+ }
186
+ // prettier-ignore
187
+ function KeyOfMapping(input, context) {
188
+ return input.length > 0;
189
+ }
190
+ // prettier-ignore
191
+ function IndexArrayMapping(input, context) {
192
+ return input.reduce((result, current) => {
193
+ return current.length === 3
194
+ ? [...result, [current[1]]]
195
+ : [...result, []];
196
+ }, []);
197
+ }
198
+ // prettier-ignore
199
+ function ExtendsMapping(input, context) {
200
+ return input.length === 6
201
+ ? [input[1], input[3], input[5]]
202
+ : [];
203
+ }
204
+ // prettier-ignore
205
+ function BaseMapping(input, context) {
206
+ return T.ValueGuard.IsArray(input) && input.length === 3 ? input[1] : input;
207
+ }
208
+ // ...
209
+ // prettier-ignore
210
+ const FactorIndexArray = (Type, indexArray) => {
211
+ return indexArray.reduceRight((result, right) => {
212
+ const _right = right;
213
+ return (_right.length === 1 ? T.Index(result, _right[0]) :
214
+ _right.length === 0 ? T.Array(result, _right[0]) :
215
+ T.Never());
216
+ }, Type);
217
+ };
218
+ // prettier-ignore
219
+ const FactorExtends = (Type, Extends) => {
220
+ return Extends.length === 3
221
+ ? T.Extends(Type, Extends[0], Extends[1], Extends[2])
222
+ : Type;
223
+ };
224
+ // prettier-ignore
225
+ function FactorMapping(input, context) {
226
+ const [KeyOf, Type, IndexArray, Extends] = input;
227
+ return KeyOf
228
+ ? FactorExtends(T.KeyOf(FactorIndexArray(Type, IndexArray)), Extends)
229
+ : FactorExtends(FactorIndexArray(Type, IndexArray), Extends);
230
+ }
231
+ // prettier-ignore
232
+ function ExprBinaryMapping(Left, Rest) {
233
+ return (Rest.length === 3 ? (() => {
234
+ const [Operator, Right, Next] = Rest;
235
+ const Schema = ExprBinaryMapping(Right, Next);
236
+ if (Operator === '&') {
237
+ return T.TypeGuard.IsIntersect(Schema)
238
+ ? T.Intersect([Left, ...Schema.allOf])
239
+ : T.Intersect([Left, Schema]);
240
+ }
241
+ if (Operator === '|') {
242
+ return T.TypeGuard.IsUnion(Schema)
243
+ ? T.Union([Left, ...Schema.anyOf])
244
+ : T.Union([Left, Schema]);
245
+ }
246
+ throw 1;
247
+ })() : Left);
248
+ }
249
+ // prettier-ignore
250
+ function ExprTermTailMapping(input, context) {
251
+ return input;
252
+ }
253
+ // prettier-ignore
254
+ function ExprTermMapping(input, context) {
255
+ const [left, rest] = input;
256
+ return ExprBinaryMapping(left, rest);
257
+ }
258
+ // prettier-ignore
259
+ function ExprTailMapping(input, context) {
260
+ return input;
261
+ }
262
+ // prettier-ignore
263
+ function ExprMapping(input, context) {
264
+ const [left, rest] = input;
265
+ return ExprBinaryMapping(left, rest);
266
+ }
267
+ // prettier-ignore
268
+ function TypeMapping(input, context) {
269
+ return input;
270
+ }
271
+ // prettier-ignore
272
+ function PropertyKeyMapping(input, context) {
273
+ return input;
274
+ }
275
+ // prettier-ignore
276
+ function ReadonlyMapping(input, context) {
277
+ return input.length > 0;
278
+ }
279
+ // prettier-ignore
280
+ function OptionalMapping(input, context) {
281
+ return input.length > 0;
282
+ }
283
+ // prettier-ignore
284
+ function PropertyMapping(input, context) {
285
+ const [isReadonly, key, isOptional, _colon, type] = input;
286
+ return {
287
+ [key]: (isReadonly && isOptional ? T.ReadonlyOptional(type) :
288
+ isReadonly && !isOptional ? T.Readonly(type) :
289
+ !isReadonly && isOptional ? T.Optional(type) :
290
+ type)
291
+ };
292
+ }
293
+ // prettier-ignore
294
+ function PropertyDelimiterMapping(input, context) {
295
+ return input;
296
+ }
297
+ // prettier-ignore
298
+ function PropertyListMapping(input, context) {
299
+ return Delimited(input);
300
+ }
301
+ // prettier-ignore
302
+ function ObjectMapping(input, context) {
303
+ const propertyList = input[1];
304
+ return T.Object(propertyList.reduce((result, property) => {
305
+ return { ...result, ...property };
306
+ }, {}));
307
+ }
308
+ // prettier-ignore
309
+ function ElementListMapping(input, context) {
310
+ return Delimited(input);
311
+ }
312
+ // prettier-ignore
313
+ function TupleMapping(input, context) {
314
+ return T.Tuple(input[1]);
315
+ }
316
+ // prettier-ignore
317
+ function ParameterMapping(input, context) {
318
+ const [_ident, _colon, type] = input;
319
+ return type;
320
+ }
321
+ // prettier-ignore
322
+ function ParameterListMapping(input, context) {
323
+ return Delimited(input);
324
+ }
325
+ // prettier-ignore
326
+ function FunctionMapping(input, context) {
327
+ const [_lparan, parameterList, _rparan, _arrow, returnType] = input;
328
+ return T.Function(parameterList, returnType);
329
+ }
330
+ // prettier-ignore
331
+ function ConstructorMapping(input, context) {
332
+ const [_new, _lparan, parameterList, _rparan, _arrow, instanceType] = input;
333
+ return T.Constructor(parameterList, instanceType);
334
+ }
335
+ // prettier-ignore
336
+ function MappedMapping(input, context) {
337
+ const [_lbrace, _lbracket, _key, _in, _right, _rbracket, _colon, _type] = input;
338
+ return T.Literal('Mapped types not supported');
339
+ }
340
+ // prettier-ignore
341
+ function AsyncIteratorMapping(input, context) {
342
+ const [_name, _langle, type, _rangle] = input;
343
+ return T.AsyncIterator(type);
344
+ }
345
+ // prettier-ignore
346
+ function IteratorMapping(input, context) {
347
+ const [_name, _langle, type, _rangle] = input;
348
+ return T.Iterator(type);
349
+ }
350
+ // prettier-ignore
351
+ function ArgumentMapping(input, context) {
352
+ return T.KindGuard.IsLiteralNumber(input[2])
353
+ ? T.Argument(Math.trunc(input[2].const))
354
+ : T.Never();
355
+ }
356
+ // prettier-ignore
357
+ function AwaitedMapping(input, context) {
358
+ const [_name, _langle, type, _rangle] = input;
359
+ return T.Awaited(type);
360
+ }
361
+ // prettier-ignore
362
+ function ArrayMapping(input, context) {
363
+ const [_name, _langle, type, _rangle] = input;
364
+ return T.Array(type);
365
+ }
366
+ // prettier-ignore
367
+ function RecordMapping(input, context) {
368
+ const [_name, _langle, key, _comma, type, _rangle] = input;
369
+ return T.Record(key, type);
370
+ }
371
+ // prettier-ignore
372
+ function PromiseMapping(input, context) {
373
+ const [_name, _langle, type, _rangle] = input;
374
+ return T.Promise(type);
375
+ }
376
+ // prettier-ignore
377
+ function ConstructorParametersMapping(input, context) {
378
+ const [_name, _langle, type, _rangle] = input;
379
+ return T.ConstructorParameters(type);
380
+ }
381
+ // prettier-ignore
382
+ function FunctionParametersMapping(input, context) {
383
+ const [_name, _langle, type, _rangle] = input;
384
+ return T.Parameters(type);
385
+ }
386
+ // prettier-ignore
387
+ function InstanceTypeMapping(input, context) {
388
+ const [_name, _langle, type, _rangle] = input;
389
+ return T.InstanceType(type);
390
+ }
391
+ // prettier-ignore
392
+ function ReturnTypeMapping(input, context) {
393
+ const [_name, _langle, type, _rangle] = input;
394
+ return T.ReturnType(type);
395
+ }
396
+ // prettier-ignore
397
+ function PartialMapping(input, context) {
398
+ const [_name, _langle, type, _rangle] = input;
399
+ return T.Partial(type);
400
+ }
401
+ // prettier-ignore
402
+ function RequiredMapping(input, context) {
403
+ const [_name, _langle, type, _rangle] = input;
404
+ return T.Required(type);
405
+ }
406
+ // prettier-ignore
407
+ function PickMapping(input, context) {
408
+ const [_name, _langle, key, _comma, type, _rangle] = input;
409
+ return T.Pick(key, type);
410
+ }
411
+ // prettier-ignore
412
+ function OmitMapping(input, context) {
413
+ const [_name, _langle, key, _comma, type, _rangle] = input;
414
+ return T.Omit(key, type);
415
+ }
416
+ // prettier-ignore
417
+ function ExcludeMapping(input, context) {
418
+ const [_name, _langle, key, _comma, type, _rangle] = input;
419
+ return T.Exclude(key, type);
420
+ }
421
+ // prettier-ignore
422
+ function ExtractMapping(input, context) {
423
+ const [_name, _langle, key, _comma, type, _rangle] = input;
424
+ return T.Extract(key, type);
425
+ }
426
+ // prettier-ignore
427
+ function UppercaseMapping(input, context) {
428
+ const [_name, _langle, type, _rangle] = input;
429
+ return T.Uppercase(type);
430
+ }
431
+ // prettier-ignore
432
+ function LowercaseMapping(input, context) {
433
+ const [_name, _langle, type, _rangle] = input;
434
+ return T.Lowercase(type);
435
+ }
436
+ // prettier-ignore
437
+ function CapitalizeMapping(input, context) {
438
+ const [_name, _langle, type, _rangle] = input;
439
+ return T.Capitalize(type);
440
+ }
441
+ // prettier-ignore
442
+ function UncapitalizeMapping(input, context) {
443
+ const [_name, _langle, type, _rangle] = input;
444
+ return T.Uncapitalize(type);
445
+ }
446
+ // prettier-ignore
447
+ function DateMapping(input, context) {
448
+ return T.Date();
449
+ }
450
+ // prettier-ignore
451
+ function Uint8ArrayMapping(input, context) {
452
+ return T.Uint8Array();
453
+ }
454
+ // prettier-ignore
455
+ function ReferenceMapping(input, context) {
456
+ const target = Dereference(context, input);
457
+ return target;
458
+ }