typia 7.0.0-dev.20240929 → 7.0.0-dev.20241001

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 (172) hide show
  1. package/lib/index.mjs +25 -25
  2. package/lib/index.mjs.map +1 -1
  3. package/lib/programmers/AssertProgrammer.js +34 -27
  4. package/lib/programmers/AssertProgrammer.js.map +1 -1
  5. package/lib/programmers/CheckerProgrammer.d.ts +5 -1
  6. package/lib/programmers/CheckerProgrammer.js +432 -348
  7. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  8. package/lib/programmers/FeatureProgrammer.d.ts +91 -28
  9. package/lib/programmers/FeatureProgrammer.js +165 -138
  10. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  11. package/lib/programmers/IsProgrammer.d.ts +5 -1
  12. package/lib/programmers/IsProgrammer.js +87 -66
  13. package/lib/programmers/IsProgrammer.js.map +1 -1
  14. package/lib/programmers/RandomProgrammer.js +83 -68
  15. package/lib/programmers/RandomProgrammer.js.map +1 -1
  16. package/lib/programmers/TypiaProgrammer.d.ts +2 -2
  17. package/lib/programmers/TypiaProgrammer.js +79 -75
  18. package/lib/programmers/TypiaProgrammer.js.map +1 -1
  19. package/lib/programmers/ValidateProgrammer.js +45 -19
  20. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  21. package/lib/programmers/helpers/CloneJoiner.js +4 -1
  22. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  23. package/lib/programmers/helpers/NotationJoiner.d.ts +2 -1
  24. package/lib/programmers/helpers/NotationJoiner.js +34 -33
  25. package/lib/programmers/helpers/NotationJoiner.js.map +1 -1
  26. package/lib/programmers/helpers/PruneJoiner.js +4 -1
  27. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  28. package/lib/programmers/helpers/RandomJoiner.d.ts +1 -1
  29. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  30. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  31. package/lib/programmers/helpers/StringifyJoinder.js +4 -1
  32. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  33. package/lib/programmers/helpers/StringifyPredicator.d.ts +1 -1
  34. package/lib/programmers/helpers/StringifyPredicator.js +4 -3
  35. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  36. package/lib/programmers/helpers/UnionExplorer.d.ts +52 -12
  37. package/lib/programmers/helpers/UnionExplorer.js +184 -120
  38. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  39. package/lib/programmers/helpers/UnionPredicator.d.ts +1 -1
  40. package/lib/programmers/helpers/UnionPredicator.js +7 -7
  41. package/lib/programmers/http/HttpFormDataProgrammer.js +77 -70
  42. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  43. package/lib/programmers/http/HttpHeadersProgrammer.js +69 -68
  44. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  45. package/lib/programmers/http/HttpQueryProgrammer.js +69 -62
  46. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  47. package/lib/programmers/internal/application_escaped.js +4 -4
  48. package/lib/programmers/internal/application_escaped.js.map +1 -1
  49. package/lib/programmers/internal/application_templates.js +8 -2
  50. package/lib/programmers/internal/application_templates.js.map +1 -1
  51. package/lib/programmers/internal/application_union_discriminator.d.ts +1 -1
  52. package/lib/programmers/internal/application_union_discriminator.js +6 -6
  53. package/lib/programmers/internal/application_union_discriminator.js.map +1 -1
  54. package/lib/programmers/internal/application_v30_object.js +6 -3
  55. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  56. package/lib/programmers/internal/application_v31_object.js +4 -1
  57. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  58. package/lib/programmers/internal/check_array_length.js +21 -26
  59. package/lib/programmers/internal/check_array_length.js.map +1 -1
  60. package/lib/programmers/internal/check_bigint.js +18 -26
  61. package/lib/programmers/internal/check_bigint.js.map +1 -1
  62. package/lib/programmers/internal/check_dynamic_key.d.ts +1 -5
  63. package/lib/programmers/internal/check_dynamic_key.js +109 -91
  64. package/lib/programmers/internal/check_dynamic_key.js.map +1 -1
  65. package/lib/programmers/internal/check_dynamic_properties.js +88 -90
  66. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  67. package/lib/programmers/internal/check_native.js +8 -5
  68. package/lib/programmers/internal/check_native.js.map +1 -1
  69. package/lib/programmers/internal/check_number.js +59 -65
  70. package/lib/programmers/internal/check_number.js.map +1 -1
  71. package/lib/programmers/internal/check_object.js +31 -22
  72. package/lib/programmers/internal/check_object.js.map +1 -1
  73. package/lib/programmers/internal/check_string.js +18 -26
  74. package/lib/programmers/internal/check_string.js.map +1 -1
  75. package/lib/programmers/internal/check_template.js +20 -21
  76. package/lib/programmers/internal/check_template.js.map +1 -1
  77. package/lib/programmers/internal/check_union_array_like.js +68 -53
  78. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  79. package/lib/programmers/internal/decode_union_object.js +59 -49
  80. package/lib/programmers/internal/decode_union_object.js.map +1 -1
  81. package/lib/programmers/internal/feature_object_entries.js +31 -33
  82. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  83. package/lib/programmers/internal/llm_schema_escaped.js +29 -11
  84. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -1
  85. package/lib/programmers/internal/llm_schema_object.js +4 -1
  86. package/lib/programmers/internal/llm_schema_object.js.map +1 -1
  87. package/lib/programmers/internal/metadata_to_pattern.js +44 -41
  88. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  89. package/lib/programmers/internal/postfix_of_tuple.d.ts +1 -1
  90. package/lib/programmers/internal/postfix_of_tuple.js +3 -0
  91. package/lib/programmers/internal/postfix_of_tuple.js.map +1 -1
  92. package/lib/programmers/internal/prune_object_properties.js +6 -3
  93. package/lib/programmers/internal/prune_object_properties.js.map +1 -1
  94. package/lib/programmers/internal/random_custom.js +8 -14
  95. package/lib/programmers/internal/random_custom.js.map +1 -1
  96. package/lib/programmers/internal/stringify_dynamic_properties.js +4 -1
  97. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  98. package/lib/programmers/internal/stringify_regular_properties.js +4 -4
  99. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  100. package/lib/programmers/internal/template_to_pattern.js +10 -5
  101. package/lib/programmers/internal/template_to_pattern.js.map +1 -1
  102. package/lib/programmers/internal/wrap_metadata_rest_tuple.d.ts +1 -2
  103. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +3 -0
  104. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  105. package/lib/programmers/json/JsonStringifyProgrammer.js +154 -91
  106. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  107. package/lib/programmers/misc/MiscCloneProgrammer.js +221 -154
  108. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  109. package/lib/programmers/misc/MiscPruneProgrammer.js +139 -89
  110. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  111. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +4 -1
  112. package/lib/programmers/notations/NotationGeneralProgrammer.js +257 -148
  113. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  114. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +32 -24
  115. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  116. package/lib/utils/NamingConvention/NamingConvention.js +41 -47
  117. package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
  118. package/package.json +1 -1
  119. package/src/programmers/AssertProgrammer.ts +44 -37
  120. package/src/programmers/CheckerProgrammer.ts +394 -358
  121. package/src/programmers/FeatureProgrammer.ts +327 -267
  122. package/src/programmers/IsProgrammer.ts +93 -76
  123. package/src/programmers/RandomProgrammer.ts +18 -9
  124. package/src/programmers/TypiaProgrammer.ts +48 -34
  125. package/src/programmers/ValidateProgrammer.ts +56 -29
  126. package/src/programmers/helpers/CloneJoiner.ts +4 -1
  127. package/src/programmers/helpers/NotationJoiner.ts +85 -83
  128. package/src/programmers/helpers/ProtobufUtil.ts +2 -2
  129. package/src/programmers/helpers/PruneJoiner.ts +4 -1
  130. package/src/programmers/helpers/RandomJoiner.ts +5 -2
  131. package/src/programmers/helpers/RandomRanger.ts +8 -1
  132. package/src/programmers/helpers/StringifyJoinder.ts +4 -1
  133. package/src/programmers/helpers/StringifyPredicator.ts +4 -3
  134. package/src/programmers/helpers/UnionExplorer.ts +277 -179
  135. package/src/programmers/helpers/UnionPredicator.ts +5 -5
  136. package/src/programmers/http/HttpFormDataProgrammer.ts +135 -114
  137. package/src/programmers/http/HttpHeadersProgrammer.ts +145 -120
  138. package/src/programmers/http/HttpQueryProgrammer.ts +137 -116
  139. package/src/programmers/internal/application_escaped.ts +6 -6
  140. package/src/programmers/internal/application_templates.ts +8 -6
  141. package/src/programmers/internal/application_union_discriminator.ts +6 -6
  142. package/src/programmers/internal/application_v30_object.ts +6 -3
  143. package/src/programmers/internal/application_v31_object.ts +4 -1
  144. package/src/programmers/internal/application_v31_tuple.ts +1 -1
  145. package/src/programmers/internal/check_array_length.ts +31 -30
  146. package/src/programmers/internal/check_bigint.ts +31 -31
  147. package/src/programmers/internal/check_dynamic_key.ts +155 -126
  148. package/src/programmers/internal/check_dynamic_properties.ts +152 -154
  149. package/src/programmers/internal/check_native.ts +11 -5
  150. package/src/programmers/internal/check_number.ts +88 -84
  151. package/src/programmers/internal/check_object.ts +45 -31
  152. package/src/programmers/internal/check_string.ts +31 -30
  153. package/src/programmers/internal/check_template.ts +34 -32
  154. package/src/programmers/internal/check_union_array_like.ts +245 -228
  155. package/src/programmers/internal/decode_union_object.ts +92 -75
  156. package/src/programmers/internal/feature_object_entries.ts +36 -36
  157. package/src/programmers/internal/llm_schema_escaped.ts +36 -13
  158. package/src/programmers/internal/llm_schema_object.ts +4 -1
  159. package/src/programmers/internal/metadata_to_pattern.ts +31 -23
  160. package/src/programmers/internal/postfix_of_tuple.ts +3 -0
  161. package/src/programmers/internal/prune_object_properties.ts +6 -3
  162. package/src/programmers/internal/random_custom.ts +24 -23
  163. package/src/programmers/internal/stringify_dynamic_properties.ts +4 -1
  164. package/src/programmers/internal/stringify_regular_properties.ts +7 -7
  165. package/src/programmers/internal/template_to_pattern.ts +12 -4
  166. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +3 -0
  167. package/src/programmers/json/JsonStringifyProgrammer.ts +151 -104
  168. package/src/programmers/misc/MiscCloneProgrammer.ts +255 -204
  169. package/src/programmers/misc/MiscPruneProgrammer.ts +149 -116
  170. package/src/programmers/notations/NotationGeneralProgrammer.ts +307 -211
  171. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +25 -21
  172. package/src/utils/NamingConvention/NamingConvention.ts +40 -42
