typia 9.0.0 → 9.1.0-dev.20250408

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 (577) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +149 -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/factories/MetadataCommentTagFactory.js +8 -10
  8. package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
  9. package/lib/factories/MetadataCommentTagFactory.mjs +8 -10
  10. package/lib/functional.js +19 -27
  11. package/lib/functional.js.map +1 -1
  12. package/lib/functional.mjs +20 -27
  13. package/lib/http.js +27 -32
  14. package/lib/http.js.map +1 -1
  15. package/lib/http.mjs +28 -32
  16. package/lib/json.d.mts +66 -4
  17. package/lib/json.d.ts +66 -4
  18. package/lib/json.js +23 -21
  19. package/lib/json.js.map +1 -1
  20. package/lib/json.mjs +24 -22
  21. package/lib/llm.js +4 -9
  22. package/lib/llm.js.map +1 -1
  23. package/lib/llm.mjs +5 -9
  24. package/lib/misc.js +27 -23
  25. package/lib/misc.js.map +1 -1
  26. package/lib/misc.mjs +28 -23
  27. package/lib/module.d.mts +1 -0
  28. package/lib/module.d.ts +1 -0
  29. package/lib/module.js +20 -24
  30. package/lib/module.js.map +1 -1
  31. package/lib/module.mjs +19 -24
  32. package/lib/notations.js +25 -30
  33. package/lib/notations.js.map +1 -1
  34. package/lib/notations.mjs +26 -30
  35. package/lib/programmers/json/JsonSchemaProgrammer.d.mts +9 -0
  36. package/lib/programmers/json/JsonSchemaProgrammer.d.ts +9 -0
  37. package/lib/programmers/json/JsonSchemaProgrammer.js +20 -0
  38. package/lib/programmers/json/JsonSchemaProgrammer.js.map +1 -0
  39. package/lib/programmers/json/JsonSchemaProgrammer.mjs +20 -0
  40. package/lib/programmers/json/JsonSchemaProgrammer.mjs.map +1 -0
  41. package/lib/programmers/json/JsonSchemasProgrammer.js +1 -1
  42. package/lib/programmers/json/JsonSchemasProgrammer.js.map +1 -1
  43. package/lib/programmers/json/JsonSchemasProgrammer.mjs +1 -1
  44. package/lib/protobuf.js +18 -23
  45. package/lib/protobuf.js.map +1 -1
  46. package/lib/protobuf.mjs +19 -23
  47. package/lib/reflect.js +3 -8
  48. package/lib/reflect.js.map +1 -1
  49. package/lib/reflect.mjs +4 -8
  50. package/lib/schemas/json/IJsonSchemaUnit.d.mts +26 -0
  51. package/lib/schemas/json/IJsonSchemaUnit.d.ts +26 -0
  52. package/lib/schemas/json/IJsonSchemaUnit.js +3 -0
  53. package/lib/schemas/json/IJsonSchemaUnit.js.map +1 -0
  54. package/lib/schemas/json/IJsonSchemaUnit.mjs +2 -0
  55. package/lib/schemas/json/IJsonSchemaUnit.mjs.map +1 -0
  56. package/lib/transformers/CallExpressionTransformer.js +2 -2
  57. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  58. package/lib/transformers/CallExpressionTransformer.mjs +2 -2
  59. package/lib/transformers/NoTransformConfigurationError.d.mts +1 -0
  60. package/lib/transformers/NoTransformConfigurationError.d.ts +1 -0
  61. package/lib/transformers/NoTransformConfigurationError.js +20 -0
  62. package/lib/transformers/NoTransformConfigurationError.js.map +1 -0
  63. package/lib/transformers/NoTransformConfigurationError.mjs +19 -0
  64. package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -0
  65. package/lib/transformers/features/json/JsonSchemaTransformer.d.mts +5 -0
  66. package/lib/transformers/features/json/JsonSchemaTransformer.d.ts +5 -0
  67. package/lib/transformers/features/json/JsonSchemaTransformer.js +108 -0
  68. package/lib/transformers/features/json/JsonSchemaTransformer.js.map +1 -0
  69. package/lib/transformers/features/json/JsonSchemaTransformer.mjs +104 -0
  70. package/lib/transformers/features/json/JsonSchemaTransformer.mjs.map +1 -0
  71. package/lib/transformers/features/json/JsonSchemasTransformer.js +9 -9
  72. package/lib/transformers/features/json/JsonSchemasTransformer.js.map +1 -1
  73. package/lib/transformers/features/json/JsonSchemasTransformer.mjs +9 -9
  74. package/package.json +1 -4
  75. package/src/AssertionGuard.ts +1 -1
  76. package/src/CamelCase.ts +75 -75
  77. package/src/IRandomGenerator.ts +49 -49
  78. package/src/IReadableURLSearchParams.ts +9 -9
  79. package/src/IValidation.ts +1 -1
  80. package/src/PascalCase.ts +71 -71
  81. package/src/Primitive.ts +92 -92
  82. package/src/Resolved.ts +74 -74
  83. package/src/SnakeCase.ts +126 -126
  84. package/src/TypeGuardError.ts +37 -37
  85. package/src/executable/TypiaGenerateWizard.ts +83 -83
  86. package/src/executable/TypiaPatchWizard.ts +45 -45
  87. package/src/executable/TypiaSetupWizard.ts +171 -171
  88. package/src/executable/setup/ArgumentParser.ts +42 -42
  89. package/src/executable/setup/CommandExecutor.ts +8 -8
  90. package/src/executable/setup/FileRetriever.ts +19 -19
  91. package/src/executable/setup/PackageManager.ts +87 -87
  92. package/src/executable/setup/PluginConfigurator.ts +69 -69
  93. package/src/executable/typia.ts +55 -55
  94. package/src/factories/CommentFactory.ts +79 -79
  95. package/src/factories/ExpressionFactory.ts +216 -216
  96. package/src/factories/IdentifierFactory.ts +89 -89
  97. package/src/factories/JsonMetadataFactory.ts +83 -83
  98. package/src/factories/LiteralFactory.ts +52 -52
  99. package/src/factories/MetadataCollection.ts +278 -278
  100. package/src/factories/MetadataCommentTagFactory.ts +648 -650
  101. package/src/factories/MetadataFactory.ts +404 -404
  102. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  103. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  104. package/src/factories/NumericRangeFactory.ts +72 -72
  105. package/src/factories/ProtobufFactory.ts +875 -875
  106. package/src/factories/StatementFactory.ts +90 -90
  107. package/src/factories/TemplateFactory.ts +64 -64
  108. package/src/factories/TypeFactory.ts +140 -140
  109. package/src/factories/ValueFactory.ts +12 -12
  110. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  111. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  112. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  113. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  114. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  115. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  116. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  117. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  118. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  119. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  120. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  121. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  122. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  123. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  124. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  125. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  126. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  127. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  128. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  129. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  130. package/src/factories/internal/metadata/iterate_metadata_native.ts +255 -255
  131. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  132. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  133. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  134. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  135. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  136. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  137. package/src/functional.ts +740 -750
  138. package/src/http.ts +1040 -1047
  139. package/src/index.ts +4 -4
  140. package/src/internal/_IProtobufWriter.ts +18 -18
  141. package/src/internal/_ProtobufReader.ts +194 -194
  142. package/src/internal/_ProtobufSizer.ts +145 -145
  143. package/src/internal/_ProtobufWriter.ts +145 -145
  144. package/src/internal/_accessExpressionAsString.ts +46 -46
  145. package/src/internal/_assertGuard.ts +13 -13
  146. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  147. package/src/internal/_httpFormDataReadArray.ts +4 -4
  148. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  149. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  150. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  151. package/src/internal/_httpFormDataReadFile.ts +10 -10
  152. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  153. package/src/internal/_httpFormDataReadString.ts +10 -10
  154. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  155. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  156. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  157. package/src/internal/_httpParameterReadBigint.ts +10 -10
  158. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  159. package/src/internal/_httpParameterReadNumber.ts +7 -7
  160. package/src/internal/_httpParameterReadString.ts +2 -2
  161. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  162. package/src/internal/_httpQueryReadArray.ts +4 -4
  163. package/src/internal/_httpQueryReadBigint.ts +12 -12
  164. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  165. package/src/internal/_httpQueryReadNumber.ts +9 -9
  166. package/src/internal/_httpQueryReadString.ts +4 -4
  167. package/src/internal/_isBetween.ts +2 -2
  168. package/src/internal/_isBigintString.ts +8 -8
  169. package/src/internal/_isFormatByte.ts +7 -7
  170. package/src/internal/_isFormatDate.ts +3 -3
  171. package/src/internal/_isFormatDateTime.ts +4 -4
  172. package/src/internal/_isFormatDuration.ts +4 -4
  173. package/src/internal/_isFormatEmail.ts +4 -4
  174. package/src/internal/_isFormatHostname.ts +4 -4
  175. package/src/internal/_isFormatIdnEmail.ts +4 -4
  176. package/src/internal/_isFormatIdnHostname.ts +4 -4
  177. package/src/internal/_isFormatIpv4.ts +4 -4
  178. package/src/internal/_isFormatIpv6.ts +4 -4
  179. package/src/internal/_isFormatIri.ts +3 -3
  180. package/src/internal/_isFormatIriReference.ts +4 -4
  181. package/src/internal/_isFormatJsonPointer.ts +3 -3
  182. package/src/internal/_isFormatPassword.ts +1 -1
  183. package/src/internal/_isFormatRegex.ts +8 -8
  184. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  185. package/src/internal/_isFormatTime.ts +4 -4
  186. package/src/internal/_isFormatUri.ts +6 -6
  187. package/src/internal/_isFormatUriReference.ts +5 -5
  188. package/src/internal/_isFormatUriTemplate.ts +4 -4
  189. package/src/internal/_isFormatUrl.ts +4 -4
  190. package/src/internal/_isFormatUuid.ts +3 -3
  191. package/src/internal/_isTypeFloat.ts +5 -5
  192. package/src/internal/_isTypeInt32.ts +5 -5
  193. package/src/internal/_isTypeInt64.ts +5 -5
  194. package/src/internal/_isTypeUint32.ts +5 -5
  195. package/src/internal/_isTypeUint64.ts +5 -5
  196. package/src/internal/_isUniqueItems.ts +159 -159
  197. package/src/internal/_jsonStringifyNumber.ts +12 -12
  198. package/src/internal/_jsonStringifyRest.ts +3 -3
  199. package/src/internal/_jsonStringifyString.ts +42 -42
  200. package/src/internal/_jsonStringifyTail.ts +2 -2
  201. package/src/internal/_llmApplicationFinalize.ts +20 -20
  202. package/src/internal/_miscCloneAny.ts +46 -46
  203. package/src/internal/_notationAny.ts +37 -37
  204. package/src/internal/_notationCamel.ts +13 -13
  205. package/src/internal/_notationPascal.ts +8 -8
  206. package/src/internal/_notationSnake.ts +43 -43
  207. package/src/internal/_randomArray.ts +21 -21
  208. package/src/internal/_randomBigint.ts +6 -6
  209. package/src/internal/_randomBoolean.ts +1 -1
  210. package/src/internal/_randomFormatByte.ts +3 -3
  211. package/src/internal/_randomFormatDate.ts +18 -18
  212. package/src/internal/_randomFormatDatetime.ts +16 -16
  213. package/src/internal/_randomFormatDuration.ts +27 -27
  214. package/src/internal/_randomFormatEmail.ts +11 -11
  215. package/src/internal/_randomFormatHostname.ts +6 -6
  216. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  217. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  218. package/src/internal/_randomFormatIpv4.ts +11 -11
  219. package/src/internal/_randomFormatIpv6.ts +11 -11
  220. package/src/internal/_randomFormatIri.ts +3 -3
  221. package/src/internal/_randomFormatIriReference.ts +3 -3
  222. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  223. package/src/internal/_randomFormatPassword.ts +8 -8
  224. package/src/internal/_randomFormatRegex.ts +4 -4
  225. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  226. package/src/internal/_randomFormatTime.ts +14 -14
  227. package/src/internal/_randomFormatUri.ts +3 -3
  228. package/src/internal/_randomFormatUriReference.ts +3 -3
  229. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  230. package/src/internal/_randomFormatUrl.ts +11 -11
  231. package/src/internal/_randomFormatUuid.ts +6 -6
  232. package/src/internal/_randomInteger.ts +53 -53
  233. package/src/internal/_randomNumber.ts +80 -80
  234. package/src/internal/_randomPattern.ts +10 -10
  235. package/src/internal/_randomPick.ts +9 -9
  236. package/src/internal/_randomString.ts +24 -24
  237. package/src/internal/_throwTypeGuardError.ts +5 -5
  238. package/src/internal/_validateReport.ts +13 -13
  239. package/src/internal/private/__notationCapitalize.ts +2 -2
  240. package/src/internal/private/__notationUnsnake.ts +24 -24
  241. package/src/json.ts +696 -696
  242. package/src/llm.ts +335 -342
  243. package/src/misc.ts +651 -658
  244. package/src/module.ts +929 -935
  245. package/src/notations.ts +820 -827
  246. package/src/programmers/AssertProgrammer.ts +454 -454
  247. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  248. package/src/programmers/FeatureProgrammer.ts +622 -622
  249. package/src/programmers/ImportProgrammer.ts +185 -185
  250. package/src/programmers/IsProgrammer.ts +273 -273
  251. package/src/programmers/RandomProgrammer.ts +1190 -1190
  252. package/src/programmers/TypiaProgrammer.ts +175 -175
  253. package/src/programmers/ValidateProgrammer.ts +439 -439
  254. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  255. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  256. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  257. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  258. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  259. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  260. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  261. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  262. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  263. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  264. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  265. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  266. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  267. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  268. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  269. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  270. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  271. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  272. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  273. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  274. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  275. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  276. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  277. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  278. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  279. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  280. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  281. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  282. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  283. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  284. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  285. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  286. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  287. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  288. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  289. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  290. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  291. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  292. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  293. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  294. package/src/programmers/internal/check_array_length.ts +47 -47
  295. package/src/programmers/internal/check_bigint.ts +50 -50
  296. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  297. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  298. package/src/programmers/internal/check_everything.ts +23 -23
  299. package/src/programmers/internal/check_native.ts +27 -27
  300. package/src/programmers/internal/check_number.ts +112 -112
  301. package/src/programmers/internal/check_object.ts +75 -75
  302. package/src/programmers/internal/check_string.ts +50 -50
  303. package/src/programmers/internal/check_template.ts +48 -48
  304. package/src/programmers/internal/check_union_array_like.ts +335 -335
  305. package/src/programmers/internal/decode_union_object.ts +116 -116
  306. package/src/programmers/internal/feature_object_entries.ts +61 -61
  307. package/src/programmers/internal/json_schema_alias.ts +47 -47
  308. package/src/programmers/internal/json_schema_array.ts +45 -45
  309. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  310. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  311. package/src/programmers/internal/json_schema_constant.ts +26 -26
  312. package/src/programmers/internal/json_schema_description.ts +12 -12
  313. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  314. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  315. package/src/programmers/internal/json_schema_native.ts +33 -33
  316. package/src/programmers/internal/json_schema_number.ts +15 -15
  317. package/src/programmers/internal/json_schema_object.ts +158 -158
  318. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  319. package/src/programmers/internal/json_schema_station.ts +185 -185
  320. package/src/programmers/internal/json_schema_string.ts +15 -15
  321. package/src/programmers/internal/json_schema_template.ts +55 -55
  322. package/src/programmers/internal/json_schema_title.ts +20 -20
  323. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  324. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  325. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  326. package/src/programmers/internal/prune_object_properties.ts +71 -71
  327. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  328. package/src/programmers/internal/stringify_native.ts +7 -7
  329. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  330. package/src/programmers/internal/template_to_pattern.ts +23 -23
  331. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  332. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  333. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  334. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  335. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  336. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  337. package/src/programmers/json/JsonSchemaProgrammer.ts +26 -0
  338. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  339. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  340. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  341. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  342. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  343. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  344. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  345. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  346. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  347. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  348. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  349. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  350. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  351. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  352. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  353. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  354. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  355. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  356. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  357. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  358. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  359. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  360. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  361. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  362. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  363. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  364. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  365. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  366. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  367. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  368. package/src/protobuf.ts +861 -868
  369. package/src/reflect.ts +50 -57
  370. package/src/schemas/json/IJsonApplication.ts +73 -73
  371. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  372. package/src/schemas/json/IJsonSchemaUnit.ts +32 -0
  373. package/src/schemas/json/__IJsonApplication.ts +63 -63
  374. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  375. package/src/schemas/metadata/IMetadata.ts +35 -35
  376. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  377. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  378. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  379. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  380. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  381. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  382. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  383. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  384. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  385. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  386. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  387. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  388. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  389. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  390. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  391. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  392. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  393. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  394. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  395. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  396. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  397. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  398. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  399. package/src/schemas/metadata/Metadata.ts +687 -687
  400. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  401. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  402. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  403. package/src/schemas/metadata/MetadataArray.ts +49 -49
  404. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  405. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  406. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  407. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  408. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  409. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  410. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  411. package/src/schemas/metadata/MetadataMap.ts +48 -48
  412. package/src/schemas/metadata/MetadataNative.ts +44 -44
  413. package/src/schemas/metadata/MetadataObject.ts +48 -48
  414. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  415. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  416. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  417. package/src/schemas/metadata/MetadataSet.ts +45 -45
  418. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  419. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  420. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  421. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  422. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  423. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  424. package/src/tags/Constant.ts +15 -15
  425. package/src/tags/ContentMediaType.ts +10 -10
  426. package/src/tags/Default.ts +22 -22
  427. package/src/tags/Example.ts +24 -24
  428. package/src/tags/Examples.ts +16 -16
  429. package/src/tags/ExclusiveMaximum.ts +23 -23
  430. package/src/tags/ExclusiveMinimum.ts +23 -23
  431. package/src/tags/Format.ts +50 -50
  432. package/src/tags/JsonSchemaPlugin.ts +8 -8
  433. package/src/tags/MaxItems.ts +12 -12
  434. package/src/tags/MaxLength.ts +12 -12
  435. package/src/tags/Maximum.ts +19 -19
  436. package/src/tags/MinItems.ts +12 -12
  437. package/src/tags/MinLength.ts +12 -12
  438. package/src/tags/Minimum.ts +19 -19
  439. package/src/tags/MultipleOf.ts +21 -21
  440. package/src/tags/Pattern.ts +31 -31
  441. package/src/tags/Sequence.ts +10 -10
  442. package/src/tags/TagBase.ts +82 -82
  443. package/src/tags/Type.ts +37 -37
  444. package/src/tags/UniqueItems.ts +14 -14
  445. package/src/tags/index.ts +21 -21
  446. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  447. package/src/transform.ts +35 -35
  448. package/src/transformers/CallExpressionTransformer.ts +546 -546
  449. package/src/transformers/FileTransformer.ts +136 -136
  450. package/src/transformers/IProgrammerProps.ts +11 -11
  451. package/src/transformers/ITransformOptions.ts +62 -62
  452. package/src/transformers/ITransformProps.ts +9 -9
  453. package/src/transformers/ITypiaContext.ts +18 -18
  454. package/src/transformers/ImportTransformer.ts +81 -81
  455. package/src/transformers/NoTransformConfigurationError.ts +18 -0
  456. package/src/transformers/NodeTransformer.ts +17 -17
  457. package/src/transformers/TransformerError.ts +60 -60
  458. package/src/transformers/features/AssertTransformer.ts +24 -24
  459. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  460. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  461. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  462. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  463. package/src/transformers/features/IsTransformer.ts +18 -18
  464. package/src/transformers/features/RandomTransformer.ts +41 -41
  465. package/src/transformers/features/ValidateTransformer.ts +18 -18
  466. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  467. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  468. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  469. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  470. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  471. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  472. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  473. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  474. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  475. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  476. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  477. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  478. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  479. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  480. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  481. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  482. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  483. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  484. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  485. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  486. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  487. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  488. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  489. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  490. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  491. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  492. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  493. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  494. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  495. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  496. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  497. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  498. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  499. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  500. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  501. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  502. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  503. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  504. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  505. package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -0
  506. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  507. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  508. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  509. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  510. package/src/transformers/features/llm/LlmApplicationTransformer.ts +128 -128
  511. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  512. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  513. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  514. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  515. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  516. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  517. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  518. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  519. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  520. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  521. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  522. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  523. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  524. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  525. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  526. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  527. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  528. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  529. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  530. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  531. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  532. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  533. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  534. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  535. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  536. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  537. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  538. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  539. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  540. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  541. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  542. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  543. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  544. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  545. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  546. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  547. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  548. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  549. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  550. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  551. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  552. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  553. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  554. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  555. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  556. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  557. package/src/transformers/internal/GenericTransformer.ts +101 -101
  558. package/src/typings/Atomic.ts +13 -13
  559. package/src/typings/ClassProperties.ts +5 -5
  560. package/src/typings/Customizable.ts +5 -5
  561. package/src/typings/Equal.ts +18 -18
  562. package/src/typings/IsTuple.ts +9 -9
  563. package/src/typings/NativeClass.ts +23 -23
  564. package/src/typings/OmitNever.ts +3 -3
  565. package/src/typings/ProtobufAtomic.ts +19 -19
  566. package/src/typings/SpecialFields.ts +3 -3
  567. package/src/typings/ValidationPipe.ts +9 -9
  568. package/src/typings/ValueOf.ts +20 -20
  569. package/src/typings/Writable.ts +11 -11
  570. package/src/utils/ArrayUtil.ts +41 -41
  571. package/src/utils/Escaper.ts +50 -50
  572. package/src/utils/MapUtil.ts +14 -14
  573. package/src/utils/NamingConvention.ts +94 -94
  574. package/src/utils/PatternUtil.ts +29 -29
  575. package/src/utils/ProtobufNameEncoder.ts +32 -32
  576. package/src/utils/Singleton.ts +16 -16
  577. package/src/utils/StringUtil.ts +16 -16
