Skip to content

Commit 5efc36e

Browse files
authored
fix(fetch/axios): correctly merge headers from opts (#231)
- Previously if you passed any request headers using the `opts` parameter, this would overwrite the headers set from parameters, defaults, etc - Now these will be consistently merged following: `defaults` -> `params` -> `opts` - `undefined` header values will be ignored, `null` header values will delete headers set previously This wound up being a lot more complex than I'd expected, and there may still be some edges that I've missed. However I'm confident that this makes things better than before based on the new e2e tests at least.
1 parent 41c48cb commit 5efc36e

38 files changed

Lines changed: 19283 additions & 13674 deletions

File tree

e2e/openapi.yaml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,32 @@ info:
33
title: E2E Tests for @nahkies/openapi-code-generator
44
version: "0.0.1"
55
tags:
6+
- name: headers
67
- name: validation
78
paths:
9+
/headers/undeclared:
10+
get:
11+
tags:
12+
- headers
13+
responses:
14+
200:
15+
$ref: '#/components/responses/GetHeaders'
16+
/headers/request:
17+
get:
18+
tags:
19+
- headers
20+
parameters:
21+
- name: route-level-header
22+
in: header
23+
schema:
24+
type: string
25+
- name: Authorization
26+
in: header
27+
schema:
28+
type: string
29+
responses:
30+
200:
31+
$ref: '#/components/responses/GetHeaders'
832
/validation/numbers/random-number:
933
get:
1034
tags:
@@ -38,6 +62,22 @@ paths:
3862
$ref: '#/components/schemas/RandomNumber'
3963

4064
components:
65+
responses:
66+
GetHeaders:
67+
description: success
68+
content:
69+
application/json:
70+
schema:
71+
type: object
72+
properties:
73+
headers:
74+
additionalProperties:
75+
anyOf:
76+
- type: string
77+
- type: array
78+
items:
79+
type: string
80+
4181
schemas:
4282
RandomNumber:
4383
type: object

e2e/scripts/generate.sh

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,14 @@ yarn openapi-code-generator \
1212

1313
yarn openapi-code-generator \
1414
--input ./openapi.yaml \
15-
--output ./src/generated/client \
15+
--output ./src/generated/client/fetch \
1616
--template typescript-fetch \
1717
--schema-builder zod \
18-
--extract-inline-schemas \
19-
--grouping-strategy first-tag \
18+
--extract-inline-schemas
19+
20+
yarn openapi-code-generator \
21+
--input ./openapi.yaml \
22+
--output ./src/generated/client/axios \
23+
--template typescript-axios \
24+
--schema-builder zod \
25+
--extract-inline-schemas

e2e/src/generated/client/axios/client.ts

Lines changed: 88 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/axios/models.ts

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/client.ts

Lines changed: 0 additions & 38 deletions
This file was deleted.

e2e/src/generated/client/fetch/client.ts

Lines changed: 79 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/fetch/models.ts

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/src/generated/client/models.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

e2e/src/generated/models.ts

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)