typia 3.5.0-dev.20221219 → 3.5.0-dev.20230107

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 (136) hide show
  1. package/README.md +62 -17
  2. package/lib/executable/internal/TypiaSetupWizard.d.ts +6 -2
  3. package/lib/executable/internal/TypiaSetupWizard.js +25 -23
  4. package/lib/executable/internal/TypiaSetupWizard.js.map +1 -1
  5. package/lib/executable/typia.js +11 -10
  6. package/lib/executable/typia.js.map +1 -1
  7. package/lib/factories/MetadataCollection.d.ts +1 -9
  8. package/lib/factories/MetadataCollection.js +2 -77
  9. package/lib/factories/MetadataCollection.js.map +1 -1
  10. package/lib/factories/MetadataTagFactory.js +4 -1
  11. package/lib/factories/MetadataTagFactory.js.map +1 -1
  12. package/lib/factories/ProtocolFactory.d.ts +0 -1
  13. package/lib/factories/ProtocolFactory.js +0 -6
  14. package/lib/factories/ProtocolFactory.js.map +1 -1
  15. package/lib/factories/internal/metadata/iterate_metadata_object.js +4 -2
  16. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  17. package/lib/factories/internal/protocols/iterate_protocol_main.js +2 -3
  18. package/lib/factories/internal/protocols/iterate_protocol_main.js.map +1 -1
  19. package/lib/factories/internal/protocols/iterate_protocol_map.js +3 -4
  20. package/lib/factories/internal/protocols/iterate_protocol_map.js.map +1 -1
  21. package/lib/factories/internal/protocols/iterate_protocol_metadata.js +2 -0
  22. package/lib/factories/internal/protocols/iterate_protocol_metadata.js.map +1 -1
  23. package/lib/factories/internal/protocols/iterate_protocol_repeated.js +3 -4
  24. package/lib/factories/internal/protocols/iterate_protocol_repeated.js.map +1 -1
  25. package/lib/factories/internal/protocols/iterate_protocol_tuple.js +3 -4
  26. package/lib/factories/internal/protocols/iterate_protocol_tuple.js.map +1 -1
  27. package/lib/functional/$number.js +2 -9
  28. package/lib/functional/$number.js.map +1 -1
  29. package/lib/metadata/Metadata.js +32 -29
  30. package/lib/metadata/Metadata.js.map +1 -1
  31. package/lib/programmers/AssertParseProgrammer.js +12 -1
  32. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  33. package/lib/programmers/AssertProgrammer.js +3 -2
  34. package/lib/programmers/AssertProgrammer.js.map +1 -1
  35. package/lib/programmers/AssertStringifyProgrammer.js +13 -2
  36. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  37. package/lib/programmers/CheckerProgrammer.d.ts +1 -0
  38. package/lib/programmers/CheckerProgrammer.js +153 -138
  39. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  40. package/lib/programmers/IsParseProgrammer.js +12 -1
  41. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  42. package/lib/programmers/IsProgrammer.js +5 -2
  43. package/lib/programmers/IsProgrammer.js.map +1 -1
  44. package/lib/programmers/IsStringifyProgrammer.js +13 -2
  45. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  46. package/lib/programmers/MessageProgrammer.js +11 -6
  47. package/lib/programmers/MessageProgrammer.js.map +1 -1
  48. package/lib/programmers/StringifyProgrammer.js +6 -1
  49. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  50. package/lib/programmers/ValidateParseProgrammer.js +12 -1
  51. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  52. package/lib/programmers/ValidateProgrammer.js +3 -2
  53. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  54. package/lib/programmers/ValidateStringifyProgrammer.js +13 -2
  55. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  56. package/lib/programmers/helpers/OptionPredicator.d.ts +2 -1
  57. package/lib/programmers/helpers/OptionPredicator.js +8 -6
  58. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  59. package/lib/programmers/helpers/UnionExplorer.d.ts +23 -29
  60. package/lib/programmers/helpers/UnionExplorer.js +29 -41
  61. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  62. package/lib/programmers/internal/application_object.js +9 -9
  63. package/lib/programmers/internal/application_object.js.map +1 -1
  64. package/lib/programmers/internal/application_schema.js +14 -6
  65. package/lib/programmers/internal/application_schema.js.map +1 -1
  66. package/lib/programmers/internal/check_array.js +4 -32
  67. package/lib/programmers/internal/check_array.js.map +1 -1
  68. package/lib/programmers/internal/check_array_length.d.ts +1 -0
  69. package/lib/programmers/internal/check_array_length.js +47 -0
  70. package/lib/programmers/internal/check_array_length.js.map +1 -0
  71. package/lib/programmers/internal/check_bigint.d.ts +3 -0
  72. package/lib/programmers/internal/check_bigint.js +97 -0
  73. package/lib/programmers/internal/check_bigint.js.map +1 -0
  74. package/lib/programmers/internal/check_number.js +21 -23
  75. package/lib/programmers/internal/check_number.js.map +1 -1
  76. package/lib/programmers/internal/check_union_array_like.d.ts +21 -0
  77. package/lib/programmers/internal/check_union_array_like.js +83 -0
  78. package/lib/programmers/internal/check_union_array_like.js.map +1 -0
  79. package/lib/programmers/internal/check_union_tuple.d.ts +1 -0
  80. package/lib/programmers/internal/check_union_tuple.js +11 -0
  81. package/lib/programmers/internal/check_union_tuple.js.map +1 -0
  82. package/lib/schemas/IJsonSchema.d.ts +3 -5
  83. package/lib/transformers/ITransformOptions.d.ts +43 -2
  84. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +5 -3
  85. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
  86. package/lib/transformers/features/stringifiers/StringifyTransformer.js +12 -1
  87. package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
  88. package/lib/utils/NameEncoder.d.ts +4 -0
  89. package/lib/utils/NameEncoder.js +89 -0
  90. package/lib/utils/NameEncoder.js.map +1 -0
  91. package/package.json +6 -5
  92. package/src/executable/internal/TypiaSetupWizard.ts +37 -24
  93. package/src/executable/typia.ts +7 -5
  94. package/src/factories/MetadataCollection.ts +2 -43
  95. package/src/factories/MetadataTagFactory.ts +5 -1
  96. package/src/factories/ProtocolFactory.ts +0 -5
  97. package/src/factories/internal/metadata/iterate_metadata_object.ts +6 -3
  98. package/src/factories/internal/protocols/iterate_protocol_main.ts +2 -3
  99. package/src/factories/internal/protocols/iterate_protocol_map.ts +3 -5
  100. package/src/factories/internal/protocols/iterate_protocol_metadata.ts +1 -0
  101. package/src/factories/internal/protocols/iterate_protocol_repeated.ts +3 -6
  102. package/src/factories/internal/protocols/iterate_protocol_tuple.ts +3 -6
  103. package/src/functional/$number.ts +2 -9
  104. package/src/metadata/Metadata.ts +10 -7
  105. package/src/programmers/AssertParseProgrammer.ts +11 -1
  106. package/src/programmers/AssertProgrammer.ts +4 -3
  107. package/src/programmers/AssertStringifyProgrammer.ts +22 -2
  108. package/src/programmers/CheckerProgrammer.ts +258 -200
  109. package/src/programmers/IsParseProgrammer.ts +11 -1
  110. package/src/programmers/IsProgrammer.ts +5 -2
  111. package/src/programmers/IsStringifyProgrammer.ts +22 -2
  112. package/src/programmers/MessageProgrammer.ts +12 -6
  113. package/src/programmers/StringifyProgrammer.ts +7 -1
  114. package/src/programmers/ValidateParseProgrammer.ts +11 -1
  115. package/src/programmers/ValidateProgrammer.ts +3 -2
  116. package/src/programmers/ValidateStringifyProgrammer.ts +22 -2
  117. package/src/programmers/helpers/OptionPredicator.ts +7 -10
  118. package/src/programmers/helpers/UnionExplorer.ts +75 -238
  119. package/src/programmers/internal/application_default.ts +1 -1
  120. package/src/programmers/internal/application_object.ts +5 -5
  121. package/src/programmers/internal/application_schema.ts +20 -5
  122. package/src/programmers/internal/check_array.ts +3 -25
  123. package/src/programmers/internal/check_array_length.ts +45 -0
  124. package/src/programmers/internal/check_bigint.ts +85 -0
  125. package/src/programmers/internal/check_number.ts +45 -51
  126. package/src/programmers/internal/check_union_array_like.ts +242 -0
  127. package/src/programmers/internal/check_union_tuple.ts +33 -0
  128. package/src/schemas/IJsonSchema.ts +4 -6
  129. package/src/transformers/ITransformOptions.ts +45 -2
  130. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +7 -3
  131. package/src/transformers/features/stringifiers/StringifyTransformer.ts +11 -1
  132. package/src/utils/NameEncoder.ts +32 -0
  133. package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.d.ts +0 -5
  134. package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.js +0 -29
  135. package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.js.map +0 -1
  136. package/src/transformers/features/miscellaneous/CreateInstanceTransformer.ts +0 -41
