typia 7.0.0-dev.20241002 → 7.0.0-dev.20241003
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/lib/factories/JsonMetadataFactory.js +4 -1
- package/lib/factories/JsonMetadataFactory.js.map +1 -1
- package/lib/factories/MetadataCollection.js +2 -2
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataCommentTagFactory.js +284 -205
- package/lib/factories/MetadataCommentTagFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.js +4 -1
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +0 -24
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +9 -6
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +4 -1
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +0 -12
- package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalIsReturnProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalIsReturnProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -1
- package/lib/programmers/helpers/UnionPredicator.js +1 -1
- package/lib/programmers/helpers/UnionPredicator.js.map +1 -1
- package/lib/programmers/http/HttpFormDataProgrammer.js +4 -1
- package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpHeadersProgrammer.js +5 -2
- package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpParameterProgrammer.js +4 -1
- package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpQueryProgrammer.js +4 -1
- package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +4 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js +4 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +4 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.js +24 -17
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
- package/lib/transformers/CallExpressionTransformer.d.ts +4 -1
- package/lib/transformers/CallExpressionTransformer.js +30 -32
- package/lib/transformers/CallExpressionTransformer.js.map +1 -1
- package/lib/transformers/FileTransformer.js +36 -30
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/NodeTransformer.d.ts +4 -1
- package/lib/transformers/NodeTransformer.js +7 -6
- package/lib/transformers/NodeTransformer.js.map +1 -1
- package/lib/transformers/TransformerError.d.ts +4 -1
- package/lib/transformers/TransformerError.js +21 -23
- package/lib/transformers/TransformerError.js.map +1 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/llm/LlmApplicationTransformer.js +4 -1
- package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/llm/LlmSchemaTransformer.js +4 -1
- package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +4 -1
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
- package/lib/transformers/features/reflect/ReflectNameTransformer.js +4 -1
- package/lib/transformers/features/reflect/ReflectNameTransformer.js.map +1 -1
- package/lib/utils/MapUtil.d.ts +1 -1
- package/lib/utils/MapUtil.js +7 -9
- package/lib/utils/MapUtil.js.map +1 -1
- package/lib/utils/NameEncoder.d.ts +2 -2
- package/lib/utils/NameEncoder.js +4 -6
- package/lib/utils/NameEncoder.js.map +1 -1
- package/lib/utils/StringUtil/StringUtil.d.ts +5 -1
- package/lib/utils/StringUtil/StringUtil.js +8 -4
- package/lib/utils/StringUtil/StringUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/factories/JsonMetadataFactory.ts +4 -1
- package/src/factories/MetadataCollection.ts +3 -2
- package/src/factories/MetadataCommentTagFactory.ts +212 -133
- package/src/factories/ProtobufFactory.ts +4 -3
- package/src/programmers/AssertProgrammer.ts +0 -24
- package/src/programmers/CheckerProgrammer.ts +9 -8
- package/src/programmers/RandomProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +0 -12
- package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +4 -3
- package/src/programmers/helpers/UnionPredicator.ts +1 -1
- package/src/programmers/http/HttpFormDataProgrammer.ts +4 -3
- package/src/programmers/http/HttpHeadersProgrammer.ts +5 -4
- package/src/programmers/http/HttpParameterProgrammer.ts +4 -1
- package/src/programmers/http/HttpQueryProgrammer.ts +4 -3
- package/src/programmers/misc/MiscCloneProgrammer.ts +4 -3
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +4 -1
- package/src/programmers/misc/MiscPruneProgrammer.ts +4 -3
- package/src/programmers/notations/NotationGeneralProgrammer.ts +28 -20
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +1 -1
- package/src/transformers/CallExpressionTransformer.ts +36 -36
- package/src/transformers/FileTransformer.ts +42 -32
- package/src/transformers/NodeTransformer.ts +10 -6
- package/src/transformers/TransformerError.ts +26 -27
- package/src/transformers/features/json/JsonApplicationTransformer.ts +4 -1
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +4 -1
- package/src/transformers/features/llm/LlmSchemaTransformer.ts +4 -1
- package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +4 -1
- package/src/transformers/features/reflect/ReflectNameTransformer.ts +4 -1
- package/src/utils/MapUtil.ts +11 -9
- package/src/utils/NameEncoder.ts +4 -4
- package/src/utils/StringUtil/StringUtil.ts +11 -4
- package/lib/functional/$varint.d.ts +0 -6
- package/lib/functional/$varint.js +0 -99
- package/lib/functional/$varint.js.map +0 -1
- package/lib/functional/$zigzag.d.ts +0 -4
- package/lib/functional/$zigzag.js +0 -35
- package/lib/functional/$zigzag.js.map +0 -1
- package/src/functional/$varint.ts +0 -130
- package/src/functional/$zigzag.ts +0 -39
|
@@ -10,8 +10,6 @@ import { MetadataFactory } from "./MetadataFactory";
|
|
|
10
10
|
import { MetadataTypeTagFactory } from "./MetadataTypeTagFactory";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Extremely hard coded, but no reason to maintain.
|
|
14
|
-
*
|
|
15
13
|
* @internal
|
|
16
14
|
*/
|
|
17
15
|
export namespace MetadataCommentTagFactory {
|
|
@@ -116,88 +114,137 @@ export namespace MetadataCommentTagFactory {
|
|
|
116
114
|
const next = PARSER[props.tag.name];
|
|
117
115
|
if (next === undefined) return {};
|
|
118
116
|
|
|
119
|
-
const
|
|
120
|
-
if (
|
|
117
|
+
const value = (props.tag.text || [])[0]?.text;
|
|
118
|
+
if (value === undefined && props.tag.name !== "uniqueItems")
|
|
121
119
|
return props.report(`no comment tag value`);
|
|
122
|
-
return next(
|
|
120
|
+
return next({
|
|
121
|
+
report: props.report,
|
|
122
|
+
value: value!,
|
|
123
|
+
});
|
|
123
124
|
};
|
|
124
125
|
}
|
|
125
126
|
|
|
127
|
+
/**
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
126
130
|
type TagRecord = {
|
|
127
131
|
[P in Target]?: NotDeterminedTypeTag[];
|
|
128
132
|
};
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
129
137
|
type Target = "bigint" | "number" | "string" | "array";
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @internal
|
|
141
|
+
*/
|
|
130
142
|
type NotDeterminedTypeTag = Omit<IMetadataTypeTag, "validate" | "schema"> & {
|
|
131
143
|
validate: string | null;
|
|
132
144
|
schema: object | undefined;
|
|
133
145
|
};
|
|
134
146
|
|
|
147
|
+
/**
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
135
150
|
const PARSER: Record<
|
|
136
151
|
string,
|
|
137
|
-
(report: (msg: string) => null
|
|
152
|
+
(props: { report: (msg: string) => null; value: string }) => {
|
|
138
153
|
[P in Target]?: NotDeterminedTypeTag[];
|
|
139
154
|
}
|
|
140
155
|
> = {
|
|
141
156
|
/* -----------------------------------------------------------
|
|
142
157
|
ARRAY
|
|
143
158
|
----------------------------------------------------------- */
|
|
144
|
-
items: (report
|
|
159
|
+
items: ({ report, value }) => ({
|
|
145
160
|
array: [
|
|
146
161
|
{
|
|
147
|
-
name: `MinItems<${
|
|
162
|
+
name: `MinItems<${value}>`,
|
|
148
163
|
target: "array",
|
|
149
164
|
kind: "minItems",
|
|
150
|
-
value: parse_integer(
|
|
151
|
-
|
|
165
|
+
value: parse_integer({
|
|
166
|
+
report,
|
|
167
|
+
value,
|
|
168
|
+
unsigned: true,
|
|
169
|
+
}),
|
|
170
|
+
validate: `${value} <= $input.length`,
|
|
152
171
|
exclusive: true,
|
|
153
172
|
schema: {
|
|
154
|
-
minItems: parse_integer(
|
|
173
|
+
minItems: parse_integer({
|
|
174
|
+
report,
|
|
175
|
+
value,
|
|
176
|
+
unsigned: true,
|
|
177
|
+
}),
|
|
155
178
|
},
|
|
156
179
|
},
|
|
157
180
|
{
|
|
158
|
-
name: `MaxItems<${
|
|
181
|
+
name: `MaxItems<${value}>`,
|
|
159
182
|
target: "array",
|
|
160
183
|
kind: "maxItems",
|
|
161
|
-
value: parse_integer(
|
|
162
|
-
|
|
184
|
+
value: parse_integer({
|
|
185
|
+
report,
|
|
186
|
+
value,
|
|
187
|
+
unsigned: true,
|
|
188
|
+
}),
|
|
189
|
+
validate: `$input.length <= ${value}`,
|
|
163
190
|
exclusive: true,
|
|
164
191
|
schema: {
|
|
165
|
-
maxItems: parse_integer(
|
|
192
|
+
maxItems: parse_integer({
|
|
193
|
+
report,
|
|
194
|
+
unsigned: true,
|
|
195
|
+
value,
|
|
196
|
+
}),
|
|
166
197
|
},
|
|
167
198
|
},
|
|
168
199
|
],
|
|
169
200
|
}),
|
|
170
|
-
minItems: (report
|
|
201
|
+
minItems: ({ report, value }) => ({
|
|
171
202
|
array: [
|
|
172
203
|
{
|
|
173
|
-
name: `MinItems<${
|
|
204
|
+
name: `MinItems<${value}>`,
|
|
174
205
|
target: "array",
|
|
175
206
|
kind: "minItems",
|
|
176
|
-
value: parse_integer(
|
|
177
|
-
|
|
207
|
+
value: parse_integer({
|
|
208
|
+
report,
|
|
209
|
+
value,
|
|
210
|
+
unsigned: true,
|
|
211
|
+
}),
|
|
212
|
+
validate: `${value} <= $input.length`,
|
|
178
213
|
exclusive: true,
|
|
179
214
|
schema: {
|
|
180
|
-
minItems: parse_integer(
|
|
215
|
+
minItems: parse_integer({
|
|
216
|
+
report,
|
|
217
|
+
value,
|
|
218
|
+
unsigned: true,
|
|
219
|
+
}),
|
|
181
220
|
},
|
|
182
221
|
},
|
|
183
222
|
],
|
|
184
223
|
}),
|
|
185
|
-
maxItems: (report
|
|
224
|
+
maxItems: ({ report, value }) => ({
|
|
186
225
|
array: [
|
|
187
226
|
{
|
|
188
|
-
name: `MaxItems<${
|
|
227
|
+
name: `MaxItems<${value}>`,
|
|
189
228
|
target: "array",
|
|
190
229
|
kind: "maxItems",
|
|
191
|
-
value: parse_integer(
|
|
192
|
-
|
|
230
|
+
value: parse_integer({
|
|
231
|
+
report,
|
|
232
|
+
value,
|
|
233
|
+
unsigned: true,
|
|
234
|
+
}),
|
|
235
|
+
validate: `$input.length <= ${value}`,
|
|
193
236
|
exclusive: true,
|
|
194
237
|
schema: {
|
|
195
|
-
maxItems: parse_integer(
|
|
238
|
+
maxItems: parse_integer({
|
|
239
|
+
report,
|
|
240
|
+
value,
|
|
241
|
+
unsigned: true,
|
|
242
|
+
}),
|
|
196
243
|
},
|
|
197
244
|
},
|
|
198
245
|
],
|
|
199
246
|
}),
|
|
200
|
-
uniqueItems: () => (
|
|
247
|
+
uniqueItems: () => ({
|
|
201
248
|
array: [
|
|
202
249
|
{
|
|
203
250
|
name: `UniqueItems`,
|
|
@@ -216,54 +263,54 @@ const PARSER: Record<
|
|
|
216
263
|
/* -----------------------------------------------------------
|
|
217
264
|
NUMBER
|
|
218
265
|
----------------------------------------------------------- */
|
|
219
|
-
type: (
|
|
266
|
+
type: ({ value }) => {
|
|
220
267
|
// EMENDATIONS
|
|
221
|
-
if (
|
|
222
|
-
|
|
223
|
-
if (
|
|
224
|
-
else if (
|
|
268
|
+
if (value.startsWith("{") && value.endsWith("}"))
|
|
269
|
+
value = value.substring(1, value.length - 1);
|
|
270
|
+
if (value === "int") value = "int32";
|
|
271
|
+
else if (value === "uint") value = "uint32";
|
|
225
272
|
|
|
226
273
|
// MUST BE ONE OF THEM
|
|
227
274
|
if (
|
|
228
275
|
["int32", "uint32", "int64", "uint64", "float", "double"].includes(
|
|
229
|
-
|
|
276
|
+
value,
|
|
230
277
|
) === false
|
|
231
278
|
)
|
|
232
279
|
return {};
|
|
233
280
|
return {
|
|
234
281
|
number: [
|
|
235
282
|
{
|
|
236
|
-
name: `Type<${JSON.stringify(
|
|
283
|
+
name: `Type<${JSON.stringify(value)}>`,
|
|
237
284
|
target: "number",
|
|
238
285
|
kind: "type",
|
|
239
|
-
value:
|
|
286
|
+
value: value,
|
|
240
287
|
validate:
|
|
241
|
-
|
|
288
|
+
value === "int32"
|
|
242
289
|
? `Math.floor($input) === $input && -2147483648 <= $input && $input <= 2147483647`
|
|
243
|
-
:
|
|
290
|
+
: value === "uint32"
|
|
244
291
|
? `Math.floor($input) === $input && 0 <= $input && $input <= 4294967295`
|
|
245
|
-
:
|
|
292
|
+
: value === "int64"
|
|
246
293
|
? `Math.floor($input) === $input && -9223372036854775808 <= $input && $input <= 9223372036854775807`
|
|
247
|
-
:
|
|
294
|
+
: value === "uint64"
|
|
248
295
|
? `Math.floor($input) === $input && 0 <= $input && $input <= 18446744073709551615`
|
|
249
|
-
:
|
|
296
|
+
: value === "float"
|
|
250
297
|
? `-1.175494351e38 <= $input && $input <= 3.4028235e38`
|
|
251
298
|
: `true`,
|
|
252
299
|
exclusive: true,
|
|
253
|
-
schema: ["int32", "uint32", "int64", "uint64"].includes(
|
|
300
|
+
schema: ["int32", "uint32", "int64", "uint64"].includes(value)
|
|
254
301
|
? { type: "integer" }
|
|
255
302
|
: undefined,
|
|
256
303
|
},
|
|
257
304
|
],
|
|
258
305
|
bigint:
|
|
259
|
-
|
|
306
|
+
value === "int64" || "uint64"
|
|
260
307
|
? [
|
|
261
308
|
{
|
|
262
|
-
name: `Type<${JSON.stringify(
|
|
309
|
+
name: `Type<${JSON.stringify(value)}>`,
|
|
263
310
|
target: "bigint",
|
|
264
311
|
kind: "type",
|
|
265
|
-
value:
|
|
266
|
-
validate:
|
|
312
|
+
value: value,
|
|
313
|
+
validate: value === "int64" ? "true" : "BigInt(0) <= $input",
|
|
267
314
|
exclusive: true,
|
|
268
315
|
schema: undefined,
|
|
269
316
|
},
|
|
@@ -271,148 +318,168 @@ const PARSER: Record<
|
|
|
271
318
|
: [],
|
|
272
319
|
};
|
|
273
320
|
},
|
|
274
|
-
minimum: (
|
|
321
|
+
minimum: (props) => ({
|
|
275
322
|
number: [
|
|
276
323
|
{
|
|
277
|
-
name: `Minimum<${
|
|
324
|
+
name: `Minimum<${props.value}>`,
|
|
278
325
|
target: "number",
|
|
279
326
|
kind: "minimum",
|
|
280
|
-
value: parse_number(
|
|
281
|
-
validate: `${
|
|
327
|
+
value: parse_number(props),
|
|
328
|
+
validate: `${props.value} <= $input`,
|
|
282
329
|
exclusive: ["minimum", "exclusiveMinimum"],
|
|
283
330
|
schema: {
|
|
284
|
-
minimum: parse_number(
|
|
331
|
+
minimum: parse_number(props),
|
|
285
332
|
},
|
|
286
333
|
},
|
|
287
334
|
],
|
|
288
335
|
bigint: [
|
|
289
336
|
{
|
|
290
|
-
name: `Minimum<${
|
|
337
|
+
name: `Minimum<${props.value}n>`,
|
|
291
338
|
target: "bigint",
|
|
292
339
|
kind: "minimum",
|
|
293
340
|
value: (() => {
|
|
294
|
-
const
|
|
295
|
-
|
|
341
|
+
const parsed = parse_integer({
|
|
342
|
+
report: props.report,
|
|
343
|
+
value: props.value,
|
|
344
|
+
unsigned: false,
|
|
345
|
+
});
|
|
346
|
+
return parsed === null ? null : BigInt(parsed);
|
|
296
347
|
})(),
|
|
297
|
-
validate: `${
|
|
348
|
+
validate: `${props.value} <= $input`,
|
|
298
349
|
exclusive: ["minimum", "exclusiveMinimum"],
|
|
299
350
|
schema: undefined,
|
|
300
351
|
},
|
|
301
352
|
],
|
|
302
353
|
}),
|
|
303
|
-
maximum: (
|
|
354
|
+
maximum: (props) => ({
|
|
304
355
|
number: [
|
|
305
356
|
{
|
|
306
|
-
name: `Maximum<${
|
|
357
|
+
name: `Maximum<${props.value}>`,
|
|
307
358
|
target: "number",
|
|
308
359
|
kind: "maximum",
|
|
309
|
-
value: parse_number(
|
|
310
|
-
validate: `$input <= ${
|
|
360
|
+
value: parse_number(props),
|
|
361
|
+
validate: `$input <= ${props.value}`,
|
|
311
362
|
exclusive: ["maximum", "exclusiveMaximum"],
|
|
312
363
|
schema: {
|
|
313
|
-
maximum: parse_number(
|
|
364
|
+
maximum: parse_number(props),
|
|
314
365
|
},
|
|
315
366
|
},
|
|
316
367
|
],
|
|
317
368
|
bigint: [
|
|
318
369
|
{
|
|
319
|
-
name: `Maximum<${
|
|
370
|
+
name: `Maximum<${props.value}n>`,
|
|
320
371
|
target: "bigint",
|
|
321
372
|
kind: "maximum",
|
|
322
373
|
value: (() => {
|
|
323
|
-
const
|
|
324
|
-
|
|
374
|
+
const parsed = parse_integer({
|
|
375
|
+
report: props.report,
|
|
376
|
+
value: props.value,
|
|
377
|
+
unsigned: false,
|
|
378
|
+
});
|
|
379
|
+
return parsed === null ? null : BigInt(parsed);
|
|
325
380
|
})(),
|
|
326
|
-
validate: `$input <= ${
|
|
381
|
+
validate: `$input <= ${props.value}`,
|
|
327
382
|
exclusive: ["maximum", "exclusiveMaximum"],
|
|
328
383
|
schema: undefined,
|
|
329
384
|
},
|
|
330
385
|
],
|
|
331
386
|
}),
|
|
332
|
-
exclusiveMinimum: (
|
|
387
|
+
exclusiveMinimum: (props) => ({
|
|
333
388
|
number: [
|
|
334
389
|
{
|
|
335
|
-
name: `ExclusiveMinimum<${
|
|
390
|
+
name: `ExclusiveMinimum<${props.value}>`,
|
|
336
391
|
target: "number",
|
|
337
392
|
kind: "exclusiveMinimum",
|
|
338
|
-
value: parse_number(
|
|
339
|
-
validate: `${
|
|
393
|
+
value: parse_number(props),
|
|
394
|
+
validate: `${props.value} < $input`,
|
|
340
395
|
exclusive: ["minimum", "exclusiveMinimum"],
|
|
341
396
|
schema: {
|
|
342
397
|
exclusiveMinimum: true,
|
|
343
|
-
minimum: parse_number(
|
|
398
|
+
minimum: parse_number(props),
|
|
344
399
|
},
|
|
345
400
|
},
|
|
346
401
|
],
|
|
347
402
|
bigint: [
|
|
348
403
|
{
|
|
349
|
-
name: `ExclusiveMinimum<${
|
|
404
|
+
name: `ExclusiveMinimum<${props.value}n>`,
|
|
350
405
|
target: "bigint",
|
|
351
406
|
kind: "exclusiveMinimum",
|
|
352
407
|
value: (() => {
|
|
353
|
-
const
|
|
354
|
-
|
|
408
|
+
const parsed = parse_integer({
|
|
409
|
+
report: props.report,
|
|
410
|
+
value: props.value,
|
|
411
|
+
unsigned: false,
|
|
412
|
+
});
|
|
413
|
+
return parsed === null ? null : BigInt(parsed);
|
|
355
414
|
})(),
|
|
356
|
-
validate: `${
|
|
415
|
+
validate: `${props.value} < $input`,
|
|
357
416
|
exclusive: ["minimum", "exclusiveMinimum"],
|
|
358
417
|
schema: undefined,
|
|
359
418
|
},
|
|
360
419
|
],
|
|
361
420
|
}),
|
|
362
|
-
exclusiveMaximum: (
|
|
421
|
+
exclusiveMaximum: (props) => ({
|
|
363
422
|
number: [
|
|
364
423
|
{
|
|
365
|
-
name: `ExclusiveMaximum<${
|
|
424
|
+
name: `ExclusiveMaximum<${props.value}>`,
|
|
366
425
|
target: "number",
|
|
367
426
|
kind: "exclusiveMaximum",
|
|
368
|
-
value: parse_number(
|
|
369
|
-
validate: `$input < ${
|
|
427
|
+
value: parse_number(props),
|
|
428
|
+
validate: `$input < ${props.value}`,
|
|
370
429
|
exclusive: ["maximum", "exclusiveMaximum"],
|
|
371
430
|
schema: {
|
|
372
431
|
exclusiveMaximum: true,
|
|
373
|
-
maximum: parse_number(
|
|
432
|
+
maximum: parse_number(props),
|
|
374
433
|
},
|
|
375
434
|
},
|
|
376
435
|
],
|
|
377
436
|
bigint: [
|
|
378
437
|
{
|
|
379
|
-
name: `ExclusiveMaximum<${
|
|
438
|
+
name: `ExclusiveMaximum<${props.value}n>`,
|
|
380
439
|
target: "bigint",
|
|
381
440
|
kind: "exclusiveMaximum",
|
|
382
441
|
value: (() => {
|
|
383
|
-
const
|
|
384
|
-
|
|
442
|
+
const parsed = parse_integer({
|
|
443
|
+
report: props.report,
|
|
444
|
+
value: props.value,
|
|
445
|
+
unsigned: false,
|
|
446
|
+
});
|
|
447
|
+
return parsed === null ? null : BigInt(parsed);
|
|
385
448
|
})(),
|
|
386
|
-
validate: `$input < ${
|
|
449
|
+
validate: `$input < ${props.value}`,
|
|
387
450
|
exclusive: ["maximum", "exclusiveMaximum"],
|
|
388
451
|
schema: undefined,
|
|
389
452
|
},
|
|
390
453
|
],
|
|
391
454
|
}),
|
|
392
|
-
multipleOf: (
|
|
455
|
+
multipleOf: (props) => ({
|
|
393
456
|
number: [
|
|
394
457
|
{
|
|
395
|
-
name: `MultipleOf<${
|
|
458
|
+
name: `MultipleOf<${props.value}>`,
|
|
396
459
|
target: "number",
|
|
397
460
|
kind: "multipleOf",
|
|
398
|
-
value: parse_number(
|
|
399
|
-
validate: `$input % ${
|
|
461
|
+
value: parse_number(props),
|
|
462
|
+
validate: `$input % ${props.value} === 0`,
|
|
400
463
|
exclusive: true,
|
|
401
464
|
schema: {
|
|
402
|
-
multipleOf: parse_number(
|
|
465
|
+
multipleOf: parse_number(props),
|
|
403
466
|
},
|
|
404
467
|
},
|
|
405
468
|
],
|
|
406
469
|
bigint: [
|
|
407
470
|
{
|
|
408
|
-
name: `MultipleOf<${
|
|
471
|
+
name: `MultipleOf<${props.value}n>`,
|
|
409
472
|
target: "bigint",
|
|
410
473
|
kind: "multipleOf",
|
|
411
474
|
value: (() => {
|
|
412
|
-
const
|
|
413
|
-
|
|
475
|
+
const parsed = parse_integer({
|
|
476
|
+
report: props.report,
|
|
477
|
+
value: props.value,
|
|
478
|
+
unsigned: false,
|
|
479
|
+
});
|
|
480
|
+
return parsed === null ? null : BigInt(parsed);
|
|
414
481
|
})(),
|
|
415
|
-
validate: `$input % ${
|
|
482
|
+
validate: `$input % ${props.value}n === 0n`,
|
|
416
483
|
exclusive: true,
|
|
417
484
|
schema: undefined,
|
|
418
485
|
},
|
|
@@ -422,8 +489,8 @@ const PARSER: Record<
|
|
|
422
489
|
/* -----------------------------------------------------------
|
|
423
490
|
STRING
|
|
424
491
|
----------------------------------------------------------- */
|
|
425
|
-
format: (
|
|
426
|
-
const matched = FORMATS.get(
|
|
492
|
+
format: ({ value }) => {
|
|
493
|
+
const matched = FORMATS.get(value);
|
|
427
494
|
if (matched === undefined) return {};
|
|
428
495
|
return {
|
|
429
496
|
string: [
|
|
@@ -441,99 +508,111 @@ const PARSER: Record<
|
|
|
441
508
|
],
|
|
442
509
|
};
|
|
443
510
|
},
|
|
444
|
-
pattern: (
|
|
511
|
+
pattern: ({ value }) => ({
|
|
445
512
|
string: [
|
|
446
513
|
{
|
|
447
|
-
name: `Pattern<${JSON.stringify(
|
|
514
|
+
name: `Pattern<${JSON.stringify(value)}>`,
|
|
448
515
|
target: "string",
|
|
449
516
|
kind: "pattern",
|
|
450
|
-
value:
|
|
451
|
-
validate: `RegExp(${JSON.stringify(
|
|
517
|
+
value: value,
|
|
518
|
+
validate: `RegExp(${JSON.stringify(value)}).test($input)`,
|
|
452
519
|
exclusive: ["format"],
|
|
453
520
|
schema: {
|
|
454
|
-
pattern:
|
|
521
|
+
pattern: value,
|
|
455
522
|
},
|
|
456
523
|
},
|
|
457
524
|
],
|
|
458
525
|
}),
|
|
459
|
-
length: (
|
|
526
|
+
length: (props) => ({
|
|
460
527
|
string: [
|
|
461
528
|
{
|
|
462
|
-
name: `MinLength<${
|
|
529
|
+
name: `MinLength<${props.value}>`,
|
|
463
530
|
target: "string",
|
|
464
531
|
kind: "minLength",
|
|
465
|
-
value: parse_number(
|
|
466
|
-
validate: `${
|
|
532
|
+
value: parse_number(props),
|
|
533
|
+
validate: `${props.value} <= $input.length`,
|
|
467
534
|
exclusive: true,
|
|
468
535
|
schema: {
|
|
469
|
-
minLength: parse_number(
|
|
536
|
+
minLength: parse_number(props),
|
|
470
537
|
},
|
|
471
538
|
},
|
|
472
539
|
{
|
|
473
|
-
name: `MaxLength<${
|
|
540
|
+
name: `MaxLength<${props.value}>`,
|
|
474
541
|
target: "string",
|
|
475
542
|
kind: "maxLength",
|
|
476
|
-
value: parse_number(
|
|
477
|
-
validate: `$input.length <= ${
|
|
543
|
+
value: parse_number(props),
|
|
544
|
+
validate: `$input.length <= ${props.value}`,
|
|
478
545
|
exclusive: true,
|
|
479
546
|
schema: {
|
|
480
|
-
maxLength: parse_number(
|
|
547
|
+
maxLength: parse_number(props),
|
|
481
548
|
},
|
|
482
549
|
},
|
|
483
550
|
],
|
|
484
551
|
}),
|
|
485
|
-
minLength: (report
|
|
552
|
+
minLength: ({ report, value }) => ({
|
|
486
553
|
string: [
|
|
487
554
|
{
|
|
488
|
-
name: `MinLength<${
|
|
555
|
+
name: `MinLength<${value}>`,
|
|
489
556
|
target: "string",
|
|
490
557
|
kind: "minLength",
|
|
491
|
-
value: parse_number(report)
|
|
492
|
-
validate: `${
|
|
558
|
+
value: parse_number({ report, value }),
|
|
559
|
+
validate: `${value} <= $input.length`,
|
|
493
560
|
exclusive: true,
|
|
494
561
|
schema: {
|
|
495
|
-
minLength: parse_number(report)
|
|
562
|
+
minLength: parse_number({ report, value }),
|
|
496
563
|
},
|
|
497
564
|
},
|
|
498
565
|
],
|
|
499
566
|
}),
|
|
500
|
-
maxLength: (report
|
|
567
|
+
maxLength: ({ report, value }) => ({
|
|
501
568
|
string: [
|
|
502
569
|
{
|
|
503
|
-
name: `MaxLength<${
|
|
570
|
+
name: `MaxLength<${value}>`,
|
|
504
571
|
target: "string",
|
|
505
572
|
kind: "maxLength",
|
|
506
|
-
value: parse_number(report)
|
|
507
|
-
validate: `$input.length <= ${
|
|
573
|
+
value: parse_number({ report, value }),
|
|
574
|
+
validate: `$input.length <= ${value}`,
|
|
508
575
|
exclusive: true,
|
|
509
576
|
schema: {
|
|
510
|
-
maxLength: parse_number(report)
|
|
577
|
+
maxLength: parse_number({ report, value }),
|
|
511
578
|
},
|
|
512
579
|
},
|
|
513
580
|
],
|
|
514
581
|
}),
|
|
515
582
|
};
|
|
516
583
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
584
|
+
/**
|
|
585
|
+
* @internal
|
|
586
|
+
*/
|
|
587
|
+
const parse_number = (props: {
|
|
588
|
+
report: (msg: string) => null;
|
|
589
|
+
value: string;
|
|
590
|
+
}): number | null => {
|
|
591
|
+
const parsed: number = Number(props.value);
|
|
592
|
+
if (isNaN(parsed) === true) return props.report(`invalid number`);
|
|
593
|
+
return parsed;
|
|
594
|
+
};
|
|
524
595
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
596
|
+
/**
|
|
597
|
+
* @internal
|
|
598
|
+
*/
|
|
599
|
+
const parse_integer = (props: {
|
|
600
|
+
report: (msg: string) => null;
|
|
601
|
+
unsigned: boolean;
|
|
602
|
+
value: string;
|
|
603
|
+
}): number | null => {
|
|
604
|
+
const parsed: number | null = parse_number(props);
|
|
605
|
+
if (parsed === null) return null;
|
|
606
|
+
else if (Math.floor(parsed) !== parsed)
|
|
607
|
+
return props.report(`invalid integer`);
|
|
608
|
+
else if (props.unsigned === true && parsed < 0)
|
|
609
|
+
return props.report(`invalid unsigned integer`);
|
|
610
|
+
return parsed;
|
|
611
|
+
};
|
|
536
612
|
|
|
613
|
+
/**
|
|
614
|
+
* @internal
|
|
615
|
+
*/
|
|
537
616
|
const FORMATS: Map<string, [string, string]> = new Map([
|
|
538
617
|
...Object.entries(FormatCheatSheet).map(
|
|
539
618
|
([key, value]) => [key, [key, value]] as any,
|
|
@@ -37,9 +37,10 @@ export namespace ProtobufFactory {
|
|
|
37
37
|
},
|
|
38
38
|
});
|
|
39
39
|
if (result.success === false)
|
|
40
|
-
throw TransformerError.from(
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
throw TransformerError.from({
|
|
41
|
+
code: `typia.protobuf.${props.method}`,
|
|
42
|
+
errors: result.errors,
|
|
43
|
+
});
|
|
43
44
|
return result.data;
|
|
44
45
|
};
|
|
45
46
|
|
|
@@ -282,30 +282,6 @@ export namespace AssertProgrammer {
|
|
|
282
282
|
input: next.input,
|
|
283
283
|
}),
|
|
284
284
|
);
|
|
285
|
-
// : (() => {
|
|
286
|
-
// const addicted = binaries.slice();
|
|
287
|
-
// if (
|
|
288
|
-
// addicted[addicted.length - 1]!.combined === false
|
|
289
|
-
// ) {
|
|
290
|
-
// addicted.push({
|
|
291
|
-
// combined: true,
|
|
292
|
-
// expression: create_guard_call(importer)(
|
|
293
|
-
// explore.source === "top"
|
|
294
|
-
// ? ts.factory.createTrue()
|
|
295
|
-
// : ts.factory.createIdentifier(
|
|
296
|
-
// "_exceptionable",
|
|
297
|
-
// ),
|
|
298
|
-
// )(
|
|
299
|
-
// ts.factory.createIdentifier(path),
|
|
300
|
-
// expected,
|
|
301
|
-
// input,
|
|
302
|
-
// ),
|
|
303
|
-
// });
|
|
304
|
-
// }
|
|
305
|
-
// return addicted
|
|
306
|
-
// .map((b) => b.expression)
|
|
307
|
-
// .reduce(ts.factory.createLogicalOr);
|
|
308
|
-
// })();
|
|
309
285
|
};
|
|
310
286
|
|
|
311
287
|
const assert_object = (props: {
|