typia 5.0.5 → 5.1.0-dev.20230922

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 (292) hide show
  1. package/lib/factories/MetadataCollection.js +25 -9
  2. package/lib/factories/MetadataCollection.js.map +1 -1
  3. package/package.json +1 -1
  4. package/src/IRandomGenerator.ts +35 -35
  5. package/src/IValidation.ts +21 -21
  6. package/src/Primitive.ts +135 -135
  7. package/src/Resolved.ts +116 -116
  8. package/src/TypeGuardError.ts +36 -36
  9. package/src/executable/TypiaGenerateWizard.ts +85 -85
  10. package/src/executable/TypiaSetupWizard.ts +153 -153
  11. package/src/executable/setup/ArgumentParser.ts +45 -45
  12. package/src/executable/setup/CommandExecutor.ts +8 -8
  13. package/src/executable/setup/FileRetriever.ts +22 -22
  14. package/src/executable/setup/PackageManager.ts +71 -71
  15. package/src/executable/setup/PluginConfigurator.ts +70 -70
  16. package/src/executable/typia.ts +52 -52
  17. package/src/factories/CommentFactory.ts +84 -84
  18. package/src/factories/ExpressionFactory.ts +159 -159
  19. package/src/factories/IdentifierFactory.ts +74 -74
  20. package/src/factories/JsonMetadataFactory.ts +43 -43
  21. package/src/factories/LiteralFactory.ts +47 -47
  22. package/src/factories/MetadataCollection.ts +274 -269
  23. package/src/factories/MetadataCommentTagFactory.ts +629 -629
  24. package/src/factories/MetadataFactory.ts +214 -214
  25. package/src/factories/MetadataTypeTagFactory.ts +313 -313
  26. package/src/factories/NumericRangeFactory.ts +33 -33
  27. package/src/factories/ProtobufFactory.ts +272 -272
  28. package/src/factories/StatementFactory.ts +72 -72
  29. package/src/factories/TemplateFactory.ts +58 -58
  30. package/src/factories/TypeFactory.ts +119 -119
  31. package/src/factories/ValueFactory.ts +12 -12
  32. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  33. package/src/factories/internal/metadata/emend_metadata_atomics.ts +40 -40
  34. package/src/factories/internal/metadata/emplace_metadata_alias.ts +41 -41
  35. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +41 -41
  36. package/src/factories/internal/metadata/emplace_metadata_object.ts +150 -150
  37. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +60 -60
  38. package/src/factories/internal/metadata/explore_metadata.ts +32 -32
  39. package/src/factories/internal/metadata/iterate_metadata.ts +101 -101
  40. package/src/factories/internal/metadata/iterate_metadata_alias.ts +35 -35
  41. package/src/factories/internal/metadata/iterate_metadata_array.ts +37 -37
  42. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  43. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  44. package/src/factories/internal/metadata/iterate_metadata_collection.ts +141 -141
  45. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +26 -26
  46. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  47. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +197 -197
  48. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  49. package/src/factories/internal/metadata/iterate_metadata_native.ts +210 -210
  50. package/src/factories/internal/metadata/iterate_metadata_object.ts +44 -44
  51. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +52 -52
  52. package/src/factories/internal/metadata/iterate_metadata_set.ts +42 -42
  53. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  54. package/src/factories/internal/metadata/iterate_metadata_template.ts +47 -47
  55. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +37 -37
  56. package/src/factories/internal/metadata/iterate_metadata_union.ts +27 -27
  57. package/src/functional/$ProtobufReader.ts +201 -201
  58. package/src/functional/$ProtobufSizer.ts +147 -147
  59. package/src/functional/$ProtobufWriter.ts +151 -151
  60. package/src/functional/$any.ts +4 -4
  61. package/src/functional/$clone.ts +4 -4
  62. package/src/functional/$dictionary.ts +25 -25
  63. package/src/functional/$every.ts +11 -11
  64. package/src/functional/$guard.ts +35 -35
  65. package/src/functional/$is_between.ts +2 -2
  66. package/src/functional/$join.ts +46 -46
  67. package/src/functional/$number.ts +13 -13
  68. package/src/functional/$report.ts +15 -15
  69. package/src/functional/$rest.ts +3 -3
  70. package/src/functional/$string.ts +50 -50
  71. package/src/functional/$strlen.ts +7 -7
  72. package/src/functional/$tail.ts +5 -5
  73. package/src/functional/$varint.ts +130 -130
  74. package/src/functional/$zigzag.ts +39 -39
  75. package/src/functional/IProtobufWriter.ts +18 -18
  76. package/src/functional/Namespace.ts +133 -133
  77. package/src/index.ts +4 -4
  78. package/src/json.ts +648 -648
  79. package/src/misc.ts +651 -651
  80. package/src/module.ts +656 -656
  81. package/src/programmers/AssertProgrammer.ts +317 -317
  82. package/src/programmers/CheckerProgrammer.ts +1137 -1137
  83. package/src/programmers/FeatureProgrammer.ts +478 -478
  84. package/src/programmers/IsProgrammer.ts +252 -252
  85. package/src/programmers/RandomProgrammer.ts +878 -878
  86. package/src/programmers/TypiaProgrammer.ts +169 -169
  87. package/src/programmers/ValidateProgrammer.ts +346 -346
  88. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  89. package/src/programmers/helpers/CloneJoiner.ts +144 -144
  90. package/src/programmers/helpers/FunctionImporeter.ts +91 -91
  91. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  92. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  93. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  94. package/src/programmers/helpers/ProtobufUtil.ts +125 -125
  95. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  96. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  97. package/src/programmers/helpers/RandomJoiner.ts +151 -151
  98. package/src/programmers/helpers/RandomRanger.ts +173 -173
  99. package/src/programmers/helpers/StringifyJoinder.ts +113 -113
  100. package/src/programmers/helpers/StringifyPredicator.ts +12 -12
  101. package/src/programmers/helpers/UnionExplorer.ts +305 -305
  102. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  103. package/src/programmers/helpers/disable_function_importer_declare.ts +32 -32
  104. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  105. package/src/programmers/internal/application_alias.ts +65 -65
  106. package/src/programmers/internal/application_array.ts +53 -53
  107. package/src/programmers/internal/application_boolean.ts +15 -15
  108. package/src/programmers/internal/application_constant.ts +26 -26
  109. package/src/programmers/internal/application_default.ts +17 -17
  110. package/src/programmers/internal/application_default_string.ts +37 -37
  111. package/src/programmers/internal/application_escaped.ts +55 -55
  112. package/src/programmers/internal/application_native.ts +39 -39
  113. package/src/programmers/internal/application_number.ts +88 -88
  114. package/src/programmers/internal/application_object.ts +162 -162
  115. package/src/programmers/internal/application_schema.ts +175 -175
  116. package/src/programmers/internal/application_string.ts +51 -51
  117. package/src/programmers/internal/application_templates.ts +25 -25
  118. package/src/programmers/internal/application_tuple.ts +58 -58
  119. package/src/programmers/internal/check_array_length.ts +41 -41
  120. package/src/programmers/internal/check_bigint.ts +45 -45
  121. package/src/programmers/internal/check_dynamic_properties.ts +194 -194
  122. package/src/programmers/internal/check_everything.ts +28 -28
  123. package/src/programmers/internal/check_native.ts +21 -21
  124. package/src/programmers/internal/check_number.ts +105 -105
  125. package/src/programmers/internal/check_object.ts +55 -55
  126. package/src/programmers/internal/check_string.ts +45 -45
  127. package/src/programmers/internal/check_template.ts +61 -61
  128. package/src/programmers/internal/check_union_array_like.ts +323 -323
  129. package/src/programmers/internal/decode_union_object.ts +84 -84
  130. package/src/programmers/internal/feature_object_entries.ts +58 -58
  131. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  132. package/src/programmers/internal/prune_object_properties.ts +60 -60
  133. package/src/programmers/internal/random_custom.ts +37 -37
  134. package/src/programmers/internal/stringify_dynamic_properties.ts +171 -171
  135. package/src/programmers/internal/stringify_native.ts +7 -7
  136. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  137. package/src/programmers/internal/template_to_pattern.ts +15 -15
  138. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +20 -20
  139. package/src/programmers/json/JsonApplicationProgrammer.ts +50 -50
  140. package/src/programmers/json/JsonAssertParseProgrammer.ts +71 -71
  141. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +66 -66
  142. package/src/programmers/json/JsonIsParseProgrammer.ts +77 -77
  143. package/src/programmers/json/JsonIsStringifyProgrammer.ts +76 -76
  144. package/src/programmers/json/JsonStringifyProgrammer.ts +964 -964
  145. package/src/programmers/json/JsonValidateParseProgrammer.ts +68 -68
  146. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +84 -84
  147. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +71 -71
  148. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +68 -68
  149. package/src/programmers/misc/MiscCloneProgrammer.ts +774 -774
  150. package/src/programmers/misc/MiscIsCloneProgrammer.ts +78 -78
  151. package/src/programmers/misc/MiscIsPruneProgrammer.ts +73 -73
  152. package/src/programmers/misc/MiscLiteralsProgrammer.ts +69 -69
  153. package/src/programmers/misc/MiscPruneProgrammer.ts +550 -550
  154. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +85 -85
  155. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +78 -78
  156. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +75 -75
  157. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +66 -66
  158. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +655 -655
  159. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +883 -883
  160. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +85 -85
  161. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +76 -76
  162. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +165 -165
  163. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +75 -75
  164. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +86 -86
  165. package/src/protobuf.ts +881 -881
  166. package/src/schemas/json/IJsonApplication.ts +8 -8
  167. package/src/schemas/json/IJsonComponents.ts +33 -33
  168. package/src/schemas/json/IJsonSchema.ts +110 -110
  169. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  170. package/src/schemas/metadata/IMetadata.ts +34 -34
  171. package/src/schemas/metadata/IMetadataAlias.ts +12 -12
  172. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  173. package/src/schemas/metadata/IMetadataArray.ts +7 -7
  174. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  175. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  176. package/src/schemas/metadata/IMetadataCollection.ts +11 -11
  177. package/src/schemas/metadata/IMetadataConstant.ts +16 -16
  178. package/src/schemas/metadata/IMetadataDictionary.ts +14 -14
  179. package/src/schemas/metadata/IMetadataEntry.ts +6 -6
  180. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  181. package/src/schemas/metadata/IMetadataObject.ts +18 -18
  182. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  183. package/src/schemas/metadata/IMetadataTuple.ts +7 -7
  184. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  185. package/src/schemas/metadata/IMetadataTypeTag.ts +8 -8
  186. package/src/schemas/metadata/Metadata.ts +685 -685
  187. package/src/schemas/metadata/MetadataAlias.ts +61 -61
  188. package/src/schemas/metadata/MetadataArray.ts +49 -49
  189. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  190. package/src/schemas/metadata/MetadataAtomic.ts +42 -42
  191. package/src/schemas/metadata/MetadataConstant.ts +3 -3
  192. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  193. package/src/schemas/metadata/MetadataObject.ts +139 -139
  194. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  195. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  196. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  197. package/src/tags/ExclusiveMaximum.ts +13 -13
  198. package/src/tags/ExclusiveMinimum.ts +13 -13
  199. package/src/tags/Format.ts +30 -30
  200. package/src/tags/MaxItems.ts +9 -9
  201. package/src/tags/MaxLength.ts +9 -9
  202. package/src/tags/Maximum.ts +13 -13
  203. package/src/tags/MinItems.ts +9 -9
  204. package/src/tags/MinLength.ts +9 -9
  205. package/src/tags/Minimum.ts +13 -13
  206. package/src/tags/MultipleOf.ts +15 -15
  207. package/src/tags/Pattern.ts +8 -8
  208. package/src/tags/TagBase.ts +68 -68
  209. package/src/tags/Type.ts +27 -27
  210. package/src/tags/index.ts +13 -13
  211. package/src/transform.ts +35 -35
  212. package/src/transformers/CallExpressionTransformer.ts +243 -243
  213. package/src/transformers/FileTransformer.ts +57 -57
  214. package/src/transformers/IProject.ts +15 -15
  215. package/src/transformers/ITransformOptions.ts +62 -62
  216. package/src/transformers/ImportTransformer.ts +66 -66
  217. package/src/transformers/NodeTransformer.ts +13 -13
  218. package/src/transformers/TransformerError.ts +55 -55
  219. package/src/transformers/features/AssertTransformer.ts +11 -11
  220. package/src/transformers/features/CreateAssertTransformer.ts +13 -13
  221. package/src/transformers/features/CreateIsTransformer.ts +11 -11
  222. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  223. package/src/transformers/features/CreateValidateTransformer.ts +13 -13
  224. package/src/transformers/features/IsTransformer.ts +11 -11
  225. package/src/transformers/features/RandomTransformer.ts +46 -46
  226. package/src/transformers/features/ValidateTransformer.ts +11 -11
  227. package/src/transformers/features/json/JsonApplicationTransformer.ts +118 -118
  228. package/src/transformers/features/json/JsonAssertParseTransformer.ts +10 -10
  229. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +10 -10
  230. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +10 -10
  231. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +12 -12
  232. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +9 -9
  233. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +10 -10
  234. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +9 -9
  235. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +10 -10
  236. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +12 -12
  237. package/src/transformers/features/json/JsonIsParseTransformer.ts +9 -9
  238. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +10 -10
  239. package/src/transformers/features/json/JsonStringifyTransformer.ts +9 -9
  240. package/src/transformers/features/json/JsonValidateParseTransformer.ts +10 -10
  241. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +10 -10
  242. package/src/transformers/features/misc/MetadataTransformer.ts +61 -61
  243. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +10 -10
  244. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +10 -10
  245. package/src/transformers/features/misc/MiscCloneTransformer.ts +9 -9
  246. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +10 -10
  247. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +10 -10
  248. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +9 -9
  249. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +9 -9
  250. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +9 -9
  251. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +9 -9
  252. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +10 -10
  253. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +10 -10
  254. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +9 -9
  255. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +9 -9
  256. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +32 -32
  257. package/src/transformers/features/misc/MiscPruneTransformer.ts +9 -9
  258. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +10 -10
  259. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +10 -10
  260. package/src/transformers/features/protobuf/CreateProtobufAssertDecodeTransformer.ts +12 -12
  261. package/src/transformers/features/protobuf/CreateProtobufAssertEncodeTransformer.ts +12 -12
  262. package/src/transformers/features/protobuf/CreateProtobufDecodeTransformer.ts +9 -9
  263. package/src/transformers/features/protobuf/CreateProtobufEncodeTransformer.ts +9 -9
  264. package/src/transformers/features/protobuf/CreateProtobufIsDecodeTransformer.ts +12 -12
  265. package/src/transformers/features/protobuf/CreateProtobufIsEncodeTransformer.ts +12 -12
  266. package/src/transformers/features/protobuf/CreateProtobufValidateDecodeTransformer.ts +12 -12
  267. package/src/transformers/features/protobuf/CreateProtobufValidateEncodeTransformer.ts +12 -12
  268. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +10 -10
  269. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +10 -10
  270. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +10 -10
  271. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +10 -10
  272. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +10 -10
  273. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +10 -10
  274. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +33 -33
  275. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +12 -12
  276. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +12 -12
  277. package/src/transformers/internal/GenericTransformer.ts +104 -104
  278. package/src/typings/Atomic.ts +18 -18
  279. package/src/typings/ClassProperties.ts +5 -5
  280. package/src/typings/Customizable.ts +5 -5
  281. package/src/typings/OmitNever.ts +3 -3
  282. package/src/typings/ProtobufAtomic.ts +19 -19
  283. package/src/typings/SpecialFields.ts +3 -3
  284. package/src/typings/ValidationPipe.ts +9 -9
  285. package/src/typings/Writable.ts +11 -11
  286. package/src/utils/ArrayUtil.ts +45 -45
  287. package/src/utils/Escaper.ts +46 -46
  288. package/src/utils/MapUtil.ts +12 -12
  289. package/src/utils/NameEncoder.ts +32 -32
  290. package/src/utils/PatternUtil.ts +33 -33
  291. package/src/utils/RandomGenerator.ts +83 -83
  292. package/src/utils/Singleton.ts +17 -17
