@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 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: Headers;
88
- queryParams: URLSearchParams;
89
- /** 默认:json */
90
- responseType: HttpResponseType;
91
- context: HttpContext;
92
- timeout: number;
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
- /** 默认:body */
98
- observe: "body" | "stream" | "response";
99
- abort: AbortSignal;
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
- for (const [key, value] of params) {
163
- endpoint = endpoint.replace(`:${key}`, value.toString());
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 param = new Map;
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
- param.set(aliasName, String(fieldValue));
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, param);
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 param = new Map;
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
- param.set(valueKey, value);
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
- request.endpoint = fillUrl(request.endpoint, param);
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);
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.aborted) {
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
- url.search = request2.queryParams.toString();
410
- if (!request2.headers.has("Content-Type")) {
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 (!request2.headers.has("Accept")) {
417
- request2.headers.set("Accept", "application/json, text/plain, */*");
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.get(FETCH_CONFIG_KEY);
423
+ const fetchConfig = request2.context?.get(FETCH_CONFIG_KEY) || {};
421
424
  return new Request(url, {
422
425
  ...fetchConfig,
423
426
  headers: request2.headers,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defjs/core",
3
- "version": "0.0.0-test-0005",
3
+ "version": "0.0.0-test-0006",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "bun run ./scripts/build.ts",