@defjs/core 0.0.0-test-002 → 0.0.0-test-004

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/index.js CHANGED
@@ -1,48 +1,93 @@
1
- // src/error.ts
2
- var ERR_ABORTED = new Error("ERR_ABORTED");
3
- var ERR_TIMEOUT = new Error("ERR_TIMEOUT");
4
- var ERR_NETWORK = new Error("ERR_NETWORK");
5
- var ERR_NOT_FOUND_HANDLER = new Error("ERR_NOT_FOUND_HANDLER");
6
- var ERR_OBSERVE = new Error("ERR_OBSERVE");
7
- var ERR_NOT_SET_ALIAS = new Error("ERR_NOT_SET_ALIAS");
8
- var ERR_UNSUPPORTED_FIELD_TYPE = new Error("ERR_UNSUPPORTED_FIELD_TYPE");
9
- var ERR_INVALID_CLIENT = new Error("ERR_INVALID_CLIENT");
10
- var ERR_NOT_FOUND_GLOBAL_CLIENT = new Error("ERR_NOT_FOUND_GLOBAL_CLIENT");
11
- var ERR_INVALID_HTTP_CONTEXT_TOKEN = new Error("ERR_INVALID_HTTP_CONTEXT_TOKEN");
12
- var ERR_UNKNOWN = new Error("ERR_UNKNOWN");
13
-
1
+ const ERR_ABORTED = new Error("ERR_ABORTED");
2
+ const ERR_TIMEOUT = new Error("ERR_TIMEOUT");
3
+ const ERR_NETWORK = new Error("ERR_NETWORK");
4
+ const ERR_NOT_FOUND_HANDLER = new Error("ERR_NOT_FOUND_HANDLER");
5
+ const ERR_OBSERVE = new Error("ERR_OBSERVE");
6
+ const ERR_NOT_SET_ALIAS = new Error("ERR_NOT_SET_ALIAS");
7
+ const ERR_UNSUPPORTED_FIELD_TYPE = new Error("ERR_UNSUPPORTED_FIELD_TYPE");
8
+ const ERR_INVALID_CLIENT = new Error("ERR_INVALID_CLIENT");
9
+ const ERR_NOT_FOUND_GLOBAL_CLIENT = new Error("ERR_NOT_FOUND_GLOBAL_CLIENT");
10
+ const ERR_INVALID_HTTP_CONTEXT_TOKEN = new Error("ERR_INVALID_HTTP_CONTEXT_TOKEN");
11
+ const ERR_UNKNOWN = new Error("ERR_UNKNOWN");
14
12
  class HttpErrorResponse extends Error {
15
13
  status;
16
14
  statusText;
17
15
  url;
18
16
  headers;
19
- ok;
20
17
  body;
21
18
  constructor(init) {
22
- const status = init.status ?? 0;
23
- const statusText = init.statusText ?? "";
19
+ const status = init?.status ?? 0;
20
+ const statusText = init?.statusText ?? "";
24
21
  const ok = status >= 200 && status < 300;
25
- const headers = init.headers ?? new Headers;
26
- const url = init.url ?? null;
27
- const body = init.body ?? null;
22
+ const headers = init?.headers ?? new Headers();
23
+ const url = init?.url ?? "";
24
+ const body = init?.body ?? null;
28
25
  let message;
29
26
  if (ok) {
30
- message = `Http failure during parsing for ${init.url || "(unknown url)"}`;
27
+ message = `Http failure during parsing for ${url}`;
31
28
  } else {
32
- message = `Http failure response for ${init.url || "(unknown url)"}: ${init.status} ${init.statusText}`;
29
+ message = `Http failure response for ${url || "(unknown url)"}: ${status}`;
30
+ if (statusText) {
31
+ message += ` - ${statusText}`;
32
+ }
33
33
  }
34
- super(message, { cause: init.error });
34
+ super(message, { cause: init?.error });
35
35
  super.name = "HttpErrorResponse";
36
36
  this.statusText = statusText;
37
37
  this.url = url;
38
38
  this.headers = headers;
39
39
  this.status = status;
40
- this.ok = ok;
41
40
  this.body = body;
42
41
  }
43
42
  }
44
43
 
