Skip to content

Commit 63645d0

Browse files
authored
Merge pull request #2275 from hey-api/fix/valibot-array-min-max-length
fix(valibot): properly handle array minLength and maxLength
2 parents dedfeef + 1581b5c commit 63645d0

File tree

13 files changed

+111
-83
lines changed

13 files changed

+111
-83
lines changed

.changeset/bright-readers-thank.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@hey-api/openapi-ts': patch
3+
---
4+
5+
fix(valibot): properly handle array minLength and maxLength

packages/openapi-ts-tests/test/3.0.x.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,9 @@ describe(`OpenAPI ${version}`, () => {
6868
},
6969
{
7070
config: createConfig({
71-
input: 'array-items-one-of-length-1.json',
71+
input: 'array-items-one-of-length-1.yaml',
7272
output: 'array-items-one-of-length-1',
73+
plugins: ['@hey-api/typescript', 'valibot', 'zod'],
7374
}),
7475
description:
7576
'generates correct array when items are oneOf array with single item',

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,9 @@ describe(`OpenAPI ${version}`, () => {
6868
},
6969
{
7070
config: createConfig({
71-
input: 'array-items-one-of-length-1.json',
71+
input: 'array-items-one-of-length-1.yaml',
7272
output: 'array-items-one-of-length-1',
73+
plugins: ['@hey-api/typescript', 'valibot', 'zod'],
7374
}),
7475
description:
7576
'generates correct array when items are oneOf array with single item',
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
3+
import * as v from 'valibot';
4+
5+
export const vBar = v.string();
6+
7+
export const vFoo = v.object({
8+
foo: v.optional(v.pipe(v.array(vBar), v.minLength(1), v.maxLength(2147483647)))
9+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
3+
import { z } from 'zod';
4+
5+
export const zBar = z.string();
6+
7+
export const zFoo = z.object({
8+
foo: z.array(zBar).min(1).max(2147483647).optional()
9+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
3+
import * as v from 'valibot';
4+
5+
export const vBar = v.string();
6+
7+
export const vFoo = v.object({
8+
foo: v.optional(v.pipe(v.array(vBar), v.minLength(1), v.maxLength(2147483647)))
9+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// This file is auto-generated by @hey-api/openapi-ts
2+
3+
import { z } from 'zod';
4+
5+
export const zBar = z.string();
6+
7+
export const zFoo = z.object({
8+
foo: z.array(zBar).min(1).max(2147483647).optional()
9+
});

packages/openapi-ts-tests/test/openapi-ts.config.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ export default defineConfig(() => {
3737
// 'invalid',
3838
// 'servers-entry.yaml',
3939
// ),
40-
path: path.resolve(__dirname, 'spec', '2.0.x', 'full.yaml'),
40+
path: path.resolve(
41+
__dirname,
42+
'spec',
43+
'3.1.x',
44+
'array-items-one-of-length-1.yaml',
45+
),
4146
// path: path.resolve(__dirname, 'spec', 'v3-transforms.json'),
4247
// path: path.resolve(__dirname, 'spec', 'v3.json'),
4348
// path: 'http://localhost:4000/',
@@ -136,7 +141,7 @@ export default defineConfig(() => {
136141
enabled: false,
137142
type: 'typescript+namespace',
138143
},
139-
// name: '@hey-api/typescript',
144+
name: '@hey-api/typescript',
140145
// tree: true,
141146
},
142147
{
@@ -147,7 +152,7 @@ export default defineConfig(() => {
147152
// client: false,
148153
// include...
149154
// instance: true,
150-
// name: '@hey-api/sdk',
155+
name: '@hey-api/sdk',
151156
// operationId: false,
152157
// responseStyle: 'data',
153158
// throwOnError: true,
@@ -193,7 +198,7 @@ export default defineConfig(() => {
193198
definitions: 'z{{name}}Definition',
194199
// exportFromIndex: true,
195200
metadata: true,
196-
// name: 'valibot',
201+
name: 'valibot',
197202
requests: {
198203
// case: 'SCREAMING_SNAKE_CASE',
199204
name: 'z{{name}}TestData',
@@ -209,7 +214,7 @@ export default defineConfig(() => {
209214
definitions: 'z{{name}}Definition',
210215
// exportFromIndex: true,
211216
// metadata: true,
212-
// name: 'zod',
217+
name: 'zod',
213218
requests: {
214219
// case: 'SCREAMING_SNAKE_CASE',
215220
// name: 'z{{name}}TestData',

packages/openapi-ts-tests/test/spec/3.0.x/array-items-one-of-length-1.json

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
openapi: 3.0.2
2+
info:
3+
title: OpenAPI 3.0.2 array items oneOf length 1 example
4+
version: '1'
5+
components:
6+
schemas:
7+
Foo:
8+
type: object
9+
properties:
10+
foo:
11+
type: array
12+
items:
13+
oneOf:
14+
- $ref: '#/components/schemas/Bar'
15+
maxItems: 2147483647
16+
minItems: 1
17+
Bar:
18+
type: string

0 commit comments

Comments
 (0)