typia 4.1.3 → 4.1.4-dev.20230707
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/metadata/Metadata.d.ts +1 -0
- package/lib/metadata/Metadata.js +5 -2
- package/lib/metadata/Metadata.js.map +1 -1
- package/lib/metadata/MetadataObject.js +1 -1
- package/lib/metadata/MetadataObject.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +3 -3
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.js +1 -1
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +1 -1
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/StringifyProgrammer.js +5 -5
- package/lib/programmers/StringifyProgrammer.js.map +1 -1
- package/lib/programmers/helpers/StringifyJoinder.js +1 -1
- package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
- package/lib/programmers/helpers/StringifyPredicator.js +3 -2
- package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
- package/lib/programmers/helpers/UnionPredicator.js +1 -1
- package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
- package/lib/programmers/internal/application_object.js +2 -2
- package/lib/programmers/internal/application_object.js.map +1 -1
- package/lib/programmers/internal/check_dynamic_properties.js +5 -4
- package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
- package/lib/programmers/internal/stringify_regular_properties.js +4 -4
- package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
- package/package.json +1 -1
- package/src/factories/internal/metadata/emplace_metadata_object.ts +137 -137
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
- package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
- package/src/metadata/Metadata.ts +6 -2
- package/src/metadata/MetadataObject.ts +129 -129
- package/src/programmers/CheckerProgrammer.ts +4 -4
- package/src/programmers/IsProgrammer.ts +1 -1
- package/src/programmers/RandomProgrammer.ts +1 -1
- package/src/programmers/StringifyProgrammer.ts +5 -5
- package/src/programmers/helpers/StringifyJoinder.ts +1 -1
- package/src/programmers/helpers/StringifyPredicator.ts +3 -2
- package/src/programmers/helpers/UnionPredicator.ts +1 -1
- package/src/programmers/internal/application_object.ts +2 -2
- package/src/programmers/internal/check_dynamic_properties.ts +5 -4
- package/src/programmers/internal/stringify_regular_properties.ts +4 -4
|
@@ -158,9 +158,9 @@ export namespace StringifyProgrammer {
|
|
|
158
158
|
const size: number = meta.size();
|
|
159
159
|
if (
|
|
160
160
|
size === 0 &&
|
|
161
|
-
(meta.
|
|
161
|
+
(meta.isRequired() === false || meta.nullable === true)
|
|
162
162
|
) {
|
|
163
|
-
if (meta.
|
|
163
|
+
if (meta.isRequired() === false && meta.nullable === true)
|
|
164
164
|
return explore.from === "array"
|
|
165
165
|
? ts.factory.createStringLiteral("null")
|
|
166
166
|
: ts.factory.createConditionalExpression(
|
|
@@ -173,7 +173,7 @@ export namespace StringifyProgrammer {
|
|
|
173
173
|
undefined,
|
|
174
174
|
ts.factory.createIdentifier("undefined"),
|
|
175
175
|
);
|
|
176
|
-
else if (meta.
|
|
176
|
+
else if (meta.isRequired() === false)
|
|
177
177
|
return explore.from === "array"
|
|
178
178
|
? ts.factory.createStringLiteral("null")
|
|
179
179
|
: ts.factory.createIdentifier("undefined");
|
|
@@ -420,7 +420,7 @@ export namespace StringifyProgrammer {
|
|
|
420
420
|
obj.properties.every(
|
|
421
421
|
(prop) =>
|
|
422
422
|
!prop.key.isSoleLiteral() ||
|
|
423
|
-
!prop.value.
|
|
423
|
+
!prop.value.isRequired(),
|
|
424
424
|
),
|
|
425
425
|
),
|
|
426
426
|
})(input),
|
|
@@ -802,7 +802,7 @@ export namespace StringifyProgrammer {
|
|
|
802
802
|
meta: Metadata,
|
|
803
803
|
explore: FeatureProgrammer.IExplore,
|
|
804
804
|
): ((expression: ts.Expression) => ts.Expression) => {
|
|
805
|
-
if (meta.
|
|
805
|
+
if (meta.isRequired() === true && meta.any === false)
|
|
806
806
|
return (expression) => expression;
|
|
807
807
|
return (expression) =>
|
|
808
808
|
ts.factory.createConditionalExpression(
|
|
@@ -41,7 +41,7 @@ export namespace StringifyJoiner {
|
|
|
41
41
|
// POP LAST COMMA, IF REQUIRED
|
|
42
42
|
const filtered: ts.Expression[] =
|
|
43
43
|
(regular.length &&
|
|
44
|
-
regular[regular.length - 1]!.meta.
|
|
44
|
+
regular[regular.length - 1]!.meta.isRequired() &&
|
|
45
45
|
dynamic.length === 0) ||
|
|
46
46
|
(regular.length === 0 && dynamic.length)
|
|
47
47
|
? expressions
|
|
@@ -5,8 +5,9 @@ export namespace StringifyPredicator {
|
|
|
5
5
|
value.split("").some((ch) => ESCAPED.some((escaped) => escaped === ch));
|
|
6
6
|
|
|
7
7
|
export const undefindable = (meta: Metadata): boolean =>
|
|
8
|
-
meta.
|
|
9
|
-
(meta.resolved !== null &&
|
|
8
|
+
meta.isRequired() === false ||
|
|
9
|
+
(meta.resolved !== null &&
|
|
10
|
+
meta.resolved.returns.isRequired() === false);
|
|
10
11
|
|
|
11
12
|
const ESCAPED = ['"', "\\", "\b", "\f", "\n", "\n", "\r", "\t"];
|
|
12
13
|
}
|
|
@@ -37,7 +37,7 @@ export namespace UnionPredicator {
|
|
|
37
37
|
const children: ISpecializedProperty[] = [];
|
|
38
38
|
obj.properties.forEach((prop) => {
|
|
39
39
|
// MUST BE REQUIRED
|
|
40
|
-
if (prop.value.
|
|
40
|
+
if (prop.value.isRequired() === false) return;
|
|
41
41
|
const key: string | null = prop.key.getSoleLiteral();
|
|
42
42
|
if (key === null) return;
|
|
43
43
|
|
|
@@ -45,7 +45,7 @@ export const application_object =
|
|
|
45
45
|
if (
|
|
46
46
|
property.value.functional === true &&
|
|
47
47
|
property.value.nullable === false &&
|
|
48
|
-
property.value.
|
|
48
|
+
property.value.isRequired() === true &&
|
|
49
49
|
property.value.size() === 0
|
|
50
50
|
)
|
|
51
51
|
continue;
|
|
@@ -79,7 +79,7 @@ export const application_object =
|
|
|
79
79
|
if (schema === null) continue;
|
|
80
80
|
else if (key !== null) {
|
|
81
81
|
properties[key] = schema;
|
|
82
|
-
if (property.value.
|
|
82
|
+
if (property.value.isRequired() === true) required.push(key);
|
|
83
83
|
} else {
|
|
84
84
|
const pattern: string = metadata_to_pattern(true)(property.key);
|
|
85
85
|
if (pattern === PatternUtil.STRING)
|
|
@@ -30,10 +30,10 @@ export const check_dynamic_properties =
|
|
|
30
30
|
const left: ts.Expression | null =
|
|
31
31
|
props.equals === true && dynamic.length === 0
|
|
32
32
|
? props.undefined === true ||
|
|
33
|
-
regular.every((r) => r.meta.
|
|
33
|
+
regular.every((r) => r.meta.isRequired())
|
|
34
34
|
? ts.factory.createStrictEquality(
|
|
35
35
|
ts.factory.createNumericLiteral(
|
|
36
|
-
regular.filter((r) => r.meta.
|
|
36
|
+
regular.filter((r) => r.meta.isRequired()).length,
|
|
37
37
|
),
|
|
38
38
|
length,
|
|
39
39
|
)
|
|
@@ -43,7 +43,8 @@ export const check_dynamic_properties =
|
|
|
43
43
|
[
|
|
44
44
|
length,
|
|
45
45
|
ts.factory.createNumericLiteral(
|
|
46
|
-
regular.filter((r) => r.meta.
|
|
46
|
+
regular.filter((r) => r.meta.isRequired())
|
|
47
|
+
.length,
|
|
47
48
|
),
|
|
48
49
|
ts.factory.createNumericLiteral(regular.length),
|
|
49
50
|
],
|
|
@@ -52,7 +53,7 @@ export const check_dynamic_properties =
|
|
|
52
53
|
if (
|
|
53
54
|
props.undefined === false &&
|
|
54
55
|
left !== null &&
|
|
55
|
-
regular.every((r) => r.meta.
|
|
56
|
+
regular.every((r) => r.meta.isRequired())
|
|
56
57
|
)
|
|
57
58
|
return left;
|
|
58
59
|
|
|
@@ -28,7 +28,7 @@ export const stringify_regular_properties = (
|
|
|
28
28
|
base.push(ts.factory.createStringLiteral(`,`));
|
|
29
29
|
|
|
30
30
|
const empty: boolean =
|
|
31
|
-
(entry.meta.
|
|
31
|
+
(entry.meta.isRequired() === false &&
|
|
32
32
|
entry.meta.nullable === false &&
|
|
33
33
|
entry.meta.size() === 0) ||
|
|
34
34
|
(entry.meta.functional &&
|
|
@@ -37,7 +37,7 @@ export const stringify_regular_properties = (
|
|
|
37
37
|
|
|
38
38
|
if (empty === true) return;
|
|
39
39
|
else if (
|
|
40
|
-
entry.meta.
|
|
40
|
+
entry.meta.isRequired() === false ||
|
|
41
41
|
entry.meta.functional === true ||
|
|
42
42
|
entry.meta.any === true
|
|
43
43
|
)
|
|
@@ -45,7 +45,7 @@ export const stringify_regular_properties = (
|
|
|
45
45
|
ts.factory.createConditionalExpression(
|
|
46
46
|
(() => {
|
|
47
47
|
const conditions: ts.BinaryExpression[] = [];
|
|
48
|
-
if (entry.meta.
|
|
48
|
+
if (entry.meta.isRequired() === false || entry.meta.any)
|
|
49
49
|
conditions.push(
|
|
50
50
|
ts.factory.createStrictEquality(
|
|
51
51
|
ts.factory.createIdentifier("undefined"),
|
|
@@ -80,4 +80,4 @@ export const stringify_regular_properties = (
|
|
|
80
80
|
* @internal
|
|
81
81
|
*/
|
|
82
82
|
const sequence = (meta: Metadata): number =>
|
|
83
|
-
meta.any || !meta.
|
|
83
|
+
meta.any || !meta.isRequired() || meta.functional ? 0 : 1;
|