typia 5.1.3 → 5.1.4-dev.20230929

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.
Files changed (66) hide show
  1. package/lib/executable/TypiaSetupWizard.js +1 -19
  2. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/executable/TypiaSetupWizard.ts +1 -16
  5. package/src/factories/MetadataCollection.ts +277 -277
  6. package/src/factories/MetadataFactory.ts +238 -238
  7. package/src/factories/MetadataTypeTagFactory.ts +325 -325
  8. package/src/factories/internal/metadata/emend_metadata_atomics.ts +41 -41
  9. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +259 -259
  10. package/src/functional/$HeadersReader.ts +28 -28
  11. package/src/functional/$ParameterReader.ts +31 -31
  12. package/src/functional/$QueryReader.ts +56 -56
  13. package/src/functional/Namespace.ts +142 -142
  14. package/src/http.ts +1149 -1149
  15. package/src/json.ts +648 -648
  16. package/src/misc.ts +651 -651
  17. package/src/module.ts +657 -657
  18. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  19. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +77 -77
  20. package/src/programmers/http/HttpAssertQueryProgrammer.ts +77 -77
  21. package/src/programmers/http/HttpHeadersProgrammer.ts +339 -339
  22. package/src/programmers/http/HttpIsHeadersProgrammer.ts +87 -87
  23. package/src/programmers/http/HttpIsQueryProgrammer.ts +87 -87
  24. package/src/programmers/http/HttpParameterProgrammer.ts +104 -104
  25. package/src/programmers/http/HttpQueryProgrammer.ts +273 -273
  26. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +77 -77
  27. package/src/programmers/http/HttpValidateQueryProgrammer.ts +77 -77
  28. package/src/programmers/internal/application_boolean.ts +30 -30
  29. package/src/programmers/internal/application_number.ts +90 -90
  30. package/src/programmers/internal/application_schema.ts +180 -180
  31. package/src/programmers/internal/application_string.ts +54 -54
  32. package/src/programmers/internal/check_array_length.ts +44 -44
  33. package/src/programmers/internal/check_bigint.ts +48 -48
  34. package/src/programmers/internal/check_number.ts +108 -108
  35. package/src/programmers/internal/check_string.ts +48 -48
  36. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +882 -882
  37. package/src/protobuf.ts +887 -887
  38. package/src/schemas/json/IJsonComponents.ts +34 -34
  39. package/src/schemas/json/IJsonSchema.ts +112 -112
  40. package/src/schemas/metadata/IMetadataConstant.ts +25 -25
  41. package/src/schemas/metadata/IMetadataTypeTag.ts +8 -8
  42. package/src/schemas/metadata/Metadata.ts +686 -686
  43. package/src/tags/Default.ts +15 -15
  44. package/src/tags/Format.ts +30 -30
  45. package/src/tags/Pattern.ts +9 -9
  46. package/src/tags/TagBase.ts +68 -68
  47. package/src/tags/index.ts +14 -14
  48. package/src/transformers/CallExpressionTransformer.ts +289 -289
  49. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +12 -12
  50. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +12 -12
  51. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +9 -9
  52. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +9 -9
  53. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +9 -9
  54. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +9 -9
  55. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +9 -9
  56. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +12 -12
  57. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +12 -12
  58. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +10 -10
  59. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +10 -10
  60. package/src/transformers/features/http/HttpHeadersTransformer.ts +9 -9
  61. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +9 -9
  62. package/src/transformers/features/http/HttpIsQueryTransformer.ts +9 -9
  63. package/src/transformers/features/http/HttpParameterTransformer.ts +9 -9
  64. package/src/transformers/features/http/HttpQueryTransformer.ts +9 -9
  65. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +10 -10
  66. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +10 -10
