typia 5.0.0-dev.20230823 → 5.0.0-dev.20230824

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 (387) hide show
  1. package/lib/Primitive.d.ts +14 -12
  2. package/lib/Resolved.d.ts +46 -0
  3. package/lib/{schemas/metadata/IMetadataTag.js → Resolved.js} +1 -1
  4. package/lib/Resolved.js.map +1 -0
  5. package/lib/factories/ExpressionFactory.d.ts +2 -0
  6. package/lib/factories/ExpressionFactory.js +24 -0
  7. package/lib/factories/ExpressionFactory.js.map +1 -1
  8. package/lib/factories/IdentifierFactory.d.ts +2 -1
  9. package/lib/factories/IdentifierFactory.js +11 -0
  10. package/lib/factories/IdentifierFactory.js.map +1 -1
  11. package/lib/factories/MetadataCollection.d.ts +7 -7
  12. package/lib/factories/MetadataCollection.js +4 -4
  13. package/lib/factories/MetadataCollection.js.map +1 -1
  14. package/lib/factories/MetadataFactory.d.ts +1 -1
  15. package/lib/factories/MetadataTagFactory.d.ts +2 -2
  16. package/lib/factories/MetadataTagFactory.js +15 -13
  17. package/lib/factories/MetadataTagFactory.js.map +1 -1
  18. package/lib/factories/ProtobufFactory.js +11 -10
  19. package/lib/factories/ProtobufFactory.js.map +1 -1
  20. package/lib/factories/internal/metadata/emend_metadata_atomics.js +6 -6
  21. package/lib/factories/internal/metadata/emend_metadata_atomics.js.map +1 -1
  22. package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +5 -0
  23. package/lib/factories/internal/metadata/{emplace_metadata_array.js → emplace_metadata_array_type.js} +4 -4
  24. package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -0
  25. package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -2
  26. package/lib/factories/internal/metadata/explore_metadata.js +3 -3
  27. package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
  28. package/lib/factories/internal/metadata/iterate_metadata_array.js +7 -3
  29. package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
  30. package/lib/factories/internal/metadata/iterate_metadata_atomic.js +1 -1
  31. package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
  32. package/lib/factories/internal/metadata/iterate_metadata_collection.js +26 -18
  33. package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
  34. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +2 -0
  35. package/lib/factories/internal/metadata/{iterate_metadata_tag.js → iterate_metadata_comment_tags.js} +4 -4
  36. package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -0
  37. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +138 -16
  38. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  39. package/lib/factories/internal/metadata/iterate_metadata_native.js +2 -10
  40. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  41. package/lib/factories/internal/metadata/iterate_metadata_object.js +0 -7
  42. package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
  43. package/lib/factories/internal/metadata/iterate_metadata_resolve.js +6 -6
  44. package/lib/factories/internal/metadata/iterate_metadata_resolve.js.map +1 -1
  45. package/lib/factories/internal/metadata/iterate_metadata_sort.js +4 -4
  46. package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
  47. package/lib/factories/internal/metadata/iterate_metadata_tuple.js +6 -2
  48. package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
  49. package/lib/factories/internal/metadata/iterate_metadata_type_tags.d.ts +3 -0
  50. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js +157 -0
  51. package/lib/factories/internal/metadata/iterate_metadata_type_tags.js.map +1 -0
  52. package/lib/functional/$ProtobufWriter.js.map +1 -1
  53. package/lib/functional/$any.js +2 -1
  54. package/lib/functional/$any.js.map +1 -1
  55. package/lib/functional/$clone.d.ts +2 -0
  56. package/lib/functional/$clone.js +8 -0
  57. package/lib/functional/$clone.js.map +1 -0
  58. package/lib/json.d.ts +15 -15
  59. package/lib/misc.d.ts +42 -42
  60. package/lib/module.d.ts +20 -56
  61. package/lib/module.js +4 -17
  62. package/lib/module.js.map +1 -1
  63. package/lib/programmers/AssertProgrammer.js +2 -4
  64. package/lib/programmers/AssertProgrammer.js.map +1 -1
  65. package/lib/programmers/CheckerProgrammer.js +39 -30
  66. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  67. package/lib/programmers/FeatureProgrammer.d.ts +4 -4
  68. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  69. package/lib/programmers/IsProgrammer.d.ts +1 -1
  70. package/lib/programmers/IsProgrammer.js +3 -5
  71. package/lib/programmers/IsProgrammer.js.map +1 -1
  72. package/lib/programmers/RandomProgrammer.js +328 -142
  73. package/lib/programmers/RandomProgrammer.js.map +1 -1
  74. package/lib/programmers/ValidateProgrammer.js +2 -4
  75. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  76. package/lib/programmers/helpers/AtomicPredicator.js +2 -2
  77. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  78. package/lib/programmers/helpers/FunctionImporeter.d.ts +2 -0
  79. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  80. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  81. package/lib/programmers/helpers/ICheckEntry.d.ts +1 -1
  82. package/lib/programmers/helpers/ProtobufUtil.js +2 -2
  83. package/lib/programmers/helpers/ProtobufUtil.js.map +1 -1
  84. package/lib/programmers/helpers/RandomJoiner.d.ts +4 -4
  85. package/lib/programmers/helpers/RandomJoiner.js.map +1 -1
  86. package/lib/programmers/helpers/RandomRanger.d.ts +6 -6
  87. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  88. package/lib/programmers/helpers/StringifyPredicator.js +1 -2
  89. package/lib/programmers/helpers/StringifyPredicator.js.map +1 -1
  90. package/lib/programmers/helpers/UnionExplorer.d.ts +8 -8
  91. package/lib/programmers/helpers/UnionExplorer.js +40 -29
  92. package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
  93. package/lib/programmers/helpers/disable_function_importer_declare.js +1 -0
  94. package/lib/programmers/helpers/disable_function_importer_declare.js.map +1 -1
  95. package/lib/programmers/internal/application_array.js +1 -1
  96. package/lib/programmers/internal/application_array.js.map +1 -1
  97. package/lib/programmers/internal/application_default_string.js +2 -2
  98. package/lib/programmers/internal/application_default_string.js.map +1 -1
  99. package/lib/programmers/internal/application_resolved.d.ts +2 -2
  100. package/lib/programmers/internal/application_resolved.js +2 -2
  101. package/lib/programmers/internal/application_resolved.js.map +1 -1
  102. package/lib/programmers/internal/application_schema.js +7 -7
  103. package/lib/programmers/internal/application_schema.js.map +1 -1
  104. package/lib/programmers/internal/application_string.js.map +1 -1
  105. package/lib/programmers/internal/application_tuple.js +10 -9
  106. package/lib/programmers/internal/application_tuple.js.map +1 -1
  107. package/lib/programmers/internal/check_array_length.js.map +1 -1
  108. package/lib/programmers/internal/check_array_tags.js +39 -0
  109. package/lib/programmers/internal/check_array_tags.js.map +1 -0
  110. package/lib/programmers/internal/check_bigint.js +88 -74
  111. package/lib/programmers/internal/check_bigint.js.map +1 -1
  112. package/lib/programmers/internal/check_number.js +142 -131
  113. package/lib/programmers/internal/check_number.js.map +1 -1
  114. package/lib/programmers/internal/check_string.js +30 -6
  115. package/lib/programmers/internal/check_string.js.map +1 -1
  116. package/lib/programmers/internal/check_string_tags.js.map +1 -1
  117. package/lib/programmers/internal/check_template.js +16 -49
  118. package/lib/programmers/internal/check_template.js.map +1 -1
  119. package/lib/programmers/internal/check_union_array_like.js +3 -2
  120. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  121. package/lib/programmers/internal/metadata_to_pattern.js +4 -4
  122. package/lib/programmers/internal/metadata_to_pattern.js.map +1 -1
  123. package/lib/programmers/internal/stringify_dynamic_properties.js +2 -1
  124. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  125. package/lib/programmers/internal/wrap_metadata_rest_tuple.js +9 -5
  126. package/lib/programmers/internal/wrap_metadata_rest_tuple.js.map +1 -1
  127. package/lib/programmers/json/JsonStringifyProgrammer.js +33 -27
  128. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  129. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +1 -1
  130. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  131. package/lib/programmers/misc/MiscCloneProgrammer.js +124 -43
  132. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  133. package/lib/programmers/misc/MiscIsCloneProgrammer.js +1 -1
  134. package/lib/programmers/misc/MiscIsCloneProgrammer.js.map +1 -1
  135. package/lib/programmers/misc/MiscLiteralsProgrammer.js +3 -3
  136. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  137. package/lib/programmers/misc/MiscPruneProgrammer.js +15 -15
  138. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  139. package/lib/programmers/misc/MiscValidateCloneProgrammer.js +1 -1
  140. package/lib/programmers/misc/MiscValidateCloneProgrammer.js.map +1 -1
  141. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +3 -3
  142. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  143. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +8 -8
  144. package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
  145. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +3 -3
  146. package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
  147. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js +2 -2
  148. package/lib/programmers/protobuf/ProtobufIsDecodeProgrammer.js.map +1 -1
  149. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +1 -1
  150. package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
  151. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js +1 -1
  152. package/lib/programmers/protobuf/ProtobufValidateDecodeProgrammer.js.map +1 -1
  153. package/lib/protobuf.d.ts +631 -10
  154. package/lib/protobuf.js +13 -13
  155. package/lib/protobuf.js.map +1 -1
  156. package/lib/schemas/json/IJsonSchema.d.ts +2 -2
  157. package/lib/schemas/metadata/IMetadata.d.ts +13 -6
  158. package/lib/schemas/metadata/IMetadataAlias.d.ts +2 -2
  159. package/lib/schemas/metadata/IMetadataArray.d.ts +4 -6
  160. package/lib/schemas/metadata/IMetadataArrayType.d.ts +8 -0
  161. package/lib/{CustomValidatorMap.js → schemas/metadata/IMetadataArrayType.js} +1 -1
  162. package/lib/schemas/metadata/IMetadataArrayType.js.map +1 -0
  163. package/lib/schemas/metadata/IMetadataAtomic.d.ts +5 -0
  164. package/lib/schemas/metadata/{IMetadataResolved.js → IMetadataAtomic.js} +1 -1
  165. package/lib/schemas/metadata/IMetadataAtomic.js.map +1 -0
  166. package/lib/schemas/metadata/IMetadataCollection.d.ts +4 -4
  167. package/lib/schemas/metadata/{IMetadataTag.d.ts → IMetadataCommentTag.d.ts} +2 -2
  168. package/lib/schemas/metadata/IMetadataCommentTag.js +3 -0
  169. package/lib/schemas/metadata/IMetadataCommentTag.js.map +1 -0
  170. package/lib/schemas/metadata/{IMetadataResolved.d.ts → IMetadataEscaped.d.ts} +1 -1
  171. package/lib/schemas/metadata/IMetadataEscaped.js +3 -0
  172. package/lib/schemas/metadata/IMetadataEscaped.js.map +1 -0
  173. package/lib/schemas/metadata/IMetadataProperty.d.ts +2 -2
  174. package/lib/schemas/metadata/IMetadataTuple.d.ts +4 -6
  175. package/lib/schemas/metadata/IMetadataTupleType.d.ts +8 -0
  176. package/lib/schemas/metadata/IMetadataTupleType.js +3 -0
  177. package/lib/schemas/metadata/IMetadataTupleType.js.map +1 -0
  178. package/lib/schemas/metadata/IMetadataTypeTag.d.ts +6 -0
  179. package/lib/schemas/metadata/IMetadataTypeTag.js +3 -0
  180. package/lib/schemas/metadata/IMetadataTypeTag.js.map +1 -0
  181. package/lib/schemas/metadata/Metadata.d.ts +4 -4
  182. package/lib/schemas/metadata/Metadata.js +217 -157
  183. package/lib/schemas/metadata/Metadata.js.map +1 -1
  184. package/lib/schemas/metadata/MetadataAlias.d.ts +2 -2
  185. package/lib/schemas/metadata/MetadataArray.d.ts +6 -6
  186. package/lib/schemas/metadata/MetadataArray.js +5 -19
  187. package/lib/schemas/metadata/MetadataArray.js.map +1 -1
  188. package/lib/schemas/metadata/MetadataArrayType.d.ts +14 -0
  189. package/lib/schemas/metadata/MetadataArrayType.js +36 -0
  190. package/lib/schemas/metadata/MetadataArrayType.js.map +1 -0
  191. package/lib/schemas/metadata/{MetadataResolved.d.ts → MetadataEscaped.d.ts} +3 -3
  192. package/lib/schemas/metadata/{MetadataResolved.js → MetadataEscaped.js} +11 -11
  193. package/lib/schemas/metadata/MetadataEscaped.js.map +1 -0
  194. package/lib/schemas/metadata/MetadataProperty.d.ts +2 -2
  195. package/lib/schemas/metadata/MetadataTuple.d.ts +4 -6
  196. package/lib/schemas/metadata/MetadataTuple.js +5 -19
  197. package/lib/schemas/metadata/MetadataTuple.js.map +1 -1
  198. package/lib/schemas/metadata/MetadataTupleType.d.ts +13 -0
  199. package/lib/schemas/metadata/MetadataTupleType.js +40 -0
  200. package/lib/schemas/metadata/MetadataTupleType.js.map +1 -0
  201. package/lib/tags/ExclusiveMaximum.d.ts +8 -0
  202. package/lib/tags/ExclusiveMaximum.js +3 -0
  203. package/lib/tags/ExclusiveMaximum.js.map +1 -0
  204. package/lib/tags/ExclusiveMinimum.d.ts +8 -0
  205. package/lib/tags/ExclusiveMinimum.js +3 -0
  206. package/lib/tags/ExclusiveMinimum.js.map +1 -0
  207. package/lib/tags/Format.d.ts +8 -0
  208. package/lib/tags/Format.js +3 -0
  209. package/lib/tags/Format.js.map +1 -0
  210. package/lib/tags/MaxItems.d.ts +8 -0
  211. package/lib/tags/MaxItems.js +3 -0
  212. package/lib/tags/MaxItems.js.map +1 -0
  213. package/lib/tags/MaxLength.d.ts +8 -0
  214. package/lib/tags/MaxLength.js +3 -0
  215. package/lib/tags/MaxLength.js.map +1 -0
  216. package/lib/tags/Maximum.d.ts +8 -0
  217. package/lib/tags/Maximum.js +3 -0
  218. package/lib/tags/Maximum.js.map +1 -0
  219. package/lib/tags/MinItems.d.ts +8 -0
  220. package/lib/tags/MinItems.js +3 -0
  221. package/lib/tags/MinItems.js.map +1 -0
  222. package/lib/tags/MinLength.d.ts +8 -0
  223. package/lib/tags/MinLength.js +3 -0
  224. package/lib/tags/MinLength.js.map +1 -0
  225. package/lib/tags/Minimum.d.ts +8 -0
  226. package/lib/tags/Minimum.js +3 -0
  227. package/lib/tags/Minimum.js.map +1 -0
  228. package/lib/tags/MultipleOf.d.ts +8 -0
  229. package/lib/tags/MultipleOf.js +3 -0
  230. package/lib/tags/MultipleOf.js.map +1 -0
  231. package/lib/tags/Pattern.d.ts +8 -0
  232. package/lib/tags/Pattern.js +3 -0
  233. package/lib/tags/Pattern.js.map +1 -0
  234. package/lib/tags/TagBase.d.ts +10 -0
  235. package/lib/tags/TagBase.js +3 -0
  236. package/lib/tags/TagBase.js.map +1 -0
  237. package/lib/tags/Type.d.ts +13 -0
  238. package/lib/tags/Type.js +3 -0
  239. package/lib/tags/Type.js.map +1 -0
  240. package/lib/tags/index.d.ts +12 -0
  241. package/lib/tags/index.js +29 -0
  242. package/lib/tags/index.js.map +1 -0
  243. package/lib/transformers/FileTransformer.d.ts +1 -1
  244. package/lib/transformers/FileTransformer.js +12 -1
  245. package/lib/transformers/FileTransformer.js.map +1 -1
  246. package/lib/transformers/IProject.d.ts +1 -0
  247. package/lib/transformers/features/json/JsonApplicationTransformer.js +5 -3
  248. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  249. package/lib/transformers/features/misc/MetadataTransformer.js +1 -1
  250. package/lib/transformers/features/misc/MetadataTransformer.js.map +1 -1
  251. package/lib/utils/RandomGenerator.js +3 -2
  252. package/lib/utils/RandomGenerator.js.map +1 -1
  253. package/package.json +2 -1
  254. package/src/Primitive.ts +19 -15
  255. package/src/Resolved.ts +116 -0
  256. package/src/factories/ExpressionFactory.ts +44 -0
  257. package/src/factories/IdentifierFactory.ts +15 -0
  258. package/src/factories/MetadataCollection.ts +18 -12
  259. package/src/factories/MetadataFactory.ts +1 -1
  260. package/src/factories/MetadataTagFactory.ts +28 -27
  261. package/src/factories/ProtobufFactory.ts +12 -10
  262. package/src/factories/internal/metadata/emend_metadata_atomics.ts +7 -5
  263. package/src/factories/internal/metadata/{emplace_metadata_array.ts → emplace_metadata_array_type.ts} +3 -3
  264. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +2 -2
  265. package/src/factories/internal/metadata/explore_metadata.ts +3 -3
  266. package/src/factories/internal/metadata/iterate_metadata_array.ts +13 -5
  267. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +6 -4
  268. package/src/factories/internal/metadata/iterate_metadata_collection.ts +29 -22
  269. package/src/factories/internal/metadata/{iterate_metadata_tag.ts → iterate_metadata_comment_tags.ts} +1 -1
  270. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +109 -15
  271. package/src/factories/internal/metadata/iterate_metadata_native.ts +0 -9
  272. package/src/factories/internal/metadata/iterate_metadata_object.ts +10 -10
  273. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +6 -6
  274. package/src/factories/internal/metadata/iterate_metadata_sort.ts +4 -4
  275. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +12 -4
  276. package/src/factories/internal/metadata/iterate_metadata_type_tags.ts +183 -0
  277. package/src/functional/$any.ts +3 -1
  278. package/src/functional/$clone.ts +4 -0
  279. package/src/json.ts +15 -15
  280. package/src/misc.ts +42 -42
  281. package/src/module.ts +20 -72
  282. package/src/programmers/AssertProgrammer.ts +4 -2
  283. package/src/programmers/CheckerProgrammer.ts +81 -48
  284. package/src/programmers/FeatureProgrammer.ts +6 -6
  285. package/src/programmers/IsProgrammer.ts +5 -3
  286. package/src/programmers/RandomProgrammer.ts +360 -41
  287. package/src/programmers/ValidateProgrammer.ts +4 -2
  288. package/src/programmers/helpers/AtomicPredicator.ts +2 -2
  289. package/src/programmers/helpers/FunctionImporeter.ts +2 -0
  290. package/src/programmers/helpers/ICheckEntry.ts +1 -1
  291. package/src/programmers/helpers/ProtobufUtil.ts +1 -1
  292. package/src/programmers/helpers/RandomJoiner.ts +8 -4
  293. package/src/programmers/helpers/RandomRanger.ts +8 -8
  294. package/src/programmers/helpers/StringifyPredicator.ts +1 -2
  295. package/src/programmers/helpers/UnionExplorer.ts +48 -34
  296. package/src/programmers/helpers/disable_function_importer_declare.ts +6 -1
  297. package/src/programmers/internal/application_array.ts +5 -4
  298. package/src/programmers/internal/application_default_string.ts +6 -2
  299. package/src/programmers/internal/application_resolved.ts +4 -4
  300. package/src/programmers/internal/application_schema.ts +7 -7
  301. package/src/programmers/internal/application_string.ts +2 -2
  302. package/src/programmers/internal/application_tuple.ts +12 -11
  303. package/src/programmers/internal/check_array_length.ts +2 -2
  304. package/src/programmers/internal/check_array_tags.ts +45 -0
  305. package/src/programmers/internal/check_bigint.ts +45 -17
  306. package/src/programmers/internal/check_number.ts +97 -70
  307. package/src/programmers/internal/check_string.ts +43 -12
  308. package/src/programmers/internal/check_string_tags.ts +3 -3
  309. package/src/programmers/internal/check_template.ts +1 -12
  310. package/src/programmers/internal/check_union_array_like.ts +6 -5
  311. package/src/programmers/internal/metadata_to_pattern.ts +4 -4
  312. package/src/programmers/internal/stringify_dynamic_properties.ts +1 -1
  313. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +9 -5
  314. package/src/programmers/json/JsonStringifyProgrammer.ts +47 -29
  315. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +1 -1
  316. package/src/programmers/misc/MiscCloneProgrammer.ts +253 -55
  317. package/src/programmers/misc/MiscIsCloneProgrammer.ts +1 -1
  318. package/src/programmers/misc/MiscLiteralsProgrammer.ts +3 -3
  319. package/src/programmers/misc/MiscPruneProgrammer.ts +31 -19
  320. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +1 -1
  321. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +18 -9
  322. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +18 -14
  323. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +15 -15
  324. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +12 -2
  325. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +6 -6
  326. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +2 -2
  327. package/src/protobuf.ts +663 -31
  328. package/src/schemas/json/IJsonSchema.ts +2 -2
  329. package/src/schemas/metadata/IMetadata.ts +13 -7
  330. package/src/schemas/metadata/IMetadataAlias.ts +2 -2
  331. package/src/schemas/metadata/IMetadataArray.ts +4 -7
  332. package/src/schemas/metadata/IMetadataArrayType.ts +10 -0
  333. package/src/schemas/metadata/IMetadataAtomic.ts +6 -0
  334. package/src/schemas/metadata/IMetadataCollection.ts +4 -4
  335. package/src/schemas/metadata/{IMetadataTag.ts → IMetadataCommentTag.ts} +17 -17
  336. package/src/schemas/metadata/IMetadataDictionary.ts +4 -4
  337. package/src/schemas/metadata/{IMetadataResolved.ts → IMetadataEscaped.ts} +1 -1
  338. package/src/schemas/metadata/IMetadataProperty.ts +2 -2
  339. package/src/schemas/metadata/IMetadataTuple.ts +4 -7
  340. package/src/schemas/metadata/IMetadataTupleType.ts +10 -0
  341. package/src/schemas/metadata/IMetadataTypeTag.ts +6 -0
  342. package/src/schemas/metadata/Metadata.ts +125 -63
  343. package/src/schemas/metadata/MetadataAlias.ts +2 -2
  344. package/src/schemas/metadata/MetadataArray.ts +10 -34
  345. package/src/schemas/metadata/MetadataArrayType.ts +57 -0
  346. package/src/schemas/metadata/{MetadataResolved.ts → MetadataEscaped.ts} +9 -9
  347. package/src/schemas/metadata/MetadataProperty.ts +2 -2
  348. package/src/schemas/metadata/MetadataTuple.ts +10 -37
  349. package/src/schemas/metadata/MetadataTupleType.ts +67 -0
  350. package/src/tags/ExclusiveMaximum.ts +8 -0
  351. package/src/tags/ExclusiveMinimum.ts +8 -0
  352. package/src/tags/Format.ts +29 -0
  353. package/src/tags/MaxItems.ts +8 -0
  354. package/src/tags/MaxLength.ts +8 -0
  355. package/src/tags/Maximum.ts +8 -0
  356. package/src/tags/MinItems.ts +8 -0
  357. package/src/tags/MinLength.ts +8 -0
  358. package/src/tags/Minimum.ts +8 -0
  359. package/src/tags/MultipleOf.ts +10 -0
  360. package/src/tags/Pattern.ts +8 -0
  361. package/src/tags/TagBase.ts +17 -0
  362. package/src/tags/Type.ts +30 -0
  363. package/src/tags/index.ts +12 -0
  364. package/src/transformers/FileTransformer.ts +2 -2
  365. package/src/transformers/IProject.ts +1 -0
  366. package/src/transformers/features/json/JsonApplicationTransformer.ts +4 -3
  367. package/src/transformers/features/misc/MetadataTransformer.ts +1 -1
  368. package/src/typings/Atomic.ts +1 -0
  369. package/src/utils/RandomGenerator.ts +4 -2
  370. package/lib/CustomValidatorMap.d.ts +0 -110
  371. package/lib/CustomValidatorMap.js.map +0 -1
  372. package/lib/factories/internal/metadata/emplace_metadata_array.d.ts +0 -5
  373. package/lib/factories/internal/metadata/emplace_metadata_array.js.map +0 -1
  374. package/lib/factories/internal/metadata/iterate_metadata_tag.d.ts +0 -2
  375. package/lib/factories/internal/metadata/iterate_metadata_tag.js.map +0 -1
  376. package/lib/programmers/internal/check_array.js +0 -44
  377. package/lib/programmers/internal/check_array.js.map +0 -1
  378. package/lib/programmers/internal/check_custom.d.ts +0 -1
  379. package/lib/programmers/internal/check_custom.js +0 -30
  380. package/lib/programmers/internal/check_custom.js.map +0 -1
  381. package/lib/schemas/metadata/IMetadataResolved.js.map +0 -1
  382. package/lib/schemas/metadata/IMetadataTag.js.map +0 -1
  383. package/lib/schemas/metadata/MetadataResolved.js.map +0 -1
  384. package/src/CustomValidatorMap.ts +0 -126
  385. package/src/programmers/internal/check_array.ts +0 -30
  386. package/src/programmers/internal/check_custom.ts +0 -31
  387. /package/lib/programmers/internal/{check_array.d.ts → check_array_tags.d.ts} +0 -0
