typia 9.7.2 → 10.0.0-dev.20251107
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.
- package/LICENSE +21 -21
- package/README.md +153 -153
- package/lib/factories/ProtobufFactory.js +1 -1
- package/lib/factories/ProtobufFactory.mjs +1 -1
- package/lib/programmers/internal/json_schema_station.d.mts +2 -2
- package/lib/programmers/internal/json_schema_station.d.ts +2 -2
- package/lib/programmers/llm/LlmApplicationProgrammer.js +5 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.mjs +5 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -4
- package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmSchemaProgrammer.mjs +1 -35
- package/package.json +121 -121
- package/src/AssertionGuard.ts +41 -41
- package/src/CamelCase.ts +75 -75
- package/src/IRandomGenerator.ts +337 -337
- package/src/IReadableURLSearchParams.ts +9 -9
- package/src/PascalCase.ts +71 -71
- package/src/Primitive.ts +90 -90
- package/src/Resolved.ts +72 -72
- package/src/SnakeCase.ts +127 -127
- package/src/TypeGuardError.ts +216 -216
- package/src/factories/MetadataCollection.ts +270 -270
- package/src/factories/MetadataCommentTagFactory.ts +632 -632
- package/src/factories/MetadataFactory.ts +402 -402
- package/src/factories/ProtobufFactory.ts +873 -873
- package/src/functional.ts +705 -705
- package/src/http.ts +972 -972
- package/src/internal/_ProtobufReader.ts +188 -188
- package/src/internal/_ProtobufSizer.ts +137 -137
- package/src/internal/_ProtobufWriter.ts +135 -135
- package/src/internal/_jsonStringifyString.ts +42 -42
- package/src/json.ts +643 -643
- package/src/llm.ts +615 -615
- package/src/misc.ts +594 -594
- package/src/module.ts +889 -889
- package/src/notations.ts +751 -751
- package/src/programmers/FeatureProgrammer.ts +605 -605
- package/src/programmers/ImportProgrammer.ts +179 -179
- package/src/programmers/RandomProgrammer.ts +1195 -1195
- package/src/programmers/helpers/ProtobufWire.ts +34 -34
- package/src/programmers/internal/check_array_length.ts +43 -43
- package/src/programmers/internal/check_bigint.ts +46 -46
- package/src/programmers/internal/check_dynamic_key.ts +197 -197
- package/src/programmers/internal/check_dynamic_properties.ts +231 -231
- package/src/programmers/internal/check_everything.ts +21 -21
- package/src/programmers/internal/check_native.ts +23 -23
- package/src/programmers/internal/check_number.ts +108 -108
- package/src/programmers/internal/check_object.ts +72 -72
- package/src/programmers/internal/check_string.ts +46 -46
- package/src/programmers/internal/check_template.ts +46 -46
- package/src/programmers/internal/check_union_array_like.ts +331 -331
- package/src/programmers/internal/decode_union_object.ts +110 -110
- package/src/programmers/internal/feature_object_entries.ts +59 -59
- package/src/programmers/internal/json_schema_escaped.ts +78 -78
- package/src/programmers/internal/json_schema_object.ts +150 -150
- package/src/programmers/internal/json_schema_station.ts +2 -2
- package/src/programmers/internal/metadata_to_pattern.ts +40 -40
- package/src/programmers/internal/postfix_of_tuple.ts +3 -3
- package/src/programmers/internal/prune_object_properties.ts +69 -69
- package/src/programmers/internal/stringify_dynamic_properties.ts +158 -158
- package/src/programmers/internal/stringify_native.ts +5 -5
- package/src/programmers/internal/stringify_regular_properties.ts +77 -77
- package/src/programmers/internal/template_to_pattern.ts +21 -21
- package/src/programmers/internal/wrap_metadata_rest_tuple.ts +21 -21
- package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
- package/src/programmers/llm/LlmApplicationProgrammer.ts +10 -1
- package/src/programmers/llm/LlmSchemaProgrammer.ts +2 -7
- package/src/protobuf.ts +820 -820
- package/src/reflect.ts +46 -46
- package/src/schemas/json/IJsonApplication.ts +77 -77
- package/src/schemas/json/IJsonSchemaCollection.ts +212 -212
- package/src/schemas/json/IJsonSchemaUnit.ts +263 -263
- package/src/schemas/metadata/IMetadataTypeTag.ts +14 -14
- package/src/schemas/metadata/Metadata.ts +669 -669
- package/src/schemas/metadata/MetadataAliasType.ts +57 -57
- package/src/schemas/metadata/MetadataApplication.ts +40 -40
- package/src/schemas/metadata/MetadataArray.ts +47 -47
- package/src/schemas/metadata/MetadataArrayType.ts +51 -51
- package/src/schemas/metadata/MetadataAtomic.ts +85 -85
- package/src/schemas/metadata/MetadataEscaped.ts +45 -45
- package/src/schemas/metadata/MetadataFunction.ts +45 -45
- package/src/schemas/metadata/MetadataObject.ts +46 -46
- package/src/schemas/metadata/MetadataObjectType.ts +137 -137
- package/src/schemas/metadata/MetadataParameter.ts +52 -52
- package/src/schemas/metadata/MetadataProperty.ts +53 -53
- package/src/schemas/metadata/MetadataTemplate.ts +78 -78
- package/src/schemas/metadata/MetadataTuple.ts +28 -28
- package/src/schemas/metadata/MetadataTupleType.ts +61 -61
- package/src/tags/Constant.ts +47 -47
- package/src/tags/ContentMediaType.ts +27 -27
- package/src/tags/Default.ts +52 -52
- package/src/tags/Example.ts +56 -56
- package/src/tags/Examples.ts +56 -56
- package/src/tags/ExclusiveMaximum.ts +44 -44
- package/src/tags/ExclusiveMinimum.ts +44 -44
- package/src/tags/Format.ts +78 -78
- package/src/tags/JsonSchemaPlugin.ts +36 -36
- package/src/tags/MaxItems.ts +31 -31
- package/src/tags/MaxLength.ts +25 -25
- package/src/tags/Maximum.ts +39 -39
- package/src/tags/MinItems.ts +31 -31
- package/src/tags/MinLength.ts +25 -25
- package/src/tags/Minimum.ts +39 -39
- package/src/tags/MultipleOf.ts +42 -42
- package/src/tags/Pattern.ts +49 -49
- package/src/tags/Sequence.ts +37 -37
- package/src/tags/TagBase.ts +102 -102
- package/src/tags/Type.ts +64 -64
- package/src/tags/UniqueItems.ts +34 -34
- package/src/tags/internal/FormatCheatSheet.ts +71 -71
- package/src/transformers/ITransformOptions.ts +70 -70
- package/src/transformers/ImportTransformer.ts +253 -253
- package/src/transformers/NoTransformConfigurationError.ts +16 -16
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +224 -224
- package/src/typings/Equal.ts +18 -18
package/src/IRandomGenerator.ts
CHANGED
|
@@ -1,337 +1,337 @@
|
|
|
1
|
-
import { OpenApi } from "@samchon/openapi";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Interface for generating random values for various data types.
|
|
5
|
-
*
|
|
6
|
-
* `IRandomGenerator` defines the contract for generating random values that can
|
|
7
|
-
* be used by typia for creating mock data, testing scenarios, and random value
|
|
8
|
-
* generation based on JSON schema constraints.
|
|
9
|
-
*
|
|
10
|
-
* This interface supports generating random values for:
|
|
11
|
-
*
|
|
12
|
-
* - Basic types (boolean, number, integer, bigint, string, array)
|
|
13
|
-
* - String format patterns (email, URL, UUID, etc.)
|
|
14
|
-
* - Date and time formats
|
|
15
|
-
* - Various address and identifier formats
|
|
16
|
-
*
|
|
17
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* const generator: IRandomGenerator = {
|
|
21
|
-
* boolean: () => Math.random() > 0.5,
|
|
22
|
-
* number: (schema) => Math.random() * (schema.maximum ?? 100),
|
|
23
|
-
* string: (schema) => "example-string",
|
|
24
|
-
* email: () => "test@example.com",
|
|
25
|
-
* // ... implement other methods
|
|
26
|
-
* };
|
|
27
|
-
* ```;
|
|
28
|
-
*/
|
|
29
|
-
export interface IRandomGenerator {
|
|
30
|
-
// REGULAR DATA TYPES
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Generates a random boolean value.
|
|
34
|
-
*
|
|
35
|
-
* @returns Random boolean value or undefined
|
|
36
|
-
*/
|
|
37
|
-
boolean(): boolean | undefined;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Generates a random number based on JSON schema constraints.
|
|
41
|
-
*
|
|
42
|
-
* @param schema JSON schema with number constraints (min, max, etc.)
|
|
43
|
-
* @returns Random number within the specified constraints
|
|
44
|
-
*/
|
|
45
|
-
number(schema: OpenApi.IJsonSchema.INumber): number;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Generates a random integer based on JSON schema constraints.
|
|
49
|
-
*
|
|
50
|
-
* @param schema JSON schema with integer constraints (min, max, etc.)
|
|
51
|
-
* @returns Random integer within the specified constraints
|
|
52
|
-
*/
|
|
53
|
-
integer(schema: OpenApi.IJsonSchema.IInteger): number;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Generates a random bigint based on JSON schema constraints.
|
|
57
|
-
*
|
|
58
|
-
* @param schema JSON schema with integer constraints (min, max, etc.)
|
|
59
|
-
* @returns Random bigint within the specified constraints
|
|
60
|
-
*/
|
|
61
|
-
bigint(schema: OpenApi.IJsonSchema.IInteger): bigint;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Generates a random string based on JSON schema constraints.
|
|
65
|
-
*
|
|
66
|
-
* @param schema JSON schema with string constraints (minLength, maxLength,
|
|
67
|
-
* pattern, etc.)
|
|
68
|
-
* @returns Random string matching the specified constraints
|
|
69
|
-
*/
|
|
70
|
-
string(schema: OpenApi.IJsonSchema.IString): string;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Generates a random array with elements created by the provided generator
|
|
74
|
-
* function.
|
|
75
|
-
*
|
|
76
|
-
* @param schema Array schema with element generator function
|
|
77
|
-
* @returns Random array with generated elements
|
|
78
|
-
*/
|
|
79
|
-
array<T>(
|
|
80
|
-
schema: Omit<OpenApi.IJsonSchema.IArray, "items"> & {
|
|
81
|
-
element: (index: number, count: number) => T;
|
|
82
|
-
},
|
|
83
|
-
): T[];
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Generates a random string matching the given regular expression pattern.
|
|
87
|
-
*
|
|
88
|
-
* @param regex Regular expression pattern to match
|
|
89
|
-
* @returns Random string matching the pattern
|
|
90
|
-
*/
|
|
91
|
-
pattern(regex: RegExp): string;
|
|
92
|
-
|
|
93
|
-
//----
|
|
94
|
-
// STRING FORMATS
|
|
95
|
-
//----
|
|
96
|
-
|
|
97
|
-
// SPECIAL CHARACTER FORMATS
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Generates a random base64-encoded byte string.
|
|
101
|
-
*
|
|
102
|
-
* @returns Random base64 string
|
|
103
|
-
*/
|
|
104
|
-
byte(): string;
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Generates a random password string.
|
|
108
|
-
*
|
|
109
|
-
* @returns Random password
|
|
110
|
-
*/
|
|
111
|
-
password(): string;
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Generates a random regular expression pattern string.
|
|
115
|
-
*
|
|
116
|
-
* @returns Random regex pattern
|
|
117
|
-
*/
|
|
118
|
-
regex(): string;
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Generates a random UUID (Universally Unique Identifier).
|
|
122
|
-
*
|
|
123
|
-
* @returns Random UUID string in standard format
|
|
124
|
-
*/
|
|
125
|
-
uuid(): string;
|
|
126
|
-
|
|
127
|
-
// ADDRESS AND IDENTIFIER FORMATS
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Generates a random email address.
|
|
131
|
-
*
|
|
132
|
-
* @returns Random email address
|
|
133
|
-
*/
|
|
134
|
-
email(): string;
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Generates a random hostname.
|
|
138
|
-
*
|
|
139
|
-
* @returns Random hostname
|
|
140
|
-
*/
|
|
141
|
-
hostname(): string;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Generates a random internationalized email address.
|
|
145
|
-
*
|
|
146
|
-
* @returns Random IDN email address
|
|
147
|
-
*/
|
|
148
|
-
idnEmail(): string;
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Generates a random internationalized hostname.
|
|
152
|
-
*
|
|
153
|
-
* @returns Random IDN hostname
|
|
154
|
-
*/
|
|
155
|
-
idnHostname(): string;
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Generates a random IRI (Internationalized Resource Identifier).
|
|
159
|
-
*
|
|
160
|
-
* @returns Random IRI
|
|
161
|
-
*/
|
|
162
|
-
iri(): string;
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Generates a random IRI reference.
|
|
166
|
-
*
|
|
167
|
-
* @returns Random IRI reference
|
|
168
|
-
*/
|
|
169
|
-
iriReference(): string;
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Generates a random IPv4 address.
|
|
173
|
-
*
|
|
174
|
-
* @returns Random IPv4 address
|
|
175
|
-
*/
|
|
176
|
-
ipv4(): string;
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Generates a random IPv6 address.
|
|
180
|
-
*
|
|
181
|
-
* @returns Random IPv6 address
|
|
182
|
-
*/
|
|
183
|
-
ipv6(): string;
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Generates a random URI (Uniform Resource Identifier).
|
|
187
|
-
*
|
|
188
|
-
* @returns Random URI
|
|
189
|
-
*/
|
|
190
|
-
uri(): string;
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Generates a random URI reference.
|
|
194
|
-
*
|
|
195
|
-
* @returns Random URI reference
|
|
196
|
-
*/
|
|
197
|
-
uriReference(): string;
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Generates a random URI template.
|
|
201
|
-
*
|
|
202
|
-
* @returns Random URI template
|
|
203
|
-
*/
|
|
204
|
-
uriTemplate(): string;
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Generates a random URL (Uniform Resource Locator).
|
|
208
|
-
*
|
|
209
|
-
* @returns Random URL
|
|
210
|
-
*/
|
|
211
|
-
url(): string;
|
|
212
|
-
|
|
213
|
-
// DATE AND TIME FORMATS
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Generates a random datetime string in ISO 8601 format.
|
|
217
|
-
*
|
|
218
|
-
* @param props Optional constraints for minimum and maximum timestamp values
|
|
219
|
-
* @returns Random datetime string
|
|
220
|
-
*/
|
|
221
|
-
datetime(props?: { minimum?: number; maximum?: number }): string;
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Generates a random date string in ISO 8601 format (YYYY-MM-DD).
|
|
225
|
-
*
|
|
226
|
-
* @param props Optional constraints for minimum and maximum timestamp values
|
|
227
|
-
* @returns Random date string
|
|
228
|
-
*/
|
|
229
|
-
date(props?: { minimum?: number; maximum?: number }): string;
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Generates a random time string in ISO 8601 format (HH:MM:SS).
|
|
233
|
-
*
|
|
234
|
-
* @returns Random time string
|
|
235
|
-
*/
|
|
236
|
-
time(): string;
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Generates a random duration string in ISO 8601 format.
|
|
240
|
-
*
|
|
241
|
-
* @returns Random duration string
|
|
242
|
-
*/
|
|
243
|
-
duration(): string;
|
|
244
|
-
|
|
245
|
-
// JSON POINTER FORMATS
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Generates a random JSON pointer string.
|
|
249
|
-
*
|
|
250
|
-
* @returns Random JSON pointer
|
|
251
|
-
*/
|
|
252
|
-
jsonPointer(): string;
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Generates a random relative JSON pointer string.
|
|
256
|
-
*
|
|
257
|
-
* @returns Random relative JSON pointer
|
|
258
|
-
*/
|
|
259
|
-
relativeJsonPointer(): string;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
export namespace IRandomGenerator {
|
|
263
|
-
/**
|
|
264
|
-
* Map of custom generators for different data types.
|
|
265
|
-
*
|
|
266
|
-
* This interface allows customization of random generation for specific types
|
|
267
|
-
* when they have certain schema properties or constraints.
|
|
268
|
-
*
|
|
269
|
-
* @example
|
|
270
|
-
* ```typescript
|
|
271
|
-
* const generator: Partial<IRandomGenerator> = {
|
|
272
|
-
* string: (schema) => {
|
|
273
|
-
* if ((schema as any)["x-typia-monetary"] === "dollar") {
|
|
274
|
-
* return "$" + Math.floor(Math.random() * 1000);
|
|
275
|
-
* }
|
|
276
|
-
* return "default-string";
|
|
277
|
-
* },
|
|
278
|
-
* number: (schema) => {
|
|
279
|
-
* if ((schema as any)["x-typia-powerOf"] !== undefined) {
|
|
280
|
-
* const powerOf = (schema as any)["x-typia-powerOf"];
|
|
281
|
-
* return Math.pow(powerOf, Math.random() * 10 + 1);
|
|
282
|
-
* }
|
|
283
|
-
* return Math.random() * 100;
|
|
284
|
-
* }
|
|
285
|
-
* };
|
|
286
|
-
* ```;
|
|
287
|
-
*/
|
|
288
|
-
export interface CustomMap {
|
|
289
|
-
/**
|
|
290
|
-
* Custom string generator that can handle special string formats based on
|
|
291
|
-
* schema properties.
|
|
292
|
-
*/
|
|
293
|
-
string?: (
|
|
294
|
-
schema: OpenApi.IJsonSchema.IString & Record<string, any>,
|
|
295
|
-
) => string;
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Custom number generator that can handle special number constraints based
|
|
299
|
-
* on schema properties.
|
|
300
|
-
*/
|
|
301
|
-
number?: (
|
|
302
|
-
schema: OpenApi.IJsonSchema.INumber & Record<string, any>,
|
|
303
|
-
) => number;
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Custom integer generator that can handle special integer constraints
|
|
307
|
-
* based on schema properties.
|
|
308
|
-
*/
|
|
309
|
-
integer?: (
|
|
310
|
-
schema: OpenApi.IJsonSchema.IInteger & Record<string, any>,
|
|
311
|
-
) => number;
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Custom bigint generator that can handle special bigint constraints based
|
|
315
|
-
* on schema properties.
|
|
316
|
-
*/
|
|
317
|
-
bigint?: (
|
|
318
|
-
schema: OpenApi.IJsonSchema.IInteger & Record<string, any>,
|
|
319
|
-
) => bigint;
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Custom boolean generator that can handle special boolean constraints
|
|
323
|
-
* based on schema properties.
|
|
324
|
-
*/
|
|
325
|
-
boolean?: (schema: Record<string, any>) => boolean | undefined;
|
|
326
|
-
|
|
327
|
-
/**
|
|
328
|
-
* Custom array generator that can handle special array constraints based on
|
|
329
|
-
* schema properties.
|
|
330
|
-
*/
|
|
331
|
-
array?: <T>(
|
|
332
|
-
schema: Omit<OpenApi.IJsonSchema.IArray, "items"> & {
|
|
333
|
-
element: (index: number, count: number) => T;
|
|
334
|
-
} & Record<string, any>,
|
|
335
|
-
) => T[];
|
|
336
|
-
}
|
|
337
|
-
}
|
|
1
|
+
import { OpenApi } from "@samchon/openapi";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interface for generating random values for various data types.
|
|
5
|
+
*
|
|
6
|
+
* `IRandomGenerator` defines the contract for generating random values that can
|
|
7
|
+
* be used by typia for creating mock data, testing scenarios, and random value
|
|
8
|
+
* generation based on JSON schema constraints.
|
|
9
|
+
*
|
|
10
|
+
* This interface supports generating random values for:
|
|
11
|
+
*
|
|
12
|
+
* - Basic types (boolean, number, integer, bigint, string, array)
|
|
13
|
+
* - String format patterns (email, URL, UUID, etc.)
|
|
14
|
+
* - Date and time formats
|
|
15
|
+
* - Various address and identifier formats
|
|
16
|
+
*
|
|
17
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const generator: IRandomGenerator = {
|
|
21
|
+
* boolean: () => Math.random() > 0.5,
|
|
22
|
+
* number: (schema) => Math.random() * (schema.maximum ?? 100),
|
|
23
|
+
* string: (schema) => "example-string",
|
|
24
|
+
* email: () => "test@example.com",
|
|
25
|
+
* // ... implement other methods
|
|
26
|
+
* };
|
|
27
|
+
* ```;
|
|
28
|
+
*/
|
|
29
|
+
export interface IRandomGenerator {
|
|
30
|
+
// REGULAR DATA TYPES
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Generates a random boolean value.
|
|
34
|
+
*
|
|
35
|
+
* @returns Random boolean value or undefined
|
|
36
|
+
*/
|
|
37
|
+
boolean(): boolean | undefined;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Generates a random number based on JSON schema constraints.
|
|
41
|
+
*
|
|
42
|
+
* @param schema JSON schema with number constraints (min, max, etc.)
|
|
43
|
+
* @returns Random number within the specified constraints
|
|
44
|
+
*/
|
|
45
|
+
number(schema: OpenApi.IJsonSchema.INumber): number;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Generates a random integer based on JSON schema constraints.
|
|
49
|
+
*
|
|
50
|
+
* @param schema JSON schema with integer constraints (min, max, etc.)
|
|
51
|
+
* @returns Random integer within the specified constraints
|
|
52
|
+
*/
|
|
53
|
+
integer(schema: OpenApi.IJsonSchema.IInteger): number;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Generates a random bigint based on JSON schema constraints.
|
|
57
|
+
*
|
|
58
|
+
* @param schema JSON schema with integer constraints (min, max, etc.)
|
|
59
|
+
* @returns Random bigint within the specified constraints
|
|
60
|
+
*/
|
|
61
|
+
bigint(schema: OpenApi.IJsonSchema.IInteger): bigint;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Generates a random string based on JSON schema constraints.
|
|
65
|
+
*
|
|
66
|
+
* @param schema JSON schema with string constraints (minLength, maxLength,
|
|
67
|
+
* pattern, etc.)
|
|
68
|
+
* @returns Random string matching the specified constraints
|
|
69
|
+
*/
|
|
70
|
+
string(schema: OpenApi.IJsonSchema.IString): string;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Generates a random array with elements created by the provided generator
|
|
74
|
+
* function.
|
|
75
|
+
*
|
|
76
|
+
* @param schema Array schema with element generator function
|
|
77
|
+
* @returns Random array with generated elements
|
|
78
|
+
*/
|
|
79
|
+
array<T>(
|
|
80
|
+
schema: Omit<OpenApi.IJsonSchema.IArray, "items"> & {
|
|
81
|
+
element: (index: number, count: number) => T;
|
|
82
|
+
},
|
|
83
|
+
): T[];
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Generates a random string matching the given regular expression pattern.
|
|
87
|
+
*
|
|
88
|
+
* @param regex Regular expression pattern to match
|
|
89
|
+
* @returns Random string matching the pattern
|
|
90
|
+
*/
|
|
91
|
+
pattern(regex: RegExp): string;
|
|
92
|
+
|
|
93
|
+
//----
|
|
94
|
+
// STRING FORMATS
|
|
95
|
+
//----
|
|
96
|
+
|
|
97
|
+
// SPECIAL CHARACTER FORMATS
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Generates a random base64-encoded byte string.
|
|
101
|
+
*
|
|
102
|
+
* @returns Random base64 string
|
|
103
|
+
*/
|
|
104
|
+
byte(): string;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Generates a random password string.
|
|
108
|
+
*
|
|
109
|
+
* @returns Random password
|
|
110
|
+
*/
|
|
111
|
+
password(): string;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Generates a random regular expression pattern string.
|
|
115
|
+
*
|
|
116
|
+
* @returns Random regex pattern
|
|
117
|
+
*/
|
|
118
|
+
regex(): string;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Generates a random UUID (Universally Unique Identifier).
|
|
122
|
+
*
|
|
123
|
+
* @returns Random UUID string in standard format
|
|
124
|
+
*/
|
|
125
|
+
uuid(): string;
|
|
126
|
+
|
|
127
|
+
// ADDRESS AND IDENTIFIER FORMATS
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Generates a random email address.
|
|
131
|
+
*
|
|
132
|
+
* @returns Random email address
|
|
133
|
+
*/
|
|
134
|
+
email(): string;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Generates a random hostname.
|
|
138
|
+
*
|
|
139
|
+
* @returns Random hostname
|
|
140
|
+
*/
|
|
141
|
+
hostname(): string;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Generates a random internationalized email address.
|
|
145
|
+
*
|
|
146
|
+
* @returns Random IDN email address
|
|
147
|
+
*/
|
|
148
|
+
idnEmail(): string;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Generates a random internationalized hostname.
|
|
152
|
+
*
|
|
153
|
+
* @returns Random IDN hostname
|
|
154
|
+
*/
|
|
155
|
+
idnHostname(): string;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Generates a random IRI (Internationalized Resource Identifier).
|
|
159
|
+
*
|
|
160
|
+
* @returns Random IRI
|
|
161
|
+
*/
|
|
162
|
+
iri(): string;
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Generates a random IRI reference.
|
|
166
|
+
*
|
|
167
|
+
* @returns Random IRI reference
|
|
168
|
+
*/
|
|
169
|
+
iriReference(): string;
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Generates a random IPv4 address.
|
|
173
|
+
*
|
|
174
|
+
* @returns Random IPv4 address
|
|
175
|
+
*/
|
|
176
|
+
ipv4(): string;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Generates a random IPv6 address.
|
|
180
|
+
*
|
|
181
|
+
* @returns Random IPv6 address
|
|
182
|
+
*/
|
|
183
|
+
ipv6(): string;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Generates a random URI (Uniform Resource Identifier).
|
|
187
|
+
*
|
|
188
|
+
* @returns Random URI
|
|
189
|
+
*/
|
|
190
|
+
uri(): string;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Generates a random URI reference.
|
|
194
|
+
*
|
|
195
|
+
* @returns Random URI reference
|
|
196
|
+
*/
|
|
197
|
+
uriReference(): string;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Generates a random URI template.
|
|
201
|
+
*
|
|
202
|
+
* @returns Random URI template
|
|
203
|
+
*/
|
|
204
|
+
uriTemplate(): string;
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Generates a random URL (Uniform Resource Locator).
|
|
208
|
+
*
|
|
209
|
+
* @returns Random URL
|
|
210
|
+
*/
|
|
211
|
+
url(): string;
|
|
212
|
+
|
|
213
|
+
// DATE AND TIME FORMATS
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Generates a random datetime string in ISO 8601 format.
|
|
217
|
+
*
|
|
218
|
+
* @param props Optional constraints for minimum and maximum timestamp values
|
|
219
|
+
* @returns Random datetime string
|
|
220
|
+
*/
|
|
221
|
+
datetime(props?: { minimum?: number; maximum?: number }): string;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Generates a random date string in ISO 8601 format (YYYY-MM-DD).
|
|
225
|
+
*
|
|
226
|
+
* @param props Optional constraints for minimum and maximum timestamp values
|
|
227
|
+
* @returns Random date string
|
|
228
|
+
*/
|
|
229
|
+
date(props?: { minimum?: number; maximum?: number }): string;
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Generates a random time string in ISO 8601 format (HH:MM:SS).
|
|
233
|
+
*
|
|
234
|
+
* @returns Random time string
|
|
235
|
+
*/
|
|
236
|
+
time(): string;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Generates a random duration string in ISO 8601 format.
|
|
240
|
+
*
|
|
241
|
+
* @returns Random duration string
|
|
242
|
+
*/
|
|
243
|
+
duration(): string;
|
|
244
|
+
|
|
245
|
+
// JSON POINTER FORMATS
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Generates a random JSON pointer string.
|
|
249
|
+
*
|
|
250
|
+
* @returns Random JSON pointer
|
|
251
|
+
*/
|
|
252
|
+
jsonPointer(): string;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Generates a random relative JSON pointer string.
|
|
256
|
+
*
|
|
257
|
+
* @returns Random relative JSON pointer
|
|
258
|
+
*/
|
|
259
|
+
relativeJsonPointer(): string;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export namespace IRandomGenerator {
|
|
263
|
+
/**
|
|
264
|
+
* Map of custom generators for different data types.
|
|
265
|
+
*
|
|
266
|
+
* This interface allows customization of random generation for specific types
|
|
267
|
+
* when they have certain schema properties or constraints.
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```typescript
|
|
271
|
+
* const generator: Partial<IRandomGenerator> = {
|
|
272
|
+
* string: (schema) => {
|
|
273
|
+
* if ((schema as any)["x-typia-monetary"] === "dollar") {
|
|
274
|
+
* return "$" + Math.floor(Math.random() * 1000);
|
|
275
|
+
* }
|
|
276
|
+
* return "default-string";
|
|
277
|
+
* },
|
|
278
|
+
* number: (schema) => {
|
|
279
|
+
* if ((schema as any)["x-typia-powerOf"] !== undefined) {
|
|
280
|
+
* const powerOf = (schema as any)["x-typia-powerOf"];
|
|
281
|
+
* return Math.pow(powerOf, Math.random() * 10 + 1);
|
|
282
|
+
* }
|
|
283
|
+
* return Math.random() * 100;
|
|
284
|
+
* }
|
|
285
|
+
* };
|
|
286
|
+
* ```;
|
|
287
|
+
*/
|
|
288
|
+
export interface CustomMap {
|
|
289
|
+
/**
|
|
290
|
+
* Custom string generator that can handle special string formats based on
|
|
291
|
+
* schema properties.
|
|
292
|
+
*/
|
|
293
|
+
string?: (
|
|
294
|
+
schema: OpenApi.IJsonSchema.IString & Record<string, any>,
|
|
295
|
+
) => string;
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Custom number generator that can handle special number constraints based
|
|
299
|
+
* on schema properties.
|
|
300
|
+
*/
|
|
301
|
+
number?: (
|
|
302
|
+
schema: OpenApi.IJsonSchema.INumber & Record<string, any>,
|
|
303
|
+
) => number;
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Custom integer generator that can handle special integer constraints
|
|
307
|
+
* based on schema properties.
|
|
308
|
+
*/
|
|
309
|
+
integer?: (
|
|
310
|
+
schema: OpenApi.IJsonSchema.IInteger & Record<string, any>,
|
|
311
|
+
) => number;
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Custom bigint generator that can handle special bigint constraints based
|
|
315
|
+
* on schema properties.
|
|
316
|
+
*/
|
|
317
|
+
bigint?: (
|
|
318
|
+
schema: OpenApi.IJsonSchema.IInteger & Record<string, any>,
|
|
319
|
+
) => bigint;
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Custom boolean generator that can handle special boolean constraints
|
|
323
|
+
* based on schema properties.
|
|
324
|
+
*/
|
|
325
|
+
boolean?: (schema: Record<string, any>) => boolean | undefined;
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Custom array generator that can handle special array constraints based on
|
|
329
|
+
* schema properties.
|
|
330
|
+
*/
|
|
331
|
+
array?: <T>(
|
|
332
|
+
schema: Omit<OpenApi.IJsonSchema.IArray, "items"> & {
|
|
333
|
+
element: (index: number, count: number) => T;
|
|
334
|
+
} & Record<string, any>,
|
|
335
|
+
) => T[];
|
|
336
|
+
}
|
|
337
|
+
}
|