@@ -1,77 +1,77 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
- import { StatementFactory } from "../../factories/StatementFactory";
5
- import { TypeFactory } from "../../factories/TypeFactory";
6
-
7
- import { IProject } from "../../transformers/IProject";
8
-
9
- import { ValidateProgrammer } from "../ValidateProgrammer";
10
- import { HttpHeadersProgrammer } from "./HttpHeadersProgrammer";
11
-
12
- export namespace HttpValidateHeadersProgrammer {
13
- export const write =
14
- (project: IProject) =>
15
- (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string): ts.ArrowFunction =>
17
- ts.factory.createArrowFunction(
18
- undefined,
19
- undefined,
20
- [
21
- IdentifierFactory.parameter(
22
- "input",
23
- ts.factory.createTypeReferenceNode(
24
- HttpHeadersProgrammer.INPUT_TYPE,
25
- ),
26
- ),
27
- ],
28
- ts.factory.createTypeReferenceNode(
29
- `typia.IValidation<typia.Resolved<${
30
- name ?? TypeFactory.getFullName(project.checker)(type)
31
- }>>`,
32
- ),
33
- undefined,
34
- ts.factory.createBlock([
35
- StatementFactory.constant(
36
- "validate",
37
- ValidateProgrammer.write({
38
- ...project,
39
- options: {
40
- ...project.options,
41
- functional: false,
42
- numeric: true,
43
- },
44
- })(modulo)(false)(type, name),
45
- ),
46
- StatementFactory.constant(
47
- "headers",
48
- HttpHeadersProgrammer.write({
49
- ...project,
50
- options: {
51
- ...project.options,
52
- functional: false,
53
- numeric: false,
54
- },
55
- })(modulo)(type, name),
56
- ),
57
- StatementFactory.constant(
58
- "output",
59
- ts.factory.createCallExpression(
60
- ts.factory.createIdentifier("headers"),
61
- undefined,
62
- [ts.factory.createIdentifier("input")],
63
- ),
64
- ),
65
- ts.factory.createReturnStatement(
66
- ts.factory.createAsExpression(
67
- ts.factory.createCallExpression(
68
- ts.factory.createIdentifier("validate"),
69
- undefined,
70
- [ts.factory.createIdentifier("output")],
71
- ),
72
- ts.factory.createTypeReferenceNode("any"),
73
- ),
74
- ),
75
- ]),
76
- );
77
- }
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
+
7
+ import { IProject } from "../../transformers/IProject";
8
+
9
+ import { ValidateProgrammer } from "../ValidateProgrammer";
10
+ import { HttpHeadersProgrammer } from "./HttpHeadersProgrammer";
11
+
12
+ export namespace HttpValidateHeadersProgrammer {
13
+ export const write =
14
+ (project: IProject) =>
15
+ (modulo: ts.LeftHandSideExpression) =>
16
+ (type: ts.Type, name?: string): ts.ArrowFunction =>
17
+ ts.factory.createArrowFunction(
18
+ undefined,
19
+ undefined,
20
+ [
21
+ IdentifierFactory.parameter(
22
+ "input",
23
+ ts.factory.createTypeReferenceNode(
24
+ HttpHeadersProgrammer.INPUT_TYPE,
25
+ ),
26
+ ),
27
+ ],
28
+ ts.factory.createTypeReferenceNode(
29
+ `typia.IValidation<typia.Resolved<${
30
+ name ?? TypeFactory.getFullName(project.checker)(type)
31
+ }>>`,
32
+ ),
33
+ undefined,
34
+ ts.factory.createBlock([
35
+ StatementFactory.constant(
36
+ "validate",
37
+ ValidateProgrammer.write({
38
+ ...project,
39
+ options: {
40
+ ...project.options,
41
+ functional: false,
42
+ numeric: true,
43
+ },
44
+ })(modulo)(false)(type, name),
45
+ ),
46
+ StatementFactory.constant(
47
+ "headers",
48
+ HttpHeadersProgrammer.write({
49
+ ...project,
50
+ options: {
51
+ ...project.options,
52
+ functional: false,
53
+ numeric: false,
54
+ },
55
+ })(modulo)(type, name),
56
+ ),
57
+ StatementFactory.constant(
58
+ "output",
59
+ ts.factory.createCallExpression(
60
+ ts.factory.createIdentifier("headers"),
61
+ undefined,
62
+ [ts.factory.createIdentifier("input")],
63
+ ),
64
+ ),
65
+ ts.factory.createReturnStatement(
66
+ ts.factory.createAsExpression(
67
+ ts.factory.createCallExpression(
68
+ ts.factory.createIdentifier("validate"),
69
+ undefined,
70
+ [ts.factory.createIdentifier("output")],
71
+ ),
72
+ ts.factory.createTypeReferenceNode("any"),
73
+ ),
74
+ ),
75
+ ]),
76
+ );
77
+ }
@@ -1,77 +1,77 @@
1
- import ts from "typescript";
2
-
3
- import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
- import { StatementFactory } from "../../factories/StatementFactory";
5
- import { TypeFactory } from "../../factories/TypeFactory";
6
-
7
- import { IProject } from "../../transformers/IProject";
8
-
9
- import { ValidateProgrammer } from "../ValidateProgrammer";
10
- import { HttpQueryProgrammer } from "./HttpQueryProgrammer";
11
-
12
- export namespace HttpValidateQueryProgrammer {
13
- export const write =
14
- (project: IProject) =>
15
- (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string): ts.ArrowFunction =>
17
- ts.factory.createArrowFunction(
18
- undefined,
19
- undefined,
20
- [
21
- IdentifierFactory.parameter(
22
- "input",
23
- ts.factory.createTypeReferenceNode(
24
- HttpQueryProgrammer.INPUT_TYPE,
25
- ),
26
- ),
27
- ],
28
- ts.factory.createTypeReferenceNode(
29
- `typia.IValidation<typia.Resolved<${
30
- name ?? TypeFactory.getFullName(project.checker)(type)
31
- }>>`,
32
- ),
33
- undefined,
34
- ts.factory.createBlock([
35
- StatementFactory.constant(
36
- "validate",
37
- ValidateProgrammer.write({
38
- ...project,
39
- options: {
40
- ...project.options,
41
- functional: false,
42
- numeric: true,
43
- },
44
- })(modulo)(false)(type, name),
45
- ),
46
- StatementFactory.constant(
47
- "query",
48
- HttpQueryProgrammer.write({
49
- ...project,
50
- options: {
51
- ...project.options,
52
- functional: false,
53
- numeric: false,
54
- },
55
- })(modulo)(type, name),
56
- ),
57
- StatementFactory.constant(
58
- "output",
59
- ts.factory.createCallExpression(
60
- ts.factory.createIdentifier("query"),
61
- undefined,
62
- [ts.factory.createIdentifier("input")],
63
- ),
64
- ),
65
- ts.factory.createReturnStatement(
66
- ts.factory.createAsExpression(
67
- ts.factory.createCallExpression(
68
- ts.factory.createIdentifier("validate"),
69
- undefined,
70
- [ts.factory.createIdentifier("output")],
71
- ),
72
- ts.factory.createTypeReferenceNode("any"),
73
- ),
74
- ),
75
- ]),
76
- );
77
- }
1
+ import ts from "typescript";
2
+
3
+ import { IdentifierFactory } from "../../factories/IdentifierFactory";
4
+ import { StatementFactory } from "../../factories/StatementFactory";
5
+ import { TypeFactory } from "../../factories/TypeFactory";
6
+
7
+ import { IProject } from "../../transformers/IProject";
8
+
9
+ import { ValidateProgrammer } from "../ValidateProgrammer";
10
+ import { HttpQueryProgrammer } from "./HttpQueryProgrammer";
11
+
12
+ export namespace HttpValidateQueryProgrammer {
13
+ export const write =
14
+ (project: IProject) =>
15
+ (modulo: ts.LeftHandSideExpression) =>
16
+ (type: ts.Type, name?: string): ts.ArrowFunction =>
17
+ ts.factory.createArrowFunction(
18
+ undefined,
19
+ undefined,
20
+ [
21
+ IdentifierFactory.parameter(
22
+ "input",
23
+ ts.factory.createTypeReferenceNode(
24
+ HttpQueryProgrammer.INPUT_TYPE,
25
+ ),
26
+ ),
27
+ ],
28
+ ts.factory.createTypeReferenceNode(
29
+ `typia.IValidation<typia.Resolved<${
30
+ name ?? TypeFactory.getFullName(project.checker)(type)
31
+ }>>`,
32
+ ),
33
+ undefined,
34
+ ts.factory.createBlock([
35
+ StatementFactory.constant(
36
+ "validate",
37
+ ValidateProgrammer.write({
38
+ ...project,
39
+ options: {
40
+ ...project.options,
41
+ functional: false,
42
+ numeric: true,
43
+ },
44
+ })(modulo)(false)(type, name),
45
+ ),
46
+ StatementFactory.constant(
47
+ "query",
48
+ HttpQueryProgrammer.write({
49
+ ...project,
50
+ options: {
51
+ ...project.options,
52
+ functional: false,
53
+ numeric: false,
54
+ },
55
+ })(modulo)(type, name),
56
+ ),
57
+ StatementFactory.constant(
58
+ "output",
59
+ ts.factory.createCallExpression(
60
+ ts.factory.createIdentifier("query"),
61
+ undefined,
62
+ [ts.factory.createIdentifier("input")],
63
+ ),
64
+ ),
65
+ ts.factory.createReturnStatement(
66
+ ts.factory.createAsExpression(
67
+ ts.factory.createCallExpression(
68
+ ts.factory.createIdentifier("validate"),
69
+ undefined,
70
+ [ts.factory.createIdentifier("output")],
71
+ ),
72
+ ts.factory.createTypeReferenceNode("any"),
73
+ ),
74
+ ),
75
+ ]),
76
+ );
77
+ }
@@ -1,30 +1,30 @@
1
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
2
- import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
3
-
4
- import { IJsonSchema } from "../../module";
5
- import { application_default } from "./application_default";
6
-
7
- /**
8
- * @internal
9
- */
10
- export const application_boolean =
11
- (atomic: MetadataAtomic) =>
12
- (attribute: IJsonSchema.IAttribute): IJsonSchema.IBoolean[] => {
13
- const base: IJsonSchema.IBoolean = {
14
- ...attribute,
15
- default: application_default(attribute)(
16
- (alias) => alias === "true" || alias === "false",
17
- )((str) => Boolean(str)),
18
- type: "boolean",
19
- };
20
- const defaultTags: IMetadataTypeTag[] = atomic.tags
21
- .filter((row) => row.some((tag) => tag.kind === "default"))
22
- .map((row) => row.filter((tag) => tag.kind === "default"))
23
- .flat();
24
- if (defaultTags.length === 0) return [base];
25
- return defaultTags.map((tag) => ({
26
- ...base,
27
- default: tag.value,
28
- "x-typia-typeTags": defaultTags,
29
- }));
30
- };
1
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
2
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
3
+
4
+ import { IJsonSchema } from "../../module";
5
+ import { application_default } from "./application_default";
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ export const application_boolean =
11
+ (atomic: MetadataAtomic) =>
12
+ (attribute: IJsonSchema.IAttribute): IJsonSchema.IBoolean[] => {
13
+ const base: IJsonSchema.IBoolean = {
14
+ ...attribute,
15
+ default: application_default(attribute)(
16
+ (alias) => alias === "true" || alias === "false",
17
+ )((str) => Boolean(str)),
18
+ type: "boolean",
19
+ };
20
+ const defaultTags: IMetadataTypeTag[] = atomic.tags
21
+ .filter((row) => row.some((tag) => tag.kind === "default"))
22
+ .map((row) => row.filter((tag) => tag.kind === "default"))
23
+ .flat();
24
+ if (defaultTags.length === 0) return [base];
25
+ return defaultTags.map((tag) => ({
26
+ ...base,
27
+ default: tag.value,
28
+ "x-typia-typeTags": defaultTags,
29
+ }));
30
+ };
@@ -1,90 +1,90 @@
1
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
2
- import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
3
-
4
- import { IJsonSchema } from "../../module";
5
- import { application_default } from "./application_default";
6
-
7
- type Schema = IJsonSchema.INumber | IJsonSchema.IInteger;
8
-
9
- /**
10
- * @internal
11
- */
12
- export const application_number =
13
- (atomic: MetadataAtomic) =>
14
- (attribute: IJsonSchema.IAttribute): Array<Schema> => {
15
- // BASE CONFIGURATION
16
- const base: Schema = {
17
- ...attribute,
18
- type: "number",
19
- };
20
- const out = (schema: Schema) => {
21
- schema.default ??= application_default(attribute)((str) => {
22
- const value: number = Number(str);
23
- const conditions: boolean[] = [!Number.isNaN(value)];
24
- if (schema.minimum !== undefined)
25
- if (schema.exclusiveMinimum === true)
26
- conditions.push(value > schema.minimum);
27
- else conditions.push(value >= schema.minimum);
28
- if (schema.maximum !== undefined)
29
- if (schema.exclusiveMaximum === true)
30
- conditions.push(value < schema.maximum);
31
- else conditions.push(value <= schema.maximum);
32
- if (schema.multipleOf !== undefined)
33
- conditions.push(value % schema.multipleOf === 0);
34
- return conditions.every((cond) => cond);
35
- })((str) => Number(str));
36
- return schema;
37
- };
38
- if (atomic.tags.length === 0) return [out(base)];
39
-
40
- // CONSIDER TYPE TAGS
41
- const union: Schema[] = atomic.tags.map(
42
- (row) => application_number_tags({ ...base })(row)!,
43
- );
44
- const map: Map<string, Schema> = new Map(
45
- union.map((u) => [JSON.stringify(u), u]),
46
- );
47
- return [...map.values()].map((s) => out(s));
48
- };
49
-
50
- const application_number_tags =
51
- (base: Schema) =>
52
- (row: IMetadataTypeTag[]): Schema => {
53
- for (const tag of row
54
- .slice()
55
- .sort((a, b) => a.kind.localeCompare(b.kind))) {
56
- if (
57
- tag.kind === "type" &&
58
- (tag.value === "int32" ||
59
- tag.value === "uint32" ||
60
- tag.value === "int64" ||
61
- tag.value === "uint64")
62
- )
63
- base.type = "integer";
64
- else if (tag.kind === "minimum" && typeof tag.value === "number")
65
- base.minimum = tag.value;
66
- else if (tag.kind === "maximum" && typeof tag.value === "number")
67
- base.maximum = tag.value;
68
- else if (
69
- tag.kind === "exclusiveMinimum" &&
70
- typeof tag.value === "number"
71
- ) {
72
- base.minimum = tag.value;
73
- base.exclusiveMinimum = true;
74
- } else if (
75
- tag.kind === "exclusiveMaximum" &&
76
- typeof tag.value === "number"
77
- ) {
78
- base.maximum = tag.value;
79
- base.exclusiveMaximum = true;
80
- } else if (
81
- tag.kind === "multipleOf" &&
82
- typeof tag.value === "number"
83
- )
84
- base.multipleOf = tag.value;
85
- else if (tag.kind === "default" && typeof tag.value === "number")
86
- base.default = tag.value;
87
- }
88
- base["x-typia-typeTags"] = row;
89
- return base;
90
- };
1
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
2
+ import { MetadataAtomic } from "../../schemas/metadata/MetadataAtomic";
3
+
4
+ import { IJsonSchema } from "../../module";
5
+ import { application_default } from "./application_default";
6
+
7
+ type Schema = IJsonSchema.INumber | IJsonSchema.IInteger;
8
+
9
+ /**
10
+ * @internal
11
+ */
12
+ export const application_number =
13
+ (atomic: MetadataAtomic) =>
14
+ (attribute: IJsonSchema.IAttribute): Array<Schema> => {
15
+ // BASE CONFIGURATION
16
+ const base: Schema = {
17
+ ...attribute,
18
+ type: "number",
19
+ };
20
+ const out = (schema: Schema) => {
21
+ schema.default ??= application_default(attribute)((str) => {
22
+ const value: number = Number(str);
23
+ const conditions: boolean[] = [!Number.isNaN(value)];
24
+ if (schema.minimum !== undefined)
25
+ if (schema.exclusiveMinimum === true)
26
+ conditions.push(value > schema.minimum);
27
+ else conditions.push(value >= schema.minimum);
28
+ if (schema.maximum !== undefined)
29
+ if (schema.exclusiveMaximum === true)
30
+ conditions.push(value < schema.maximum);
31
+ else conditions.push(value <= schema.maximum);
32
+ if (schema.multipleOf !== undefined)
33
+ conditions.push(value % schema.multipleOf === 0);
34
+ return conditions.every((cond) => cond);
35
+ })((str) => Number(str));
36
+ return schema;
37
+ };
38
+ if (atomic.tags.length === 0) return [out(base)];
39
+
40
+ // CONSIDER TYPE TAGS
41
+ const union: Schema[] = atomic.tags.map(
42
+ (row) => application_number_tags({ ...base })(row)!,
43
+ );
44
+ const map: Map<string, Schema> = new Map(
45
+ union.map((u) => [JSON.stringify(u), u]),
46
+ );
47
+ return [...map.values()].map((s) => out(s));
48
+ };
49
+
50
+ const application_number_tags =
51
+ (base: Schema) =>
52
+ (row: IMetadataTypeTag[]): Schema => {
53
+ for (const tag of row
54
+ .slice()
55
+ .sort((a, b) => a.kind.localeCompare(b.kind))) {
56
+ if (
57
+ tag.kind === "type" &&
58
+ (tag.value === "int32" ||
59
+ tag.value === "uint32" ||
60
+ tag.value === "int64" ||
61
+ tag.value === "uint64")
62
+ )
63
+ base.type = "integer";
64
+ else if (tag.kind === "minimum" && typeof tag.value === "number")
65
+ base.minimum = tag.value;
66
+ else if (tag.kind === "maximum" && typeof tag.value === "number")
67
+ base.maximum = tag.value;
68
+ else if (
69
+ tag.kind === "exclusiveMinimum" &&
70
+ typeof tag.value === "number"
71
+ ) {
72
+ base.minimum = tag.value;
73
+ base.exclusiveMinimum = true;
74
+ } else if (
75
+ tag.kind === "exclusiveMaximum" &&
76
+ typeof tag.value === "number"
77
+ ) {
78
+ base.maximum = tag.value;
79
+ base.exclusiveMaximum = true;
80
+ } else if (
81
+ tag.kind === "multipleOf" &&
82
+ typeof tag.value === "number"
83
+ )
84
+ base.multipleOf = tag.value;
85
+ else if (tag.kind === "default" && typeof tag.value === "number")
86
+ base.default = tag.value;
87
+ }
88
+ base["x-typia-typeTags"] = row;
89
+ return base;
90
+ };