@hyper-fetch/cli 7.2.6 → 7.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.
package/README.md CHANGED
@@ -13,9 +13,6 @@
13
13
  <a href="https://www.npmjs.com/package/hyper-fetch">
14
14
  <img src="https://custom-icon-badges.demolab.com/npm/v/hyper-fetch.svg?logo=npm&color=e76f51" />
15
15
  </a>
16
- <a href="https://api.codeclimate.com/v1/badges/eade9435e75ecea0c004/test_coverage">
17
- <img src="https://api.codeclimate.com/v1/badges/eade9435e75ecea0c004/test_coverage" />
18
- </a>
19
16
  <a href="https://github.com/BetterTyped/hyper-fetch">
20
17
  <img src="https://custom-icon-badges.demolab.com/badge/typescript-%23007ACC.svg?logo=typescript&logoColor=white" />
21
18
  </a>
package/dist/index.d.ts CHANGED
@@ -59,14 +59,16 @@ declare class OpenapiRequestGenerator {
59
59
  sdkSchema: string;
60
60
  createSdkFn: string;
61
61
  }>;
62
- static generateRequestInstanceType({ id, path: endpoint }: {
62
+ static generateRequestInstanceType({ id, path: endpoint, queryParamsRequired }: {
63
63
  id: string;
64
64
  path: string;
65
+ queryParamsRequired?: boolean;
65
66
  }, types: Record<string, string>): string;
66
- static generateHyperFetchRequest({ id, path: relPath, method }: {
67
+ static generateHyperFetchRequest({ id, path: relPath, method, queryParamsRequired, }: {
67
68
  id: string;
68
69
  path: string;
69
70
  method: string;
71
+ queryParamsRequired?: boolean;
70
72
  }, types: Record<string, string>): string;
71
73
  static generateTypes({ id, pathParametersType, queryParametersType, requestBodyType, errorType, responseType, }: {
72
74
  id: string;
@@ -89,6 +91,7 @@ declare class OpenapiRequestGenerator {
89
91
  responseType: string;
90
92
  path: string;
91
93
  method: string;
94
+ queryParamsRequired: boolean;
92
95
  };
93
96
  static validateSchema(openapiDocument: Document): void;
94
97
  static prepareSchema(openapiDocument: Document): Promise<{
package/dist/index.js CHANGED
@@ -2236,7 +2236,7 @@ function handleError(error) {
2236
2236
  logger.break();
2237
2237
  logger.error(`Something went wrong. Please check the error below for more details.`);
2238
2238
  logger.error(`If the problem persists, please open an issue on GitHub.`);
2239
- logger.error("");
2239
+ logger.break();
2240
2240
  if (typeof error === "string") {
2241
2241
  logger.error(error);
2242
2242
  logger.break();
@@ -2255,6 +2255,7 @@ function handleError(error) {
2255
2255
  logger.break();
2256
2256
  process.exit(1);
2257
2257
  }
2258
+ logger.error(JSON.stringify({ error }));
2258
2259
  logger.break();
2259
2260
  process.exit(1);
2260
2261
  }
@@ -2532,20 +2533,30 @@ var _OpenapiRequestGenerator = class _OpenapiRequestGenerator {
2532
2533
  const segments = relPath.split("/").filter(Boolean);
2533
2534
  let currentLevel = schemaTree;
2534
2535
  for (const segment of segments) {
2535
- const key = segment.startsWith(":") ? `$${segment.slice(1)}` : segment;
2536
+ let key;
2537
+ if (segment.startsWith(":")) {
2538
+ key = `$${segment.slice(1)}`;
2539
+ } else if (segment.includes("-")) {
2540
+ key = segment.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
2541
+ } else {
2542
+ key = segment;
2543
+ }
2536
2544
  if (!currentLevel[key]) {
2537
2545
  currentLevel[key] = {};
2538
2546
  }
2539
2547
  currentLevel = currentLevel[key];
2540
2548
  }
2541
- currentLevel[method.toLowerCase()] = requestInstanceType;
2549
+ currentLevel[`$${method.toLowerCase()}`] = requestInstanceType;
2542
2550
  });
2543
2551
  const sdkSchema = `export type SdkSchema<Client extends ClientInstance> = {
2544
2552
  ${formatSchema(schemaTree)}
2545
2553
  }`;
2546
2554
  const createSdkFn = `
2547
- export const createSdk = <Client extends ClientInstance>(client: Client) => {
2548
- return coreCreateSdk<Client, SdkSchema<Client>>(client);
2555
+
2556
+ export type { Components };
2557
+
2558
+ export const createSdk = <Client extends ClientInstance>(client: Client, options?: Parameters<typeof coreCreateSdk>[1] | undefined) => {
2559
+ return coreCreateSdk<Client, SdkSchema<Client>>(client, options);
2549
2560
  };
2550
2561
  `;
2551
2562
  return { schemaTypes, generatedTypes, sdkSchema, createSdkFn };
@@ -2591,14 +2602,20 @@ export const createSdk = <Client extends ClientInstance>(client: Client) => {
2591
2602
  return generatedPath;
2592
2603
  });
2593
2604
  }
2594
- static generateRequestInstanceType({ id, path: endpoint }, types) {
2605
+ static generateRequestInstanceType({ id, path: endpoint, queryParamsRequired }, types) {
2595
2606
  const Response = types[`${createTypeBaseName(id)}ResponseType`] ? `${createTypeBaseName(id)}ResponseType` : void 0;
2596
2607
  const Payload = types[`${createTypeBaseName(id)}RequestBody`] ? `${createTypeBaseName(id)}RequestBody` : void 0;
2597
2608
  const LocalError = types[`${createTypeBaseName(id)}ErrorType`] ? `${createTypeBaseName(id)}ErrorType` : void 0;
2598
2609
  const QueryParams = types[`${createTypeBaseName(id)}QueryParams`] ? `${createTypeBaseName(id)}QueryParams` : void 0;
2599
- return `Request<${Response}, ${Payload}, ${QueryParams}, ${LocalError}, "${endpoint}", Client>`;
2610
+ const QueryParamsGeneric = QueryParams && !queryParamsRequired ? `${QueryParams} | undefined` : QueryParams;
2611
+ return `Request<${Response}, ${Payload}, ${QueryParamsGeneric}, ${LocalError}, "${endpoint}", Client>`;
2600
2612
  }
2601
- static generateHyperFetchRequest({ id, path: relPath, method }, types) {
2613
+ static generateHyperFetchRequest({
2614
+ id,
2615
+ path: relPath,
2616
+ method,
2617
+ queryParamsRequired
2618
+ }, types) {
2602
2619
  const Response = types[`${createTypeBaseName(id)}ResponseType`] ? `${createTypeBaseName(id)}ResponseType` : void 0;
2603
2620
  const Payload = types[`${createTypeBaseName(id)}RequestBody`] ? `${createTypeBaseName(id)}RequestBody` : void 0;
2604
2621
  const LocalError = types[`${createTypeBaseName(id)}ErrorType`] ? `${createTypeBaseName(id)}ErrorType` : void 0;
@@ -2621,7 +2638,8 @@ export const createSdk = <Client extends ClientInstance>(client: Client) => {
2621
2638
  addToGenericType("error", LocalError);
2622
2639
  }
2623
2640
  if (QueryParams) {
2624
- addToGenericType("query", QueryParams);
2641
+ const key = !queryParamsRequired ? "queryParams?" : "queryParams";
2642
+ addToGenericType(key, QueryParams);
2625
2643
  }
2626
2644
  if (genericType) {
2627
2645
  genericType = `<{${genericType}}>`;
@@ -2676,6 +2694,9 @@ export const createSdk = <Client extends ClientInstance>(client: Client) => {
2676
2694
  ).map(({ path: errorPath }) => errorPath).value();
2677
2695
  const responseType = !lodash.isEmpty(responseTypePaths) ? responseTypePaths.join(" | ") : "any";
2678
2696
  const errorType = !lodash.isEmpty(errorTypePaths) ? errorTypePaths.join(" | ") : "undefined";
2697
+ const queryParamsRequired = Array.isArray(operation.parameters) ? operation.parameters.some((p) => {
2698
+ return "in" in p && p.in === "query" && p.required === true;
2699
+ }) : false;
2679
2700
  return {
2680
2701
  id: normalizedOperationId,
2681
2702
  pathParametersType,
@@ -2684,7 +2705,8 @@ export const createSdk = <Client extends ClientInstance>(client: Client) => {
2684
2705
  errorType,
2685
2706
  responseType,
2686
2707
  path: adjustPathParamsFormat(relPath),
2687
- method: method ? method.toUpperCase() : "get" /* GET */
2708
+ method: method ? method.toUpperCase() : "get" /* GET */,
2709
+ queryParamsRequired
2688
2710
  };
2689
2711
  }
2690
2712
  static validateSchema(openapiDocument) {
@@ -3048,9 +3070,12 @@ var main = () => __async(null, null, function* () {
3048
3070
  description: cmd.description()
3049
3071
  }))
3050
3072
  });
3073
+ yield program.parseAsync([process.argv[0], process.argv[1], chosenCommand]);
3074
+ } else {
3075
+ yield program.parseAsync(process.argv);
3051
3076
  }
3052
- yield program.parseAsync([process.argv[0], process.argv[1], chosenCommand]);
3053
3077
  } catch (e) {
3078
+ handleError(e);
3054
3079
  if (e instanceof Error) {
3055
3080
  if (e.message.includes("User force closed the prompt")) {
3056
3081
  process.exit(0);