@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 +0 -3
- package/dist/index.d.ts +5 -2
- package/dist/index.js +36 -11
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
- package/src/cli/index.ts +5 -2
- package/src/codegen/openapi/generator.ts +36 -8
- package/src/utils/handle-error.ts +3 -1
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.
|
|
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
|
-
|
|
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
|
-
|
|
2548
|
-
|
|
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
|
-
|
|
2610
|
+
const QueryParamsGeneric = QueryParams && !queryParamsRequired ? `${QueryParams} | undefined` : QueryParams;
|
|
2611
|
+
return `Request<${Response}, ${Payload}, ${QueryParamsGeneric}, ${LocalError}, "${endpoint}", Client>`;
|
|
2600
2612
|
}
|
|
2601
|
-
static generateHyperFetchRequest({
|
|
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
|
-
|
|
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);
|