typia 5.0.0-dev.20230823 → 5.0.0-dev.2023084

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 (217) hide show
  1. package/lib/Primitive.d.ts +14 -12
  2. package/lib/Resolved.d.ts +46 -0
  3. package/lib/{schemas/metadata/IMetadataResolved.js → Resolved.js} +1 -1
  4. package/lib/Resolved.js.map +1 -0
  5. package/lib/factories/MetadataFactory.d.ts +1 -1
  6. package/lib/factories/MetadataTagFactory.js +10 -8
  7. package/lib/factories/MetadataTagFactory.js.map +1 -1
  8. package/lib/factories/ProtobufFactory.js +4 -3
  9. package/lib/factories/ProtobufFactory.js.map +1 -1
  10. package/lib/factories/internal/metadata/emend_metadata_atomics.js +6 -6
  11. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  12. package/lib/factories/internal/metadata/explore_metadata.js +3 -3
  13. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  14. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +1 -1
  15. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  16. package/lib/factories/internal/metadata/iterate_metadata_collection.js +6 -6
  17. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  18. package/lib/factories/internal/metadata/iterate_metadata_native.js +2 -10
  19. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  20. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +6 -6
  21. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  22. package/lib/factories/internal/metadata/iterate_metadata_sort.js +2 -2
  23. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  24. package/lib/functional/$ProtobufWriter.js.map +1 -1
  25. package/lib/json.d.ts +15 -15
  26. package/lib/misc.d.ts +42 -42
  27. package/lib/module.d.ts +18 -17
  28. package/lib/module.js +1 -0
  29. package/lib/module.js.map +1 -1
  30. package/lib/programmers/AssertProgrammer.js +1 -1
  31. package/lib/programmers/AssertProgrammer.js.map +1 -1
  32. package/lib/programmers/CheckerProgrammer.js +7 -7
  33. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  34. package/lib/programmers/IsProgrammer.js +2 -2
  35. package/lib/programmers/IsProgrammer.js.map +1 -1
  36. package/lib/programmers/RandomProgrammer.js +311 -136
  37. package/lib/programmers/RandomProgrammer.js.map +1 -1
  38. package/lib/programmers/ValidateProgrammer.js +1 -1
  39. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  40. package/lib/programmers/helpers/AtomicPredicator.js +2 -2
  41. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  42. package/lib/programmers/helpers/FunctionImporeter.d.ts +2 -0
  43. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  44. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  45. package/lib/programmers/helpers/ProtobufUtil.js +2 -2
  46. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  47. package/lib/programmers/helpers/StringifyPredicator.js +1 -2
  48. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  49. package/lib/programmers/helpers/disable_function_importer_declare.js +1 -0
  50. package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -1
  51. package/lib/programmers/internal/application_default_string.js +2 -2
  52. package/lib/programmers/internal/application_default_string.js.map +1 -1
  53. package/lib/programmers/internal/application_resolved.d.ts +2 -2
  54. package/lib/programmers/internal/application_resolved.js.map +1 -1
  55. package/lib/programmers/internal/application_schema.js +7 -7
  56. package/lib/programmers/internal/application_schema.js.map +1 -1
  57. package/lib/programmers/internal/metadata_to_pattern.js +4 -4
  58. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  59. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -1
  60. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  61. package/lib/programmers/json/JsonStringifyProgrammer.js +20 -14
  62. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  63. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +1 -1
  64. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  65. package/lib/programmers/misc/MiscCloneProgrammer.js +114 -33
  66. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  67. package/lib/programmers/misc/MiscIsCloneProgrammer.js +1 -1
  68. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  69. package/lib/programmers/misc/MiscLiteralsProgrammer.js +3 -3
  70. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  71. package/lib/programmers/misc/MiscPruneProgrammer.js +2 -2
  72. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  73. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +1 -1
  74. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  75. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +3 -3
  76. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  77. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +3 -3
  78. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  79. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +1 -1
  80. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  81. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +2 -2
  82. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  83. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +1 -1
  84. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  85. package/lib/protobuf.d.ts +631 -10
  86. package/lib/protobuf.js +13 -13
  87. package/lib/protobuf.js.map +1 -1
  88. package/lib/schemas/metadata/IMetadata.d.ts +4 -4
  89. package/lib/schemas/metadata/IMetadataAtomic.d.ts +12 -0
  90. package/lib/schemas/metadata/IMetadataAtomic.js +3 -0
  91. package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
  92. package/lib/schemas/metadata/{IMetadataResolved.d.ts → IMetadataEscaped.d.ts} +1 -1
  93. package/lib/schemas/metadata/IMetadataEscaped.js +3 -0
  94. package/lib/schemas/metadata/IMetadataEscaped.js.map +1 -0
  95. package/lib/schemas/metadata/Metadata.d.ts +4 -4
  96. package/lib/schemas/metadata/Metadata.js +64 -59
  97. package/lib/schemas/metadata/Metadata.js.map +1 -1
  98. package/lib/schemas/metadata/{MetadataResolved.d.ts → MetadataEscaped.d.ts} +3 -3
  99. package/lib/schemas/metadata/{MetadataResolved.js → MetadataEscaped.js} +11 -11
  100. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -0
  101. package/lib/tags/ExclusiveMaximum.d.ts +8 -0
  102. package/lib/tags/ExclusiveMaximum.js +3 -0
  103. package/lib/tags/ExclusiveMaximum.js.map +1 -0
  104. package/lib/tags/ExclusiveMinimum.d.ts +8 -0
  105. package/lib/tags/ExclusiveMinimum.js +3 -0
  106. package/lib/tags/ExclusiveMinimum.js.map +1 -0
  107. package/lib/tags/Format.d.ts +8 -0
  108. package/lib/tags/Format.js +3 -0
  109. package/lib/tags/Format.js.map +1 -0
  110. package/lib/tags/MaxItems.d.ts +8 -0
  111. package/lib/tags/MaxItems.js +3 -0
  112. package/lib/tags/MaxItems.js.map +1 -0
  113. package/lib/tags/MaxLength.d.ts +8 -0
  114. package/lib/tags/MaxLength.js +3 -0
  115. package/lib/tags/MaxLength.js.map +1 -0
  116. package/lib/tags/Maximum.d.ts +8 -0
  117. package/lib/tags/Maximum.js +3 -0
  118. package/lib/tags/Maximum.js.map +1 -0
  119. package/lib/tags/MinItems.d.ts +8 -0
  120. package/lib/tags/MinItems.js +3 -0
  121. package/lib/tags/MinItems.js.map +1 -0
  122. package/lib/tags/MinLength.d.ts +8 -0
  123. package/lib/tags/MinLength.js +3 -0
  124. package/lib/tags/MinLength.js.map +1 -0
  125. package/lib/tags/Minimum.d.ts +8 -0
  126. package/lib/tags/Minimum.js +3 -0
  127. package/lib/tags/Minimum.js.map +1 -0
  128. package/lib/tags/MultipleOf.d.ts +8 -0
  129. package/lib/tags/MultipleOf.js +3 -0
  130. package/lib/tags/MultipleOf.js.map +1 -0
  131. package/lib/tags/Pattern.d.ts +8 -0
  132. package/lib/tags/Pattern.js +3 -0
  133. package/lib/tags/Pattern.js.map +1 -0
  134. package/lib/tags/TagBase.d.ts +10 -0
  135. package/lib/tags/TagBase.js +3 -0
  136. package/lib/tags/TagBase.js.map +1 -0
  137. package/lib/tags/Type.d.ts +13 -0
  138. package/lib/tags/Type.js +3 -0
  139. package/lib/tags/Type.js.map +1 -0
  140. package/lib/tags/index.d.ts +12 -0
  141. package/lib/tags/index.js +29 -0
  142. package/lib/tags/index.js.map +1 -0
  143. package/lib/transformers/features/json/JsonApplicationTransformer.js +2 -2
  144. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  145. package/lib/transformers/features/misc/MetadataTransformer.js +1 -1
  146. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  147. package/lib/utils/RandomGenerator.js +3 -2
  148. package/lib/utils/RandomGenerator.js.map +1 -1
  149. package/package.json +2 -1
  150. package/src/Primitive.ts +135 -131
  151. package/src/Resolved.ts +116 -0
  152. package/src/factories/MetadataFactory.ts +46 -46
  153. package/src/factories/MetadataTagFactory.ts +366 -364
  154. package/src/factories/ProtobufFactory.ts +268 -266
  155. package/src/factories/internal/metadata/emend_metadata_atomics.ts +35 -33
  156. package/src/factories/internal/metadata/explore_metadata.ts +38 -38
  157. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +63 -59
  158. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  159. package/src/factories/internal/metadata/iterate_metadata_native.ts +210 -219
  160. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  161. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  162. package/src/functional/$ProtobufWriter.ts +151 -151
  163. package/src/json.ts +648 -648
  164. package/src/misc.ts +651 -651
  165. package/src/module.ts +709 -708
  166. package/src/programmers/AssertProgrammer.ts +281 -279
  167. package/src/programmers/CheckerProgrammer.ts +1174 -1173
  168. package/src/programmers/IsProgrammer.ts +241 -239
  169. package/src/programmers/RandomProgrammer.ts +874 -578
  170. package/src/programmers/ValidateProgrammer.ts +307 -305
  171. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  172. package/src/programmers/helpers/FunctionImporeter.ts +91 -89
  173. package/src/programmers/helpers/ProtobufUtil.ts +29 -29
  174. package/src/programmers/helpers/StringifyPredicator.ts +12 -13
  175. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -27
  176. package/src/programmers/internal/application_default_string.ts +37 -33
  177. package/src/programmers/internal/application_resolved.ts +55 -55
  178. package/src/programmers/internal/application_schema.ts +157 -157
  179. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  180. package/src/programmers/internal/stringify_dynamic_properties.ts +171 -171
  181. package/src/programmers/json/JsonStringifyProgrammer.ts +995 -987
  182. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
  183. package/src/programmers/misc/MiscCloneProgrammer.ts +775 -587
  184. package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
  185. package/src/programmers/misc/MiscLiteralsProgrammer.ts +64 -64
  186. package/src/programmers/misc/MiscPruneProgrammer.ts +544 -542
  187. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
  188. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -66
  189. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +673 -669
  190. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +814 -814
  191. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +85 -75
  192. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  193. package/src/protobuf.ts +881 -249
  194. package/src/schemas/metadata/IMetadata.ts +27 -28
  195. package/src/schemas/metadata/IMetadataAtomic.ts +13 -0
  196. package/src/schemas/metadata/{IMetadataResolved.ts → IMetadataEscaped.ts} +6 -6
  197. package/src/schemas/metadata/Metadata.ts +643 -637
  198. package/src/schemas/metadata/{MetadataResolved.ts → MetadataEscaped.ts} +51 -51
  199. package/src/tags/ExclusiveMaximum.ts +8 -0
  200. package/src/tags/ExclusiveMinimum.ts +8 -0
  201. package/src/tags/Format.ts +29 -0
  202. package/src/tags/MaxItems.ts +8 -0
  203. package/src/tags/MaxLength.ts +8 -0
  204. package/src/tags/Maximum.ts +8 -0
  205. package/src/tags/MinItems.ts +8 -0
  206. package/src/tags/MinLength.ts +8 -0
  207. package/src/tags/Minimum.ts +8 -0
  208. package/src/tags/MultipleOf.ts +10 -0
  209. package/src/tags/Pattern.ts +8 -0
  210. package/src/tags/TagBase.ts +17 -0
  211. package/src/tags/Type.ts +30 -0
  212. package/src/tags/index.ts +12 -0
  213. package/src/transformers/features/json/JsonApplicationTransformer.ts +111 -111
  214. package/src/transformers/features/misc/MetadataTransformer.ts +53 -53
  215. package/src/utils/RandomGenerator.ts +83 -81
  216. package/lib/schemas/metadata/IMetadataResolved.js.map +0 -1
  217. package/lib/schemas/metadata/MetadataResolved.js.map +0 -1
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __read = (this && this.__read) || function (o, n) {
3
14
  var m = typeof Symbol === "function" && o[Symbol.iterator];
4
15
  if (!m) return o;
@@ -48,6 +59,9 @@ var MetadataFactory_1 = require("../factories/MetadataFactory");
48
59
  var StatementFactory_1 = require("../factories/StatementFactory");
49
60
  var TemplateFactory_1 = require("../factories/TemplateFactory");
50
61
  var TypeFactory_1 = require("../factories/TypeFactory");
62
+ var Metadata_1 = require("../schemas/metadata/Metadata");
63
+ var MetadataArray_1 = require("../schemas/metadata/MetadataArray");
64
+ var MetadataTuple_1 = require("../schemas/metadata/MetadataTuple");
51
65
  var FunctionImporeter_1 = require("./helpers/FunctionImporeter");
52
66
  var RandomJoiner_1 = require("./helpers/RandomJoiner");
53
67
  var RandomRanger_1 = require("./helpers/RandomRanger");
@@ -57,13 +71,19 @@ var RandomProgrammer;
57
71
  RandomProgrammer.write = function (project) {
58
72
  return function (modulo) {
59
73
  return function (init) {
60
- var importer = new FunctionImporeter_1.FunctionImporter();
74
+ var importer = new FunctionImporeter_1.FunctionImporter(modulo.getText());
61
75
  return function (type, name) {
62
76
  var collection = new MetadataCollection_1.MetadataCollection();
63
77
  var meta = MetadataFactory_1.MetadataFactory.analyze(project.checker)({
64
- resolve: true,
78
+ escape: false,
65
79
  constant: true,
66
80
  absorb: true,
81
+ validate: function (meta) {
82
+ if (meta.natives.some(function (n) { return n === "WeakSet"; }))
83
+ throw new Error("Error on ".concat(modulo.getText(), "(): WeakSet is not supported."));
84
+ else if (meta.natives.some(function (n) { return n === "WeakMap"; }))
85
+ throw new Error("Error on ".concat(modulo.getText(), "(): WeakMap is not supported."));
86
+ },
67
87
  })(collection)(type);
68
88
  var functions = {
69
89
  objects: write_object_functions(importer)(collection),
@@ -76,7 +96,7 @@ var RandomProgrammer;
76
96
  })(meta, [], []);
77
97
  return typescript_1.default.factory.createArrowFunction(undefined, undefined, [
78
98
  IdentifierFactory_1.IdentifierFactory.parameter("generator", typescript_1.default.factory.createTypeReferenceNode("Partial<typia.IRandomGenerator>"), init !== null && init !== void 0 ? init : typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken)),
79
- ], typescript_1.default.factory.createTypeReferenceNode("typia.Primitive<".concat(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type), ">")), undefined, typescript_1.default.factory.createBlock(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(functions.objects), false), __read(functions.arrays), false), __read(functions.tuples), false), [
99
+ ], typescript_1.default.factory.createTypeReferenceNode("typia.Resolved<".concat(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type), ">")), undefined, typescript_1.default.factory.createBlock(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(functions.objects), false), __read(functions.arrays), false), __read(functions.tuples), false), [
80
100
  typescript_1.default.factory.createReturnStatement(output),
81
101
  ], false), true));
