typia 6.7.0 → 6.7.1

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 (85) hide show
  1. package/lib/programmers/AssertProgrammer.d.ts +0 -1
  2. package/lib/programmers/AssertProgrammer.js.map +1 -1
  3. package/lib/programmers/CheckerProgrammer.d.ts +1 -1
  4. package/lib/programmers/FeatureProgrammer.d.ts +1 -1
  5. package/lib/programmers/IsProgrammer.d.ts +1 -1
  6. package/lib/programmers/RandomProgrammer.d.ts +10 -1
  7. package/lib/programmers/RandomProgrammer.js +62 -37
  8. package/lib/programmers/RandomProgrammer.js.map +1 -1
  9. package/lib/programmers/ValidateProgrammer.d.ts +1 -1
  10. package/lib/programmers/json/JsonIsParseProgrammer.d.ts +1 -1
  11. package/lib/programmers/json/JsonIsStringifyProgrammer.d.ts +1 -1
  12. package/lib/programmers/json/JsonStringifyProgrammer.d.ts +1 -1
  13. package/lib/programmers/json/JsonStringifyProgrammer.js +1 -3
  14. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  15. package/lib/programmers/json/JsonValidateParseProgrammer.d.ts +1 -1
  16. package/lib/programmers/json/JsonValidateStringifyProgrammer.d.ts +1 -1
  17. package/lib/programmers/misc/MiscCloneProgrammer.d.ts +1 -1
  18. package/lib/programmers/misc/MiscCloneProgrammer.js +33 -14
  19. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  20. package/lib/programmers/misc/MiscIsCloneProgrammer.d.ts +1 -1
  21. package/lib/programmers/misc/MiscIsPruneProgrammer.d.ts +1 -1
  22. package/lib/programmers/misc/MiscPruneProgrammer.d.ts +1 -1
  23. package/lib/programmers/misc/MiscValidateCloneProgrammer.d.ts +1 -1
  24. package/lib/programmers/misc/MiscValidatePruneProgrammer.d.ts +1 -1
  25. package/lib/programmers/notations/NotationGeneralProgrammer.d.ts +1 -1
  26. package/lib/programmers/notations/NotationGeneralProgrammer.js +30 -11
  27. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  28. package/lib/programmers/notations/NotationValidateGeneralProgrammer.d.ts +1 -1
  29. package/package.json +1 -1
  30. package/src/programmers/AssertProgrammer.ts +397 -398
  31. package/src/programmers/CheckerProgrammer.ts +1138 -1138
  32. package/src/programmers/FeatureProgrammer.ts +549 -549
  33. package/src/programmers/IsProgrammer.ts +1 -1
  34. package/src/programmers/RandomProgrammer.ts +112 -77
  35. package/src/programmers/ValidateProgrammer.ts +382 -382
  36. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +141 -141
  37. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +108 -108
  38. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +98 -98
  39. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  40. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +101 -101
  41. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +106 -106
  42. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +123 -123
  43. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +267 -267
  44. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +126 -126
  45. package/src/programmers/helpers/FunctionImporter.ts +97 -97
  46. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +91 -91
  47. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +91 -91
  48. package/src/programmers/http/HttpAssertQueryProgrammer.ts +93 -93
  49. package/src/programmers/http/HttpFormDataProgrammer.ts +278 -278
  50. package/src/programmers/http/HttpHeadersProgrammer.ts +347 -347
  51. package/src/programmers/http/HttpIsFormDataProgrammer.ts +102 -102
  52. package/src/programmers/http/HttpIsHeadersProgrammer.ts +102 -102
  53. package/src/programmers/http/HttpIsQueryProgrammer.ts +104 -104
  54. package/src/programmers/http/HttpQueryProgrammer.ts +298 -298
  55. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +85 -85
  56. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +85 -85
  57. package/src/programmers/http/HttpValidateQueryProgrammer.ts +87 -87
  58. package/src/programmers/json/JsonAssertParseProgrammer.ts +96 -96
  59. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +104 -104
  60. package/src/programmers/json/JsonIsParseProgrammer.ts +110 -110
  61. package/src/programmers/json/JsonIsStringifyProgrammer.ts +102 -102
  62. package/src/programmers/json/JsonStringifyProgrammer.ts +909 -910
  63. package/src/programmers/json/JsonValidateParseProgrammer.ts +87 -87
  64. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +111 -111
  65. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +87 -87
  66. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +87 -87
  67. package/src/programmers/misc/MiscCloneProgrammer.ts +781 -759
  68. package/src/programmers/misc/MiscIsCloneProgrammer.ts +93 -93
  69. package/src/programmers/misc/MiscIsPruneProgrammer.ts +94 -94
  70. package/src/programmers/misc/MiscPruneProgrammer.ts +560 -560
  71. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +104 -104
  72. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +98 -98
  73. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +91 -91
  74. package/src/programmers/notations/NotationGeneralProgrammer.ts +709 -685
  75. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +97 -97
  76. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +107 -107
  77. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +91 -91
  78. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +95 -95
  79. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +646 -646
  80. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +852 -852
  81. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +104 -104
  82. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +93 -93
  83. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +85 -85
  84. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +109 -109
  85. package/src/transformers/internal/GenericTransformer.ts +104 -104
