@technicity/openapi-sdk-generator 5.3.0 → 5.4.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.
@@ -73,7 +73,13 @@ async function generate(input) {
73
73
  await fs.writeFile(path.join(outdir, `Sdk.ts`), prettier.format(`${env === "browser"
74
74
  ? ""
75
75
  : `// TODO: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60924
76
- import { Request, Response, Headers } from "undici";`}import { HttpClient, CreateNullFetchInput } from "./HttpClient";
76
+ import {
77
+ fetch,
78
+ Response,
79
+ Request,
80
+ HeadersInit,
81
+ BodyInit,
82
+ Headers, } from "undici";`}
77
83
 
78
84
  export type Interceptors = { req?: (req: Request) => Promise<Request>, res?: (req: Request, res: Response) => Promise<Response> };
79
85
 
@@ -89,26 +95,27 @@ async function generate(input) {
89
95
  }
90
96
 
91
97
  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
- }
98
+ opts: SdkOpts & { responses?: NullResponses; }
100
99
  ) {
101
100
  const { responses: _responses, ...rest } = opts;
102
101
  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 });
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({}) };
110
112
  }
111
- : () => ({ body: JSON.stringify("{}") });
113
+ const result = fn({ ...req, operationId });
114
+ return {
115
+ status: result?.status,
116
+ body: JSON.stringify(result?.body),
117
+ };
118
+ };
112
119
  return new this({
113
120
  ...rest,
114
121
  httpClient: HttpClient.createNull({ responses }),
@@ -126,15 +133,27 @@ async function generate(input) {
126
133
 
127
134
  ${results.map((x) => x.methodCode).join("\n\n")}
128
135
 
129
- async #handle(
136
+ async #handle(input: {
130
137
  url: string,
131
138
  operationId: string,
132
139
  _interceptors: Interceptors,
133
140
  method?: string,
134
141
  _query?: { [k: string]: any },
135
142
  _headers?: { [k: string]: string },
143
+ _body?: unknown,
136
144
  reqContentType?: string,
137
- ) {
145
+ }) {
146
+ let {
147
+ url,
148
+ operationId,
149
+ _interceptors,
150
+ method,
151
+ _query,
152
+ _headers,
153
+ _body,
154
+ reqContentType,
155
+ } = input;
156
+
138
157
  if (_query) {
139
158
  let q: [string, string][] = [];
140
159
  for (let k in _query) {
@@ -172,7 +191,11 @@ async function generate(input) {
172
191
  }
173
192
  }
174
193
 
175
- let req = new Request(url, { method, headers });
194
+ let req = new Request(url, {
195
+ method,
196
+ headers,
197
+ body: _body === void 0 ? _body : JSON.stringify(_body)
198
+ });
176
199
 
177
200
  const interceptors = _interceptors;
178
201
 
@@ -202,16 +225,29 @@ async function generate(input) {
202
225
  }
203
226
 
204
227
  ${generateOrThrow
205
- ? `async #handleOrThrow(
228
+ ? `async #handleOrThrow(input: {
206
229
  url: string,
207
230
  operationId: string,
208
231
  _interceptors: Interceptors,
209
232
  method?: string,
210
233
  _query?: { [k: string]: any },
211
234
  _headers?: { [k: string]: string },
235
+ _body?: unknown,
212
236
  reqContentType?: string,
213
237
  mapThrow?: (response: Response) => unknown | Promise<unknown>
214
- ) {
238
+ }) {
239
+ let {
240
+ url,
241
+ operationId,
242
+ _interceptors,
243
+ method,
244
+ _query,
245
+ _headers,
246
+ _body,
247
+ reqContentType,
248
+ mapThrow,
249
+ } = input;
250
+
215
251
  if (_query) {
216
252
  let q: [string, string][] = [];
217
253
  for (let k in _query) {
@@ -249,7 +285,11 @@ async function generate(input) {
249
285
  }
250
286
  }
251
287
 
252
- let req = new Request(url, { method, headers });
288
+ let req = new Request(url, {
289
+ method,
290
+ headers,
291
+ body: _body === void 0 ? _body : JSON.stringify(_body)
292
+ });
253
293
 
254
294
  const interceptors = _interceptors;
255
295
 
@@ -284,12 +324,34 @@ async function generate(input) {
284
324
  }
285
325
 
286
326
  ${results.map((x) => x.restCode).join("\n\n")}
287
- `, { parser: "typescript" }));
327
+
328
+ type NullResponses = {
329
+ "*"?: (req: {
330
+ operationId: string;
331
+ url: URL;
332
+ method: string;
333
+ headers: Headers;
334
+ }) => { status?: number; body: unknown };
335
+ ${results
336
+ .map((x) => `${x.operationId}?: (req: {
337
+ operationId: "${x.operationId}";
338
+ url: URL;
339
+ method: string;
340
+ headers: Headers;
341
+ }) => ${x.resBodyTypes.length === 0
342
+ ? `{ status?: number; body: unknown }`
343
+ : x.resBodyTypes
344
+ .map((x) => `{ status: ${x.status}; body: ${x.name} }`)
345
+ .join(" | ")}`)
346
+ .join(";")}
347
+ }
348
+
349
+ ${getHttpClientCode()}
350
+ `, { parser: "typescript" }));
288
351
  await fs.writeFile(path.join(outdir, `schemas.ts`), prettier.format(results.map((x) => x.reqBodySchemas).join("\n\n"), {
289
352
  parser: "typescript",
290
353
  }));
291
354
  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));
