typia 4.3.2 → 4.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/lib/factories/internal/metadata/iterate_metadata_intersection.js +2 -0
  2. package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
  3. package/lib/programmers/helpers/CloneJoiner.js +10 -2
  4. package/lib/programmers/helpers/CloneJoiner.js.map +1 -1
  5. package/lib/programmers/internal/check_dynamic_properties.js +1 -1
  6. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  7. package/package.json +2 -2
  8. package/src/CustomValidatorMap.ts +126 -126
  9. package/src/IRandomGenerator.ts +34 -34
  10. package/src/IValidation.ts +21 -21
  11. package/src/Primitive.ts +131 -131
  12. package/src/TypeGuardError.ts +36 -36
  13. package/src/executable/TypiaGenerateWizard.ts +85 -85
  14. package/src/executable/TypiaSetupWizard.ts +153 -153
  15. package/src/executable/setup/ArgumentParser.ts +45 -45
  16. package/src/executable/setup/CommandExecutor.ts +8 -8
  17. package/src/executable/setup/FileRetriever.ts +22 -22
  18. package/src/executable/setup/PackageManager.ts +71 -71
  19. package/src/executable/setup/PluginConfigurator.ts +70 -70
  20. package/src/executable/typia.ts +52 -52
  21. package/src/factories/CommentFactory.ts +84 -84
  22. package/src/factories/ExpressionFactory.ts +77 -77
  23. package/src/factories/IdentifierFactory.ts +59 -59
  24. package/src/factories/LiteralFactory.ts +39 -39
  25. package/src/factories/MetadataCollection.ts +269 -269
  26. package/src/factories/MetadataFactory.ts +34 -34
  27. package/src/factories/MetadataTagFactory.ts +361 -361
  28. package/src/factories/StatementFactory.ts +24 -24
  29. package/src/factories/TemplateFactory.ts +58 -58
  30. package/src/factories/TypeFactory.ts +124 -124
  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 +33 -33
  34. package/src/factories/internal/metadata/emplace_metadata_alias.ts +40 -40
  35. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  36. package/src/factories/internal/metadata/emplace_metadata_object.ts +136 -136
  37. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  38. package/src/factories/internal/metadata/explore_metadata.ts +38 -38
  39. package/src/factories/internal/metadata/iterate_metadata.ts +81 -81
  40. package/src/factories/internal/metadata/iterate_metadata_alias.ts +30 -30
  41. package/src/factories/internal/metadata/iterate_metadata_array.ts +24 -24
  42. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  43. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  44. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  45. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  46. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +88 -84
  47. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  48. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  49. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  50. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  51. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  52. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  53. package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
  54. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  55. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  56. package/src/factories/internal/metadata/iterate_metadata_union.ts +24 -24
  57. package/src/functional/$any.ts +2 -2
  58. package/src/functional/$dictionary.ts +25 -25
  59. package/src/functional/$every.ts +11 -11
  60. package/src/functional/$guard.ts +35 -35
  61. package/src/functional/$is_between.ts +2 -2
  62. package/src/functional/$is_custom.ts +14 -14
  63. package/src/functional/$is_date.ts +3 -3
  64. package/src/functional/$is_datetime.ts +2 -2
  65. package/src/functional/$is_email.ts +4 -4
  66. package/src/functional/$is_ipv4.ts +4 -4
  67. package/src/functional/$is_ipv6.ts +4 -4
  68. package/src/functional/$is_url.ts +4 -4
  69. package/src/functional/$is_uuid.ts +4 -4
  70. package/src/functional/$join.ts +46 -46
  71. package/src/functional/$number.ts +12 -12
  72. package/src/functional/$report.ts +15 -15
  73. package/src/functional/$rest.ts +3 -3
  74. package/src/functional/$string.ts +50 -50
  75. package/src/functional/$tail.ts +5 -5
  76. package/src/functional/Namespace.ts +127 -127
  77. package/src/index.ts +4 -4
  78. package/src/metadata/ICommentTag.ts +4 -4
  79. package/src/metadata/IJsDocTagInfo.ts +10 -10
  80. package/src/metadata/IMetadata.ts +28 -28
  81. package/src/metadata/IMetadataAlias.ts +14 -14
  82. package/src/metadata/IMetadataApplication.ts +7 -7
  83. package/src/metadata/IMetadataArray.ts +10 -10
  84. package/src/metadata/IMetadataCollection.ts +11 -11
  85. package/src/metadata/IMetadataConstant.ts +16 -16
  86. package/src/metadata/IMetadataDictionary.ts +14 -14
  87. package/src/metadata/IMetadataEntry.ts +6 -6
  88. package/src/metadata/IMetadataObject.ts +18 -18
  89. package/src/metadata/IMetadataProperty.ts +11 -11
  90. package/src/metadata/IMetadataResolved.ts +6 -6
  91. package/src/metadata/IMetadataTag.ts +112 -112
  92. package/src/metadata/IMetadataTuple.ts +10 -10
  93. package/src/metadata/Metadata.ts +607 -607
  94. package/src/metadata/MetadataAlias.ts +66 -66
  95. package/src/metadata/MetadataArray.ts +55 -55
  96. package/src/metadata/MetadataConstant.ts +3 -3
  97. package/src/metadata/MetadataObject.ts +129 -129
  98. package/src/metadata/MetadataProperty.ts +64 -64
  99. package/src/metadata/MetadataResolved.ts +51 -51
  100. package/src/metadata/MetadataTuple.ts +58 -58
  101. package/src/module.ts +2038 -2038
  102. package/src/programmers/ApplicationProgrammer.ts +47 -47
  103. package/src/programmers/AssertCloneProgrammer.ts +71 -71
  104. package/src/programmers/AssertParseProgrammer.ts +66 -66
  105. package/src/programmers/AssertProgrammer.ts +279 -279
  106. package/src/programmers/AssertPruneProgrammer.ts +68 -68
  107. package/src/programmers/AssertStringifyProgrammer.ts +66 -66
  108. package/src/programmers/CheckerProgrammer.ts +1173 -1173
  109. package/src/programmers/CloneProgrammer.ts +587 -587
  110. package/src/programmers/FeatureProgrammer.ts +495 -495
  111. package/src/programmers/IsCloneProgrammer.ts +78 -78
  112. package/src/programmers/IsParseProgrammer.ts +72 -72
  113. package/src/programmers/IsProgrammer.ts +239 -239
  114. package/src/programmers/IsPruneProgrammer.ts +73 -73
  115. package/src/programmers/IsStringifyProgrammer.ts +76 -76
  116. package/src/programmers/LiteralsProgrammer.ts +64 -64
  117. package/src/programmers/PruneProgrammer.ts +542 -542
  118. package/src/programmers/RandomProgrammer.ts +578 -578
  119. package/src/programmers/StringifyProgrammer.ts +986 -986
  120. package/src/programmers/TypiaProgrammer.ts +129 -129
  121. package/src/programmers/ValidateCloneProgrammer.ts +85 -85
  122. package/src/programmers/ValidateParseProgrammer.ts +70 -70
  123. package/src/programmers/ValidateProgrammer.ts +305 -305
  124. package/src/programmers/ValidatePruneProgrammer.ts +78 -78
  125. package/src/programmers/ValidateStringifyProgrammer.ts +84 -84
  126. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  127. package/src/programmers/helpers/CloneJoiner.ts +168 -131
  128. package/src/programmers/helpers/FunctionImporeter.ts +78 -78
  129. package/src/programmers/helpers/ICheckEntry.ts +12 -12
  130. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  131. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  132. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  133. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  134. package/src/programmers/helpers/RandomRanger.ts +208 -208
  135. package/src/programmers/helpers/StringifyJoinder.ts +113 -113
  136. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  137. package/src/programmers/helpers/UnionExplorer.ts +305 -305
  138. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  139. package/src/programmers/helpers/disable_function_importer_declare.ts +26 -26
  140. package/src/programmers/internal/JSON_SCHEMA_PREFIX.ts +1 -1
  141. package/src/programmers/internal/application_alias.ts +66 -66
  142. package/src/programmers/internal/application_array.ts +30 -30
  143. package/src/programmers/internal/application_boolean.ts +15 -15
  144. package/src/programmers/internal/application_constant.ts +26 -26
  145. package/src/programmers/internal/application_default.ts +17 -17
  146. package/src/programmers/internal/application_default_string.ts +33 -33
  147. package/src/programmers/internal/application_native.ts +39 -39
  148. package/src/programmers/internal/application_number.ts +80 -80
  149. package/src/programmers/internal/application_object.ts +165 -165
  150. package/src/programmers/internal/application_resolved.ts +55 -55
  151. package/src/programmers/internal/application_schema.ts +157 -157
  152. package/src/programmers/internal/application_string.ts +44 -44
  153. package/src/programmers/internal/application_templates.ts +25 -25
  154. package/src/programmers/internal/application_tuple.ts +57 -57
  155. package/src/programmers/internal/check_array.ts +30 -30
  156. package/src/programmers/internal/check_array_length.ts +35 -35
  157. package/src/programmers/internal/check_bigint.ts +110 -110
  158. package/src/programmers/internal/check_custom.ts +31 -31
  159. package/src/programmers/internal/check_dynamic_properties.ts +194 -195
  160. package/src/programmers/internal/check_everything.ts +28 -28
  161. package/src/programmers/internal/check_native.ts +21 -21
  162. package/src/programmers/internal/check_object.ts +55 -55
  163. package/src/programmers/internal/check_string.ts +25 -25
  164. package/src/programmers/internal/check_string_tags.ts +67 -67
  165. package/src/programmers/internal/check_template.ts +56 -56
  166. package/src/programmers/internal/check_union_array_like.ts +329 -329
  167. package/src/programmers/internal/decode_union_object.ts +73 -73
  168. package/src/programmers/internal/feature_object_entries.ts +63 -63
  169. package/src/programmers/internal/get_comment_tags.ts +23 -23
  170. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  171. package/src/programmers/internal/prune_object_properties.ts +60 -60
  172. package/src/programmers/internal/random_custom.ts +29 -29
  173. package/src/programmers/internal/stringify_dynamic_properties.ts +171 -171
  174. package/src/programmers/internal/stringify_native.ts +7 -7
  175. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  176. package/src/programmers/internal/template_to_pattern.ts +15 -15
  177. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  178. package/src/schemas/IJsonApplication.ts +8 -8
  179. package/src/schemas/IJsonComponents.ts +33 -33
  180. package/src/schemas/IJsonSchema.ts +133 -133
  181. package/src/transform.ts +27 -27
  182. package/src/transformers/CallExpressionTransformer.ts +179 -179
  183. package/src/transformers/FileTransformer.ts +47 -47
  184. package/src/transformers/IProject.ts +11 -11
  185. package/src/transformers/ITransformOptions.ts +62 -62
  186. package/src/transformers/ImportTransformer.ts +66 -66
  187. package/src/transformers/NodeTransformer.ts +13 -13
  188. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +112 -112
  189. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  190. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  191. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  192. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  193. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  194. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  195. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  196. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  197. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  198. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +39 -39
  199. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  200. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  201. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  202. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  203. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +28 -28
  204. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +53 -53
  205. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  206. package/src/transformers/features/miscellaneous/RandomTransformer.ts +42 -42
  207. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  208. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  209. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  210. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  211. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  212. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  213. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  214. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  215. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  216. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +12 -12
  217. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  218. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  219. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +12 -12
  220. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  221. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  222. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  223. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  224. package/src/transformers/features/validators/CreateAssertTransformer.ts +13 -13
  225. package/src/transformers/features/validators/CreateIsTransformer.ts +11 -11
  226. package/src/transformers/features/validators/CreateValidateTransformer.ts +13 -13
  227. package/src/transformers/features/validators/IsTransformer.ts +11 -11
  228. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
  229. package/src/transformers/internal/GenericTransformer.ts +97 -97
  230. package/src/typings/Atomic.ts +17 -17
  231. package/src/typings/ClassProperties.ts +5 -5
  232. package/src/typings/Customizable.ts +5 -5
  233. package/src/typings/OmitNever.ts +3 -3
  234. package/src/typings/SpecialFields.ts +3 -3
  235. package/src/typings/Writable.ts +11 -11
  236. package/src/utils/ArrayUtil.ts +45 -45
  237. package/src/utils/Escaper.ts +46 -46
  238. package/src/utils/MapUtil.ts +12 -12
  239. package/src/utils/PatternUtil.ts +33 -33
  240. package/src/utils/RandomGenerator.ts +81 -81
  241. package/src/utils/Singleton.ts +17 -17
@@ -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,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,81 +1,81 @@
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 ??= 0;
78
- max ??= Date.now() * 2;
79
- return new Date(number(min, max)).toISOString();
80
- };
81
- }
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 ??= 0;
78
+ max ??= Date.now() * 2;
79
+ return new Date(number(min, max)).toISOString();
80
+ };
81
+ }
@@ -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 = {};