package/src/misc.ts CHANGED
@@ -12,7 +12,7 @@ import { Namespace } from "./functional/Namespace";
12
12
  import { Atomic } from "./typings/Atomic";
13
13
 
14
14
  import { IValidation } from "./IValidation";
15
- import { Primitive } from "./Primitive";
15
+ import { Resolved } from "./Resolved";
16
16
 
17
17
  /**
18
18
  * > You must configure the generic argument `T`.
@@ -62,8 +62,8 @@ export function literals(): never {
62
62
  * Clone a data.
63
63
  *
64
64
  * Clones an instance following type `T`. If the target *input* value or its member
65
- * variable contains a class instance that is having a `toJSON()` method, its return
66
- * value would be cloned.
65
+ * variable contains a class instance having methods, those methods would not be
66
+ * cloned.
67
67
  *
68
68
  * For reference, this `typia.misc.clone()` function does not validate the input value
69
69
  * type. It just believes that the input value is following the type `T`. Therefore,
@@ -76,7 +76,7 @@ export function literals(): never {
76
76
  *
77
77
  * @author Jeongho Nam - https://github.com/samchon
78
78
  */
79
- export function clone<T>(input: T): Primitive<T>;
79
+ export function clone<T>(input: T): Resolved<T>;
80
80
 