@@ -1,19 +1,19 @@
1
- export type ProtobufAtomic =
2
- | "bool"
3
- | "int32"
4
- | "uint32"
5
- | "int64"
6
- | "uint64"
7
- | "float"
8
- | "double"
9
- | "string";
10
- export namespace ProtobufAtomic {
11
- export type Numeric =
12
- | "int32"
13
- | "uint32"
14
- | "int64"
15
- | "uint64"
16
- | "float"
17
- | "double";
18
- export type BigNumeric = "int64" | "uint64";
19
- }
1
+ export type ProtobufAtomic =
2
+ | "bool"
3
+ | "int32"
4
+ | "uint32"
5
+ | "int64"
6
+ | "uint64"
7
+ | "float"
8
+ | "double"
9
+ | "string";
10
+ export namespace ProtobufAtomic {
11
+ export type Numeric =
12
+ | "int32"
13
+ | "uint32"
14
+ | "int64"
15
+ | "uint64"
16
+ | "float"
17
+ | "double";
18
+ export type BigNumeric = "int64" | "uint64";
19
+ }
@@ -1,3 +1,3 @@
1
- export type SpecialFields<Instance extends object, Target> = {
2
- [P in keyof Instance]: Instance[P] extends Target ? P : never;
3
- }[keyof Instance & string];
1
+ export type SpecialFields<Instance extends object, Target> = {
2
+ [P in keyof Instance]: Instance[P] extends Target ? P : never;
3
+ }[keyof Instance & string];
@@ -1,9 +1,9 @@
1
- export type ValidationPipe<T, E> =
2
- | {
3
- success: true;
4
- data: T;
5
- }
6
- | {
7
- success: false;
8
- errors: E[];
9
- };
1
+ export type ValidationPipe<T, E> =
2
+ | {
3
+ success: true;
4
+ data: T;
5
+ }
6
+ | {
7
+ success: false;
8
+ errors: E[];
9
+ };
@@ -1,11 +1,11 @@
1
- import { ClassProperties } from "./ClassProperties";
2
-
3
- export type Writable<T extends object> = {
4
- -readonly [P in keyof T]: T[P];
5
- };
6
-
7
- export function Writable<T extends object>(
8
- elem: T,
9
- ): Writable<ClassProperties<T>> {
10
- return elem as any;
11
- }
1
+ import { ClassProperties } from "./ClassProperties";
2
+
3
+ export type Writable<T extends object> = {
4
+ -readonly [P in keyof T]: T[P];
5
+ };
6
+
7
+ export function Writable<T extends object>(
8
+ elem: T,
9
+ ): Writable<ClassProperties<T>> {
10
+ return elem as any;
11
+ }
@@ -1,45 +1,45 @@
1
- export namespace ArrayUtil {
2
- export const has = <T>(array: T[], pred: (elem: T) => boolean): boolean =>
3
- array.some(pred);
4
-
5
- export const add = <T>(
6
- array: T[],
7
- value: T,
8
- pred: (x: T, y: T) => boolean = (x, y) => x === y,
9
- ): boolean => {
10
- if (array.some((elem) => pred(elem, value))) return false;
11
- array.push(value);
12
- return true;
13
- };
14
-
15
- export const set = <Key, T>(
16
- array: T[],
17
- value: T,
18
- key: (elem: T) => Key,
19
- ): void => {
20
- if (array.some((elem) => key(elem) === key(value))) return;
21
- array.push(value);
22
- };
23
-
24
- export const take = <T>(
25
- array: T[],
26
- pred: (elem: T) => boolean,
27
- init: () => T,
28
- ): T => {
29
- const index: number = array.findIndex(pred);
30
- if (index !== -1) return array[index]!;
31
-
32
- const elem: T = init();
33
- array.push(elem);
34
- return elem;
35
- };
36
-
37
- export const repeat = <T>(
38
- count: number,
39
- closure: (index: number, count: number) => T,
40
- ): T[] =>
41
- new Array(count).fill("").map((_, index) => closure(index, count));
42
-
43
- export const flat = <T>(matrix: T[][]): T[] =>
44
- ([] as T[]).concat(...matrix);
45
- }
1
+ export namespace ArrayUtil {
2
+ export const has = <T>(array: T[], pred: (elem: T) => boolean): boolean =>
3
+ array.some(pred);
4
+
5
+ export const add = <T>(
6
+ array: T[],
7
+ value: T,
8
+ pred: (x: T, y: T) => boolean = (x, y) => x === y,
9
+ ): boolean => {
10
+ if (array.some((elem) => pred(elem, value))) return false;
11
+ array.push(value);
12
+ return true;
13
+ };
14
+
15
+ export const set = <Key, T>(
16
+ array: T[],
17
+ value: T,
18
+ key: (elem: T) => Key,
19
+ ): void => {
20
+ if (array.some((elem) => key(elem) === key(value))) return;
21
+ array.push(value);
22
+ };
23
+
24
+ export const take = <T>(
25
+ array: T[],
26
+ pred: (elem: T) => boolean,
27
+ init: () => T,
28
+ ): T => {
29
+ const index: number = array.findIndex(pred);
30
+ if (index !== -1) return array[index]!;
31
+
32
+ const elem: T = init();
33
+ array.push(elem);
34
+ return elem;
35
+ };
36
+
37
+ export const repeat = <T>(
38
+ count: number,
39
+ closure: (index: number, count: number) => T,
40
+ ): T[] =>
41
+ new Array(count).fill("").map((_, index) => closure(index, count));
42
+
43
+ export const flat = <T>(matrix: T[][]): T[] =>
44
+ ([] as T[]).concat(...matrix);
45
+ }
@@ -1,46 +1,46 @@
1
- export namespace Escaper {
2
- export const variable = (str: string): boolean =>
3
- reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);
4
-
5
- export const reserved = (str: string): boolean => RESERVED.has(str);
6
- }
7
-
8
- const RESERVED: Set<string> = new Set([
9
- "break",
10
- "case",
11
- "catch",
12
- "class",
13
- "const",
14
- "continue",
15
- "debugger",
16
- "default",
17
- "delete",
18
- "do",
19
- "else",
20
- "enum",
21
- "export",
22
- "extends",
23
- "false",
24
- "finally",
25
- "for",
26
- "function",
27
- "if",
28
- "import",
29
- "in",
30
- "instanceof",
31
- "new",
32
- "null",
33
- "package",
34
- "return",
35
- "super",
36
- "switch",
37
- "this",
38
- "throw",
39
- "true",
40
- "try",
41
- "typeof",
42
- "var",
43
- "void",
44
- "while",
45
- "with",
46
- ]);
1
+ export namespace Escaper {
2
+ export const variable = (str: string): boolean =>
3
+ reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);
4
+
5
+ export const reserved = (str: string): boolean => RESERVED.has(str);
6
+ }
7
+
8
+ const RESERVED: Set<string> = new Set([
9
+ "break",
10
+ "case",
11
+ "catch",
12
+ "class",
13
+ "const",
14
+ "continue",
15
+ "debugger",
16
+ "default",
17
+ "delete",
18
+ "do",
19
+ "else",
20
+ "enum",
21
+ "export",
22
+ "extends",
23
+ "false",
24
+ "finally",
25
+ "for",
26
+ "function",
27
+ "if",
28
+ "import",
29
+ "in",
30
+ "instanceof",
31
+ "new",
32
+ "null",
33
+ "package",
34
+ "return",
35
+ "super",
36
+ "switch",
37
+ "this",
38
+ "throw",
39
+ "true",
40
+ "try",
41
+ "typeof",
42
+ "var",
43
+ "void",
44
+ "while",
45
+ "with",
46
+ ]);
@@ -1,12 +1,12 @@
1
- export namespace MapUtil {
2
- export const take =
3
- <Key, T>(dict: Map<Key, T>) =>
4
- (key: Key, generator: () => T): T => {
5
- const oldbie: T | undefined = dict.get(key);
6
- if (oldbie) return oldbie;
7
-
8
- const value: T = generator();
9
- dict.set(key, value);
10
- return value;
11
- };
12
- }
1
+ export namespace MapUtil {
2
+ export const take =
3
+ <Key, T>(dict: Map<Key, T>) =>
4
+ (key: Key, generator: () => T): T => {
5
+ const oldbie: T | undefined = dict.get(key);
6
+ if (oldbie) return oldbie;
7
+
8
+ const value: T = generator();
9
+ dict.set(key, value);
10
+ return value;
11
+ };
12
+ }
@@ -1,32 +1,32 @@
1
- export namespace NameEncoder {
2
- export function encode(str: string): string {
3
- for (const [before, after] of REPLACERS)
4
- str = str.split(before).join(after);
5
- return str;
6
- }
7
-
8
- export function decode(str: string): string {
9
- for (const [before, after] of REPLACERS)
10
- if (after !== "") str = str.split(after).join(before);
11
- return str;
12
- }
13
- }
14
-
15
- const REPLACERS: [string, string][] = [
16
- ["$", "_dollar_"],
17
- ["&", "_and_"],
18
- ["|", "_or_"],
19
- ["{", "_blt_"],
20
- ["}", "_bgt_"],
21
- ["<", "_lt_"],
22
- [">", "_gt_"],
23
- ["(", "_lp_"],
24
- [")", "_rp_"],
25
- ["[", "_alt_"],
26
- ["]", "_agt_"],
27
- [",", "_comma_"],
28
- ["`", "_backquote_"],
29
- ["'", "_singlequote_"],
30
- ['"', "_doublequote_"],
31
- [" ", "_space_"],
32
- ];
1
+ export namespace NameEncoder {
2
+ export function encode(str: string): string {
3
+ for (const [before, after] of REPLACERS)
4
+ str = str.split(before).join(after);
5
+ return str;
6
+ }
7
+
8
+ export function decode(str: string): string {
9
+ for (const [before, after] of REPLACERS)
10
+ if (after !== "") str = str.split(after).join(before);
11
+ return str;
12
+ }
13
+ }
14
+
15
+ const REPLACERS: [string, string][] = [
16
+ ["$", "_dollar_"],
17
+ ["&", "_and_"],
18
+ ["|", "_or_"],
19
+ ["{", "_blt_"],
20
+ ["}", "_bgt_"],
21
+ ["<", "_lt_"],
22
+ [">", "_gt_"],
23
+ ["(", "_lp_"],
24
+ [")", "_rp_"],
25
+ ["[", "_alt_"],
26
+ ["]", "_agt_"],
27
+ [",", "_comma_"],
28
+ ["`", "_backquote_"],
29
+ ["'", "_singlequote_"],
30
+ ['"', "_doublequote_"],
31
+ [" ", "_space_"],
32
+ ];
@@ -1,33 +1,33 @@
1
- export namespace PatternUtil {
2
- export const fix = (str: string): string => {
3
- const first: number = str.indexOf(STRING);
4
- const last: number = str.lastIndexOf(STRING);
5
- return [
6
- first === -1 || none("(")(str.slice(0, first)) ? "^" : "",
7
- str,
8
- last === -1 || none(")")(str.slice(last + STRING.length))
9
- ? "$"
10
- : "",
11
- ].join("");
12
- };
13
-
14
- export const escape = (str: string): string => {
15
- return str
16
- .replace(/[|\\/{}()[\]^$+*?.]/g, "\\$&")
17
- .replace(/-/g, "\\x2d");
18
- };
19
-
20
- export const NUMBER =
21
- "[+-]?" + // optional sign
22
- "\\d+(?:\\.\\d+)?" + // integer or decimal
23
- "(?:[eE][+-]?\\d+)?"; // optional exponent
24
- export const BOOLEAN = "true|false";
25
- export const STRING = "(.*)";
26
- }
27
-
28
- const none =
29
- (parenthesis: string) =>
30
- (str: string): boolean => {
31
- for (const ch of str) if (ch !== parenthesis) return true;
32
- return false;
33
- };
1
+ export namespace PatternUtil {
2
+ export const fix = (str: string): string => {
3
+ const first: number = str.indexOf(STRING);
4
+ const last: number = str.lastIndexOf(STRING);
5
+ return [
6
+ first === -1 || none("(")(str.slice(0, first)) ? "^" : "",
7
+ str,
8
+ last === -1 || none(")")(str.slice(last + STRING.length))
9
+ ? "$"
10
+ : "",
11
+ ].join("");
12
+ };
13
+
14
+ export const escape = (str: string): string => {
15
+ return str
16
+ .replace(/[|\\/{}()[\]^$+*?.]/g, "\\$&")
17
+ .replace(/-/g, "\\x2d");
18
+ };
19
+
20
+ export const NUMBER =
21
+ "[+-]?" + // optional sign
22
+ "\\d+(?:\\.\\d+)?" + // integer or decimal
23
+ "(?:[eE][+-]?\\d+)?"; // optional exponent
24
+ export const BOOLEAN = "true|false";
25
+ export const STRING = "(.*)";
26
+ }
27
+
28
+ const none =
29
+ (parenthesis: string) =>
30
+ (str: string): boolean => {
31
+ for (const ch of str) if (ch !== parenthesis) return true;
32
+ return false;
33
+ };
@@ -1,83 +1,83 @@
1
- import RandExp from "randexp";
2
-
3
- /**
4
- * @internal
5
- */
6
- export namespace RandomGenerator {
7
- const ALPHABETS = "abcdefghijklmnopqrstuvwxyz";
8
-
9
- /* -----------------------------------------------------------
10
- REGULAR
11
- ----------------------------------------------------------- */
12
- export const boolean = () => Math.random() < 0.5;
13
-
14
- export const integer = (min?: number, max?: number) => {
15
- min ??= 0;
16
- max ??= 100;
17
- return Math.floor(Math.random() * (max - min + 1)) + min;
18
- };
19
-
20
- export const bigint = (min?: bigint, max?: bigint) => {
21
- min ??= BigInt(0);
22
- max ??= BigInt(100);
23
- return BigInt(integer(Number(min), Number(max)));
24
- };
25
-
26
- export const number = (min?: number, max?: number) => {
27
- min ??= 0;
28
- max ??= 100;
29
- return Math.random() * (max - min) + min;
30
- };
31
-
32
- export const string = (length?: number): string =>
33
- new Array(length ?? integer(5, 10))
34
- .fill(0)
35
- .map(() => ALPHABETS[integer(0, ALPHABETS.length - 1)])
36
- .join("");
37
-
38
- export const array = <T>(
39
- closure: (index: number) => T,
40
- count?: number,
41
- ): T[] =>
42
- new Array(count ?? length()).fill(0).map((_e, index) => closure(index));
43
-
44
- export const pick = <T>(array: T[]): T =>
45
- array[integer(0, array.length - 1)]!;
46
-
47
- export const length = () => integer(0, 3);
48
-
49
- /* -----------------------------------------------------------
50
- SECIAL FORMATS
51
- ----------------------------------------------------------- */
52
- export const uuid = () =>
53
- "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
54
- const r = (Math.random() * 16) | 0;
55
- const v = c === "x" ? r : (r & 0x3) | 0x8;
56
- return v.toString(16);
57
- });
58
-
59
- export const email = () => `${string(10)}@${string(10)}.${string(3)}`;
60
-
61
- export const url = () => `https://${string(10)}.${string(3)}`;
62
-
63
- export const ipv4 = () => array(() => integer(0, 255), 4).join(".");
64
-
65
- export const ipv6 = (): string =>
66
- array(() => integer(0, 65535).toString(16), 8).join(":");
67
-
68
- export const pattern = (regex: RegExp): string => new RandExp(regex).gen();
69
-
70
- export const date = (min?: number, max?: number) => {
71
- min ??= 0;
72
- max ??= Date.now() * 2;
73
- return new Date(number(min, max)).toISOString().substring(0, 10);
74
- };
75
-
76
- export const datetime = (min?: number, max?: number) => {
77
- min ??= Date.now() - 30 * DAY;
78
- max ??= Date.now() + 7 * DAY;
79
- return new Date(number(min, max)).toISOString();
80
- };
81
- }
82
-
83
- const DAY = 1000 * 60 * 60 * 24;
1
+ import RandExp from "randexp";
2
+
3
+ /**
4
+ * @internal
5
+ */
6
+ export namespace RandomGenerator {
7
+ const ALPHABETS = "abcdefghijklmnopqrstuvwxyz";
8
+
9
+ /* -----------------------------------------------------------
10
+ REGULAR
11
+ ----------------------------------------------------------- */
12
+ export const boolean = () => Math.random() < 0.5;
13
+
14
+ export const integer = (min?: number, max?: number) => {
15
+ min ??= 0;
16
+ max ??= 100;
17
+ return Math.floor(Math.random() * (max - min + 1)) + min;
18
+ };
19
+
20
+ export const bigint = (min?: bigint, max?: bigint) => {
21
+ min ??= BigInt(0);
22
+ max ??= BigInt(100);
23
+ return BigInt(integer(Number(min), Number(max)));
24
+ };
25
+
26
+ export const number = (min?: number, max?: number) => {
27
+ min ??= 0;
28
+ max ??= 100;
29
+ return Math.random() * (max - min) + min;
30
+ };
31
+
32
+ export const string = (length?: number): string =>
33
+ new Array(length ?? integer(5, 10))
34
+ .fill(0)
35
+ .map(() => ALPHABETS[integer(0, ALPHABETS.length - 1)])
36
+ .join("");
37
+
38
+ export const array = <T>(
39
+ closure: (index: number) => T,
40
+ count?: number,
41
+ ): T[] =>
42
+ new Array(count ?? length()).fill(0).map((_e, index) => closure(index));
43
+
44
+ export const pick = <T>(array: T[]): T =>
45
+ array[integer(0, array.length - 1)]!;
46
+
47
+ export const length = () => integer(0, 3);
48
+
49
+ /* -----------------------------------------------------------
50
+ SECIAL FORMATS
51
+ ----------------------------------------------------------- */
52
+ export const uuid = () =>
53
+ "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
54
+ const r = (Math.random() * 16) | 0;
55
+ const v = c === "x" ? r : (r & 0x3) | 0x8;
56
+ return v.toString(16);
57
+ });
58
+
59
+ export const email = () => `${string(10)}@${string(10)}.${string(3)}`;
60
+
61
+ export const url = () => `https://${string(10)}.${string(3)}`;
62
+
63
+ export const ipv4 = () => array(() => integer(0, 255), 4).join(".");
64
+
65
+ export const ipv6 = (): string =>
66
+ array(() => integer(0, 65535).toString(16), 8).join(":");
67
+
68
+ export const pattern = (regex: RegExp): string => new RandExp(regex).gen();
69
+
70
+ export const date = (min?: number, max?: number) => {
71
+ min ??= 0;
72
+ max ??= Date.now() * 2;
73
+ return new Date(number(min, max)).toISOString().substring(0, 10);
74
+ };
75
+
76
+ export const datetime = (min?: number, max?: number) => {
77
+ min ??= Date.now() - 30 * DAY;
78
+ max ??= Date.now() + 7 * DAY;
79
+ return new Date(number(min, max)).toISOString();
80
+ };
81
+ }
82
+
83
+ const DAY = 1000 * 60 * 60 * 24;
@@ -1,17 +1,17 @@
1
- export class Singleton<T, Args extends any[] = []> {
2
- private readonly closure_: (...args: Args) => T;
3
- private value_: T | object;
4
-
5
- public constructor(closure: (...args: Args) => T) {
6
- this.closure_ = closure;
7
- this.value_ = NOT_MOUNTED_YET;
8
- }
9
-
10
- public get(...args: Args): T {
11
- if (this.value_ === NOT_MOUNTED_YET)
12
- this.value_ = this.closure_(...args);
13
- return this.value_ as T;
14
- }
15
- }
16
-
17
- const NOT_MOUNTED_YET = {};
1
+ export class Singleton<T, Args extends any[] = []> {
2
+ private readonly closure_: (...args: Args) => T;
3
+ private value_: T | object;
4
+
5
+ public constructor(closure: (...args: Args) => T) {
6
+ this.closure_ = closure;
7
+ this.value_ = NOT_MOUNTED_YET;
8
+ }
9
+
10
+ public get(...args: Args): T {
11
+ if (this.value_ === NOT_MOUNTED_YET)
12
+ this.value_ = this.closure_(...args);
13
+ return this.value_ as T;
14
+ }
15
+ }
16
+
17
+ const NOT_MOUNTED_YET = {};