45
- // src/context.ts
44
+ function __getContentLength(headers) {
45
+ const value = headers.get("Content-Length");
46
+ if (!value) {
47
+ return 0;
48
+ }
49
+ const num = Number(value);
50
+ if (isNaN(num)) {
51
+ return 0;
52
+ }
53
+ return num;
54
+ }
55
+ function __getContentType(headers) {
56
+ return headers.get("Content-Type") || "";
57
+ }
58
+ function __parseBody(params) {
59
+ const { request, content, contentType } = params;
60
+ const responseType = request.responseType;
61
+ switch (responseType) {
62
+ case "json": {
63
+ const text = new TextDecoder().decode(content);
64
+ if (text === "") {
65
+ return null;
66
+ }
67
+ return JSON.parse(text);
68
+ }
69
+ case "text":
70
+ return new TextDecoder().decode(content);
71
+ case "blob": {
72
+ return new Blob([content], { type: contentType });
73
+ }
74
+ case "arraybuffer":
75
+ return content.buffer;
76
+ default:
77
+ return null;
78
+ }
79
+ }
80
+ function __concatChunks(chunks, totalLength) {
81
+ const chunksAll = new Uint8Array(totalLength);
82
+ let position = 0;
83
+ for (const chunk of chunks) {
84
+ chunksAll.set(chunk, position);
85
+ position += chunk.length;
86
+ }
87
+ return chunksAll;
88
+ }
89
+
90
+ const HTTP_CONTEXT_TOKEN = Symbol("HttpContextToken");
46
91
  function makeHttpContextToken(defaultValue) {
47
92
  Object.defineProperty(defaultValue, HTTP_CONTEXT_TOKEN, { value: defaultValue });
48
93
  return defaultValue;
@@ -50,8 +95,28 @@ function makeHttpContextToken(defaultValue) {
50
95
  function isHttpContextToken(value) {
51
96
  return typeof value === "function" && HTTP_CONTEXT_TOKEN in value;
52
97
  }
53
- function makeHttpContext() {
54
- const ctx = new Map;
98
+ const HTTP_CONTEXT = Symbol("HttpContext");
99
+ function isHttpContext(value) {
100
+ return typeof value === "object" && value !== null && HTTP_CONTEXT in value;
101
+ }
102
+ function makeHttpContext(entries) {
103
+ const ctx = /* @__PURE__ */ new Map();
104
+ switch (true) {
105
+ case Array.isArray(entries): {
106
+ for (const [token, value] of entries) {
107
+ if (isHttpContextToken(token)) {
108
+ ctx.set(token, value);
109
+ }
110
+ }
111
+ break;
112
+ }
113
+ case isHttpContext(entries): {
114
+ for (const [token, value] of entries[HTTP_CONTEXT]) {
115
+ ctx.set(token, value);
116
+ }
117
+ break;
118
+ }
119
+ }
55
120
  return {
56
121
  set(token, value) {
57
122
  if (!isHttpContextToken(token)) {
@@ -78,15 +143,30 @@ function makeHttpContext() {
78
143
  },
79
144
  keys() {
80
145
  return ctx.keys();
81
- }
146
+ },
147
+ get length() {
148
+ return Array.from(ctx.keys()).length;
149
+ },
150
+ [HTTP_CONTEXT]: ctx
82
151
  };
83
152
  }
84
- var HTTP_CONTEXT_TOKEN = Symbol("HttpContextToken");
85
153
 
86
- // src/field.ts
154
+ const FIELD = Symbol("field");
155
+ var FieldType = /* @__PURE__ */ ((FieldType2) => {
156
+ FieldType2[FieldType2["Json"] = 0] = "Json";
157
+ FieldType2[FieldType2["Query"] = 1] = "Query";
158
+ FieldType2[FieldType2["Param"] = 2] = "Param";
159
+ FieldType2[FieldType2["Header"] = 3] = "Header";
160
+ FieldType2[FieldType2["Form"] = 4] = "Form";
161
+ FieldType2[FieldType2["Body"] = 5] = "Body";
162
+ FieldType2[FieldType2["UrlForm"] = 6] = "UrlForm";
163
+ return FieldType2;
164
+ })(FieldType || {});
87
165
  function field(defaultValue) {
88
166
  const meta = {
89
- alias: new Map,
167
+ // todo
168
+ required: typeof defaultValue !== "undefined",
169
+ alias: /* @__PURE__ */ new Map(),
90
170
  validators: [],
91
171
  asyncValidator: []
92
172
  };
@@ -95,31 +175,31 @@ function field(defaultValue) {
95
175
  value: meta
96
176
  });
97
177
  getter.withJson = (alias) => {
98
- meta.alias.set(1 /* Json */, alias);
178
+ meta.alias.set(0 /* Json */, alias);
99
179
  return getter;
100
180
  };
101
181
  getter.withForm = (alias) => {
102
- meta.alias.set(5 /* Form */, alias);
182
+ meta.alias.set(4 /* Form */, alias);
103
183
  return getter;
104
184
  };
105
185
  getter.withQuery = (alias) => {
106
- meta.alias.set(2 /* Query */, alias);
186
+ meta.alias.set(1 /* Query */, alias);
107
187
  return getter;
108
188
  };
109
189
  getter.withParam = (alias) => {
110
- meta.alias.set(3 /* Param */, alias);
190
+ meta.alias.set(2 /* Param */, alias);
111
191
  return getter;
112
192
  };
113
193
  getter.withHeader = (alias) => {
114
- meta.alias.set(4 /* Header */, alias);
194
+ meta.alias.set(3 /* Header */, alias);
115
195
  return getter;
116
196
  };
117
197
  getter.withUrlForm = (alias) => {
118
- meta.alias.set(7 /* UrlForm */, alias);
198
+ meta.alias.set(6 /* UrlForm */, alias);
119
199
  return getter;
120
200
  };
121
201
  getter.withBody = () => {
122
- meta.alias.set(6 /* Body */, undefined);
202
+ meta.alias.set(5 /* Body */, void 0);
123
203
  return getter;
124
204
  };
125
205
  getter.withValidators = (...fn) => {
@@ -135,21 +215,8 @@ function field(defaultValue) {
135
215
  function __getFieldMetadata(field2) {
136
216
  return field2[FIELD];
137
217
  }
138
- function validatorField(validators, value) {
139
- for (const fn of validators) {
140
- const err = fn(value);
141
- if (err) {
142
- throw err;
143
- }
144
- }
145
- }
146
- async function asyncValidatorField(asyncValidator, value) {
147
- for (const fn of asyncValidator) {
148
- const err = await fn(value);
149
- if (err) {
150
- throw err;
151
- }
152
- }
218
+ async function doValid(validators, value) {
219
+ await Promise.all(validators.map((validator) => validator(value)));
153
220
  }
154
221
  function isField(value) {
155
222
  return !!value && typeof value === "function" && FIELD in value;
@@ -157,26 +224,25 @@ function isField(value) {
157
224
  function isFieldGroup(value) {
158
225
  return !!value && typeof value === "object" && Object.entries(value).every(([, v]) => isField(v));
159
226
  }
160
- var FIELD = Symbol("field");
161
227
 
162
- // src/handler/handler.ts
163
- var globalHttpHandler = undefined;
164
- var getGlobalHttpHandler = () => globalHttpHandler;
228
+ let globalHttpHandler = void 0;
229
+ const getGlobalHttpHandler = () => globalHttpHandler;
165
230
 
166
- // src/interceptor/interceptor.ts
167
231
  function makeInterceptorChain(interceptors) {
168
- return interceptors.reduceRight((fn, interceptor) => {
169
- return (initReq, finalHandlerFn) => interceptor(initReq, (req) => fn(req, finalHandlerFn));
170
- }, (req, fn) => fn(req));
232
+ return interceptors.reduceRight(
233
+ (fn, interceptor) => {
234
+ return (initReq, finalHandlerFn) => interceptor(initReq, (req) => fn(req, finalHandlerFn));
235
+ },
236
+ (req, fn) => fn(req)
237
+ );
171
238
  }
172
239
 
173
- // src/response.ts
174
240
  function __makeResponse(options) {
175
- const status = options.status ?? 0;
176
- const statusText = options.statusText ?? "";
177
- const url = options.url ?? "";
178
- const headers = options.headers ?? new Headers;
179
- const body = options.body ?? null;
241
+ const status = options?.status ?? 0;
242
+ const statusText = options?.statusText ?? "";
243
+ const url = options?.url ?? "";
244
+ const headers = options?.headers ?? new Headers();
245
+ const body = options?.body ?? null;
180
246
  return {
181
247
  status,
182
248
  statusText,
@@ -186,7 +252,6 @@ function __makeResponse(options) {
186
252
  };
187
253
  }
188
254
 
189
- // src/request.ts
190
255
  function __serializeBody(body) {
191
256
  switch (true) {
192
257
  case body instanceof FormData:
@@ -232,19 +297,19 @@ function __buildFieldDefaultValue(input) {
232
297
  }
233
298
  if (isFieldGroup(input)) {
234
299
  const obj = {};
235
- for (const [key, field3] of Object.entries(input)) {
236
- obj[key] = field3();
300
+ for (const [key, field] of Object.entries(input)) {
301
+ obj[key] = field();
237
302
  }
238
303
  return obj;
239
304
  }
240
- return;
305
+ return void 0;
241
306
  }
242
307
  function defineRequest(method, endpoint) {
243
308
  let requiredInput = false;
244
- let field3;
309
+ let field;
245
310
  let interceptors = [];
246
311
  let responseType = "json";
247
- let context2;
312
+ let context;
248
313
  let observe = "body";
249
314
  let withCredentials = false;
250
315
  let validators = [];
@@ -253,7 +318,7 @@ function defineRequest(method, endpoint) {
253
318
  let uploadProgress;
254
319
  let downloadProgress;
255
320
  let abortSignal;
256
- const getInitValue = () => __buildFieldDefaultValue(field3);
321
+ const getInitValue = () => __buildFieldDefaultValue(field);
257
322
  const setUploadProgress = (fn2) => {
258
323
  uploadProgress = fn2;
259
324
  };
@@ -288,41 +353,41 @@ function defineRequest(method, endpoint) {
288
353
  } else if (timeout > 0) {
289
354
  abortSignal = AbortSignal.timeout(timeout);
290
355
  }
291
- const client2 = isClient(doRequestOptions?.client) ? doRequestOptions.client : getGlobalClient();
292
- const clientOptions = getClientConfig(client2);
356
+ const client = isClient(doRequestOptions?.client) ? doRequestOptions.client : getGlobalClient();
357
+ const clientOptions = getClientConfig(client);
293
358
  const req = {
294
359
  host: clientOptions?.host,
295
360
  method,
296
361
  endpoint,
297
- queryParams: new URLSearchParams,
298
- headers: new Headers,
299
- body: undefined,
362
+ queryParams: new URLSearchParams(),
363
+ headers: new Headers(),
364
+ body: void 0,
300
365
  withCredentials,
301
366
  responseType,
302
- context: context2 || makeHttpContext(),
367
+ context: context || makeHttpContext(),
303
368
  observe,
304
369
  uploadProgress,
305
370
  downloadProgress,
306
371
  timeout,
307
372
  abort: abortSignal
308
373
  };
309
- const handler2 = doRequestOptions?.handler || clientOptions?.handler || getGlobalHttpHandler();
310
- if (!handler2) {
374
+ const handler = doRequestOptions?.handler || clientOptions?.handler || getGlobalHttpHandler();
375
+ if (!handler) {
311
376
  throw ERR_NOT_FOUND_HANDLER;
312
377
  }
313
- if (requiredInput) {
314
- await __fillRequestFromField(req, field3, input);
378
+ if (requiredInput && field) {
379
+ await __fillRequestFromField(req, field, input);
315
380
  }
316
381
  const chain = makeInterceptorChain([...interceptors]);
317
- let res = await chain(req, handler2);
382
+ let res = await chain(req, handler);
318
383
  if (typeof transformResponse === "function") {
319
384
  try {
320
385
  res = __makeResponse({
321
386
  ...res,
322
387
  body: transformResponse(res)
323
388
  });
324
- } catch (error3) {
325
- throw new HttpErrorResponse({ error: error3 });
389
+ } catch (error) {
390
+ throw new HttpErrorResponse({ error });
326
391
  }
327
392
  }
328
393
  switch (req.observe) {
@@ -342,7 +407,7 @@ function defineRequest(method, endpoint) {
342
407
  };
343
408
  };
344
409
  fn.withField = (value) => {
345
- field3 = value;
410
+ field = value;
346
411
  requiredInput = true;
347
412
  return fn;
348
413
  };
@@ -351,7 +416,7 @@ function defineRequest(method, endpoint) {
351
416
  return fn;
352
417
  };
353
418
  fn.withContext = (value) => {
354
- context2 = value;
419
+ context = value;
355
420
  return fn;
356
421
  };
357
422
  fn.withCredentials = (value) => {
@@ -360,7 +425,6 @@ function defineRequest(method, endpoint) {
360
425
  };
361
426
  fn.withValidators = (value) => {
362
427
  validators = value;
363
- console.log(validators);
364
428
  return fn;
365
429
  };
366
430
  fn.withTransformResponse = (value) => {
@@ -383,15 +447,6 @@ function __fillUrl(endpoint, params) {
383
447
  });
384
448
  }
385
449
  async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
386
- async function doValid(validators, value) {
387
- for (const validator of validators) {
388
- const err = await validator(value);
389
- if (err) {
390
- return err;
391
- }
392
- }
393
- return;
394
- }
395
450
  function inputIsObject(input2) {
396
451
  return typeof input2 === "object" && input2 !== null;
397
452
  }
@@ -428,57 +483,64 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
428
483
  sp.set(key, serializeToString(value));
429
484
  return sp;
430
485
  }
486
+ function getValidValue(value, defaultValue) {
487
+ switch (true) {
488
+ case typeof value === "undefined":
489
+ return defaultValue;
490
+ case (typeof value === "object" && value === null):
491
+ return value;
492
+ default:
493
+ return value;
494
+ }
495
+ }
431
496
  if (isField(fieldOrFieldGroup)) {
432
497
  let params;
433
498
  let queryParams;
434
499
  let headers;
435
- let body = undefined;
436
- const fieldValue = input ?? fieldOrFieldGroup();
500
+ let body = void 0;
501
+ const validValue = getValidValue(input, fieldOrFieldGroup());
437
502
  const meta = __getFieldMetadata(fieldOrFieldGroup);
438
- const err = await doValid([...meta.validators, ...meta.asyncValidator], fieldValue);
439
- if (err) {
440
- throw err;
441
- }
503
+ await doValid([...meta.validators, ...meta.asyncValidator], validValue);
442
504
  for (const [type, aliasName] of meta.alias) {
443
505
  switch (type) {
444
- case 2 /* Query */: {
506
+ case FieldType.Query: {
445
507
  if (!aliasName) {
446
508
  throw ERR_NOT_SET_ALIAS;
447
509
  }
448
- queryParams = appendValue(new URLSearchParams, aliasName, fieldValue);
510
+ queryParams = appendValue(new URLSearchParams(), aliasName, validValue);
449
511
  break;
450
512
  }
451
- case 3 /* Param */: {
513
+ case FieldType.Param: {
452
514
  if (!aliasName) {
453
515
  throw ERR_NOT_SET_ALIAS;
454
516
  }
455
- params = setValue(new Map, aliasName, fieldValue);
517
+ params = setValue(/* @__PURE__ */ new Map(), aliasName, validValue);
456
518
  break;
457
519
  }
458
- case 4 /* Header */: {
520
+ case FieldType.Header: {
459
521
  if (!aliasName) {
460
522
  throw ERR_NOT_SET_ALIAS;
461
523
  }
462
- headers = appendValue(new Headers, aliasName, fieldValue);
524
+ headers = appendValue(new Headers(), aliasName, validValue);
463
525
  break;
464
526
  }
465
- case 5 /* Form */: {
527
+ case FieldType.Form: {
466
528
  if (!aliasName) {
467
529
  throw ERR_NOT_SET_ALIAS;
468
530
  }
469
- body = appendValue(new FormData, aliasName, fieldValue);
531
+ body = appendValue(new FormData(), aliasName, validValue);
470
532
  break;
471
533
  }
472
- case 7 /* UrlForm */: {
534
+ case FieldType.UrlForm: {
473
535
  if (!aliasName) {
474
536
  throw ERR_NOT_SET_ALIAS;
475
537
  }
476
- body = appendValue(new URLSearchParams, aliasName, fieldValue);
538
+ body = appendValue(new URLSearchParams(), aliasName, validValue);
477
539
  break;
478
540
  }
479
- case 1 /* Json */:
480
- case 6 /* Body */:
481
- body = fieldValue;
541
+ case FieldType.Json:
542
+ case FieldType.Body:
543
+ body = validValue;
482
544
  break;
483
545
  }
484
546
  }
@@ -491,55 +553,52 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
491
553
  return;
492
554
  }
493
555
  if (isFieldGroup(fieldOrFieldGroup) && inputIsObject(input)) {
494
- let params = new Map;
495
- let queryParams = new URLSearchParams;
496
- let headers = new Headers;
497
- let urlForm = new URLSearchParams;
498
- let formData = new FormData;
556
+ let params = /* @__PURE__ */ new Map();
557
+ let queryParams = new URLSearchParams();
558
+ let headers = new Headers();
559
+ let urlForm = new URLSearchParams();
560
+ let formData = new FormData();
499
561
  const json = {};
500
- let body = undefined;
562
+ let body = void 0;
501
563
  let lastBodyField;
502
- for (const [propertyKey, field3] of Object.entries(fieldOrFieldGroup)) {
503
- const meta = __getFieldMetadata(field3);
564
+ for (const [propertyKey, field] of Object.entries(fieldOrFieldGroup)) {
565
+ const meta = __getFieldMetadata(field);
504
566
  for (const [type, aliasName] of meta.alias) {
505
567
  const valueKey = aliasName || propertyKey;
506
- const value = input[propertyKey] || field3();
507
- const err = await doValid([...meta.validators, ...meta.asyncValidator], value);
508
- if (err) {
509
- throw err;
510
- }
568
+ const value = getValidValue(input[propertyKey], field());
569
+ await doValid([...meta.validators, ...meta.asyncValidator], value);
511
570
  switch (type) {
512
- case 1 /* Json */: {
571
+ case FieldType.Json: {
513
572
  Object.defineProperty(json, valueKey, {
514
573
  value,
515
574
  writable: true,
516
575
  enumerable: true
517
576
  });
518
- lastBodyField = 1 /* Json */;
577
+ lastBodyField = FieldType.Json;
519
578
  break;
520
579
  }
521
- case 2 /* Query */:
580
+ case FieldType.Query:
522
581
  queryParams = appendValue(queryParams, valueKey, value);
523
582
  break;
524
- case 3 /* Param */:
583
+ case FieldType.Param:
525
584
  params = setValue(params, valueKey, value);
526
585
  break;
527
- case 4 /* Header */:
586
+ case FieldType.Header:
528
587
  headers = appendValue(headers, valueKey, value);
529
588
  break;
530
- case 5 /* Form */: {
589
+ case FieldType.Form: {
531
590
  formData = appendValue(formData, valueKey, value);
532
- lastBodyField = 5 /* Form */;
591
+ lastBodyField = FieldType.Form;
533
592
  break;
534
593
  }
535
- case 7 /* UrlForm */: {
594
+ case FieldType.UrlForm: {
536
595
  urlForm = appendValue(urlForm, valueKey, value);
537
- lastBodyField = 7 /* UrlForm */;
596
+ lastBodyField = FieldType.UrlForm;
538
597
  break;
539
598
  }
540
- case 6 /* Body */: {
599
+ case FieldType.Body: {
541
600
  body = value;
542
- lastBodyField = 6 /* Body */;
601
+ lastBodyField = FieldType.Body;
543
602
  break;
544
603
  }
545
604
  }
@@ -549,16 +608,16 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
549
608
  request.queryParams = queryParams;
550
609
  request.headers = headers;
551
610
  switch (lastBodyField) {
552
- case 6 /* Body */:
611
+ case FieldType.Body:
553
612
  request.body = body;
554
613
  break;
555
- case 5 /* Form */:
614
+ case FieldType.Form:
556
615
  request.body = formData;
557
616
  break;
558
- case 7 /* UrlForm */:
617
+ case FieldType.UrlForm:
559
618
  request.body = urlForm;
560
619
  break;
561
- case 1 /* Json */:
620
+ case FieldType.Json:
562
621
  request.body = json;
563
622
  break;
564
623
  }
@@ -567,66 +626,14 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
567
626
  throw ERR_UNSUPPORTED_FIELD_TYPE;
568
627
  }
569
628
 
570
- // src/handler/util.ts
571
- function __getContentLength(headers) {
572
- const value = headers.get("Content-Length");
573
- if (!value) {
574
- return 0;
629
+ function __createRequest(request) {
630
+ const url = new URL(request.endpoint, request.host);
631
+ if (request.queryParams) {
632
+ url.search = request.queryParams.toString();
575
633
  }
576
- const num = Number(value);
577
- if (isNaN(num)) {
578
- return 0;
579
- }
580
- return num;
581
- }
582
- function __getContentType(headers) {
583
- return headers.get("Content-Type") || "";
584
- }
585
- function __parseBody(params) {
586
- const { request, content, contentType } = params;
587
- const responseType = request.responseType;
588
- if (!responseType) {
589
- return null;
590
- }
591
- switch (responseType) {
592
- case "json": {
593
- const text = new TextDecoder().decode(content);
594
- if (text === "") {
595
- return null;
596
- }
597
- console.log(text);
598
- return JSON.parse(text);
599
- }
600
- case "text":
601
- return new TextDecoder().decode(content);
602
- case "blob": {
603
- return new Blob([content], { type: contentType });
604
- }
605
- case "arraybuffer":
606
- return content.buffer;
607
- default:
608
- return null;
609
- }
610
- }
611
- function __concatChunks(chunks, totalLength) {
612
- const chunksAll = new Uint8Array(totalLength);
613
- let position = 0;
614
- for (const chunk of chunks) {
615
- chunksAll.set(chunk, position);
616
- position += chunk.length;
617
- }
618
- return chunksAll;
619
- }
620
-
621
- // src/handler/fetch/fetch.ts
622
- function __createRequest(request2) {
623
- const url = new URL(request2.endpoint, request2.host);
624
- if (request2.queryParams) {
625
- url.search = request2.queryParams.toString();
626
- }
627
- const headers = request2.headers ?? new Headers;
634
+ const headers = request.headers ?? new Headers();
628
635
  if (!headers.has("Content-Type")) {
629
- const detectedType = __detectContentTypeHeader(request2.body);
636
+ const detectedType = __detectContentTypeHeader(request.body);
630
637
  if (detectedType) {
631
638
  headers.set("Content-Type", detectedType);
632
639
  }
@@ -634,41 +641,40 @@ function __createRequest(request2) {
634
641
  if (!headers.has("Accept")) {
635
642
  headers.set("Accept", "application/json, text/plain, */*");
636
643
  }
637
- const credentials = request2.withCredentials ? "include" : undefined;
638
- const fetchConfig = request2.context?.get(FETCH_CONFIG_KEY) || {};
644
+ const credentials = request.withCredentials ? "include" : void 0;
639
645
  return new Request(url, {
640
- ...fetchConfig,
641
646
  headers,
642
- method: request2.method,
643
- body: __serializeBody(request2.body),
644
- signal: request2.abort,
647
+ method: request.method,
648
+ body: __serializeBody(request.body),
649
+ signal: request.abort,
645
650
  credentials
646
651
  });
647
652
  }
648
653
  async function fetchHandler(httpRequest) {
649
654
  const downloadProgress = httpRequest.downloadProgress;
650
- const request2 = __createRequest(httpRequest);
651
- let response3;
655
+ const request = __createRequest(httpRequest);
656
+ const abortSignal = httpRequest.abort;
657
+ let response;
652
658
  try {
653
- response3 = await (globalThis || window).fetch(request2);
654
- } catch (error4) {
655
- if (error4 instanceof DOMException) {
659
+ response = await globalThis.fetch(request);
660
+ } catch (error) {
661
+ if (abortSignal?.aborted && abortSignal.reason instanceof Error) {
656
662
  switch (true) {
657
- case (error4.name === "AbortError" || error4.code === error4.ABORT_ERR):
663
+ case abortSignal.reason.name === "AbortError":
658
664
  throw new HttpErrorResponse({ error: ERR_ABORTED });
659
- case (error4.name === "TimeoutError" || error4.code === error4.TIMEOUT_ERR):
665
+ case abortSignal.reason.name === "TimeoutError":
660
666
  throw new HttpErrorResponse({ error: ERR_TIMEOUT });
661
667
  }
662
668
  }
663
- throw new HttpErrorResponse({ error: error4 });
669
+ throw new HttpErrorResponse({ error });
664
670
  }
665
- const { ok, headers, status, statusText, url } = response3;
671
+ const { ok, headers, status, statusText, url } = response;
666
672
  const contentLength = __getContentLength(headers);
667
673
  const contentType = __getContentType(headers);
668
674
  let body = null;
669
- if (response3.body) {
675
+ if (response.body) {
670
676
  const chunks = [];
671
- const reader = response3.body.getReader();
677
+ const reader = response.body.getReader();
672
678
  let receivedLength = 0;
673
679
  while (true) {
674
680
  const { done, value } = await reader.read();
@@ -690,9 +696,9 @@ async function fetchHandler(httpRequest) {
690
696
  content: chunksAll,
691
697
  contentType
692
698
  });
693
- } catch (error4) {
699
+ } catch (error) {
694
700
  throw new HttpErrorResponse({
695
- error: error4,
701
+ error,
696
702
  status,
697
703
  statusText,
698
704
  headers,
@@ -717,20 +723,22 @@ async function fetchHandler(httpRequest) {
717
723
  body
718
724
  });
719
725
  }
720
- var FETCH_CONFIG_KEY = makeHttpContextToken(() => ({}));
721
- // src/client.ts
726
+
727
+ const CLIENT = Symbol("Client");
728
+ let globalClient;
722
729
  function isClient(value) {
723
730
  return typeof value === "object" && value !== null && CLIENT in value;
724
731
  }
725
- function getClientConfig(client2) {
726
- if (!isClient(client2)) {
732
+ function getClientConfig(client) {
733
+ if (!isClient(client)) {
727
734
  throw ERR_INVALID_CLIENT;
728
735
  }
729
- return client2[CLIENT];
736
+ return client[CLIENT];
730
737
  }
731
738
  function createClient(options) {
732
739
  const conf = {
733
740
  host: options.host,
741
+ strict: options.strict ?? true,
734
742
  interceptors: options.interceptors ?? [],
735
743
  handler: options.handler || fetchHandler
736
744
  };
@@ -738,8 +746,8 @@ function createClient(options) {
738
746
  [CLIENT]: conf
739
747
  };
740
748
  }
741
- function cloneClient(client2, options) {
742
- const preConf = getClientConfig(client2);
749
+ function cloneClient(client, options) {
750
+ const preConf = getClientConfig(client);
743
751
  const conf = {
744
752
  ...preConf,
745
753
  ...options
@@ -754,70 +762,68 @@ function getGlobalClient() {
754
762
  }
755
763
  return globalClient;
756
764
  }
757
- function setGlobalClient(client2) {
758
- globalClient = client2;
765
+ function setGlobalClient(client) {
766
+ globalClient = client;
759
767
  }
760
768
  function restGlobalClient() {
761
- globalClient = undefined;
769
+ globalClient = void 0;
762
770
  }
763
771
  function createGlobalClient(options) {
764
772
  globalClient = createClient(options);
765
773
  }
766
- var CLIENT = Symbol("Client");
767
- var globalClient;
768
- // src/interceptor/authorization/basic_auth_interceptor.ts
774
+
769
775
  function basicAuthInterceptor(fn, options) {
770
776
  let encode = options?.encode;
771
777
  if (!encode) {
772
- const btoa = (globalThis || window).btoa;
778
+ const btoa = globalThis.btoa;
773
779
  if (typeof btoa !== "function") {
774
780
  throw new Error("BasicAuthInterceptor is not supported in this environment");
775
781
  }
776
782
  encode = (data) => btoa(`${data.username}:${data.password}`);
777
783
  }
778
784
  return (req, next) => {
779
- const headers = req.headers || new Headers;
785
+ const headers = req.headers || new Headers();
780
786
  headers.set("Authorization", `Basic ${encode(fn())}`);
781
787
  req.headers = headers;
782
788
  return next(req);
783
789
  };
784
790
  }
785
- // src/validator.ts
786
- var required = (value) => {
791
+
792
+ const required = (value) => {
787
793
  if (!value) {
788
794
  return new Error("required");
789
795
  }
790
796
  return null;
791
797
  };
792
- var requiredTrue = (value) => {
798
+ const requiredTrue = (value) => {
793
799
  if (typeof value !== "boolean" || !value) {
794
800
  return new Error("requiredTrue");
795
801
  }
796
802
  return null;
797
803
  };
798
- var minLength = (min) => {
804
+ const minLength = (min2) => {
799
805
  return (value) => {
800
806
  if (typeof value !== "string") {
801
807
  return new Error("invalid string");
802
808
  }
803
- if (value.length < min) {
804
- return new Error(`minLength ${min}`);
809
+ if (value.length < min2) {
810
+ return new Error(`minLength ${min2}`);
805
811
  }
806
812
  return null;
807
813
  };
808
814
  };
809
- var maxLength = (max) => {
815
+ const maxLength = (max2) => {
810
816
  return (value) => {
811
817
  if (typeof value !== "string") {
812
818
  return new Error("invalid string");
813
819
  }
814
- if (value.length > max) {
815
- return new Error(`maxLength ${max}`);
820
+ if (value.length > max2) {
821
+ return new Error(`maxLength ${max2}`);
816
822
  }
817
823
  return null;
818
824
  };
819
825
  };
820
- var min = (min2) => {
826
+ const min = (min2) => {
821
827
  return (value) => {
822
828
  if (typeof value !== "number" || isNaN(value)) {
823
829
  return new Error("invalid number");
@@ -828,7 +834,7 @@ var min = (min2) => {
828
834
  return null;
829
835
  };
830
836
  };
831
- var max = (max2) => {
837
+ const max = (max2) => {
832
838
  return (value) => {
833
839
  if (typeof value !== "number" || isNaN(value)) {
834
840
  return new Error("invalid number");
@@ -839,7 +845,7 @@ var max = (max2) => {
839
845
  return null;
840
846
  };
841
847
  };
842
- var pattern = (pattern2) => {
848
+ const pattern = (pattern2) => {
843
849
  return (value) => {
844
850
  if (typeof value !== "string") {
845
851
  return new Error("invalid string");
@@ -850,43 +856,5 @@ var pattern = (pattern2) => {
850
856
  return null;
851
857
  };
852
858
  };
853
- export {
854
- validatorField,
855
- setGlobalClient,
856
- restGlobalClient,
857
- requiredTrue,
858
- required,
859
- pattern,
860
- minLength,
861
- min,
862
- maxLength,
863
- max,
864
- makeHttpContextToken,
865
- makeHttpContext,
866
- isHttpContextToken,
867
- isFieldGroup,
868
- isField,
869
- isClient,
870
- getGlobalClient,
871
- field,
872
- fetchHandler,
873
- defineRequest,
874
- createGlobalClient,
875
- createClient,
876
- cloneClient,
877
- basicAuthInterceptor,
878
- asyncValidatorField,
879
- HttpErrorResponse,
880
- FETCH_CONFIG_KEY,
881
- ERR_UNSUPPORTED_FIELD_TYPE,
882
- ERR_UNKNOWN,
883
- ERR_TIMEOUT,
884
- ERR_OBSERVE,
885
- ERR_NOT_SET_ALIAS,
886
- ERR_NOT_FOUND_HANDLER,
887
- ERR_NOT_FOUND_GLOBAL_CLIENT,
888
- ERR_NETWORK,
889
- ERR_INVALID_HTTP_CONTEXT_TOKEN,
890
- ERR_INVALID_CLIENT,
891
- ERR_ABORTED
892
- };
859
+
860
+ export { ERR_ABORTED, ERR_INVALID_CLIENT, ERR_INVALID_HTTP_CONTEXT_TOKEN, ERR_NETWORK, ERR_NOT_FOUND_GLOBAL_CLIENT, ERR_NOT_FOUND_HANDLER, ERR_NOT_SET_ALIAS, ERR_OBSERVE, ERR_TIMEOUT, ERR_UNKNOWN, ERR_UNSUPPORTED_FIELD_TYPE, HttpErrorResponse, basicAuthInterceptor, cloneClient, createClient, createGlobalClient, defineRequest, doValid, fetchHandler, field, getGlobalClient, isClient, isField, isFieldGroup, isHttpContextToken, makeHttpContext, makeHttpContextToken, max, maxLength, min, minLength, pattern, required, requiredTrue, restGlobalClient, setGlobalClient };