@kubb/plugin-client 5.0.0-beta.25 → 5.0.0-beta.27
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/dist/clients/axios.cjs +18 -3
- package/dist/clients/axios.cjs.map +1 -1
- package/dist/clients/axios.d.ts +8 -2
- package/dist/clients/axios.js +18 -3
- package/dist/clients/axios.js.map +1 -1
- package/dist/clients/fetch.cjs +16 -1
- package/dist/clients/fetch.cjs.map +1 -1
- package/dist/clients/fetch.d.ts +8 -2
- package/dist/clients/fetch.js +16 -1
- package/dist/clients/fetch.js.map +1 -1
- package/dist/index.cjs +36 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +36 -6
- package/dist/index.js.map +1 -1
- package/dist/templates/clients/axios.source.cjs +1 -1
- package/dist/templates/clients/axios.source.js +1 -1
- package/dist/templates/clients/fetch.source.cjs +1 -1
- package/dist/templates/clients/fetch.source.js +1 -1
- package/package.json +6 -6
- package/src/clients/axios.ts +28 -5
- package/src/clients/fetch.ts +25 -2
- package/src/components/Client.tsx +10 -2
- package/src/resolvers/resolverClient.ts +6 -5
- package/src/utils.ts +3 -2
package/dist/index.js
CHANGED
|
@@ -185,6 +185,26 @@ function isValidVarName(name) {
|
|
|
185
185
|
if (!name || reservedWords.has(name)) return false;
|
|
186
186
|
return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name);
|
|
187
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Returns `name` when it's a syntactically valid JavaScript variable name,
|
|
190
|
+
* otherwise prefixes it with `_` so the result is a valid identifier.
|
|
191
|
+
*
|
|
192
|
+
* Useful for sanitizing OpenAPI schema names or operation IDs that start with
|
|
193
|
+
* a digit (e.g. `409`, `504AccountCancel`) before using them as exported
|
|
194
|
+
* variable, type, or function names.
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```ts
|
|
198
|
+
* ensureValidVarName('409') // '_409'
|
|
199
|
+
* ensureValidVarName('504AccountCancel') // '_504AccountCancel'
|
|
200
|
+
* ensureValidVarName('Pet') // 'Pet'
|
|
201
|
+
* ensureValidVarName('class') // '_class'
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
function ensureValidVarName(name) {
|
|
205
|
+
if (!name || isValidVarName(name)) return name;
|
|
206
|
+
return `_${name}`;
|
|
207
|
+
}
|
|
188
208
|
//#endregion
|
|
189
209
|
//#region ../../internals/utils/src/urlPath.ts
|
|
190
210
|
/**
|
|
@@ -386,6 +406,10 @@ function getStatusCodeNumber(statusCode) {
|
|
|
386
406
|
const code = Number(statusCode);
|
|
387
407
|
return Number.isNaN(code) ? null : code;
|
|
388
408
|
}
|
|
409
|
+
function isSuccessStatusCode(statusCode) {
|
|
410
|
+
const code = getStatusCodeNumber(statusCode);
|
|
411
|
+
return code !== null && code >= 200 && code < 300;
|
|
412
|
+
}
|
|
389
413
|
function isErrorStatusCode(statusCode) {
|
|
390
414
|
const code = getStatusCodeNumber(statusCode);
|
|
391
415
|
return code !== null && code >= 400;
|
|
@@ -393,6 +417,9 @@ function isErrorStatusCode(statusCode) {
|
|
|
393
417
|
function resolveErrorNames(node, resolver) {
|
|
394
418
|
return node.responses.filter((response) => isErrorStatusCode(response.statusCode)).map((response) => resolver.resolveResponseStatusName(node, response.statusCode));
|
|
395
419
|
}
|
|
420
|
+
function resolveSuccessNames(node, resolver) {
|
|
421
|
+
return node.responses.filter((response) => isSuccessStatusCode(response.statusCode)).map((response) => resolver.resolveResponseStatusName(node, response.statusCode));
|
|
422
|
+
}
|
|
396
423
|
function resolveStatusCodeNames(node, resolver) {
|
|
397
424
|
return node.responses.map((response) => resolver.resolveResponseStatusName(node, response.statusCode));
|
|
398
425
|
}
|
|
@@ -582,7 +609,8 @@ function Client({ name, isExportable = true, isIndexable = true, returnType, bas
|
|
|
582
609
|
const queryParamsMapping = paramsCasing ? buildParamsMapping(originalQueryParams, casedQueryParams) : null;
|
|
583
610
|
const headerParamsMapping = paramsCasing ? buildParamsMapping(originalHeaderParams, casedHeaderParams) : null;
|
|
584
611
|
const requestName = node.requestBody?.content?.[0]?.schema ? tsResolver.resolveDataName(node) : null;
|
|
585
|
-
const
|
|
612
|
+
const successNames = resolveSuccessNames(node, tsResolver);
|
|
613
|
+
const responseName = successNames.length > 0 ? successNames.join(" | ") : tsResolver.resolveResponseName(node);
|
|
586
614
|
const queryParamsName = originalQueryParams.length > 0 ? tsResolver.resolveQueryParamsName(node, originalQueryParams[0]) : null;
|
|
587
615
|
const headerParamsName = originalHeaderParams.length > 0 ? tsResolver.resolveHeaderParamsName(node, originalHeaderParams[0]) : null;
|
|
588
616
|
const zodResponseName = zodResolver && parser === "zod" ? zodResolver.resolveResponseName?.(node) : null;
|
|
@@ -688,7 +716,8 @@ function buildHeaders(contentType, hasHeaderParams) {
|
|
|
688
716
|
* Includes response type, error type, and optional request type.
|
|
689
717
|
*/
|
|
690
718
|
function buildGenerics(node, tsResolver) {
|
|
691
|
-
const
|
|
719
|
+
const successNames = resolveSuccessNames(node, tsResolver);
|
|
720
|
+
const responseName = successNames.length > 0 ? successNames.join(" | ") : tsResolver.resolveResponseName(node);
|
|
692
721
|
const requestName = node.requestBody?.content?.[0]?.schema ? tsResolver.resolveDataName(node) : null;
|
|
693
722
|
const errorNames = node.responses.filter((r) => Number.parseInt(r.statusCode, 10) >= 400).map((r) => tsResolver.resolveResponseStatusName(node, r.statusCode));
|
|
694
723
|
return [
|
|
@@ -1759,7 +1788,8 @@ const resolverClient = defineResolver(() => ({
|
|
|
1759
1788
|
name: "default",
|
|
1760
1789
|
pluginName: "plugin-client",
|
|
1761
1790
|
default(name, type) {
|
|
1762
|
-
|
|
1791
|
+
const resolved = camelCase(name, { isFile: type === "file" });
|
|
1792
|
+
return type === "file" ? resolved : ensureValidVarName(resolved);
|
|
1763
1793
|
},
|
|
1764
1794
|
resolveName(name) {
|
|
1765
1795
|
return this.default(name, "function");
|
|
@@ -1768,13 +1798,13 @@ const resolverClient = defineResolver(() => ({
|
|
|
1768
1798
|
return this.default(name, type);
|
|
1769
1799
|
},
|
|
1770
1800
|
resolveClassName(name) {
|
|
1771
|
-
return pascalCase(name);
|
|
1801
|
+
return ensureValidVarName(pascalCase(name));
|
|
1772
1802
|
},
|
|
1773
1803
|
resolveGroupName(name) {
|
|
1774
|
-
return pascalCase(name);
|
|
1804
|
+
return ensureValidVarName(pascalCase(name));
|
|
1775
1805
|
},
|
|
1776
1806
|
resolveClientPropertyName(name) {
|
|
1777
|
-
return camelCase(name);
|
|
1807
|
+
return ensureValidVarName(camelCase(name));
|
|
1778
1808
|
},
|
|
1779
1809
|
resolveUrlName(node) {
|
|
1780
1810
|
const name = this.resolveName(node.operationId);
|