Skip to content

Commit a0c909b

Browse files
committed
feat(valibot): add integer format and BigInt handling and tests
1 parent 4ed592b commit a0c909b

File tree

11 files changed

+417
-19
lines changed

11 files changed

+417
-19
lines changed

packages/openapi-ts-tests/main/test/3.1.x.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,15 @@ describe(`OpenAPI ${version}`, () => {
798798
}),
799799
description: "validator schemas with merged unions (can't use .merge())",
800800
},
801+
{
802+
config: createConfig({
803+
input: 'integer-formats.json',
804+
output: 'integer-formats',
805+
plugins: ['valibot'],
806+
}),
807+
description:
808+
'generates validator schemas for all integer format combinations (number/integer/string types with int8, int16, int32, int64, uint8, uint16, uint32, uint64 formats)',
809+
},
801810
];
802811

803812
it.each(scenarios)('$description', async ({ config }) => {
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
{
2+
"openapi": "3.1.0",
3+
"info": {
4+
"title": "Integer Formats Test",
5+
"version": "1.0.0"
6+
},
7+
"components": {
8+
"schemas": {
9+
"IntegerFormats": {
10+
"type": "object",
11+
"properties": {
12+
"numberNoFormat": {
13+
"type": "number"
14+
},
15+
"numberInt8": {
16+
"type": "number",
17+
"format": "int8"
18+
},
19+
"numberInt16": {
20+
"type": "number",
21+
"format": "int16"
22+
},
23+
"numberInt32": {
24+
"type": "number",
25+
"format": "int32"
26+
},
27+
"numberInt64": {
28+
"type": "number",
29+
"format": "int64"
30+
},
31+
"numberUint8": {
32+
"type": "number",
33+
"format": "uint8"
34+
},
35+
"numberUint16": {
36+
"type": "number",
37+
"format": "uint16"
38+
},
39+
"numberUint32": {
40+
"type": "number",
41+
"format": "uint32"
42+
},
43+
"numberUint64": {
44+
"type": "number",
45+
"format": "uint64"
46+
},
47+
"integerNoFormat": {
48+
"type": "integer"
49+
},
50+
"integerInt8": {
51+
"type": "integer",
52+
"format": "int8"
53+
},
54+
"integerInt16": {
55+
"type": "integer",
56+
"format": "int16"
57+
},
58+
"integerInt32": {
59+
"type": "integer",
60+
"format": "int32"
61+
},
62+
"integerInt64": {
63+
"type": "integer",
64+
"format": "int64"
65+
},
66+
"integerUint8": {
67+
"type": "integer",
68+
"format": "uint8"
69+
},
70+
"integerUint16": {
71+
"type": "integer",
72+
"format": "uint16"
73+
},
74+
"integerUint32": {
75+
"type": "integer",
76+
"format": "uint32"
77+
},
78+
"integerUint64": {
79+
"type": "integer",
80+
"format": "uint64"
81+
},
82+
"stringInt64": {
83+
"type": "string",
84+
"format": "int64"
85+
},
86+
"stringUint64": {
87+
"type": "string",
88+
"format": "uint64"
89+
}
90+
}
91+
}
92+
}
93+
}
94+
}

packages/openapi-ts-tests/specs/3.1.x/schema-const.yaml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,79 @@ components:
3131
const: 10n
3232
format: int64
3333
type: integer
34+
# Integer format const examples - number type
35+
numberInt8:
36+
const: 100
37+
format: int8
38+
type: number
39+
numberInt16:
40+
const: 1000
41+
format: int16
42+
type: number
43+
numberInt32:
44+
const: 100000
45+
format: int32
46+
type: number
47+
numberInt64:
48+
const: 1000000000000
49+
format: int64
50+
type: number
51+
numberUint8:
52+
const: 200
53+
format: uint8
54+
type: number
55+
numberUint16:
56+
const: 50000
57+
format: uint16
58+
type: number
59+
numberUint32:
60+
const: 3000000000
61+
format: uint32
62+
type: number
63+
numberUint64:
64+
const: 18000000000000000000
65+
format: uint64
66+
type: number
67+
# Integer format const examples - integer type
68+
integerInt8:
69+
const: -100
70+
format: int8
71+
type: integer
72+
integerInt16:
73+
const: -1000
74+
format: int16
75+
type: integer
76+
integerInt32:
77+
const: -100000
78+
format: int32
79+
type: integer
80+
integerInt64:
81+
const: -1000000000000
82+
format: int64
83+
type: integer
84+
integerUint8:
85+
const: 255
86+
format: uint8
87+
type: integer
88+
integerUint16:
89+
const: 65535
90+
format: uint16
91+
type: integer
92+
integerUint32:
93+
const: 4294967295
94+
format: uint32
95+
type: integer
96+
integerUint64:
97+
const: 18446744073709551615n
98+
format: uint64
99+
type: integer
100+
# Integer format const examples - string type (only for 64-bit formats)
101+
stringInt64:
102+
const: '-9223372036854775808'
103+
format: int64
104+
type: string
105+
stringUint64:
106+
const: '18446744073709551615'
107+
format: uint64
108+
type: string
34109
type: object

0 commit comments

Comments
 (0)