@furystack/rest 8.0.42 → 8.1.1
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/CHANGELOG.md +77 -0
- package/README.md +37 -1
- package/esm/api-endpoint-schema.d.ts +47 -2
- package/esm/api-endpoint-schema.d.ts.map +1 -1
- package/esm/index.d.ts +4 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -1
- package/esm/openapi-document.d.ts +303 -0
- package/esm/openapi-document.d.ts.map +1 -0
- package/esm/openapi-document.js +2 -0
- package/esm/openapi-document.js.map +1 -0
- package/esm/openapi-resolve-refs.d.ts +20 -0
- package/esm/openapi-resolve-refs.d.ts.map +1 -0
- package/esm/openapi-resolve-refs.js +68 -0
- package/esm/openapi-resolve-refs.js.map +1 -0
- package/esm/openapi-resolve-refs.spec.d.ts +2 -0
- package/esm/openapi-resolve-refs.spec.d.ts.map +1 -0
- package/esm/openapi-resolve-refs.spec.js +294 -0
- package/esm/openapi-resolve-refs.spec.js.map +1 -0
- package/esm/openapi-to-rest-api.d.ts +197 -0
- package/esm/openapi-to-rest-api.d.ts.map +1 -0
- package/esm/openapi-to-rest-api.js +2 -0
- package/esm/openapi-to-rest-api.js.map +1 -0
- package/esm/openapi-to-rest-api.spec.d.ts +2 -0
- package/esm/openapi-to-rest-api.spec.d.ts.map +1 -0
- package/esm/openapi-to-rest-api.spec.js +665 -0
- package/esm/openapi-to-rest-api.spec.js.map +1 -0
- package/esm/openapi-to-schema.d.ts +24 -0
- package/esm/openapi-to-schema.d.ts.map +1 -0
- package/esm/openapi-to-schema.js +145 -0
- package/esm/openapi-to-schema.js.map +1 -0
- package/esm/openapi-to-schema.spec.d.ts +2 -0
- package/esm/openapi-to-schema.spec.d.ts.map +1 -0
- package/esm/openapi-to-schema.spec.js +610 -0
- package/esm/openapi-to-schema.spec.js.map +1 -0
- package/esm/rest-api.d.ts +21 -4
- package/esm/rest-api.d.ts.map +1 -1
- package/esm/swagger-document.d.ts +2 -195
- package/esm/swagger-document.d.ts.map +1 -1
- package/esm/swagger-document.js +2 -1
- package/esm/swagger-document.js.map +1 -1
- package/package.json +3 -3
- package/src/api-endpoint-schema.ts +56 -3
- package/src/index.ts +4 -1
- package/src/openapi-document.ts +328 -0
- package/src/openapi-resolve-refs.spec.ts +324 -0
- package/src/openapi-resolve-refs.ts +71 -0
- package/src/openapi-to-rest-api.spec.ts +823 -0
- package/src/openapi-to-rest-api.ts +263 -0
- package/src/openapi-to-schema.spec.ts +707 -0
- package/src/openapi-to-schema.ts +163 -0
- package/src/rest-api.ts +26 -5
- package/src/swagger-document.ts +2 -220
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-resolve-refs.js","sourceRoot":"","sources":["../src/openapi-resolve-refs.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,OAAe,EAAW,EAAE;IACjE,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAExD,IAAI,OAAO,GAAY,IAAI,CAAA;IAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QAC9F,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,IAAa,EAAE,IAAa,EAAE,OAAoB,EAAW,EAAE;IAClF,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAEhF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,IAA+B,CAAA;IAE3C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAA;QACpB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QACtC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAA;QAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAoB,EAAmB,EAAE;IAC1E,OAAO,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,CAAoB,CAAA;AAC7E,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-resolve-refs.spec.d.ts","sourceRoot":"","sources":["../src/openapi-resolve-refs.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { resolveOpenApiRefs } from './openapi-resolve-refs.js';
|
|
3
|
+
describe('resolveOpenApiRefs', () => {
|
|
4
|
+
describe('Schema $ref resolution', () => {
|
|
5
|
+
it('Should resolve $ref to components/schemas', () => {
|
|
6
|
+
const doc = {
|
|
7
|
+
openapi: '3.1.0',
|
|
8
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
9
|
+
paths: {
|
|
10
|
+
'/users': {
|
|
11
|
+
get: {
|
|
12
|
+
responses: {
|
|
13
|
+
'200': {
|
|
14
|
+
description: 'OK',
|
|
15
|
+
content: {
|
|
16
|
+
'application/json': {
|
|
17
|
+
schema: { $ref: '#/components/schemas/User' },
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
components: {
|
|
26
|
+
schemas: {
|
|
27
|
+
User: { type: 'object', properties: { id: { type: 'string' }, name: { type: 'string' } } },
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
32
|
+
const { schema } = (resolved.paths?.['/users']?.get?.responses?.['200']).content['application/json'];
|
|
33
|
+
expect(schema).toEqual({ type: 'object', properties: { id: { type: 'string' }, name: { type: 'string' } } });
|
|
34
|
+
});
|
|
35
|
+
it('Should resolve nested $ref chains', () => {
|
|
36
|
+
const doc = {
|
|
37
|
+
openapi: '3.1.0',
|
|
38
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
39
|
+
paths: {
|
|
40
|
+
'/items': {
|
|
41
|
+
get: {
|
|
42
|
+
responses: {
|
|
43
|
+
'200': {
|
|
44
|
+
description: 'OK',
|
|
45
|
+
content: {
|
|
46
|
+
'application/json': {
|
|
47
|
+
schema: {
|
|
48
|
+
type: 'object',
|
|
49
|
+
properties: {
|
|
50
|
+
category: { $ref: '#/components/schemas/Category' },
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
components: {
|
|
61
|
+
schemas: {
|
|
62
|
+
Category: { type: 'object', properties: { id: { type: 'integer' }, name: { type: 'string' } } },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
67
|
+
const schema = (resolved.paths?.['/items']?.get?.responses?.['200']).content['application/json'].schema;
|
|
68
|
+
const props = schema.properties.category;
|
|
69
|
+
expect(props.type).toBe('object');
|
|
70
|
+
expect(props.properties).toEqual({ id: { type: 'integer' }, name: { type: 'string' } });
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('Parameter $ref resolution', () => {
|
|
74
|
+
it('Should resolve $ref parameters', () => {
|
|
75
|
+
const doc = {
|
|
76
|
+
openapi: '3.1.0',
|
|
77
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
78
|
+
paths: {
|
|
79
|
+
'/items': {
|
|
80
|
+
get: {
|
|
81
|
+
parameters: [{ $ref: '#/components/parameters/LimitParam' }],
|
|
82
|
+
responses: { '200': { description: 'OK' } },
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
components: {
|
|
87
|
+
parameters: {
|
|
88
|
+
LimitParam: { name: 'limit', in: 'query', schema: { type: 'integer' } },
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
93
|
+
const params = resolved.paths?.['/items']?.get?.parameters;
|
|
94
|
+
expect(params[0].name).toBe('limit');
|
|
95
|
+
expect(params[0].in).toBe('query');
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('Response $ref resolution', () => {
|
|
99
|
+
it('Should resolve $ref responses', () => {
|
|
100
|
+
const doc = {
|
|
101
|
+
openapi: '3.1.0',
|
|
102
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
103
|
+
paths: {
|
|
104
|
+
'/items': {
|
|
105
|
+
get: {
|
|
106
|
+
responses: {
|
|
107
|
+
'400': { $ref: '#/components/responses/BadRequest' },
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
components: {
|
|
113
|
+
responses: {
|
|
114
|
+
BadRequest: {
|
|
115
|
+
description: 'Bad request',
|
|
116
|
+
content: {
|
|
117
|
+
'application/json': {
|
|
118
|
+
schema: { type: 'object', properties: { message: { type: 'string' } } },
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
126
|
+
const resp = resolved.paths?.['/items']?.get?.responses?.['400'];
|
|
127
|
+
expect(resp.description).toBe('Bad request');
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe('RequestBody $ref resolution', () => {
|
|
131
|
+
it('Should resolve $ref in requestBody schema', () => {
|
|
132
|
+
const doc = {
|
|
133
|
+
openapi: '3.1.0',
|
|
134
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
135
|
+
paths: {
|
|
136
|
+
'/items': {
|
|
137
|
+
post: {
|
|
138
|
+
requestBody: {
|
|
139
|
+
content: {
|
|
140
|
+
'application/json': {
|
|
141
|
+
schema: { $ref: '#/components/schemas/Item' },
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
responses: { '201': { description: 'Created' } },
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
components: {
|
|
150
|
+
schemas: {
|
|
151
|
+
Item: { type: 'object', properties: { name: { type: 'string' } } },
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
156
|
+
const body = resolved.paths?.['/items']?.post?.requestBody;
|
|
157
|
+
const schema = body.content['application/json']
|
|
158
|
+
.schema;
|
|
159
|
+
expect(schema.type).toBe('object');
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
describe('Edge cases', () => {
|
|
163
|
+
it('Should handle circular $ref by breaking the cycle with empty object', () => {
|
|
164
|
+
const doc = {
|
|
165
|
+
openapi: '3.1.0',
|
|
166
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
167
|
+
components: {
|
|
168
|
+
schemas: {
|
|
169
|
+
Node: {
|
|
170
|
+
type: 'object',
|
|
171
|
+
properties: {
|
|
172
|
+
value: { type: 'string' },
|
|
173
|
+
child: { $ref: '#/components/schemas/Node' },
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
180
|
+
const nodeSchema = resolved.components?.schemas?.Node;
|
|
181
|
+
expect(nodeSchema.type).toBe('object');
|
|
182
|
+
const props = nodeSchema.properties;
|
|
183
|
+
expect(props.value).toEqual({ type: 'string' });
|
|
184
|
+
// The circular child ref is resolved, but the nested self-ref within it breaks the cycle
|
|
185
|
+
expect(props.child.type).toBe('object');
|
|
186
|
+
const childProps = props.child.properties;
|
|
187
|
+
expect(childProps.value).toEqual({ type: 'string' });
|
|
188
|
+
expect(childProps.child).toEqual({});
|
|
189
|
+
});
|
|
190
|
+
it('Should not modify the original document', () => {
|
|
191
|
+
const doc = {
|
|
192
|
+
openapi: '3.1.0',
|
|
193
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
194
|
+
paths: {
|
|
195
|
+
'/items': {
|
|
196
|
+
get: {
|
|
197
|
+
responses: {
|
|
198
|
+
'200': {
|
|
199
|
+
description: 'OK',
|
|
200
|
+
content: { 'application/json': { schema: { $ref: '#/components/schemas/Item' } } },
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
components: { schemas: { Item: { type: 'object' } } },
|
|
207
|
+
};
|
|
208
|
+
resolveOpenApiRefs(doc);
|
|
209
|
+
const schema = doc.paths?.['/items']?.get?.responses?.['200'];
|
|
210
|
+
expect(schema.content['application/json'].schema).toEqual({
|
|
211
|
+
$ref: '#/components/schemas/Item',
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
it('Should leave external $ref as-is', () => {
|
|
215
|
+
const doc = {
|
|
216
|
+
openapi: '3.1.0',
|
|
217
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
218
|
+
paths: {
|
|
219
|
+
'/items': {
|
|
220
|
+
get: {
|
|
221
|
+
responses: {
|
|
222
|
+
'200': {
|
|
223
|
+
description: 'OK',
|
|
224
|
+
content: { 'application/json': { schema: { $ref: 'external.json#/Schema' } } },
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
232
|
+
const { schema } = (resolved.paths?.['/items']?.get?.responses?.['200']).content['application/json'];
|
|
233
|
+
expect(schema).toEqual({ $ref: 'external.json#/Schema' });
|
|
234
|
+
});
|
|
235
|
+
it('Should leave unresolvable $ref as-is', () => {
|
|
236
|
+
const doc = {
|
|
237
|
+
openapi: '3.1.0',
|
|
238
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
239
|
+
paths: {
|
|
240
|
+
'/items': {
|
|
241
|
+
get: {
|
|
242
|
+
responses: {
|
|
243
|
+
'200': {
|
|
244
|
+
description: 'OK',
|
|
245
|
+
content: { 'application/json': { schema: { $ref: '#/components/schemas/Missing' } } },
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
253
|
+
const { schema } = (resolved.paths?.['/items']?.get?.responses?.['200']).content['application/json'];
|
|
254
|
+
expect(schema).toEqual({ $ref: '#/components/schemas/Missing' });
|
|
255
|
+
});
|
|
256
|
+
it('Should handle documents with no $ref', () => {
|
|
257
|
+
const doc = {
|
|
258
|
+
openapi: '3.1.0',
|
|
259
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
260
|
+
paths: {
|
|
261
|
+
'/health': { get: { responses: { '200': { description: 'OK' } } } },
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
265
|
+
expect(resolved.paths?.['/health']?.get?.responses?.['200']).toEqual({ description: 'OK' });
|
|
266
|
+
});
|
|
267
|
+
it('Should resolve arrays of items with $ref', () => {
|
|
268
|
+
const doc = {
|
|
269
|
+
openapi: '3.1.0',
|
|
270
|
+
info: { title: 'Test', version: '1.0.0' },
|
|
271
|
+
paths: {
|
|
272
|
+
'/items': {
|
|
273
|
+
get: {
|
|
274
|
+
parameters: [{ $ref: '#/components/parameters/A' }, { $ref: '#/components/parameters/B' }],
|
|
275
|
+
responses: { '200': { description: 'OK' } },
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
components: {
|
|
280
|
+
parameters: {
|
|
281
|
+
A: { name: 'a', in: 'query', schema: { type: 'string' } },
|
|
282
|
+
B: { name: 'b', in: 'query', schema: { type: 'integer' } },
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
const resolved = resolveOpenApiRefs(doc);
|
|
287
|
+
const params = resolved.paths?.['/items']?.get?.parameters;
|
|
288
|
+
expect(params).toHaveLength(2);
|
|
289
|
+
expect(params[0].name).toBe('a');
|
|
290
|
+
expect(params[1].name).toBe('b');
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
//# sourceMappingURL=openapi-resolve-refs.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-resolve-refs.spec.js","sourceRoot":"","sources":["../src/openapi-resolve-refs.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import type { OpenApiDocument } from './openapi-document.js';
|
|
2
|
+
import type { RestApi } from './rest-api.js';
|
|
3
|
+
/**
|
|
4
|
+
* Converts an OpenAPI `{param}` path to FuryStack `:param` format at the type level.
|
|
5
|
+
*/
|
|
6
|
+
export type ConvertOpenApiPath<P extends string> = P extends `${infer Before}{${infer Param}}${infer After}` ? `${Before}:${Param}${ConvertOpenApiPath<After>}` : P;
|
|
7
|
+
type ResolveRef<Doc extends OpenApiDocument, Ref extends string> = Ref extends `#/components/schemas/${infer Name}` ? Doc['components'] extends {
|
|
8
|
+
schemas: infer S;
|
|
9
|
+
} ? Name extends keyof S ? S[Name] : unknown : unknown : Ref extends `#/components/parameters/${infer Name}` ? Doc['components'] extends {
|
|
10
|
+
parameters: infer S;
|
|
11
|
+
} ? Name extends keyof S ? S[Name] : unknown : unknown : Ref extends `#/components/responses/${infer Name}` ? Doc['components'] extends {
|
|
12
|
+
responses: infer S;
|
|
13
|
+
} ? Name extends keyof S ? S[Name] : unknown : unknown : Ref extends `#/components/requestBodies/${infer Name}` ? Doc['components'] extends {
|
|
14
|
+
requestBodies: infer S;
|
|
15
|
+
} ? Name extends keyof S ? S[Name] : unknown : unknown : unknown;
|
|
16
|
+
type ResolveSchemaOrRef<Doc extends OpenApiDocument, S> = S extends {
|
|
17
|
+
$ref: infer Ref extends string;
|
|
18
|
+
} ? ResolveRef<Doc, Ref> : S;
|
|
19
|
+
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
20
|
+
/**
|
|
21
|
+
* Maps a JSON Schema type keyword to its TypeScript equivalent.
|
|
22
|
+
* Supports primitives, arrays, objects, enum, const, oneOf/anyOf/allOf, nullable, and $ref.
|
|
23
|
+
*
|
|
24
|
+
* The `Doc` parameter is threaded through for `$ref` resolution within schemas.
|
|
25
|
+
*/
|
|
26
|
+
export type JsonSchemaToType<S, Doc extends OpenApiDocument = OpenApiDocument> = S extends {
|
|
27
|
+
$ref: infer Ref extends string;
|
|
28
|
+
} ? JsonSchemaToType<ResolveRef<Doc, Ref>, Doc> : S extends {
|
|
29
|
+
const: infer C;
|
|
30
|
+
} ? C : S extends {
|
|
31
|
+
type: 'string';
|
|
32
|
+
enum: ReadonlyArray<infer E>;
|
|
33
|
+
} ? E : S extends {
|
|
34
|
+
type: 'string';
|
|
35
|
+
} ? string : S extends {
|
|
36
|
+
type: 'number' | 'integer';
|
|
37
|
+
} ? number : S extends {
|
|
38
|
+
type: 'boolean';
|
|
39
|
+
} ? boolean : S extends {
|
|
40
|
+
type: 'null';
|
|
41
|
+
} ? null : S extends {
|
|
42
|
+
type: readonly [infer T, 'null'];
|
|
43
|
+
} ? JsonSchemaToType<{
|
|
44
|
+
type: T;
|
|
45
|
+
}, Doc> | null : S extends {
|
|
46
|
+
type: readonly ['null', infer T];
|
|
47
|
+
} ? JsonSchemaToType<{
|
|
48
|
+
type: T;
|
|
49
|
+
}, Doc> | null : S extends {
|
|
50
|
+
type: 'array';
|
|
51
|
+
items: infer Items;
|
|
52
|
+
} ? Array<JsonSchemaToType<Items, Doc>> : S extends {
|
|
53
|
+
type: 'object';
|
|
54
|
+
properties: infer Props extends Record<string, unknown>;
|
|
55
|
+
} ? S extends {
|
|
56
|
+
required: ReadonlyArray<infer R extends string>;
|
|
57
|
+
} ? {
|
|
58
|
+
[K in keyof Props & R]: JsonSchemaToType<Props[K], Doc>;
|
|
59
|
+
} & {
|
|
60
|
+
[K in Exclude<keyof Props, R>]?: JsonSchemaToType<Props[K], Doc>;
|
|
61
|
+
} : {
|
|
62
|
+
[K in keyof Props]?: JsonSchemaToType<Props[K], Doc>;
|
|
63
|
+
} : S extends {
|
|
64
|
+
type: 'object';
|
|
65
|
+
} ? Record<string, unknown> : S extends {
|
|
66
|
+
allOf: ReadonlyArray<infer Items>;
|
|
67
|
+
} ? UnionToIntersection<JsonSchemaToType<Items, Doc>> : S extends {
|
|
68
|
+
oneOf: ReadonlyArray<infer Items>;
|
|
69
|
+
} ? JsonSchemaToType<Items, Doc> : S extends {
|
|
70
|
+
anyOf: ReadonlyArray<infer Items>;
|
|
71
|
+
} ? JsonSchemaToType<Items, Doc> : unknown;
|
|
72
|
+
type LowercaseHttpMethod = 'get' | 'put' | 'post' | 'delete' | 'patch' | 'head' | 'options' | 'trace';
|
|
73
|
+
type MethodMap = {
|
|
74
|
+
get: 'GET';
|
|
75
|
+
put: 'PUT';
|
|
76
|
+
post: 'POST';
|
|
77
|
+
delete: 'DELETE';
|
|
78
|
+
patch: 'PATCH';
|
|
79
|
+
head: 'HEAD';
|
|
80
|
+
options: 'OPTIONS';
|
|
81
|
+
trace: 'TRACE';
|
|
82
|
+
};
|
|
83
|
+
type UppercaseMethod<M extends string> = M extends keyof MethodMap ? MethodMap[M] : never;
|
|
84
|
+
type PathsWithMethod<T extends OpenApiDocument, M extends LowercaseHttpMethod> = {
|
|
85
|
+
[P in keyof NonNullable<T['paths']> & string]: NonNullable<T['paths']>[P] extends infer PathItem ? M extends keyof PathItem ? PathItem[M] extends object ? P : never : never : never;
|
|
86
|
+
}[keyof NonNullable<T['paths']> & string];
|
|
87
|
+
type GetOperation<T extends OpenApiDocument, P extends string, M extends LowercaseHttpMethod> = NonNullable<T['paths']>[P] extends infer PathItem ? M extends keyof PathItem ? PathItem[M] : never : never;
|
|
88
|
+
type ExtractResponseSchema<Doc extends OpenApiDocument, Op> = Op extends {
|
|
89
|
+
responses: infer R;
|
|
90
|
+
} ? R extends {
|
|
91
|
+
'200': infer Resp200;
|
|
92
|
+
} ? ResolveSchemaOrRef<Doc, Resp200> extends {
|
|
93
|
+
content: {
|
|
94
|
+
'application/json': {
|
|
95
|
+
schema: infer S;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
} ? JsonSchemaToType<S, Doc> : unknown : R extends {
|
|
99
|
+
'201': infer Resp201;
|
|
100
|
+
} ? ResolveSchemaOrRef<Doc, Resp201> extends {
|
|
101
|
+
content: {
|
|
102
|
+
'application/json': {
|
|
103
|
+
schema: infer S;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
} ? JsonSchemaToType<S, Doc> : unknown : unknown : unknown;
|
|
107
|
+
type ExtractRequestBodySchema<Doc extends OpenApiDocument, Op> = Op extends {
|
|
108
|
+
requestBody: infer RB;
|
|
109
|
+
} ? ResolveSchemaOrRef<Doc, RB> extends {
|
|
110
|
+
content: {
|
|
111
|
+
'application/json': {
|
|
112
|
+
schema: infer S;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
} ? JsonSchemaToType<S, Doc> : never : never;
|
|
116
|
+
type ExtractPathParamsFromPath<P extends string> = P extends `${string}{${infer Param}}${infer Rest}` ? {
|
|
117
|
+
[K in Param | keyof ExtractPathParamsFromPath<Rest>]: string;
|
|
118
|
+
} : never;
|
|
119
|
+
type HasPathParams<P extends string> = P extends `${string}{${string}}${string}` ? true : false;
|
|
120
|
+
type ResolvedParam<Doc extends OpenApiDocument, P> = P extends {
|
|
121
|
+
$ref: infer Ref extends string;
|
|
122
|
+
} ? ResolveRef<Doc, Ref> : P;
|
|
123
|
+
type ExtractQueryParamEntry<Doc extends OpenApiDocument, P> = ResolvedParam<Doc, P> extends {
|
|
124
|
+
in: 'query';
|
|
125
|
+
name: infer N extends string;
|
|
126
|
+
schema: infer S;
|
|
127
|
+
} ? {
|
|
128
|
+
[K in N]: JsonSchemaToType<S, Doc>;
|
|
129
|
+
} : ResolvedParam<Doc, P> extends {
|
|
130
|
+
in: 'query';
|
|
131
|
+
name: infer N extends string;
|
|
132
|
+
} ? {
|
|
133
|
+
[K in N]: string;
|
|
134
|
+
} : never;
|
|
135
|
+
type BuildQueryParamsFromTuple<Doc extends OpenApiDocument, T> = T extends readonly [infer Head, ...infer Tail] ? [ExtractQueryParamEntry<Doc, Head>] extends [never] ? BuildQueryParamsFromTuple<Doc, Tail> : ExtractQueryParamEntry<Doc, Head> & BuildQueryParamsFromTuple<Doc, Tail> : unknown;
|
|
136
|
+
type HasQueryParams<Doc extends OpenApiDocument, T> = T extends readonly [infer Head, ...infer Tail] ? [ExtractQueryParamEntry<Doc, Head>] extends [never] ? HasQueryParams<Doc, Tail> : true : false;
|
|
137
|
+
type BuildQueryParams<Doc extends OpenApiDocument, Op> = Op extends {
|
|
138
|
+
parameters: infer Params extends readonly unknown[];
|
|
139
|
+
} ? HasQueryParams<Doc, Params> extends true ? BuildQueryParamsFromTuple<Doc, Params> : never : never;
|
|
140
|
+
type ExtractTags<Op> = Op extends {
|
|
141
|
+
tags: infer T;
|
|
142
|
+
} ? T : never;
|
|
143
|
+
type ExtractDeprecated<Op> = Op extends {
|
|
144
|
+
deprecated: true;
|
|
145
|
+
} ? true : never;
|
|
146
|
+
type ExtractSummary<Op> = Op extends {
|
|
147
|
+
summary: infer S extends string;
|
|
148
|
+
} ? S : never;
|
|
149
|
+
type ExtractDescription<Op> = Op extends {
|
|
150
|
+
description: infer S extends string;
|
|
151
|
+
} ? S : never;
|
|
152
|
+
type BuildEndpoint<T extends OpenApiDocument, P extends string, M extends LowercaseHttpMethod> = {
|
|
153
|
+
result: ExtractResponseSchema<T, GetOperation<T, P, M>>;
|
|
154
|
+
} & ([ExtractRequestBodySchema<T, GetOperation<T, P, M>>] extends [never] ? unknown : {
|
|
155
|
+
body: ExtractRequestBodySchema<T, GetOperation<T, P, M>>;
|
|
156
|
+
}) & (HasPathParams<P> extends true ? {
|
|
157
|
+
url: ExtractPathParamsFromPath<P>;
|
|
158
|
+
} : unknown) & ([BuildQueryParams<T, GetOperation<T, P, M>>] extends [never] ? unknown : {
|
|
159
|
+
query: BuildQueryParams<T, GetOperation<T, P, M>>;
|
|
160
|
+
}) & ([ExtractTags<GetOperation<T, P, M>>] extends [never] ? unknown : {
|
|
161
|
+
tags: ExtractTags<GetOperation<T, P, M>>;
|
|
162
|
+
}) & ([ExtractDeprecated<GetOperation<T, P, M>>] extends [never] ? unknown : {
|
|
163
|
+
deprecated: true;
|
|
164
|
+
}) & ([ExtractSummary<GetOperation<T, P, M>>] extends [never] ? unknown : {
|
|
165
|
+
summary: ExtractSummary<GetOperation<T, P, M>>;
|
|
166
|
+
}) & ([ExtractDescription<GetOperation<T, P, M>>] extends [never] ? unknown : {
|
|
167
|
+
description: ExtractDescription<GetOperation<T, P, M>>;
|
|
168
|
+
});
|
|
169
|
+
type EndpointsForMethod<T extends OpenApiDocument, M extends LowercaseHttpMethod> = string extends PathsWithMethod<T, M> ? never : [PathsWithMethod<T, M>] extends [never] ? never : {
|
|
170
|
+
[P in PathsWithMethod<T, M> as ConvertOpenApiPath<P>]: BuildEndpoint<T, P, M>;
|
|
171
|
+
};
|
|
172
|
+
type CleanObject<T> = {
|
|
173
|
+
[K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Extracts a strongly-typed `RestApi` from an OpenAPI document type.
|
|
177
|
+
*
|
|
178
|
+
* Supports `$ref` resolution, `allOf`/`oneOf`/`anyOf` composition, `nullable`, `const`,
|
|
179
|
+
* and metadata extraction (`tags`, `deprecated`, `summary`, `description`).
|
|
180
|
+
*
|
|
181
|
+
* Use with `as const satisfies OpenApiDocument` to get full type inference:
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* import type { OpenApiDocument, OpenApiToRestApi } from '@furystack/rest'
|
|
186
|
+
* import { createClient } from '@furystack/rest-client-fetch'
|
|
187
|
+
*
|
|
188
|
+
* const apiDoc = { ... } as const satisfies OpenApiDocument
|
|
189
|
+
* type MyApi = OpenApiToRestApi<typeof apiDoc>
|
|
190
|
+
* const client = createClient<MyApi>({ endpointUrl: 'https://api.example.com' })
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
export type OpenApiToRestApi<T extends OpenApiDocument> = CleanObject<{
|
|
194
|
+
[M in LowercaseHttpMethod as [EndpointsForMethod<T, M>] extends [never] ? never : UppercaseMethod<M>]: EndpointsForMethod<T, M>;
|
|
195
|
+
}> extends infer R extends RestApi ? R : never;
|
|
196
|
+
export {};
|
|
197
|
+
//# sourceMappingURL=openapi-to-rest-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-to-rest-api.d.ts","sourceRoot":"","sources":["../src/openapi-to-rest-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-to-rest-api.js","sourceRoot":"","sources":["../src/openapi-to-rest-api.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-to-rest-api.spec.d.ts","sourceRoot":"","sources":["../src/openapi-to-rest-api.spec.ts"],"names":[],"mappings":""}
|