typia 5.1.6-dev.20231005 → 5.2.0-dev.20231007
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/lib/CamelCase.d.ts +22 -0
- package/lib/CamelCase.js +3 -0
- package/lib/CamelCase.js.map +1 -0
- package/lib/PascalCase.d.ts +22 -0
- package/lib/PascalCase.js +3 -0
- package/lib/PascalCase.js.map +1 -0
- package/lib/Resolved.d.ts +4 -4
- package/lib/SnakeCase.d.ts +24 -0
- package/lib/SnakeCase.js +3 -0
- package/lib/SnakeCase.js.map +1 -0
- package/lib/functional/$convention.d.ts +1 -0
- package/lib/functional/$convention.js +63 -0
- package/lib/functional/$convention.js.map +1 -0
- package/lib/functional/Namespace.js +9 -0
- package/lib/functional/Namespace.js.map +1 -1
- package/lib/module.d.ts +5 -1
- package/lib/module.js +6 -2
- package/lib/module.js.map +1 -1
- package/lib/notations.d.ts +538 -0
- package/lib/notations.js +146 -0
- package/lib/notations.js.map +1 -0
- package/lib/programmers/helpers/NotationJoiner.d.ts +7 -0
- package/lib/programmers/helpers/NotationJoiner.js +85 -0
- package/lib/programmers/helpers/NotationJoiner.js.map +1 -0
- package/lib/programmers/misc/MiscCloneProgrammer.js +12 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +2 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +5 -0
- package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +44 -0
- package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -0
- package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +6 -0
- package/lib/programmers/notations/NotationGeneralProgrammer.js +490 -0
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -0
- package/lib/programmers/notations/NotationIsGeneralProgrammer.d.ts +5 -0
- package/lib/programmers/notations/NotationIsGeneralProgrammer.js +47 -0
- package/lib/programmers/notations/NotationIsGeneralProgrammer.js.map +1 -0
- package/lib/programmers/notations/NotationValidateGeneralProgrammer.d.ts +5 -0
- package/lib/programmers/notations/NotationValidateGeneralProgrammer.js +44 -0
- package/lib/programmers/notations/NotationValidateGeneralProgrammer.js.map +1 -0
- package/lib/transformers/CallExpressionTransformer.js +99 -16
- package/lib/transformers/CallExpressionTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonAssertParseTransformer.js +1 -1
- package/lib/transformers/features/json/JsonAssertParseTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonAssertStringifyTransformer.js +1 -1
- package/lib/transformers/features/json/JsonAssertStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonCreateAssertParseTransformer.js +1 -1
- package/lib/transformers/features/json/JsonCreateAssertParseTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.js +1 -1
- package/lib/transformers/features/json/JsonCreateAssertStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonCreateIsParseTransformer.js +1 -1
- package/lib/transformers/features/json/JsonCreateIsParseTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.js +1 -1
- package/lib/transformers/features/json/JsonCreateIsStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonCreateStringifyTransformer.js +1 -1
- package/lib/transformers/features/json/JsonCreateStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonCreateValidateParseTransformer.js +1 -1
- package/lib/transformers/features/json/JsonCreateValidateParseTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.js +1 -1
- package/lib/transformers/features/json/JsonCreateValidateStringifyProgrammer.js.map +1 -1
- package/lib/transformers/features/json/JsonIsParseTransformer.js +1 -1
- package/lib/transformers/features/json/JsonIsParseTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonIsStringifyTransformer.js +1 -1
- package/lib/transformers/features/json/JsonIsStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonStringifyTransformer.js +1 -1
- package/lib/transformers/features/json/JsonStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonValidateParseTransformer.js +1 -1
- package/lib/transformers/features/json/JsonValidateParseTransformer.js.map +1 -1
- package/lib/transformers/features/json/JsonValidateStringifyTransformer.js +1 -1
- package/lib/transformers/features/json/JsonValidateStringifyTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscAssertCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscAssertCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscAssertPruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscAssertPruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreateAssertCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreateAssertPruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreateCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreateIsCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreateIsPruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreatePruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreatePruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreateValidateCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscCreateValidatePruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscIsCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscIsCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscIsPruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscIsPruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscPruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscPruneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscValidateCloneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscValidateCloneTransformer.js.map +1 -1
- package/lib/transformers/features/misc/MiscValidatePruneTransformer.js +1 -1
- package/lib/transformers/features/misc/MiscValidatePruneTransformer.js.map +1 -1
- package/lib/transformers/features/notations/NotationAssertGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationAssertGeneralTransformer.js +15 -0
- package/lib/transformers/features/notations/NotationAssertGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/notations/NotationCreateAssertGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationCreateAssertGeneralTransformer.js +15 -0
- package/lib/transformers/features/notations/NotationCreateAssertGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/notations/NotationCreateGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationCreateGeneralTransformer.js +15 -0
- package/lib/transformers/features/notations/NotationCreateGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/notations/NotationCreateIsGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationCreateIsGeneralTransformer.js +15 -0
- package/lib/transformers/features/notations/NotationCreateIsGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/notations/NotationCreateValidateGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationCreateValidateGeneralTransformer.js +15 -0
- package/lib/transformers/features/notations/NotationCreateValidateGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/notations/NotationGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationGeneralTransformer.js +14 -0
- package/lib/transformers/features/notations/NotationGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/notations/NotationIsGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationIsGeneralTransformer.js +15 -0
- package/lib/transformers/features/notations/NotationIsGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/notations/NotationValidateGeneralTransformer.d.ts +4 -0
- package/lib/transformers/features/notations/NotationValidateGeneralTransformer.js +15 -0
- package/lib/transformers/features/notations/NotationValidateGeneralTransformer.js.map +1 -0
- package/lib/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.d.ts → ProtobufCreateAssertDecodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.js → ProtobufCreateAssertDecodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.js.map → ProtobufCreateAssertDecodeTransformer.js.map} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.d.ts → ProtobufCreateAssertEncodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.js → ProtobufCreateAssertEncodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.js.map → ProtobufCreateAssertEncodeTransformer.js.map} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufDecodeTransformer.d.ts → ProtobufCreateDecodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufDecodeTransformer.js → ProtobufCreateDecodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufDecodeTransformer.js.map → ProtobufCreateDecodeTransformer.js.map} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufEncodeTransformer.d.ts → ProtobufCreateEncodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufEncodeTransformer.js → ProtobufCreateEncodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufEncodeTransformer.js.map → ProtobufCreateEncodeTransformer.js.map} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.d.ts → ProtobufCreateIsDecodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.js → ProtobufCreateIsDecodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.js.map → ProtobufCreateIsDecodeTransformer.js.map} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.d.ts → ProtobufCreateIsEncodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.js → ProtobufCreateIsEncodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.js.map → ProtobufCreateIsEncodeTransformer.js.map} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.d.ts → ProtobufCreateValidateDecodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.js → ProtobufCreateValidateDecodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.js.map → ProtobufCreateValidateDecodeTransformer.js.map} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.d.ts → ProtobufCreateValidateEncodeTransformer.d.ts} +1 -1
- package/lib/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.js → ProtobufCreateValidateEncodeTransformer.js} +6 -6
- package/lib/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.js.map → ProtobufCreateValidateEncodeTransformer.js.map} +1 -1
- package/lib/utils/NamingConvention.d.ts +5 -0
- package/lib/utils/NamingConvention.js +115 -0
- package/lib/utils/NamingConvention.js.map +1 -0
- package/lib/utils/StringUtil.d.ts +3 -0
- package/lib/utils/StringUtil.js +10 -0
- package/lib/utils/StringUtil.js.map +1 -0
- package/package.json +2 -1
- package/src/CamelCase.ts +116 -0
- package/src/PascalCase.ts +106 -0
- package/src/Primitive.ts +1 -1
- package/src/Resolved.ts +26 -26
- package/src/SnakeCase.ts +156 -0
- package/src/functional/$convention.ts +40 -0
- package/src/functional/Namespace.ts +22 -0
- package/src/module.ts +6 -1
- package/src/notations.ts +855 -0
- package/src/programmers/helpers/NotationJoiner.ts +146 -0
- package/src/programmers/misc/MiscCloneProgrammer.ts +17 -1
- package/src/programmers/misc/MiscPruneProgrammer.ts +4 -2
- package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +72 -0
- package/src/programmers/notations/NotationGeneralProgrammer.ts +720 -0
- package/src/programmers/notations/NotationIsGeneralProgrammer.ts +79 -0
- package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +88 -0
- package/src/transformers/CallExpressionTransformer.ts +107 -16
- package/src/transformers/features/json/JsonAssertParseTransformer.ts +1 -1
- package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +1 -1
- package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +3 -1
- package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +1 -1
- package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +1 -1
- package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +3 -1
- package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +1 -1
- package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +3 -1
- package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +1 -1
- package/src/transformers/features/json/JsonIsParseTransformer.ts +1 -1
- package/src/transformers/features/json/JsonIsStringifyTransformer.ts +1 -1
- package/src/transformers/features/json/JsonStringifyTransformer.ts +1 -1
- package/src/transformers/features/json/JsonValidateParseTransformer.ts +1 -1
- package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscCloneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +3 -1
- package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +3 -1
- package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +3 -1
- package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +3 -1
- package/src/transformers/features/misc/MiscIsCloneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscIsPruneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscPruneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +1 -1
- package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +1 -1
- package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +15 -0
- package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +15 -0
- package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +15 -0
- package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +15 -0
- package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +17 -0
- package/src/transformers/features/notations/NotationGeneralTransformer.ts +11 -0
- package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +15 -0
- package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +17 -0
- package/src/transformers/features/protobuf/{CreateProtobufAssertDecodeTransformer.ts → ProtobufCreateAssertDecodeTransformer.ts} +1 -1
- package/src/transformers/features/protobuf/{CreateProtobufAssertEncodeTransformer.ts → ProtobufCreateAssertEncodeTransformer.ts} +1 -1
- package/src/transformers/features/protobuf/{CreateProtobufDecodeTransformer.ts → ProtobufCreateDecodeTransformer.ts} +1 -1
- package/src/transformers/features/protobuf/{CreateProtobufEncodeTransformer.ts → ProtobufCreateEncodeTransformer.ts} +1 -1
- package/src/transformers/features/protobuf/{CreateProtobufIsDecodeTransformer.ts → ProtobufCreateIsDecodeTransformer.ts} +1 -1
- package/src/transformers/features/protobuf/{CreateProtobufIsEncodeTransformer.ts → ProtobufCreateIsEncodeTransformer.ts} +1 -1
- package/src/transformers/features/protobuf/{CreateProtobufValidateDecodeTransformer.ts → ProtobufCreateValidateDecodeTransformer.ts} +1 -1
- package/src/transformers/features/protobuf/{CreateProtobufValidateEncodeTransformer.ts → ProtobufCreateValidateEncodeTransformer.ts} +1 -1
- package/src/utils/NamingConvention.ts +91 -0
- package/src/utils/StringUtil.ts +4 -0
package/src/SnakeCase.ts
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snake case type.
|
|
3
|
+
*
|
|
4
|
+
* `SnakeCase` type is a type that all keys of an object are converted to snake case.
|
|
5
|
+
*
|
|
6
|
+
* It also erase every method properties like {@link Resolved} type.
|
|
7
|
+
*
|
|
8
|
+
* @template T Target type to be snake cased
|
|
9
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
10
|
+
*/
|
|
11
|
+
export type SnakeCase<T> = Equal<T, SnakageMain<T>> extends true
|
|
12
|
+
? T
|
|
13
|
+
: SnakageMain<T>;
|
|
14
|
+
|
|
15
|
+
/* -----------------------------------------------------------
|
|
16
|
+
OBJECT CONVERSION
|
|
17
|
+
----------------------------------------------------------- */
|
|
18
|
+
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
19
|
+
|
|
20
|
+
type SnakageMain<T> = T extends [never]
|
|
21
|
+
? never // special trick for (jsonable | null) type
|
|
22
|
+
: T extends { valueOf(): boolean | bigint | number | string }
|
|
23
|
+
? ValueOf<T>
|
|
24
|
+
: T extends Function
|
|
25
|
+
? never
|
|
26
|
+
: T extends object
|
|
27
|
+
? SnakageObject<T>
|
|
28
|
+
: T;
|
|
29
|
+
|
|
30
|
+
type SnakageObject<T extends object> = T extends Array<infer U>
|
|
31
|
+
? IsTuple<T> extends true
|
|
32
|
+
? SnakageTuple<T>
|
|
33
|
+
: SnakageMain<U>[]
|
|
34
|
+
: T extends Set<infer U>
|
|
35
|
+
? Set<SnakageMain<U>>
|
|
36
|
+
: T extends Map<infer K, infer V>
|
|
37
|
+
? Map<SnakageMain<K>, SnakageMain<V>>
|
|
38
|
+
: T extends WeakSet<any> | WeakMap<any, any>
|
|
39
|
+
? never
|
|
40
|
+
: T extends
|
|
41
|
+
| Date
|
|
42
|
+
| Uint8Array
|
|
43
|
+
| Uint8ClampedArray
|
|
44
|
+
| Uint16Array
|
|
45
|
+
| Uint32Array
|
|
46
|
+
| BigUint64Array
|
|
47
|
+
| Int8Array
|
|
48
|
+
| Int16Array
|
|
49
|
+
| Int32Array
|
|
50
|
+
| BigInt64Array
|
|
51
|
+
| Float32Array
|
|
52
|
+
| Float64Array
|
|
53
|
+
| ArrayBuffer
|
|
54
|
+
| SharedArrayBuffer
|
|
55
|
+
| DataView
|
|
56
|
+
? T
|
|
57
|
+
: {
|
|
58
|
+
[Key in keyof T as SnakageString<Key & string>]: SnakageMain<T[Key]>;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/* -----------------------------------------------------------
|
|
62
|
+
SPECIAL CASES
|
|
63
|
+
----------------------------------------------------------- */
|
|
64
|
+
type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
65
|
+
never,
|
|
66
|
+
]
|
|
67
|
+
? false
|
|
68
|
+
: T extends readonly any[]
|
|
69
|
+
? number extends T["length"]
|
|
70
|
+
? false
|
|
71
|
+
: true
|
|
72
|
+
: false;
|
|
73
|
+
type SnakageTuple<T extends readonly any[]> = T extends []
|
|
74
|
+
? []
|
|
75
|
+
: T extends [infer F]
|
|
76
|
+
? [SnakageMain<F>]
|
|
77
|
+
: T extends [infer F, ...infer Rest extends readonly any[]]
|
|
78
|
+
? [SnakageMain<F>, ...SnakageTuple<Rest>]
|
|
79
|
+
: T extends [(infer F)?]
|
|
80
|
+
? [SnakageMain<F>?]
|
|
81
|
+
: T extends [(infer F)?, ...infer Rest extends readonly any[]]
|
|
82
|
+
? [SnakageMain<F>?, ...SnakageTuple<Rest>]
|
|
83
|
+
: [];
|
|
84
|
+
|
|
85
|
+
type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true
|
|
86
|
+
? boolean
|
|
87
|
+
: IsValueOf<Instance, Number> extends true
|
|
88
|
+
? number
|
|
89
|
+
: IsValueOf<Instance, String> extends true
|
|
90
|
+
? string
|
|
91
|
+
: Instance;
|
|
92
|
+
|
|
93
|
+
type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
|
|
94
|
+
? Object extends IValueOf<infer Primitive>
|
|
95
|
+
? Instance extends Primitive
|
|
96
|
+
? false
|
|
97
|
+
: true // not Primitive, but Object
|
|
98
|
+
: false // cannot be
|
|
99
|
+
: false;
|
|
100
|
+
|
|
101
|
+
interface IValueOf<T> {
|
|
102
|
+
valueOf(): T;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* -----------------------------------------------------------
|
|
106
|
+
STRING CONVERTER
|
|
107
|
+
----------------------------------------------------------- */
|
|
108
|
+
type SnakageString<Key extends string> = Key extends `${infer _}`
|
|
109
|
+
? SnakageStringRepeatedly<Key, "">
|
|
110
|
+
: Key;
|
|
111
|
+
type SnakageStringRepeatedly<
|
|
112
|
+
S extends string,
|
|
113
|
+
Previous extends string,
|
|
114
|
+
> = S extends `${infer First}${infer Second}${infer Rest}`
|
|
115
|
+
? `${Underscore<Previous, First>}${Lowercase<First>}${Underscore<
|
|
116
|
+
First,
|
|
117
|
+
Second
|
|
118
|
+
>}${Lowercase<Second>}${SnakageStringRepeatedly<Rest, Second>}`
|
|
119
|
+
: S extends `${infer First}`
|
|
120
|
+
? `${Underscore<Previous, First>}${Lowercase<First>}`
|
|
121
|
+
: "";
|
|
122
|
+
type Underscore<First extends string, Second extends string> = First extends
|
|
123
|
+
| UpperAlphabetic
|
|
124
|
+
| ""
|
|
125
|
+
| "_"
|
|
126
|
+
? ""
|
|
127
|
+
: Second extends UpperAlphabetic
|
|
128
|
+
? "_"
|
|
129
|
+
: "";
|
|
130
|
+
type UpperAlphabetic =
|
|
131
|
+
| "A"
|
|
132
|
+
| "B"
|
|
133
|
+
| "C"
|
|
134
|
+
| "D"
|
|
135
|
+
| "E"
|
|
136
|
+
| "F"
|
|
137
|
+
| "G"
|
|
138
|
+
| "H"
|
|
139
|
+
| "I"
|
|
140
|
+
| "J"
|
|
141
|
+
| "K"
|
|
142
|
+
| "L"
|
|
143
|
+
| "M"
|
|
144
|
+
| "N"
|
|
145
|
+
| "O"
|
|
146
|
+
| "P"
|
|
147
|
+
| "Q"
|
|
148
|
+
| "R"
|
|
149
|
+
| "S"
|
|
150
|
+
| "T"
|
|
151
|
+
| "U"
|
|
152
|
+
| "V"
|
|
153
|
+
| "W"
|
|
154
|
+
| "X"
|
|
155
|
+
| "Y"
|
|
156
|
+
| "Z";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const $convention = (rename: (str: string) => string) => {
|
|
2
|
+
const main = (input: any): any => {
|
|
3
|
+
if (typeof input === "object")
|
|
4
|
+
if (input === null) return null;
|
|
5
|
+
else if (Array.isArray(input)) return input.map(main);
|
|
6
|
+
else if (
|
|
7
|
+
input instanceof Boolean ||
|
|
8
|
+
input instanceof BigInt ||
|
|
9
|
+
input instanceof Number ||
|
|
10
|
+
input instanceof String
|
|
11
|
+
)
|
|
12
|
+
return input.valueOf();
|
|
13
|
+
else if (input instanceof Date) return new Date(input);
|
|
14
|
+
else if (
|
|
15
|
+
input instanceof Uint8Array ||
|
|
16
|
+
input instanceof Uint8ClampedArray ||
|
|
17
|
+
input instanceof Uint16Array ||
|
|
18
|
+
input instanceof Uint32Array ||
|
|
19
|
+
input instanceof BigUint64Array ||
|
|
20
|
+
input instanceof Int8Array ||
|
|
21
|
+
input instanceof Int16Array ||
|
|
22
|
+
input instanceof Int32Array ||
|
|
23
|
+
input instanceof BigInt64Array ||
|
|
24
|
+
input instanceof Float32Array ||
|
|
25
|
+
input instanceof Float64Array ||
|
|
26
|
+
input instanceof DataView
|
|
27
|
+
)
|
|
28
|
+
return input;
|
|
29
|
+
else return object(input);
|
|
30
|
+
return input;
|
|
31
|
+
};
|
|
32
|
+
const object = (input: Record<string, any>) =>
|
|
33
|
+
Object.fromEntries(
|
|
34
|
+
Object.entries(input).map(([key, value]) => [
|
|
35
|
+
rename(key),
|
|
36
|
+
main(value),
|
|
37
|
+
]),
|
|
38
|
+
);
|
|
39
|
+
return main;
|
|
40
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NamingConvention } from "../utils/NamingConvention";
|
|
1
2
|
import { RandomGenerator } from "../utils/RandomGenerator";
|
|
2
3
|
|
|
3
4
|
import { IValidation } from "../IValidation";
|
|
@@ -9,6 +10,7 @@ import { $ProtobufSizer } from "./$ProtobufSizer";
|
|
|
9
10
|
import { $ProtobufWriter } from "./$ProtobufWriter";
|
|
10
11
|
import { $QueryReader } from "./$QueryReader";
|
|
11
12
|
import { $any } from "./$any";
|
|
13
|
+
import { $convention } from "./$convention";
|
|
12
14
|
import { $every } from "./$every";
|
|
13
15
|
import { $guard } from "./$guard";
|
|
14
16
|
import { $is_between } from "./$is_between";
|
|
@@ -126,6 +128,26 @@ export namespace Namespace {
|
|
|
126
128
|
});
|
|
127
129
|
}
|
|
128
130
|
|
|
131
|
+
export namespace notations {
|
|
132
|
+
export const camel = (method: string) => ({
|
|
133
|
+
...base(method),
|
|
134
|
+
any: $convention(NamingConvention.camel),
|
|
135
|
+
});
|
|
136
|
+
export const pascal = (method: string) => ({
|
|
137
|
+
...base(method),
|
|
138
|
+
any: $convention(NamingConvention.pascal),
|
|
139
|
+
});
|
|
140
|
+
export const snake = (method: string) => ({
|
|
141
|
+
...base(method),
|
|
142
|
+
any: $convention(NamingConvention.snake),
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
const base = (method: string) => ({
|
|
146
|
+
...is(),
|
|
147
|
+
throws: $throws(`notations.${method}`),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
129
151
|
export const random = () => ({
|
|
130
152
|
generator: RandomGenerator,
|
|
131
153
|
pick: RandomGenerator.pick,
|
package/src/module.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { Resolved } from "./Resolved";
|
|
|
9
9
|
export * as http from "./http";
|
|
10
10
|
export * as json from "./json";
|
|
11
11
|
export * as misc from "./misc";
|
|
12
|
+
export * as notations from "./notations";
|
|
12
13
|
export * as protobuf from "./protobuf";
|
|
13
14
|
export * as tags from "./tags";
|
|
14
15
|
|
|
@@ -17,9 +18,13 @@ export * from "./schemas/json/IJsonComponents";
|
|
|
17
18
|
export * from "./schemas/json/IJsonSchema";
|
|
18
19
|
export * from "./IRandomGenerator";
|
|
19
20
|
export * from "./IValidation";
|
|
21
|
+
export * from "./TypeGuardError";
|
|
22
|
+
|
|
20
23
|
export * from "./Primitive";
|
|
21
24
|
export * from "./Resolved";
|
|
22
|
-
export * from "./
|
|
25
|
+
export * from "./CamelCase";
|
|
26
|
+
export * from "./PascalCase";
|
|
27
|
+
export * from "./SnakeCase";
|
|
23
28
|
|
|
24
29
|
/* -----------------------------------------------------------
|
|
25
30
|
BASIC VALIDATORS
|