typia 6.7.3-dev.20240808 → 6.8.0-dev.20240811

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 (109) hide show
  1. package/lib/factories/TypeFactory.d.ts +0 -2
  2. package/lib/factories/TypeFactory.js +4 -83
  3. package/lib/factories/TypeFactory.js.map +1 -1
  4. package/lib/factories/internal/metadata/emplace_metadata_array_type.js +1 -5
  5. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
  6. package/lib/factories/internal/metadata/emplace_metadata_object.js +3 -4
  7. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  8. package/lib/factories/internal/metadata/iterate_metadata.js +1 -2
  9. package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
  10. package/lib/factories/internal/metadata/iterate_metadata_array.js +1 -2
  11. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  12. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +1 -1
  13. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  14. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js +1 -1
  15. package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
  16. package/lib/factories/internal/metadata/iterate_metadata_constant.js +2 -3
  17. package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
  18. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +2 -3
  19. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  20. package/lib/factories/internal/metadata/iterate_metadata_map.js +1 -1
  21. package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
  22. package/lib/factories/internal/metadata/iterate_metadata_native.js +1 -1
  23. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  24. package/lib/factories/internal/metadata/iterate_metadata_object.js +2 -3
  25. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  26. package/lib/factories/internal/metadata/iterate_metadata_set.js +1 -1
  27. package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_template.js +1 -1
  29. package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_union.js +1 -2
  31. package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
  32. package/lib/programmers/internal/application_bigint.d.ts +1 -0
  33. package/lib/programmers/internal/application_bigint.js +14 -0
  34. package/lib/programmers/internal/application_bigint.js.map +1 -0
  35. package/lib/programmers/internal/application_v30_schema.js +10 -12
  36. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  37. package/lib/programmers/internal/application_v31_constant.js +3 -1
  38. package/lib/programmers/internal/application_v31_constant.js.map +1 -1
  39. package/lib/programmers/internal/application_v31_schema.js +10 -12
  40. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  41. package/lib/tags/Constant.d.ts +2 -2
  42. package/lib/tags/Default.d.ts +5 -1
  43. package/lib/tags/ExclusiveMaximum.d.ts +9 -5
  44. package/lib/tags/ExclusiveMinimum.d.ts +9 -5
  45. package/lib/tags/JsonSchemaPlugin.d.ts +1 -1
  46. package/lib/tags/Maximum.d.ts +8 -5
  47. package/lib/tags/Minimum.d.ts +8 -5
  48. package/lib/tags/MultipleOf.d.ts +7 -4
  49. package/lib/transformers/features/CreateRandomTransformer.js +1 -2
  50. package/lib/transformers/features/CreateRandomTransformer.js.map +1 -1
  51. package/lib/transformers/features/RandomTransformer.js +1 -2
  52. package/lib/transformers/features/RandomTransformer.js.map +1 -1
  53. package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -5
  54. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  55. package/lib/transformers/features/misc/MiscLiteralsTransformer.js +1 -2
  56. package/lib/transformers/features/misc/MiscLiteralsTransformer.js.map +1 -1
  57. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js +1 -2
  58. package/lib/transformers/features/protobuf/ProtobufMessageTransformer.js.map +1 -1
  59. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +1 -2
  60. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  61. package/lib/transformers/internal/GenericTransformer.js +2 -3
  62. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  63. package/package.json +2 -2
  64. package/src/factories/CommentFactory.ts +79 -79
  65. package/src/factories/MetadataCollection.ts +274 -274
  66. package/src/factories/MetadataFactory.ts +272 -272
  67. package/src/factories/TypeFactory.ts +118 -190
  68. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +42 -42
  69. package/src/factories/internal/metadata/emplace_metadata_object.ts +176 -179
  70. package/src/factories/internal/metadata/iterate_metadata.ts +94 -96
  71. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -64
  72. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  73. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  74. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -77
  75. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +213 -214
  76. package/src/factories/internal/metadata/iterate_metadata_map.ts +50 -50
  77. package/src/factories/internal/metadata/iterate_metadata_native.ts +220 -217
  78. package/src/factories/internal/metadata/iterate_metadata_object.ts +33 -34
  79. package/src/factories/internal/metadata/iterate_metadata_set.ts +41 -41
  80. package/src/factories/internal/metadata/iterate_metadata_template.ts +44 -44
  81. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -29
  82. package/src/programmers/internal/application_bigint.ts +25 -0
  83. package/src/programmers/internal/application_v30_alias.ts +52 -52
  84. package/src/programmers/internal/application_v30_object.ts +149 -149
  85. package/src/programmers/internal/application_v30_schema.ts +162 -159
  86. package/src/programmers/internal/application_v30_tuple.ts +33 -33
  87. package/src/programmers/internal/application_v31_constant.ts +4 -1
  88. package/src/programmers/internal/application_v31_schema.ts +159 -157
  89. package/src/programmers/json/JsonApplicationProgrammer.ts +82 -82
  90. package/src/tags/Constant.ts +2 -2
  91. package/src/tags/Default.ts +7 -3
  92. package/src/tags/ExclusiveMaximum.ts +12 -6
  93. package/src/tags/ExclusiveMinimum.ts +12 -6
  94. package/src/tags/JsonSchemaPlugin.ts +1 -1
  95. package/src/tags/Maximum.ts +9 -8
  96. package/src/tags/Minimum.ts +9 -8
  97. package/src/tags/MultipleOf.ts +9 -8
  98. package/src/transformers/FileTransformer.ts +91 -91
  99. package/src/transformers/features/CreateRandomTransformer.ts +40 -42
  100. package/src/transformers/features/RandomTransformer.ts +44 -46
  101. package/src/transformers/features/json/JsonApplicationTransformer.ts +124 -126
  102. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -34
  103. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -35
  104. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +62 -64
  105. package/src/transformers/internal/GenericTransformer.ts +2 -4
  106. package/lib/utils/TypePredicator.d.ts +0 -10
  107. package/lib/utils/TypePredicator.js +0 -36
  108. package/lib/utils/TypePredicator.js.map +0 -1
  109. package/src/utils/TypePredicator.ts +0 -32