81
81
  /**
82
82
  * @internal
@@ -90,8 +90,8 @@ Object.assign(clone, Namespace.misc.clone("clone"));
90
90
  * Clone a data with type assertion.
91
91
  *
92
92
  * Clones an instance following type `T`, with type assertion. If the target `input`
93
- * value or its member variable contains a class instance that is having a `toJSON()`
94
- * method, its return value would be cloned.
93
+ * value or its member variable contains a class instance having methods, those
94
+ * methods would not be cloned.
95
95
  *
96
96
  * In such reason, when `input` value is not matched with the type `T`, it throws an
97
97
  * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, cloned
@@ -103,14 +103,14 @@ Object.assign(clone, Namespace.misc.clone("clone"));
103
103
  *
104
104
  * @author Jeongho Nam - https://github.com/samchon
105
105
  */
106
- export function assertClone<T>(input: T): Primitive<T>;
106
+ export function assertClone<T>(input: T): Resolved<T>;
107
107
 
108
108
  /**
109
109
  * Clone a data with type assertion.
110
110
  *
111
111
  * Clones an instance following type `T`, with type assertion. If the target `input`
112
- * value or its member variable contains a class instance that is having a `toJSON()`
113
- * method, its return value would be cloned.
112
+ * value or its member variable contains a class instance having methods, those
113
+ * methods would not be cloned.
114
114
  *
115
115
  * In such reason, when `input` value is not matched with the type `T`, it throws an
116
116
  * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value, cloned
@@ -122,7 +122,7 @@ export function assertClone<T>(input: T): Primitive<T>;
122
122
  *
123
123
  * @author Jeongho Nam - https://github.com/samchon
124
124
  */
