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