@defjs/core 0.0.0-test-0005 → 0.0.0-test-0006
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/index.d.ts +9 -9
- package/dist/index.js +33 -30
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -84,19 +84,19 @@ export interface HttpRequest {
|
|
|
84
84
|
method: string;
|
|
85
85
|
endpoint: string;
|
|
86
86
|
body?: Blob | ArrayBuffer | FormData | object | string | number | boolean | null;
|
|
87
|
-
headers
|
|
88
|
-
queryParams
|
|
89
|
-
/**
|
|
90
|
-
responseType
|
|
91
|
-
context
|
|
92
|
-
timeout
|
|
87
|
+
headers?: Headers;
|
|
88
|
+
queryParams?: URLSearchParams;
|
|
89
|
+
/** default:json */
|
|
90
|
+
responseType?: HttpResponseType;
|
|
91
|
+
context?: HttpContext;
|
|
92
|
+
timeout?: number;
|
|
93
93
|
withCredentials?: boolean;
|
|
94
94
|
/** when use fetch handler, no upload progress */
|
|
95
95
|
uploadProgress?: HttpProgressFn;
|
|
96
96
|
downloadProgress?: HttpProgressFn;
|
|
97
|
-
/**
|
|
98
|
-
observe
|
|
99
|
-
abort
|
|
97
|
+
/** default:body */
|
|
98
|
+
observe?: "body" | "stream" | "response";
|
|
99
|
+
abort?: AbortSignal;
|
|
100
100
|
}
|
|
101
101
|
export type RequestInputValue<T> = T extends Field<infer V> ? V : T extends {
|
|
102
102
|
[K in keyof T]: Field<any>;
|
package/dist/index.js
CHANGED
|
@@ -159,10 +159,9 @@ function throwAliaNotSet() {
|
|
|
159
159
|
throw new Error("alias not set");
|
|
160
160
|
}
|
|
161
161
|
function fillUrl(endpoint, params) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
return endpoint;
|
|
162
|
+
return endpoint.replace(/:([^\/]+)/g, (_, p1) => {
|
|
163
|
+
return params.get(p1) ?? "undefined";
|
|
164
|
+
});
|
|
166
165
|
}
|
|
167
166
|
async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
168
167
|
async function doValid(validators, value) {
|
|
@@ -178,7 +177,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
178
177
|
return typeof input2 === "object" && input2 !== null;
|
|
179
178
|
}
|
|
180
179
|
if (isField(fieldOrFieldGroup)) {
|
|
181
|
-
const
|
|
180
|
+
const params = new Map;
|
|
182
181
|
const queryParams = new URLSearchParams;
|
|
183
182
|
const headers = new Headers;
|
|
184
183
|
let body = undefined;
|
|
@@ -204,7 +203,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
204
203
|
if (!aliasName) {
|
|
205
204
|
throwAliaNotSet();
|
|
206
205
|
}
|
|
207
|
-
|
|
206
|
+
params.set(aliasName, String(fieldValue));
|
|
208
207
|
break;
|
|
209
208
|
}
|
|
210
209
|
case 4 /* Header */: {
|
|
@@ -228,14 +227,14 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
228
227
|
break;
|
|
229
228
|
}
|
|
230
229
|
}
|
|
231
|
-
request.endpoint = fillUrl(request.endpoint,
|
|
230
|
+
request.endpoint = fillUrl(request.endpoint, params);
|
|
232
231
|
request.queryParams = queryParams;
|
|
233
232
|
request.headers = headers;
|
|
234
233
|
request.body = body;
|
|
235
234
|
return;
|
|
236
235
|
}
|
|
237
236
|
if (isFieldGroup(fieldOrFieldGroup) && inputIsObject(input)) {
|
|
238
|
-
const
|
|
237
|
+
const params = new Map;
|
|
239
238
|
const queryParams = new URLSearchParams;
|
|
240
239
|
const headers = new Headers;
|
|
241
240
|
const formData = new FormData;
|
|
@@ -261,7 +260,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
261
260
|
queryParams.append(valueKey, value);
|
|
262
261
|
break;
|
|
263
262
|
case 3 /* Param */:
|
|
264
|
-
|
|
263
|
+
params.set(valueKey, value);
|
|
265
264
|
break;
|
|
266
265
|
case 4 /* Header */:
|
|
267
266
|
headers.set(valueKey, value);
|
|
@@ -274,16 +273,16 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
274
273
|
break;
|
|
275
274
|
}
|
|
276
275
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
276
|
+
}
|
|
277
|
+
request.endpoint = fillUrl(request.endpoint, params);
|
|
278
|
+
request.queryParams = queryParams;
|
|
279
|
+
request.headers = headers;
|
|
280
|
+
if (body) {
|
|
281
|
+
request.body = body;
|
|
282
|
+
} else if (Array.from(formData.keys()).length > 0) {
|
|
283
|
+
request.body = formData;
|
|
284
|
+
} else if (Object.keys(json).length) {
|
|
285
|
+
request.body = JSON.stringify(json);
|
|
287
286
|
}
|
|
288
287
|
return;
|
|
289
288
|
}
|
|
@@ -349,9 +348,9 @@ async function doRequest(...args) {
|
|
|
349
348
|
req.body = requestOptions.transformRequest(req);
|
|
350
349
|
}
|
|
351
350
|
const chain = makeInterceptorChain([...clientOptions?.interceptors || [], ...requestOptions?.interceptors || []]);
|
|
352
|
-
if (req.timeout > 0 && abortController) {
|
|
351
|
+
if (typeof req.timeout === "number" && req.timeout > 0 && abortController) {
|
|
353
352
|
setTimeout(() => {
|
|
354
|
-
if (!req.abort
|
|
353
|
+
if (!req.abort?.aborted) {
|
|
355
354
|
abortController.abort("timeout");
|
|
356
355
|
}
|
|
357
356
|
}, req.timeout);
|
|
@@ -406,18 +405,22 @@ function makeResponse(options) {
|
|
|
406
405
|
// src/handler/fetch/fetch.ts
|
|
407
406
|
function createRequest(request2) {
|
|
408
407
|
const url = new URL(request2.endpoint, request2.host);
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
const detectedType = detectContentTypeHeader(request2.body);
|
|
412
|
-
if (detectedType) {
|
|
413
|
-
request2.headers.set("Content-Type", detectedType);
|
|
414
|
-
}
|
|
408
|
+
if (request2.queryParams) {
|
|
409
|
+
url.search = request2.queryParams.toString();
|
|
415
410
|
}
|
|
416
|
-
if (
|
|
417
|
-
request2.headers.
|
|
411
|
+
if (request2.headers) {
|
|
412
|
+
if (!request2.headers.has("Content-Type")) {
|
|
413
|
+
const detectedType = detectContentTypeHeader(request2.body);
|
|
414
|
+
if (detectedType) {
|
|
415
|
+
request2.headers.set("Content-Type", detectedType);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
if (!request2.headers.has("Accept")) {
|
|
419
|
+
request2.headers.set("Accept", "application/json, text/plain, */*");
|
|
420
|
+
}
|
|
418
421
|
}
|
|
419
422
|
const credentials = request2.withCredentials ? "include" : undefined;
|
|
420
|
-
const fetchConfig = request2.context
|
|
423
|
+
const fetchConfig = request2.context?.get(FETCH_CONFIG_KEY) || {};
|
|
421
424
|
return new Request(url, {
|
|
422
425
|
...fetchConfig,
|
|
423
426
|
headers: request2.headers,
|