@@ -2,17 +2,14 @@ import { Metadata } from "../../../metadata/Metadata";
2
2
  import { MetadataObject } from "../../../metadata/MetadataObject";
3
3
 
4
4
  import { IProtocolMessage } from "../../../messages/IProtocolMessage";
5
- import { MetadataCollection } from "../../MetadataCollection";
6
5
  import { ProtocolMetadataUtil } from "./ProtocolMetadataUtil";
7
6
  import { emplace_protocol_object } from "./emplace_protocol_object";
8
7
 
9
8
  export const iterate_protocol_tuple =
10
9
  (dict: Map<string, IProtocolMessage>) =>
11
10
  (tuple: Metadata[]): string => {
12
- const name: string = MetadataCollection.replace(
13
- `[${tuple.map((m) => m.getName()).join(", ")}]`,
14
- );
15
- if (dict.has(name)) return MetadataCollection.escape(name);
11
+ const name: string = `[${tuple.map((m) => m.getName()).join(", ")}]`;
12
+ if (dict.has(name)) return name;
16
13
 
17
14
  const obj: MetadataObject = ProtocolMetadataUtil.object(
18
15
  name,
@@ -24,5 +21,5 @@ export const iterate_protocol_tuple =
24
21
  ),
25
22
  );
26
23
  emplace_protocol_object(dict)(obj);