@@ -101,7 +101,7 @@ export namespace IsProgrammer {
101
101
  importer: FunctionImporter;
102
102
  equals: boolean;
103
103
  type: ts.Type;
104
- name?: string;
104
+ name: string | undefined;
105
105
  }): FeatureProgrammer.IDecomposed => {
106
106
  // CONFIGURATION
107
107
  const config: CheckerProgrammer.IConfig = {
@@ -23,91 +23,126 @@ import { TransformerError } from "../transformers/TransformerError";
23
23
  import { Escaper } from "../utils/Escaper";
24
24
 
25
25
  import { Format } from "../tags";
26
+ import { FeatureProgrammer } from "./FeatureProgrammer";
26
27
  import { FunctionImporter } from "./helpers/FunctionImporter";
27
28
  import { RandomJoiner } from "./helpers/RandomJoiner";
28
29
  import { RandomRanger } from "./helpers/RandomRanger";
29
30
  import { random_custom } from "./internal/random_custom";
30
31
 
31
32
  export namespace RandomProgrammer {
32
- export const write =
33
- (project: IProject) =>
34
- (modulo: ts.LeftHandSideExpression) =>
35
- (init?: ts.Expression) => {
36
- const importer: FunctionImporter = new FunctionImporter(modulo.getText());
37
- return (type: ts.Type, name?: string) => {
38
- // INITIALIZE METADATA
39
- const collection: MetadataCollection = new MetadataCollection();
40
- const result = MetadataFactory.analyze(
41
- project.checker,
42
- project.context,
43
- )({
44
- escape: false,
45
- constant: true,
46
- absorb: true,
47
- validate: (meta) => {
48
- const output: string[] = [];
49
- if (meta.natives.some((n) => n === "WeakSet"))
50
- output.push(`WeakSet is not supported.`);
51
- else if (meta.natives.some((n) => n === "WeakMap"))
52
- output.push(`WeakMap is not supported.`);
53
- return output;
54
- },
55
- })(collection)(type);
56
- if (result.success === false)
57
- throw TransformerError.from(`typia.${importer.method}`)(
58
- result.errors,
59
- );
60
-
61
- // GENERATE FUNCTION
62
- const functions = {
63
- objects: write_object_functions(importer)(collection),
64
- arrays: write_array_functions(importer)(collection),
65
- tuples: write_tuple_functions(importer)(collection),
66
- };
67
-
68
- const output: ts.Expression = decode(importer)({
69
- function: false,
70
- recursive: false,
71
- })(result.data);
33
+ export const decompose = (props: {
34
+ project: IProject;
35
+ importer: FunctionImporter;
36
+ type: ts.Type;
37
+ name: string | undefined;
38
+ init: ts.Expression | undefined;
39
+ }): FeatureProgrammer.IDecomposed => {
40
+ const collection: MetadataCollection = new MetadataCollection();
41
+ const result = MetadataFactory.analyze(
42
+ props.project.checker,
43
+ props.project.context,
44
+ )({
45
+ escape: false,
46
+ constant: true,
47
+ absorb: true,
48
+ validate: (meta) => {
49
+ const output: string[] = [];
50
+ if (meta.natives.some((n) => n === "WeakSet"))
51
+ output.push(`WeakSet is not supported.`);
52
+ else if (meta.natives.some((n) => n === "WeakMap"))
53
+ output.push(`WeakMap is not supported.`);
54
+ return output;
55
+ },
56
+ })(collection)(props.type);
57
+ if (result.success === false)
58
+ throw TransformerError.from(`typia.${props.importer.method}`)(
59
+ result.errors,
60
+ );
72
61
 
73
- return ts.factory.createArrowFunction(
74
- undefined,
75
- undefined,
76
- [
77
- IdentifierFactory.parameter(
78
- "generator",
79
- ts.factory.createTypeReferenceNode(
80
- "Partial<typia.IRandomGenerator>",
81
- ),
82
- init ?? ts.factory.createToken(ts.SyntaxKind.QuestionToken),
83
- ),
84
- ],
85
- ts.factory.createImportTypeNode(
86
- ts.factory.createLiteralTypeNode(
87
- ts.factory.createStringLiteral("typia"),
62
+ // GENERATE FUNCTION
63
+ const functions: Record<string, ts.VariableStatement> = Object.fromEntries([
64
+ ...write_object_functions(props.importer)(collection).map((v, i) => [
65
+ Prefix.object(i),
66
+ v,
67
+ ]),
68
+ ...write_array_functions(props.importer)(collection).map((v, i) => [
69
+ Prefix.array(i),
70
+ v,
71
+ ]),
72
+ ...write_tuple_functions(props.importer)(collection).map((v, i) => [
73
+ Prefix.tuple(i),
74
+ v,
75
+ ]),
76
+ ]);
77
+ const arrow: ts.ArrowFunction = ts.factory.createArrowFunction(
78
+ undefined,
79
+ undefined,
80
+ [
81
+ IdentifierFactory.parameter(
82
+ "generator",
83
+ ts.factory.createTypeReferenceNode("Partial<typia.IRandomGenerator>"),
84
+ props.init ?? ts.factory.createToken(ts.SyntaxKind.QuestionToken),
85
+ ),
86
+ ],
87
+ ts.factory.createImportTypeNode(
88
+ ts.factory.createLiteralTypeNode(
89
+ ts.factory.createStringLiteral("typia"),
90
+ ),
91
+ undefined,
92
+ ts.factory.createIdentifier("Resolved"),
93
+ [
94
+ ts.factory.createTypeReferenceNode(
95
+ props.name ??
96
+ TypeFactory.getFullName(props.project.checker)(props.type),
97
+ ),
98
+ ],
99
+ false,
100
+ ),
101
+ undefined,
102
+ ts.factory.createBlock(
103
+ [
104
+ ts.factory.createExpressionStatement(
105
+ ts.factory.createBinaryExpression(
106
+ ts.factory.createIdentifier("_generator"),
107
+ ts.SyntaxKind.EqualsToken,
108
+ ts.factory.createIdentifier("generator"),
88
109
  ),
89
- undefined,
90
- ts.factory.createIdentifier("Resolved"),
91
- [
92
- ts.factory.createTypeReferenceNode(
93
- name ?? TypeFactory.getFullName(project.checker)(type),
94
- ),
95
- ],
96
- false,
97
110
  ),
98
- undefined,
99
- ts.factory.createBlock(
100
- [
101
- ...importer.declare(modulo),
102
- ...functions.objects,
103
- ...functions.arrays,
104
- ...functions.tuples,
105
- ts.factory.createReturnStatement(output),
106
- ],
107
- true,
111
+ ts.factory.createReturnStatement(
112
+ decode(props.importer)({
113
+ function: false,
114
+ recursive: false,
115
+ })(result.data),
108
116
  ),
109
- );
110
- };
117
+ ],
118
+ true,
119
+ ),
120
+ );
121
+ return {
122
+ functions,
123
+ statements: [StatementFactory.mut("_generator")],
124
+ arrow,
125
+ };
126
+ };
127
+
128
+ export const write =
129
+ (project: IProject) =>
130
+ (modulo: ts.LeftHandSideExpression) =>
131
+ (init?: ts.Expression) =>
132
+ (type: ts.Type, name?: string) => {
133
+ const importer: FunctionImporter = new FunctionImporter(modulo.getText());
134
+ const result: FeatureProgrammer.IDecomposed = decompose({
135
+ project,
136
+ importer,
137
+ type,
138
+ name,
139
+ init,
140
+ });
141
+ return FeatureProgrammer.writeDecomposed({
142
+ modulo,
143
+ importer,
144
+ result,
145
+ });
111
146
  };
112
147
 
113
148
  const write_object_functions =
@@ -892,12 +927,12 @@ const COALESCE = (importer: FunctionImporter) => (name: string) =>
892
927
  ExpressionFactory.coalesce(
893
928
  Escaper.variable(name)
894
929
  ? ts.factory.createPropertyAccessChain(
895
- ts.factory.createIdentifier("generator"),
930
+ ts.factory.createIdentifier("_generator"),
896
931
  ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
897
932
  ts.factory.createIdentifier(name),
898
933
  )
899
934
  : ts.factory.createElementAccessChain(
900
- ts.factory.createIdentifier("generator"),
935
+ ts.factory.createIdentifier("_generator"),
901
936
  ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),
902
937
  ts.factory.createStringLiteral(name),
903
938
  ),