typedapi-client-helpers 0.2.1 → 0.3.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.
- package/CHANGELOG.md +72 -0
- package/README.md +231 -220
- package/dist/cjs/httpClient.js +258 -0
- package/dist/cjs/httpClient.js.map +1 -0
- package/dist/cjs/index.js +32 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/ApiResult.js +3 -0
- package/dist/cjs/interfaces/ApiResult.js.map +1 -0
- package/dist/cjs/interfaces/Filter.js +3 -0
- package/dist/cjs/interfaces/Filter.js.map +1 -0
- package/dist/cjs/interfaces/SortType.js +3 -0
- package/dist/cjs/interfaces/SortType.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/types/ApiCallOptions.js +3 -0
- package/dist/cjs/types/ApiCallOptions.js.map +1 -0
- package/dist/cjs/types/ApiMethodArguments.js +3 -0
- package/dist/cjs/types/ApiMethodArguments.js.map +1 -0
- package/dist/cjs/types/ApiMethodOptions.js +3 -0
- package/dist/cjs/types/ApiMethodOptions.js.map +1 -0
- package/dist/cjs/types/ApiMethodTypes.js +3 -0
- package/dist/cjs/types/ApiMethodTypes.js.map +1 -0
- package/dist/cjs/types/HttpResponse.js +3 -0
- package/dist/cjs/types/HttpResponse.js.map +1 -0
- package/dist/cjs/types/httpClientTypes.js +3 -0
- package/dist/cjs/types/httpClientTypes.js.map +1 -0
- package/dist/cjs/utils/SortTypeFromSortDirection.js +43 -0
- package/dist/cjs/utils/SortTypeFromSortDirection.js.map +1 -0
- package/dist/cjs/utils/buildQuery.js +96 -0
- package/dist/cjs/utils/buildQuery.js.map +1 -0
- package/dist/cjs/utils/extractArgsCallbacksAndParams.js +51 -0
- package/dist/cjs/utils/extractArgsCallbacksAndParams.js.map +1 -0
- package/dist/cjs/utils/extractArgsToastsAndParams.js +49 -0
- package/dist/cjs/utils/extractArgsToastsAndParams.js.map +1 -0
- package/dist/cjs/utils/handleApiResponse.js +132 -0
- package/dist/cjs/utils/handleApiResponse.js.map +1 -0
- package/dist/cjs/utils/toFormData.js +58 -0
- package/dist/cjs/utils/toFormData.js.map +1 -0
- package/dist/cjs/utils/wireMapping.js +123 -0
- package/dist/cjs/utils/wireMapping.js.map +1 -0
- package/dist/esm/httpClient.js +251 -0
- package/dist/esm/httpClient.js.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/ApiResult.js +2 -0
- package/dist/esm/interfaces/ApiResult.js.map +1 -0
- package/dist/esm/interfaces/Filter.js +2 -0
- package/dist/esm/interfaces/Filter.js.map +1 -0
- package/dist/esm/interfaces/SortType.js +2 -0
- package/dist/esm/interfaces/SortType.js.map +1 -0
- package/dist/esm/types/ApiCallOptions.js +2 -0
- package/dist/esm/types/ApiCallOptions.js.map +1 -0
- package/dist/esm/types/ApiMethodArguments.js +2 -0
- package/dist/esm/types/ApiMethodArguments.js.map +1 -0
- package/dist/esm/types/ApiMethodOptions.js +2 -0
- package/dist/esm/types/ApiMethodOptions.js.map +1 -0
- package/dist/esm/types/ApiMethodTypes.js +2 -0
- package/dist/esm/types/ApiMethodTypes.js.map +1 -0
- package/dist/esm/types/HttpResponse.js +2 -0
- package/dist/esm/types/HttpResponse.js.map +1 -0
- package/dist/esm/types/httpClientTypes.js +2 -0
- package/dist/esm/types/httpClientTypes.js.map +1 -0
- package/dist/esm/utils/SortTypeFromSortDirection.js +38 -0
- package/dist/esm/utils/SortTypeFromSortDirection.js.map +1 -0
- package/dist/esm/utils/buildQuery.js +93 -0
- package/dist/esm/utils/buildQuery.js.map +1 -0
- package/dist/esm/utils/extractArgsCallbacksAndParams.js +48 -0
- package/dist/esm/utils/extractArgsCallbacksAndParams.js.map +1 -0
- package/dist/esm/utils/extractArgsToastsAndParams.js +46 -0
- package/dist/esm/utils/extractArgsToastsAndParams.js.map +1 -0
- package/dist/esm/utils/handleApiResponse.js +128 -0
- package/dist/esm/utils/handleApiResponse.js.map +1 -0
- package/dist/esm/utils/toFormData.js +55 -0
- package/dist/esm/utils/toFormData.js.map +1 -0
- package/dist/esm/utils/wireMapping.js +119 -0
- package/dist/esm/utils/wireMapping.js.map +1 -0
- package/dist/types/httpClient.d.ts +63 -0
- package/dist/types/httpClient.d.ts.map +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces/ApiResult.d.ts +41 -0
- package/dist/types/interfaces/ApiResult.d.ts.map +1 -0
- package/dist/types/interfaces/Filter.d.ts +31 -0
- package/dist/types/interfaces/Filter.d.ts.map +1 -0
- package/dist/types/interfaces/SortType.d.ts +7 -0
- package/dist/types/interfaces/SortType.d.ts.map +1 -0
- package/dist/types/types/ApiCallOptions.d.ts +26 -0
- package/dist/types/types/ApiCallOptions.d.ts.map +1 -0
- package/dist/types/types/ApiMethodArguments.d.ts +6 -0
- package/dist/types/types/ApiMethodArguments.d.ts.map +1 -0
- package/dist/types/types/ApiMethodOptions.d.ts +8 -0
- package/dist/types/types/ApiMethodOptions.d.ts.map +1 -0
- package/dist/types/types/ApiMethodTypes.d.ts +47 -0
- package/dist/types/types/ApiMethodTypes.d.ts.map +1 -0
- package/dist/types/types/HttpResponse.d.ts +2 -0
- package/dist/types/types/HttpResponse.d.ts.map +1 -0
- package/dist/types/types/httpClientTypes.d.ts +2 -0
- package/dist/types/types/httpClientTypes.d.ts.map +1 -0
- package/dist/types/utils/SortTypeFromSortDirection.d.ts +13 -0
- package/dist/types/utils/SortTypeFromSortDirection.d.ts.map +1 -0
- package/dist/types/utils/buildQuery.d.ts +16 -0
- package/dist/types/utils/buildQuery.d.ts.map +1 -0
- package/dist/types/utils/extractArgsCallbacksAndParams.d.ts +22 -0
- package/dist/types/utils/extractArgsCallbacksAndParams.d.ts.map +1 -0
- package/dist/types/utils/extractArgsToastsAndParams.d.ts +20 -0
- package/dist/types/utils/extractArgsToastsAndParams.d.ts.map +1 -0
- package/dist/types/utils/handleApiResponse.d.ts +12 -0
- package/dist/types/utils/handleApiResponse.d.ts.map +1 -0
- package/dist/types/utils/toFormData.d.ts +10 -0
- package/dist/types/utils/toFormData.d.ts.map +1 -0
- package/dist/types/utils/wireMapping.d.ts +30 -0
- package/dist/types/utils/wireMapping.d.ts.map +1 -0
- package/package.json +90 -84
- package/scripts/build.mjs +74 -0
- package/scripts/generate-api-minimal.mjs +568 -476
- package/scripts/openapi-generator/controller-template.mjs +1 -1
- package/scripts/openapi-generator/index.mjs +348 -113
- package/scripts/openapi-generator/method-template.mjs +405 -440
- package/scripts/openapi-generator/names.mjs +37 -86
- package/scripts/openapi-generator/openapi-utils.mjs +411 -147
- package/scripts/openapi-generator/schema.mjs +737 -455
- package/dist/index.cjs +0 -536
- package/dist/index.d.cts +0 -285
- package/dist/index.d.ts +0 -285
- package/dist/index.js +0 -495
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractArgsToastsAndParams = extractArgsToastsAndParams;
|
|
4
|
+
/**
|
|
5
|
+
* Checks whether a value can be used as a generated wrapper callback.
|
|
6
|
+
*/
|
|
7
|
+
function isCallback(value) {
|
|
8
|
+
return typeof value === "function";
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Checks whether a value is the optional request-params object accepted as the final wrapper argument.
|
|
12
|
+
*/
|
|
13
|
+
function isRequestParams(value) {
|
|
14
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Extracts wrapper-only arguments in this order:
|
|
18
|
+
* original API arguments, onSuccess, onError, request params.
|
|
19
|
+
*
|
|
20
|
+
* Kept for backwards compatibility with generated files that used toast-oriented naming.
|
|
21
|
+
*/
|
|
22
|
+
function extractArgsToastsAndParams(argsWithCallbacks) {
|
|
23
|
+
const values = [...argsWithCallbacks];
|
|
24
|
+
let onSuccess;
|
|
25
|
+
let onError;
|
|
26
|
+
let params;
|
|
27
|
+
let lastArgument = values[values.length - 1];
|
|
28
|
+
if (isRequestParams(lastArgument)) {
|
|
29
|
+
params = lastArgument;
|
|
30
|
+
values.pop();
|
|
31
|
+
}
|
|
32
|
+
lastArgument = values[values.length - 1];
|
|
33
|
+
if (isCallback(lastArgument)) {
|
|
34
|
+
onError = lastArgument;
|
|
35
|
+
values.pop();
|
|
36
|
+
}
|
|
37
|
+
lastArgument = values[values.length - 1];
|
|
38
|
+
if (isCallback(lastArgument)) {
|
|
39
|
+
onSuccess = lastArgument;
|
|
40
|
+
values.pop();
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
args: values,
|
|
44
|
+
onSuccess,
|
|
45
|
+
onError,
|
|
46
|
+
params,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=extractArgsToastsAndParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractArgsToastsAndParams.js","sourceRoot":"","sources":["../../../src/utils/extractArgsToastsAndParams.ts"],"names":[],"mappings":";;AA0BA,gEAiDC;AArED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAIxC,iBAKC;IAOD,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,CAAc,CAAC;IAEnD,IAAI,SAAmD,CAAC;IACxD,IAAI,OAA+C,CAAC;IACpD,IAAI,MAAwC,CAAC;IAE7C,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7C,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,YAAY,CAAC;QACtB,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,YAA0C,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,SAAS,GAAG,YAA4C,CAAC;QACzD,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAA0B;QAChC,SAAS;QACT,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createApiHttpError = createApiHttpError;
|
|
4
|
+
exports.handleApiResponse = handleApiResponse;
|
|
5
|
+
class ResponseParseError extends Error {
|
|
6
|
+
constructor(status, rawBody, parseCause) {
|
|
7
|
+
super(`Could not parse JSON response with status ${status}.`);
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.rawBody = rawBody;
|
|
10
|
+
this.parseCause = parseCause;
|
|
11
|
+
this.name = "ResponseParseError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async function readResponseBody(response) {
|
|
15
|
+
if (response.status === 204 || response.status === 205)
|
|
16
|
+
return undefined;
|
|
17
|
+
const contentType = response.headers.get("content-type")?.toLowerCase() ?? "";
|
|
18
|
+
if (contentType.includes("application/octet-stream") ||
|
|
19
|
+
contentType.startsWith("image/") ||
|
|
20
|
+
contentType.includes("application/pdf")) {
|
|
21
|
+
return response.blob();
|
|
22
|
+
}
|
|
23
|
+
const text = await response.text();
|
|
24
|
+
if (!text)
|
|
25
|
+
return undefined;
|
|
26
|
+
if (contentType.includes("json") || contentType.includes("+json")) {
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse(text);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new ResponseParseError(response.status, text, error);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return text;
|
|
35
|
+
}
|
|
36
|
+
function isResponseLike(value) {
|
|
37
|
+
return (typeof value === "object" &&
|
|
38
|
+
value !== null &&
|
|
39
|
+
"status" in value &&
|
|
40
|
+
"ok" in value &&
|
|
41
|
+
"headers" in value &&
|
|
42
|
+
typeof value.text === "function");
|
|
43
|
+
}
|
|
44
|
+
function createApiHttpError(status, body) {
|
|
45
|
+
return {
|
|
46
|
+
kind: "http",
|
|
47
|
+
status,
|
|
48
|
+
body: body,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function clientError(error) {
|
|
52
|
+
if (error instanceof ResponseParseError) {
|
|
53
|
+
return {
|
|
54
|
+
kind: "parse",
|
|
55
|
+
status: error.status,
|
|
56
|
+
rawBody: error.rawBody,
|
|
57
|
+
cause: error.parseCause,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const name = typeof error === "object" && error !== null && "name" in error
|
|
61
|
+
? String(error.name)
|
|
62
|
+
: "";
|
|
63
|
+
if (name === "AbortError" || name === "TimeoutError") {
|
|
64
|
+
return { kind: "aborted", cause: error };
|
|
65
|
+
}
|
|
66
|
+
return { kind: "network", cause: error };
|
|
67
|
+
}
|
|
68
|
+
async function handleApiResponse(call, options) {
|
|
69
|
+
let result;
|
|
70
|
+
try {
|
|
71
|
+
const response = await call();
|
|
72
|
+
try {
|
|
73
|
+
const rawData = await readResponseBody(response.clone());
|
|
74
|
+
const data = options?.transformResponse
|
|
75
|
+
? options.transformResponse(rawData)
|
|
76
|
+
: rawData;
|
|
77
|
+
result = {
|
|
78
|
+
ok: true,
|
|
79
|
+
status: response.status,
|
|
80
|
+
response: data,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
result = {
|
|
85
|
+
ok: false,
|
|
86
|
+
status: response.status,
|
|
87
|
+
response: undefined,
|
|
88
|
+
error: clientError(error),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (isResponseLike(error)) {
|
|
94
|
+
try {
|
|
95
|
+
const rawErrorData = await readResponseBody(error.clone());
|
|
96
|
+
const errorData = options?.transformError
|
|
97
|
+
? options.transformError(rawErrorData, error)
|
|
98
|
+
: rawErrorData;
|
|
99
|
+
result = {
|
|
100
|
+
ok: false,
|
|
101
|
+
status: error.status,
|
|
102
|
+
response: undefined,
|
|
103
|
+
error: errorData,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (parseError) {
|
|
107
|
+
result = {
|
|
108
|
+
ok: false,
|
|
109
|
+
status: error.status,
|
|
110
|
+
response: undefined,
|
|
111
|
+
error: clientError(parseError),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
result = {
|
|
117
|
+
ok: false,
|
|
118
|
+
status: 0,
|
|
119
|
+
response: undefined,
|
|
120
|
+
error: clientError(error),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Consumer callbacks intentionally execute outside the request-catching block.
|
|
125
|
+
// A callback exception is application code failure and should propagate to the caller.
|
|
126
|
+
if (result.ok)
|
|
127
|
+
await options?.onSuccess?.(result);
|
|
128
|
+
else
|
|
129
|
+
await options?.onError?.(result);
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=handleApiResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleApiResponse.js","sourceRoot":"","sources":["../../../src/utils/handleApiResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toFormData = toFormData;
|
|
4
|
+
/**
|
|
5
|
+
* Converts an object payload into `FormData`.
|
|
6
|
+
*
|
|
7
|
+
* Supports single files, file arrays, primitive values, dates, and nested
|
|
8
|
+
* objects. Arrays are appended as repeated fields with the same key.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} when `FormData` is unavailable in the current runtime.
|
|
11
|
+
*/
|
|
12
|
+
function toFormData(payload) {
|
|
13
|
+
if (typeof FormData === "undefined") {
|
|
14
|
+
throw new Error("FormData is not available in this runtime. Provide a FormData polyfill or use a runtime with the Fetch API.");
|
|
15
|
+
}
|
|
16
|
+
const formData = new FormData();
|
|
17
|
+
for (const [key, value] of Object.entries(payload)) {
|
|
18
|
+
appendFormDataValue(formData, key, value);
|
|
19
|
+
}
|
|
20
|
+
return formData;
|
|
21
|
+
}
|
|
22
|
+
function isFile(value) {
|
|
23
|
+
return typeof File !== "undefined" && value instanceof File;
|
|
24
|
+
}
|
|
25
|
+
function isBlob(value) {
|
|
26
|
+
return typeof Blob !== "undefined" && value instanceof Blob;
|
|
27
|
+
}
|
|
28
|
+
/** Appends a single value to a `FormData` object. */
|
|
29
|
+
function appendFormDataValue(formData, key, value) {
|
|
30
|
+
if (value === null || value === undefined)
|
|
31
|
+
return;
|
|
32
|
+
if (Array.isArray(value)) {
|
|
33
|
+
for (const item of value)
|
|
34
|
+
appendFormDataValue(formData, key, item);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (isFile(value)) {
|
|
38
|
+
formData.append(key, value, value.name);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (isBlob(value)) {
|
|
42
|
+
formData.append(key, value);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (value instanceof Date) {
|
|
46
|
+
formData.append(key, value.toISOString());
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (typeof value === "string" ||
|
|
50
|
+
typeof value === "number" ||
|
|
51
|
+
typeof value === "boolean" ||
|
|
52
|
+
typeof value === "bigint") {
|
|
53
|
+
formData.append(key, String(value));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
formData.append(key, JSON.stringify(value));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=toFormData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toFormData.js","sourceRoot":"","sources":["../../../src/utils/toFormData.ts"],"names":[],"mappings":";;AAQA,gCAcC;AAtBD;;;;;;;GAOG;AACH,SAAgB,UAAU,CAAmB,OAAU;IACrD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAEhC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,KAAK,YAAY,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,KAAK,YAAY,IAAI,CAAC;AAC9D,CAAC;AAED,qDAAqD;AACrD,SAAS,mBAAmB,CAC1B,QAAkB,EAClB,GAAW,EACX,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAElD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,QAAQ,EACzB,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toWireValue = toWireValue;
|
|
4
|
+
exports.fromWireValue = fromWireValue;
|
|
5
|
+
function isFile(value) {
|
|
6
|
+
return typeof File !== "undefined" && value instanceof File;
|
|
7
|
+
}
|
|
8
|
+
function isBlob(value) {
|
|
9
|
+
return typeof Blob !== "undefined" && value instanceof Blob;
|
|
10
|
+
}
|
|
11
|
+
function isFormData(value) {
|
|
12
|
+
return typeof FormData !== "undefined" && value instanceof FormData;
|
|
13
|
+
}
|
|
14
|
+
function isMappableObject(value) {
|
|
15
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
16
|
+
return false;
|
|
17
|
+
if (value instanceof Date || isFile(value) || isBlob(value) || isFormData(value))
|
|
18
|
+
return false;
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
function resolveSchema(schema, registry) {
|
|
22
|
+
let current = schema;
|
|
23
|
+
const visited = new Set();
|
|
24
|
+
while (current?.kind === "ref") {
|
|
25
|
+
if (visited.has(current.ref))
|
|
26
|
+
return { kind: "identity" };
|
|
27
|
+
visited.add(current.ref);
|
|
28
|
+
current = registry[current.ref] ?? { kind: "identity" };
|
|
29
|
+
}
|
|
30
|
+
return current;
|
|
31
|
+
}
|
|
32
|
+
function mergeObjectSchemas(schema, registry, visitedRefs = new Set()) {
|
|
33
|
+
if (schema.kind === "ref") {
|
|
34
|
+
if (visitedRefs.has(schema.ref))
|
|
35
|
+
return undefined;
|
|
36
|
+
const nextVisited = new Set(visitedRefs);
|
|
37
|
+
nextVisited.add(schema.ref);
|
|
38
|
+
const resolved = registry[schema.ref];
|
|
39
|
+
return resolved ? mergeObjectSchemas(resolved, registry, nextVisited) : undefined;
|
|
40
|
+
}
|
|
41
|
+
if (schema.kind === "object")
|
|
42
|
+
return schema;
|
|
43
|
+
if (schema.kind !== "allOf" && schema.kind !== "union")
|
|
44
|
+
return undefined;
|
|
45
|
+
const properties = {};
|
|
46
|
+
let additionalProperties;
|
|
47
|
+
let foundObject = false;
|
|
48
|
+
for (const part of schema.schemas) {
|
|
49
|
+
const objectPart = mergeObjectSchemas(part, registry, visitedRefs);
|
|
50
|
+
if (!objectPart)
|
|
51
|
+
continue;
|
|
52
|
+
foundObject = true;
|
|
53
|
+
Object.assign(properties, objectPart.properties ?? {});
|
|
54
|
+
if (objectPart.additionalProperties !== undefined) {
|
|
55
|
+
additionalProperties = objectPart.additionalProperties;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return foundObject
|
|
59
|
+
? { kind: "object", properties, ...(additionalProperties !== undefined ? { additionalProperties } : {}) }
|
|
60
|
+
: undefined;
|
|
61
|
+
}
|
|
62
|
+
function mapValue(value, schema, registry, direction, seen) {
|
|
63
|
+
if (value === null || value === undefined || !schema)
|
|
64
|
+
return value;
|
|
65
|
+
const resolved = resolveSchema(schema, registry);
|
|
66
|
+
if (!resolved || resolved.kind === "identity")
|
|
67
|
+
return value;
|
|
68
|
+
if (resolved.kind === "array") {
|
|
69
|
+
if (!Array.isArray(value))
|
|
70
|
+
return value;
|
|
71
|
+
const existing = seen.get(value);
|
|
72
|
+
if (existing)
|
|
73
|
+
return existing;
|
|
74
|
+
const output = [];
|
|
75
|
+
seen.set(value, output);
|
|
76
|
+
for (const item of value) {
|
|
77
|
+
output.push(mapValue(item, resolved.items, registry, direction, seen));
|
|
78
|
+
}
|
|
79
|
+
return output;
|
|
80
|
+
}
|
|
81
|
+
if (resolved.kind === "allOf" || resolved.kind === "union") {
|
|
82
|
+
const merged = mergeObjectSchemas(resolved, registry);
|
|
83
|
+
if (merged)
|
|
84
|
+
return mapValue(value, merged, registry, direction, seen);
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
if (!isMappableObject(value))
|
|
88
|
+
return value;
|
|
89
|
+
const existing = seen.get(value);
|
|
90
|
+
if (existing)
|
|
91
|
+
return existing;
|
|
92
|
+
const output = {};
|
|
93
|
+
seen.set(value, output);
|
|
94
|
+
const properties = resolved.properties ?? {};
|
|
95
|
+
const byWireName = new Map(Object.entries(properties).map(([localName, property]) => [property.wireName, [localName, property]]));
|
|
96
|
+
for (const [inputName, inputValue] of Object.entries(value)) {
|
|
97
|
+
const propertyEntry = direction === "toWire"
|
|
98
|
+
? properties[inputName]
|
|
99
|
+
? [inputName, properties[inputName]]
|
|
100
|
+
: undefined
|
|
101
|
+
: byWireName.get(inputName);
|
|
102
|
+
if (propertyEntry) {
|
|
103
|
+
const [localName, property] = propertyEntry;
|
|
104
|
+
const outputName = direction === "toWire" ? property.wireName : localName;
|
|
105
|
+
output[outputName] = mapValue(inputValue, property.schema, registry, direction, seen);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const additionalSchema = resolved.additionalProperties === true
|
|
109
|
+
? undefined
|
|
110
|
+
: resolved.additionalProperties;
|
|
111
|
+
output[inputName] = mapValue(inputValue, additionalSchema, registry, direction, seen);
|
|
112
|
+
}
|
|
113
|
+
return output;
|
|
114
|
+
}
|
|
115
|
+
/** Converts generated lower-first member names to their exact OpenAPI wire names. */
|
|
116
|
+
function toWireValue(value, schema, registry = {}) {
|
|
117
|
+
return mapValue(value, schema, registry, "toWire", new WeakMap());
|
|
118
|
+
}
|
|
119
|
+
/** Converts exact OpenAPI wire names to generated lower-first member names. */
|
|
120
|
+
function fromWireValue(value, schema, registry = {}) {
|
|
121
|
+
return mapValue(value, schema, registry, "fromWire", new WeakMap());
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=wireMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wireMapping.js","sourceRoot":"","sources":["../../../src/utils/wireMapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
export const ContentType = {
|
|
2
|
+
Json: "application/json",
|
|
3
|
+
JsonApi: "application/vnd.api+json",
|
|
4
|
+
FormData: "multipart/form-data",
|
|
5
|
+
UrlEncoded: "application/x-www-form-urlencoded",
|
|
6
|
+
Text: "text/plain",
|
|
7
|
+
};
|
|
8
|
+
export function mergeHeaders(...sources) {
|
|
9
|
+
const result = new Headers();
|
|
10
|
+
for (const source of sources) {
|
|
11
|
+
if (!source)
|
|
12
|
+
continue;
|
|
13
|
+
const headers = new Headers(source);
|
|
14
|
+
headers.forEach((value, key) => result.set(key, value));
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
export function toRequestHeaders(values) {
|
|
19
|
+
const headers = new Headers();
|
|
20
|
+
for (const [key, value] of Object.entries(values ?? {})) {
|
|
21
|
+
if (value === undefined || value === null)
|
|
22
|
+
continue;
|
|
23
|
+
const normalized = Array.isArray(value)
|
|
24
|
+
? value.map(normalizeScalar).join(", ")
|
|
25
|
+
: normalizeScalar(value);
|
|
26
|
+
headers.set(key, normalized);
|
|
27
|
+
}
|
|
28
|
+
return headers;
|
|
29
|
+
}
|
|
30
|
+
export function toCookieHeader(values) {
|
|
31
|
+
return Object.entries(values)
|
|
32
|
+
.filter(([, value]) => value !== undefined && value !== null)
|
|
33
|
+
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(normalizeScalar(value))}`)
|
|
34
|
+
.join("; ");
|
|
35
|
+
}
|
|
36
|
+
function normalizeScalar(value) {
|
|
37
|
+
return value instanceof Date ? value.toISOString() : String(value);
|
|
38
|
+
}
|
|
39
|
+
function isFormData(value) {
|
|
40
|
+
return typeof FormData !== "undefined" && value instanceof FormData;
|
|
41
|
+
}
|
|
42
|
+
function isBlob(value) {
|
|
43
|
+
return typeof Blob !== "undefined" && value instanceof Blob;
|
|
44
|
+
}
|
|
45
|
+
function isFile(value) {
|
|
46
|
+
return typeof File !== "undefined" && value instanceof File;
|
|
47
|
+
}
|
|
48
|
+
export function createApiClient(apiConfig = {}) {
|
|
49
|
+
const state = {
|
|
50
|
+
baseUrl: apiConfig.baseUrl ?? "",
|
|
51
|
+
securityData: null,
|
|
52
|
+
securityWorker: apiConfig.securityWorker,
|
|
53
|
+
customFetch: apiConfig.customFetch ?? ((...fetchParams) => fetch(...fetchParams)),
|
|
54
|
+
baseApiParams: {
|
|
55
|
+
credentials: "same-origin",
|
|
56
|
+
headers: {},
|
|
57
|
+
redirect: "follow",
|
|
58
|
+
referrerPolicy: "no-referrer",
|
|
59
|
+
...(apiConfig.baseApiParams ?? {}),
|
|
60
|
+
},
|
|
61
|
+
timeoutMs: apiConfig.timeoutMs,
|
|
62
|
+
abortControllers: new Map(),
|
|
63
|
+
};
|
|
64
|
+
function configureApiClient(nextConfig = {}) {
|
|
65
|
+
if (typeof nextConfig.baseUrl === "string")
|
|
66
|
+
state.baseUrl = nextConfig.baseUrl;
|
|
67
|
+
if (nextConfig.securityWorker)
|
|
68
|
+
state.securityWorker = nextConfig.securityWorker;
|
|
69
|
+
if (nextConfig.customFetch)
|
|
70
|
+
state.customFetch = nextConfig.customFetch;
|
|
71
|
+
if (nextConfig.timeoutMs !== undefined)
|
|
72
|
+
state.timeoutMs = nextConfig.timeoutMs;
|
|
73
|
+
if (nextConfig.baseApiParams) {
|
|
74
|
+
state.baseApiParams = mergeRequestParams(state.baseApiParams, nextConfig.baseApiParams);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function setSecurityData(data) {
|
|
78
|
+
state.securityData = data;
|
|
79
|
+
}
|
|
80
|
+
function encodeQueryParam(key, value) {
|
|
81
|
+
return `${encodeURIComponent(key)}=${encodeURIComponent(normalizeScalar(value))}`;
|
|
82
|
+
}
|
|
83
|
+
function toQueryString(rawQuery) {
|
|
84
|
+
if (!rawQuery)
|
|
85
|
+
return "";
|
|
86
|
+
return Object.entries(rawQuery)
|
|
87
|
+
.filter(([, value]) => value !== undefined && value !== null)
|
|
88
|
+
.flatMap(([key, value]) => Array.isArray(value)
|
|
89
|
+
? value.map((item) => encodeQueryParam(key, item))
|
|
90
|
+
: [encodeQueryParam(key, value)])
|
|
91
|
+
.join("&");
|
|
92
|
+
}
|
|
93
|
+
function contentFormatter(type, input) {
|
|
94
|
+
if (input === undefined || input === null)
|
|
95
|
+
return null;
|
|
96
|
+
if (isFormData(input) || isBlob(input))
|
|
97
|
+
return input;
|
|
98
|
+
switch (type ?? ContentType.Json) {
|
|
99
|
+
case ContentType.Json:
|
|
100
|
+
case ContentType.JsonApi:
|
|
101
|
+
return JSON.stringify(input);
|
|
102
|
+
case ContentType.Text:
|
|
103
|
+
return typeof input === "string" ? input : JSON.stringify(input);
|
|
104
|
+
case ContentType.FormData:
|
|
105
|
+
return toFormData(input);
|
|
106
|
+
case ContentType.UrlEncoded:
|
|
107
|
+
return toQueryString(input);
|
|
108
|
+
default:
|
|
109
|
+
return input;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function toFormData(input) {
|
|
113
|
+
if (isFormData(input))
|
|
114
|
+
return input;
|
|
115
|
+
if (typeof FormData === "undefined") {
|
|
116
|
+
throw new Error("FormData is not available in this runtime. Provide a FormData polyfill or custom body.");
|
|
117
|
+
}
|
|
118
|
+
const formData = new FormData();
|
|
119
|
+
for (const [key, value] of Object.entries((input ?? {}))) {
|
|
120
|
+
appendFormDataValue(formData, key, value);
|
|
121
|
+
}
|
|
122
|
+
return formData;
|
|
123
|
+
}
|
|
124
|
+
function appendFormDataValue(formData, key, value) {
|
|
125
|
+
if (value === undefined || value === null)
|
|
126
|
+
return;
|
|
127
|
+
if (Array.isArray(value)) {
|
|
128
|
+
for (const item of value)
|
|
129
|
+
appendFormDataValue(formData, key, item);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (isFile(value)) {
|
|
133
|
+
formData.append(key, value, value.name);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (isBlob(value)) {
|
|
137
|
+
formData.append(key, value);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (typeof value === "object") {
|
|
141
|
+
formData.append(key, JSON.stringify(value));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
formData.append(key, String(value));
|
|
145
|
+
}
|
|
146
|
+
function mergeRequestParams(params1, params2) {
|
|
147
|
+
return {
|
|
148
|
+
...params1,
|
|
149
|
+
...(params2 ?? {}),
|
|
150
|
+
headers: mergeHeaders(params1.headers, params2?.headers),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function createAbortSignal(cancelToken) {
|
|
154
|
+
const existing = state.abortControllers.get(cancelToken);
|
|
155
|
+
if (existing)
|
|
156
|
+
return existing.signal;
|
|
157
|
+
const controller = new AbortController();
|
|
158
|
+
state.abortControllers.set(cancelToken, controller);
|
|
159
|
+
return controller.signal;
|
|
160
|
+
}
|
|
161
|
+
function abortRequest(cancelToken) {
|
|
162
|
+
const controller = state.abortControllers.get(cancelToken);
|
|
163
|
+
if (!controller)
|
|
164
|
+
return;
|
|
165
|
+
controller.abort();
|
|
166
|
+
state.abortControllers.delete(cancelToken);
|
|
167
|
+
}
|
|
168
|
+
function combineSignals(signals) {
|
|
169
|
+
const active = signals.filter((signal) => Boolean(signal));
|
|
170
|
+
if (active.length === 0)
|
|
171
|
+
return { signal: undefined, cleanup: () => undefined };
|
|
172
|
+
if (active.length === 1)
|
|
173
|
+
return { signal: active[0], cleanup: () => undefined };
|
|
174
|
+
const controller = new AbortController();
|
|
175
|
+
const listeners = [];
|
|
176
|
+
const abort = (signal) => {
|
|
177
|
+
if (!controller.signal.aborted)
|
|
178
|
+
controller.abort(signal.reason);
|
|
179
|
+
};
|
|
180
|
+
for (const signal of active) {
|
|
181
|
+
if (signal.aborted) {
|
|
182
|
+
abort(signal);
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
const listener = () => abort(signal);
|
|
186
|
+
signal.addEventListener("abort", listener, { once: true });
|
|
187
|
+
listeners.push(() => signal.removeEventListener("abort", listener));
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
signal: controller.signal,
|
|
191
|
+
cleanup: () => listeners.forEach((remove) => remove()),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function buildUrl(baseUrl, requestPath, queryString) {
|
|
195
|
+
const pathValue = /^https?:\/\//i.test(requestPath)
|
|
196
|
+
? requestPath
|
|
197
|
+
: `${baseUrl.replace(/\/$/, "")}/${requestPath.replace(/^\//, "")}`;
|
|
198
|
+
if (!queryString)
|
|
199
|
+
return pathValue;
|
|
200
|
+
return `${pathValue}${pathValue.includes("?") ? "&" : "?"}${queryString}`;
|
|
201
|
+
}
|
|
202
|
+
async function request({ body, secure, path, type, query, format: _format, baseUrl, cancelToken, timeoutMs, signal: requestSignal, ...params }) {
|
|
203
|
+
const secureParams = ((typeof secure === "boolean" ? secure : state.baseApiParams.secure) &&
|
|
204
|
+
state.securityWorker &&
|
|
205
|
+
(await state.securityWorker(state.securityData))) ||
|
|
206
|
+
{};
|
|
207
|
+
const requestParams = mergeRequestParams(mergeRequestParams(state.baseApiParams, params), secureParams);
|
|
208
|
+
const queryString = query ? toQueryString(query) : "";
|
|
209
|
+
const url = buildUrl(baseUrl ?? state.baseUrl, path, queryString);
|
|
210
|
+
const timeout = timeoutMs ?? state.timeoutMs;
|
|
211
|
+
const timeoutController = timeout && timeout > 0 ? new AbortController() : undefined;
|
|
212
|
+
const timeoutHandle = timeoutController
|
|
213
|
+
? setTimeout(() => timeoutController.abort(new DOMException("Request timed out", "TimeoutError")), timeout)
|
|
214
|
+
: undefined;
|
|
215
|
+
const tokenSignal = cancelToken !== undefined ? createAbortSignal(cancelToken) : undefined;
|
|
216
|
+
const combined = combineSignals([requestSignal, requestParams.signal, tokenSignal, timeoutController?.signal]);
|
|
217
|
+
const requestInit = {
|
|
218
|
+
...requestParams,
|
|
219
|
+
headers: mergeHeaders(requestParams.headers, type && type !== ContentType.FormData ? { "Content-Type": type } : undefined),
|
|
220
|
+
signal: combined.signal,
|
|
221
|
+
};
|
|
222
|
+
if (body !== undefined && body !== null)
|
|
223
|
+
requestInit.body = contentFormatter(type, body);
|
|
224
|
+
try {
|
|
225
|
+
const response = await state.customFetch(url, requestInit);
|
|
226
|
+
if (!response.ok)
|
|
227
|
+
throw response;
|
|
228
|
+
return response;
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
if (timeoutHandle !== undefined)
|
|
232
|
+
clearTimeout(timeoutHandle);
|
|
233
|
+
combined.cleanup();
|
|
234
|
+
if (cancelToken !== undefined)
|
|
235
|
+
state.abortControllers.delete(cancelToken);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
configureApiClient,
|
|
240
|
+
setSecurityData,
|
|
241
|
+
abortRequest,
|
|
242
|
+
request,
|
|
243
|
+
toQueryString,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
export const defaultApiClient = createApiClient();
|
|
247
|
+
export const configureApiClient = defaultApiClient.configureApiClient;
|
|
248
|
+
export const setSecurityData = defaultApiClient.setSecurityData;
|
|
249
|
+
export const abortRequest = defaultApiClient.abortRequest;
|
|
250
|
+
export const request = defaultApiClient.request;
|
|
251
|
+
//# sourceMappingURL=httpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":"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"}
|