package/src/protobuf.ts CHANGED
@@ -1,868 +1,861 @@
1
- import { IValidation } from "./IValidation";
2
- import { Resolved } from "./Resolved";
3
- import { TypeGuardError } from "./TypeGuardError";
4
-
5
- /* ===========================================================
6
- PROTOCOL BUFFER
7
- - MESSAGE
8
- - DECODE
9
- - ENCODE
10
- - FACTORY FUNCTIONS
11
- ==============================================================
12
- SCHEMA
13
- ----------------------------------------------------------- */
14
- /**
15
- * > You must configure the generic argument `T`.
16
- *
17
- * Protocol Buffer Message Schema.
18
- *
19
- * Creates a Protocol Buffer Message Schema from a TypeScript type. The message
20
- * schema would be returned as a string value, and it can be used to share with
21
- * other developers/languages/frameworks.
22
- *
23
- * For reference, Protocol Buffer has lots of restrictions, so that expression power
24
- * of Protocol Buffer is not enough strong to fully meet the TypeScript type specs.
25
- * In such reason, if you put a TypeScript type that is not compatible with Protocol
26
- * Buffer, this function would throw compilation errors.
27
- *
28
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
29
- *
30
- * @template T Target type
31
- * @returns Protocol Buffer Message Schema.
32
- *
33
- * @author Jeongho Nam - https://github.com/samchon
34
- */
35
- export function message(): never;
36
-
37
- /**
38
- * Protocol Buffer Message Schema.
39
- *
40
- * Creates a Protocol Buffer Message Schema from a TypeScript type. The message
41
- * schema would be returned as a string value, and it can be used to share with
42
- * other developers/languages/frameworks.
43
- *
44
- * For reference, Protocol Buffer has lots of restrictions, so that expression power
45
- * of Protocol Buffer is not enough strong to fully meet the TypeScript type specs.
46
- * In such reason, if you put a TypeScript type that is not compatible with Protocol
47
- * Buffer, this function would throw compilation errors.
48
- *
49
- * @template T Target type
50
- * @returns Protocol Buffer Message Schema.
51
- *
52
- * @author Jeongho Nam - https://github.com/samchon
53
- */
54
- export function message<T>(): string;
55
-
56
- /**
57
- * @internal
58
- */
59
- export function message(): never {
60
- halt("message");
61
- }
62
-
63
- /* -----------------------------------------------------------
64
- DECODE
65
- ----------------------------------------------------------- */
66
- /**
67
- * > You must configure the generic argument `T`.
68
- *
69
- * Protocol Buffer Decoder.
70
- *
71
- * `typia.protobuf.decode()` is a function decoding a binary data of Protocol Buffer
72
- * format to a TypeScript instance.
73
- *
74
- * For reference, as Protocol Buffer handles binary data directly, there's no way
75
- * when `input` binary data was not encoded from the `T` typed value. In that case,
76
- * unexpected behavior or internal error would be occurred. Therefore, I recommend you
77
- * to encode binary data of Protocol Buffer from type safe encode functions like below.
78
- * Use {@link encode} function only when you can ensure it.
79
- *
80
- * - {@link assertEncode}
81
- * - {@link isEncode}
82
- * - {@link validateEncode}
83
- *
84
- * Also, `typia` is providing type safe decoders like {@link assertDecode}, but it
85
- * is just for additional type validation like `number & Minimum<7>` or
86
- * `string & Format<"uuid">` cases, that are represented by
87
- * [custom tags](https://typia.io/docs/validators/tags). Thus, I repeat that,
88
- * you've to ensure the type safety when using decoder functions.
89
- *
90
- * @template T Expected type of decoded value
91
- * @param input Protobuf Buffer binary data
92
- * @returns Decoded value
93
- *
94
- * @author Jeongho Nam - https://github.com/samchon
95
- */
96
- export function decode(input: Uint8Array): never;
97
-
98
- /**
99
- * Protocol Buffer Decoder.
100
- *
101
- * `typia.protobuf.decode()` is a function decoding a binary data of Protocol Buffer
102
- * format to a TypeScript instance.
103
- *
104
- * For reference, as Protocol Buffer handles binary data directly, there's no way
105
- * when `input` binary data was not encoded from the `T` typed value. In that case,
106
- * unexpected behavior or internal error would be occurred. Therefore, I recommend you
107
- * to encode binary data of Protocol Buffer from type safe encode functions like below.
108
- * Use {@link encode} function only when you can ensure it.
109
- *
110
- * - {@link assertEncode}
111
- * - {@link isEncode}
112
- * - {@link validateEncode}
113
- *
114
- * Also, `typia` is providing type safe decoders like {@link assertDecode}, but it
115
- * is just for additional type validation like `number & Minimum<7>` or
116
- * `string & Format<"uuid">` cases, that are represented by
117
- * [custom tags](https://typia.io/docs/validators/tags). Thus, I repeat that,
118
- * you've to ensure the type safety when using decoder functions.
119
- *
120
- * @template T Expected type of decoded value
121
- * @param input Protobuf Buffer binary data
122
- * @returns Decoded value
123
- *
124
- * @author Jeongho Nam - https://github.com/samchon
125
- */
126
- export function decode<T>(input: Uint8Array): Resolved<T>;
127
-
128
- /**
129
- * @internal
130
- */
131
- export function decode(): never {
132
- halt("decode");
133
- }
134
-
135
- /**
136
- * > You must configure the generic argument `T`.
137
- *
138
- * Protocol Buffer Decoder wity type assertion, but not safe.
139
- *
140
- * `typia.protobuf.assertDecode()` is a combination function of {@link decode} and
141
- * {@link assert} function. Therefore, it decodes a binary data of Protocol Buffer to
142
- * a TypeScript instance, and performs type assertion process. If decoded value is
143
- * following the type `T`, it returns the decoded value. Otherwise, it throws
144
- * {@link TypeGuardError} instead.
145
- *
146
- * However, note that, this validation is not always safe. It just performs additional
147
- * type assertion like `number & Minimum<7>` or `string & Format<"uuid">` cases,
148
- * that are represented by [custom tags](https://typia.io/docs/validators/tags).
149
- * Therefore, when using `typia.protobuf.assertDecode<T>()` function, you have to
150
- * ensure the type safety by yourself.
151
- *
152
- * In such type safety reason, I recommend you to use type safe encode functions.
153
- *
154
- * - {@link assertEncode}
155
- * - {@link isEncode}
156
- * - {@link validateEncode}
157
- *
158
- * @template T Expected type of decoded value
159
- * @param input Protobuf Buffer binary data
160
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
161
- * @returns Decoded value
162
- *
163
- * @author Jeongho Nam - https://github.com/samchon
164
- */
165
- export function assertDecode(
166
- input: Uint8Array,
167
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
168
- ): never;
169
-
170
- /**
171
- * Protocol Buffer Decoder wity type assertion, but not safe.
172
- *
173
- * `typia.protobuf.assertDecode()` is a combination function of {@link decode} and
174
- * {@link assert} function. Therefore, it decodes a binary data of Protocol Buffer to
175
- * a TypeScript instance, and performs type assertion process. If decoded value is
176
- * following the type `T`, it returns the decoded value. Otherwise, it throws
177
- * {@link TypeGuardError} instead.
178
- *
179
- * However, note that, this validation is not always safe. It just performs additional
180
- * type assertion like `number & Minimum<7>` or `string & Format<"uuid">` cases,
181
- * that are represented by [custom tags](https://typia.io/docs/validators/tags).
182
- * Therefore, when using `typia.protobuf.assertDecode<T>()` function, you have to
183
- * ensure the type safety by yourself.
184
- *
185
- * In such type safety reason, I recommend you to use type safe encode functions.
186
- *
187
- * - {@link assertEncode}
188
- * - {@link isEncode}
189
- * - {@link validateEncode}
190
- *
191
- * @template T Expected type of decoded value
192
- * @param input Protobuf Buffer binary data
193
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
194
- * @returns Decoded value
195
- *
196
- * @author Jeongho Nam - https://github.com/samchon
197
- */
198
- export function assertDecode<T>(
199
- input: Uint8Array,
200
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
201
- ): Resolved<T>;
202
-
203
- /**
204
- * @internal
205
- */
206
- export function assertDecode(): never {
207
- halt("assertDecode");
208
- }
209
-
210
- /**
211
- * > You must configure the generic argument `T`.
212
- *
213
- * Protocol Buffer Decoder wity type checking, but not safe.
214
- *
215
- * `typia.protobuf.isDecode()` is a combination function of {@link decode} and
216
- * {@link is} function. Therefore, it decodes a binary data of Protocol Buffer to
217
- * a TypeScript instance, and performs type checking process. If decoded value is
218
- * following the type `T`, it returns the decoded value. Otherwise, it returns
219
- * `null` value instead.
220
- *
221
- * However, note that, this validation is not always safe. It just performs additional
222
- * type checking like `number & Minimum<7>` or `string & Format<"uuid">` cases,
223
- * that are represented by [custom tags](https://typia.io/docs/validators/tags).
224
- * Therefore, when using `typia.protobuf.isDecode<T>()` function, you have to
225
- * ensure the type safety by yourself.
226
- *
227
- * In such type safety reason, I recommend you to use type safe encode functions.
228
- *
229
- * - {@link assertEncode}
230
- * - {@link isEncode}
231
- * - {@link validateEncode}
232
- *
233
- * @template T Expected type of decoded value
234
- * @param input Protobuf Buffer binary data
235
- * @returns Decoded value
236
- *
237
- * @author Jeongho Nam - https://github.com/samchon
238
- */
239
- export function isDecode(input: Uint8Array): never;
240
-
241
- /**
242
- * Protocol Buffer Decoder wity type checking, but not safe.
243
- *
244
- * `typia.protobuf.isDecode()` is a combination function of {@link decode} and
245
- * {@link is} function. Therefore, it decodes a binary data of Protocol Buffer to
246
- * a TypeScript instance, and performs type checking process. If decoded value is
247
- * following the type `T`, it returns the decoded value. Otherwise, it returns
248
- * `null` value instead.
249
- *
250
- * However, note that, this validation is not always safe. It just performs additional
251
- * type checking like `number & Minimum<7>` or `string & Format<"uuid">` cases,
252
- * that are represented by [custom tags](https://typia.io/docs/validators/tags).
253
- * Therefore, when using `typia.protobuf.isDecode<T>()` function, you have to
254
- * ensure the type safety by yourself.
255
- *
256
- * In such type safety reason, I recommend you to use type safe encode functions.
257
- *
258
- * - {@link assertEncode}
259
- * - {@link isEncode}
260
- * - {@link validateEncode}
261
- *
262
- * @template T Expected type of decoded value
263
- * @param input Protobuf Buffer binary data
264
- * @returns Decoded value
265
- *
266
- * @author Jeongho Nam - https://github.com/samchon
267
- */
268
- export function isDecode<T>(input: Uint8Array): Resolved<T> | null;
269
-
270
- /**
271
- * @internal
272
- */
273
- export function isDecode(): never {
274
- halt("isDecode");
275
- }
276
-
277
- /**
278
- * > You must configure the generic argument `T`.
279
- *
280
- * Protocol Buffer Decoder wity type validation, but not safe.
281
- *
282
- * `typia.protobuf.validateDecode()` is a combination function of {@link decode} and
283
- * {@link validate} function. Therefore, it decodes a binary data of Protocol Buffer to
284
- * a TypeScript instance, and performs type validation process. If decoded value is
285
- * following the type `T`, it returns the decoded value with
286
- * {@link IValidation.ISuccess} typed instance. Otherwise, it returns
287
- * {@link IValidation.IFailure} value instead with detailed error reasons.
288
- *
289
- * However, note that, this validation is not always safe. It just performs additional
290
- * type validation like `number & Minimum<7>` or `string & Format<"uuid">` cases,
291
- * that are represented by [custom tags](https://typia.io/docs/validators/tags).
292
- * Therefore, when using `typia.protobuf.validateDecode<T>()` function, you have to
293
- * ensure the type safety by yourself.
294
- *
295
- * In such type safety reason, I recommend you to use type safe encode functions.
296
- *
297
- * - {@link assertEncode}
298
- * - {@link isEncode}
299
- * - {@link validateEncode}
300
- *
301
- * @template T Expected type of decoded value
302
- * @param input Protobuf Buffer binary data
303
- * @returns Decoded value
304
- *
305
- * @author Jeongho Nam - https://github.com/samchon
306
- */
307
- export function validateDecode(input: Uint8Array): never;
308
-
309
- /**
310
- * Protocol Buffer Decoder wity type validation, but not safe.
311
- *
312
- * `typia.protobuf.validateDecode()` is a combination function of {@link decode} and
313
- * {@link validate} function. Therefore, it decodes a binary data of Protocol Buffer to
314
- * a TypeScript instance, and performs type validation process. If decoded value is
315
- * following the type `T`, it returns the decoded value with
316
- * {@link IValidation.ISuccess} typed instance. Otherwise, it returns
317
- * {@link IValidation.IFailure} value instead with detailed error reasons.
318
- *
319
- * However, note that, this validation is not always safe. It just performs additional
320
- * type validation like `number & Minimum<7>` or `string & Format<"uuid">` cases,
321
- * that are represented by [custom tags](https://typia.io/docs/validators/tags).
322
- * Therefore, when using `typia.protobuf.validateDecode<T>()` function, you have to
323
- * ensure the type safety by yourself.
324
- *
325
- * In such type safety reason, I recommend you to use type safe encode functions.
326
- *
327
- * - {@link assertEncode}
328
- * - {@link isEncode}
329
- * - {@link validateEncode}
330
- *
331
- * @template T Expected type of decoded value
332
- * @param input Protobuf Buffer binary data
333
- * @returns Decoded value
334
- *
335
- * @author Jeongho Nam - https://github.com/samchon
336
- */
337
- export function validateDecode<T>(input: Uint8Array): IValidation<Resolved<T>>;
338
-
339
- /**
340
- * @internal
341
- */
342
- export function validateDecode(): never {
343
- halt("validateDecode");
344
- }
345
-
346
- /* -----------------------------------------------------------
347
- ENCODE
348
- ----------------------------------------------------------- */
349
- /**
350
- * Protocol Buffer Encoder.
351
- *
352
- * Converts an input value to a binary data of Protocol Buffer format.
353
- *
354
- * For reference, this `typia.protobuf.encode()` does not validate the `input` value.
355
- * It just believes that the `input` value is valid and converts it to a binary data
356
- * directly. Therefore, if you can't ensure the `input` value type, it would better to
357
- * call one of below functions instead.
358
- *
359
- * - {@link assertEncode}
360
- * - {@link isEncode}
361
- * - {@link validateEncode}
362
- *
363
- * By the way, you know what? Expression power of Protocol Buffer is not enough strong
364
- * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
365
- * type that is not compatible with Protocol Buffer, this function would throw
366
- * compilation errors.
367
- *
368
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
369
- *
370
- * @template T Type of the value input
371
- * @param input A value to encode
372
- * @returns Encoded binary data
373
- *
374
- * @author Jeongho Nam - https://github.com/samchon
375
- */
376
- export function encode<T>(input: T): Uint8Array;
377
-
378
- /**
379
- * @internal
380
- */
381
- export function encode(): never {
382
- halt("encode");
383
- }
384
-
385
- /**
386
- * Protocol Buffer Encoder with type assertion.
387
- *
388
- * `typia.protobuf.assertEncode()` is a combination function of {@link assert} and
389
- * {@link encode}.
390
- *
391
- * Therefore, it converts an `input` value to a binary data of
392
- * Protocol Buffer, with type assertion. If `input` value is not valid, it throws
393
- * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value,
394
- * Protocol Buffer binary data would be returned.
395
- *
396
- * If you can trust `input` value, or want to perform other type of validation, use
397
- * below functions instead.
398
- *
399
- * - {@link encode}
400
- * - {@link isEncode}
401
- * - {@link validateEncode}
402
- *
403
- * By the way, you know what? Expression power of Protocol Buffer is not enough strong
404
- * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
405
- * type that is not compatible with Protocol Buffer, this function would throw
406
- * compilation errors.
407
- *
408
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
409
- *
410
- * @template T Type of the value input
411
- * @param input A value to encode
412
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
413
- * @returns Encoded binary data
414
- *
415
- * @author Jeongho Nam - https://github.com/samchon
416
- */
417
- export function assertEncode<T>(
418
- input: T,
419
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
420
- ): Uint8Array;
421
-
422
- /**
423
- * Protocol Buffer Encoder with type assertion.
424
- *
425
- * `typia.protobuf.assertEncode()` is a combination function of {@link assert} and
426
- * {@link encode}.
427
- *
428
- * Therefore, it converts an `input` value to a binary data of
429
- * Protocol Buffer, with type assertion. If `input` value is not valid, it throws
430
- * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value,
431
- * Protocol Buffer binary data would be returned.
432
- *
433
- * If you can trust `input` value, or want to perform other type of validation, use
434
- * below functions instead.
435
- *
436
- * - {@link encode}
437
- * - {@link isEncode}
438
- * - {@link validateEncode}
439
- *
440
- * By the way, you know what? Expression power of Protocol Buffer is not enough strong
441
- * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
442
- * type that is not compatible with Protocol Buffer, this function would throw
443
- * compilation errors.
444
- *
445
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
446
- *
447
- * @template T Type of the value input
448
- * @param input A value to encode
449
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
450
- * @returns Encoded binary data
451
- *
452
- * @author Jeongho Nam - https://github.com/samchon
453
- */
454
- export function assertEncode<T>(
455
- input: unknown,
456
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
457
- ): Uint8Array;
458
-
459
- /**
460
- * @internal
461
- */
462
- export function assertEncode(): never {
463
- halt("assertEncode");
464
- }
465
-
466
- /**
467
- * Protocol Buffer Encoder with type checking.
468
- *
469
- * `typia.protobuf.isEncode()` is a combination function of {@link is} and
470
- * {@link encode}.
471
- *
472
- * Therefore, it converts an `input` value to a binary data of
473
- * Protocol Buffer, with type checking. If `input` value is not valid, it returns
474
- * `null` value. Otherwise, there's no problem on the `input` value, Protocol
475
- * Buffer binary data would be returned.
476
- *
477
- * If you can trust `input` value, or want to perform other type of validation, use
478
- * below functions instead.
479
- *
480
- * - {@link encode}
481
- * - {@link assertEncode}
482
- * - {@link validateEncode}
483
- *
484
- * By the way, you know what? Expression power of Protocol Buffer is not enough strong
485
- * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
486
- * type that is not compatible with Protocol Buffer, this function would throw
487
- * compilation errors.
488
- *
489
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
490
- *
491
- * @template T Type of the value input
492
- * @param input A value to encode
493
- * @returns Encoded binary data
494
- *
495
- * @author Jeongho Nam - https://github.com/samchon
496
- */
497
- export function isEncode<T>(input: T): Uint8Array | null;
498
-
499
- /**
500
- * Protocol Buffer Encoder with type checking.
501
- *
502
- * `typia.protobuf.isEncode()` is a combination function of {@link is} and
503
- * {@link encode}.
504
- *
505
- * Therefore, it converts an `input` value to a binary data of
506
- * Protocol Buffer, with type checking. If `input` value is not valid, it returns
507
- * `null` value. Otherwise, there's no problem on the `input` value, Protocol
508
- * Buffer binary data would be returned.
509
- *
510
- * If you can trust `input` value, or want to perform other type of validation, use
511
- * below functions instead.
512
- *
513
- * - {@link encode}
514
- * - {@link assertEncode}
515
- * - {@link validateEncode}
516
- *
517
- * By the way, you know what? Expression power of Protocol Buffer is not enough strong
518
- * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
519
- * type that is not compatible with Protocol Buffer, this function would throw
520
- * compilation errors.
521
- *
522
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
523
- *
524
- * @template T Type of the value input
525
- * @param input A value to encode
526
- * @returns Encoded binary data
527
- *
528
- * @author Jeongho Nam - https://github.com/samchon
529
- */
530
- export function isEncode<T>(input: unknown): Uint8Array | null;
531
-
532
- /**
533
- * @internal
534
- */
535
- export function isEncode(): never {
536
- halt("isEncode");
537
- }
538
-
539
- /**
540
- * Protocol Buffer Encoder with type validation.
541
- *
542
- * `typia.protobuf.validateEncode()` is a combination function of
543
- * {@link validation} and {@link encode}.
544
- *
545
- * Therefore, it converts an `input` value to a binary data of
546
- * Protocol Buffer, with type validation. If `input` value is not valid, it returns
547
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
548
- * no problem on the `input` value, Protocol Buffer binary data would be stored in
549
- * `data` property of the output {@link IValidation.ISuccess} instance.
550
- *
551
- * If you can trust `input` value, or want to perform other type of validation, use
552
- * below functions instead.
553
- *
554
- * - {@link encode}
555
- * - {@link assertEncode}
556
- * - {@link isEncode}
557
- *
558
- * By the way, you know what? Expression power of Protocol Buffer is not enough strong
559
- * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
560
- * type that is not compatible with Protocol Buffer, this function would throw
561
- * compilation errors.
562
- *
563
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
564
- *
565
- * @template T Type of the value input
566
- * @param input A value to encode
567
- * @returns Encoded binary data
568
- *
569
- * @author Jeongho Nam - https://github.com/samchon
570
- */
571
- export function validateEncode<T>(input: T): IValidation<Uint8Array>;
572
-
573
- /**
574
- * Protocol Buffer Encoder with type validation.
575
- *
576
- * `typia.protobuf.validateEncode()` is a combination function of
577
- * {@link validation} and {@link encode}.
578
- *
579
- * Therefore, it converts an `input` value to a binary data of
580
- * Protocol Buffer, with type validation. If `input` value is not valid, it returns
581
- * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
582
- * no problem on the `input` value, Protocol Buffer binary data would be stored in
583
- * `data` property of the output {@link IValidation.ISuccess} instance.
584
- *
585
- * If you can trust `input` value, or want to perform other type of validation, use
586
- * below functions instead.
587
- *
588
- * - {@link encode}
589
- * - {@link assertEncode}
590
- * - {@link isEncode}
591
- *
592
- * By the way, you know what? Expression power of Protocol Buffer is not enough strong
593
- * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
594
- * type that is not compatible with Protocol Buffer, this function would throw
595
- * compilation errors.
596
- *
597
- * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
598
- *
599
- * @template T Type of the value input
600
- * @param input A value to encode
601
- * @returns Encoded binary data
602
- *
603
- * @author Jeongho Nam - https://github.com/samchon
604
- */
605
- export function validateEncode<T>(input: unknown): IValidation<Uint8Array>;
606
-
607
- /**
608
- * @internal
609
- */
610
- export function validateEncode(): never {
611
- halt("validateEncode");
612
- }
613
-
614
- /* -----------------------------------------------------------
615
- FACTORY FUNCTIONS
616
- ----------------------------------------------------------- */
617
- /**
618
- * Creates a reusable {@link decode} function.
619
- *
620
- * @danger You must configure the generic argument `T`
621
- * @returns Nothing until you configure the generic argument `T`
622
- * @throws compile error
623
- *
624
- * @author Jeongho Nam - https://github.com/samchon
625
- */
626
- export function createDecode(): never;
627
-
628
- /**
629
- * Creates a reusable {@link decode} function.
630
- *
631
- * @template T Target type
632
- * @returns A reusable `decode` function
633
- *
634
- * @author Jeongho Nam - https://github.com/samchon
635
- */
636
- export function createDecode<T>(): (input: Uint8Array) => Resolved<T>;
637
-
638
- /**
639
- * @internal
640
- */
641
- export function createDecode<T>(): (input: Uint8Array) => Resolved<T> {
642
- halt("createDecode");
643
- }
644
-
645
- /**
646
- * Creates a reusable {@link isDecode} function.
647
- *
648
- * @danger You must configure the generic argument `T`
649
- * @returns Nothing until you configure the generic argument `T`
650
- * @throws compile error
651
- *
652
- * @author Jeongho Nam - https://github.com/samchon
653
- */
654
- export function createIsDecode(): never;
655
-
656
- /**
657
- * Creates a reusable {@link isDecode} function.
658
- *
659
- * @template T Target type
660
- * @returns A reusable `isDecode` function
661
- *
662
- * @author Jeongho Nam - https://github.com/samchon
663
- */
664
- export function createIsDecode<T>(): (input: Uint8Array) => Resolved<T> | null;
665
-
666
- /**
667
- * @internal
668
- */
669
- export function createIsDecode<T>(): (input: Uint8Array) => Resolved<T> | null {
670
- halt("createIsDecode");
671
- }
672
-
673
- /**
674
- * Creates a reusable {@link assertDecode} function.
675
- *
676
- * @danger You must configure the generic argument `T`
677
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
678
- * @returns Nothing until you configure the generic argument `T`
679
- * @throws compile error
680
- *
681
- * @author Jeongho Nam - https://github.com/samchon
682
- */
683
- export function createAssertDecode(
684
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
685
- ): never;
686
-
687
- /**
688
- * Creates a reusable {@link assertDecode} function.
689
- *
690
- * @template T Target type
691
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
692
- * @returns A reusable `assertDecode` function
693
- *
694
- * @author Jeongho Nam - https://github.com/samchon
695
- */
696
- export function createAssertDecode<T>(
697
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
698
- ): (input: Uint8Array) => Resolved<T>;
699
-
700
- /**
701
- * @internal
702
- */
703
- export function createAssertDecode<T>(): (input: Uint8Array) => Resolved<T> {
704
- halt("createAssertDecode");
705
- }
706
-
707
- /**
708
- * Creates a reusable {@link validateDecode} function.
709
- *
710
- * @danger You must configure the generic argument `T`
711
- * @returns Nothing until you configure the generic argument `T`
712
- * @throws compile error
713
- *
714
- * @author Jeongho Nam - https://github.com/samchon
715
- */
716
- export function createValidateDecode(): never;
717
-
718
- /**
719
- * Creates a reusable {@link validateDecode} function.
720
- *
721
- * @template T Target type
722
- * @returns A reusable `validateDecode` function
723
- *
724
- * @author Jeongho Nam - https://github.com/samchon
725
- */
726
- export function createValidateDecode<T>(): (
727
- input: Uint8Array,
728
- ) => IValidation<Resolved<T>>;
729
-
730
- /**
731
- * @internal
732
- */
733
- export function createValidateDecode<T>(): (
734
- input: Uint8Array,
735
- ) => IValidation<Resolved<T>> {
736
- halt("createValidateDecode");
737
- }
738
-
739
- /**
740
- * Creates a reusable {@link encode} function.
741
- *
742
- * @danger You must configure the generic argument `T`
743
- * @returns Nothing until you configure the generic argument `T`
744
- * @throws compile error
745
- *
746
- * @author Jeongho Nam - https://github.com/samchon
747
- */
748
- export function createEncode(): never;
749
-
750
- /**
751
- * Creates a reusable {@link encode} function.
752
- *
753
- * @template T Target type
754
- * @returns A reusable `encode` function
755
- *
756
- * @author Jeongho Nam - https://github.com/samchon
757
- */
758
- export function createEncode<T>(): (input: T) => Uint8Array;
759
-
760
- /**
761
- * @internal
762
- */
763
- export function createEncode<T>(): (input: T) => Uint8Array {
764
- halt("createEncode");
765
- }
766
-
767
- /**
768
- * Creates a reusable {@link isEncode} function.
769
- *
770
- * @danger You must configure the generic argument `T`
771
- * @returns Nothing until you configure the generic argument `T`
772
- * @throws compile error
773
- *
774
- * @author Jeongho Nam - https://github.com/samchon
775
- */
776
- export function createIsEncode(): never;
777
-
778
- /**
779
- * Creates a reusable {@link isEncode} function.
780
- *
781
- * @template T Target type
782
- * @returns A reusable `isEncode` function
783
- *
784
- * @author Jeongho Nam - https://github.com/samchon
785
- */
786
- export function createIsEncode<T>(): (input: T) => Uint8Array | null;
787
-
788
- /**
789
- * @internal
790
- */
791
- export function createIsEncode<T>(): (input: T) => Uint8Array | null {
792
- halt("createIsEncode");
793
- }
794
-
795
- /**
796
- * Creates a reusable {@link assertEncode} function.
797
- *
798
- * @danger You must configure the generic argument `T`
799
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
800
- * @returns Nothing until you configure the generic argument `T`
801
- * @throws compile error
802
- *
803
- * @author Jeongho Nam - https://github.com/samchon
804
- */
805
- export function createAssertEncode(
806
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
807
- ): never;
808
-
809
- /**
810
- * Creates a reusable {@link assertEncode} function.
811
- *
812
- * @template T Target type
813
- * @param errorFactory Custom error factory. Default is `TypeGuardError`
814
- * @returns A reusable `assertEncode` function
815
- *
816
- * @author Jeongho Nam - https://github.com/samchon
817
- */
818
- export function createAssertEncode<T>(
819
- errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
820
- ): (input: T) => Uint8Array;
821
-
822
- /**
823
- * @internal
824
- */
825
- export function createAssertEncode<T>(): (input: T) => Uint8Array {
826
- halt("createAssertEncode");
827
- }
828
-
829
- /**
830
- * Creates a reusable {@link validateEncode} function.
831
- *
832
- * @danger You must configure the generic argument `T`
833
- * @returns Nothing until you configure the generic argument `T`
834
- * @throws compile error
835
- *
836
- * @author Jeongho Nam - https://github.com/samchon
837
- */
838
- export function createValidateEncode(): never;
839
-
840
- /**
841
- * Creates a reusable {@link validateEncode} function.
842
- *
843
- * @template T Target type
844
- * @returns A reusable `validateEncode` function
845
- *
846
- * @author Jeongho Nam - https://github.com/samchon
847
- */
848
- export function createValidateEncode<T>(): (
849
- input: T,
850
- ) => IValidation<Uint8Array>;
851
-
852
- /**
853
- * @internal
854
- */
855
- export function createValidateEncode<T>(): (
856
- input: T,
857
- ) => IValidation<Uint8Array> {
858
- halt("createValidateEncode");
859
- }
860
-
861
- /**
862
- * @internal
863
- */
864
- function halt(name: string): never {
865
- throw new Error(
866
- `Error on typia.protobuf.${name}(): no transform has been configured. Read and follow https://typia.io/docs/setup please.`,
867
- );
868
- }
1
+ import { NoTransformConfigurationError } from "./transformers/NoTransformConfigurationError";
2
+
3
+ import { IValidation } from "./IValidation";
4
+ import { Resolved } from "./Resolved";
5
+ import { TypeGuardError } from "./TypeGuardError";
6
+
7
+ /* ===========================================================
8
+ PROTOCOL BUFFER
9
+ - MESSAGE
10
+ - DECODE
11
+ - ENCODE
12
+ - FACTORY FUNCTIONS
13
+ ==============================================================
14
+ SCHEMA
15
+ ----------------------------------------------------------- */
16
+ /**
17
+ * > You must configure the generic argument `T`.
18
+ *
19
+ * Protocol Buffer Message Schema.
20
+ *
21
+ * Creates a Protocol Buffer Message Schema from a TypeScript type. The message
22
+ * schema would be returned as a string value, and it can be used to share with
23
+ * other developers/languages/frameworks.
24
+ *
25
+ * For reference, Protocol Buffer has lots of restrictions, so that expression power
26
+ * of Protocol Buffer is not enough strong to fully meet the TypeScript type specs.
27
+ * In such reason, if you put a TypeScript type that is not compatible with Protocol
28
+ * Buffer, this function would throw compilation errors.
29
+ *
30
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
31
+ *
32
+ * @template T Target type
33
+ * @returns Protocol Buffer Message Schema.
34
+ *
35
+ * @author Jeongho Nam - https://github.com/samchon
36
+ */
37
+ export function message(): never;
38
+
39
+ /**
40
+ * Protocol Buffer Message Schema.
41
+ *
42
+ * Creates a Protocol Buffer Message Schema from a TypeScript type. The message
43
+ * schema would be returned as a string value, and it can be used to share with
44
+ * other developers/languages/frameworks.
45
+ *
46
+ * For reference, Protocol Buffer has lots of restrictions, so that expression power
47
+ * of Protocol Buffer is not enough strong to fully meet the TypeScript type specs.
48
+ * In such reason, if you put a TypeScript type that is not compatible with Protocol
49
+ * Buffer, this function would throw compilation errors.
50
+ *
51
+ * @template T Target type
52
+ * @returns Protocol Buffer Message Schema.
53
+ *
54
+ * @author Jeongho Nam - https://github.com/samchon
55
+ */
56
+ export function message<T>(): string;
57
+
58
+ /**
59
+ * @internal
60
+ */
61
+ export function message(): never {
62
+ NoTransformConfigurationError("protobuf.message");
63
+ }
64
+
65
+ /* -----------------------------------------------------------
66
+ DECODE
67
+ ----------------------------------------------------------- */
68
+ /**
69
+ * > You must configure the generic argument `T`.
70
+ *
71
+ * Protocol Buffer Decoder.
72
+ *
73
+ * `typia.protobuf.decode()` is a function decoding a binary data of Protocol Buffer
74
+ * format to a TypeScript instance.
75
+ *
76
+ * For reference, as Protocol Buffer handles binary data directly, there's no way
77
+ * when `input` binary data was not encoded from the `T` typed value. In that case,
78
+ * unexpected behavior or internal error would be occurred. Therefore, I recommend you
79
+ * to encode binary data of Protocol Buffer from type safe encode functions like below.
80
+ * Use {@link encode} function only when you can ensure it.
81
+ *
82
+ * - {@link assertEncode}
83
+ * - {@link isEncode}
84
+ * - {@link validateEncode}
85
+ *
86
+ * Also, `typia` is providing type safe decoders like {@link assertDecode}, but it
87
+ * is just for additional type validation like `number & Minimum<7>` or
88
+ * `string & Format<"uuid">` cases, that are represented by
89
+ * [custom tags](https://typia.io/docs/validators/tags). Thus, I repeat that,
90
+ * you've to ensure the type safety when using decoder functions.
91
+ *
92
+ * @template T Expected type of decoded value
93
+ * @param input Protobuf Buffer binary data
94
+ * @returns Decoded value
95
+ *
96
+ * @author Jeongho Nam - https://github.com/samchon
97
+ */
98
+ export function decode(input: Uint8Array): never;
99
+
100
+ /**
101
+ * Protocol Buffer Decoder.
102
+ *
103
+ * `typia.protobuf.decode()` is a function decoding a binary data of Protocol Buffer
104
+ * format to a TypeScript instance.
105
+ *
106
+ * For reference, as Protocol Buffer handles binary data directly, there's no way
107
+ * when `input` binary data was not encoded from the `T` typed value. In that case,
108
+ * unexpected behavior or internal error would be occurred. Therefore, I recommend you
109
+ * to encode binary data of Protocol Buffer from type safe encode functions like below.
110
+ * Use {@link encode} function only when you can ensure it.
111
+ *
112
+ * - {@link assertEncode}
113
+ * - {@link isEncode}
114
+ * - {@link validateEncode}
115
+ *
116
+ * Also, `typia` is providing type safe decoders like {@link assertDecode}, but it
117
+ * is just for additional type validation like `number & Minimum<7>` or
118
+ * `string & Format<"uuid">` cases, that are represented by
119
+ * [custom tags](https://typia.io/docs/validators/tags). Thus, I repeat that,
120
+ * you've to ensure the type safety when using decoder functions.
121
+ *
122
+ * @template T Expected type of decoded value
123
+ * @param input Protobuf Buffer binary data
124
+ * @returns Decoded value
125
+ *
126
+ * @author Jeongho Nam - https://github.com/samchon
127
+ */
128
+ export function decode<T>(input: Uint8Array): Resolved<T>;
129
+
130
+ /**
131
+ * @internal
132
+ */
133
+ export function decode(): never {
134
+ NoTransformConfigurationError("protobuf.decode");
135
+ }
136
+
137
+ /**
138
+ * > You must configure the generic argument `T`.
139
+ *
140
+ * Protocol Buffer Decoder wity type assertion, but not safe.
141
+ *
142
+ * `typia.protobuf.assertDecode()` is a combination function of {@link decode} and
143
+ * {@link assert} function. Therefore, it decodes a binary data of Protocol Buffer to
144
+ * a TypeScript instance, and performs type assertion process. If decoded value is
145
+ * following the type `T`, it returns the decoded value. Otherwise, it throws
146
+ * {@link TypeGuardError} instead.
147
+ *
148
+ * However, note that, this validation is not always safe. It just performs additional
149
+ * type assertion like `number & Minimum<7>` or `string & Format<"uuid">` cases,
150
+ * that are represented by [custom tags](https://typia.io/docs/validators/tags).
151
+ * Therefore, when using `typia.protobuf.assertDecode<T>()` function, you have to
152
+ * ensure the type safety by yourself.
153
+ *
154
+ * In such type safety reason, I recommend you to use type safe encode functions.
155
+ *
156
+ * - {@link assertEncode}
157
+ * - {@link isEncode}
158
+ * - {@link validateEncode}
159
+ *
160
+ * @template T Expected type of decoded value
161
+ * @param input Protobuf Buffer binary data
162
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
163
+ * @returns Decoded value
164
+ *
165
+ * @author Jeongho Nam - https://github.com/samchon
166
+ */
167
+ export function assertDecode(
168
+ input: Uint8Array,
169
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
170
+ ): never;
171
+
172
+ /**
173
+ * Protocol Buffer Decoder wity type assertion, but not safe.
174
+ *
175
+ * `typia.protobuf.assertDecode()` is a combination function of {@link decode} and
176
+ * {@link assert} function. Therefore, it decodes a binary data of Protocol Buffer to
177
+ * a TypeScript instance, and performs type assertion process. If decoded value is
178
+ * following the type `T`, it returns the decoded value. Otherwise, it throws
179
+ * {@link TypeGuardError} instead.
180
+ *
181
+ * However, note that, this validation is not always safe. It just performs additional
182
+ * type assertion like `number & Minimum<7>` or `string & Format<"uuid">` cases,
183
+ * that are represented by [custom tags](https://typia.io/docs/validators/tags).
184
+ * Therefore, when using `typia.protobuf.assertDecode<T>()` function, you have to
185
+ * ensure the type safety by yourself.
186
+ *
187
+ * In such type safety reason, I recommend you to use type safe encode functions.
188
+ *
189
+ * - {@link assertEncode}
190
+ * - {@link isEncode}
191
+ * - {@link validateEncode}
192
+ *
193
+ * @template T Expected type of decoded value
194
+ * @param input Protobuf Buffer binary data
195
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
196
+ * @returns Decoded value
197
+ *
198
+ * @author Jeongho Nam - https://github.com/samchon
199
+ */
200
+ export function assertDecode<T>(
201
+ input: Uint8Array,
202
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
203
+ ): Resolved<T>;
204
+
205
+ /**
206
+ * @internal
207
+ */
208
+ export function assertDecode(): never {
209
+ NoTransformConfigurationError("protobuf.assertDecode");
210
+ }
211
+
212
+ /**
213
+ * > You must configure the generic argument `T`.
214
+ *
215
+ * Protocol Buffer Decoder wity type checking, but not safe.
216
+ *
217
+ * `typia.protobuf.isDecode()` is a combination function of {@link decode} and
218
+ * {@link is} function. Therefore, it decodes a binary data of Protocol Buffer to
219
+ * a TypeScript instance, and performs type checking process. If decoded value is
220
+ * following the type `T`, it returns the decoded value. Otherwise, it returns
221
+ * `null` value instead.
222
+ *
223
+ * However, note that, this validation is not always safe. It just performs additional
224
+ * type checking like `number & Minimum<7>` or `string & Format<"uuid">` cases,
225
+ * that are represented by [custom tags](https://typia.io/docs/validators/tags).
226
+ * Therefore, when using `typia.protobuf.isDecode<T>()` function, you have to
227
+ * ensure the type safety by yourself.
228
+ *
229
+ * In such type safety reason, I recommend you to use type safe encode functions.
230
+ *
231
+ * - {@link assertEncode}
232
+ * - {@link isEncode}
233
+ * - {@link validateEncode}
234
+ *
235
+ * @template T Expected type of decoded value
236
+ * @param input Protobuf Buffer binary data
237
+ * @returns Decoded value
238
+ *
239
+ * @author Jeongho Nam - https://github.com/samchon
240
+ */
241
+ export function isDecode(input: Uint8Array): never;
242
+
243
+ /**
244
+ * Protocol Buffer Decoder wity type checking, but not safe.
245
+ *
246
+ * `typia.protobuf.isDecode()` is a combination function of {@link decode} and
247
+ * {@link is} function. Therefore, it decodes a binary data of Protocol Buffer to
248
+ * a TypeScript instance, and performs type checking process. If decoded value is
249
+ * following the type `T`, it returns the decoded value. Otherwise, it returns
250
+ * `null` value instead.
251
+ *
252
+ * However, note that, this validation is not always safe. It just performs additional
253
+ * type checking like `number & Minimum<7>` or `string & Format<"uuid">` cases,
254
+ * that are represented by [custom tags](https://typia.io/docs/validators/tags).
255
+ * Therefore, when using `typia.protobuf.isDecode<T>()` function, you have to
256
+ * ensure the type safety by yourself.
257
+ *
258
+ * In such type safety reason, I recommend you to use type safe encode functions.
259
+ *
260
+ * - {@link assertEncode}
261
+ * - {@link isEncode}
262
+ * - {@link validateEncode}
263
+ *
264
+ * @template T Expected type of decoded value
265
+ * @param input Protobuf Buffer binary data
266
+ * @returns Decoded value
267
+ *
268
+ * @author Jeongho Nam - https://github.com/samchon
269
+ */
270
+ export function isDecode<T>(input: Uint8Array): Resolved<T> | null;
271
+
272
+ /**
273
+ * @internal
274
+ */
275
+ export function isDecode(): never {
276
+ NoTransformConfigurationError("protobuf.isDecode");
277
+ }
278
+
279
+ /**
280
+ * > You must configure the generic argument `T`.
281
+ *
282
+ * Protocol Buffer Decoder wity type validation, but not safe.
283
+ *
284
+ * `typia.protobuf.validateDecode()` is a combination function of {@link decode} and
285
+ * {@link validate} function. Therefore, it decodes a binary data of Protocol Buffer to
286
+ * a TypeScript instance, and performs type validation process. If decoded value is
287
+ * following the type `T`, it returns the decoded value with
288
+ * {@link IValidation.ISuccess} typed instance. Otherwise, it returns
289
+ * {@link IValidation.IFailure} value instead with detailed error reasons.
290
+ *
291
+ * However, note that, this validation is not always safe. It just performs additional
292
+ * type validation like `number & Minimum<7>` or `string & Format<"uuid">` cases,
293
+ * that are represented by [custom tags](https://typia.io/docs/validators/tags).
294
+ * Therefore, when using `typia.protobuf.validateDecode<T>()` function, you have to
295
+ * ensure the type safety by yourself.
296
+ *
297
+ * In such type safety reason, I recommend you to use type safe encode functions.
298
+ *
299
+ * - {@link assertEncode}
300
+ * - {@link isEncode}
301
+ * - {@link validateEncode}
302
+ *
303
+ * @template T Expected type of decoded value
304
+ * @param input Protobuf Buffer binary data
305
+ * @returns Decoded value
306
+ *
307
+ * @author Jeongho Nam - https://github.com/samchon
308
+ */
309
+ export function validateDecode(input: Uint8Array): never;
310
+
311
+ /**
312
+ * Protocol Buffer Decoder wity type validation, but not safe.
313
+ *
314
+ * `typia.protobuf.validateDecode()` is a combination function of {@link decode} and
315
+ * {@link validate} function. Therefore, it decodes a binary data of Protocol Buffer to
316
+ * a TypeScript instance, and performs type validation process. If decoded value is
317
+ * following the type `T`, it returns the decoded value with
318
+ * {@link IValidation.ISuccess} typed instance. Otherwise, it returns
319
+ * {@link IValidation.IFailure} value instead with detailed error reasons.
320
+ *
321
+ * However, note that, this validation is not always safe. It just performs additional
322
+ * type validation like `number & Minimum<7>` or `string & Format<"uuid">` cases,
323
+ * that are represented by [custom tags](https://typia.io/docs/validators/tags).
324
+ * Therefore, when using `typia.protobuf.validateDecode<T>()` function, you have to
325
+ * ensure the type safety by yourself.
326
+ *
327
+ * In such type safety reason, I recommend you to use type safe encode functions.
328
+ *
329
+ * - {@link assertEncode}
330
+ * - {@link isEncode}
331
+ * - {@link validateEncode}
332
+ *
333
+ * @template T Expected type of decoded value
334
+ * @param input Protobuf Buffer binary data
335
+ * @returns Decoded value
336
+ *
337
+ * @author Jeongho Nam - https://github.com/samchon
338
+ */
339
+ export function validateDecode<T>(input: Uint8Array): IValidation<Resolved<T>>;
340
+
341
+ /**
342
+ * @internal
343
+ */
344
+ export function validateDecode(): never {
345
+ NoTransformConfigurationError("protobuf.validateDecode");
346
+ }
347
+
348
+ /* -----------------------------------------------------------
349
+ ENCODE
350
+ ----------------------------------------------------------- */
351
+ /**
352
+ * Protocol Buffer Encoder.
353
+ *
354
+ * Converts an input value to a binary data of Protocol Buffer format.
355
+ *
356
+ * For reference, this `typia.protobuf.encode()` does not validate the `input` value.
357
+ * It just believes that the `input` value is valid and converts it to a binary data
358
+ * directly. Therefore, if you can't ensure the `input` value type, it would better to
359
+ * call one of below functions instead.
360
+ *
361
+ * - {@link assertEncode}
362
+ * - {@link isEncode}
363
+ * - {@link validateEncode}
364
+ *
365
+ * By the way, you know what? Expression power of Protocol Buffer is not enough strong
366
+ * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
367
+ * type that is not compatible with Protocol Buffer, this function would throw
368
+ * compilation errors.
369
+ *
370
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
371
+ *
372
+ * @template T Type of the value input
373
+ * @param input A value to encode
374
+ * @returns Encoded binary data
375
+ *
376
+ * @author Jeongho Nam - https://github.com/samchon
377
+ */
378
+ export function encode<T>(input: T): Uint8Array;
379
+
380
+ /**
381
+ * @internal
382
+ */
383
+ export function encode(): never {
384
+ NoTransformConfigurationError("protobuf.encode");
385
+ }
386
+
387
+ /**
388
+ * Protocol Buffer Encoder with type assertion.
389
+ *
390
+ * `typia.protobuf.assertEncode()` is a combination function of {@link assert} and
391
+ * {@link encode}.
392
+ *
393
+ * Therefore, it converts an `input` value to a binary data of
394
+ * Protocol Buffer, with type assertion. If `input` value is not valid, it throws
395
+ * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value,
396
+ * Protocol Buffer binary data would be returned.
397
+ *
398
+ * If you can trust `input` value, or want to perform other type of validation, use
399
+ * below functions instead.
400
+ *
401
+ * - {@link encode}
402
+ * - {@link isEncode}
403
+ * - {@link validateEncode}
404
+ *
405
+ * By the way, you know what? Expression power of Protocol Buffer is not enough strong
406
+ * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
407
+ * type that is not compatible with Protocol Buffer, this function would throw
408
+ * compilation errors.
409
+ *
410
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
411
+ *
412
+ * @template T Type of the value input
413
+ * @param input A value to encode
414
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
415
+ * @returns Encoded binary data
416
+ *
417
+ * @author Jeongho Nam - https://github.com/samchon
418
+ */
419
+ export function assertEncode<T>(
420
+ input: T,
421
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
422
+ ): Uint8Array;
423
+
424
+ /**
425
+ * Protocol Buffer Encoder with type assertion.
426
+ *
427
+ * `typia.protobuf.assertEncode()` is a combination function of {@link assert} and
428
+ * {@link encode}.
429
+ *
430
+ * Therefore, it converts an `input` value to a binary data of
431
+ * Protocol Buffer, with type assertion. If `input` value is not valid, it throws
432
+ * {@link TypeGuardError}. Otherwise, there's no problem on the `input` value,
433
+ * Protocol Buffer binary data would be returned.
434
+ *
435
+ * If you can trust `input` value, or want to perform other type of validation, use
436
+ * below functions instead.
437
+ *
438
+ * - {@link encode}
439
+ * - {@link isEncode}
440
+ * - {@link validateEncode}
441
+ *
442
+ * By the way, you know what? Expression power of Protocol Buffer is not enough strong
443
+ * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
444
+ * type that is not compatible with Protocol Buffer, this function would throw
445
+ * compilation errors.
446
+ *
447
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
448
+ *
449
+ * @template T Type of the value input
450
+ * @param input A value to encode
451
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
452
+ * @returns Encoded binary data
453
+ *
454
+ * @author Jeongho Nam - https://github.com/samchon
455
+ */
456
+ export function assertEncode<T>(
457
+ input: unknown,
458
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
459
+ ): Uint8Array;
460
+
461
+ /**
462
+ * @internal
463
+ */
464
+ export function assertEncode(): never {
465
+ NoTransformConfigurationError("protobuf.assertEncode");
466
+ }
467
+
468
+ /**
469
+ * Protocol Buffer Encoder with type checking.
470
+ *
471
+ * `typia.protobuf.isEncode()` is a combination function of {@link is} and
472
+ * {@link encode}.
473
+ *
474
+ * Therefore, it converts an `input` value to a binary data of
475
+ * Protocol Buffer, with type checking. If `input` value is not valid, it returns
476
+ * `null` value. Otherwise, there's no problem on the `input` value, Protocol
477
+ * Buffer binary data would be returned.
478
+ *
479
+ * If you can trust `input` value, or want to perform other type of validation, use
480
+ * below functions instead.
481
+ *
482
+ * - {@link encode}
483
+ * - {@link assertEncode}
484
+ * - {@link validateEncode}
485
+ *
486
+ * By the way, you know what? Expression power of Protocol Buffer is not enough strong
487
+ * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
488
+ * type that is not compatible with Protocol Buffer, this function would throw
489
+ * compilation errors.
490
+ *
491
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
492
+ *
493
+ * @template T Type of the value input
494
+ * @param input A value to encode
495
+ * @returns Encoded binary data
496
+ *
497
+ * @author Jeongho Nam - https://github.com/samchon
498
+ */
499
+ export function isEncode<T>(input: T): Uint8Array | null;
500
+
501
+ /**
502
+ * Protocol Buffer Encoder with type checking.
503
+ *
504
+ * `typia.protobuf.isEncode()` is a combination function of {@link is} and
505
+ * {@link encode}.
506
+ *
507
+ * Therefore, it converts an `input` value to a binary data of
508
+ * Protocol Buffer, with type checking. If `input` value is not valid, it returns
509
+ * `null` value. Otherwise, there's no problem on the `input` value, Protocol
510
+ * Buffer binary data would be returned.
511
+ *
512
+ * If you can trust `input` value, or want to perform other type of validation, use
513
+ * below functions instead.
514
+ *
515
+ * - {@link encode}
516
+ * - {@link assertEncode}
517
+ * - {@link validateEncode}
518
+ *
519
+ * By the way, you know what? Expression power of Protocol Buffer is not enough strong
520
+ * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
521
+ * type that is not compatible with Protocol Buffer, this function would throw
522
+ * compilation errors.
523
+ *
524
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
525
+ *
526
+ * @template T Type of the value input
527
+ * @param input A value to encode
528
+ * @returns Encoded binary data
529
+ *
530
+ * @author Jeongho Nam - https://github.com/samchon
531
+ */
532
+ export function isEncode<T>(input: unknown): Uint8Array | null;
533
+
534
+ /**
535
+ * @internal
536
+ */
537
+ export function isEncode(): never {
538
+ NoTransformConfigurationError("protobuf.isEncode");
539
+ }
540
+
541
+ /**
542
+ * Protocol Buffer Encoder with type validation.
543
+ *
544
+ * `typia.protobuf.validateEncode()` is a combination function of
545
+ * {@link validation} and {@link encode}.
546
+ *
547
+ * Therefore, it converts an `input` value to a binary data of
548
+ * Protocol Buffer, with type validation. If `input` value is not valid, it returns
549
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
550
+ * no problem on the `input` value, Protocol Buffer binary data would be stored in
551
+ * `data` property of the output {@link IValidation.ISuccess} instance.
552
+ *
553
+ * If you can trust `input` value, or want to perform other type of validation, use
554
+ * below functions instead.
555
+ *
556
+ * - {@link encode}
557
+ * - {@link assertEncode}
558
+ * - {@link isEncode}
559
+ *
560
+ * By the way, you know what? Expression power of Protocol Buffer is not enough strong
561
+ * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
562
+ * type that is not compatible with Protocol Buffer, this function would throw
563
+ * compilation errors.
564
+ *
565
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
566
+ *
567
+ * @template T Type of the value input
568
+ * @param input A value to encode
569
+ * @returns Encoded binary data
570
+ *
571
+ * @author Jeongho Nam - https://github.com/samchon
572
+ */
573
+ export function validateEncode<T>(input: T): IValidation<Uint8Array>;
574
+
575
+ /**
576
+ * Protocol Buffer Encoder with type validation.
577
+ *
578
+ * `typia.protobuf.validateEncode()` is a combination function of
579
+ * {@link validation} and {@link encode}.
580
+ *
581
+ * Therefore, it converts an `input` value to a binary data of
582
+ * Protocol Buffer, with type validation. If `input` value is not valid, it returns
583
+ * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there's
584
+ * no problem on the `input` value, Protocol Buffer binary data would be stored in
585
+ * `data` property of the output {@link IValidation.ISuccess} instance.
586
+ *
587
+ * If you can trust `input` value, or want to perform other type of validation, use
588
+ * below functions instead.
589
+ *
590
+ * - {@link encode}
591
+ * - {@link assertEncode}
592
+ * - {@link isEncode}
593
+ *
594
+ * By the way, you know what? Expression power of Protocol Buffer is not enough strong
595
+ * to fully meet the TypeScript type specs. In such reason, if you put a TypeScript
596
+ * type that is not compatible with Protocol Buffer, this function would throw
597
+ * compilation errors.
598
+ *
599
+ * - [Restrictions of Protocol Buffer](https://typia.io/docs/protobuf/message/#restrictions)
600
+ *
601
+ * @template T Type of the value input
602
+ * @param input A value to encode
603
+ * @returns Encoded binary data
604
+ *
605
+ * @author Jeongho Nam - https://github.com/samchon
606
+ */
607
+ export function validateEncode<T>(input: unknown): IValidation<Uint8Array>;
608
+
609
+ /**
610
+ * @internal
611
+ */
612
+ export function validateEncode(): never {
613
+ NoTransformConfigurationError("protobuf.validateEncode");
614
+ }
615
+
616
+ /* -----------------------------------------------------------
617
+ FACTORY FUNCTIONS
618
+ ----------------------------------------------------------- */
619
+ /**
620
+ * Creates a reusable {@link decode} function.
621
+ *
622
+ * @danger You must configure the generic argument `T`
623
+ * @returns Nothing until you configure the generic argument `T`
624
+ * @throws compile error
625
+ *
626
+ * @author Jeongho Nam - https://github.com/samchon
627
+ */
628
+ export function createDecode(): never;
629
+
630
+ /**
631
+ * Creates a reusable {@link decode} function.
632
+ *
633
+ * @template T Target type
634
+ * @returns A reusable `decode` function
635
+ *
636
+ * @author Jeongho Nam - https://github.com/samchon
637
+ */
638
+ export function createDecode<T>(): (input: Uint8Array) => Resolved<T>;
639
+
640
+ /**
641
+ * @internal
642
+ */
643
+ export function createDecode<T>(): (input: Uint8Array) => Resolved<T> {
644
+ NoTransformConfigurationError("protobuf.createDecode");
645
+ }
646
+
647
+ /**
648
+ * Creates a reusable {@link isDecode} function.
649
+ *
650
+ * @danger You must configure the generic argument `T`
651
+ * @returns Nothing until you configure the generic argument `T`
652
+ * @throws compile error
653
+ *
654
+ * @author Jeongho Nam - https://github.com/samchon
655
+ */
656
+ export function createIsDecode(): never;
657
+
658
+ /**
659
+ * Creates a reusable {@link isDecode} function.
660
+ *
661
+ * @template T Target type
662
+ * @returns A reusable `isDecode` function
663
+ *
664
+ * @author Jeongho Nam - https://github.com/samchon
665
+ */
666
+ export function createIsDecode<T>(): (input: Uint8Array) => Resolved<T> | null;
667
+
668
+ /**
669
+ * @internal
670
+ */
671
+ export function createIsDecode<T>(): (input: Uint8Array) => Resolved<T> | null {
672
+ NoTransformConfigurationError("protobuf.createIsDecode");
673
+ }
674
+
675
+ /**
676
+ * Creates a reusable {@link assertDecode} function.
677
+ *
678
+ * @danger You must configure the generic argument `T`
679
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
680
+ * @returns Nothing until you configure the generic argument `T`
681
+ * @throws compile error
682
+ *
683
+ * @author Jeongho Nam - https://github.com/samchon
684
+ */
685
+ export function createAssertDecode(
686
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
687
+ ): never;
688
+
689
+ /**
690
+ * Creates a reusable {@link assertDecode} function.
691
+ *
692
+ * @template T Target type
693
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
694
+ * @returns A reusable `assertDecode` function
695
+ *
696
+ * @author Jeongho Nam - https://github.com/samchon
697
+ */
698
+ export function createAssertDecode<T>(
699
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
700
+ ): (input: Uint8Array) => Resolved<T>;
701
+
702
+ /**
703
+ * @internal
704
+ */
705
+ export function createAssertDecode<T>(): (input: Uint8Array) => Resolved<T> {
706
+ NoTransformConfigurationError("protobuf.createAssertDecode");
707
+ }
708
+
709
+ /**
710
+ * Creates a reusable {@link validateDecode} function.
711
+ *
712
+ * @danger You must configure the generic argument `T`
713
+ * @returns Nothing until you configure the generic argument `T`
714
+ * @throws compile error
715
+ *
716
+ * @author Jeongho Nam - https://github.com/samchon
717
+ */
718
+ export function createValidateDecode(): never;
719
+
720
+ /**
721
+ * Creates a reusable {@link validateDecode} function.
722
+ *
723
+ * @template T Target type
724
+ * @returns A reusable `validateDecode` function
725
+ *
726
+ * @author Jeongho Nam - https://github.com/samchon
727
+ */
728
+ export function createValidateDecode<T>(): (
729
+ input: Uint8Array,
730
+ ) => IValidation<Resolved<T>>;
731
+
732
+ /**
733
+ * @internal
734
+ */
735
+ export function createValidateDecode<T>(): (
736
+ input: Uint8Array,
737
+ ) => IValidation<Resolved<T>> {
738
+ NoTransformConfigurationError("protobuf.createValidateDecode");
739
+ }
740
+
741
+ /**
742
+ * Creates a reusable {@link encode} function.
743
+ *
744
+ * @danger You must configure the generic argument `T`
745
+ * @returns Nothing until you configure the generic argument `T`
746
+ * @throws compile error
747
+ *
748
+ * @author Jeongho Nam - https://github.com/samchon
749
+ */
750
+ export function createEncode(): never;
751
+
752
+ /**
753
+ * Creates a reusable {@link encode} function.
754
+ *
755
+ * @template T Target type
756
+ * @returns A reusable `encode` function
757
+ *
758
+ * @author Jeongho Nam - https://github.com/samchon
759
+ */
760
+ export function createEncode<T>(): (input: T) => Uint8Array;
761
+
762
+ /**
763
+ * @internal
764
+ */
765
+ export function createEncode<T>(): (input: T) => Uint8Array {
766
+ NoTransformConfigurationError("protobuf.createEncode");
767
+ }
768
+
769
+ /**
770
+ * Creates a reusable {@link isEncode} function.
771
+ *
772
+ * @danger You must configure the generic argument `T`
773
+ * @returns Nothing until you configure the generic argument `T`
774
+ * @throws compile error
775
+ *
776
+ * @author Jeongho Nam - https://github.com/samchon
777
+ */
778
+ export function createIsEncode(): never;
779
+
780
+ /**
781
+ * Creates a reusable {@link isEncode} function.
782
+ *
783
+ * @template T Target type
784
+ * @returns A reusable `isEncode` function
785
+ *
786
+ * @author Jeongho Nam - https://github.com/samchon
787
+ */
788
+ export function createIsEncode<T>(): (input: T) => Uint8Array | null;
789
+
790
+ /**
791
+ * @internal
792
+ */
793
+ export function createIsEncode<T>(): (input: T) => Uint8Array | null {
794
+ NoTransformConfigurationError("protobuf.createIsEncode");
795
+ }
796
+
797
+ /**
798
+ * Creates a reusable {@link assertEncode} function.
799
+ *
800
+ * @danger You must configure the generic argument `T`
801
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
802
+ * @returns Nothing until you configure the generic argument `T`
803
+ * @throws compile error
804
+ *
805
+ * @author Jeongho Nam - https://github.com/samchon
806
+ */
807
+ export function createAssertEncode(
808
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
809
+ ): never;
810
+
811
+ /**
812
+ * Creates a reusable {@link assertEncode} function.
813
+ *
814
+ * @template T Target type
815
+ * @param errorFactory Custom error factory. Default is `TypeGuardError`
816
+ * @returns A reusable `assertEncode` function
817
+ *
818
+ * @author Jeongho Nam - https://github.com/samchon
819
+ */
820
+ export function createAssertEncode<T>(
821
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
822
+ ): (input: T) => Uint8Array;
823
+
824
+ /**
825
+ * @internal
826
+ */
827
+ export function createAssertEncode<T>(): (input: T) => Uint8Array {
828
+ NoTransformConfigurationError("protobuf.createAssertEncode");
829
+ }
830
+
831
+ /**
832
+ * Creates a reusable {@link validateEncode} function.
833
+ *
834
+ * @danger You must configure the generic argument `T`
835
+ * @returns Nothing until you configure the generic argument `T`
836
+ * @throws compile error
837
+ *
838
+ * @author Jeongho Nam - https://github.com/samchon
839
+ */
840
+ export function createValidateEncode(): never;
841
+
842
+ /**
843
+ * Creates a reusable {@link validateEncode} function.
844
+ *
845
+ * @template T Target type
846
+ * @returns A reusable `validateEncode` function
847
+ *
848
+ * @author Jeongho Nam - https://github.com/samchon
849
+ */
850
+ export function createValidateEncode<T>(): (
851
+ input: T,
852
+ ) => IValidation<Uint8Array>;
853
+
854
+ /**
855
+ * @internal
856
+ */
857
+ export function createValidateEncode<T>(): (
858
+ input: T,
859
+ ) => IValidation<Uint8Array> {
860
+ NoTransformConfigurationError("protobuf.createValidateEncode");
861
+ }