@technicity/openapi-sdk-generator 5.2.3 → 5.4.0

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.
@@ -3,4 +3,6 @@ export declare function generate(input: {
3
3
  api: OpenAPI.Document;
4
4
  doc: OpenAPI.Document;
5
5
  outdir: string;
6
+ env: "browser" | "node";
7
+ generateOrThrow: boolean;
6
8
  }): Promise<void>;
@@ -39,7 +39,7 @@ const pascal_case_1 = require("pascal-case");
39
39
  const prettier = __importStar(require("prettier"));
40
40
  const del_1 = __importDefault(require("del"));
41
41
  async function generate(input) {
42
- const { api, outdir } = input;
42
+ const { api, outdir, env, generateOrThrow } = input;
43
43
  if (api.paths == null || Object.keys(api.paths).length === 0) {
44
44
  throw new Error("No paths found.");
45
45
  }
@@ -63,26 +63,258 @@ async function generate(input) {
63
63
  parameters,
64
64
  requestBody,
65
65
  responses,
66
+ generateOrThrow,
66
67
  })),
67
68
  });
68
69
  }
69
70
  }
70
71
  await (0, del_1.default)(outdir);
71
72
  await fse.mkdirp(outdir);
72
- await fs.writeFile(path.join(outdir, `Sdk.ts`), prettier.format(`export type Interceptors = { req?: (req: Request) => Promise<Request>, res?: (req: Request, res: Response) => Promise<Response> };
73
+ await fs.writeFile(path.join(outdir, `Sdk.ts`), prettier.format(`${env === "browser"
74
+ ? ""
75
+ : `// TODO: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60924
76
+ import {
77
+ fetch,
78
+ Response,
79
+ Request,
80
+ HeadersInit,
81
+ BodyInit,
82
+ Headers, } from "undici";`}
83
+
84
+ export type Interceptors = { req?: (req: Request) => Promise<Request>, res?: (req: Request, res: Response) => Promise<Response> };
73
85
 
74
- export class Sdk {
75
- baseUrl: string;
86
+ type SdkOpts = { baseUrl: string };
76
87
 
77
- constructor(opts: { baseUrl: string }) {
78
- this.baseUrl = opts.baseUrl;
88
+ export class Sdk {
89
+ #httpClient: HttpClient;
90
+ #baseUrl: string;
91
+ #addOperationIdHeader?: boolean;
92
+
93
+ static create(opts: SdkOpts) {
94
+ return new this({ ...opts, httpClient: HttpClient.create() });
95
+ }
96
+
97
+ static createNull(
98
+ opts: SdkOpts & { responses?: NullResponses; }
99
+ ) {
100
+ const { responses: _responses, ...rest } = opts;
101
+ const responses: CreateNullFetchInput["responses"] =
102
+ _responses === void 0
103
+ ? () => ({ body: JSON.stringify({}) })
104
+ : (req) => {
105
+ const operationId = req.headers.get("x-operation-id");
106
+ if (!operationId) {
107
+ throw new Error(\`No operationId for \${req}.\`);
108
+ }
109
+ const fn = (_responses as any)[operationId] ?? _responses["*"];
110
+ if (!fn) {
111
+ return { body: JSON.stringify({}) };
112
+ }
113
+ const result = fn({ ...req, operationId });
114
+ return {
115
+ status: result?.status,
116
+ body: JSON.stringify(result?.body),
117
+ };
118
+ };
119
+ return new this({
120
+ ...rest,
121
+ httpClient: HttpClient.createNull({ responses }),
122
+ addOperationIdHeader: true,
123
+ });
124
+ }
125
+
126
+ constructor(
127
+ opts: SdkOpts & { httpClient: HttpClient; addOperationIdHeader?: boolean }
128
+ ) {
129
+ this.#httpClient = opts.httpClient;
130
+ this.#baseUrl = opts.baseUrl;
131
+ this.#addOperationIdHeader = opts.addOperationIdHeader;
79
132
  }
80
133
 
81
134
  ${results.map((x) => x.methodCode).join("\n\n")}
135
+
136
+ async #handle(
137
+ url: string,
138
+ operationId: string,
139
+ _interceptors: Interceptors,
140
+ method?: string,
141
+ _query?: { [k: string]: any },
142
+ _headers?: { [k: string]: string },
143
+ reqContentType?: string,
144
+ ) {
145
+ if (_query) {
146
+ let q: [string, string][] = [];
147
+ for (let k in _query) {
148
+ const _v = (_query as any)[k];
149
+ if (_v === void 0) {
150
+ continue;
151
+ } else if (Array.isArray(_v)) {
152
+ for (let __v of _v) {
153
+ const v = typeof __v === "string" ? __v : String(__v);
154
+ q.push([k, v]);
155
+ }
156
+ } else {
157
+ const v = typeof _v === "string" ? _v : String(_v);
158
+ q.push([k, v]);
159
+ }
160
+ }
161
+ const searchParams = new URLSearchParams(q);
162
+ searchParams.sort();
163
+ url += \`?\${searchParams}\`;
164
+ }
165
+
166
+ const headers = new Headers();
167
+
168
+ if (reqContentType) {
169
+ headers.append("content-type", reqContentType);
170
+ }
171
+
172
+ if (this.#addOperationIdHeader) {
173
+ headers.append("x-operation-id", operationId);
174
+ }
175
+
176
+ if (_headers) {
177
+ for (let k in _headers) {
178
+ headers.append(k, _headers[k]);
179
+ }
180
+ }
181
+
182
+ let req = new Request(url, { method, headers });
183
+
184
+ const interceptors = _interceptors;
185
+
186
+ if (interceptors?.req) {
187
+ req = await interceptors.req(req);
188
+ }
189
+
190
+ let res = await this.#httpClient.fetch(req);
191
+
192
+ if (interceptors?.res) {
193
+ res = await interceptors.res(req, res);
194
+ }
195
+
196
+ const body =
197
+ res.status === 204
198
+ ? null
199
+ : !res.ok
200
+ ? await res.clone().json()
201
+ : await res.json();
202
+
203
+ return {
204
+ ok: res.ok as any,
205
+ status: res.status as any,
206
+ body: body as any,
207
+ res,
208
+ };
209
+ }
210
+
211
+ ${generateOrThrow
212
+ ? `async #handleOrThrow(
213
+ url: string,
214
+ operationId: string,
215
+ _interceptors: Interceptors,
216
+ method?: string,
217
+ _query?: { [k: string]: any },
218
+ _headers?: { [k: string]: string },
219
+ reqContentType?: string,
220
+ mapThrow?: (response: Response) => unknown | Promise<unknown>
221
+ ) {
222
+ if (_query) {
223
+ let q: [string, string][] = [];
224
+ for (let k in _query) {
225
+ const _v = (_query as any)[k];
226
+ if (_v === void 0) {
227
+ continue;
228
+ } else if (Array.isArray(_v)) {
229
+ for (let __v of _v) {
230
+ const v = typeof __v === "string" ? __v : String(__v);
231
+ q.push([k, v]);
232
+ }
233
+ } else {
234
+ const v = typeof _v === "string" ? _v : String(_v);
235
+ q.push([k, v]);
236
+ }
237
+ }
238
+ const searchParams = new URLSearchParams(q);
239
+ searchParams.sort();
240
+ url += \`?\${searchParams}\`;
241
+ }
242
+
243
+ const headers = new Headers();
244
+
245
+ if (reqContentType) {
246
+ headers.append("content-type", reqContentType);
247
+ }
248
+
249
+ if (this.#addOperationIdHeader) {
250
+ headers.append("x-operation-id", operationId);
251
+ }
252
+
253
+ if (_headers) {
254
+ for (let k in _headers) {
255
+ headers.append(k, _headers[k]);
256
+ }
257
+ }
258
+
259
+ let req = new Request(url, { method, headers });
260
+
261
+ const interceptors = _interceptors;
262
+
263
+ if (interceptors?.req) {
264
+ req = await interceptors.req(req);
265
+ }
266
+
267
+ let res = await this.#httpClient.fetch(req);
268
+
269
+ if (interceptors?.res) {
270
+ res = await interceptors.res(req, res);
271
+ }
272
+
273
+ if (!res.ok) {
274
+ let toThrow = typeof mapThrow === "function" ? mapThrow(res) : res;
275
+ if (typeof (toThrow as any)?.then === "function") {
276
+ toThrow = await toThrow;
277
+ }
278
+ throw toThrow;
279
+ }
280
+
281
+ const body = res.status === 204 ? null : await res.json();
282
+
283
+ return {
284
+ ok: res.ok as any,
285
+ status: res.status as any,
286
+ body: body as any,
287
+ res,
288
+ };
289
+ }`
290
+ : ""}
82
291
  }
83
292
 
84
293
  ${results.map((x) => x.restCode).join("\n\n")}
85
- `, { parser: "typescript" }));
294
+
295
+ type NullResponses = {
296
+ "*"?: (req: {
297
+ operationId: string;
298
+ url: URL;
299
+ method: string;
300
+ headers: Headers;
301
+ }) => { status?: number; body: unknown };
302
+ ${results
303
+ .map((x) => `${x.operationId}?: (req: {
304
+ operationId: "${x.operationId}";
305
+ url: URL;
306
+ method: string;
307
+ headers: Headers;
308
+ }) => ${x.resBodyTypes.length === 0
309
+ ? `{ status?: number; body: unknown }`
310
+ : x.resBodyTypes
311
+ .map((x) => `{ status: ${x.status}; body: ${x.name} }`)
312
+ .join(" | ")}`)
313
+ .join(";")}
314
+ }
315
+
316
+ ${getHttpClientCode()}
317
+ `, { parser: "typescript" }));
86
318
  await fs.writeFile(path.join(outdir, `schemas.ts`), prettier.format(results.map((x) => x.reqBodySchemas).join("\n\n"), {
87
319
  parser: "typescript",
88
320
  }));
@@ -90,7 +322,7 @@ async function generate(input) {
90
322
  }
91
323
  exports.generate = generate;
92
324
  async function getCode(input) {
93
- const { operationId, path, method, parameters, requestBody, responses } = input;
325
+ const { operationId, path, method, parameters, requestBody, responses, generateOrThrow, } = input;
94
326
  const pathParams = (parameters ?? []).filter((x) => x.in === "path");
95
327
  const queryParams = (parameters ?? []).filter((x) => x.in === "query");
96
328
  const { contentType: requestBodyContentType, schema: requestBodySchema } = getRequestBodyInfo(requestBody, operationId) ?? {};
@@ -114,7 +346,7 @@ async function getCode(input) {
114
346
  }
115
347
  const pathParamsSchema = getParamsSchema(pathParams);
116
348
  const queryParamsSchema = getParamsSchema(queryParams);
117
- const methodCode = `async ${operationId}(input: {
349
+ let methodCode = `async ${operationId}(input: {
118
350
  ${pathParams.length > 0
119
351
  ? `params${pathParamsSchema.required.length === 0 ? "?" : ""}: ${await getInlineTypeScriptType(pathParamsSchema)};`
120
352
  : ""}${`query${queryParams.length === 0 || queryParamsSchema.required.length === 0
@@ -122,7 +354,7 @@ async function getCode(input) {
122
354
  : ""}: ${await getInlineTypeScriptType(queryParams.length === 0 ? { type: "object" } : queryParamsSchema)};`}${requestBody == null ? "" : `data: ${requestBodySchemaName};`}headers?: { [k: string]: string };
123
355
  interceptors: Interceptors;
124
356
  }): ${resBodyTypes.length === 0
125
- ? `Promise<any>`
357
+ ? `Promise<unknown>`
126
358
  : `Promise<
127
359
  ${resBodyTypes
128
360
  .map((x) => `{ ok: ${parseInt(x.status) <= 299}; status: ${x.status}; body: ${x.name}, res: Response }`)
@@ -135,7 +367,9 @@ async function getCode(input) {
135
367
  }
136
368
  `)
137
369
  .join("\n")}
138
- let url = \`\${this.baseUrl}${(0, path_to_regexp_1.compile)(path
370
+
371
+ return this.#handle(
372
+ \`\${this.#baseUrl}${(0, path_to_regexp_1.compile)(path
139
373
  .replace(/{/g, ":")
140
374
  .replace(/}/g, "")
141
375
  .split("/")
@@ -143,57 +377,62 @@ async function getCode(input) {
143
377
  .join("/"))(pathParams.reduce((acc, v) => {
144
378
  acc[v.name.replace(/-/g, "_")] = `\${input.params["${v.name}"]}`;
145
379
  return acc;
146
- }, {}))}\`
147
-
148
- if (input.query) {
149
- let q: [string, string][] = [];
150
- for (let k in input.query) {
151
- const _v = (input.query as any)[k];
152
- if (_v === void 0) {
153
- continue;
154
- } else if (Array.isArray(_v)) {
155
- for (let __v of _v) {
156
- const v = typeof __v === "string" ? __v : String(__v);
157
- q.push([k, v]);
158
- }
159
- } else {
160
- const v = typeof _v === "string" ? _v : String(_v);
161
- q.push([k, v]);
162
- }
163
- }
164
- const searchParams = new URLSearchParams(q);
165
- searchParams.sort();
166
- url += \`?\${searchParams}\`;
167
- }
168
-
169
- const headers = new Headers( ${requestBody == null ? "" : `{"content-type": "${requestBodyContentType}"}`});
170
- if (input?.headers) {
171
- for (let k in input.headers) {
172
- headers.append(k, input.headers[k]);
173
- }
174
- }
175
-
176
- let req = new Request(url, { ${method !== "get" ? `method: "${method.toLocaleUpperCase()}",` : ""}headers,${requestBodyContentType?.startsWith("application/json")
177
- ? `body: JSON.stringify(input.data),`
178
- : ""}});
179
-
180
- const interceptors = input.interceptors;
181
-
182
- if (interceptors?.req) {
183
- req = await interceptors.req(req);
380
+ }, {}))}\`,
381
+ "${operationId}",
382
+ input.interceptors,
383
+ ${method === "get" ? "undefined" : `"${method.toLocaleUpperCase()}"`},
384
+ input.query,
385
+ input.headers,
386
+ ${requestBody == null ? "undefined" : `"${requestBodyContentType}"`},
387
+ );
184
388
  }
185
-
186
- let res = await fetch(req);
187
-
188
- if (interceptors?.res) {
189
- res = await interceptors.res(req, res);
389
+ `;
390
+ if (generateOrThrow) {
391
+ methodCode += `\nasync ${operationId}OrThrow(input: {
392
+ ${pathParams.length > 0
393
+ ? `params${pathParamsSchema.required.length === 0 ? "?" : ""}: ${await getInlineTypeScriptType(pathParamsSchema)};`
394
+ : ""}${`query${queryParams.length === 0 || queryParamsSchema.required.length === 0
395
+ ? "?"
396
+ : ""}: ${await getInlineTypeScriptType(queryParams.length === 0 ? { type: "object" } : queryParamsSchema)};`}${requestBody == null ? "" : `data: ${requestBodySchemaName};`}headers?: { [k: string]: string };
397
+ interceptors: Interceptors;
398
+ mapThrow?: (response: Response) => unknown | Promise<unknown>;
399
+ }): ${resBodyTypes.length === 0
400
+ ? `Promise<unknown>`
401
+ : `Promise<
402
+ ${resBodyTypes
403
+ .filter((x) => parseInt(x.status) <= 299)
404
+ .map((x) => `{ ok: true; status: ${x.status}; body: ${x.name}, res: Response }`)
405
+ .join(" | ")}>`} {
406
+ ${pathParams
407
+ .filter((x) => x.required)
408
+ .map((x) => `
409
+ if (input.params["${x.name}"] == null) {
410
+ throw new Error("Missing \`params[\\"${x.name}\\"]\`");
190
411
  }
412
+ `)
413
+ .join("\n")}
191
414
 
192
- const body = res.status === 204 ? null : !res.ok ? await res.clone().json() : await res.json();
193
-
194
- return { ok: res.ok as any, status: res.status as any, body: body as any, res };
415
+ return this.#handleOrThrow(
416
+ \`\${this.#baseUrl}${(0, path_to_regexp_1.compile)(path
417
+ .replace(/{/g, ":")
418
+ .replace(/}/g, "")
419
+ .split("/")
420
+ .map((x) => (x.startsWith(":") ? x.replace(/-/g, "_") : x))
421
+ .join("/"))(pathParams.reduce((acc, v) => {
422
+ acc[v.name.replace(/-/g, "_")] = `\${input.params["${v.name}"]}`;
423
+ return acc;
424
+ }, {}))}\`,
425
+ "${operationId}",
426
+ input.interceptors,
427
+ ${method === "get" ? "undefined" : `"${method.toLocaleUpperCase()}"`},
428
+ input.query,
429
+ input.headers,
430
+ ${requestBody == null ? "undefined" : `"${requestBodyContentType}"`},
431
+ input.mapThrow,
432
+ );
195
433
  }
196
434
  `;
435
+ }
197
436
  const restCode = `${requestBodySchema == null
198
437
  ? ""
199
438
  : await getTsInterface(requestBodySchema, requestBodySchemaName)}
@@ -203,7 +442,7 @@ async function getCode(input) {
203
442
  const reqBodySchemas = `${requestBodySchema == null
204
443
  ? ""
205
444
  : `export const schemaReqData${(0, pascal_case_1.pascalCase)(operationId)} = ${JSON.stringify(requestBodySchema)}`}`;
206
- return { methodCode, restCode, reqBodySchemas };
445
+ return { methodCode, restCode, reqBodySchemas, resBodyTypes };
207
446
  }
208
447
  function getParamsSchema(params) {
209
448
  const properties = params.reduce((acc, v) => {
@@ -275,4 +514,73 @@ function prepareSchema(schema) {
275
514
  }
276
515
  return schema;
277
516
  }
517
+ function getHttpClientCode() {
518
+ return prettier.format(`type Fetch = typeof fetch;
519
+
520
+ class HttpClient {
521
+ #fetch: Fetch;
522
+
523
+ static create() {
524
+ return new this(fetch);
525
+ }
526
+
527
+ static createNull(input?: CreateNullFetchInput) {
528
+ return new this(createNullFetch(input));
529
+ }
530
+
531
+ constructor(fetch: Fetch) {
532
+ this.#fetch = fetch;
533
+ }
534
+
535
+ fetch(...params: Parameters<Fetch>): ReturnType<Fetch> {
536
+ return this.#fetch(...params);
537
+ }
538
+ }
539
+
540
+ type CreateNullFetchInput = {
541
+ responses?: (req: { url: URL; method: string; headers: Headers }) => {
542
+ body?: BodyInit;
543
+ status?: number | undefined;
544
+ headers?: HeadersInit;
545
+ };
546
+ };
547
+
548
+ function createNullFetch(input?: CreateNullFetchInput) {
549
+ return function fetch(...params: Parameters<Fetch>): ReturnType<Fetch> {
550
+ const [requestInfo, init] = params;
551
+ const url =
552
+ requestInfo instanceof URL
553
+ ? requestInfo
554
+ : requestInfo instanceof Request
555
+ ? getURL(requestInfo.url)
556
+ : getURL(requestInfo);
557
+ const method =
558
+ init?.method?.toUpperCase() ??
559
+ (requestInfo instanceof Request ? requestInfo.method : "GET");
560
+ const reqHeaders = new Headers(
561
+ requestInfo instanceof Request ? requestInfo.headers : init?.headers
562
+ );
563
+ const result = input?.responses?.({
564
+ url,
565
+ method,
566
+ headers: reqHeaders,
567
+ });
568
+ const resBody = result?.body;
569
+ const resStatus = result?.status;
570
+ const resHeaders = result?.headers;
571
+ return Promise.resolve(
572
+ new Response(resBody, { status: resStatus, headers: resHeaders })
573
+ );
574
+ };
575
+ }
576
+
577
+ function getURL(url: string) {
578
+ try {
579
+ return new URL(url);
580
+ } catch (e) {
581
+ return new URL(url, "https://stub.com");
582
+ }
583
+ }
584
+ `, { parser: "typescript" });
585
+ }
278
586
  //# sourceMappingURL=generate-remix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-remix.js","sourceRoot":"","sources":["../src/generate-remix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-remix.js","sourceRoot":"","sources":["../src/generate-remix.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,14 @@ export declare const schema: {
43
43
  enum: string[];
44
44
  default: string;
45
45
  };
46
+ env: {
47
+ enum: string[];
48
+ default: string;
49
+ };
50
+ generateOrThrow: {
51
+ type: string;
52
+ default: boolean;
53
+ };
46
54
  };
47
55
  additionalProperties: boolean;
48
56
  required: string[];
package/dist/generate.js CHANGED
@@ -86,6 +86,9 @@ exports.schema = {
86
86
  description: "module type for generated SDK",
87
87
  },
88
88
  variant: { enum: ["default", "remix"], default: "default" },
89
+ // TODO: remove this option after https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60924 is resolved.
90
+ env: { enum: ["browser", "node"], default: "browser" },
91
+ generateOrThrow: { type: "boolean", default: true },
89
92
  },
90
93
  additionalProperties: false,
91
94
  required: ["def", "outdir"],
@@ -121,7 +124,13 @@ async function generate(opts) {
121
124
  }
122
125
  }
123
126
  if (opts.variant === "remix") {
124
- return (0, generate_remix_1.generate)({ api, outdir: path.resolve(opts.outdir), doc: _doc });
127
+ return (0, generate_remix_1.generate)({
128
+ api,
129
+ outdir: path.resolve(opts.outdir),
130
+ doc: _doc,
131
+ env: opts.env,
132
+ generateOrThrow: opts.generateOrThrow,
133
+ });
125
134
  }
126
135
  const optsTypeGet = "{headers?: {[k: string]: string}, strategy?: 'network'}";
127
136
  const optsType = "{headers?: {[k: string]: string}, clearCache?: boolean}";
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@technicity/openapi-sdk-generator",
3
- "version": "5.2.3",
3
+ "version": "5.4.0",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "bin": {
@@ -15,8 +15,10 @@ export async function generate(input: {
15
15
  api: OpenAPI.Document;
16
16
  doc: OpenAPI.Document;
17
17
  outdir: string;
18
+ env: "browser" | "node";
19
+ generateOrThrow: boolean;
18
20
  }) {
19
- const { api, outdir } = input;
21
+ const { api, outdir, env, generateOrThrow } = input;
20
22
 
21
23
  if (api.paths == null || Object.keys(api.paths).length === 0) {
22
24
  throw new Error("No paths found.");
@@ -27,6 +29,7 @@ export async function generate(input: {
27
29
  methodCode: string;
28
30
  restCode: string;
29
31
  reqBodySchemas: string;
32
+ resBodyTypes: { name: string; status: string; type: string }[];
30
33
  }[] = [];
31
34
 
32
35
  // Sort
@@ -54,6 +57,7 @@ export async function generate(input: {
54
57
  parameters,
55
58
  requestBody,
56
59
  responses,
60
+ generateOrThrow,
57
61
  })),
58
62
  });
59
63
  }
@@ -65,20 +69,259 @@ export async function generate(input: {
65
69
  await fs.writeFile(
66
70
  path.join(outdir, `Sdk.ts`),
67
71
  prettier.format(
68
- `export type Interceptors = { req?: (req: Request) => Promise<Request>, res?: (req: Request, res: Response) => Promise<Response> };
72
+ `${
73
+ env === "browser"
74
+ ? ""
75
+ : `// TODO: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60924
76
+ import {
77
+ fetch,
78
+ Response,
79
+ Request,
80
+ HeadersInit,
81
+ BodyInit,
82
+ Headers, } from "undici";`
83
+ }
84
+
85
+ export type Interceptors = { req?: (req: Request) => Promise<Request>, res?: (req: Request, res: Response) => Promise<Response> };
69
86
 
70
- export class Sdk {
71
- baseUrl: string;
87
+ type SdkOpts = { baseUrl: string };
72
88
 
73
- constructor(opts: { baseUrl: string }) {
74
- this.baseUrl = opts.baseUrl;
89
+ export class Sdk {
90
+ #httpClient: HttpClient;
91
+ #baseUrl: string;
92
+ #addOperationIdHeader?: boolean;
93
+
94
+ static create(opts: SdkOpts) {
95
+ return new this({ ...opts, httpClient: HttpClient.create() });
96
+ }
97
+
98
+ static createNull(
99
+ opts: SdkOpts & { responses?: NullResponses; }
100
+ ) {
101
+ const { responses: _responses, ...rest } = opts;
102
+ const responses: CreateNullFetchInput["responses"] =
103
+ _responses === void 0
104
+ ? () => ({ body: JSON.stringify({}) })
105
+ : (req) => {
106
+ const operationId = req.headers.get("x-operation-id");
107
+ if (!operationId) {
108
+ throw new Error(\`No operationId for \${req}.\`);
109
+ }
110
+ const fn = (_responses as any)[operationId] ?? _responses["*"];
111
+ if (!fn) {
112
+ return { body: JSON.stringify({}) };
113
+ }
114
+ const result = fn({ ...req, operationId });
115
+ return {
116
+ status: result?.status,
117
+ body: JSON.stringify(result?.body),
118
+ };
119
+ };
120
+ return new this({
121
+ ...rest,
122
+ httpClient: HttpClient.createNull({ responses }),
123
+ addOperationIdHeader: true,
124
+ });
125
+ }
126
+
127
+ constructor(
128
+ opts: SdkOpts & { httpClient: HttpClient; addOperationIdHeader?: boolean }
129
+ ) {
130
+ this.#httpClient = opts.httpClient;
131
+ this.#baseUrl = opts.baseUrl;
132
+ this.#addOperationIdHeader = opts.addOperationIdHeader;
75
133
  }
76
134
 
77
135
  ${results.map((x) => x.methodCode).join("\n\n")}
136
+
137
+ async #handle(
138
+ url: string,
139
+ operationId: string,
140
+ _interceptors: Interceptors,
141
+ method?: string,
142
+ _query?: { [k: string]: any },
143
+ _headers?: { [k: string]: string },
144
+ reqContentType?: string,
145
+ ) {
146
+ if (_query) {
147
+ let q: [string, string][] = [];
148
+ for (let k in _query) {
149
+ const _v = (_query as any)[k];
150
+ if (_v === void 0) {
151
+ continue;
152
+ } else if (Array.isArray(_v)) {
153
+ for (let __v of _v) {
154
+ const v = typeof __v === "string" ? __v : String(__v);
155
+ q.push([k, v]);
156
+ }
157
+ } else {
158
+ const v = typeof _v === "string" ? _v : String(_v);
159
+ q.push([k, v]);
160
+ }
161
+ }
162
+ const searchParams = new URLSearchParams(q);
163
+ searchParams.sort();
164
+ url += \`?\${searchParams}\`;
165
+ }
166
+
167
+ const headers = new Headers();
168
+
169
+ if (reqContentType) {
170
+ headers.append("content-type", reqContentType);
171
+ }
172
+
173
+ if (this.#addOperationIdHeader) {
174
+ headers.append("x-operation-id", operationId);
175
+ }
176
+
177
+ if (_headers) {
178
+ for (let k in _headers) {
179
+ headers.append(k, _headers[k]);
180
+ }
181
+ }
182
+
183
+ let req = new Request(url, { method, headers });
184
+
185
+ const interceptors = _interceptors;
186
+
187
+ if (interceptors?.req) {
188
+ req = await interceptors.req(req);
189
+ }
190
+
191
+ let res = await this.#httpClient.fetch(req);
192
+
193
+ if (interceptors?.res) {
194
+ res = await interceptors.res(req, res);
195
+ }
196
+
197
+ const body =
198
+ res.status === 204
199
+ ? null
200
+ : !res.ok
201
+ ? await res.clone().json()
202
+ : await res.json();
203
+
204
+ return {
205
+ ok: res.ok as any,
206
+ status: res.status as any,
207
+ body: body as any,
208
+ res,
209
+ };
210
+ }
211
+
212
+ ${
213
+ generateOrThrow
214
+ ? `async #handleOrThrow(
215
+ url: string,
216
+ operationId: string,
217
+ _interceptors: Interceptors,
218
+ method?: string,
219
+ _query?: { [k: string]: any },
220
+ _headers?: { [k: string]: string },
221
+ reqContentType?: string,
222
+ mapThrow?: (response: Response) => unknown | Promise<unknown>
223
+ ) {
224
+ if (_query) {
225
+ let q: [string, string][] = [];
226
+ for (let k in _query) {
227
+ const _v = (_query as any)[k];
228
+ if (_v === void 0) {
229
+ continue;
230
+ } else if (Array.isArray(_v)) {
231
+ for (let __v of _v) {
232
+ const v = typeof __v === "string" ? __v : String(__v);
233
+ q.push([k, v]);
234
+ }
235
+ } else {
236
+ const v = typeof _v === "string" ? _v : String(_v);
237
+ q.push([k, v]);
238
+ }
239
+ }
240
+ const searchParams = new URLSearchParams(q);
241
+ searchParams.sort();
242
+ url += \`?\${searchParams}\`;
243
+ }
244
+
245
+ const headers = new Headers();
246
+
247
+ if (reqContentType) {
248
+ headers.append("content-type", reqContentType);
249
+ }
250
+
251
+ if (this.#addOperationIdHeader) {
252
+ headers.append("x-operation-id", operationId);
253
+ }
254
+
255
+ if (_headers) {
256
+ for (let k in _headers) {
257
+ headers.append(k, _headers[k]);
258
+ }
259
+ }
260
+
261
+ let req = new Request(url, { method, headers });
262
+
263
+ const interceptors = _interceptors;
264
+
265
+ if (interceptors?.req) {
266
+ req = await interceptors.req(req);
267
+ }
268
+
269
+ let res = await this.#httpClient.fetch(req);
270
+
271
+ if (interceptors?.res) {
272
+ res = await interceptors.res(req, res);
273
+ }
274
+
275
+ if (!res.ok) {
276
+ let toThrow = typeof mapThrow === "function" ? mapThrow(res) : res;
277
+ if (typeof (toThrow as any)?.then === "function") {
278
+ toThrow = await toThrow;
279
+ }
280
+ throw toThrow;
281
+ }
282
+
283
+ const body = res.status === 204 ? null : await res.json();
284
+
285
+ return {
286
+ ok: res.ok as any,
287
+ status: res.status as any,
288
+ body: body as any,
289
+ res,
290
+ };
291
+ }`
292
+ : ""
293
+ }
78
294
  }
79
295
 
80
296
  ${results.map((x) => x.restCode).join("\n\n")}
81
- `,
297
+
298
+ type NullResponses = {
299
+ "*"?: (req: {
300
+ operationId: string;
301
+ url: URL;
302
+ method: string;
303
+ headers: Headers;
304
+ }) => { status?: number; body: unknown };
305
+ ${results
306
+ .map(
307
+ (x) => `${x.operationId}?: (req: {
308
+ operationId: "${x.operationId}";
309
+ url: URL;
310
+ method: string;
311
+ headers: Headers;
312
+ }) => ${
313
+ x.resBodyTypes.length === 0
314
+ ? `{ status?: number; body: unknown }`
315
+ : x.resBodyTypes
316
+ .map((x) => `{ status: ${x.status}; body: ${x.name} }`)
317
+ .join(" | ")
318
+ }`
319
+ )
320
+ .join(";")}
321
+ }
322
+
323
+ ${getHttpClientCode()}
324
+ `,
82
325
  { parser: "typescript" }
83
326
  )
84
327
  );
@@ -103,9 +346,17 @@ async function getCode(input: {
103
346
  parameters: OpenAPIV3_1.ParameterObject[] | null;
104
347
  requestBody: any;
105
348
  responses: OpenAPIV3_1.ResponsesObject | null;
349
+ generateOrThrow: boolean;
106
350
  }) {
107
- const { operationId, path, method, parameters, requestBody, responses } =
108
- input;
351
+ const {
352
+ operationId,
353
+ path,
354
+ method,
355
+ parameters,
356
+ requestBody,
357
+ responses,
358
+ generateOrThrow,
359
+ } = input;
109
360
  const pathParams = (parameters ?? []).filter((x) => x.in === "path");
110
361
  const queryParams = (parameters ?? []).filter((x) => x.in === "query");
111
362
  const { contentType: requestBodyContentType, schema: requestBodySchema } =
@@ -133,7 +384,7 @@ async function getCode(input: {
133
384
  const pathParamsSchema = getParamsSchema(pathParams);
134
385
  const queryParamsSchema = getParamsSchema(queryParams);
135
386
 
136
- const methodCode = `async ${operationId}(input: {
387
+ let methodCode = `async ${operationId}(input: {
137
388
  ${
138
389
  pathParams.length > 0
139
390
  ? `params${
@@ -152,7 +403,7 @@ async function getCode(input: {
152
403
  interceptors: Interceptors;
153
404
  }): ${
154
405
  resBodyTypes.length === 0
155
- ? `Promise<any>`
406
+ ? `Promise<unknown>`
156
407
  : `Promise<
157
408
  ${resBodyTypes
158
409
  .map(
@@ -173,75 +424,97 @@ async function getCode(input: {
173
424
  `
174
425
  )
175
426
  .join("\n")}
176
- let url = \`\${this.baseUrl}${compilePath(
177
- path
178
- .replace(/{/g, ":")
179
- .replace(/}/g, "")
180
- .split("/")
181
- .map((x) => (x.startsWith(":") ? x.replace(/-/g, "_") : x))
182
- .join("/")
183
- )(
184
- pathParams.reduce((acc: { [k: string]: string }, v) => {
185
- acc[v.name.replace(/-/g, "_")] = `\${input.params["${v.name}"]}`;
186
- return acc;
187
- }, {})
188
- )}\`
189
-
190
- if (input.query) {
191
- let q: [string, string][] = [];
192
- for (let k in input.query) {
193
- const _v = (input.query as any)[k];
194
- if (_v === void 0) {
195
- continue;
196
- } else if (Array.isArray(_v)) {
197
- for (let __v of _v) {
198
- const v = typeof __v === "string" ? __v : String(__v);
199
- q.push([k, v]);
200
- }
201
- } else {
202
- const v = typeof _v === "string" ? _v : String(_v);
203
- q.push([k, v]);
204
- }
205
- }
206
- const searchParams = new URLSearchParams(q);
207
- searchParams.sort();
208
- url += \`?\${searchParams}\`;
209
- }
210
-
211
- const headers = new Headers( ${
212
- requestBody == null ? "" : `{"content-type": "${requestBodyContentType}"}`
213
- });
214
- if (input?.headers) {
215
- for (let k in input.headers) {
216
- headers.append(k, input.headers[k]);
217
- }
218
- }
219
427
 
220
- let req = new Request(url, { ${
221
- method !== "get" ? `method: "${method.toLocaleUpperCase()}",` : ""
222
- }headers,${
223
- requestBodyContentType?.startsWith("application/json")
224
- ? `body: JSON.stringify(input.data),`
225
- : ""
226
- }});
227
-
228
- const interceptors = input.interceptors;
229
-
230
- if (interceptors?.req) {
231
- req = await interceptors.req(req);
428
+ return this.#handle(
429
+ \`\${this.#baseUrl}${compilePath(
430
+ path
431
+ .replace(/{/g, ":")
432
+ .replace(/}/g, "")
433
+ .split("/")
434
+ .map((x) => (x.startsWith(":") ? x.replace(/-/g, "_") : x))
435
+ .join("/")
436
+ )(
437
+ pathParams.reduce((acc: { [k: string]: string }, v) => {
438
+ acc[v.name.replace(/-/g, "_")] = `\${input.params["${v.name}"]}`;
439
+ return acc;
440
+ }, {})
441
+ )}\`,
442
+ "${operationId}",
443
+ input.interceptors,
444
+ ${method === "get" ? "undefined" : `"${method.toLocaleUpperCase()}"`},
445
+ input.query,
446
+ input.headers,
447
+ ${requestBody == null ? "undefined" : `"${requestBodyContentType}"`},
448
+ );
232
449
  }
450
+ `;
233
451
 
234
- let res = await fetch(req);
235
-
236
- if (interceptors?.res) {
237
- res = await interceptors.res(req, res);
452
+ if (generateOrThrow) {
453
+ methodCode += `\nasync ${operationId}OrThrow(input: {
454
+ ${
455
+ pathParams.length > 0
456
+ ? `params${
457
+ pathParamsSchema.required.length === 0 ? "?" : ""
458
+ }: ${await getInlineTypeScriptType(pathParamsSchema)};`
459
+ : ""
460
+ }${`query${
461
+ queryParams.length === 0 || queryParamsSchema.required.length === 0
462
+ ? "?"
463
+ : ""
464
+ }: ${await getInlineTypeScriptType(
465
+ queryParams.length === 0 ? { type: "object" } : queryParamsSchema
466
+ )};`}${
467
+ requestBody == null ? "" : `data: ${requestBodySchemaName};`
468
+ }headers?: { [k: string]: string };
469
+ interceptors: Interceptors;
470
+ mapThrow?: (response: Response) => unknown | Promise<unknown>;
471
+ }): ${
472
+ resBodyTypes.length === 0
473
+ ? `Promise<unknown>`
474
+ : `Promise<
475
+ ${resBodyTypes
476
+ .filter((x) => parseInt(x.status) <= 299)
477
+ .map(
478
+ (x) => `{ ok: true; status: ${x.status}; body: ${x.name}, res: Response }`
479
+ )
480
+ .join(" | ")}>`
481
+ } {
482
+ ${pathParams
483
+ .filter((x) => x.required)
484
+ .map(
485
+ (x) => `
486
+ if (input.params["${x.name}"] == null) {
487
+ throw new Error("Missing \`params[\\"${x.name}\\"]\`");
238
488
  }
489
+ `
490
+ )
491
+ .join("\n")}
239
492
 
240
- const body = res.status === 204 ? null : !res.ok ? await res.clone().json() : await res.json();
241
-
242
- return { ok: res.ok as any, status: res.status as any, body: body as any, res };
493
+ return this.#handleOrThrow(
494
+ \`\${this.#baseUrl}${compilePath(
495
+ path
496
+ .replace(/{/g, ":")
497
+ .replace(/}/g, "")
498
+ .split("/")
499
+ .map((x) => (x.startsWith(":") ? x.replace(/-/g, "_") : x))
500
+ .join("/")
501
+ )(
502
+ pathParams.reduce((acc: { [k: string]: string }, v) => {
503
+ acc[v.name.replace(/-/g, "_")] = `\${input.params["${v.name}"]}`;
504
+ return acc;
505
+ }, {})
506
+ )}\`,
507
+ "${operationId}",
508
+ input.interceptors,
509
+ ${method === "get" ? "undefined" : `"${method.toLocaleUpperCase()}"`},
510
+ input.query,
511
+ input.headers,
512
+ ${requestBody == null ? "undefined" : `"${requestBodyContentType}"`},
513
+ input.mapThrow,
514
+ );
243
515
  }
244
516
  `;
517
+ }
245
518
 
246
519
  const restCode = `${
247
520
  requestBodySchema == null
@@ -260,7 +533,7 @@ async function getCode(input: {
260
533
  )} = ${JSON.stringify(requestBodySchema)}`
261
534
  }`;
262
535
 
263
- return { methodCode, restCode, reqBodySchemas };
536
+ return { methodCode, restCode, reqBodySchemas, resBodyTypes };
264
537
  }
265
538
 
266
539
  function getParamsSchema(
@@ -341,3 +614,76 @@ function prepareSchema(schema: any) {
341
614
  }
342
615
  return schema;
343
616
  }
617
+
618
+ function getHttpClientCode() {
619
+ return prettier.format(
620
+ `type Fetch = typeof fetch;
621
+
622
+ class HttpClient {
623
+ #fetch: Fetch;
624
+
625
+ static create() {
626
+ return new this(fetch);
627
+ }
628
+
629
+ static createNull(input?: CreateNullFetchInput) {
630
+ return new this(createNullFetch(input));
631
+ }
632
+
633
+ constructor(fetch: Fetch) {
634
+ this.#fetch = fetch;
635
+ }
636
+
637
+ fetch(...params: Parameters<Fetch>): ReturnType<Fetch> {
638
+ return this.#fetch(...params);
639
+ }
640
+ }
641
+
642
+ type CreateNullFetchInput = {
643
+ responses?: (req: { url: URL; method: string; headers: Headers }) => {
644
+ body?: BodyInit;
645
+ status?: number | undefined;
646
+ headers?: HeadersInit;
647
+ };
648
+ };
649
+
650
+ function createNullFetch(input?: CreateNullFetchInput) {
651
+ return function fetch(...params: Parameters<Fetch>): ReturnType<Fetch> {
652
+ const [requestInfo, init] = params;
653
+ const url =
654
+ requestInfo instanceof URL
655
+ ? requestInfo
656
+ : requestInfo instanceof Request
657
+ ? getURL(requestInfo.url)
658
+ : getURL(requestInfo);
659
+ const method =
660
+ init?.method?.toUpperCase() ??
661
+ (requestInfo instanceof Request ? requestInfo.method : "GET");
662
+ const reqHeaders = new Headers(
663
+ requestInfo instanceof Request ? requestInfo.headers : init?.headers
664
+ );
665
+ const result = input?.responses?.({
666
+ url,
667
+ method,
668
+ headers: reqHeaders,
669
+ });
670
+ const resBody = result?.body;
671
+ const resStatus = result?.status;
672
+ const resHeaders = result?.headers;
673
+ return Promise.resolve(
674
+ new Response(resBody, { status: resStatus, headers: resHeaders })
675
+ );
676
+ };
677
+ }
678
+
679
+ function getURL(url: string) {
680
+ try {
681
+ return new URL(url);
682
+ } catch (e) {
683
+ return new URL(url, "https://stub.com");
684
+ }
685
+ }
686
+ `,
687
+ { parser: "typescript" }
688
+ );
689
+ }
package/src/generate.ts CHANGED
@@ -60,6 +60,9 @@ export const schema = {
60
60
  description: "module type for generated SDK",
61
61
  },
62
62
  variant: { enum: ["default", "remix"], default: "default" },
63
+ // TODO: remove this option after https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60924 is resolved.
64
+ env: { enum: ["browser", "node"], default: "browser" },
65
+ generateOrThrow: { type: "boolean", default: true },
63
66
  },
64
67
  additionalProperties: false,
65
68
  required: ["def", "outdir"],
@@ -108,7 +111,13 @@ export async function generate(opts) {
108
111
  }
109
112
 
110
113
  if (opts.variant === "remix") {
111
- return generateRemix({ api, outdir: path.resolve(opts.outdir), doc: _doc });
114
+ return generateRemix({
115
+ api,
116
+ outdir: path.resolve(opts.outdir),
117
+ doc: _doc,
118
+ env: opts.env,
119
+ generateOrThrow: opts.generateOrThrow,
120
+ });
112
121
  }
113
122
 
114
123
  const optsTypeGet = "{headers?: {[k: string]: string}, strategy?: 'network'}";