125
- export function assertClone<T>(input: unknown): Primitive<T>;
125
+ export function assertClone<T>(input: unknown): Resolved<T>;
126
126
 
127
127
  /**
128
128
  * @internal
@@ -137,8 +137,8 @@ Object.assign(assertClone, Namespace.misc.clone("assertClone"));
137
137
  * Clone a data with type checking.
138
138
  *
139
139
  * Clones an instance following type `T`, with type checking. If the target `input`
140
- * value or its member variable contains a class instance that is having a `toJSON()`
141
- * method, its return value would be cloned.
140
+ * value or its member variable contains a class instance having methods, those
141
+ * methods would not be cloned.
142
142
  *
143
143
  * In such reason, when `input` value is not matched with the type `T`, it returns
144
144
  * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
@@ -150,14 +150,14 @@ Object.assign(assertClone, Namespace.misc.clone("assertClone"));
150
150
  *
151
151
  * @author Jeongho Nam - https://github.com/samchon
152
152
  */
153
- export function isClone<T>(input: T): Primitive<T> | null;
153
+ export function isClone<T>(input: T): Resolved<T> | null;
154
154
 
155
155
  /**
156
156
  * Clone a data with type checking.
157
157
  *
158
158
  * Clones an instance following type `T`, with type checking. If the target `input`
159
- * value or its member variable contains a class instance that is having a `toJSON()`
160
- * method, its return value would be cloned.
159
+ * value or its member variable contains a class instance having methods, those
160
+ * methods would not be cloned.
161
161
  *
162
162
  * In such reason, when `input` value is not matched with the type `T`, it returns
163
163
  * `null` value instead. Otherwise, there's no problem on the `input` value, cloned
@@ -169,7 +169,7 @@ export function isClone<T>(input: T): Primitive<T> | null;
169
169
  *
170
170
  * @author Jeongho Nam - https://github.com/samchon
171
171
  */
