typia 8.2.0 → 9.0.0-dev.20250405-3

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 (548) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +150 -150
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/internal/_randomInteger.d.mts +1 -1
  8. package/lib/internal/_randomInteger.d.ts +1 -1
  9. package/lib/internal/_randomInteger.js +14 -10
  10. package/lib/internal/_randomInteger.js.map +1 -1
  11. package/lib/internal/_randomInteger.mjs +17 -11
  12. package/lib/internal/_randomNumber.js +13 -9
  13. package/lib/internal/_randomNumber.js.map +1 -1
  14. package/lib/internal/_randomNumber.mjs +12 -6
  15. package/lib/json.d.mts +0 -44
  16. package/lib/json.d.ts +0 -44
  17. package/lib/json.js +0 -7
  18. package/lib/json.js.map +1 -1
  19. package/lib/json.mjs +1 -7
  20. package/lib/llm.d.mts +0 -37
  21. package/lib/llm.d.ts +0 -37
  22. package/lib/llm.js +0 -7
  23. package/lib/llm.js.map +1 -1
  24. package/lib/llm.mjs +1 -7
  25. package/lib/module.d.mts +0 -2
  26. package/lib/module.d.ts +0 -2
  27. package/lib/module.js +0 -2
  28. package/lib/module.js.map +1 -1
  29. package/lib/tags/ExclusiveMaximum.d.mts +2 -4
  30. package/lib/tags/ExclusiveMaximum.d.ts +2 -4
  31. package/lib/tags/ExclusiveMinimum.d.mts +2 -4
  32. package/lib/tags/ExclusiveMinimum.d.ts +2 -4
  33. package/lib/tags/Type.d.mts +4 -1
  34. package/lib/tags/Type.d.ts +4 -1
  35. package/package.json +3 -3
  36. package/src/AssertionGuard.ts +1 -1
  37. package/src/CamelCase.ts +75 -75
  38. package/src/IRandomGenerator.ts +49 -49
  39. package/src/IReadableURLSearchParams.ts +9 -9
  40. package/src/IValidation.ts +1 -1
  41. package/src/PascalCase.ts +71 -71
  42. package/src/Primitive.ts +92 -92
  43. package/src/Resolved.ts +74 -74
  44. package/src/SnakeCase.ts +126 -126
  45. package/src/TypeGuardError.ts +37 -37
  46. package/src/executable/TypiaGenerateWizard.ts +83 -83
  47. package/src/executable/TypiaPatchWizard.ts +45 -45
  48. package/src/executable/TypiaSetupWizard.ts +171 -171
  49. package/src/executable/setup/ArgumentParser.ts +42 -42
  50. package/src/executable/setup/CommandExecutor.ts +8 -8
  51. package/src/executable/setup/FileRetriever.ts +19 -19
  52. package/src/executable/setup/PackageManager.ts +87 -87
  53. package/src/executable/setup/PluginConfigurator.ts +69 -69
  54. package/src/executable/typia.ts +55 -55
  55. package/src/factories/CommentFactory.ts +79 -79
  56. package/src/factories/ExpressionFactory.ts +216 -216
  57. package/src/factories/IdentifierFactory.ts +89 -89
  58. package/src/factories/JsonMetadataFactory.ts +83 -83
  59. package/src/factories/LiteralFactory.ts +52 -52
  60. package/src/factories/MetadataCollection.ts +278 -278
  61. package/src/factories/MetadataCommentTagFactory.ts +650 -650
  62. package/src/factories/MetadataFactory.ts +404 -404
  63. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  64. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  65. package/src/factories/NumericRangeFactory.ts +72 -72
  66. package/src/factories/ProtobufFactory.ts +875 -875
  67. package/src/factories/StatementFactory.ts +90 -90
  68. package/src/factories/TemplateFactory.ts +64 -64
  69. package/src/factories/TypeFactory.ts +140 -140
  70. package/src/factories/ValueFactory.ts +12 -12
  71. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  72. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  73. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  74. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  75. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  76. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  77. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  78. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  79. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  80. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  81. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  82. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  83. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  84. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  85. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  86. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  87. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  88. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  89. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  90. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  91. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  92. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  93. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  94. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  95. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  96. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  97. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  98. package/src/functional.ts +750 -750
  99. package/src/http.ts +1047 -1047
  100. package/src/index.ts +4 -4
  101. package/src/internal/_IProtobufWriter.ts +18 -18
  102. package/src/internal/_ProtobufReader.ts +194 -194
  103. package/src/internal/_ProtobufSizer.ts +145 -145
  104. package/src/internal/_ProtobufWriter.ts +145 -145
  105. package/src/internal/_accessExpressionAsString.ts +46 -46
  106. package/src/internal/_assertGuard.ts +13 -13
  107. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  108. package/src/internal/_httpFormDataReadArray.ts +4 -4
  109. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  110. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  111. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  112. package/src/internal/_httpFormDataReadFile.ts +10 -10
  113. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  114. package/src/internal/_httpFormDataReadString.ts +10 -10
  115. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  116. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  117. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  118. package/src/internal/_httpParameterReadBigint.ts +10 -10
  119. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  120. package/src/internal/_httpParameterReadNumber.ts +7 -7
  121. package/src/internal/_httpParameterReadString.ts +2 -2
  122. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  123. package/src/internal/_httpQueryReadArray.ts +4 -4
  124. package/src/internal/_httpQueryReadBigint.ts +12 -12
  125. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  126. package/src/internal/_httpQueryReadNumber.ts +9 -9
  127. package/src/internal/_httpQueryReadString.ts +4 -4
  128. package/src/internal/_isBetween.ts +2 -2
  129. package/src/internal/_isBigintString.ts +8 -8
  130. package/src/internal/_isFormatByte.ts +7 -7
  131. package/src/internal/_isFormatDate.ts +3 -3
  132. package/src/internal/_isFormatDateTime.ts +4 -4
  133. package/src/internal/_isFormatDuration.ts +4 -4
  134. package/src/internal/_isFormatEmail.ts +4 -4
  135. package/src/internal/_isFormatHostname.ts +4 -4
  136. package/src/internal/_isFormatIdnEmail.ts +4 -4
  137. package/src/internal/_isFormatIdnHostname.ts +4 -4
  138. package/src/internal/_isFormatIpv4.ts +4 -4
  139. package/src/internal/_isFormatIpv6.ts +4 -4
  140. package/src/internal/_isFormatIri.ts +3 -3
  141. package/src/internal/_isFormatIriReference.ts +4 -4
  142. package/src/internal/_isFormatJsonPointer.ts +3 -3
  143. package/src/internal/_isFormatPassword.ts +1 -1
  144. package/src/internal/_isFormatRegex.ts +8 -8
  145. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  146. package/src/internal/_isFormatTime.ts +4 -4
  147. package/src/internal/_isFormatUri.ts +6 -6
  148. package/src/internal/_isFormatUriReference.ts +5 -5
  149. package/src/internal/_isFormatUriTemplate.ts +4 -4
  150. package/src/internal/_isFormatUrl.ts +4 -4
  151. package/src/internal/_isFormatUuid.ts +3 -3
  152. package/src/internal/_isTypeFloat.ts +5 -5
  153. package/src/internal/_isTypeInt32.ts +5 -5
  154. package/src/internal/_isTypeInt64.ts +5 -5
  155. package/src/internal/_isTypeUint32.ts +5 -5
  156. package/src/internal/_isTypeUint64.ts +5 -5
  157. package/src/internal/_isUniqueItems.ts +159 -159
  158. package/src/internal/_jsonStringifyNumber.ts +12 -12
  159. package/src/internal/_jsonStringifyRest.ts +3 -3
  160. package/src/internal/_jsonStringifyString.ts +42 -42
  161. package/src/internal/_jsonStringifyTail.ts +2 -2
  162. package/src/internal/_llmApplicationFinalize.ts +20 -20
  163. package/src/internal/_miscCloneAny.ts +46 -46
  164. package/src/internal/_notationAny.ts +37 -37
  165. package/src/internal/_notationCamel.ts +13 -13
  166. package/src/internal/_notationPascal.ts +8 -8
  167. package/src/internal/_notationSnake.ts +43 -43
  168. package/src/internal/_randomArray.ts +21 -21
  169. package/src/internal/_randomBigint.ts +6 -6
  170. package/src/internal/_randomBoolean.ts +1 -1
  171. package/src/internal/_randomFormatByte.ts +3 -3
  172. package/src/internal/_randomFormatDate.ts +18 -18
  173. package/src/internal/_randomFormatDatetime.ts +16 -16
  174. package/src/internal/_randomFormatDuration.ts +27 -27
  175. package/src/internal/_randomFormatEmail.ts +11 -11
  176. package/src/internal/_randomFormatHostname.ts +6 -6
  177. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  178. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  179. package/src/internal/_randomFormatIpv4.ts +11 -11
  180. package/src/internal/_randomFormatIpv6.ts +11 -11
  181. package/src/internal/_randomFormatIri.ts +3 -3
  182. package/src/internal/_randomFormatIriReference.ts +3 -3
  183. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  184. package/src/internal/_randomFormatPassword.ts +8 -8
  185. package/src/internal/_randomFormatRegex.ts +4 -4
  186. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  187. package/src/internal/_randomFormatTime.ts +14 -14
  188. package/src/internal/_randomFormatUri.ts +3 -3
  189. package/src/internal/_randomFormatUriReference.ts +3 -3
  190. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  191. package/src/internal/_randomFormatUrl.ts +11 -11
  192. package/src/internal/_randomFormatUuid.ts +6 -6
  193. package/src/internal/_randomInteger.ts +53 -47
  194. package/src/internal/_randomNumber.ts +80 -74
  195. package/src/internal/_randomPattern.ts +10 -10
  196. package/src/internal/_randomPick.ts +9 -9
  197. package/src/internal/_randomString.ts +24 -24
  198. package/src/internal/_throwTypeGuardError.ts +5 -5
  199. package/src/internal/_validateReport.ts +13 -13
  200. package/src/internal/private/__notationCapitalize.ts +2 -2
  201. package/src/internal/private/__notationUnsnake.ts +24 -24
  202. package/src/json.ts +696 -752
  203. package/src/llm.ts +342 -396
  204. package/src/misc.ts +658 -658
  205. package/src/module.ts +935 -937
  206. package/src/notations.ts +827 -827
  207. package/src/programmers/AssertProgrammer.ts +454 -454
  208. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  209. package/src/programmers/FeatureProgrammer.ts +622 -622
  210. package/src/programmers/ImportProgrammer.ts +185 -185
  211. package/src/programmers/IsProgrammer.ts +273 -273
  212. package/src/programmers/RandomProgrammer.ts +1190 -1190
  213. package/src/programmers/TypiaProgrammer.ts +175 -175
  214. package/src/programmers/ValidateProgrammer.ts +439 -439
  215. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  216. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  217. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  218. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  219. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  220. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  221. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  222. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  223. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  224. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  225. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  226. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  227. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  228. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  229. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  230. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  231. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  232. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  233. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  234. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  235. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  236. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  237. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  238. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  239. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  240. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  241. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  242. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  243. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  244. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  245. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  246. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  247. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  248. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  249. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  250. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  251. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  252. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  253. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  254. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  255. package/src/programmers/internal/check_array_length.ts +47 -47
  256. package/src/programmers/internal/check_bigint.ts +50 -50
  257. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  258. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  259. package/src/programmers/internal/check_everything.ts +23 -23
  260. package/src/programmers/internal/check_native.ts +27 -27
  261. package/src/programmers/internal/check_number.ts +112 -112
  262. package/src/programmers/internal/check_object.ts +75 -75
  263. package/src/programmers/internal/check_string.ts +50 -50
  264. package/src/programmers/internal/check_template.ts +48 -48
  265. package/src/programmers/internal/check_union_array_like.ts +335 -335
  266. package/src/programmers/internal/decode_union_object.ts +116 -116
  267. package/src/programmers/internal/feature_object_entries.ts +61 -61
  268. package/src/programmers/internal/json_schema_alias.ts +47 -47
  269. package/src/programmers/internal/json_schema_array.ts +45 -45
  270. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  271. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  272. package/src/programmers/internal/json_schema_constant.ts +26 -26
  273. package/src/programmers/internal/json_schema_description.ts +12 -12
  274. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  275. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  276. package/src/programmers/internal/json_schema_native.ts +33 -33
  277. package/src/programmers/internal/json_schema_number.ts +15 -15
  278. package/src/programmers/internal/json_schema_object.ts +158 -158
  279. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  280. package/src/programmers/internal/json_schema_station.ts +182 -182
  281. package/src/programmers/internal/json_schema_string.ts +15 -15
  282. package/src/programmers/internal/json_schema_template.ts +55 -55
  283. package/src/programmers/internal/json_schema_title.ts +20 -20
  284. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  285. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  286. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  287. package/src/programmers/internal/prune_object_properties.ts +71 -71
  288. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  289. package/src/programmers/internal/stringify_native.ts +7 -7
  290. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  291. package/src/programmers/internal/template_to_pattern.ts +23 -23
  292. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  293. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  294. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  295. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  296. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  297. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  298. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  299. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  300. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  301. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  302. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  303. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  304. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  305. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  306. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  307. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  308. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  309. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  310. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  311. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  312. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  313. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  314. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  315. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  316. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  317. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  318. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  319. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  320. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  321. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  322. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  323. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  324. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  325. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  326. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  327. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  328. package/src/protobuf.ts +868 -868
  329. package/src/reflect.ts +57 -57
  330. package/src/schemas/json/IJsonApplication.ts +73 -73
  331. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  332. package/src/schemas/json/__IJsonApplication.ts +63 -63
  333. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  334. package/src/schemas/metadata/IMetadata.ts +35 -35
  335. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  336. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  337. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  338. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  339. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  340. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  341. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  342. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  343. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  344. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  345. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  346. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  347. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  348. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  349. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  350. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  351. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  352. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  353. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  354. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  355. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  356. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  357. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  358. package/src/schemas/metadata/Metadata.ts +687 -687
  359. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  360. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  361. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  362. package/src/schemas/metadata/MetadataArray.ts +49 -49
  363. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  364. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  365. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  366. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  367. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  368. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  369. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  370. package/src/schemas/metadata/MetadataMap.ts +48 -48
  371. package/src/schemas/metadata/MetadataNative.ts +44 -44
  372. package/src/schemas/metadata/MetadataObject.ts +48 -48
  373. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  374. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  375. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  376. package/src/schemas/metadata/MetadataSet.ts +45 -45
  377. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  378. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  379. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  380. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  381. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  382. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  383. package/src/tags/Constant.ts +15 -15
  384. package/src/tags/ContentMediaType.ts +10 -10
  385. package/src/tags/Default.ts +22 -22
  386. package/src/tags/Example.ts +24 -24
  387. package/src/tags/Examples.ts +16 -16
  388. package/src/tags/ExclusiveMaximum.ts +23 -25
  389. package/src/tags/ExclusiveMinimum.ts +23 -25
  390. package/src/tags/Format.ts +50 -50
  391. package/src/tags/JsonSchemaPlugin.ts +8 -8
  392. package/src/tags/MaxItems.ts +12 -12
  393. package/src/tags/MaxLength.ts +12 -12
  394. package/src/tags/Maximum.ts +19 -19
  395. package/src/tags/MinItems.ts +12 -12
  396. package/src/tags/MinLength.ts +12 -12
  397. package/src/tags/Minimum.ts +19 -19
  398. package/src/tags/MultipleOf.ts +21 -21
  399. package/src/tags/Pattern.ts +31 -31
  400. package/src/tags/Sequence.ts +10 -10
  401. package/src/tags/TagBase.ts +82 -82
  402. package/src/tags/Type.ts +37 -32
  403. package/src/tags/UniqueItems.ts +14 -14
  404. package/src/tags/index.ts +21 -21
  405. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  406. package/src/transform.ts +35 -35
  407. package/src/transformers/CallExpressionTransformer.ts +546 -546
  408. package/src/transformers/FileTransformer.ts +136 -136
  409. package/src/transformers/IProgrammerProps.ts +11 -11
  410. package/src/transformers/ITransformOptions.ts +62 -62
  411. package/src/transformers/ITransformProps.ts +9 -9
  412. package/src/transformers/ITypiaContext.ts +18 -18
  413. package/src/transformers/ImportTransformer.ts +81 -81
  414. package/src/transformers/NodeTransformer.ts +17 -17
  415. package/src/transformers/TransformerError.ts +60 -60
  416. package/src/transformers/features/AssertTransformer.ts +24 -24
  417. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  418. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  419. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  420. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  421. package/src/transformers/features/IsTransformer.ts +18 -18
  422. package/src/transformers/features/RandomTransformer.ts +41 -41
  423. package/src/transformers/features/ValidateTransformer.ts +18 -18
  424. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  425. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  426. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  427. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  428. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  429. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  430. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  431. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  432. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  433. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  434. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  435. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  436. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  437. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  438. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  439. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  440. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  441. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  442. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  443. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  444. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  445. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  446. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  447. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  448. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  449. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  450. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  451. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  452. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  453. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  454. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  455. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  456. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  457. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  458. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  459. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  460. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  461. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  462. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  463. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  464. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  465. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  466. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  467. package/src/transformers/features/llm/LlmApplicationTransformer.ts +128 -128
  468. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  469. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  470. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  471. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  472. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  473. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  474. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  475. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  476. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  477. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  478. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  479. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  480. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  481. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  482. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  483. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  484. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  485. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  486. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  487. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  488. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  489. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  490. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  491. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  492. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  493. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  494. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  495. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  496. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  497. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  498. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  499. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  500. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  501. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  502. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  503. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  504. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  505. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  506. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  507. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  508. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  509. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  510. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  511. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  512. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  513. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  514. package/src/transformers/internal/GenericTransformer.ts +101 -101
  515. package/src/typings/Atomic.ts +13 -13
  516. package/src/typings/ClassProperties.ts +5 -5
  517. package/src/typings/Customizable.ts +5 -5
  518. package/src/typings/Equal.ts +18 -18
  519. package/src/typings/IsTuple.ts +9 -9
  520. package/src/typings/NativeClass.ts +23 -23
  521. package/src/typings/OmitNever.ts +3 -3
  522. package/src/typings/ProtobufAtomic.ts +19 -19
  523. package/src/typings/SpecialFields.ts +3 -3
  524. package/src/typings/ValidationPipe.ts +9 -9
  525. package/src/typings/ValueOf.ts +20 -20
  526. package/src/typings/Writable.ts +11 -11
  527. package/src/utils/ArrayUtil.ts +41 -41
  528. package/src/utils/Escaper.ts +50 -50
  529. package/src/utils/MapUtil.ts +14 -14
  530. package/src/utils/NamingConvention.ts +94 -94
  531. package/src/utils/PatternUtil.ts +29 -29
  532. package/src/utils/ProtobufNameEncoder.ts +32 -32
  533. package/src/utils/Singleton.ts +16 -16
  534. package/src/utils/StringUtil.ts +16 -16
  535. package/lib/schemas/llm/ILlmApplicationOfValidate.d.mts +0 -5
  536. package/lib/schemas/llm/ILlmApplicationOfValidate.d.ts +0 -5
  537. package/lib/schemas/llm/ILlmApplicationOfValidate.js +0 -3
  538. package/lib/schemas/llm/ILlmApplicationOfValidate.js.map +0 -1
  539. package/lib/schemas/llm/ILlmApplicationOfValidate.mjs +0 -2
  540. package/lib/schemas/llm/ILlmApplicationOfValidate.mjs.map +0 -1
  541. package/lib/schemas/llm/ILlmFunctionOfValidate.d.mts +0 -5
  542. package/lib/schemas/llm/ILlmFunctionOfValidate.d.ts +0 -5
  543. package/lib/schemas/llm/ILlmFunctionOfValidate.js +0 -3
  544. package/lib/schemas/llm/ILlmFunctionOfValidate.js.map +0 -1
  545. package/lib/schemas/llm/ILlmFunctionOfValidate.mjs +0 -2
  546. package/lib/schemas/llm/ILlmFunctionOfValidate.mjs.map +0 -1
  547. package/src/schemas/llm/ILlmApplicationOfValidate.ts +0 -6
  548. package/src/schemas/llm/ILlmFunctionOfValidate.ts +0 -6