293
355
  }
294
356
  exports.generate = generate;
295
357
  async function getCode(input) {
@@ -325,7 +387,7 @@ async function getCode(input) {
325
387
  : ""}: ${await getInlineTypeScriptType(queryParams.length === 0 ? { type: "object" } : queryParamsSchema)};`}${requestBody == null ? "" : `data: ${requestBodySchemaName};`}headers?: { [k: string]: string };
326
388
  interceptors: Interceptors;
327
389
  }): ${resBodyTypes.length === 0
328
- ? `Promise<any>`
390
+ ? `Promise<unknown>`
329
391
  : `Promise<
330
392
  ${resBodyTypes
331
393
  .map((x) => `{ ok: ${parseInt(x.status) <= 299}; status: ${x.status}; body: ${x.name}, res: Response }`)
@@ -339,8 +401,8 @@ async function getCode(input) {
339
401
  `)
340
402
  .join("\n")}
341
403
 
342
- return this.#handle(
343
- \`\${this.#baseUrl}${(0, path_to_regexp_1.compile)(path
404
+ return this.#handle({
405
+ url: \`\${this.#baseUrl}${(0, path_to_regexp_1.compile)(path
344
406
  .replace(/{/g, ":")
345
407
  .replace(/}/g, "")
346
408
  .split("/")
@@ -349,13 +411,13 @@ async function getCode(input) {
349
411
  acc[v.name.replace(/-/g, "_")] = `\${input.params["${v.name}"]}`;
350
412
  return acc;
351
413
  }, {}))}\`,
352
- "${operationId}",
353
- input.interceptors,
354
- ${method === "get" ? "undefined" : `"${method.toLocaleUpperCase()}"`},
355
- input.query,
356
- input.headers,
357
- ${requestBody == null ? "undefined" : `"${requestBodyContentType}"`},
358
- );
414
+ operationId: "${operationId}",
415
+ _interceptors: input.interceptors,${method === "get" ? "" : `method: "${method.toLocaleUpperCase()}",`}
416
+ _query: input.query,
417
+ _headers: input.headers,${requestBody == null
418
+ ? ""
419
+ : `_body: input.data,reqContentType: "${requestBodyContentType}",`}
420
+ });
359
421
  }
360
422
  `;
361
423
  if (generateOrThrow) {
@@ -368,7 +430,7 @@ async function getCode(input) {
368
430
  interceptors: Interceptors;
369
431
  mapThrow?: (response: Response) => unknown | Promise<unknown>;
370
432
  }): ${resBodyTypes.length === 0
371
- ? `Promise<any>`
433
+ ? `Promise<unknown>`
372
434
  : `Promise<
373
435
  ${resBodyTypes
374
436
  .filter((x) => parseInt(x.status) <= 299)
@@ -383,8 +445,8 @@ async function getCode(input) {
383
445
  `)
384
446
  .join("\n")}
385
447
 
386
- return this.#handleOrThrow(
387
- \`\${this.#baseUrl}${(0, path_to_regexp_1.compile)(path
448
+ return this.#handleOrThrow({
449
+ url: \`\${this.#baseUrl}${(0, path_to_regexp_1.compile)(path
388
450
  .replace(/{/g, ":")
389
451
  .replace(/}/g, "")
390
452
  .split("/")
@@ -393,14 +455,14 @@ async function getCode(input) {
393
455
  acc[v.name.replace(/-/g, "_")] = `\${input.params["${v.name}"]}`;
394
456
  return acc;
395
457
  }, {}))}\`,
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
- );
458
+ operationId: "${operationId}",
459
+ _interceptors: input.interceptors,${method === "get" ? "" : `method: "${method.toLocaleUpperCase()}",`}
460
+ _query: input.query,
461
+ _headers: input.headers,${requestBody == null
462
+ ? ""
463
+ : `_body: input.data,reqContentType: "${requestBodyContentType}",`}
464
+ mapThrow: input.mapThrow,
465
+ });
404
466
  }
405
467
  `;
406
468
  }
@@ -413,7 +475,7 @@ async function getCode(input) {
413
475
  const reqBodySchemas = `${requestBodySchema == null
414
476
  ? ""
415
477
  : `export const schemaReqData${(0, pascal_case_1.pascalCase)(operationId)} = ${JSON.stringify(requestBodySchema)}`}`;
416
- return { methodCode, restCode, reqBodySchemas };
478
+ return { methodCode, restCode, reqBodySchemas, resBodyTypes };
417
479
  }
418
480
  function getParamsSchema(params) {
419
481
  const properties = params.reduce((acc, v) => {
@@ -485,22 +547,10 @@ function prepareSchema(schema) {
485
547
  }
486
548
  return schema;
487
549
  }
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;
550
+ function getHttpClientCode() {
551
+ return prettier.format(`type Fetch = typeof fetch;
502
552
 
503
- export class HttpClient {
553
+ class HttpClient {
504
554
  #fetch: Fetch;
505
555
 
506
556
  static create() {
@@ -520,7 +570,7 @@ function getHttpClientCode(env) {
520
570
  }
521
571
  }
522
572
 
523
- export type CreateNullFetchInput = {
573
+ type CreateNullFetchInput = {
524
574
  responses?: (req: { url: URL; method: string; headers: Headers }) => {
525
575
  body?: BodyInit;
526
576
  status?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-remix.js","sourceRoot":"","sources":["../src/generate-remix.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,2CAA6B;AAC7B,8CAAgC;AAEhC,qDAAkD;AAClD,yEAAoD;AACpD,mDAAwD;AACxD,mHAA0E;AAC1E,gFAA4C;AAC5C,6CAAyC;AACzC,mDAAqC;AACrC,8CAAsB;AAEf,KAAK,UAAU,QAAQ,CAAC,KAM9B;IACC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAEpD,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5D,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACpC;IAED,IAAI,OAAO,GAKL,EAAE,CAAC;IAET,OAAO;IACP,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC;IAEF,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACpC,OAAO;QACP,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;QACF,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;YACjD,MAAM,WAAW,GAAG,IAAA,+BAAc,EAAC,EAAE,CAAC,CAAC;YACvC,MAAM,UAAU,GAAI,EAAU,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;YACrD,MAAM,SAAS,GAAI,EAAU,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;YACnD,MAAM,WAAW,GAAI,EAAU,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;YAEvD,OAAO,CAAC,IAAI,CAAC;gBACX,WAAW;gBACX,GAAG,CAAC,MAAM,OAAO,CAAC;oBAChB,WAAW;oBACX,IAAI,EAAE,CAAC;oBACP,MAAM;oBACN,UAAU;oBACV,WAAW;oBACX,SAAS;oBACT,eAAe;iBAChB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;KACF;IAED,MAAM,IAAA,aAAG,EAAC,MAAM,CAAC,CAAC;IAClB,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC3B,QAAQ,CAAC,MAAM,CACb,GACE,GAAG,KAAK,SAAS;QACf,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;2DAEN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmDE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8E7C,eAAe;QACb,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6EJ;QACE,CAAC,CAAC,EACN;;;MAGA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5C,EACC,EAAE,MAAM,EAAE,YAAY,EAAE,CACzB,CACF,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACjE,MAAM,EAAE,YAAY;KACrB,CAAC,CACH,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CACnC,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAClC,iBAAiB,CAAC,GAAG,CAAC,CACvB,CAAC;AACJ,CAAC;AAxSD,4BAwSC;AAED,KAAK,UAAU,OAAO,CAAC,KAQtB;IACC,MAAM,EACJ,WAAW,EACX,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,eAAe,GAChB,GAAG,KAAK,CAAC;IACV,MAAM,UAAU,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACvE,MAAM,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,EAAE,iBAAiB,EAAE,GACtE,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;IAErD,MAAM,qBAAqB,GAAG,UAAU,IAAA,wBAAU,EAAC,WAAW,CAAC,EAAE,CAAC;IAClE,IAAI,iBAAiB,EAAE,KAAK,EAAE;QAC5B,iBAAiB,CAAC,KAAK,GAAG,qBAAqB,CAAC;KACjD;IAED,IAAI,YAAY,GAAqD,EAAE,CAAC;IACxE,IAAI,SAAS,IAAI,IAAI,EAAE;QACrB,KAAK,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACxD,IAAI,MAAM,KAAK,KAAK,EAAE;gBACpB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;aACrD;iBAAM;gBACL,MAAM,MAAM,GAAI,QAAgB,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBACxE,MAAM,IAAI,GAAG,UAAU,MAAM,GAAG,IAAA,wBAAU,EAAC,WAAW,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAChD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aAC3C;SACF;KACF;IAED,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAEvD,IAAI,UAAU,GAAG,SAAS,WAAW;MAEjC,UAAU,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,CAAC,SACE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACjD,KAAK,MAAM,uBAAuB,CAAC,gBAAgB,CAAC,GAAG;QACzD,CAAC,CAAC,EACN,GAAG,QACH,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QACjE,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,EACN,KAAK,MAAM,uBAAuB,CAChC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAClE,GAAG,GACF,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,qBAAqB,GAC3D;;QAGE,YAAY,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC;IACJ,YAAY;aACX,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,SAAS,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,MAAM,WACrD,CAAC,CAAC,IACJ,mBAAmB,CACtB;aACA,IAAI,CAAC,KAAK,CAAC,GACd;MACI,UAAU;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACzB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC;wBACS,CAAC,CAAC,IAAI;6CACe,CAAC,CAAC,IAAI;;KAE9C,CACE;SACA,IAAI,CAAC,IAAI,CAAC;;;6BAGY,IAAA,wBAAW,EAC9B,IAAI;SACD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1D,IAAI,CAAC,GAAG,CAAC,CACb,CACC,UAAU,CAAC,MAAM,CAAC,CAAC,GAA4B,EAAE,CAAC,EAAE,EAAE;QACpD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,IAAI,KAAK,CAAC;QACjE,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CACP;WACE,WAAW;;UAEZ,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,GAAG;;;UAGlE,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,sBAAsB,GAAG;;;CAG1E,CAAC;IAEA,IAAI,eAAe,EAAE;QACnB,UAAU,IAAI,WAAW,WAAW;MAElC,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,SACE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACjD,KAAK,MAAM,uBAAuB,CAAC,gBAAgB,CAAC,GAAG;YACzD,CAAC,CAAC,EACN,GAAG,QACD,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YACjE,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,EACN,KAAK,MAAM,uBAAuB,CAChC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAClE,GAAG,GACF,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,qBAAqB,GAC3D;;;QAIA,YAAY,CAAC,MAAM,KAAK,CAAC;YACvB,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC;IACJ,YAAY;iBACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;iBACxC,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,IAAI,mBAAmB,CAC3E;iBACA,IAAI,CAAC,KAAK,CAAC,GACd;MACI,UAAU;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aACzB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC;wBACS,CAAC,CAAC,IAAI;6CACe,CAAC,CAAC,IAAI;;KAE9C,CACE;aACA,IAAI,CAAC,IAAI,CAAC;;;6BAGY,IAAA,wBAAW,EAC9B,IAAI;aACD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;aAClB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;aACjB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1D,IAAI,CAAC,GAAG,CAAC,CACb,CACC,UAAU,CAAC,MAAM,CAAC,CAAC,GAA4B,EAAE,CAAC,EAAE,EAAE;YACpD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,IAAI,KAAK,CAAC;YACjE,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CACP;WACE,WAAW;;UAEZ,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,GAAG;;;UAGlE,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,sBAAsB,GAAG;;;;CAI1E,CAAC;KACC;IAED,MAAM,QAAQ,GAAG,GACf,iBAAiB,IAAI,IAAI;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,MAAM,cAAc,CAAC,iBAAiB,EAAE,qBAAqB,CACnE;;IAEE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;GACzD,CAAC;IAEF,MAAM,cAAc,GAAG,GACrB,iBAAiB,IAAI,IAAI;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,6BAA6B,IAAA,wBAAU,EACrC,WAAW,CACZ,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAC9C,EAAE,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CACtB,MAAiE;IAEjE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAyB,EAAE,CAAC,EAAE,EAAE;QAChE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAgB,EAAE,WAAmB;IAC/D,MAAM,OAAO,GAAG,WAAW,EAAE,OAAO,CAAC;IACrC,IAAI,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,WAAW,CAAC,CAAC;KACpD;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,WAAW,CAAC,CAAC;KAC1E;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAY,EAAE,IAAY;IACtD,IAAI,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,eAAe,IAAI,aAAa,CAAC;KACzC;IACD,IAAI,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC5B,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,IAAA,mCAAO,EAAC,MAAM,EAAE,IAAI,EAAE;QAC3B,aAAa,EAAE,EAAE;QACjB,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,OAAY;IACjD,IAAI,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC5B,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,qDAAqD;IACrD,IAAI,IAAI,GAAG,MAAM,IAAA,mCAAO,EAAC,MAAM,EAAE,OAAO,EAAE;QACxC,aAAa,EAAE,EAAE;QACjB,2BAA2B,EAAE,KAAK;KACnC,CAAC,CAAC;IACH,OAAO,CACL,IAAI;SACD,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACtC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;QACpC,uBAAuB;SACtB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAW;IAChC,MAAM,GAAG,IAAA,uCAAY,EAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,oEAAoE;IACpE,wBAAwB;IACxB,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,IAAA,8BAAQ,EAAC,MAAM,EAAE;YACf,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;gBACb,IAAI,MAAM,CAAC,KAAK,EAAE;oBAChB,OAAO,MAAM,CAAC,KAAK,CAAC;iBACrB;gBACD,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjB,OAAO,MAAM,CAAC,MAAM,CAAC;iBACtB;gBACD,4DAA4D;gBAC5D,IAAI,MAAM,CAAC,OAAO,EAAE;oBAClB,OAAO,MAAM,CAAC,OAAO,CAAC;iBACvB;YACH,CAAC;SACF,CAAC,CAAC;KACJ;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAuB;IAChD,OAAO,QAAQ,CAAC,MAAM,CACpB,GACE,GAAG,KAAK,SAAS;QACf,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;;;;;;;;mBASN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoED,EACC,EAAE,MAAM,EAAE,YAAY,EAAE,CACzB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generate-remix.js","sourceRoot":"","sources":["../src/generate-remix.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.3.0",
3
+ "version": "5.4.1",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "bin": {
@@ -29,6 +29,7 @@ export async function generate(input: {
29
29
  methodCode: string;
30
30
  restCode: string;
31
31
  reqBodySchemas: string;
32
+ resBodyTypes: { name: string; status: string; type: string }[];
32
33
  }[] = [];
33
34
 
34
35
  // Sort
@@ -72,8 +73,14 @@ export async function generate(input: {
72
73
  env === "browser"
73
74
  ? ""
74
75
  : `// TODO: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60924
75
- import { Request, Response, Headers } from "undici";`
76
- }import { HttpClient, CreateNullFetchInput } from "./HttpClient";
76
+ import {
77
+ fetch,
78
+ Response,
79
+ Request,
80
+ HeadersInit,
81
+ BodyInit,
82
+ Headers, } from "undici";`
83
+ }
77
84
 
78
85
  export type Interceptors = { req?: (req: Request) => Promise<Request>, res?: (req: Request, res: Response) => Promise<Response> };
79
86
 
@@ -89,26 +96,27 @@ export async function generate(input: {
89
96
  }
90
97
 
91
98
  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
- }
99
+ opts: SdkOpts & { responses?: NullResponses; }
100
100
  ) {
101
101
  const { responses: _responses, ...rest } = opts;
102
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 });
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}.\`);
110
109
  }
111
- : () => ({ body: JSON.stringify("{}") });
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
+ };
112
120
  return new this({
113
121
  ...rest,
114
122
  httpClient: HttpClient.createNull({ responses }),
@@ -126,15 +134,27 @@ export async function generate(input: {
126
134
 
127
135
  ${results.map((x) => x.methodCode).join("\n\n")}
128
136
 
129
- async #handle(
137
+ async #handle(input: {
130
138
  url: string,
131
139
  operationId: string,
132
140
  _interceptors: Interceptors,
133
141
  method?: string,
134
142
  _query?: { [k: string]: any },
135
143
  _headers?: { [k: string]: string },
144
+ _body?: unknown,
136
145
  reqContentType?: string,
137
- ) {
146
+ }) {
147
+ let {
148
+ url,
149
+ operationId,
150
+ _interceptors,
151
+ method,
152
+ _query,
153
+ _headers,
154
+ _body,
155
+ reqContentType,
156
+ } = input;
157
+
138
158
  if (_query) {
139
159
  let q: [string, string][] = [];
140
160
  for (let k in _query) {
@@ -172,7 +192,11 @@ export async function generate(input: {
172
192
  }
173
193
  }
174
194
 
175
- let req = new Request(url, { method, headers });
195
+ let req = new Request(url, {
196
+ method,
197
+ headers,
198
+ body: _body === void 0 ? _body : JSON.stringify(_body)
199
+ });
176
200
 
177
201
  const interceptors = _interceptors;
178
202
 
@@ -203,16 +227,29 @@ export async function generate(input: {
203
227
 
204
228
  ${
205
229
  generateOrThrow
206
- ? `async #handleOrThrow(
230
+ ? `async #handleOrThrow(input: {
207
231
  url: string,
208
232
  operationId: string,
209
233
  _interceptors: Interceptors,
210
234
  method?: string,
211
235
  _query?: { [k: string]: any },
212
236
  _headers?: { [k: string]: string },
237
+ _body?: unknown,
213
238
  reqContentType?: string,
214
239
  mapThrow?: (response: Response) => unknown | Promise<unknown>
215
- ) {
240
+ }) {
241
+ let {
242
+ url,
243
+ operationId,
244
+ _interceptors,
245
+ method,
246
+ _query,
247
+ _headers,
248
+ _body,
249
+ reqContentType,
250
+ mapThrow,
251
+ } = input;
252
+
216
253
  if (_query) {
217
254
  let q: [string, string][] = [];
218
255
  for (let k in _query) {
@@ -250,7 +287,11 @@ export async function generate(input: {
250
287
  }
251
288
  }
252
289
 
253
- let req = new Request(url, { method, headers });
290
+ let req = new Request(url, {
291
+ method,
292
+ headers,
293
+ body: _body === void 0 ? _body : JSON.stringify(_body)
294
+ });
254
295
 
255
296
  const interceptors = _interceptors;
256
297
 
@@ -286,7 +327,34 @@ export async function generate(input: {
286
327
  }
287
328
 
288
329
  ${results.map((x) => x.restCode).join("\n\n")}
289
- `,
330
+
331
+ type NullResponses = {
332
+ "*"?: (req: {
333
+ operationId: string;
334
+ url: URL;
335
+ method: string;
336
+ headers: Headers;
337
+ }) => { status?: number; body: unknown };
338
+ ${results
339
+ .map(
340
+ (x) => `${x.operationId}?: (req: {
341
+ operationId: "${x.operationId}";
342
+ url: URL;
343
+ method: string;
344
+ headers: Headers;
345
+ }) => ${
346
+ x.resBodyTypes.length === 0
347
+ ? `{ status?: number; body: unknown }`
348
+ : x.resBodyTypes
349
+ .map((x) => `{ status: ${x.status}; body: ${x.name} }`)
350
+ .join(" | ")
351
+ }`
352
+ )
353
+ .join(";")}
354
+ }
355
+
356
+ ${getHttpClientCode()}
357
+ `,
290
358
  { parser: "typescript" }
291
359
  )
292
360
  );
@@ -302,11 +370,6 @@ export async function generate(input: {
302
370
  path.join(outdir, "api.json"),
303
371
  JSON.stringify(input.doc, null, 2)
304
372
  );
305
-
306
- await fs.writeFile(
307
- path.join(outdir, "HttpClient.ts"),
308
- getHttpClientCode(env)
309
- );
310
373
  }
311
374
 
312
375
  async function getCode(input: {
@@ -373,7 +436,7 @@ async function getCode(input: {
373
436
  interceptors: Interceptors;
374
437
  }): ${
375
438
  resBodyTypes.length === 0
376
- ? `Promise<any>`
439
+ ? `Promise<unknown>`
377
440
  : `Promise<
378
441
  ${resBodyTypes
379
442
  .map(
@@ -395,8 +458,8 @@ async function getCode(input: {
395
458
  )
396
459
  .join("\n")}
397
460
 
398
- return this.#handle(
399
- \`\${this.#baseUrl}${compilePath(
461
+ return this.#handle({
462
+ url: \`\${this.#baseUrl}${compilePath(
400
463
  path
401
464
  .replace(/{/g, ":")
402
465
  .replace(/}/g, "")
@@ -409,13 +472,17 @@ async function getCode(input: {
409
472
  return acc;
410
473
  }, {})
411
474
  )}\`,
412
- "${operationId}",
413
- input.interceptors,
414
- ${method === "get" ? "undefined" : `"${method.toLocaleUpperCase()}"`},
415
- input.query,
416
- input.headers,
417
- ${requestBody == null ? "undefined" : `"${requestBodyContentType}"`},
418
- );
475
+ operationId: "${operationId}",
476
+ _interceptors: input.interceptors,${
477
+ method === "get" ? "" : `method: "${method.toLocaleUpperCase()}",`
478
+ }
479
+ _query: input.query,
480
+ _headers: input.headers,${
481
+ requestBody == null
482
+ ? ""
483
+ : `_body: input.data,reqContentType: "${requestBodyContentType}",`
484
+ }
485
+ });
419
486
  }
420
487
  `;
421
488
 
@@ -440,7 +507,7 @@ async function getCode(input: {
440
507
  mapThrow?: (response: Response) => unknown | Promise<unknown>;
441
508
  }): ${
442
509
  resBodyTypes.length === 0
443
- ? `Promise<any>`
510
+ ? `Promise<unknown>`
444
511
  : `Promise<
445
512
  ${resBodyTypes
446
513
  .filter((x) => parseInt(x.status) <= 299)
@@ -460,8 +527,8 @@ async function getCode(input: {
460
527
  )
461
528
  .join("\n")}
462
529
 
463
- return this.#handleOrThrow(
464
- \`\${this.#baseUrl}${compilePath(
530
+ return this.#handleOrThrow({
531
+ url: \`\${this.#baseUrl}${compilePath(
465
532
  path
466
533
  .replace(/{/g, ":")
467
534
  .replace(/}/g, "")
@@ -474,14 +541,18 @@ async function getCode(input: {
474
541
  return acc;
475
542
  }, {})
476
543
  )}\`,
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
- );
544
+ operationId: "${operationId}",
545
+ _interceptors: input.interceptors,${
546
+ method === "get" ? "" : `method: "${method.toLocaleUpperCase()}",`
547
+ }
548
+ _query: input.query,
549
+ _headers: input.headers,${
550
+ requestBody == null
551
+ ? ""
552
+ : `_body: input.data,reqContentType: "${requestBodyContentType}",`
553
+ }
554
+ mapThrow: input.mapThrow,
555
+ });
485
556
  }
486
557
  `;
487
558
  }
@@ -503,7 +574,7 @@ async function getCode(input: {
503
574
  )} = ${JSON.stringify(requestBodySchema)}`
504
575
  }`;
505
576
 
506
- return { methodCode, restCode, reqBodySchemas };
577
+ return { methodCode, restCode, reqBodySchemas, resBodyTypes };
507
578
  }
508
579
 
509
580
  function getParamsSchema(
@@ -585,25 +656,11 @@ function prepareSchema(schema: any) {
585
656
  return schema;
586
657
  }
587
658
 
588
- function getHttpClientCode(env: "browser" | "node") {
659
+ function getHttpClientCode() {
589
660
  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;
661
+ `type Fetch = typeof fetch;
605
662
 
606
- export class HttpClient {
663
+ class HttpClient {
607
664
  #fetch: Fetch;
608
665
 
609
666
  static create() {
@@ -623,7 +680,7 @@ function getHttpClientCode(env: "browser" | "node") {
623
680
  }
624
681
  }
625
682
 
626
- export type CreateNullFetchInput = {
683
+ type CreateNullFetchInput = {
627
684
  responses?: (req: { url: URL; method: string; headers: Headers }) => {
628
685
  body?: BodyInit;
629
686
  status?: number | undefined;
@@ -1,76 +0,0 @@
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
- }