@@ -1 +1 @@
1
- {"version":3,"file":"GenericTransformer.js","sourceRoot":"","sources":["../../../src/transformers/internal/GenericTransformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericTransformer.js","sourceRoot":"","sources":["../../../src/transformers/internal/GenericTransformer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAG5B,wDAAuD;AAEvD,IAAiB,kBAAkB,CAkGlC;AAlGD,WAAiB,kBAAkB;IACpB,yBAAM,GACjB,UAAC,MAAc;QACf,OAAA,UACE,UAIsE;YAExE,OAAA,UAAC,OAAiB;gBAClB,OAAA,UAAC,MAAiC;oBAClC,OAAA,UAAC,UAA6B;wBAC5B,kBAAkB;wBAClB,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;4BACnC,MAAM,IAAI,mCAAgB,CAAC;gCACzB,IAAI,EAAE,gBAAS,MAAM,CAAE;gCACvB,OAAO,EAAE,iBAAiB;6BAC3B,CAAC,CAAC;wBAEL,gBAAgB;wBACV,IAAA,KAAA,OACJ,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;4BACrD,CAAC,CAAC;gCACE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gCAChE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;gCAC3B,IAAI;6BACL;4BACH,CAAC,CAAC;gCACE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC;gCAC3D,UAAU,CAAC,SAAS,CAAC,CAAC,CAAE;gCACxB,KAAK;6BACN,IAAA,EAXA,IAAI,QAAA,EAAE,IAAI,QAAA,EAAE,OAAO,QAWnB,CAAC;wBACR,IAAI,IAAI,CAAC,eAAe,EAAE;4BACxB,MAAM,IAAI,mCAAgB,CAAC;gCACzB,IAAI,EAAE,gBAAS,MAAM,CAAE;gCACvB,OAAO,EAAE,iCAAiC;6BAC3C,CAAC,CAAC;wBAEL,eAAe;wBACf,OAAO,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CACpC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CACzB,IAAI,EACJ,OAAO;4BACL,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;4BAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CACtC,EACD,SAAS,EACT,UAAU,CAAC,SAAS,CACrB,CAAC;oBACJ,CAAC;gBAtCD,CAsCC;YAvCD,CAuCC;QAxCD,CAwCC;IA/CD,CA+CC,CAAC;IAES,0BAAO,GAClB,UAAC,MAAc;QACf,OAAA,UACE,UAQqC;YAEvC,OAAA,UAAC,OAAiB;gBAClB,OAAA,UAAC,MAAiC;oBAClC,OAAA,UAAC,UAA6B;;wBAC5B,mCAAmC;wBACnC,IAAI,CAAC,CAAA,MAAA,UAAU,CAAC,aAAa,0CAAG,CAAC,CAAC,CAAA;4BAChC,MAAM,IAAI,mCAAgB,CAAC;gCACzB,IAAI,EAAE,gBAAS,MAAM,CAAE;gCACvB,OAAO,EAAE,oCAAoC;6BAC9C,CAAC,CAAC;wBAEL,gBAAgB;wBAChB,IAAM,IAAI,GAAgB,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;wBACtD,IAAM,IAAI,GAAY,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;wBAEhE,IAAI,IAAI,CAAC,eAAe,EAAE;4BACxB,MAAM,IAAI,mCAAgB,CAAC;gCACzB,IAAI,EAAE,gBAAS,MAAM,CAAE;gCACvB,OAAO,EAAE,iCAAiC;6BAC3C,CAAC,CAAC;wBAEL,eAAe;wBACf,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAChC,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EACzB,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CACxB,CAAC;oBACJ,CAAC;gBAxBD,CAwBC;YAzBD,CAyBC;QA1BD,CA0BC;IArCD,CAqCC,CAAC;IAEJ,IAAM,IAAI,GACR,UAAC,OAAuB;QACxB,OAAA,UAAC,IAAa;YACd,OAAA,UAAC,IAAa;gBACZ,OAAA,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAE,CAAC,eAAe,CAAC,oBAAoB,CAAC;YAAzE,CAAyE;QAD3E,CAC2E;IAF3E,CAE2E,CAAC;AAChF,CAAC,EAlGgB,kBAAkB,kCAAlB,kBAAkB,QAkGlC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typia",
3
- "version": "6.7.3-dev.20240808",
3
+ "version": "6.8.0-dev.20240811",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -67,7 +67,7 @@
67
67
  },
68
68
  "homepage": "https://typia.io",
69
69
  "dependencies": {
70
- "@samchon/openapi": "^0.4.3",
70
+ "@samchon/openapi": "^0.4.4",
71
71
  "commander": "^10.0.0",
72
72
  "comment-json": "^4.2.3",
73
73
  "inquirer": "^8.2.5",
@@ -1,79 +1,79 @@
1
- import ts from "typescript";
2
-
3
- export namespace CommentFactory {
4
- export const description = (
5
- symbol: ts.Symbol,
6
- includeTags: boolean = false,
7
- ): string | undefined => {
8
- const node = symbol.declarations?.[0];
9
- if (!node) return undefined;
10
-
11
- // FOR LEGACY TS < 5.2
12
- const [major, minor] = ts.versionMajorMinor.split(".").map(Number) as [
13
- number,
14
- number,
15
- ];
16
- if (major < 5 || (major === 5 && minor < 1)) {
17
- const content: string[] = [];
18
- const main: string = ts.displayPartsToString(
19
- symbol.getDocumentationComment(undefined),
20
- );
21
- if (main.length) {
22
- content.push(main);
23
- if (includeTags && symbol.getJsDocTags().length) content.push("");
24
- }
25
- if (includeTags)
26
- for (const tag of symbol.getJsDocTags()) {
27
- content.push(
28
- tag.text
29
- ? `@${tag.name} ${ts.displayPartsToString(tag.text)}`
30
- : `@${tag.name}`,
31
- );
32
- }
33
- return content.length
34
- ? content.map((line) => line.split("\r\n").join("\n")).join("\n")
35
- : undefined;
36
- }
37
-
38
- // NEW FEATURE OF TS 5.2
39
- const elements: readonly (ts.JSDoc | ts.JSDocTag)[] =
40
- ts.getJSDocCommentsAndTags(node);
41
- if (elements.length === 0) return undefined;
42
-
43
- const content: string[] = [];
44
- for (const comment of elements) {
45
- if (ts.isJSDoc(comment)) {
46
- const parsed: string | undefined = ts.getTextOfJSDocComment(
47
- comment.comment,
48
- );
49
- if (parsed?.length) {
50
- content.push(parsed);
51
- if (includeTags && comment.tags?.length) content.push("");
52
- }
53
- if (includeTags)
54
- for (const tag of comment.tags ?? [])
55
- content.push(parseJSDocTag(tag));
56
- } else if (includeTags) content.push(parseJSDocTag(comment));
57
- }
58
- const output: string = content
59
- .map((line) => line.split("\r\n").join("\n"))
60
- .join("\n");
61
- return output.length ? output : undefined;
62
- };
63
-
64
- export const merge = (comments: ts.SymbolDisplayPart[]): string =>
65
- comments
66
- .map((part) => part.text)
67
- .map((str) => str.split("\r\n").join("\n"))
68
- .join("");
69
- }
70
-
71
- const parseJSDocTag = (tag: ts.JSDocTag): string => {
72
- const name: string | undefined = (
73
- tag as ts.JSDocParameterTag
74
- ).name?.getText();
75
- const parsed: string | undefined = ts.getTextOfJSDocComment(tag.comment);
76
- return [`@${tag.tagName.text}`, name, parsed]
77
- .filter((str) => !!str?.length)
78
- .join(" ");
79
- };
1
+ import ts from "typescript";
2
+
3
+ export namespace CommentFactory {
4
+ export const description = (
5
+ symbol: ts.Symbol,
6
+ includeTags: boolean = false,
7
+ ): string | undefined => {
8
+ const node = symbol.declarations?.[0];
9
+ if (!node) return undefined;
10
+
11
+ // FOR LEGACY TS < 5.2
12
+ const [major, minor] = ts.versionMajorMinor.split(".").map(Number) as [
13
+ number,
14
+ number,
15
+ ];
16
+ if (major < 5 || (major === 5 && minor < 1)) {
17
+ const content: string[] = [];
18
+ const main: string = ts.displayPartsToString(
19
+ symbol.getDocumentationComment(undefined),
20
+ );
21
+ if (main.length) {
22
+ content.push(main);
23
+ if (includeTags && symbol.getJsDocTags().length) content.push("");
24
+ }
25
+ if (includeTags)
26
+ for (const tag of symbol.getJsDocTags()) {
27
+ content.push(
28
+ tag.text
29
+ ? `@${tag.name} ${ts.displayPartsToString(tag.text)}`
30
+ : `@${tag.name}`,
31
+ );
32
+ }
33
+ return content.length
34
+ ? content.map((line) => line.split("\r\n").join("\n")).join("\n")
35
+ : undefined;
36
+ }
37
+
38
+ // NEW FEATURE OF TS 5.2
39
+ const elements: readonly (ts.JSDoc | ts.JSDocTag)[] =
40
+ ts.getJSDocCommentsAndTags(node);
41
+ if (elements.length === 0) return undefined;
42
+
43
+ const content: string[] = [];
44
+ for (const comment of elements) {
45
+ if (ts.isJSDoc(comment)) {
46
+ const parsed: string | undefined = ts.getTextOfJSDocComment(
47
+ comment.comment,
48
+ );
49
+ if (parsed?.length) {
50
+ content.push(parsed);
51
+ if (includeTags && comment.tags?.length) content.push("");
52
+ }
53
+ if (includeTags)
54
+ for (const tag of comment.tags ?? [])
55
+ content.push(parseJSDocTag(tag));
56
+ } else if (includeTags) content.push(parseJSDocTag(comment));
57
+ }
58
+ const output: string = content
59
+ .map((line) => line.split("\r\n").join("\n"))
60
+ .join("\n");
61
+ return output.length ? output : undefined;
62
+ };
63
+
64
+ export const merge = (comments: ts.SymbolDisplayPart[]): string =>
65
+ comments
66
+ .map((part) => part.text)
67
+ .map((str) => str.split("\r\n").join("\n"))
68
+ .join("");
69
+ }
70
+
71
+ const parseJSDocTag = (tag: ts.JSDocTag): string => {
72
+ const name: string | undefined = (
73
+ tag as ts.JSDocParameterTag
74
+ ).name?.getText();
75
+ const parsed: string | undefined = ts.getTextOfJSDocComment(tag.comment);
76
+ return [`@${tag.tagName.text}`, name, parsed]
77
+ .filter((str) => !!str?.length)
78
+ .join(" ");
79
+ };