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.
Files changed (116) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +153 -153
  3. package/lib/factories/ProtobufFactory.js +1 -1
  4. package/lib/factories/ProtobufFactory.mjs +1 -1
  5. package/lib/programmers/internal/json_schema_station.d.mts +2 -2
  6. package/lib/programmers/internal/json_schema_station.d.ts +2 -2
  7. package/lib/programmers/llm/LlmApplicationProgrammer.js +5 -1
  8. package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
  9. package/lib/programmers/llm/LlmApplicationProgrammer.mjs +5 -1
  10. package/lib/programmers/llm/LlmSchemaProgrammer.js +1 -4
  11. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -1
  12. package/lib/programmers/llm/LlmSchemaProgrammer.mjs +1 -35
  13. package/package.json +121 -121
  14. package/src/AssertionGuard.ts +41 -41
  15. package/src/CamelCase.ts +75 -75
  16. package/src/IRandomGenerator.ts +337 -337
  17. package/src/IReadableURLSearchParams.ts +9 -9
  18. package/src/PascalCase.ts +71 -71
  19. package/src/Primitive.ts +90 -90
  20. package/src/Resolved.ts +72 -72
  21. package/src/SnakeCase.ts +127 -127
  22. package/src/TypeGuardError.ts +216 -216
  23. package/src/factories/MetadataCollection.ts +270 -270
  24. package/src/factories/MetadataCommentTagFactory.ts +632 -632
  25. package/src/factories/MetadataFactory.ts +402 -402
  26. package/src/factories/ProtobufFactory.ts +873 -873
  27. package/src/functional.ts +705 -705
  28. package/src/http.ts +972 -972
  29. package/src/internal/_ProtobufReader.ts +188 -188
  30. package/src/internal/_ProtobufSizer.ts +137 -137
  31. package/src/internal/_ProtobufWriter.ts +135 -135
  32. package/src/internal/_jsonStringifyString.ts +42 -42
  33. package/src/json.ts +643 -643
  34. package/src/llm.ts +615 -615
  35. package/src/misc.ts +594 -594
  36. package/src/module.ts +889 -889
  37. package/src/notations.ts +751 -751
  38. package/src/programmers/FeatureProgrammer.ts +605 -605
  39. package/src/programmers/ImportProgrammer.ts +179 -179
  40. package/src/programmers/RandomProgrammer.ts +1195 -1195
  41. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  42. package/src/programmers/internal/check_array_length.ts +43 -43
  43. package/src/programmers/internal/check_bigint.ts +46 -46
  44. package/src/programmers/internal/check_dynamic_key.ts +197 -197
  45. package/src/programmers/internal/check_dynamic_properties.ts +231 -231
  46. package/src/programmers/internal/check_everything.ts +21 -21
  47. package/src/programmers/internal/check_native.ts +23 -23
  48. package/src/programmers/internal/check_number.ts +108 -108
  49. package/src/programmers/internal/check_object.ts +72 -72
  50. package/src/programmers/internal/check_string.ts +46 -46
  51. package/src/programmers/internal/check_template.ts +46 -46
  52. package/src/programmers/internal/check_union_array_like.ts +331 -331
  53. package/src/programmers/internal/decode_union_object.ts +110 -110
  54. package/src/programmers/internal/feature_object_entries.ts +59 -59
  55. package/src/programmers/internal/json_schema_escaped.ts +78 -78
  56. package/src/programmers/internal/json_schema_object.ts +150 -150
  57. package/src/programmers/internal/json_schema_station.ts +2 -2
  58. package/src/programmers/internal/metadata_to_pattern.ts +40 -40
  59. package/src/programmers/internal/postfix_of_tuple.ts +3 -3
  60. package/src/programmers/internal/prune_object_properties.ts +69 -69
  61. package/src/programmers/internal/stringify_dynamic_properties.ts +158 -158
  62. package/src/programmers/internal/stringify_native.ts +5 -5
  63. package/src/programmers/internal/stringify_regular_properties.ts +77 -77
  64. package/src/programmers/internal/template_to_pattern.ts +21 -21
  65. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +21 -21
  66. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  67. package/src/programmers/llm/LlmApplicationProgrammer.ts +10 -1
  68. package/src/programmers/llm/LlmSchemaProgrammer.ts +2 -7
  69. package/src/protobuf.ts +820 -820
  70. package/src/reflect.ts +46 -46
  71. package/src/schemas/json/IJsonApplication.ts +77 -77
  72. package/src/schemas/json/IJsonSchemaCollection.ts +212 -212
  73. package/src/schemas/json/IJsonSchemaUnit.ts +263 -263
  74. package/src/schemas/metadata/IMetadataTypeTag.ts +14 -14
  75. package/src/schemas/metadata/Metadata.ts +669 -669
  76. package/src/schemas/metadata/MetadataAliasType.ts +57 -57
  77. package/src/schemas/metadata/MetadataApplication.ts +40 -40
  78. package/src/schemas/metadata/MetadataArray.ts +47 -47
  79. package/src/schemas/metadata/MetadataArrayType.ts +51 -51
  80. package/src/schemas/metadata/MetadataAtomic.ts +85 -85
  81. package/src/schemas/metadata/MetadataEscaped.ts +45 -45
  82. package/src/schemas/metadata/MetadataFunction.ts +45 -45
  83. package/src/schemas/metadata/MetadataObject.ts +46 -46
  84. package/src/schemas/metadata/MetadataObjectType.ts +137 -137
  85. package/src/schemas/metadata/MetadataParameter.ts +52 -52
  86. package/src/schemas/metadata/MetadataProperty.ts +53 -53
  87. package/src/schemas/metadata/MetadataTemplate.ts +78 -78
  88. package/src/schemas/metadata/MetadataTuple.ts +28 -28
  89. package/src/schemas/metadata/MetadataTupleType.ts +61 -61
  90. package/src/tags/Constant.ts +47 -47
  91. package/src/tags/ContentMediaType.ts +27 -27
  92. package/src/tags/Default.ts +52 -52
  93. package/src/tags/Example.ts +56 -56
  94. package/src/tags/Examples.ts +56 -56
  95. package/src/tags/ExclusiveMaximum.ts +44 -44
  96. package/src/tags/ExclusiveMinimum.ts +44 -44
  97. package/src/tags/Format.ts +78 -78
  98. package/src/tags/JsonSchemaPlugin.ts +36 -36
  99. package/src/tags/MaxItems.ts +31 -31
  100. package/src/tags/MaxLength.ts +25 -25
  101. package/src/tags/Maximum.ts +39 -39
  102. package/src/tags/MinItems.ts +31 -31
  103. package/src/tags/MinLength.ts +25 -25
  104. package/src/tags/Minimum.ts +39 -39
  105. package/src/tags/MultipleOf.ts +42 -42
  106. package/src/tags/Pattern.ts +49 -49
  107. package/src/tags/Sequence.ts +37 -37
  108. package/src/tags/TagBase.ts +102 -102
  109. package/src/tags/Type.ts +64 -64
  110. package/src/tags/UniqueItems.ts +34 -34
  111. package/src/tags/internal/FormatCheatSheet.ts +71 -71
  112. package/src/transformers/ITransformOptions.ts +70 -70
  113. package/src/transformers/ImportTransformer.ts +253 -253
  114. package/src/transformers/NoTransformConfigurationError.ts +16 -16
  115. package/src/transformers/features/llm/LlmApplicationTransformer.ts +224 -224
  116. package/src/typings/Equal.ts +18 -18
@@ -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
+ }