@izak0s/spacebring-api 1.0.0 → 1.1.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 +27 -15
- package/dist/index.cjs +34 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +358 -7418
- package/dist/index.d.ts +358 -7418
- package/dist/index.js +34 -20
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -13,13 +13,14 @@ function createClient(clientOptions) {
|
|
|
13
13
|
fetch: baseFetch = globalThis.fetch,
|
|
14
14
|
querySerializer: globalQuerySerializer,
|
|
15
15
|
bodySerializer: globalBodySerializer,
|
|
16
|
+
pathSerializer: globalPathSerializer,
|
|
16
17
|
headers: baseHeaders,
|
|
17
18
|
requestInitExt = void 0,
|
|
18
19
|
...baseOptions
|
|
19
20
|
} = { ...clientOptions };
|
|
20
21
|
requestInitExt = supportsRequestInitExt() ? requestInitExt : void 0;
|
|
21
22
|
baseUrl = removeTrailingSlash(baseUrl);
|
|
22
|
-
const
|
|
23
|
+
const globalMiddlewares = [];
|
|
23
24
|
async function coreFetch(schemaPath, fetchOptions) {
|
|
24
25
|
const {
|
|
25
26
|
baseUrl: localBaseUrl,
|
|
@@ -30,7 +31,9 @@ function createClient(clientOptions) {
|
|
|
30
31
|
parseAs = "json",
|
|
31
32
|
querySerializer: requestQuerySerializer,
|
|
32
33
|
bodySerializer = globalBodySerializer ?? defaultBodySerializer,
|
|
34
|
+
pathSerializer: requestPathSerializer,
|
|
33
35
|
body,
|
|
36
|
+
middleware: requestMiddlewares = [],
|
|
34
37
|
...init
|
|
35
38
|
} = fetchOptions || {};
|
|
36
39
|
let finalBaseUrl = baseUrl;
|
|
@@ -44,6 +47,7 @@ function createClient(clientOptions) {
|
|
|
44
47
|
...requestQuerySerializer
|
|
45
48
|
});
|
|
46
49
|
}
|
|
50
|
+
const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;
|
|
47
51
|
const serializedBody = body === void 0 ? void 0 : bodySerializer(
|
|
48
52
|
body,
|
|
49
53
|
// Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:
|
|
@@ -63,6 +67,7 @@ function createClient(clientOptions) {
|
|
|
63
67
|
headers,
|
|
64
68
|
params.header
|
|
65
69
|
);
|
|
70
|
+
const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];
|
|
66
71
|
const requestInit = {
|
|
67
72
|
redirect: "follow",
|
|
68
73
|
...baseOptions,
|
|
@@ -73,7 +78,7 @@ function createClient(clientOptions) {
|
|
|
73
78
|
let id;
|
|
74
79
|
let options;
|
|
75
80
|
let request = new Request(
|
|
76
|
-
createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer }),
|
|
81
|
+
createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),
|
|
77
82
|
requestInit
|
|
78
83
|
);
|
|
79
84
|
let response;
|
|
@@ -82,16 +87,17 @@ function createClient(clientOptions) {
|
|
|
82
87
|
request[key] = init[key];
|
|
83
88
|
}
|
|
84
89
|
}
|
|
85
|
-
if (
|
|
90
|
+
if (finalMiddlewares.length) {
|
|
86
91
|
id = randomID();
|
|
87
92
|
options = Object.freeze({
|
|
88
93
|
baseUrl: finalBaseUrl,
|
|
89
94
|
fetch,
|
|
90
95
|
parseAs,
|
|
91
96
|
querySerializer,
|
|
92
|
-
bodySerializer
|
|
97
|
+
bodySerializer,
|
|
98
|
+
pathSerializer
|
|
93
99
|
});
|
|
94
|
-
for (const m of
|
|
100
|
+
for (const m of finalMiddlewares) {
|
|
95
101
|
if (m && typeof m === "object" && typeof m.onRequest === "function") {
|
|
96
102
|
const result = await m.onRequest({
|
|
97
103
|
request,
|
|
@@ -118,9 +124,9 @@ function createClient(clientOptions) {
|
|
|
118
124
|
response = await fetch(request, requestInitExt);
|
|
119
125
|
} catch (error2) {
|
|
120
126
|
let errorAfterMiddleware = error2;
|
|
121
|
-
if (
|
|
122
|
-
for (let i =
|
|
123
|
-
const m =
|
|
127
|
+
if (finalMiddlewares.length) {
|
|
128
|
+
for (let i = finalMiddlewares.length - 1; i >= 0; i--) {
|
|
129
|
+
const m = finalMiddlewares[i];
|
|
124
130
|
if (m && typeof m === "object" && typeof m.onError === "function") {
|
|
125
131
|
const result = await m.onError({
|
|
126
132
|
request,
|
|
@@ -149,9 +155,9 @@ function createClient(clientOptions) {
|
|
|
149
155
|
throw errorAfterMiddleware;
|
|
150
156
|
}
|
|
151
157
|
}
|
|
152
|
-
if (
|
|
153
|
-
for (let i =
|
|
154
|
-
const m =
|
|
158
|
+
if (finalMiddlewares.length) {
|
|
159
|
+
for (let i = finalMiddlewares.length - 1; i >= 0; i--) {
|
|
160
|
+
const m = finalMiddlewares[i];
|
|
155
161
|
if (m && typeof m === "object" && typeof m.onResponse === "function") {
|
|
156
162
|
const result = await m.onResponse({
|
|
157
163
|
request,
|
|
@@ -171,14 +177,22 @@ function createClient(clientOptions) {
|
|
|
171
177
|
}
|
|
172
178
|
}
|
|
173
179
|
}
|
|
174
|
-
|
|
180
|
+
const contentLength = response.headers.get("Content-Length");
|
|
181
|
+
if (response.status === 204 || request.method === "HEAD" || contentLength === "0" && !response.headers.get("Transfer-Encoding")?.includes("chunked")) {
|
|
175
182
|
return response.ok ? { data: void 0, response } : { error: void 0, response };
|
|
176
183
|
}
|
|
177
184
|
if (response.ok) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
185
|
+
const getResponseData = async () => {
|
|
186
|
+
if (parseAs === "stream") {
|
|
187
|
+
return response.body;
|
|
188
|
+
}
|
|
189
|
+
if (parseAs === "json" && !contentLength) {
|
|
190
|
+
const raw = await response.text();
|
|
191
|
+
return raw ? JSON.parse(raw) : void 0;
|
|
192
|
+
}
|
|
193
|
+
return await response[parseAs]();
|
|
194
|
+
};
|
|
195
|
+
return { data: await getResponseData(), response };
|
|
182
196
|
}
|
|
183
197
|
let error = await response.text();
|
|
184
198
|
try {
|
|
@@ -232,15 +246,15 @@ function createClient(clientOptions) {
|
|
|
232
246
|
if (typeof m !== "object" || !("onRequest" in m || "onResponse" in m || "onError" in m)) {
|
|
233
247
|
throw new Error("Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`");
|
|
234
248
|
}
|
|
235
|
-
|
|
249
|
+
globalMiddlewares.push(m);
|
|
236
250
|
}
|
|
237
251
|
},
|
|
238
252
|
/** Unregister middleware */
|
|
239
253
|
eject(...middleware) {
|
|
240
254
|
for (const m of middleware) {
|
|
241
|
-
const i =
|
|
255
|
+
const i = globalMiddlewares.indexOf(m);
|
|
242
256
|
if (i !== -1) {
|
|
243
|
-
|
|
257
|
+
globalMiddlewares.splice(i, 1);
|
|
244
258
|
}
|
|
245
259
|
}
|
|
246
260
|
}
|
|
@@ -421,7 +435,7 @@ function defaultBodySerializer(body, headers) {
|
|
|
421
435
|
function createFinalURL(pathname, options) {
|
|
422
436
|
let finalURL = `${options.baseUrl}${pathname}`;
|
|
423
437
|
if (options.params?.path) {
|
|
424
|
-
finalURL =
|
|
438
|
+
finalURL = options.pathSerializer(finalURL, options.params.path);
|
|
425
439
|
}
|
|
426
440
|
let search = options.querySerializer(options.params.query ?? {});
|
|
427
441
|
if (search.startsWith("?")) {
|