82
102
  };
@@ -135,27 +155,27 @@ var RandomProgrammer;
135
155
  var decode = function (importer) {
136
156
  return function (explore) {
137
157
  return function (meta, tags, comments) {
138
- var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f, e_7, _g, e_8, _h;
158
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f, e_7, _g, e_8, _h, e_9, _j, e_10, _k;
139
159
  var expressions = [];
140
160
  if (meta.any)
141
161
  expressions.push(typescript_1.default.factory.createStringLiteral("any type used..."));
142
- if (meta.isRequired() === false)
162
+ if (meta.isRequired() === false || meta.functional === true)
143
163
  expressions.push(typescript_1.default.factory.createIdentifier("undefined"));
144
164
  if (meta.nullable === true)
145
165
  expressions.push(typescript_1.default.factory.createNull());
146
166
  try {
147
- for (var _j = __values(meta.constants), _k = _j.next(); !_k.done; _k = _j.next()) {
148
- var constant = _k.value;
167
+ for (var _l = __values(meta.constants), _m = _l.next(); !_m.done; _m = _l.next()) {
168
+ var constant = _m.value;
149
169
  try {
150
- for (var _l = (e_2 = void 0, __values(constant.values)), _m = _l.next(); !_m.done; _m = _l.next()) {
151
- var value = _m.value;
170
+ for (var _o = (e_2 = void 0, __values(constant.values)), _p = _o.next(); !_p.done; _p = _o.next()) {
171
+ var value = _p.value;
152
172
  expressions.push(decode_atomic(value));
153
173
  }
154
174
  }
155
175
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
156
176
  finally {
157
177
  try {
158
- if (_m && !_m.done && (_b = _l.return)) _b.call(_l);
178
+ if (_p && !_p.done && (_b = _o.return)) _b.call(_o);
159
179
  }
160
180
  finally { if (e_2) throw e_2.error; }
161
181
  }
@@ -164,106 +184,123 @@ var RandomProgrammer;
164
184
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
165
185
  finally {
166
186
  try {
167
- if (_k && !_k.done && (_a = _j.return)) _a.call(_j);
187
+ if (_m && !_m.done && (_a = _l.return)) _a.call(_l);
168
188
  }
169
189
  finally { if (e_1) throw e_1.error; }
170
190
  }
171
191
  try {
172
- for (var _o = __values(meta.templates), _p = _o.next(); !_p.done; _p = _o.next()) {
173
- var template = _p.value;
192
+ for (var _q = __values(meta.templates), _r = _q.next(); !_r.done; _r = _q.next()) {
193
+ var template = _r.value;
174
194
  expressions.push(decode_template(importer)(explore)(template));
175
195
  }
176
196
  }
177
197
  catch (e_3_1) { e_3 = { error: e_3_1 }; }
178
198
  finally {
179
199
  try {
180
- if (_p && !_p.done && (_c = _o.return)) _c.call(_o);
200
+ if (_r && !_r.done && (_c = _q.return)) _c.call(_q);
181
201
  }
182
202
  finally { if (e_3) throw e_3.error; }
183
203
  }
184
204
  try {
185
- for (var _q = __values(meta.atomics), _r = _q.next(); !_r.done; _r = _q.next()) {
186
- var atomic = _r.value;
187
- if (atomic === "boolean")
205
+ for (var _s = __values(meta.atomics), _t = _s.next(); !_t.done; _t = _s.next()) {
206
+ var a = _t.value;
207
+ if (a.type === "boolean")
188
208
  expressions.push(decode_boolean(importer));
189
- else if (atomic === "number")
190
- expressions.push(decode_number(importer)(tags)(comments));
191
- else if (atomic === "string")
192
- expressions.push(decode_string(importer)(tags)(comments));
193
- else if (atomic === "bigint")
194
- expressions.push(decode_bigint(importer)(tags)(comments));
209
+ else if (a.type === "number")
210
+ expressions.push(decode_number(importer)(tags, comments));
211
+ else if (a.type === "string")
212
+ expressions.push(decode_string(importer)(tags, comments));
213
+ else if (a.type === "bigint")
214
+ expressions.push(decode_bigint(importer)(tags, comments));
195
215
  }
196
216
  }
197
217
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
198
218
  finally {
199
219
  try {
200
- if (_r && !_r.done && (_d = _q.return)) _d.call(_q);
220
+ if (_t && !_t.done && (_d = _s.return)) _d.call(_s);
201
221
  }
202
222
  finally { if (e_4) throw e_4.error; }
203
223
  }
204
- if (meta.resolved)
205
- expressions.push(decode(importer)(explore)(meta.resolved.returns, tags, comments));
224
+ if (meta.escaped)
225
+ expressions.push(decode(importer)(explore)(meta.escaped.returns, tags, comments));
206
226
  try {
207
- for (var _s = __values(meta.arrays), _t = _s.next(); !_t.done; _t = _s.next()) {
208
- var array = _t.value;
227
+ for (var _u = __values(meta.arrays), _v = _u.next(); !_v.done; _v = _u.next()) {
228
+ var array = _v.value;
209
229
  expressions.push(decode_array(importer)(explore)(array, tags, comments));
210
230
  }
211
231
  }
212
232
  catch (e_5_1) { e_5 = { error: e_5_1 }; }
213
233
  finally {
214
234
  try {
215
- if (_t && !_t.done && (_e = _s.return)) _e.call(_s);
235
+ if (_v && !_v.done && (_e = _u.return)) _e.call(_u);
216
236
  }
217
237
  finally { if (e_5) throw e_5.error; }
218
238
  }
219
239
  try {
220
- for (var _u = __values(meta.tuples), _v = _u.next(); !_v.done; _v = _u.next()) {
221
- var tuple = _v.value;
240
+ for (var _w = __values(meta.tuples), _x = _w.next(); !_x.done; _x = _w.next()) {
241
+ var tuple = _x.value;
222
242
  expressions.push(decode_tuple(importer)(explore)(tuple, tags, comments));
223
243
  }
224
244
  }
225
245
  catch (e_6_1) { e_6 = { error: e_6_1 }; }
226
246
  finally {
227
247
  try {
228
- if (_v && !_v.done && (_f = _u.return)) _f.call(_u);
248
+ if (_x && !_x.done && (_f = _w.return)) _f.call(_w);
229
249
  }
230
250
  finally { if (e_6) throw e_6.error; }
231
251
  }
232
252
  try {
233
- for (var _w = __values(meta.objects), _x = _w.next(); !_x.done; _x = _w.next()) {
234
- var o = _x.value;
253
+ for (var _y = __values(meta.objects), _z = _y.next(); !_z.done; _z = _y.next()) {
254
+ var o = _z.value;
235
255
  expressions.push(decode_object(importer)(explore)(o));
236
256
  }
237
257
  }
238
258
  catch (e_7_1) { e_7 = { error: e_7_1 }; }
239
259
  finally {
240
260
  try {
241
- if (_x && !_x.done && (_g = _w.return)) _g.call(_w);
261
+ if (_z && !_z.done && (_g = _y.return)) _g.call(_y);
242
262
  }
243
263
  finally { if (e_7) throw e_7.error; }
244
264
  }
245
265
  try {
246
- for (var _y = __values(meta.natives), _z = _y.next(); !_z.done; _z = _y.next()) {
247
- var native = _z.value;
248
- if (native === "Boolean")
249
- expressions.push(decode_boolean(importer));
250
- else if (native === "Number")
251
- expressions.push(decode_number(importer)(tags)(comments));
252
- else if (native === "String")
253
- expressions.push(decode_string(importer)(tags)(comments));
254
- else
255
- expressions.push(typescript_1.default.factory.createIdentifier("{}"));
266
+ for (var _0 = __values(meta.natives), _1 = _0.next(); !_1.done; _1 = _0.next()) {
267
+ var native = _1.value;
268
+ expressions.push(decode_native(importer)(native, tags, comments));
256
269
  }
257
270
  }
258
271
  catch (e_8_1) { e_8 = { error: e_8_1 }; }
259
272
  finally {
260
273
  try {
261
- if (_z && !_z.done && (_h = _y.return)) _h.call(_y);
274
+ if (_1 && !_1.done && (_h = _0.return)) _h.call(_0);
262
275
  }
263
276
  finally { if (e_8) throw e_8.error; }
264
277
  }
265
- if (meta.sets.length || meta.maps.length)
266
- expressions.push(typescript_1.default.factory.createIdentifier("{}"));
278
+ try {
279
+ for (var _2 = __values(meta.sets), _3 = _2.next(); !_3.done; _3 = _2.next()) {
280
+ var set = _3.value;
281
+ expressions.push(decode_set(importer)(explore)(set, tags, comments));
282
+ }
283
+ }
284
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
285
+ finally {
286
+ try {
287
+ if (_3 && !_3.done && (_j = _2.return)) _j.call(_2);
288
+ }
289
+ finally { if (e_9) throw e_9.error; }
290
+ }
291
+ try {
292
+ for (var _4 = __values(meta.maps), _5 = _4.next(); !_5.done; _5 = _4.next()) {
293
+ var map = _5.value;
294
+ expressions.push(decode_map(importer)(explore)(map, tags, comments));
295
+ }
296
+ }
297
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
298
+ finally {
299
+ try {
300
+ if (_5 && !_5.done && (_k = _4.return)) _k.call(_4);
301
+ }
302
+ finally { if (e_10) throw e_10.error; }
303
+ }
267
304
  if (expressions.length === 1)
268
305
  return expressions[0];
269
306
  return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createCallExpression(importer.use("pick"), undefined, [
@@ -294,104 +331,98 @@ var RandomProgrammer;
294
331
  };
295
332
  };
296
333
  var decode_number = function (importer) {
297
- return function (tags) {
298
- return function (comments) {
299
- var type = tags.find(function (t) {
334
+ return function (tags, comments) {
335
+ var type = tags.find(function (t) {
336
+ return t.kind === "type" &&
337
+ (t.value === "int" ||
338
+ t.value === "int32" ||
339
+ t.value === "int64");
340
+ })
341
+ ? "int"
342
+ : tags.find(function (t) {
300
343
  return t.kind === "type" &&
301
- (t.value === "int" ||
302
- t.value === "int32" ||
303
- t.value === "int64");
344
+ (t.value === "uint" ||
345
+ t.value === "uint32" ||
346
+ t.value === "uint64");
304
347
  })
305
- ? "int"
306
- : tags.find(function (t) {
307
- return t.kind === "type" &&
308
- (t.value === "uint" ||
309
- t.value === "uint32" ||
310
- t.value === "uint64");
311
- })
312
- ? "uint"
313
- : "double";
314
- return (0, random_custom_1.random_custom)(COALESCE(importer))("number")(comments)(RandomRanger_1.RandomRanger.number({
315
- type: type,
316
- transform: function (value) {
317
- return typescript_1.default.factory.createNumericLiteral(value);
318
- },
319
- setter: function (args) {
320
- return typescript_1.default.factory.createCallExpression(type === "double" &&
321
- tags.every(function (t) {
322
- return t.kind !== "multipleOf" &&
323
- t.kind !== "step";
324
- })
325
- ? COALESCE(importer)("number")
326
- : COALESCE(importer)("integer"), undefined, args.map(function (val) {
327
- return typescript_1.default.factory.createNumericLiteral(val);
328
- }));
329
- },
330
- })({
331
- minimum: 0,
332
- maximum: 100,
333
- gap: 10,
334
- })(tags));
335
- };
348
+ ? "uint"
349
+ : "double";
350
+ return (0, random_custom_1.random_custom)(COALESCE(importer))("number")(comments)(RandomRanger_1.RandomRanger.number({
351
+ type: type,
352
+ transform: function (value) {
353
+ return typescript_1.default.factory.createNumericLiteral(value);
354
+ },
355
+ setter: function (args) {
356
+ return typescript_1.default.factory.createCallExpression(type === "double" &&
357
+ tags.every(function (t) {
358
+ return t.kind !== "multipleOf" &&
359
+ t.kind !== "step";
360
+ })
361
+ ? COALESCE(importer)("number")
362
+ : COALESCE(importer)("integer"), undefined, args.map(function (val) {
363
+ return typescript_1.default.factory.createNumericLiteral(val);
364
+ }));
365
+ },
366
+ })({
367
+ minimum: 0,
368
+ maximum: 100,
369
+ gap: 10,
370
+ })(tags));
336
371
  };
337
372
  };
338
373
  var decode_bigint = function (importer) {
339
- return function (tags) {
340
- return function (comments) {
341
- return (0, random_custom_1.random_custom)(COALESCE(importer))("bigint")(comments)(RandomRanger_1.RandomRanger.number({
342
- type: tags.find(function (t) {
343
- return t.kind === "type" &&
344
- (t.value === "uint" || t.value === "uint64");
345
- })
346
- ? "uint"
347
- : "int",
348
- transform: function (value) { return ExpressionFactory_1.ExpressionFactory.bigint(value); },
349
- setter: function (args) {
350
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)("bigint"), undefined, args.map(function (value) {
351
- return ExpressionFactory_1.ExpressionFactory.bigint(value);
352
- }));
353
- },
354
- })({
355
- minimum: 0,
356
- maximum: 100,
357
- gap: 10,
358
- })(tags));
359
- };
374
+ return function (tags, comments) {
375
+ return (0, random_custom_1.random_custom)(COALESCE(importer))("bigint")(comments)(RandomRanger_1.RandomRanger.number({
376
+ type: tags.find(function (t) {
377
+ return t.kind === "type" &&
378
+ (t.value === "uint" || t.value === "uint64");
379
+ })
380
+ ? "uint"
381
+ : "int",
382
+ transform: function (value) { return ExpressionFactory_1.ExpressionFactory.bigint(value); },
383
+ setter: function (args) {
384
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)("bigint"), undefined, args.map(function (value) {
385
+ return ExpressionFactory_1.ExpressionFactory.bigint(value);
386
+ }));
387
+ },
388
+ })({
389
+ minimum: 0,
390
+ maximum: 100,
391
+ gap: 10,
392
+ })(tags));
360
393
  };
361
394
  };
362
395
  var decode_string = function (importer) {
363
- return function (tags) {
364
- return function (comments) {
365
- return (0, random_custom_1.random_custom)(COALESCE(importer))("string")(comments)((function () {
366
- var e_9, _a;
367
- try {
368
- for (var tags_1 = __values(tags), tags_1_1 = tags_1.next(); !tags_1_1.done; tags_1_1 = tags_1.next()) {
369
- var t = tags_1_1.value;
370
- if (t.kind === "format")
371
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)(t.value), undefined, undefined);
372
- else if (t.kind === "pattern")
373
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)("pattern"), undefined, [typescript_1.default.factory.createIdentifier("/".concat(t.value, "/"))]);
374
- }
396
+ return function (tags, comments) {
397
+ return (0, random_custom_1.random_custom)(COALESCE(importer))("string")(comments)((function () {
398
+ var e_11, _a;
399
+ try {
400
+ for (var tags_1 = __values(tags), tags_1_1 = tags_1.next(); !tags_1_1.done; tags_1_1 = tags_1.next()) {
401
+ var t = tags_1_1.value;
402
+ if (t.kind === "format")
403
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)(t.value), undefined, undefined);
404
+ else if (t.kind === "pattern")
405
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)("pattern"), undefined, [typescript_1.default.factory.createIdentifier("/".concat(t.value, "/"))]);
375
406
  }
376
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
377
- finally {
378
- try {
379
- if (tags_1_1 && !tags_1_1.done && (_a = tags_1.return)) _a.call(tags_1);
380
- }
381
- finally { if (e_9) throw e_9.error; }
407
+ }
408
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
409
+ finally {
410
+ try {
411
+ if (tags_1_1 && !tags_1_1.done && (_a = tags_1.return)) _a.call(tags_1);
382
412
  }
383
- var tail = RandomRanger_1.RandomRanger.length(COALESCE(importer))({
384
- minimum: 5,
385
- maximum: 25,
386
- gap: 5,
387
- })({
388
- fixed: "length",
389
- minimum: "minLength",
390
- maximum: "maxLength",
391
- })(tags);
392
- return typescript_1.default.factory.createCallExpression(COALESCE(importer)("string"), undefined, tail ? [tail] : undefined);
393
- })());
394
- };
413
+ finally { if (e_11) throw e_11.error; }
414
+ }
415
+ var tail = RandomRanger_1.RandomRanger.length(COALESCE(importer))({
416
+ minimum: 5,
417
+ maximum: 25,
418
+ gap: 5,
419
+ })({
420
+ fixed: "length",
421
+ minimum: "minLength",
422
+ maximum: "maxLength",
423
+ })(tags);
424
+ return typescript_1.default.factory.createCallExpression(COALESCE(importer)("string"), undefined, tail ? [tail] : undefined);
425
+ })());
395
426
  };
396
427
  };
397
428
  var decode_array = function (importer) {
@@ -449,6 +480,150 @@ var RandomProgrammer;
449
480
  };
450
481
  };
451
482
  };
483
+ var decode_set = function (importer) {
484
+ return function (explore) {
485
+ return function (meta, tags, comments) {
486
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Set"), undefined, [
487
+ decode_array(importer)(explore)(MetadataArray_1.MetadataArray.create({
488
+ value: meta,
489
+ recursive: false,
490
+ index: null,
491
+ nullables: [],
492
+ name: "Set<".concat(meta.getName(), ">"),
493
+ }), tags, comments),
494
+ ]);
495
+ };
496
+ };
497
+ };
498
+ var decode_map = function (importer) {
499
+ return function (explore) {
500
+ return function (m, tags, comments) {
501
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Map"), undefined, [
502
+ decode_array(importer)(explore)(MetadataArray_1.MetadataArray.create({
503
+ name: "Map<".concat(m.key.getName(), ", ").concat(m.value.getName(), ">"),
504
+ index: null,
505
+ recursive: false,
506
+ nullables: [],
507
+ value: Metadata_1.Metadata.create(__assign(__assign({}, Metadata_1.Metadata.initialize()), { tuples: [
508
+ (function () {
509
+ var tuple = MetadataTuple_1.MetadataTuple.create({
510
+ name: "[".concat(m.key.getName(), ", ").concat(m.value.getName(), "]"),
511
+ index: null,
512
+ recursive: false,
513
+ nullables: [],
514
+ elements: [m.key, m.value],
515
+ });
516
+ tuple.of_map = true;
517
+ return tuple;
518
+ })(),
519
+ ] })),
520
+ }), tags, comments),
521
+ ]);
522
+ };
523
+ };
524
+ };
525
+ var decode_native = function (importer) {
526
+ return function (type, tags, comments) {
527
+ if (type === "Boolean")
528
+ return decode_boolean(importer);
529
+ else if (type === "Number")
530
+ return decode_number(importer)(tags, comments);
531
+ else if (type === "String")
532
+ return decode_string(importer)(tags, comments);
533
+ else if (type === "Date")
534
+ return decode_native_date(importer);
535
+ else if (type === "Uint8Array" ||
536
+ type === "Uint8ClampedArray" ||
537
+ type === "Uint16Array" ||
538
+ type === "Uint32Array" ||
539
+ type === "BigUint64Array" ||
540
+ type === "Int8Array" ||
541
+ type === "Int16Array" ||
542
+ type === "Int32Array" ||
543
+ type === "BigInt64Array" ||
544
+ type === "Float32Array" ||
545
+ type === "Float64Array")
546
+ return decode_native_byte_array(importer)(type);
547
+ else if (type === "ArrayBuffer" || type === "SharedArrayBuffer")
548
+ return decode_native_array_buffer(importer)(type);
549
+ else if (type === "DataView")
550
+ return decode_native_data_view(importer);
551
+ else
552
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier(type), undefined, []);
553
+ };
554
+ };
555
+ var decode_native_date = function (importer) {
556
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Date"), undefined, [
557
+ typescript_1.default.factory.createCallExpression(COALESCE(importer)("datetime"), undefined, []),
558
+ ]);
559
+ };
560
+ var decode_native_byte_array = function (importer) {
561
+ return function (type) {
562
+ new BigInt64Array();
563
+ var _a = __read((function () {
564
+ if (type === "Uint8Array" || type === "Uint8ClampedArray")
565
+ return [0, 255];
566
+ else if (type === "Uint16Array")
567
+ return [0, 65535];
568
+ else if (type === "Uint32Array")
569
+ return [0, 4294967295];
570
+ else if (type === "BigUint64Array")
571
+ return [0, 18446744073709551615];
572
+ else if (type === "Int8Array")
573
+ return [-128, 127];
574
+ else if (type === "Int16Array")
575
+ return [-32768, 32767];
576
+ else if (type === "Int32Array")
577
+ return [-2147483648, 2147483647];
578
+ else if (type === "BigInt64Array")
579
+ return [-9223372036854775808, 9223372036854775807];
580
+ else if (type === "Float32Array")
581
+ return [-1.175494351e38, 3.4028235e38];
582
+ return [Number.MIN_VALUE, Number.MAX_VALUE];
583
+ })(), 2), minimum = _a[0], maximum = _a[1];
584
+ var literal = type === "BigInt64Array" || type === "BigUint64Array"
585
+ ? ExpressionFactory_1.ExpressionFactory.bigint
586
+ : typescript_1.default.factory.createNumericLiteral;
587
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier(type), [], [
588
+ typescript_1.default.factory.createCallExpression(COALESCE(importer)("array"), undefined, [
589
+ typescript_1.default.factory.createArrowFunction(undefined, undefined, [], TypeFactory_1.TypeFactory.keyword("any"), undefined, typescript_1.default.factory.createCallExpression(COALESCE(importer)(type === "Float32Array" ||
590
+ type === "Float64Array"
591
+ ? "number"
592
+ : type === "BigInt64Array" ||
593
+ type === "BigUint64Array"
594
+ ? "bigint"
595
+ : "integer"), undefined, [literal(minimum), literal(maximum)])),
596
+ ]),
597
+ ]);
598
+ };
599
+ };
600
+ var decode_native_array_buffer = function (importer) {
601
+ return function (type) {
602
+ return type === "ArrayBuffer"
603
+ ? IdentifierFactory_1.IdentifierFactory.access(decode_native_byte_array(importer)("Uint8Array"))("buffer")
604
+ : ExpressionFactory_1.ExpressionFactory.selfCall(typescript_1.default.factory.createBlock([
605
+ StatementFactory_1.StatementFactory.constant("length", typescript_1.default.factory.createCallExpression(COALESCE(importer)("integer"), undefined, [])),
606
+ StatementFactory_1.StatementFactory.constant("buffer", typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("SharedArrayBuffer"), [], [typescript_1.default.factory.createIdentifier("length")])),
607
+ StatementFactory_1.StatementFactory.constant("bytes", typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("Uint8Array"), [], [typescript_1.default.factory.createIdentifier("buffer")])),
608
+ typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("bytes"))("set"), undefined, [
609
+ typescript_1.default.factory.createCallExpression(COALESCE(importer)("array"), undefined, [
610
+ typescript_1.default.factory.createArrowFunction(undefined, undefined, [], TypeFactory_1.TypeFactory.keyword("any"), undefined, typescript_1.default.factory.createCallExpression(COALESCE(importer)("integer"), undefined, [
611
+ typescript_1.default.factory.createNumericLiteral(0),
612
+ typescript_1.default.factory.createNumericLiteral(255),
613
+ ])),
614
+ typescript_1.default.factory.createIdentifier("length"),
615
+ ]),
616
+ typescript_1.default.factory.createNumericLiteral(0),
617
+ ])),
618
+ typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createIdentifier("buffer")),
619
+ ], true));
620
+ };
621
+ };
622
+ var decode_native_data_view = function (importer) {
623
+ return typescript_1.default.factory.createNewExpression(typescript_1.default.factory.createIdentifier("DataView"), [], [
624
+ IdentifierFactory_1.IdentifierFactory.access(decode_native_byte_array(importer)("Uint8Array"))("buffer"),
625
+ ]);
626
+ };
452
627
  })(RandomProgrammer || (exports.RandomProgrammer = RandomProgrammer = {}));
453
628
  var PREFIX = {
454
629
  object: function (i) { return "$ro".concat(i); },