typia 7.0.0-dev.20240918 → 7.0.0-dev.20240920

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 (375) hide show
  1. package/lib/executable/TypiaSetupWizard.d.ts +1 -1
  2. package/lib/executable/TypiaSetupWizard.js +86 -69
  3. package/lib/executable/TypiaSetupWizard.js.map +1 -1
  4. package/lib/executable/setup/PackageManager.d.ts +1 -2
  5. package/lib/executable/setup/PackageManager.js +13 -10
  6. package/lib/executable/setup/PackageManager.js.map +1 -1
  7. package/lib/factories/internal/metadata/iterate_metadata_function.js +1 -1
  8. package/lib/factories/internal/metadata/iterate_metadata_function.js.map +1 -1
  9. package/lib/index.mjs +3610 -25
  10. package/lib/index.mjs.map +1 -1
  11. package/lib/programmers/AssertProgrammer.js +2 -2
  12. package/lib/programmers/AssertProgrammer.js.map +1 -1
  13. package/lib/programmers/CheckerProgrammer.d.ts +8 -2
  14. package/lib/programmers/CheckerProgrammer.js +62 -52
  15. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  16. package/lib/programmers/FeatureProgrammer.d.ts +9 -2
  17. package/lib/programmers/FeatureProgrammer.js +10 -5
  18. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  19. package/lib/programmers/IsProgrammer.d.ts +5 -2
  20. package/lib/programmers/IsProgrammer.js +2 -2
  21. package/lib/programmers/IsProgrammer.js.map +1 -1
  22. package/lib/programmers/ValidateProgrammer.js +2 -2
  23. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  24. package/lib/programmers/helpers/AtomicPredicator.d.ts +9 -3
  25. package/lib/programmers/helpers/AtomicPredicator.js +6 -10
  26. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  27. package/lib/programmers/helpers/CloneJoiner.d.ts +12 -3
  28. package/lib/programmers/helpers/CloneJoiner.js +11 -11
  29. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  30. package/lib/programmers/helpers/HttpMetadataUtil.d.ts +2 -2
  31. package/lib/programmers/helpers/HttpMetadataUtil.js +9 -9
  32. package/lib/programmers/helpers/HttpMetadataUtil.js.map +1 -1
  33. package/lib/programmers/helpers/NotationJoiner.d.ts +12 -3
  34. package/lib/programmers/helpers/NotationJoiner.js +11 -11
  35. package/lib/programmers/helpers/NotationJoiner.js.map +1 -1
  36. package/lib/programmers/helpers/PruneJoiner.d.ts +13 -3
  37. package/lib/programmers/helpers/PruneJoiner.js +33 -31
  38. package/lib/programmers/helpers/PruneJoiner.js.map +1 -1
  39. package/lib/programmers/helpers/RandomRanger.js +1 -1
  40. package/lib/programmers/helpers/RandomRanger.js.map +1 -1
  41. package/lib/programmers/helpers/StringifyJoinder.d.ts +11 -3
  42. package/lib/programmers/helpers/StringifyJoinder.js +22 -19
  43. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  44. package/lib/programmers/internal/application_array.js +23 -24
  45. package/lib/programmers/internal/application_array.js.map +1 -1
  46. package/lib/programmers/internal/application_bigint.js +5 -2
  47. package/lib/programmers/internal/application_bigint.js.map +1 -1
  48. package/lib/programmers/internal/application_boolean.js +5 -2
  49. package/lib/programmers/internal/application_boolean.js.map +1 -1
  50. package/lib/programmers/internal/application_escaped.js +44 -28
  51. package/lib/programmers/internal/application_escaped.js.map +1 -1
  52. package/lib/programmers/internal/application_number.js +5 -2
  53. package/lib/programmers/internal/application_number.js.map +1 -1
  54. package/lib/programmers/internal/application_plugin.js +4 -4
  55. package/lib/programmers/internal/application_plugin.js.map +1 -1
  56. package/lib/programmers/internal/application_string.js +5 -2
  57. package/lib/programmers/internal/application_string.js.map +1 -1
  58. package/lib/programmers/internal/application_templates.js +6 -3
  59. package/lib/programmers/internal/application_templates.js.map +1 -1
  60. package/lib/programmers/internal/application_v30_alias.js +37 -32
  61. package/lib/programmers/internal/application_v30_alias.js.map +1 -1
  62. package/lib/programmers/internal/application_v30_native.js +19 -23
  63. package/lib/programmers/internal/application_v30_native.js.map +1 -1
  64. package/lib/programmers/internal/application_v30_object.js +121 -117
  65. package/lib/programmers/internal/application_v30_object.js.map +1 -1
  66. package/lib/programmers/internal/application_v30_schema.js +227 -183
  67. package/lib/programmers/internal/application_v30_schema.js.map +1 -1
  68. package/lib/programmers/internal/application_v30_tuple.js +12 -11
  69. package/lib/programmers/internal/application_v30_tuple.js.map +1 -1
  70. package/lib/programmers/internal/application_v31_alias.js +29 -23
  71. package/lib/programmers/internal/application_v31_alias.js.map +1 -1
  72. package/lib/programmers/internal/application_v31_constant.js +9 -6
  73. package/lib/programmers/internal/application_v31_constant.js.map +1 -1
  74. package/lib/programmers/internal/application_v31_native.js +15 -17
  75. package/lib/programmers/internal/application_v31_native.js.map +1 -1
  76. package/lib/programmers/internal/application_v31_object.js +97 -89
  77. package/lib/programmers/internal/application_v31_object.js.map +1 -1
  78. package/lib/programmers/internal/application_v31_schema.js +223 -178
  79. package/lib/programmers/internal/application_v31_schema.js.map +1 -1
  80. package/lib/programmers/internal/application_v31_tuple.js +10 -12
  81. package/lib/programmers/internal/application_v31_tuple.js.map +1 -1
  82. package/lib/programmers/internal/check_object.js +8 -8
  83. package/lib/programmers/internal/check_object.js.map +1 -1
  84. package/lib/programmers/internal/llm_schema_array.js +10 -7
  85. package/lib/programmers/internal/llm_schema_array.js.map +1 -1
  86. package/lib/programmers/internal/llm_schema_station.js +4 -1
  87. package/lib/programmers/internal/llm_schema_station.js.map +1 -1
  88. package/lib/programmers/json/JsonApplicationProgrammer.js +12 -2
  89. package/lib/programmers/json/JsonApplicationProgrammer.js.map +1 -1
  90. package/lib/programmers/json/JsonStringifyProgrammer.js +46 -37
  91. package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
  92. package/lib/programmers/misc/MiscCloneProgrammer.js +5 -2
  93. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  94. package/lib/programmers/misc/MiscPruneProgrammer.js +5 -2
  95. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  96. package/lib/programmers/notations/NotationGeneralProgrammer.js +5 -2
  97. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  98. package/lib/transformers/features/llm/LlmApplicationTransformer.js +5 -2
  99. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  100. package/package.json +2 -2
  101. package/src/executable/TypiaSetupWizard.ts +17 -6
  102. package/src/executable/setup/PackageManager.ts +16 -16
  103. package/src/factories/JsonMetadataFactory.ts +60 -60
  104. package/src/factories/internal/metadata/emplace_metadata_alias.ts +32 -32
  105. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +56 -56
  106. package/src/factories/internal/metadata/iterate_metadata_alias.ts +28 -28
  107. package/src/factories/internal/metadata/iterate_metadata_collection.ts +145 -145
  108. package/src/factories/internal/metadata/iterate_metadata_escape.ts +47 -47
  109. package/src/factories/internal/metadata/iterate_metadata_function.ts +4 -2
  110. package/src/factories/internal/metadata/iterate_metadata_sort.ts +83 -83
  111. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  112. package/src/programmers/AssertProgrammer.ts +3 -3
  113. package/src/programmers/CheckerProgrammer.ts +112 -71
  114. package/src/programmers/FeatureProgrammer.ts +31 -30
  115. package/src/programmers/IsProgrammer.ts +7 -7
  116. package/src/programmers/ValidateProgrammer.ts +3 -3
  117. package/src/programmers/helpers/AtomicPredicator.ts +21 -10
  118. package/src/programmers/helpers/CloneJoiner.ts +21 -18
  119. package/src/programmers/helpers/HttpMetadataUtil.ts +11 -11
  120. package/src/programmers/helpers/NotationJoiner.ts +21 -18
  121. package/src/programmers/helpers/PruneJoiner.ts +87 -82
  122. package/src/programmers/helpers/RandomRanger.ts +171 -171
  123. package/src/programmers/helpers/StringifyJoinder.ts +32 -28
  124. package/src/programmers/http/HttpParameterProgrammer.ts +110 -110
  125. package/src/programmers/internal/application_array.ts +30 -35
  126. package/src/programmers/internal/application_bigint.ts +4 -4
  127. package/src/programmers/internal/application_boolean.ts +4 -4
  128. package/src/programmers/internal/application_escaped.ts +56 -34
  129. package/src/programmers/internal/application_number.ts +4 -4
  130. package/src/programmers/internal/application_plugin.ts +7 -7
  131. package/src/programmers/internal/application_string.ts +4 -4
  132. package/src/programmers/internal/application_templates.ts +4 -4
  133. package/src/programmers/internal/application_v30_alias.ts +34 -27
  134. package/src/programmers/internal/application_v30_native.ts +21 -20
  135. package/src/programmers/internal/application_v30_object.ts +106 -93
  136. package/src/programmers/internal/application_v30_schema.ts +187 -128
  137. package/src/programmers/internal/application_v30_tuple.ts +22 -22
  138. package/src/programmers/internal/application_v31_alias.ts +32 -26
  139. package/src/programmers/internal/application_v31_constant.ts +4 -4
  140. package/src/programmers/internal/application_v31_native.ts +17 -16
  141. package/src/programmers/internal/application_v31_object.ts +103 -89
  142. package/src/programmers/internal/application_v31_schema.ts +180 -124
  143. package/src/programmers/internal/application_v31_tuple.ts +13 -12
  144. package/src/programmers/internal/check_array_length.ts +45 -45
  145. package/src/programmers/internal/check_bigint.ts +49 -49
  146. package/src/programmers/internal/check_dynamic_key.ts +174 -174
  147. package/src/programmers/internal/check_dynamic_properties.ts +211 -211
  148. package/src/programmers/internal/check_number.ts +107 -107
  149. package/src/programmers/internal/check_object.ts +64 -61
  150. package/src/programmers/internal/check_string.ts +48 -48
  151. package/src/programmers/internal/llm_schema_array.ts +4 -4
  152. package/src/programmers/internal/llm_schema_station.ts +6 -1
  153. package/src/programmers/json/JsonApplicationProgrammer.ts +12 -2
  154. package/src/programmers/json/JsonStringifyProgrammer.ts +56 -38
  155. package/src/programmers/misc/MiscCloneProgrammer.ts +5 -2
  156. package/src/programmers/misc/MiscLiteralsProgrammer.ts +77 -77
  157. package/src/programmers/misc/MiscPruneProgrammer.ts +5 -2
  158. package/src/programmers/notations/NotationGeneralProgrammer.ts +5 -2
  159. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +168 -168
  160. package/src/transform.ts +35 -35
  161. package/src/transformers/ITypiaContext.ts +15 -15
  162. package/src/transformers/NodeTransformer.ts +13 -13
  163. package/src/transformers/features/AssertTransformer.ts +24 -24
  164. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  165. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  166. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  167. package/src/transformers/features/IsTransformer.ts +18 -18
  168. package/src/transformers/features/ValidateTransformer.ts +18 -18
  169. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  170. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  171. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  172. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  173. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  174. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  175. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  176. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  177. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  178. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  179. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  180. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  181. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  182. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  183. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  184. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  185. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  186. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  187. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  188. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  189. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  190. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  191. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  192. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  193. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  194. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  195. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  196. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  197. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  198. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  199. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  200. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  201. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  202. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  203. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  204. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  205. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  206. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  207. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  208. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  209. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  210. package/src/transformers/features/llm/LlmApplicationTransformer.ts +6 -2
  211. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  212. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  213. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  214. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  215. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  216. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  217. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  218. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  219. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  220. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  221. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  222. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  223. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  224. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  225. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  226. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  227. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  228. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  229. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  230. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  231. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  232. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  233. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  234. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  235. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  236. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  237. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  238. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  239. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  240. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  241. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  242. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  243. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  244. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  245. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  246. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  247. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  248. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  249. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  250. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  251. package/src/transformers/features/reflect/ReflectNameTransformer.ts +79 -79
  252. package/lib/TypeGuardError.mjs +0 -26
  253. package/lib/TypeGuardError.mjs.map +0 -1
  254. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmSchemaSeparator.mjs +0 -57
  255. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmSchemaSeparator.mjs.map +0 -1
  256. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmTypeChecker.mjs +0 -23
  257. package/lib/_external/node_modules_@samchon_openapi_lib_utils/LlmTypeChecker.mjs.map +0 -1
  258. package/lib/_external/node_modules_drange_lib/index.mjs +0 -180
  259. package/lib/_external/node_modules_drange_lib/index.mjs.map +0 -1
  260. package/lib/_external/node_modules_randexp_lib/randexp.mjs +0 -270
  261. package/lib/_external/node_modules_randexp_lib/randexp.mjs.map +0 -1
  262. package/lib/_external/node_modules_ret_lib/index.mjs +0 -296
  263. package/lib/_external/node_modules_ret_lib/index.mjs.map +0 -1
  264. package/lib/_external/node_modules_ret_lib/positions.mjs +0 -11
  265. package/lib/_external/node_modules_ret_lib/positions.mjs.map +0 -1
  266. package/lib/_external/node_modules_ret_lib/sets.mjs +0 -55
  267. package/lib/_external/node_modules_ret_lib/sets.mjs.map +0 -1
  268. package/lib/_external/node_modules_ret_lib/types.mjs +0 -13
  269. package/lib/_external/node_modules_ret_lib/types.mjs.map +0 -1
  270. package/lib/_external/node_modules_ret_lib/util.mjs +0 -116
  271. package/lib/_external/node_modules_ret_lib/util.mjs.map +0 -1
  272. package/lib/_virtual/_commonjsHelpers.mjs +0 -6
  273. package/lib/_virtual/_commonjsHelpers.mjs.map +0 -1
  274. package/lib/_virtual/index.mjs +0 -4
  275. package/lib/_virtual/index.mjs.map +0 -1
  276. package/lib/_virtual/positions.mjs +0 -4
  277. package/lib/_virtual/positions.mjs.map +0 -1
  278. package/lib/_virtual/sets.mjs +0 -4
  279. package/lib/_virtual/sets.mjs.map +0 -1
  280. package/lib/_virtual/util.mjs +0 -4
  281. package/lib/_virtual/util.mjs.map +0 -1
  282. package/lib/functional/Namespace/functional.mjs +0 -8
  283. package/lib/functional/Namespace/functional.mjs.map +0 -1
  284. package/lib/functional/Namespace/http.mjs +0 -12
  285. package/lib/functional/Namespace/http.mjs.map +0 -1
  286. package/lib/functional/Namespace/index.mjs +0 -54
  287. package/lib/functional/Namespace/index.mjs.map +0 -1
  288. package/lib/functional/Namespace/json.mjs +0 -18
  289. package/lib/functional/Namespace/json.mjs.map +0 -1
  290. package/lib/functional/Namespace/llm.mjs +0 -19
  291. package/lib/functional/Namespace/llm.mjs.map +0 -1
  292. package/lib/functional/Namespace/misc.mjs +0 -16
  293. package/lib/functional/Namespace/misc.mjs.map +0 -1
  294. package/lib/functional/Namespace/notations.mjs +0 -24
  295. package/lib/functional/Namespace/notations.mjs.map +0 -1
  296. package/lib/functional/Namespace/protobuf.mjs +0 -22
  297. package/lib/functional/Namespace/protobuf.mjs.map +0 -1
  298. package/lib/functional/_FormDataReader/_FormDataReader.mjs +0 -64
  299. package/lib/functional/_FormDataReader/_FormDataReader.mjs.map +0 -1
  300. package/lib/functional/_HeadersReader/_HeadersReader.mjs +0 -25
  301. package/lib/functional/_HeadersReader/_HeadersReader.mjs.map +0 -1
  302. package/lib/functional/_ParameterReader/_ParameterReader.mjs +0 -25
  303. package/lib/functional/_ParameterReader/_ParameterReader.mjs.map +0 -1
  304. package/lib/functional/_ProtobufReader.mjs +0 -176
  305. package/lib/functional/_ProtobufReader.mjs.map +0 -1
  306. package/lib/functional/_ProtobufSizer.mjs +0 -131
  307. package/lib/functional/_ProtobufSizer.mjs.map +0 -1
  308. package/lib/functional/_ProtobufWriter.mjs +0 -122
  309. package/lib/functional/_ProtobufWriter.mjs.map +0 -1
  310. package/lib/functional/_QueryReader/_QueryReader.mjs +0 -38
  311. package/lib/functional/_QueryReader/_QueryReader.mjs.map +0 -1
  312. package/lib/functional/_any.mjs +0 -6
  313. package/lib/functional/_any.mjs.map +0 -1
  314. package/lib/functional/_clone.mjs +0 -62
  315. package/lib/functional/_clone.mjs.map +0 -1
  316. package/lib/functional/_convention.mjs +0 -37
  317. package/lib/functional/_convention.mjs.map +0 -1
  318. package/lib/functional/_every.mjs +0 -10
  319. package/lib/functional/_every.mjs.map +0 -1
  320. package/lib/functional/_guard.mjs +0 -18
  321. package/lib/functional/_guard.mjs.map +0 -1
  322. package/lib/functional/_is_between.mjs +0 -4
  323. package/lib/functional/_is_between.mjs.map +0 -1
  324. package/lib/functional/_join.mjs +0 -44
  325. package/lib/functional/_join.mjs.map +0 -1
  326. package/lib/functional/_number.mjs +0 -15
  327. package/lib/functional/_number.mjs.map +0 -1
  328. package/lib/functional/_report.mjs +0 -16
  329. package/lib/functional/_report.mjs.map +0 -1
  330. package/lib/functional/_rest.mjs +0 -6
  331. package/lib/functional/_rest.mjs.map +0 -1
  332. package/lib/functional/_stoll.mjs +0 -12
  333. package/lib/functional/_stoll.mjs.map +0 -1
  334. package/lib/functional/_string.mjs +0 -41
  335. package/lib/functional/_string.mjs.map +0 -1
  336. package/lib/functional/_strlen.mjs +0 -11
  337. package/lib/functional/_strlen.mjs.map +0 -1
  338. package/lib/functional/_tail.mjs +0 -7
  339. package/lib/functional/_tail.mjs.map +0 -1
  340. package/lib/functional/_throws.mjs +0 -11
  341. package/lib/functional/_throws.mjs.map +0 -1
  342. package/lib/functional/is.mjs +0 -13
  343. package/lib/functional/is.mjs.map +0 -1
  344. package/lib/functional.mjs +0 -150
  345. package/lib/functional.mjs.map +0 -1
  346. package/lib/http.mjs +0 -239
  347. package/lib/http.mjs.map +0 -1
  348. package/lib/json.mjs +0 -126
  349. package/lib/json.mjs.map +0 -1
  350. package/lib/llm.mjs +0 -26
  351. package/lib/llm.mjs.map +0 -1
  352. package/lib/misc.mjs +0 -154
  353. package/lib/misc.mjs.map +0 -1
  354. package/lib/module.mjs +0 -163
  355. package/lib/module.mjs.map +0 -1
  356. package/lib/notations.mjs +0 -222
  357. package/lib/notations.mjs.map +0 -1
  358. package/lib/programmers/helpers/FunctionImporeter.d.ts +0 -1
  359. package/lib/programmers/helpers/FunctionImporeter.js +0 -18
  360. package/lib/programmers/helpers/FunctionImporeter.js.map +0 -1
  361. package/lib/protobuf.mjs +0 -157
  362. package/lib/protobuf.mjs.map +0 -1
  363. package/lib/reflect.mjs +0 -19
  364. package/lib/reflect.mjs.map +0 -1
  365. package/lib/tags/index.mjs +0 -2
  366. package/lib/tags/index.mjs.map +0 -1
  367. package/lib/utils/NamingConvention/NamingConvention.mjs +0 -84
  368. package/lib/utils/NamingConvention/NamingConvention.mjs.map +0 -1
  369. package/lib/utils/RandomGenerator/RandomGenerator.mjs +0 -104
  370. package/lib/utils/RandomGenerator/RandomGenerator.mjs.map +0 -1
  371. package/lib/utils/Singleton.mjs +0 -17
  372. package/lib/utils/Singleton.mjs.map +0 -1
  373. package/lib/utils/StringUtil/StringUtil.mjs +0 -4
  374. package/lib/utils/StringUtil/StringUtil.mjs.map +0 -1
  375. package/src/programmers/helpers/FunctionImporeter.ts +0 -1