172
- export function isClone<T>(input: unknown): Primitive<T> | null;
172
+ export function isClone<T>(input: unknown): Resolved<T> | null;
173
173
 
174
174
  /**
175
175
  * @internal
@@ -184,8 +184,8 @@ Object.assign(isClone, Namespace.misc.clone("isClone"));
184
184
  * Clone a data with detailed type validation.
185
185
  *
186
186
  * Clones an instance following type `T`, with detailed type validation. If the target
187
- * `input` value or its member variable contains a class instance that is having a
188
- * `toJSON()` method, its return value would be cloned.
187
+ * `input` value or its member variable contains a class instance having methods,
188
+ * those methods would not be cloned.
189
189
  *
190
190
  * In such reason, when `input` value is not matched with the type `T`, it returns
191
191
  * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
@@ -196,14 +196,14 @@ Object.assign(isClone, Namespace.misc.clone("isClone"));
196
196
  * @param input A value to be cloned
197
197
  * @returns Validation result with cloned value
198
198
  */
199
- export function validateClone<T>(input: T): IValidation<Primitive<T>>;
199
+ export function validateClone<T>(input: T): IValidation<Resolved<T>>;
200
200
 
201
201
  /**
202
202
  * Clone a data with detailed type validation.
203
203
  *
204
204
  * Clones an instance following type `T`, with detailed type validation. If the target
205
- * `input` value or its member variable contains a class instance that is having a
206
- * `toJSON()` method, its return value would be cloned.
205
+ * `input` value or its member variable contains a class instance having methods,
206
+ * those methods would not be cloned.
207
207
  *
208
208
  * In such reason, when `input` value is not matched with the type `T`, it returns
209
209
  * {@link IValidation.Failure} value. Otherwise, there's no problem on the `input`
@@ -214,7 +214,7 @@ export function validateClone<T>(input: T): IValidation<Primitive<T>>;
214
214
  * @param input A value to be cloned
215
215
  * @returns Validation result with cloned value
216
216
  */