@@ -1,171 +1,171 @@
1
- import fs from "fs";
2
- import { DetectResult, detect } from "package-manager-detector";
3
-
4
- import { ArgumentParser } from "./setup/ArgumentParser";
5
- import { CommandExecutor } from "./setup/CommandExecutor";
6
- import { PackageManager } from "./setup/PackageManager";
7
- import { PluginConfigurator } from "./setup/PluginConfigurator";
8
-
9
- export namespace TypiaSetupWizard {
10
- export interface IArguments {
11
- manager: "npm" | "pnpm" | "yarn" | "bun";
12
- project: string | null;
13
- }
14
-
15
- export const setup = async (): Promise<void> => {
16
- console.log("----------------------------------------");
17
- console.log(" Typia Setup Wizard");
18
- console.log("----------------------------------------");
19
-
20
- // PREPARE ASSETS
21
- const pack: PackageManager = await PackageManager.mount();
22
- const args: IArguments = await ArgumentParser.parse(pack, inquiry);
23
-
24
- // INSTALL TYPESCRIPT COMPILERS
25
- pack.install({
26
- dev: true,
27
- modulo: "typescript",
28
- version: await getTypeScriptVersion(),
29
- });
30
- pack.install({ dev: true, modulo: "ts-patch", version: "latest" });
31
- args.project ??= (() => {
32
- const runner: string = pack.manager === "npm" ? "npx" : pack.manager;
33
- CommandExecutor.run(`${runner} tsc --init`);
34
- return (args.project = "tsconfig.json");
35
- })();
36
-
37
- // SETUP TRANSFORMER
38
- await pack.save((data) => {
39
- // COMPOSE PREPARE COMMAND
40
- data.scripts ??= {};
41
- if (
42
- typeof data.scripts.prepare === "string" &&
43
- data.scripts.prepare.trim().length !== 0
44
- ) {
45
- if (data.scripts.prepare.includes("ts-patch install") === false)
46
- data.scripts.prepare = "ts-patch install && " + data.scripts.prepare;
47
- } else data.scripts.prepare = "ts-patch install";
48
-
49
- // NO MORE "typia patch" REQUIRED
50
- data.scripts.prepare = data.scripts.prepare
51
- .split("&&")
52
- .map((str) => str.trim())
53
- .filter((str) => str !== "typia patch")
54
- .join(" && ");
55
-
56
- // FOR OLDER VERSIONS
57
- if (typeof data.scripts.postinstall === "string") {
58
- data.scripts.postinstall = data.scripts.postinstall
59
- .split("&&")
60
- .map((str) => str.trim())
61
- .filter((str) => str.indexOf("ts-patch install") === -1)
62
- .join(" && ");
63
- if (data.scripts.postinstall.length === 0)
64
- delete data.scripts.postinstall;
65
- }
66
- });
67
-
68
- // CONFIGURE TYPIA
69
- await PluginConfigurator.configure(args);
70
- CommandExecutor.run(`${pack.manager} run prepare`);
71
- };
72
-
73
- const inquiry: ArgumentParser.Inquiry<IArguments> = async (
74
- pack,
75
- command,
76
- prompt,
77
- action,
78
- ) => {
79
- // PREPARE ASSETS
80
- command.option("--manager [manager", "package manager");
81
- command.option("--project [project]", "tsconfig.json file location");
82
-
83
- // INTERNAL PROCEDURES
84
- const questioned = { value: false };
85
- const select =
86
- (name: string) =>
87
- (message: string) =>
88
- async <Choice extends string>(
89
- choices: Choice[],
90
- filter?: (choice: string) => Choice,
91
- ): Promise<Choice> => {
92
- questioned.value = true;
93
- return (
94
- await prompt()({
95
- type: "list",
96
- name: name,
97
- message: message,
98
- choices: choices,
99
- ...(filter ? { filter } : {}),
100
- })
101
- )[name];
102
- };
103
- const configure = async (): Promise<string | null> => {
104
- const fileList: string[] = await (
105
- await fs.promises.readdir(process.cwd())
106
- )
107
- .filter(
108
- (str) =>
109
- str.substring(0, 8) === "tsconfig" &&
110
- str.substring(str.length - 5) === ".json",
111
- )
112
- .sort((x, y) =>
113
- x === "tsconfig.json"
114
- ? -1
115
- : y === "tsconfig.json"
116
- ? 1
117
- : x < y
118
- ? -1
119
- : 1,
120
- );
121
- if (fileList.length === 0) {
122
- if (process.cwd() !== pack.directory)
123
- throw new URIError(`Unable to find "tsconfig.json" file.`);
124
- return null;
125
- } else if (fileList.length === 1) return fileList[0]!;
126
- return select("tsconfig")("TS Config File")(fileList);
127
- };
128
-
129
- // DO CONSTRUCT
130
- return action(async (options) => {
131
- pack.manager = options.manager ??=
132
- (await detectManager()) ??
133
- (await select("manager")("Package Manager")(
134
- [
135
- "npm" as const,
136
- "pnpm" as const,
137
- "bun" as const,
138
- "yarn (berry is not supported)" as "yarn",
139
- ],
140
- (value) => value.split(" ")[0] as "yarn",
141
- ));
142
- options.project ??= await configure();
143
-
144
- if (questioned.value) console.log("");
145
- return options as IArguments;
146
- });
147
- };
148
-
149
- const detectManager = async (): Promise<
150
- "npm" | "pnpm" | "yarn" | "bun" | null
151
- > => {
152
- const result: DetectResult | null = await detect({ cwd: process.cwd() });
153
- switch (result?.name) {
154
- case "npm":
155
- case "deno":
156
- return null; // NPM case is still selectable & Deno is not supported
157
- default:
158
- return result?.name ?? null;
159
- }
160
- };
161
-
162
- const getTypeScriptVersion = async (): Promise<string> => {
163
- const content: string = await fs.promises.readFile(
164
- `${__dirname}/../../package.json`,
165
- "utf-8",
166
- );
167
- const json: { devDependencies: { typescript: string } } =
168
- JSON.parse(content);
169
- return json.devDependencies.typescript;
170
- };
171
- }
1
+ import fs from "fs";
2
+ import { DetectResult, detect } from "package-manager-detector";
3
+
4
+ import { ArgumentParser } from "./setup/ArgumentParser";
5
+ import { CommandExecutor } from "./setup/CommandExecutor";
6
+ import { PackageManager } from "./setup/PackageManager";
7
+ import { PluginConfigurator } from "./setup/PluginConfigurator";
8
+
9
+ export namespace TypiaSetupWizard {
10
+ export interface IArguments {
11
+ manager: "npm" | "pnpm" | "yarn" | "bun";
12
+ project: string | null;
13
+ }
14
+
15
+ export const setup = async (): Promise<void> => {
16
+ console.log("----------------------------------------");
17
+ console.log(" Typia Setup Wizard");
18
+ console.log("----------------------------------------");
19
+
20
+ // PREPARE ASSETS
21
+ const pack: PackageManager = await PackageManager.mount();
22
+ const args: IArguments = await ArgumentParser.parse(pack, inquiry);
23
+
24
+ // INSTALL TYPESCRIPT COMPILERS
25
+ pack.install({
26
+ dev: true,
27
+ modulo: "typescript",
28
+ version: await getTypeScriptVersion(),
29
+ });
30
+ pack.install({ dev: true, modulo: "ts-patch", version: "latest" });
31
+ args.project ??= (() => {
32
+ const runner: string = pack.manager === "npm" ? "npx" : pack.manager;
33
+ CommandExecutor.run(`${runner} tsc --init`);
34
+ return (args.project = "tsconfig.json");
35
+ })();
36
+
37
+ // SETUP TRANSFORMER
38
+ await pack.save((data) => {
39
+ // COMPOSE PREPARE COMMAND
40
+ data.scripts ??= {};
41
+ if (
42
+ typeof data.scripts.prepare === "string" &&
43
+ data.scripts.prepare.trim().length !== 0
44
+ ) {
45
+ if (data.scripts.prepare.includes("ts-patch install") === false)
46
+ data.scripts.prepare = "ts-patch install && " + data.scripts.prepare;
47
+ } else data.scripts.prepare = "ts-patch install";
48
+
49
+ // NO MORE "typia patch" REQUIRED
50
+ data.scripts.prepare = data.scripts.prepare
51
+ .split("&&")
52
+ .map((str) => str.trim())
53
+ .filter((str) => str !== "typia patch")
54
+ .join(" && ");
55
+
56
+ // FOR OLDER VERSIONS
57
+ if (typeof data.scripts.postinstall === "string") {
58
+ data.scripts.postinstall = data.scripts.postinstall
59
+ .split("&&")
60
+ .map((str) => str.trim())
61
+ .filter((str) => str.indexOf("ts-patch install") === -1)
62
+ .join(" && ");
63
+ if (data.scripts.postinstall.length === 0)
64
+ delete data.scripts.postinstall;
65
+ }
66
+ });
67
+
68
+ // CONFIGURE TYPIA
69
+ await PluginConfigurator.configure(args);
70
+ CommandExecutor.run(`${pack.manager} run prepare`);
71
+ };
72
+
73
+ const inquiry: ArgumentParser.Inquiry<IArguments> = async (
74
+ pack,
75
+ command,
76
+ prompt,
77
+ action,
78
+ ) => {
79
+ // PREPARE ASSETS
80
+ command.option("--manager [manager", "package manager");
81
+ command.option("--project [project]", "tsconfig.json file location");
82
+
83
+ // INTERNAL PROCEDURES
84
+ const questioned = { value: false };
85
+ const select =
86
+ (name: string) =>
87
+ (message: string) =>
88
+ async <Choice extends string>(
89
+ choices: Choice[],
90
+ filter?: (choice: string) => Choice,
91
+ ): Promise<Choice> => {
92
+ questioned.value = true;
93
+ return (
94
+ await prompt()({
95
+ type: "list",
96
+ name: name,
97
+ message: message,
98
+ choices: choices,
99
+ ...(filter ? { filter } : {}),
100
+ })
101
+ )[name];
102
+ };
103
+ const configure = async (): Promise<string | null> => {
104
+ const fileList: string[] = await (
105
+ await fs.promises.readdir(process.cwd())
106
+ )
107
+ .filter(
108
+ (str) =>
109
+ str.substring(0, 8) === "tsconfig" &&
110
+ str.substring(str.length - 5) === ".json",
111
+ )
112
+ .sort((x, y) =>
113
+ x === "tsconfig.json"
114
+ ? -1
115
+ : y === "tsconfig.json"
116
+ ? 1
117
+ : x < y
118
+ ? -1
119
+ : 1,
120
+ );
121
+ if (fileList.length === 0) {
122
+ if (process.cwd() !== pack.directory)
123
+ throw new URIError(`Unable to find "tsconfig.json" file.`);
124
+ return null;
125
+ } else if (fileList.length === 1) return fileList[0]!;
126
+ return select("tsconfig")("TS Config File")(fileList);
127
+ };
128
+
129
+ // DO CONSTRUCT
130
+ return action(async (options) => {
131
+ pack.manager = options.manager ??=
132
+ (await detectManager()) ??
133
+ (await select("manager")("Package Manager")(
134
+ [
135
+ "npm" as const,
136
+ "pnpm" as const,
137
+ "bun" as const,
138
+ "yarn (berry is not supported)" as "yarn",
139
+ ],
140
+ (value) => value.split(" ")[0] as "yarn",
141
+ ));
142
+ options.project ??= await configure();
143
+
144
+ if (questioned.value) console.log("");
145
+ return options as IArguments;
146
+ });
147
+ };
148
+
149
+ const detectManager = async (): Promise<
150
+ "npm" | "pnpm" | "yarn" | "bun" | null
151
+ > => {
152
+ const result: DetectResult | null = await detect({ cwd: process.cwd() });
153
+ switch (result?.name) {
154
+ case "npm":
155
+ case "deno":
156
+ return null; // NPM case is still selectable & Deno is not supported
157
+ default:
158
+ return result?.name ?? null;
159
+ }
160
+ };
161
+
162
+ const getTypeScriptVersion = async (): Promise<string> => {
163
+ const content: string = await fs.promises.readFile(
164
+ `${__dirname}/../../package.json`,
165
+ "utf-8",
166
+ );
167
+ const json: { devDependencies: { typescript: string } } =
168
+ JSON.parse(content);
169
+ return json.devDependencies.typescript;
170
+ };
171
+ }
@@ -1,42 +1,42 @@
1
- import commander from "commander";
2
- import inquirer from "inquirer";
3
-
4
- import { PackageManager } from "./PackageManager";
5
-
6
- export namespace ArgumentParser {
7
- export type Inquiry<T> = (
8
- pack: PackageManager,
9
- command: commander.Command,
10
- prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
11
- action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
12
- ) => Promise<T>;
13
-
14
- export const parse = async <T>(
15
- pack: PackageManager,
16
- inquiry: (
17
- pack: PackageManager,
18
- command: commander.Command,
19
- prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
20
- action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
21
- ) => Promise<T>,
22
- ): Promise<T> => {
23
- // TAKE OPTIONS
24
- const action = (closure: (options: Partial<T>) => Promise<T>) =>
25
- new Promise<T>((resolve, reject) => {
26
- commander.program.action(async (options) => {
27
- try {
28
- resolve(await closure(options));
29
- } catch (exp) {
30
- reject(exp);
31
- }
32
- });
33
- commander.program.parseAsync().catch(reject);
34
- });
35
- return inquiry(
36
- pack,
37
- commander.program,
38
- inquirer.createPromptModule,
39
- action,
40
- );
41
- };
42
- }
1
+ import commander from "commander";
2
+ import inquirer from "inquirer";
3
+
4
+ import { PackageManager } from "./PackageManager";
5
+
6
+ export namespace ArgumentParser {
7
+ export type Inquiry<T> = (
8
+ pack: PackageManager,
9
+ command: commander.Command,
10
+ prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
11
+ action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
12
+ ) => Promise<T>;
13
+
14
+ export const parse = async <T>(
15
+ pack: PackageManager,
16
+ inquiry: (
17
+ pack: PackageManager,
18
+ command: commander.Command,
19
+ prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule,
20
+ action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>,
21
+ ) => Promise<T>,
22
+ ): Promise<T> => {
23
+ // TAKE OPTIONS
24
+ const action = (closure: (options: Partial<T>) => Promise<T>) =>
25
+ new Promise<T>((resolve, reject) => {
26
+ commander.program.action(async (options) => {
27
+ try {
28
+ resolve(await closure(options));
29
+ } catch (exp) {
30
+ reject(exp);
31
+ }
32
+ });
33
+ commander.program.parseAsync().catch(reject);
34
+ });
35
+ return inquiry(
36
+ pack,
37
+ commander.program,
38
+ inquirer.createPromptModule,
39
+ action,
40
+ );
41
+ };
42
+ }
@@ -1,8 +1,8 @@
1
- import cp from "child_process";
2
-
3
- export namespace CommandExecutor {
4
- export const run = (str: string): void => {
5
- console.log(`\n$ ${str}`);
6
- cp.execSync(str, { stdio: "inherit" });
7
- };
8
- }
1
+ import cp from "child_process";
2
+
3
+ export namespace CommandExecutor {
4
+ export const run = (str: string): void => {
5
+ console.log(`\n$ ${str}`);
6
+ cp.execSync(str, { stdio: "inherit" });
7
+ };
8
+ }
@@ -1,19 +1,19 @@
1
- import fs from "fs";
2
- import path from "path";
3
-
4
- export namespace FileRetriever {
5
- export const directory = (props: {
6
- file: string;
7
- location: string;
8
- depth?: number;
9
- }): string | null => {
10
- const location: string = path.join(props.location, props.file);
11
- if (fs.existsSync(location)) return props.location;
12
- else if ((props.depth ?? 0) > 2) return null;
13
- return directory({
14
- file: props.file,
15
- location: path.join(props.location, ".."),
16
- depth: (props.depth ?? 0) + 1,
17
- });
18
- };
19
- }
1
+ import fs from "fs";
2
+ import path from "path";
3
+
4
+ export namespace FileRetriever {
5
+ export const directory = (props: {
6
+ file: string;
7
+ location: string;
8
+ depth?: number;
9
+ }): string | null => {
10
+ const location: string = path.join(props.location, props.file);
11
+ if (fs.existsSync(location)) return props.location;
12
+ else if ((props.depth ?? 0) > 2) return null;
13
+ return directory({
14
+ file: props.file,
15
+ location: path.join(props.location, ".."),
16
+ depth: (props.depth ?? 0) + 1,
17
+ });
18
+ };
19
+ }
@@ -1,87 +1,87 @@
1
- import fs from "fs";
2
- import path from "path";
3
-
4
- import { CommandExecutor } from "./CommandExecutor";
5
- import { FileRetriever } from "./FileRetriever";
6
-
7
- export class PackageManager {
8
- public manager: Manager = "npm";
9
- public get file(): string {
10
- return path.join(this.directory, "package.json");
11
- }
12
-
13
- public static async mount(): Promise<PackageManager> {
14
- const location: string | null = await FileRetriever.directory({
15
- file: "package.json",
16
- location: process.cwd(),
17
- });
18
- if (location === null)
19
- throw new URIError(`Unable to find "package.json" file`);
20
-
21
- return new PackageManager(
22
- location,
23
- await this.load(path.join(location, "package.json")),
24
- );
25
- }
26
-
27
- public async save(modifier: (data: Package.Data) => void): Promise<void> {
28
- const content: string = await fs.promises.readFile(this.file, "utf8");
29
- this.data = JSON.parse(content);
30
- modifier(this.data);
31
-
32
- return fs.promises.writeFile(
33
- this.file,
34
- JSON.stringify(this.data, null, 2),
35
- "utf8",
36
- );
37
- }
38
-
39
- public install(props: {
40
- dev: boolean;
41
- modulo: string;
42
- version: string;
43
- }): boolean {
44
- const middle: string = [
45
- installCmdTable[this.manager],
46
- props.dev ? devOptionTable[this.manager] : "",
47
- ]
48
- .filter((str) => !!str.length)
49
- .join(" ");
50
- const modulo: string = `${props.modulo}${props.version ? `@${props.version}` : ""}`;
51
- CommandExecutor.run([this.manager, middle, modulo].join(" "));
52
- return true;
53
- }
54
-
55
- private constructor(
56
- public readonly directory: string,
57
- public data: Package.Data,
58
- ) {}
59
-
60
- private static async load(file: string): Promise<Package.Data> {
61
- const content: string = await fs.promises.readFile(file, "utf8");
62
- return JSON.parse(content);
63
- }
64
- }
65
- export namespace Package {
66
- export interface Data {
67
- scripts?: Record<string, string>;
68
- dependencies?: Record<string, string>;
69
- devDependencies?: Record<string, string>;
70
- }
71
- }
72
-
73
- type Manager = "npm" | "pnpm" | "yarn" | "bun";
74
-
75
- const installCmdTable = {
76
- npm: "i",
77
- pnpm: "add",
78
- yarn: "add",
79
- bun: "add",
80
- } as const satisfies Record<Manager, string>;
81
-
82
- const devOptionTable = {
83
- npm: "-D",
84
- pnpm: "-D",
85
- yarn: "-D",
86
- bun: "-d",
87
- } as const satisfies Record<Manager, string>;
1
+ import fs from "fs";
2
+ import path from "path";
3
+
4
+ import { CommandExecutor } from "./CommandExecutor";
5
+ import { FileRetriever } from "./FileRetriever";
6
+
7
+ export class PackageManager {
8
+ public manager: Manager = "npm";
9
+ public get file(): string {
10
+ return path.join(this.directory, "package.json");
11
+ }
12
+
13
+ public static async mount(): Promise<PackageManager> {
14
+ const location: string | null = await FileRetriever.directory({
15
+ file: "package.json",
16
+ location: process.cwd(),
17
+ });
18
+ if (location === null)
19
+ throw new URIError(`Unable to find "package.json" file`);
20
+
21
+ return new PackageManager(
22
+ location,
23
+ await this.load(path.join(location, "package.json")),
24
+ );
25
+ }
26
+
27
+ public async save(modifier: (data: Package.Data) => void): Promise<void> {
28
+ const content: string = await fs.promises.readFile(this.file, "utf8");
29
+ this.data = JSON.parse(content);
30
+ modifier(this.data);
31
+
32
+ return fs.promises.writeFile(
33
+ this.file,
34
+ JSON.stringify(this.data, null, 2),
35
+ "utf8",
36
+ );
37
+ }
38
+
39
+ public install(props: {
40
+ dev: boolean;
41
+ modulo: string;
42
+ version: string;
43
+ }): boolean {
44
+ const middle: string = [
45
+ installCmdTable[this.manager],
46
+ props.dev ? devOptionTable[this.manager] : "",
47
+ ]
48
+ .filter((str) => !!str.length)
49
+ .join(" ");
50
+ const modulo: string = `${props.modulo}${props.version ? `@${props.version}` : ""}`;
51
+ CommandExecutor.run([this.manager, middle, modulo].join(" "));
52
+ return true;
53
+ }
54
+
55
+ private constructor(
56
+ public readonly directory: string,
57
+ public data: Package.Data,
58
+ ) {}
59
+
60
+ private static async load(file: string): Promise<Package.Data> {
61
+ const content: string = await fs.promises.readFile(file, "utf8");
62
+ return JSON.parse(content);
63
+ }
64
+ }
65
+ export namespace Package {
66
+ export interface Data {
67
+ scripts?: Record<string, string>;
68
+ dependencies?: Record<string, string>;
69
+ devDependencies?: Record<string, string>;
70
+ }
71
+ }
72
+
73
+ type Manager = "npm" | "pnpm" | "yarn" | "bun";
74
+
75
+ const installCmdTable = {
76
+ npm: "i",
77
+ pnpm: "add",
78
+ yarn: "add",
79
+ bun: "add",
80
+ } as const satisfies Record<Manager, string>;
81
+
82
+ const devOptionTable = {
83
+ npm: "-D",
84
+ pnpm: "-D",
85
+ yarn: "-D",
86
+ bun: "-d",
87
+ } as const satisfies Record<Manager, string>;