27
- return MetadataCollection.escape(obj.name);
24
+ return obj.name;
28
25
  };
@@ -1,19 +1,12 @@
1
1
  import { TypeGuardError } from "../TypeGuardError";
2
2
 
3
3
  export function $number(value: number): number {
4
- if (!isFinite(value))
4
+ if (isFinite(value) === false)
5
5
  throw new TypeGuardError({
6
6
  method: "typia.stringify",
7
7
  expected: "number",
8
8
  value,
9
- message: "Error on typia.stringify(): infinite number.",
10
- });
11
- else if (isNaN(value))
12
- throw new TypeGuardError({
13
- method: "typia.stringify",
14
- expected: "number",
15
- value,
16
- message: "Error on typia.stringify(): not a valid number.",
9
+ message: "Error on typia.stringify(): infinite or not a number.",
17
10
  });
18
11
  return value;
19
12
  }
@@ -315,7 +315,9 @@ export namespace Metadata {
315
315
  // TUPLES
316
316
  for (const xt of x.tuples)
317
317
  for (const yt of y.tuples)
318
- if (
318
+ if (xt.length === 0 || yt.length === 0)
319
+ return xt.length === 0 && yt.length === 0;
320
+ else if (
319
321
  xt
320
322
  .slice(0, Math.min(xt.length, yt.length))
321
323
  .some((xv, i) => intersects(xv, yt[i]!, deep))
@@ -371,6 +373,7 @@ export namespace Metadata {
371
373
  // TUPLES
372
374
  for (const yt of y.tuples)
373
375
  if (
376
+ yt.length !== 0 &&
374
377
  x.tuples.some(
375
378
  (xt) =>
376
379
  xt.length >= yt.length &&
@@ -447,6 +450,12 @@ function getName(metadata: Metadata): string {
447
450
  "`",
448
451
  );
449
452
 
453
+ // NATIVES
454
+ for (const native of metadata.natives) elements.push(native);
455
+ for (const set of metadata.sets) elements.push(`Set<${set.getName()}>`);
456
+ for (const map of metadata.maps)
457
+ elements.push(`Map<${map.key.getName()}, ${map.value.getName()}>`);
458
+
450
459
  // ARRAY
451
460
  if (metadata.rest !== null) elements.push(`...${metadata.rest.getName()}`);
452
461
  for (const tuple of metadata.tuples)
@@ -458,12 +467,6 @@ function getName(metadata: Metadata): string {
458
467
  for (const object of metadata.objects) elements.push(object.name);
459
468
  if (metadata.resolved !== null) elements.push(metadata.resolved.getName());
460
469
 
461
- // NATIVES
462
- for (const native of metadata.natives) elements.push(native);
463
- for (const set of metadata.sets) elements.push(`Set<${set.getName()}>`);
464
- for (const map of metadata.maps)
465
- elements.push(`Map<${map.key.getName()}, ${map.value.getName()}>`);
466
-
467
470
  // RETURNS
468
471
  if (elements.length === 0) return "unknown";
469
472
  else if (elements.length === 1) return elements[0]!;
@@ -20,7 +20,17 @@ export namespace AssertParseProgrammer {
20
20
  ts.factory.createBlock([
21
21
  StatementFactory.constant(
22
22
  "assert",
23
- AssertProgrammer.generate(project, modulo)(type),
23
+ AssertProgrammer.generate(
24
+ {
25
+ ...project,
26
+ options: {
27
+ ...project.options,
28
+ functional: false,
29
+ numeric: false,
30
+ },
31
+ },
32
+ modulo,
33
+ )(type),
24
34
  ),
25
35
  ts.factory.createExpressionStatement(
26
36
  ts.factory.createBinaryExpression(
@@ -8,6 +8,7 @@ import { IProject } from "../transformers/IProject";
8
8
  import { CheckerProgrammer } from "./CheckerProgrammer";
9
9
  import { IsProgrammer } from "./IsProgrammer";
10
10
  import { FunctionImporter } from "./helpers/FunctionImporeter";
11
+ import { OptionPredicator } from "./helpers/OptionPredicator";
11
12
  import { check_object } from "./internal/check_object";
12
13
 
13
14
  // /* -----------------------------------------------------------
@@ -31,7 +32,7 @@ import { check_object } from "./internal/check_object";
31
32
  // unioners: "$au",
32
33
  // path: true,
33
34
  // trace: true,
34
- // numeric: !!project.options.numeric,
35
+ // numeric: OptionPredicator.numeric(project.options),
35
36
  // equals,
36
37
  // combiner,
37
38
  // joiner: joiner(equals)(importer),
@@ -237,7 +238,7 @@ export namespace AssertProgrammer {
237
238
  unioners: "$au",
238
239
  path: true,
239
240
  trace: true,
240
- numeric: !!project.options.numeric,
241
+ numeric: OptionPredicator.numeric(project.options),
241
242
  equals,
242
243
  combiner: combiner(equals)(importer),
243
244
  joiner: joiner(equals)(importer),
@@ -279,7 +280,7 @@ export namespace AssertProgrammer {
279
280
  (equals: boolean) =>
280
281
  (importer: FunctionImporter): CheckerProgrammer.IConfig.Combiner =>
281
282
  (explore: CheckerProgrammer.IExplore) => {
282
- if (explore.tracable === false && explore.from !== "top")
283
+ if (explore.tracable === false)
283
284
  return IsProgrammer.CONFIG({
284
285
  object: assert_object(equals)(importer),
285
286
  numeric: true,
@@ -21,11 +21,31 @@ export namespace AssertStringifyProgrammer {
21
21
  ts.factory.createBlock([
22
22
  StatementFactory.constant(
23
23
  "assert",
24
- AssertProgrammer.generate(project, modulo)(type),
24
+ AssertProgrammer.generate(
25
+ {
26
+ ...project,
27
+ options: {
28
+ ...project.options,
29
+ functional: false,
30
+ numeric: true,
31
+ },
32
+ },
33
+ modulo,
34
+ )(type),
25
35
  ),
26
36
  StatementFactory.constant(
27
37
  "stringify",
28
- StringifyProgrammer.generate(project, modulo)(type),
38
+ StringifyProgrammer.generate(
39
+ {
40
+ ...project,
41
+ options: {
42
+ ...project.options,
43
+ functional: false,
44
+ numeric: false,
45
+ },
46
+ },
47
+ modulo,
48
+ )(type),
29
49
  ),
30
50
  ts.factory.createReturnStatement(
31
51
  ts.factory.createCallExpression(