217
- export function validateClone<T>(input: unknown): IValidation<Primitive<T>>;
217
+ export function validateClone<T>(input: unknown): IValidation<Resolved<T>>;
218
218
 
219
219
  /**
220
220
  * @internal
@@ -406,8 +406,8 @@ Object.assign(validatePrune, Namespace.validate());
406
406
  /**
407
407
  * Creates a reusable {@link clone} function.
408
408
  *
409
- * @danger You have to specify the generic argument `T`
410
- * @return Nothing until specifying the generic argument `T`
409
+ * @danger You must configure the generic argument `T`
410
+ * @returns Nothing until you configure the generic argument `T`
411
411
  * @throws compile error
412
412
  *
413
413
  * @author Jeongho Nam - https://github.com/samchon
@@ -422,7 +422,7 @@ export function createClone(): never;
422
422
  *
423
423
  * @author Jeongho Nam - https://github.com/samchon
424
424
  */
425
- export function createClone<T>(): (input: T) => Primitive<T>;
425
+ export function createClone<T>(): (input: T) => Resolved<T>;
426
426
 
427
427
  /**
428
428
  * @internal
@@ -435,8 +435,8 @@ Object.assign(createClone, clone);
435
435
  /**
436
436
  * Creates a reusable {@link assertClone} function.
437
437
  *
438
- * @danger You have to specify the generic argument `T`
439
- * @return Nothing until specifying the generic argument `T`
438
+ * @danger You must configure the generic argument `T`
439
+ * @returns Nothing until you configure the generic argument `T`
440
440
  * @throws compile error
441
441
  *
442
442
  * @author Jeongho Nam - https://github.com/samchon
@@ -451,7 +451,7 @@ export function createAssertClone(): never;
451
451
  *
452
452
  * @author Jeongho Nam - https://github.com/samchon
453
453
  */
454
- export function createAssertClone<T>(): (input: unknown) => Primitive<T>;
454
+ export function createAssertClone<T>(): (input: unknown) => Resolved<T>;
455
455
 
456
456
  /**
457
457
  * @internal
@@ -464,8 +464,8 @@ Object.assign(createAssertClone, assertClone);
464
464
  /**
465
465
  * Creates a reusable {@link isClone} function.
466
466
  *
467
- * @danger You have to specify the generic argument `T`
468
- * @return Nothing until specifying the generic argument `T`
467
+ * @danger You must configure the generic argument `T`
468
+ * @returns Nothing until you configure the generic argument `T`
469
469
  * @throws compile error
470
470
  *
471
471
  * @author Jeongho Nam - https://github.com/samchon
@@ -480,7 +480,7 @@ export function createIsClone(): never;
480
480
  *
481
481
  * @author Jeongho Nam - https://github.com/samchon
482
482
  */
