typia 7.0.0-dev.20240918 → 7.0.0-dev.20240919

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