@@ -10,103 +10,105 @@ import { metadata_to_pattern } from "../internal/metadata_to_pattern";
10
10
  import { IExpressionEntry } from "./IExpressionEntry";
11
11
 
12
12
  export namespace NotationJoiner {
13
- export const object =
14
- (rename: (str: string) => string) =>
15
- (props: {
16
- input: ts.Expression;
17
- entries: IExpressionEntry<ts.Expression>[];
18
- }): ts.ConciseBody => {
19
- if (props.entries.length === 0) return ts.factory.createIdentifier("{}");
13
+ export const object = (props: {
14
+ rename: (str: string) => string;
15
+ input: ts.Expression;
16
+ entries: IExpressionEntry<ts.Expression>[];
17
+ }): ts.ConciseBody => {
18
+ if (props.entries.length === 0) return ts.factory.createIdentifier("{}");
20
19
 
21
- const regular = props.entries.filter((e) => e.key.isSoleLiteral());
22
- const dynamic = props.entries.filter((e) => !e.key.isSoleLiteral());
23
- const literal = ts.factory.createObjectLiteralExpression(
24
- regular.map((entry) => {
25
- const str: string = rename(entry.key.getSoleLiteral()!);
26
- return ts.factory.createPropertyAssignment(
27
- Escaper.variable(str) ? str : ts.factory.createStringLiteral(str),
28
- entry.expression,
29
- );
30
- }),
31
- true,
32
- );
33
- if (dynamic.length === 0) return literal;
20
+ const regular = props.entries.filter((e) => e.key.isSoleLiteral());
21
+ const dynamic = props.entries.filter((e) => !e.key.isSoleLiteral());
22
+ const literal = ts.factory.createObjectLiteralExpression(
23
+ regular.map((entry) => {
24
+ const str: string = props.rename(entry.key.getSoleLiteral()!);
25
+ return ts.factory.createPropertyAssignment(
26
+ Escaper.variable(str) ? str : ts.factory.createStringLiteral(str),
27
+ entry.expression,
28
+ );
29
+ }),
30
+ true,
31
+ );
32
+ if (dynamic.length === 0) return literal;
34
33
 
35
- const key = ts.factory.createIdentifier("key");
36
- const output = ts.factory.createIdentifier("output");
34
+ const key = ts.factory.createIdentifier("key");
35
+ const output = ts.factory.createIdentifier("output");
37
36
 
38
- const statements: ts.Statement[] = [];
39
- if (regular.length !== 0)
40
- statements.push(
41
- ts.factory.createIfStatement(
42
- ts.factory.createCallExpression(
43
- IdentifierFactory.access(
44
- ts.factory.createArrayLiteralExpression(
45
- regular.map((r) =>
46
- ts.factory.createStringLiteral(r.key.getSoleLiteral()!),
47
- ),
48
- ),
49
- )("some"),
50
- undefined,
51
- [
52
- ts.factory.createArrowFunction(
53
- undefined,
54
- undefined,
55
- [IdentifierFactory.parameter("regular")],
56
- undefined,
57
- undefined,
58
- ts.factory.createStrictEquality(
59
- ts.factory.createIdentifier("regular"),
60
- ts.factory.createIdentifier("key"),
61
- ),
62
- ),
63
- ],
64
- ),
65
- ts.factory.createContinueStatement(),
66
- ),
67
- );
37
+ const statements: ts.Statement[] = [];
38
+ if (regular.length !== 0)
68
39
  statements.push(
69
- ...dynamic.map((entry) =>
70
- ts.factory.createIfStatement(
71
- ts.factory.createCallExpression(
72
- ts.factory.createIdentifier(
73
- `RegExp(/${metadata_to_pattern(true)(entry.key)}/).test`,
40
+ ts.factory.createIfStatement(
41
+ ts.factory.createCallExpression(
42
+ IdentifierFactory.access(
43
+ ts.factory.createArrayLiteralExpression(
44
+ regular.map((r) =>
45
+ ts.factory.createStringLiteral(r.key.getSoleLiteral()!),
46
+ ),
74
47
  ),
75
- undefined,
76
- [key],
77
- ),
78
- ts.factory.createBlock([
79
- ts.factory.createExpressionStatement(
80
- ts.factory.createBinaryExpression(
81
- ts.factory.createElementAccessExpression(output, key),
82
- ts.factory.createToken(ts.SyntaxKind.EqualsToken),
83
- entry.expression,
48
+ )("some"),
49
+ undefined,
50
+ [
51
+ ts.factory.createArrowFunction(
52
+ undefined,
53
+ undefined,
54
+ [IdentifierFactory.parameter("regular")],
55
+ undefined,
56
+ undefined,
57
+ ts.factory.createStrictEquality(
58
+ ts.factory.createIdentifier("regular"),
59
+ ts.factory.createIdentifier("key"),
84
60
  ),
85
61
  ),
86
- ts.factory.createContinueStatement(),
87
- ]),
62
+ ],
88
63
  ),
64
+ ts.factory.createContinueStatement(),
89
65
  ),
90
66
  );
91
-
92
- return ts.factory.createBlock([
93
- StatementFactory.constant(
94
- "output",
95
- ts.factory.createAsExpression(literal, TypeFactory.keyword("any")),
96
- ),
97
- ts.factory.createForOfStatement(
98
- undefined,
99
- StatementFactory.entry("key")("value"),
67
+ statements.push(
68
+ ...dynamic.map((entry) =>
69
+ ts.factory.createIfStatement(
100
70
  ts.factory.createCallExpression(
101
- ts.factory.createIdentifier("Object.entries"),
71
+ ts.factory.createIdentifier(
72
+ `RegExp(/${metadata_to_pattern({
73
+ top: true,
74
+ metadata: entry.key,
75
+ })}/).test`,
76
+ ),
102
77
  undefined,
103
- [props.input],
78
+ [key],
104
79
  ),
105
- ts.factory.createBlock(statements),
80
+ ts.factory.createBlock([
81
+ ts.factory.createExpressionStatement(
82
+ ts.factory.createBinaryExpression(
83
+ ts.factory.createElementAccessExpression(output, key),
84
+ ts.factory.createToken(ts.SyntaxKind.EqualsToken),
85
+ entry.expression,
86
+ ),
87
+ ),
88
+ ts.factory.createContinueStatement(),
89
+ ]),
106
90
  ),
107
- ts.factory.createReturnStatement(output),
108
- ]);
109
- };
91
+ ),
92
+ );
93
+
94
+ return ts.factory.createBlock([
95
+ StatementFactory.constant(
96
+ "output",
97
+ ts.factory.createAsExpression(literal, TypeFactory.keyword("any")),
98
+ ),
99
+ ts.factory.createForOfStatement(
100
+ undefined,
101
+ StatementFactory.entry("key")("value"),
102
+ ts.factory.createCallExpression(
103
+ ts.factory.createIdentifier("Object.entries"),
104
+ undefined,
105
+ [props.input],
106
+ ),
107
+ ts.factory.createBlock(statements),
108
+ ),
109
+ ts.factory.createReturnStatement(output),
110
+ ]);
111
+ };
110
112
 
111
113
  export const tuple = (props: {
112
114
  elements: ts.Expression[];
@@ -39,7 +39,7 @@ export namespace ProtobufUtil {
39
39
  return [...set].sort(compare);
40
40
  };
41
41
 
42
- export const getNumbers = (meta: Metadata) => {
42
+ export const getNumbers = (meta: Metadata): ProtobufAtomic.Numeric[] => {
43
43
  const set: Set<ProtobufAtomic.Numeric> = new Set();
44
44
  for (const c of meta.constants)
45
45
  if (c.type === "number")
@@ -50,7 +50,7 @@ export namespace ProtobufUtil {
50
50
  return [...set].sort(compare);
51
51
  };
52
52
 
53
- export const getBigints = (meta: Metadata) => {
53
+ export const getBigints = (meta: Metadata): ProtobufAtomic.BigNumeric[] => {
54
54
  const set: Set<ProtobufAtomic.BigNumeric> = new Set();
55
55
  for (const c of meta.constants) if (c.type === "bigint") set.add("uint64");
56
56
  for (const atomic of meta.atomics)
@@ -124,7 +124,10 @@ const iterate_dynamic_properties = (props: {
124
124
  ts.factory.createIfStatement(
125
125
  ts.factory.createCallExpression(
126
126
  ts.factory.createIdentifier(
127
- `RegExp(/${metadata_to_pattern(true)(dynamic.key)}/).test`,
127
+ `RegExp(/${metadata_to_pattern({
128
+ top: true,
129
+ metadata: dynamic.key,
130
+ })}/).test`,
128
131
  ),
129
132
  undefined,
130
133
  [ts.factory.createIdentifier("key")],
@@ -11,7 +11,7 @@ import { MetadataProperty } from "../../schemas/metadata/MetadataProperty";
11
11
  import { Escaper } from "../../utils/Escaper";
12
12
 
13
13
  export namespace RandomJoiner {
14
- export type Decoder = (meta: Metadata) => ts.Expression;
14
+ export type Decoder = (metadata: Metadata) => ts.Expression;
15
15
 
16
16
  export const array = (props: {
17
17
  coalesce: (method: string) => ts.Expression;
@@ -54,7 +54,10 @@ export namespace RandomJoiner {
54
54
  );
55
55
  };
56
56
 
57
- export const tuple = (props: { decode: Decoder; elements: Metadata[] }) =>
57
+ export const tuple = (props: {
58
+ decode: Decoder;
59
+ elements: Metadata[];
60
+ }): ts.ArrayLiteralExpression =>
58
61
  ts.factory.createArrayLiteralExpression(
59
62
  props.elements.map((elem) => props.decode(elem.rest ?? elem)),
60
63
  true,
@@ -182,7 +182,14 @@ const take = (props: {
182
182
  return value !== undefined ? Number(value) : undefined;
183
183
  };
184
184
 
185
- const multiplier = (props: { range: IRange; gap: number; value: number }) => {
185
+ const multiplier = (props: {
186
+ range: IRange;
187
+ gap: number;
188
+ value: number;
189
+ }): {
190
+ minimum: number;
191
+ maximum: number;
192
+ } => {
186
193
  const minimum: number =
187
194
  props.range.minimum.value === undefined
188
195
  ? 0
@@ -24,7 +24,10 @@ export namespace StringifyJoiner {
24
24
  (entry) => !entry.key.isSoleLiteral(),
25
25
  );
26
26
  const expressions: ts.Expression[] = [
27
- ...stringify_regular_properties(regular, dynamic),
27
+ ...stringify_regular_properties({
28
+ regular,
29
+ dynamic,
30
+ }),
28
31
  ...(dynamic.length
29
32
  ? [
30
33
  stringify_dynamic_properties(
@@ -4,9 +4,10 @@ export namespace StringifyPredicator {
4
4
  export const require_escape = (value: string): boolean =>
5
5
  value.split("").some((ch) => ESCAPED.some((escaped) => escaped === ch));
6
6
 
7
- export const undefindable = (meta: Metadata): boolean =>
8
- meta.isRequired() === false ||
9
- (meta.escaped !== null && meta.escaped.returns.isRequired() === false);
7
+ export const undefindable = (metadata: Metadata): boolean =>
8
+ metadata.isRequired() === false ||
9
+ (metadata.escaped !== null &&
10
+ metadata.escaped.returns.isRequired() === false);
10
11
 
11
12
  const ESCAPED = ['"', "\\", "\b", "\f", "\n", "\n", "\r", "\t"];
12
13
  }