483
- export function createIsClone<T>(): (input: unknown) => Primitive<T> | null;
483
+ export function createIsClone<T>(): (input: unknown) => Resolved<T> | null;
484
484
 
485
485
  /**
486
486
  * @internal
@@ -493,8 +493,8 @@ Object.assign(createIsClone, isClone);
493
493
  /**
494
494
  * Creates a reusable {@link validateClone} function.
495
495
  *
496
- * @danger You have to specify the generic argument `T`
497
- * @return Nothing until specifying the generic argument `T`
496
+ * @danger You must configure the generic argument `T`
497
+ * @returns Nothing until you configure the generic argument `T`
498
498
  * @throws compile error
499
499
  *
500
500
  * @author Jeongho Nam - https://github.com/samchon
@@ -511,7 +511,7 @@ export function createValidateClone(): never;
511
511
  */
512
512
  export function createValidateClone<T>(): (
513
513
  input: unknown,
514
- ) => IValidation<Primitive<T>>;
514
+ ) => IValidation<Resolved<T>>;
515
515
 
516
516
  /**
517
517
  * @internal
@@ -524,8 +524,8 @@ Object.assign(createValidateClone, validateClone);
524
524
  /**
525
525
  * Creates a reusable {@link prune} function.
526
526
  *
527
- * @danger You have to specify the generic argument `T`
528
- * @return Nothing until specifying the generic argument `T`
527
+ * @danger You must configure the generic argument `T`
528
+ * @returns Nothing until you configure the generic argument `T`
529
529
  * @throws compile error
530
530
  *
531
531
  * @author Jeongho Nam - https://github.com/samchon
@@ -553,8 +553,8 @@ Object.assign(createPrune, prune);
553
553
  /**
554
554
  * Creates a reusable {@link assertPrune} function.
555
555
  *
556
- * @danger You have to specify the generic argument `T`
557
- * @return Nothing until specifying the generic argument `T`
556
+ * @danger You must configure the generic argument `T`
557
+ * @returns Nothing until you configure the generic argument `T`
558
558
  * @throws compile error
559
559
  *
560
560
  * @author Jeongho Nam - https://github.com/samchon
@@ -582,8 +582,8 @@ Object.assign(createAssertPrune, assertPrune);
582
582
  /**
583
583
  * Creates a reusable {@link isPrune} function.
584
584
  *
585
- * @danger You have to specify the generic argument `T`
586
- * @return Nothing until specifying the generic argument `T`
585
+ * @danger You must configure the generic argument `T`
586
+ * @returns Nothing until you configure the generic argument `T`
587
587
  * @throws compile error
588
588
  *
589
589
  * @author Jeongho Nam - https://github.com/samchon
@@ -611,8 +611,8 @@ Object.assign(createIsPrune, isPrune);
611
611
  /**
612
612
  * Creates a reusable {@link validatePrune} function.
613
613
  *
614
- * @danger You have to specify the generic argument `T`
615
- * @return Nothing until specifying the generic argument `T`
614
+ * @danger You must configure the generic argument `T`
615
+ * @returns Nothing until you configure the generic argument `T`
616
616
  * @throws compile error
617
617
  *
618
618
  * @author Jeongho Nam - https://github.com/samchon
package/src/module.ts CHANGED
@@ -1,18 +1,15 @@
1
- import { $dictionary } from "./functional/$dictionary";
2
1
  import { Namespace } from "./functional/Namespace";
3
2
 
4
3
  import { IMetadataApplication } from "./schemas/metadata/IMetadataApplication";
5
4
 
6
- import { MapUtil } from "./utils/MapUtil";
7
-
8
- import { CustomValidatorMap } from "./CustomValidatorMap";
9
5
  import { IRandomGenerator } from "./IRandomGenerator";
10
6
  import { IValidation } from "./IValidation";
11
- import { Primitive } from "./Primitive";
7
+ import { Resolved } from "./Resolved";
12
8
 
13
9
  export * as json from "./json";
14
- export * as protobuf from "./protobuf";
15
10
  export * as misc from "./misc";
11
+ export * as protobuf from "./protobuf";
12
+ export * as tags from "./tags";
16
13
 
17
14
  export * from "./schemas/json/IJsonApplication";
18
15
  export * from "./schemas/json/IJsonComponents";
@@ -20,58 +17,9 @@ export * from "./schemas/json/IJsonSchema";
20
17
  export * from "./IRandomGenerator";
21
18
  export * from "./IValidation";
22
19
  export * from "./Primitive";
20
+ export * from "./Resolved";
23
21
  export * from "./TypeGuardError";
24
22
 
25
- /**
26
- * Custom validators.
27
- *
28
- * If you want to add a custom validation logic utilizing comment tags,
29
- * add a closure function with its tag and type name. Below example code
30
- * would helpful to understand how to use this instance.
31
- *
32
- * ```ts
33
- * typia.customValidators.insert("powerOf")("number")(
34
- * (text: string) => {
35
- * const denominator: number = Math.log(Number(text));
36
- * return (value: number) => {
37
- * value = Math.log(value) / denominator;
38
- * return value === Math.floor(value);
39
- * };
40
- * }
41
- * );
42
- * typia.customValidators.insert("dollar")("string")(
43
- * () => (value: string) => value.startsWith("$"),
44
- * );
45
- *
46
- * interface TagCustom {
47
- * /**
48
- * * @powerOf 10
49
- * *\/
50
- * powerOf: number;
51
- *
52
- * /**
53
- * * @dollar
54
- * *\/
55
- * dollar: string;
56
- * }
57
- * ```
58
- *
59
- * @author Jeongho Nam - https://github.com/samchon
60
- */
61
- export const customValidators: CustomValidatorMap = {
62
- size: (name?: string) =>
63
- name ? $dictionary.get(name)?.size ?? 0 : $dictionary.size,
64
- has: (name) => (type) => $dictionary.get(name)?.has(type) ?? false,
65
- get: (name) => (type) => $dictionary.get(name)?.get(type),
66
- insert: (name) => (type) => (closure) => {
67
- const internal = MapUtil.take($dictionary)(name, () => new Map());
68
- if (internal.has(type)) return false;
69
- internal.set(type, closure);
70
- return true;
71
- },
72
- erase: (name) => (type) => $dictionary.get(name)?.delete(type) ?? false,
73
- };
74
-
75
23
  /* -----------------------------------------------------------
76
24
  BASIC VALIDATORS
77
25
  ----------------------------------------------------------- */