@@ -12,14 +12,14 @@ import { IExpressionEntry } from "./IExpressionEntry";
12
12
  export namespace NotationJoiner {
13
13
  export const object =
14
14
  (rename: (str: string) => string) =>
15
- (
16
- input: ts.Expression,
17
- entries: IExpressionEntry<ts.Expression>[],
18
- ): ts.ConciseBody => {
19
- if (entries.length === 0) return ts.factory.createIdentifier("{}");
15
+ (props: {
16
+ input: ts.Expression;
17
+ entries: IExpressionEntry<ts.Expression>[];
18
+ }): ts.ConciseBody => {
19
+ if (props.entries.length === 0) return ts.factory.createIdentifier("{}");
20
20
 
21
- const regular = entries.filter((e) => e.key.isSoleLiteral());
22
- const dynamic = entries.filter((e) => !e.key.isSoleLiteral());
21
+ const regular = props.entries.filter((e) => e.key.isSoleLiteral());
22
+ const dynamic = props.entries.filter((e) => !e.key.isSoleLiteral());
23
23
  const literal = ts.factory.createObjectLiteralExpression(
24
24
  regular.map((entry) => {
25
25
  const str: string = rename(entry.key.getSoleLiteral()!);
@@ -100,7 +100,7 @@ export namespace NotationJoiner {
100
100
  ts.factory.createCallExpression(
101
101
  ts.factory.createIdentifier("Object.entries"),
102
102
  undefined,
103
- [input],
103
+ [props.input],
104
104
  ),
105
105
  ts.factory.createBlock(statements),
106
106
  ),
@@ -108,25 +108,28 @@ export namespace NotationJoiner {
108
108
  ]);
109
109
  };
110
110
 
111
- export const tuple = (
112
- children: ts.Expression[],
113
- rest: ts.Expression | null,
114
- ): ts.Expression => {
111
+ export const tuple = (props: {
112
+ elements: ts.Expression[];
113
+ rest: ts.Expression | null;
114
+ }): ts.Expression => {
115
115
  return ts.factory.createAsExpression(
116
116
  ts.factory.createArrayLiteralExpression(
117
- rest === null
118
- ? children
119
- : [...children, ts.factory.createSpreadElement(rest)],
117
+ props.rest === null
118
+ ? props.elements
119
+ : [...props.elements, ts.factory.createSpreadElement(props.rest)],
120
120
  true,
121
121
  ),
122
122
  TypeFactory.keyword("any"),
123
123
  );
124
124
  };
125
125
 
126
- export const array = (input: ts.Expression, arrow: ts.Expression) =>
126
+ export const array = (props: {
127
+ input: ts.Expression;
128
+ arrow: ts.Expression;
129
+ }) =>
127
130
  ts.factory.createCallExpression(
128
- ts.factory.createPropertyAccessExpression(input, "map"),
131
+ ts.factory.createPropertyAccessExpression(props.input, "map"),
129
132
  undefined,
130
- [arrow],
133
+ [props.arrow],
131
134
  );
132
135
  }
@@ -9,14 +9,14 @@ import { prune_object_properties } from "../internal/prune_object_properties";
9
9
  import { IExpressionEntry } from "./IExpressionEntry";
10
10
 
11
11
  export namespace PruneJoiner {
12
- export const object = (
13
- input: ts.Expression,
14
- entries: IExpressionEntry[],
15
- obj: MetadataObject,
16
- ): ts.ConciseBody => {
12
+ export const object = (props: {
13
+ input: ts.Expression;
14
+ entries: IExpressionEntry[];
15
+ object: MetadataObject;
16
+ }): ts.ConciseBody => {
17
17
  // PREPARE ASSETS
18
- const regular = entries.filter((entry) => entry.key.isSoleLiteral());
19
- const dynamic = entries.filter((entry) => !entry.key.isSoleLiteral());
18
+ const regular = props.entries.filter((entry) => entry.key.isSoleLiteral());
19
+ const dynamic = props.entries.filter((entry) => !entry.key.isSoleLiteral());
20
20
 
21
21
  const statements: ts.Statement[] = regular
22
22
  .map((entry) =>
@@ -28,27 +28,34 @@ export namespace PruneJoiner {
28
28
  if (dynamic.length)
29
29
  statements.push(
30
30
  ts.factory.createExpressionStatement(
31
- iterate_dynamic_properties({ regular, dynamic })(input),
31
+ iterate_dynamic_properties({
32
+ regular,
33
+ dynamic,
34
+ input: props.input,
35
+ }),
32
36
  ),
33
37
  );
34
38
 
35
- statements.push(prune_object_properties(obj));
39
+ statements.push(prune_object_properties(props.object));
36
40
  return ts.factory.createBlock(statements, true);
37
41
  };
38
42
 
39
- export const array = (input: ts.Expression, arrow: ts.ArrowFunction) =>
43
+ export const array = (props: {
44
+ input: ts.Expression;
45
+ arrow: ts.ArrowFunction;
46
+ }) =>
40
47
  ts.factory.createCallExpression(
41
- IdentifierFactory.access(input)("forEach"),
48
+ IdentifierFactory.access(props.input)("forEach"),
42
49
  undefined,
43
- [arrow],
50
+ [props.arrow],
44
51
  );
45
52
 
46
- export const tuple = (
47
- children: ts.ConciseBody[],
48
- rest: ts.ConciseBody | null,
49
- ): ts.Block => {
50
- const entire: ts.ConciseBody[] = [...children];
51
- if (rest !== null) entire.push(rest);
53
+ export const tuple = (props: {
54
+ elements: ts.ConciseBody[];
55
+ rest: ts.ConciseBody | null;
56
+ }): ts.Block => {
57
+ const entire: ts.ConciseBody[] = [...props.elements];
58
+ if (props.rest !== null) entire.push(props.rest);
52
59
 
53
60
  const statements: ts.Statement[] = entire
54
61
  .map((elem) =>
@@ -61,79 +68,77 @@ export namespace PruneJoiner {
61
68
  };
62
69
  }
63
70
 
64
- const iterate_dynamic_properties =
65
- (props: { regular: IExpressionEntry[]; dynamic: IExpressionEntry[] }) =>
66
- (input: ts.Expression) =>
67
- ts.factory.createCallExpression(
68
- IdentifierFactory.access(
69
- ts.factory.createCallExpression(
70
- ts.factory.createIdentifier("Object.entries"),
71
- undefined,
72
- [input],
73
- ),
74
- )("forEach"),
75
- undefined,
76
- [
77
- ts.factory.createArrowFunction(
78
- undefined,
79
- undefined,
80
- [
81
- IdentifierFactory.parameter(
82
- ts.factory.createArrayBindingPattern(
83
- ["key", "value"].map((l) =>
84
- ts.factory.createBindingElement(
85
- undefined,
86
- undefined,
87
- ts.factory.createIdentifier(l),
88
- undefined,
89
- ),
71
+ const iterate_dynamic_properties = (props: {
72
+ regular: IExpressionEntry[];
73
+ dynamic: IExpressionEntry[];
74
+ input: ts.Expression;
75
+ }) =>
76
+ ts.factory.createCallExpression(
77
+ IdentifierFactory.access(
78
+ ts.factory.createCallExpression(
79
+ ts.factory.createIdentifier("Object.entries"),
80
+ undefined,
81
+ [props.input],
82
+ ),
83
+ )("forEach"),
84
+ undefined,
85
+ [
86
+ ts.factory.createArrowFunction(
87
+ undefined,
88
+ undefined,
89
+ [
90
+ IdentifierFactory.parameter(
91
+ ts.factory.createArrayBindingPattern(
92
+ ["key", "value"].map((l) =>
93
+ ts.factory.createBindingElement(
94
+ undefined,
95
+ undefined,
96
+ ts.factory.createIdentifier(l),
97
+ undefined,
90
98
  ),
91
99
  ),
92
100
  ),
93
- ],
94
- undefined,
95
- undefined,
96
- ts.factory.createBlock(
97
- [
101
+ ),
102
+ ],
103
+ undefined,
104
+ undefined,
105
+ ts.factory.createBlock(
106
+ [
107
+ ts.factory.createIfStatement(
108
+ ts.factory.createStrictEquality(
109
+ ts.factory.createIdentifier("undefined"),
110
+ ts.factory.createIdentifier("value"),
111
+ ),
112
+ ts.factory.createReturnStatement(),
113
+ ),
114
+ ...props.regular.map(({ key }) =>
98
115
  ts.factory.createIfStatement(
99
116
  ts.factory.createStrictEquality(
100
- ts.factory.createIdentifier("undefined"),
101
- ts.factory.createIdentifier("value"),
117
+ ts.factory.createStringLiteral(key.getSoleLiteral()!),
118
+ ts.factory.createIdentifier("key"),
102
119
  ),
103
120
  ts.factory.createReturnStatement(),
104
121
  ),
105
- ...props.regular.map(({ key }) =>
106
- ts.factory.createIfStatement(
107
- ts.factory.createStrictEquality(
108
- ts.factory.createStringLiteral(key.getSoleLiteral()!),
109
- ts.factory.createIdentifier("key"),
110
- ),
111
- ts.factory.createReturnStatement(),
112
- ),
113
- ),
114
- ...props.dynamic.map((dynamic) =>
115
- ts.factory.createIfStatement(
116
- ts.factory.createCallExpression(
117
- ts.factory.createIdentifier(
118
- `RegExp(/${metadata_to_pattern(true)(
119
- dynamic.key,
120
- )}/).test`,
121
- ),
122
- undefined,
123
- [ts.factory.createIdentifier("key")],
122
+ ),
123
+ ...props.dynamic.map((dynamic) =>
124
+ ts.factory.createIfStatement(
125
+ ts.factory.createCallExpression(
126
+ ts.factory.createIdentifier(
127
+ `RegExp(/${metadata_to_pattern(true)(dynamic.key)}/).test`,
124
128
  ),
125
- ts.isBlock(dynamic.expression)
126
- ? dynamic.expression
127
- : ts.factory.createBlock([
128
- ts.factory.createExpressionStatement(
129
- dynamic.expression,
130
- ),
131
- ]),
129
+ undefined,
130
+ [ts.factory.createIdentifier("key")],
132
131
  ),
132
+ ts.isBlock(dynamic.expression)
133
+ ? dynamic.expression
134
+ : ts.factory.createBlock([
135
+ ts.factory.createExpressionStatement(dynamic.expression),
136
+ ]),
133
137
  ),
134
- ],
135
- true,
136
- ),
138
+ ),
139
+ ],
140
+ true,
137
141
  ),
138
- ],
139
- );
142
+ ),
143
+ ],
144
+ );
@@ -1,171 +1,171 @@
1
- import ts from "typescript";
2
-
3
- import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
-
5
- import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
6
-
7
- export namespace RandomRanger {
8
- export interface IDefaults {
9
- minimum: number;
10
- maximum: number;
11
- gap: number;
12
- }
13
-
14
- export const length =
15
- (coalesce: (method: string) => ts.Expression) =>
16
- (defs: IDefaults) =>
17
- (acc: length.IAccessors) =>
18
- (tags: IMetadataTypeTag[]): ts.Expression | undefined => {
19
- const props = {
20
- minimum: getter(tags)(acc.minimum),
21
- maximum: getter(tags)(acc.maximum),
22
- };
23
- if (props.minimum === undefined && props.maximum === undefined)
24
- return undefined;
25
-
26
- if (props.maximum !== undefined && props.minimum === undefined) {
27
- if (props.maximum <= 0) {
28
- props.maximum = 0;
29
- props.minimum = 0;
30
- } else if (props.maximum < defs.gap)
31
- props.minimum = defs.minimum === 0 ? 0 : 1;
32
- }
33
- props.minimum ??= defs.minimum;
34
- props.maximum ??= defs.maximum;
35
- if (props.maximum < props.minimum) (props.maximum as number) += defs.gap;
36
-
37
- return ts.factory.createCallExpression(coalesce("integer"), undefined, [
38
- ExpressionFactory.number(props.minimum),
39
- ExpressionFactory.number(props.maximum),
40
- ]);
41
- };
42
- export namespace length {
43
- export interface IAccessors {
44
- minimum: string;
45
- maximum: string;
46
- }
47
- }
48
-
49
- export const number =
50
- (config: number.IConfig) =>
51
- (defs: IDefaults) =>
52
- (tags: IMetadataTypeTag[]): ts.Expression => {
53
- const range = {
54
- minimum: {
55
- value: getter(tags)("minimum") ?? getter(tags)("exclusiveMinimum"),
56
- exclusive: getter(tags)("exclusiveMinimum") !== undefined,
57
- },
58
- maximum: {
59
- value: getter(tags)("maximum") ?? getter(tags)("exclusiveMaximum"),
60
- exclusive: getter(tags)("exclusiveMaximum") !== undefined,
61
- },
62
- stepper: undefined,
63
- multiply: getter(tags)("multipleOf"),
64
- };
65
-
66
- //----
67
- // MULTIPLIERS
68
- //----
69
- if (range.multiply !== undefined) {
70
- const { minimum, maximum } = multiplier(defs.gap)(range)(
71
- range.multiply,
72
- );
73
- return ts.factory.createMultiply(
74
- config.transform(range.multiply),
75
- config.setter([minimum, maximum]),
76
- );
77
- }
78
-
79
- //----
80
- // RANGE
81
- //----
82
- // INT
83
- const integer = (value: number) => value === Math.floor(value);
84
- if (config.type === "int") {
85
- if (range.minimum.value !== undefined) {
86
- if (range.minimum.exclusive) {
87
- range.minimum.exclusive = false;
88
- if (integer(range.minimum.value)) range.minimum.value += 1;
89
- }
90
- range.minimum.value = Math.ceil(range.minimum.value);
91
- }
92
- if (range.maximum.value !== undefined) {
93
- if (range.maximum.exclusive) {
94
- range.maximum.exclusive = false;
95
- if (integer(range.maximum.value)) range.maximum.value -= 1;
96
- }
97
- range.maximum.value = Math.floor(range.maximum.value);
98
- }
99
- }
100
-
101
- // UNSIGNED INT
102
- if (config.type === "uint") {
103
- if (range.minimum.value === undefined) range.minimum.value = 0;
104
- else if (range.minimum.value <= 0) {
105
- range.minimum.value = 0;
106
- range.minimum.exclusive = false;
107
- }
108
- }
109
-
110
- const minimum =
111
- range.minimum.value ??
112
- (range.maximum.value !== undefined
113
- ? range.maximum.value - defs.gap
114
- : defs.minimum);
115
- const maximum =
116
- range.maximum.value ??
117
- (range.minimum.value !== undefined
118
- ? range.minimum.value + defs.gap
119
- : defs.maximum);
120
- return config.setter([minimum, maximum]);
121
- };
122
- export namespace number {
123
- export interface IConfig {
124
- setter: (args: number[]) => ts.Expression;
125
- transform: (value: number) => ts.Expression;
126
- type: "int" | "uint" | "double";
127
- }
128
- }
129
- }
130
-
131
- const getter =
132
- (tags: IMetadataTypeTag[]) =>
133
- (kind: string): number | undefined => {
134
- const value: bigint | number | undefined = tags.find(
135
- (t) =>
136
- t.kind === kind &&
137
- (typeof t.value === "number" || typeof t.value === "bigint"),
138
- )?.value;
139
- return value !== undefined ? Number(value) : undefined;
140
- };
141
-
142
- const multiplier = (gap: number) => (range: IRange) => (m: number) => {
143
- const minimum: number =
144
- range.minimum.value === undefined
145
- ? 0
146
- : (() => {
147
- const x: number = m * Math.ceil(range.minimum.value / m);
148
- return range.minimum.exclusive && x === range.minimum.value
149
- ? x + m
150
- : x;
151
- })() / m;
152
- const maximum: number =
153
- range.maximum.value === undefined
154
- ? gap
155
- : (() => {
156
- const y: number = m * Math.floor(range.maximum.value / m);
157
- return range.maximum.exclusive && y === range.maximum.value
158
- ? y - m
159
- : y;
160
- })() / m;
161
- return { minimum, maximum };
162
- };
163
-
164
- interface IRange {
165
- minimum: IScalar;
166
- maximum: IScalar;
167
- }
168
- interface IScalar {
169
- value?: undefined | number;
170
- exclusive: boolean;
171
- }
1
+ import ts from "typescript";
2
+
3
+ import { ExpressionFactory } from "../../factories/ExpressionFactory";
4
+
5
+ import { IMetadataTypeTag } from "../../schemas/metadata/IMetadataTypeTag";
6
+
7
+ export namespace RandomRanger {
8
+ export interface IDefaults {
9
+ minimum: number;
10
+ maximum: number;
11
+ gap: number;
12
+ }
13
+
14
+ export const length =
15
+ (coalesce: (method: string) => ts.Expression) =>
16
+ (defs: IDefaults) =>
17
+ (acc: length.IAccessors) =>
18
+ (tags: IMetadataTypeTag[]): ts.Expression | undefined => {
19
+ const props = {
20
+ minimum: getter(tags)(acc.minimum),
21
+ maximum: getter(tags)(acc.maximum),
22
+ };
23
+ if (props.minimum === undefined && props.maximum === undefined)
24
+ return undefined;
25
+
26
+ if (props.maximum !== undefined && props.minimum === undefined) {
27
+ if (props.maximum <= 0) {
28
+ props.maximum = 0;
29
+ props.minimum = 0;
30
+ } else if (props.maximum < defs.gap)
31
+ props.minimum = defs.minimum === 0 ? 0 : 1;
32
+ }
33
+ props.minimum ??= defs.minimum;
34
+ props.maximum ??= defs.maximum;
35
+ if (props.maximum < props.minimum) (props.maximum as number) += defs.gap;
36
+
37
+ return ts.factory.createCallExpression(coalesce("integer"), undefined, [
38
+ ExpressionFactory.number(props.minimum),
39
+ ExpressionFactory.number(props.maximum),
40
+ ]);
41
+ };
42
+ export namespace length {
43
+ export interface IAccessors {
44
+ minimum: string;
45
+ maximum: string;
46
+ }
47
+ }
48
+
49
+ export const number =
50
+ (config: number.IConfig) =>
51
+ (defs: IDefaults) =>
52
+ (tags: IMetadataTypeTag[]): ts.Expression => {
53
+ const range = {
54
+ minimum: {
55
+ value: getter(tags)("minimum") ?? getter(tags)("exclusiveMinimum"),
56
+ exclusive: getter(tags)("exclusiveMinimum") !== undefined,
57
+ },
58
+ maximum: {
59
+ value: getter(tags)("maximum") ?? getter(tags)("exclusiveMaximum"),
60
+ exclusive: getter(tags)("exclusiveMaximum") !== undefined,
61
+ },
62
+ stepper: undefined,
63
+ multiply: getter(tags)("multipleOf"),
64
+ };
65
+
66
+ //----
67
+ // MULTIPLIERS
68
+ //----
69
+ if (range.multiply !== undefined) {
70
+ const { minimum, maximum } = multiplier(defs.gap)(range)(
71
+ range.multiply,
72
+ );
73
+ return ts.factory.createMultiply(
74
+ config.transform(range.multiply),
75
+ config.setter([minimum, maximum]),
76
+ );
77
+ }
78
+
79
+ //----
80
+ // RANGE
81
+ //----
82
+ // INT
83
+ const integer = (value: number) => value === Math.floor(value);
84
+ if (config.type === "int" || config.type === "uint") {
85
+ if (range.minimum.value !== undefined) {
86
+ if (range.minimum.exclusive) {
87
+ range.minimum.exclusive = false;
88
+ if (integer(range.minimum.value)) range.minimum.value += 1;
89
+ }
90
+ range.minimum.value = Math.ceil(range.minimum.value);
91
+ }
92
+ if (range.maximum.value !== undefined) {
93
+ if (range.maximum.exclusive) {
94
+ range.maximum.exclusive = false;
95
+ if (integer(range.maximum.value)) range.maximum.value -= 1;
96
+ }
97
+ range.maximum.value = Math.floor(range.maximum.value);
98
+ }
99
+ }
100
+
101
+ // UNSIGNED INT
102
+ if (config.type === "uint") {
103
+ if (range.minimum.value === undefined) range.minimum.value = 0;
104
+ else if (range.minimum.value <= 0) {
105
+ range.minimum.value = 0;
106
+ range.minimum.exclusive = false;
107
+ }
108
+ }
109
+
110
+ const minimum =
111
+ range.minimum.value ??
112
+ (range.maximum.value !== undefined
113
+ ? range.maximum.value - defs.gap
114
+ : defs.minimum);
115
+ const maximum =
116
+ range.maximum.value ??
117
+ (range.minimum.value !== undefined
118
+ ? range.minimum.value + defs.gap
119
+ : defs.maximum);
120
+ return config.setter([minimum, maximum]);
121
+ };
122
+ export namespace number {
123
+ export interface IConfig {
124
+ setter: (args: number[]) => ts.Expression;
125
+ transform: (value: number) => ts.Expression;
126
+ type: "int" | "uint" | "double";
127
+ }
128
+ }
129
+ }
130
+
131
+ const getter =
132
+ (tags: IMetadataTypeTag[]) =>
133
+ (kind: string): number | undefined => {
134
+ const value: bigint | number | undefined = tags.find(
135
+ (t) =>
136
+ t.kind === kind &&
137
+ (typeof t.value === "number" || typeof t.value === "bigint"),
138
+ )?.value;
139
+ return value !== undefined ? Number(value) : undefined;
140
+ };
141
+
142
+ const multiplier = (gap: number) => (range: IRange) => (m: number) => {
143
+ const minimum: number =
144
+ range.minimum.value === undefined
145
+ ? 0
146
+ : (() => {
147
+ const x: number = m * Math.ceil(range.minimum.value / m);
148
+ return range.minimum.exclusive && x === range.minimum.value
149
+ ? x + m
150
+ : x;
151
+ })() / m;
152
+ const maximum: number =
153
+ range.maximum.value === undefined
154
+ ? gap
155
+ : (() => {
156
+ const y: number = m * Math.floor(range.maximum.value / m);
157
+ return range.maximum.exclusive && y === range.maximum.value
158
+ ? y - m
159
+ : y;
160
+ })() / m;
161
+ return { minimum, maximum };
162
+ };
163
+
164
+ interface IRange {
165
+ minimum: IScalar;
166
+ maximum: IScalar;
167
+ }
168
+ interface IScalar {
169
+ value?: undefined | number;
170
+ exclusive: boolean;
171
+ }