typia 3.8.0-dev.20230420-3 → 3.8.0-dev.20230426
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/README.md +4 -3
- package/lib/Primitive.d.ts +7 -1
- package/lib/factories/internal/metadata/iterate_metadata.js +0 -6
- package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
- package/lib/module.d.ts +3 -3
- package/lib/programmers/AssertParseProgrammer.js +1 -1
- package/lib/programmers/AssertParseProgrammer.js.map +1 -1
- package/lib/programmers/ValidateParseProgrammer.js +1 -1
- package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
- package/lib/programmers/helpers/PruneJoiner.d.ts +1 -1
- package/lib/programmers/helpers/PruneJoiner.js +29 -2
- package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
- package/lib/programmers/internal/application_schema.js +4 -2
- package/lib/programmers/internal/application_schema.js.map +1 -1
- package/lib/schemas/IJsonSchema.d.ts +9 -4
- package/package.json +2 -2
- package/src/Primitive.ts +17 -1
- package/src/factories/internal/metadata/iterate_metadata.ts +1 -14
- package/src/module.ts +6 -6
- package/src/programmers/AssertParseProgrammer.ts +7 -4
- package/src/programmers/AssertProgrammer.ts +285 -285
- package/src/programmers/CheckerProgrammer.ts +875 -875
- package/src/programmers/FeatureProgrammer.ts +500 -500
- package/src/programmers/ValidateParseProgrammer.ts +4 -1
- package/src/programmers/ValidateProgrammer.ts +316 -316
- package/src/programmers/helpers/PruneJoiner.ts +94 -2
- package/src/programmers/internal/application_schema.ts +12 -2
- package/src/programmers/internal/check_custom.ts +31 -31
- package/src/programmers/internal/check_dynamic_properties.ts +194 -194
- package/src/programmers/internal/check_object.ts +55 -55
- package/src/schemas/IJsonSchema.ts +11 -3
package/README.md
CHANGED
|
@@ -34,9 +34,9 @@ Typia is a transformer library supporting below features:
|
|
|
34
34
|
|
|
35
35
|
> **Note**
|
|
36
36
|
>
|
|
37
|
-
>
|
|
38
|
-
>
|
|
39
|
-
>
|
|
37
|
+
> - **Only one line** required, with pure TypeScript type
|
|
38
|
+
> - Runtime validator is **20,000x faster** than `class-validator`
|
|
39
|
+
> - JSON serialization is **200x faster** than `class-transformer`
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
|
|
@@ -69,6 +69,7 @@ Check out the document in the [website](https://typia.io/docs/):
|
|
|
69
69
|
### 🔗 Appendix
|
|
70
70
|
- Utillization Cases
|
|
71
71
|
- [NestJS](https://typia.io/docs/utilization/nestjs/)
|
|
72
|
+
- [Prisma](https://typia.io/docs/utilization/prisma/)
|
|
72
73
|
- [tRPC](https://typia.io/docs/utilization/trpc/)
|
|
73
74
|
- [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
|
|
74
75
|
- [⇲ `dev.to` Articles](https://dev.to/samchon/series/22474)
|
package/lib/Primitive.d.ts
CHANGED
|
@@ -31,11 +31,17 @@
|
|
|
31
31
|
export type Primitive<T> = _Equal<T, _Primitive<T>> extends true ? T : _Primitive<T>;
|
|
32
32
|
type _Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
|
|
33
33
|
type _Primitive<Instance> = _ValueOf<Instance> extends object ? Instance extends object ? Instance extends _Native ? {} : Instance extends IJsonable<infer Raw> ? _ValueOf<Raw> extends object ? Raw extends object ? _PrimitiveObject<Raw> : never : _ValueOf<Raw> : _PrimitiveObject<Instance> : never : _ValueOf<Instance>;
|
|
34
|
-
type _PrimitiveObject<Instance extends object> = Instance extends Array<infer T> ? _Primitive<T>[] : {
|
|
34
|
+
type _PrimitiveObject<Instance extends object> = Instance extends Array<infer T> ? _IsTuple<Instance> extends true ? _PrimitiveSpread<Instance> : _Primitive<T>[] : {
|
|
35
35
|
[P in keyof Instance]: Instance[P] extends Function ? never : _Primitive<Instance[P]>;
|
|
36
36
|
};
|
|
37
|
+
type _PrimitiveSpread<T extends any[]> = T extends [infer F, ...infer Rest] ? [_Primitive<F>, ..._PrimitiveSpread<Rest>] : [];
|
|
37
38
|
type _ValueOf<Instance> = _IsValueOf<Instance, Boolean> extends true ? boolean : _IsValueOf<Instance, Number> extends true ? number : _IsValueOf<Instance, String> extends true ? string : Instance;
|
|
38
39
|
type _Native = Set<any> | Map<any, any> | WeakSet<any> | WeakMap<any, any> | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array | ArrayBuffer | SharedArrayBuffer | DataView;
|
|
40
|
+
type _IsTuple<T extends readonly any[] | {
|
|
41
|
+
length: number;
|
|
42
|
+
}> = [T] extends [
|
|
43
|
+
never
|
|
44
|
+
] ? false : T extends readonly any[] ? number extends T["length"] ? false : true : false;
|
|
39
45
|
type _IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object ? Object extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
|
|
40
46
|
interface IValueOf<T> {
|
|
41
47
|
valueOf(): T;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.iterate_metadata = void 0;
|
|
4
|
-
var ArrayUtil_1 = require("../../../utils/ArrayUtil");
|
|
5
4
|
var iterate_metadata_array_1 = require("./iterate_metadata_array");
|
|
6
5
|
var iterate_metadata_atomic_1 = require("./iterate_metadata_atomic");
|
|
7
6
|
var iterate_metadata_coalesce_1 = require("./iterate_metadata_coalesce");
|
|
@@ -23,11 +22,6 @@ var iterate_metadata = function (checker) {
|
|
|
23
22
|
if ((0, iterate_metadata_union_1.iterate_metadata_union)(checker)(options)(collection)(meta, type, parentResolved) ||
|
|
24
23
|
(0, iterate_metadata_resolve_1.iterate_metadata_resolve)(checker)(options)(collection)(meta, type, parentResolved))
|
|
25
24
|
return;
|
|
26
|
-
var node = checker.typeToTypeNode(type, undefined, undefined);
|
|
27
|
-
if (node === undefined) {
|
|
28
|
-
ArrayUtil_1.ArrayUtil.set(meta.tuples, [], function () { return "[]"; });
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
25
|
(0, iterate_metadata_coalesce_1.iterate_metadata_coalesce)(meta, type) ||
|
|
32
26
|
(0, iterate_metadata_constant_1.iterate_metadata_constant)(checker)(options)(meta, type) ||
|
|
33
27
|
(0, iterate_metadata_template_1.iterate_metadata_template)(checker)(options)(collection)(meta, type) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterate_metadata.js","sourceRoot":"","sources":["../../../../src/factories/internal/metadata/iterate_metadata.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"iterate_metadata.js","sourceRoot":"","sources":["../../../../src/factories/internal/metadata/iterate_metadata.ts"],"names":[],"mappings":";;;AAOA,mEAAkE;AAClE,qEAAoE;AACpE,yEAAwE;AACxE,yEAAwE;AACxE,+DAA8D;AAC9D,qEAAoE;AACpE,qEAAoE;AACpE,uEAAsE;AACtE,+DAA8D;AAC9D,yEAAwE;AACxE,mEAAkE;AAClE,mEAAkE;AAE3D,IAAM,gBAAgB,GACzB,UAAC,OAAuB;IACxB,OAAA,UAAC,OAAiC;QAClC,OAAA,UAAC,UAA8B;YAC/B,OAAA,UAAC,IAAc,EAAE,IAAa,EAAE,cAAuB;gBACnD,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI;oBAC/B,MAAM,IAAI,KAAK,CACX,uFAAgF,IAAI,CAAC,OAAO,EAAE,MAAG,CACpG,CAAC;gBAGN,IACI,IAAA,+CAAsB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAChD,IAAI,EACJ,IAAI,EACJ,cAAc,CACjB;oBACD,IAAA,mDAAwB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAClD,IAAI,EACJ,IAAI,EACJ,cAAc,CACjB;oBAED,OAAO;gBAGX,IAAA,qDAAyB,EAAC,IAAI,EAAE,IAAI,CAAC;oBACjC,IAAA,qDAAyB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;oBACvD,IAAA,qDAAyB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CACnD,IAAI,EACJ,IAAI,CACP;oBACD,IAAA,iDAAuB,EAAC,IAAI,EAAE,IAAI,CAAC;oBACnC,IAAA,+CAAsB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAChD,IAAI,EACJ,IAAoB,CACvB;oBACD,IAAA,+CAAsB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;oBAChE,IAAA,iDAAuB,EAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC5C,IAAA,2CAAoB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC9D,IAAA,2CAAoB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC9D,IAAA,iDAAuB,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CACjD,IAAI,EACJ,IAAI,EACJ,cAAc,CACjB,CAAC;YACV,CAAC;QA1CD,CA0CC;IA3CD,CA2CC;AA5CD,CA4CC,CAAC;AA9CO,QAAA,gBAAgB,oBA8CvB"}
|
package/lib/module.d.ts
CHANGED
|
@@ -445,7 +445,7 @@ export declare function assertParse(input: string): never;
|
|
|
445
445
|
*
|
|
446
446
|
* @author Jeongho Nam - https://github.com/samchon
|
|
447
447
|
*/
|
|
448
|
-
export declare function assertParse<T>(input: string): T
|
|
448
|
+
export declare function assertParse<T>(input: string): Primitive<T>;
|
|
449
449
|
/**
|
|
450
450
|
* > You must configure the generic argument `T`.
|
|
451
451
|
*
|
|
@@ -483,7 +483,7 @@ export declare function isParse(input: string): never;
|
|
|
483
483
|
*
|
|
484
484
|
* @author Jeongho Nam - https://github.com/samchon
|
|
485
485
|
*/
|
|
486
|
-
export declare function isParse<T>(input: string): T | null;
|
|
486
|
+
export declare function isParse<T>(input: string): Primitive<T> | null;
|
|
487
487
|
/**
|
|
488
488
|
* > You must configure the generic argument `T`.
|
|
489
489
|
*
|
|
@@ -523,7 +523,7 @@ export declare function validateParse(input: string): never;
|
|
|
523
523
|
*
|
|
524
524
|
* @author Jeongho Nam - https://github.com/samchon
|
|
525
525
|
*/
|
|
526
|
-
export declare function validateParse<T>(input: string): IValidation<T
|
|
526
|
+
export declare function validateParse<T>(input: string): IValidation<Primitive<T>>;
|
|
527
527
|
/**
|
|
528
528
|
* 8x faster `JSON.stringify()` function.
|
|
529
529
|
*
|
|
@@ -35,7 +35,7 @@ var AssertParseProgrammer;
|
|
|
35
35
|
], typescript_1.default.factory.createTypeReferenceNode("typia.Primitive<".concat(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type), ">")), undefined, typescript_1.default.factory.createBlock([
|
|
36
36
|
StatementFactory_1.StatementFactory.constant("assert", AssertProgrammer_1.AssertProgrammer.write(__assign(__assign({}, project), { options: __assign(__assign({}, project.options), { functional: false, numeric: false }) }))(modulo)(false)(type, name)),
|
|
37
37
|
typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createIdentifier("input"), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("JSON.parse"), undefined, [typescript_1.default.factory.createIdentifier("input")]))),
|
|
38
|
-
typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("assert"), undefined, [typescript_1.default.factory.createIdentifier("input")])),
|
|
38
|
+
typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("assert"), undefined, [typescript_1.default.factory.createIdentifier("input")]), typescript_1.default.factory.createTypeReferenceNode("any"))),
|
|
39
39
|
]));
|
|
40
40
|
};
|
|
41
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssertParseProgrammer.js","sourceRoot":"","sources":["../../src/programmers/AssertParseProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,kEAAiE;AACjE,wDAAuD;AAIvD,uDAAsD;AAEtD,IAAiB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"AssertParseProgrammer.js","sourceRoot":"","sources":["../../src/programmers/AssertParseProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,kEAAiE;AACjE,wDAAuD;AAIvD,uDAAsD;AAEtD,IAAiB,qBAAqB,CA+DrC;AA/DD,WAAiB,qBAAqB;IAIrB,8BAAQ,GACjB,UAAC,OAAiB,EAAE,MAAiC;QACrD,OAAA,UAAC,IAAa,EAAE,IAAa;YACzB,OAAA,sBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;QAAlC,CAAkC;IADtC,CACsC,CAAC;IAE9B,2BAAK,GACd,UAAC,OAAiB;QAClB,OAAA,UAAC,MAAiC;YAClC,OAAA,UAAC,IAAa,EAAE,IAAa;gBACzB,OAAA,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAC1B,SAAS,EACT,SAAS,EACT;oBACI,qCAAiB,CAAC,SAAS,CACvB,OAAO,EACP,yBAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAChC;iBACJ,EACD,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAC9B,0BACI,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,yBAAW,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MACvD,CACN,EACD,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,WAAW,CAAC;oBACnB,mCAAgB,CAAC,QAAQ,CACrB,QAAQ,EACR,mCAAgB,CAAC,KAAK,uBACf,OAAO,KACV,OAAO,wBACA,OAAO,CAAC,OAAO,KAClB,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,KAAK,OAEpB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAChC;oBACD,oBAAE,CAAC,OAAO,CAAC,yBAAyB,CAChC,oBAAE,CAAC,OAAO,CAAC,sBAAsB,CAC7B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,EACpC,oBAAE,CAAC,UAAU,CAAC,WAAW,EACzB,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,EACzC,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACzC,CACJ,CACJ;oBACD,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAC5B,oBAAE,CAAC,OAAO,CAAC,kBAAkB,CACzB,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EACrC,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACzC,EACD,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAC5C,CACJ;iBACJ,CAAC,CACL;YAjDD,CAiDC;QAlDL,CAkDK;IAnDL,CAmDK,CAAC;AACd,CAAC,EA/DgB,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QA+DrC"}
|
|
@@ -36,7 +36,7 @@ var ValidateParseProgrammer;
|
|
|
36
36
|
StatementFactory_1.StatementFactory.constant("validate", ValidateProgrammer_1.ValidateProgrammer.write(__assign(__assign({}, project), { options: __assign(__assign({}, project.options), { functional: false, numeric: false }) }))(modulo)(false)(type, name)),
|
|
37
37
|
typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createBinaryExpression(typescript_1.default.factory.createIdentifier("input"), typescript_1.default.SyntaxKind.EqualsToken, typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("JSON.parse"), undefined, [typescript_1.default.factory.createIdentifier("input")]))),
|
|
38
38
|
StatementFactory_1.StatementFactory.constant("output", typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("validate"), undefined, [typescript_1.default.factory.createIdentifier("input")])),
|
|
39
|
-
typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createIdentifier("output")),
|
|
39
|
+
typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createIdentifier("output"), typescript_1.default.factory.createTypeReferenceNode("any"))),
|
|
40
40
|
]));
|
|
41
41
|
};
|
|
42
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidateParseProgrammer.js","sourceRoot":"","sources":["../../src/programmers/ValidateParseProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,kEAAiE;AACjE,wDAAuD;AAIvD,2DAA0D;AAE1D,IAAiB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ValidateParseProgrammer.js","sourceRoot":"","sources":["../../src/programmers/ValidateParseProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,kEAAiE;AACjE,wDAAuD;AAIvD,2DAA0D;AAE1D,IAAiB,uBAAuB,CAmEvC;AAnED,WAAiB,uBAAuB;IAIvB,gCAAQ,GACjB,UAAC,OAAiB,EAAE,MAAiC;QACrD,OAAA,UAAC,IAAa,EAAE,IAAa;YACzB,OAAA,wBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;QAAlC,CAAkC;IADtC,CACsC,CAAC;IAE9B,6BAAK,GACd,UAAC,OAAiB;QAClB,OAAA,UAAC,MAAiC;YAClC,OAAA,UAAC,IAAa,EAAE,IAAa;gBACzB,OAAA,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAC1B,SAAS,EACT,SAAS,EACT;oBACI,qCAAiB,CAAC,SAAS,CACvB,OAAO,EACP,yBAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAChC;iBACJ,EACD,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAC9B,4CACI,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,yBAAW,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OACtD,CACP,EACD,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,WAAW,CAAC;oBACnB,mCAAgB,CAAC,QAAQ,CACrB,UAAU,EACV,uCAAkB,CAAC,KAAK,uBACjB,OAAO,KACV,OAAO,wBACA,OAAO,CAAC,OAAO,KAClB,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,KAAK,OAEpB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAChC;oBACD,oBAAE,CAAC,OAAO,CAAC,yBAAyB,CAChC,oBAAE,CAAC,OAAO,CAAC,sBAAsB,CAC7B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,EACpC,oBAAE,CAAC,UAAU,CAAC,WAAW,EACzB,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,EACzC,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACzC,CACJ,CACJ;oBACD,mCAAgB,CAAC,QAAQ,CACrB,QAAQ,EACR,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACvC,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACzC,CACJ;oBACD,oBAAE,CAAC,OAAO,CAAC,qBAAqB,CAC5B,oBAAE,CAAC,OAAO,CAAC,kBAAkB,CACzB,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EACrC,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAC5C,CACJ;iBACJ,CAAC,CACL;YArDD,CAqDC;QAtDL,CAsDK;IAvDL,CAuDK,CAAC;AACd,CAAC,EAnEgB,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAmEvC"}
|
|
@@ -2,7 +2,7 @@ import ts from "typescript";
|
|
|
2
2
|
import { MetadataObject } from "../../metadata/MetadataObject";
|
|
3
3
|
import { IExpressionEntry } from "./IExpressionEntry";
|
|
4
4
|
export declare namespace PruneJoiner {
|
|
5
|
-
const object: (
|
|
5
|
+
const object: (input: ts.Expression, entries: IExpressionEntry[], obj: MetadataObject) => ts.ConciseBody;
|
|
6
6
|
const array: (input: ts.Expression, arrow: ts.ArrowFunction) => ts.CallExpression;
|
|
7
7
|
const tuple: (children: ts.ConciseBody[], rest: ts.ConciseBody | null) => ts.Block;
|
|
8
8
|
}
|
|
@@ -32,14 +32,19 @@ exports.PruneJoiner = void 0;
|
|
|
32
32
|
var typescript_1 = __importDefault(require("typescript"));
|
|
33
33
|
var IdentifierFactory_1 = require("../../factories/IdentifierFactory");
|
|
34
34
|
var ArrayUtil_1 = require("../../utils/ArrayUtil");
|
|
35
|
+
var metadata_to_pattern_1 = require("../internal/metadata_to_pattern");
|
|
35
36
|
var prune_object_properties_1 = require("../internal/prune_object_properties");
|
|
36
37
|
var PruneJoiner;
|
|
37
38
|
(function (PruneJoiner) {
|
|
38
|
-
PruneJoiner.object = function (
|
|
39
|
-
var
|
|
39
|
+
PruneJoiner.object = function (input, entries, obj) {
|
|
40
|
+
var regular = entries.filter(function (entry) { return entry.key.isSoleLiteral(); });
|
|
41
|
+
var dynamic = entries.filter(function (entry) { return !entry.key.isSoleLiteral(); });
|
|
42
|
+
var statements = ArrayUtil_1.ArrayUtil.flat(regular.map(function (entry) {
|
|
40
43
|
return typescript_1.default.isBlock(entry.expression)
|
|
41
44
|
? __spreadArray([], __read(entry.expression.statements), false) : [typescript_1.default.factory.createExpressionStatement(entry.expression)];
|
|
42
45
|
}));
|
|
46
|
+
if (dynamic.length)
|
|
47
|
+
statements.push(typescript_1.default.factory.createExpressionStatement(iterate_dynamic_properties({ regular: regular, dynamic: dynamic })(input)));
|
|
43
48
|
statements.push((0, prune_object_properties_1.prune_object_properties)(obj));
|
|
44
49
|
return typescript_1.default.factory.createBlock(statements, true);
|
|
45
50
|
};
|
|
@@ -57,4 +62,26 @@ var PruneJoiner;
|
|
|
57
62
|
return typescript_1.default.factory.createBlock(statements, true);
|
|
58
63
|
};
|
|
59
64
|
})(PruneJoiner = exports.PruneJoiner || (exports.PruneJoiner = {}));
|
|
65
|
+
var iterate_dynamic_properties = function (props) {
|
|
66
|
+
return function (input) {
|
|
67
|
+
return typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.join(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("Object.entries"), undefined, [input]), "forEach"), undefined, [
|
|
68
|
+
typescript_1.default.factory.createArrowFunction(undefined, undefined, [
|
|
69
|
+
IdentifierFactory_1.IdentifierFactory.parameter(typescript_1.default.factory.createArrayBindingPattern(["key", "value"].map(function (l) {
|
|
70
|
+
return typescript_1.default.factory.createBindingElement(undefined, undefined, typescript_1.default.factory.createIdentifier(l), undefined);
|
|
71
|
+
}))),
|
|
72
|
+
], undefined, undefined, typescript_1.default.factory.createBlock(__spreadArray(__spreadArray([
|
|
73
|
+
typescript_1.default.factory.createIfStatement(typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createIdentifier("undefined"), typescript_1.default.factory.createIdentifier("value")), typescript_1.default.factory.createReturnStatement())
|
|
74
|
+
], __read(props.regular.map(function (_a) {
|
|
75
|
+
var key = _a.key;
|
|
76
|
+
return typescript_1.default.factory.createIfStatement(typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createStringLiteral(key.getSoleLiteral()), typescript_1.default.factory.createIdentifier("key")), typescript_1.default.factory.createReturnStatement());
|
|
77
|
+
})), false), __read(props.dynamic.map(function (dynamic) {
|
|
78
|
+
return typescript_1.default.factory.createIfStatement(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("RegExp(/".concat((0, metadata_to_pattern_1.metadata_to_pattern)(true)(dynamic.key), "/).test")), undefined, [typescript_1.default.factory.createIdentifier("key")]), typescript_1.default.isBlock(dynamic.expression)
|
|
79
|
+
? dynamic.expression
|
|
80
|
+
: typescript_1.default.factory.createBlock([
|
|
81
|
+
typescript_1.default.factory.createExpressionStatement(dynamic.expression),
|
|
82
|
+
]));
|
|
83
|
+
})), false), true)),
|
|
84
|
+
]);
|
|
85
|
+
};
|
|
86
|
+
};
|
|
60
87
|
//# sourceMappingURL=PruneJoiner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PruneJoiner.js","sourceRoot":"","sources":["../../../src/programmers/helpers/PruneJoiner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,uEAAsE;AAItE,mDAAkD;AAElD,+EAA8E;AAG9E,IAAiB,WAAW,
|
|
1
|
+
{"version":3,"file":"PruneJoiner.js","sourceRoot":"","sources":["../../../src/programmers/helpers/PruneJoiner.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ var application_schema = function (options) {
|
|
|
42
42
|
var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f;
|
|
43
43
|
var _g, _h;
|
|
44
44
|
if (meta.any === true)
|
|
45
|
-
return {};
|
|
45
|
+
return __assign(__assign({}, attribute), { type: undefined });
|
|
46
46
|
else if (meta.nullable && meta.empty())
|
|
47
47
|
return __assign({ type: "null" }, attribute);
|
|
48
48
|
var union = [];
|
|
@@ -209,7 +209,9 @@ var application_schema = function (options) {
|
|
|
209
209
|
finally { if (e_6) throw e_6.error; }
|
|
210
210
|
}
|
|
211
211
|
if (union.length === 0)
|
|
212
|
-
return blockNever === true
|
|
212
|
+
return blockNever === true
|
|
213
|
+
? null
|
|
214
|
+
: __assign(__assign({}, attribute), { type: undefined });
|
|
213
215
|
else if (union.length === 1)
|
|
214
216
|
return union[0];
|
|
215
217
|
return __assign({ oneOf: union }, attribute);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application_schema.js","sourceRoot":"","sources":["../../../src/programmers/internal/application_schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAmD;AAKnD,gEAA+D;AAC/D,yDAAwD;AACxD,6DAA4D;AAC5D,+DAA8D;AAC9D,2DAA0D;AAC1D,2DAA0D;AAC1D,2DAA0D;AAC1D,2DAA0D;AAC1D,iEAAgE;AAChE,yDAAwD;AAKjD,IAAM,kBAAkB,GAC3B,UAAC,OAAuC;IACxC,OAAA,UAA6B,UAAsB;QACnD,OAAA,UAAC,UAA2B;YAC5B,OAAA,UAAC,IAAc;gBACf,OAAA,UACI,SAAiC;;;oBAGjC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"application_schema.js","sourceRoot":"","sources":["../../../src/programmers/internal/application_schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
|
|
2
2
|
import { IMetadataTag } from "../metadata/IMetadataTag";
|
|
3
3
|
import { Atomic } from "../typings/Atomic";
|
|
4
|
-
export type IJsonSchema = IJsonSchema.
|
|
4
|
+
export type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;
|
|
5
5
|
export declare namespace IJsonSchema {
|
|
6
|
-
type
|
|
6
|
+
type Known = IEnumeration<"boolean"> | IEnumeration<"number"> | IEnumeration<"string"> | IBoolean | IInteger | INumber | IString | IArray | ITuple | IOneOf | IReference | IRecursiveReference | INullOnly;
|
|
7
|
+
interface IUnknown extends IAttribute {
|
|
8
|
+
type: undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Use {@link Known} type instead.
|
|
12
|
+
*/
|
|
13
|
+
type NotUnknown = Known;
|
|
7
14
|
interface IEnumeration<Literal extends Exclude<Atomic.Literal, "bigint">> extends IAtomic<Literal> {
|
|
8
15
|
enum: Array<Atomic.Mapper[Literal]>;
|
|
9
16
|
}
|
|
@@ -74,8 +81,6 @@ export declare namespace IJsonSchema {
|
|
|
74
81
|
interface IOneOf extends IAttribute {
|
|
75
82
|
oneOf: IJsonSchema[];
|
|
76
83
|
}
|
|
77
|
-
interface IUnknown {
|
|
78
|
-
}
|
|
79
84
|
interface ISignificant<Literal extends string> extends IAttribute {
|
|
80
85
|
type: Literal;
|
|
81
86
|
nullable: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typia",
|
|
3
|
-
"version": "3.8.0-dev.
|
|
3
|
+
"version": "3.8.0-dev.20230426",
|
|
4
4
|
"description": "Superfast runtime validators with only one line",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"randexp": "^0.5.3"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
|
-
"typescript": ">=
|
|
78
|
+
"typescript": ">= 5.0.0"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@fastify/type-provider-typebox": "^3.0.0",
|
package/src/Primitive.ts
CHANGED
|
@@ -49,13 +49,19 @@ type _Primitive<Instance> = _ValueOf<Instance> extends object
|
|
|
49
49
|
: _ValueOf<Instance>;
|
|
50
50
|
|
|
51
51
|
type _PrimitiveObject<Instance extends object> = Instance extends Array<infer T>
|
|
52
|
-
?
|
|
52
|
+
? _IsTuple<Instance> extends true
|
|
53
|
+
? _PrimitiveSpread<Instance>
|
|
54
|
+
: _Primitive<T>[]
|
|
53
55
|
: {
|
|
54
56
|
[P in keyof Instance]: Instance[P] extends Function
|
|
55
57
|
? never
|
|
56
58
|
: _Primitive<Instance[P]>;
|
|
57
59
|
};
|
|
58
60
|
|
|
61
|
+
type _PrimitiveSpread<T extends any[]> = T extends [infer F, ...infer Rest]
|
|
62
|
+
? [_Primitive<F>, ..._PrimitiveSpread<Rest>]
|
|
63
|
+
: [];
|
|
64
|
+
|
|
59
65
|
type _ValueOf<Instance> = _IsValueOf<Instance, Boolean> extends true
|
|
60
66
|
? boolean
|
|
61
67
|
: _IsValueOf<Instance, Number> extends true
|
|
@@ -84,6 +90,16 @@ type _Native =
|
|
|
84
90
|
| SharedArrayBuffer
|
|
85
91
|
| DataView;
|
|
86
92
|
|
|
93
|
+
type _IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
|
|
94
|
+
never,
|
|
95
|
+
]
|
|
96
|
+
? false
|
|
97
|
+
: T extends readonly any[]
|
|
98
|
+
? number extends T["length"]
|
|
99
|
+
? false
|
|
100
|
+
: true
|
|
101
|
+
: false;
|
|
102
|
+
|
|
87
103
|
type _IsValueOf<
|
|
88
104
|
Instance,
|
|
89
105
|
Object extends IValueOf<any>,
|
|
@@ -2,8 +2,7 @@ import ts from "typescript";
|
|
|
2
2
|
|
|
3
3
|
import { Metadata } from "../../../metadata/Metadata";
|
|
4
4
|
|
|
5
|
-
import { ArrayUtil } from "../../../utils/ArrayUtil";
|
|
6
|
-
|
|
5
|
+
// import { ArrayUtil } from "../../../utils/ArrayUtil";
|
|
7
6
|
import { MetadataCollection } from "../../MetadataCollection";
|
|
8
7
|
import { MetadataFactory } from "../../MetadataFactory";
|
|
9
8
|
import { iterate_metadata_array } from "./iterate_metadata_array";
|
|
@@ -44,18 +43,6 @@ export const iterate_metadata =
|
|
|
44
43
|
)
|
|
45
44
|
return;
|
|
46
45
|
|
|
47
|
-
// VALIDATE NODE
|
|
48
|
-
const node: ts.TypeNode | undefined = checker.typeToTypeNode(
|
|
49
|
-
type,
|
|
50
|
-
undefined,
|
|
51
|
-
undefined,
|
|
52
|
-
);
|
|
53
|
-
if (node === undefined) {
|
|
54
|
-
// EMPTY TUPLE CASE CAN BE
|
|
55
|
-
ArrayUtil.set(meta.tuples, [], () => "[]");
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
46
|
// ITERATE CASES
|
|
60
47
|
iterate_metadata_coalesce(meta, type) ||
|
|
61
48
|
iterate_metadata_constant(checker)(options)(meta, type) ||
|
package/src/module.ts
CHANGED
|
@@ -570,12 +570,12 @@ export function assertParse(input: string): never;
|
|
|
570
570
|
*
|
|
571
571
|
* @author Jeongho Nam - https://github.com/samchon
|
|
572
572
|
*/
|
|
573
|
-
export function assertParse<T>(input: string): T
|
|
573
|
+
export function assertParse<T>(input: string): Primitive<T>;
|
|
574
574
|
|
|
575
575
|
/**
|
|
576
576
|
* @internal
|
|
577
577
|
*/
|
|
578
|
-
export function assertParse<T>(): T {
|
|
578
|
+
export function assertParse<T>(): Primitive<T> {
|
|
579
579
|
halt("assertParse");
|
|
580
580
|
}
|
|
581
581
|
Object.assign(assertParse, Namespace.assert("assertParse"));
|
|
@@ -618,12 +618,12 @@ export function isParse(input: string): never;
|
|
|
618
618
|
*
|
|
619
619
|
* @author Jeongho Nam - https://github.com/samchon
|
|
620
620
|
*/
|
|
621
|
-
export function isParse<T>(input: string): T | null;
|
|
621
|
+
export function isParse<T>(input: string): Primitive<T> | null;
|
|
622
622
|
|
|
623
623
|
/**
|
|
624
624
|
* @internal
|
|
625
625
|
*/
|
|
626
|
-
export function isParse<T>(): T | null {
|
|
626
|
+
export function isParse<T>(): Primitive<T> | null {
|
|
627
627
|
halt("isParse");
|
|
628
628
|
}
|
|
629
629
|
Object.assign(isParse, is);
|
|
@@ -668,12 +668,12 @@ export function validateParse(input: string): never;
|
|
|
668
668
|
*
|
|
669
669
|
* @author Jeongho Nam - https://github.com/samchon
|
|
670
670
|
*/
|
|
671
|
-
export function validateParse<T>(input: string): IValidation<T
|
|
671
|
+
export function validateParse<T>(input: string): IValidation<Primitive<T>>;
|
|
672
672
|
|
|
673
673
|
/**
|
|
674
674
|
* @internal
|
|
675
675
|
*/
|
|
676
|
-
export function validateParse<T>(): IValidation<T
|
|
676
|
+
export function validateParse<T>(): IValidation<Primitive<T>> {
|
|
677
677
|
halt("validateParse");
|
|
678
678
|
}
|
|
679
679
|
Object.assign(validateParse, validate);
|
|
@@ -60,10 +60,13 @@ export namespace AssertParseProgrammer {
|
|
|
60
60
|
),
|
|
61
61
|
),
|
|
62
62
|
ts.factory.createReturnStatement(
|
|
63
|
-
ts.factory.
|
|
64
|
-
ts.factory.
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
ts.factory.createAsExpression(
|
|
64
|
+
ts.factory.createCallExpression(
|
|
65
|
+
ts.factory.createIdentifier("assert"),
|
|
66
|
+
undefined,
|
|
67
|
+
[ts.factory.createIdentifier("input")],
|
|
68
|
+
),
|
|
69
|
+
ts.factory.createTypeReferenceNode("any"),
|
|
67
70
|
),
|
|
68
71
|
),
|
|
69
72
|
]),
|