@@ -461,7 +409,7 @@ export function random(generator?: Partial<IRandomGenerator>): never;
461
409
  *
462
410
  * @author Jeongho Nam - https://github.com/samchon
463
411
  */
464
- export function random<T>(generator?: Partial<IRandomGenerator>): Primitive<T>;
412
+ export function random<T>(generator?: Partial<IRandomGenerator>): Resolved<T>;
465
413
 
466
414
  /**
467
415
  * @internal
@@ -494,8 +442,8 @@ export function metadata(): never {
494
442
  /**
495
443
  * Creates a reusable {@link assert} function.
496
444
  *
497
- * @danger You have to specify the generic argument `T`
498
- * @return Nothing until specifying the generic argument `T`
445
+ * @danger You must configure the generic argument `T`
446
+ * @returns Nothing until you configure the generic argument `T`
499
447
  * @throws compile error
500
448
  *
501
449
  * @author Jeongho Nam - https://github.com/samchon
@@ -523,8 +471,8 @@ Object.assign(createAssert, assert);
523
471
  /**
524
472
  * Creates a reusable {@link is} function.
525
473
  *
526
- * @danger You have to specify the generic argument `T`
527
- * @return Nothing until specifying the generic argument `T`
474
+ * @danger You must configure the generic argument `T`
475
+ * @returns Nothing until you configure the generic argument `T`
528
476
  * @throws compile error
529
477
  *
530
478
  * @author Jeongho Nam - https://github.com/samchon
@@ -552,8 +500,8 @@ Object.assign(createIs, is);
552
500
  /**
553
501
  * Creates a reusable {@link validate} function.
554
502
  *
555
- * @danger You have to specify the generic argument `T`
556
- * @return Nothing until specifying the generic argument `T`
503
+ * @danger You must configure the generic argument `T`
504
+ * @returns Nothing until you configure the generic argument `T`
557
505
  * @throws compile error
558
506
  *
559
507
  * @author Jeongho Nam - https://github.com/samchon
@@ -581,8 +529,8 @@ Object.assign(createValidate, validate);
581
529
  /**
582
530
  * Creates a reusable {@link assertEquals} function.
583
531
  *
584
- * @danger You have to specify the generic argument `T`
585
- * @return Nothing until specifying the generic argument `T`
532
+ * @danger You must configure the generic argument `T`
533
+ * @returns Nothing until you configure the generic argument `T`
586
534
  * @throws compile error
587
535
  *
588
536
  * @author Jeongho Nam - https://github.com/samchon
@@ -610,8 +558,8 @@ Object.assign(createAssertEquals, assertEquals);
610
558
  /**
611
559
  * Creates a reusable {@link equals} function.
612
560
  *
613
- * @danger You have to specify the generic argument `T`
614
- * @return Nothing until specifying the generic argument `T`
561
+ * @danger You must configure the generic argument `T`
562
+ * @returns Nothing until you configure the generic argument `T`
615
563
  * @throws compile error
616
564
  *
617
565
  * @author Jeongho Nam - https://github.com/samchon
@@ -639,8 +587,8 @@ Object.assign(createEquals, equals);
639
587
  /**
640
588
  * Creates a reusable {@link validateEquals} function.
641
589
  *
642
- * @danger You have to specify the generic argument `T`
643
- * @return Nothing until specifying the generic argument `T`
590
+ * @danger You must configure the generic argument `T`
591
+ * @returns Nothing until you configure the generic argument `T`
644
592
  * @throws compile error
645
593
  *
646
594
  * @author Jeongho Nam - https://github.com/samchon
@@ -668,9 +616,9 @@ Object.assign(createValidateEquals, validateEquals);
668
616
  /**
669
617
  * Creates a reusable {@link random} function.
670
618
  *
671
- * @danger You have to specify the generic argument `T`
619
+ * @danger You must configure the generic argument `T`
672
620
  * @param generator Random data generator
673
- * @return Nothing until specifying the generic argument `T`
621
+ * @returns Nothing until you configure the generic argument `T`
674
622
  * @throws compile error
675
623
  *
676
624
  * @author Jeongho Nam - https://github.com/samchon
@@ -688,7 +636,7 @@ export function createRandom(generator?: Partial<IRandomGenerator>): never;
688
636
  */
689
637
  export function createRandom<T>(
690
638
  generator?: Partial<IRandomGenerator>,
691
- ): () => Primitive<T>;
639
+ ): () => Resolved<T>;
692
640
 
693
641
  /**
694
642
  * @internal
@@ -18,7 +18,9 @@ export namespace AssertProgrammer {
18
18
  (modulo: ts.LeftHandSideExpression) =>
19
19
  (equals: boolean) =>
20
20
  (type: ts.Type, name?: string) => {
21
- const importer: FunctionImporter = new FunctionImporter();
21
+ const importer: FunctionImporter = new FunctionImporter(
22
+ modulo.getText(),
23
+ );
22
24
  const is = IsProgrammer.write(project)(modulo, true)(equals)(
23
25
  type,
24
26
  name ?? TypeFactory.getFullName(project.checker)(type),
@@ -31,7 +33,7 @@ export namespace AssertProgrammer {
31
33
  equals,
32
34
  atomist: (explore) => (tuple) => (input) =>
33
35
  [
34
- tuple.expression,
36
+ ...(tuple.expression ? [tuple.expression] : []),
35
37
  ...tuple.tags.map((tag) =>
36
38
  ts.factory.createLogicalOr(
37
39
  tag.expression,