@defjs/core 0.0.0-test-004 → 0.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/index.d.ts +219 -292
- package/index.js +201 -149
- package/index.min.js +1 -587
- package/package.json +4 -1
package/index.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
+
|
|
12
14
|
class HttpErrorResponse extends Error {
|
|
13
15
|
status;
|
|
14
16
|
statusText;
|
|
@@ -19,7 +21,7 @@ class HttpErrorResponse extends Error {
|
|
|
19
21
|
const status = init?.status ?? 0;
|
|
20
22
|
const statusText = init?.statusText ?? "";
|
|
21
23
|
const ok = status >= 200 && status < 300;
|
|
22
|
-
const headers = init?.headers ?? new Headers
|
|
24
|
+
const headers = init?.headers ?? new Headers;
|
|
23
25
|
const url = init?.url ?? "";
|
|
24
26
|
const body = init?.body ?? null;
|
|
25
27
|
let message;
|
|
@@ -41,6 +43,7 @@ class HttpErrorResponse extends Error {
|
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
45
|
|
|
46
|
+
// src/handler/util.ts
|
|
44
47
|
function __getContentLength(headers) {
|
|
45
48
|
const value = headers.get("Content-Length");
|
|
46
49
|
if (!value) {
|
|
@@ -87,7 +90,7 @@ function __concatChunks(chunks, totalLength) {
|
|
|
87
90
|
return chunksAll;
|
|
88
91
|
}
|
|
89
92
|
|
|
90
|
-
|
|
93
|
+
// src/context.ts
|
|
91
94
|
function makeHttpContextToken(defaultValue) {
|
|
92
95
|
Object.defineProperty(defaultValue, HTTP_CONTEXT_TOKEN, { value: defaultValue });
|
|
93
96
|
return defaultValue;
|
|
@@ -95,12 +98,11 @@ function makeHttpContextToken(defaultValue) {
|
|
|
95
98
|
function isHttpContextToken(value) {
|
|
96
99
|
return typeof value === "function" && HTTP_CONTEXT_TOKEN in value;
|
|
97
100
|
}
|
|
98
|
-
const HTTP_CONTEXT = Symbol("HttpContext");
|
|
99
101
|
function isHttpContext(value) {
|
|
100
102
|
return typeof value === "object" && value !== null && HTTP_CONTEXT in value;
|
|
101
103
|
}
|
|
102
104
|
function makeHttpContext(entries) {
|
|
103
|
-
const ctx =
|
|
105
|
+
const ctx = new Map;
|
|
104
106
|
switch (true) {
|
|
105
107
|
case Array.isArray(entries): {
|
|
106
108
|
for (const [token, value] of entries) {
|
|
@@ -150,23 +152,14 @@ function makeHttpContext(entries) {
|
|
|
150
152
|
[HTTP_CONTEXT]: ctx
|
|
151
153
|
};
|
|
152
154
|
}
|
|
155
|
+
var HTTP_CONTEXT_TOKEN = Symbol("HttpContextToken");
|
|
156
|
+
var HTTP_CONTEXT = Symbol("HttpContext");
|
|
153
157
|
|
|
154
|
-
|
|
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 || {});
|
|
158
|
+
// src/field.ts
|
|
165
159
|
function field(defaultValue) {
|
|
166
160
|
const meta = {
|
|
167
|
-
// todo
|
|
168
161
|
required: typeof defaultValue !== "undefined",
|
|
169
|
-
alias:
|
|
162
|
+
alias: new Map,
|
|
170
163
|
validators: [],
|
|
171
164
|
asyncValidator: []
|
|
172
165
|
};
|
|
@@ -199,7 +192,7 @@ function field(defaultValue) {
|
|
|
199
192
|
return getter;
|
|
200
193
|
};
|
|
201
194
|
getter.withBody = () => {
|
|
202
|
-
meta.alias.set(5 /* Body */,
|
|
195
|
+
meta.alias.set(5 /* Body */, undefined);
|
|
203
196
|
return getter;
|
|
204
197
|
};
|
|
205
198
|
getter.withValidators = (...fn) => {
|
|
@@ -224,24 +217,25 @@ function isField(value) {
|
|
|
224
217
|
function isFieldGroup(value) {
|
|
225
218
|
return !!value && typeof value === "object" && Object.entries(value).every(([, v]) => isField(v));
|
|
226
219
|
}
|
|
220
|
+
var FIELD = Symbol("field");
|
|
227
221
|
|
|
228
|
-
|
|
229
|
-
|
|
222
|
+
// src/handler/handler.ts
|
|
223
|
+
var globalHttpHandler = undefined;
|
|
224
|
+
var getGlobalHttpHandler = () => globalHttpHandler;
|
|
230
225
|
|
|
226
|
+
// src/interceptor/interceptor.ts
|
|
231
227
|
function makeInterceptorChain(interceptors) {
|
|
232
|
-
return interceptors.reduceRight(
|
|
233
|
-
(
|
|
234
|
-
|
|
235
|
-
},
|
|
236
|
-
(req, fn) => fn(req)
|
|
237
|
-
);
|
|
228
|
+
return interceptors.reduceRight((fn, interceptor) => {
|
|
229
|
+
return (initReq, finalHandlerFn) => interceptor(initReq, (req) => fn(req, finalHandlerFn));
|
|
230
|
+
}, (req, fn) => fn(req));
|
|
238
231
|
}
|
|
239
232
|
|
|
233
|
+
// src/response.ts
|
|
240
234
|
function __makeResponse(options) {
|
|
241
235
|
const status = options?.status ?? 0;
|
|
242
236
|
const statusText = options?.statusText ?? "";
|
|
243
237
|
const url = options?.url ?? "";
|
|
244
|
-
const headers = options?.headers ?? new Headers
|
|
238
|
+
const headers = options?.headers ?? new Headers;
|
|
245
239
|
const body = options?.body ?? null;
|
|
246
240
|
return {
|
|
247
241
|
status,
|
|
@@ -252,6 +246,7 @@ function __makeResponse(options) {
|
|
|
252
246
|
};
|
|
253
247
|
}
|
|
254
248
|
|
|
249
|
+
// src/request.ts
|
|
255
250
|
function __serializeBody(body) {
|
|
256
251
|
switch (true) {
|
|
257
252
|
case body instanceof FormData:
|
|
@@ -297,45 +292,65 @@ function __buildFieldDefaultValue(input) {
|
|
|
297
292
|
}
|
|
298
293
|
if (isFieldGroup(input)) {
|
|
299
294
|
const obj = {};
|
|
300
|
-
for (const [key,
|
|
301
|
-
obj[key] =
|
|
295
|
+
for (const [key, field3] of Object.entries(input)) {
|
|
296
|
+
obj[key] = field3();
|
|
302
297
|
}
|
|
303
298
|
return obj;
|
|
304
299
|
}
|
|
305
|
-
return
|
|
300
|
+
return;
|
|
306
301
|
}
|
|
307
|
-
function defineRequest(
|
|
302
|
+
function defineRequest(...args) {
|
|
303
|
+
let method;
|
|
304
|
+
let endpoint;
|
|
308
305
|
let requiredInput = false;
|
|
309
|
-
let
|
|
306
|
+
let field3;
|
|
310
307
|
let interceptors = [];
|
|
311
308
|
let responseType = "json";
|
|
312
|
-
let
|
|
309
|
+
let context2;
|
|
313
310
|
let observe = "body";
|
|
314
311
|
let withCredentials = false;
|
|
315
312
|
let validators = [];
|
|
316
313
|
let transformResponse;
|
|
314
|
+
switch (args.length) {
|
|
315
|
+
case 1: {
|
|
316
|
+
method = "GET";
|
|
317
|
+
endpoint = args[0];
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
case 2: {
|
|
321
|
+
method = args[0];
|
|
322
|
+
endpoint = args[1];
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
default:
|
|
326
|
+
throw new Error("Invalid arguments");
|
|
327
|
+
}
|
|
317
328
|
const fn = () => {
|
|
318
329
|
let uploadProgress;
|
|
319
330
|
let downloadProgress;
|
|
320
331
|
let abortSignal;
|
|
321
|
-
const getInitValue = () => __buildFieldDefaultValue(
|
|
332
|
+
const getInitValue = () => __buildFieldDefaultValue(field3);
|
|
322
333
|
const setUploadProgress = (fn2) => {
|
|
323
334
|
uploadProgress = fn2;
|
|
324
335
|
};
|
|
325
336
|
const setDownloadProgress = (fn2) => {
|
|
326
337
|
downloadProgress = fn2;
|
|
327
338
|
};
|
|
328
|
-
const doRequest = async (...
|
|
339
|
+
const doRequest = async (...args2) => {
|
|
329
340
|
let input;
|
|
330
341
|
let doRequestOptions;
|
|
331
|
-
switch (
|
|
342
|
+
switch (args2.length) {
|
|
332
343
|
case 1: {
|
|
333
|
-
|
|
344
|
+
if (requiredInput) {
|
|
345
|
+
input = args2[0];
|
|
346
|
+
} else {
|
|
347
|
+
doRequestOptions = args2[0];
|
|
348
|
+
}
|
|
334
349
|
break;
|
|
335
350
|
}
|
|
336
351
|
case 2: {
|
|
337
|
-
input =
|
|
338
|
-
doRequestOptions =
|
|
352
|
+
input = args2[0];
|
|
353
|
+
doRequestOptions = args2[1];
|
|
339
354
|
break;
|
|
340
355
|
}
|
|
341
356
|
}
|
|
@@ -353,41 +368,41 @@ function defineRequest(method, endpoint) {
|
|
|
353
368
|
} else if (timeout > 0) {
|
|
354
369
|
abortSignal = AbortSignal.timeout(timeout);
|
|
355
370
|
}
|
|
356
|
-
const
|
|
357
|
-
const clientOptions = getClientConfig(
|
|
371
|
+
const client2 = isClient(doRequestOptions?.client) ? doRequestOptions.client : getGlobalClient();
|
|
372
|
+
const clientOptions = getClientConfig(client2);
|
|
358
373
|
const req = {
|
|
359
374
|
host: clientOptions?.host,
|
|
360
375
|
method,
|
|
361
376
|
endpoint,
|
|
362
|
-
queryParams: new URLSearchParams
|
|
363
|
-
headers: new Headers
|
|
364
|
-
body:
|
|
377
|
+
queryParams: new URLSearchParams,
|
|
378
|
+
headers: new Headers,
|
|
379
|
+
body: undefined,
|
|
365
380
|
withCredentials,
|
|
366
381
|
responseType,
|
|
367
|
-
context:
|
|
382
|
+
context: context2 || makeHttpContext(),
|
|
368
383
|
observe,
|
|
369
384
|
uploadProgress,
|
|
370
385
|
downloadProgress,
|
|
371
386
|
timeout,
|
|
372
387
|
abort: abortSignal
|
|
373
388
|
};
|
|
374
|
-
const
|
|
375
|
-
if (!
|
|
389
|
+
const handler2 = doRequestOptions?.handler || clientOptions?.handler || getGlobalHttpHandler();
|
|
390
|
+
if (!handler2) {
|
|
376
391
|
throw ERR_NOT_FOUND_HANDLER;
|
|
377
392
|
}
|
|
378
|
-
if (requiredInput &&
|
|
379
|
-
await __fillRequestFromField(req,
|
|
393
|
+
if (requiredInput && field3) {
|
|
394
|
+
await __fillRequestFromField(req, field3, input);
|
|
380
395
|
}
|
|
381
396
|
const chain = makeInterceptorChain([...interceptors]);
|
|
382
|
-
let res = await chain(req,
|
|
397
|
+
let res = await chain(req, handler2);
|
|
383
398
|
if (typeof transformResponse === "function") {
|
|
384
399
|
try {
|
|
385
400
|
res = __makeResponse({
|
|
386
401
|
...res,
|
|
387
402
|
body: transformResponse(res)
|
|
388
403
|
});
|
|
389
|
-
} catch (
|
|
390
|
-
throw new HttpErrorResponse({ error });
|
|
404
|
+
} catch (error3) {
|
|
405
|
+
throw new HttpErrorResponse({ error: error3 });
|
|
391
406
|
}
|
|
392
407
|
}
|
|
393
408
|
switch (req.observe) {
|
|
@@ -407,7 +422,7 @@ function defineRequest(method, endpoint) {
|
|
|
407
422
|
};
|
|
408
423
|
};
|
|
409
424
|
fn.withField = (value) => {
|
|
410
|
-
|
|
425
|
+
field3 = value;
|
|
411
426
|
requiredInput = true;
|
|
412
427
|
return fn;
|
|
413
428
|
};
|
|
@@ -416,7 +431,7 @@ function defineRequest(method, endpoint) {
|
|
|
416
431
|
return fn;
|
|
417
432
|
};
|
|
418
433
|
fn.withContext = (value) => {
|
|
419
|
-
|
|
434
|
+
context2 = value;
|
|
420
435
|
return fn;
|
|
421
436
|
};
|
|
422
437
|
fn.withCredentials = (value) => {
|
|
@@ -497,49 +512,49 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
497
512
|
let params;
|
|
498
513
|
let queryParams;
|
|
499
514
|
let headers;
|
|
500
|
-
let body =
|
|
515
|
+
let body = undefined;
|
|
501
516
|
const validValue = getValidValue(input, fieldOrFieldGroup());
|
|
502
517
|
const meta = __getFieldMetadata(fieldOrFieldGroup);
|
|
503
518
|
await doValid([...meta.validators, ...meta.asyncValidator], validValue);
|
|
504
519
|
for (const [type, aliasName] of meta.alias) {
|
|
505
520
|
switch (type) {
|
|
506
|
-
case
|
|
521
|
+
case 1 /* Query */: {
|
|
507
522
|
if (!aliasName) {
|
|
508
523
|
throw ERR_NOT_SET_ALIAS;
|
|
509
524
|
}
|
|
510
|
-
queryParams = appendValue(new URLSearchParams
|
|
525
|
+
queryParams = appendValue(new URLSearchParams, aliasName, validValue);
|
|
511
526
|
break;
|
|
512
527
|
}
|
|
513
|
-
case
|
|
528
|
+
case 2 /* Param */: {
|
|
514
529
|
if (!aliasName) {
|
|
515
530
|
throw ERR_NOT_SET_ALIAS;
|
|
516
531
|
}
|
|
517
|
-
params = setValue(
|
|
532
|
+
params = setValue(new Map, aliasName, validValue);
|
|
518
533
|
break;
|
|
519
534
|
}
|
|
520
|
-
case
|
|
535
|
+
case 3 /* Header */: {
|
|
521
536
|
if (!aliasName) {
|
|
522
537
|
throw ERR_NOT_SET_ALIAS;
|
|
523
538
|
}
|
|
524
|
-
headers = appendValue(new Headers
|
|
539
|
+
headers = appendValue(new Headers, aliasName, validValue);
|
|
525
540
|
break;
|
|
526
541
|
}
|
|
527
|
-
case
|
|
542
|
+
case 4 /* Form */: {
|
|
528
543
|
if (!aliasName) {
|
|
529
544
|
throw ERR_NOT_SET_ALIAS;
|
|
530
545
|
}
|
|
531
|
-
body = appendValue(new FormData
|
|
546
|
+
body = appendValue(new FormData, aliasName, validValue);
|
|
532
547
|
break;
|
|
533
548
|
}
|
|
534
|
-
case
|
|
549
|
+
case 6 /* UrlForm */: {
|
|
535
550
|
if (!aliasName) {
|
|
536
551
|
throw ERR_NOT_SET_ALIAS;
|
|
537
552
|
}
|
|
538
|
-
body = appendValue(new URLSearchParams
|
|
553
|
+
body = appendValue(new URLSearchParams, aliasName, validValue);
|
|
539
554
|
break;
|
|
540
555
|
}
|
|
541
|
-
case
|
|
542
|
-
case
|
|
556
|
+
case 0 /* Json */:
|
|
557
|
+
case 5 /* Body */:
|
|
543
558
|
body = validValue;
|
|
544
559
|
break;
|
|
545
560
|
}
|
|
@@ -553,52 +568,52 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
553
568
|
return;
|
|
554
569
|
}
|
|
555
570
|
if (isFieldGroup(fieldOrFieldGroup) && inputIsObject(input)) {
|
|
556
|
-
let params =
|
|
557
|
-
let queryParams = new URLSearchParams
|
|
558
|
-
let headers = new Headers
|
|
559
|
-
let urlForm = new URLSearchParams
|
|
560
|
-
let formData = new FormData
|
|
571
|
+
let params = new Map;
|
|
572
|
+
let queryParams = new URLSearchParams;
|
|
573
|
+
let headers = new Headers;
|
|
574
|
+
let urlForm = new URLSearchParams;
|
|
575
|
+
let formData = new FormData;
|
|
561
576
|
const json = {};
|
|
562
|
-
let body =
|
|
577
|
+
let body = undefined;
|
|
563
578
|
let lastBodyField;
|
|
564
|
-
for (const [propertyKey,
|
|
565
|
-
const meta = __getFieldMetadata(
|
|
579
|
+
for (const [propertyKey, field3] of Object.entries(fieldOrFieldGroup)) {
|
|
580
|
+
const meta = __getFieldMetadata(field3);
|
|
566
581
|
for (const [type, aliasName] of meta.alias) {
|
|
567
582
|
const valueKey = aliasName || propertyKey;
|
|
568
|
-
const value = getValidValue(input[propertyKey],
|
|
583
|
+
const value = getValidValue(input[propertyKey], field3());
|
|
569
584
|
await doValid([...meta.validators, ...meta.asyncValidator], value);
|
|
570
585
|
switch (type) {
|
|
571
|
-
case
|
|
586
|
+
case 0 /* Json */: {
|
|
572
587
|
Object.defineProperty(json, valueKey, {
|
|
573
588
|
value,
|
|
574
589
|
writable: true,
|
|
575
590
|
enumerable: true
|
|
576
591
|
});
|
|
577
|
-
lastBodyField =
|
|
592
|
+
lastBodyField = 0 /* Json */;
|
|
578
593
|
break;
|
|
579
594
|
}
|
|
580
|
-
case
|
|
595
|
+
case 1 /* Query */:
|
|
581
596
|
queryParams = appendValue(queryParams, valueKey, value);
|
|
582
597
|
break;
|
|
583
|
-
case
|
|
598
|
+
case 2 /* Param */:
|
|
584
599
|
params = setValue(params, valueKey, value);
|
|
585
600
|
break;
|
|
586
|
-
case
|
|
601
|
+
case 3 /* Header */:
|
|
587
602
|
headers = appendValue(headers, valueKey, value);
|
|
588
603
|
break;
|
|
589
|
-
case
|
|
604
|
+
case 4 /* Form */: {
|
|
590
605
|
formData = appendValue(formData, valueKey, value);
|
|
591
|
-
lastBodyField =
|
|
606
|
+
lastBodyField = 4 /* Form */;
|
|
592
607
|
break;
|
|
593
608
|
}
|
|
594
|
-
case
|
|
609
|
+
case 6 /* UrlForm */: {
|
|
595
610
|
urlForm = appendValue(urlForm, valueKey, value);
|
|
596
|
-
lastBodyField =
|
|
611
|
+
lastBodyField = 6 /* UrlForm */;
|
|
597
612
|
break;
|
|
598
613
|
}
|
|
599
|
-
case
|
|
614
|
+
case 5 /* Body */: {
|
|
600
615
|
body = value;
|
|
601
|
-
lastBodyField =
|
|
616
|
+
lastBodyField = 5 /* Body */;
|
|
602
617
|
break;
|
|
603
618
|
}
|
|
604
619
|
}
|
|
@@ -608,16 +623,16 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
608
623
|
request.queryParams = queryParams;
|
|
609
624
|
request.headers = headers;
|
|
610
625
|
switch (lastBodyField) {
|
|
611
|
-
case
|
|
626
|
+
case 5 /* Body */:
|
|
612
627
|
request.body = body;
|
|
613
628
|
break;
|
|
614
|
-
case
|
|
629
|
+
case 4 /* Form */:
|
|
615
630
|
request.body = formData;
|
|
616
631
|
break;
|
|
617
|
-
case
|
|
632
|
+
case 6 /* UrlForm */:
|
|
618
633
|
request.body = urlForm;
|
|
619
634
|
break;
|
|
620
|
-
case
|
|
635
|
+
case 0 /* Json */:
|
|
621
636
|
request.body = json;
|
|
622
637
|
break;
|
|
623
638
|
}
|
|
@@ -626,14 +641,15 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
626
641
|
throw ERR_UNSUPPORTED_FIELD_TYPE;
|
|
627
642
|
}
|
|
628
643
|
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
644
|
+
// src/handler/fetch/fetch.ts
|
|
645
|
+
function __createRequest(request2) {
|
|
646
|
+
const url = new URL(request2.endpoint, request2.host);
|
|
647
|
+
if (request2.queryParams) {
|
|
648
|
+
url.search = request2.queryParams.toString();
|
|
633
649
|
}
|
|
634
|
-
const headers =
|
|
650
|
+
const headers = request2.headers ?? new Headers;
|
|
635
651
|
if (!headers.has("Content-Type")) {
|
|
636
|
-
const detectedType = __detectContentTypeHeader(
|
|
652
|
+
const detectedType = __detectContentTypeHeader(request2.body);
|
|
637
653
|
if (detectedType) {
|
|
638
654
|
headers.set("Content-Type", detectedType);
|
|
639
655
|
}
|
|
@@ -641,23 +657,23 @@ function __createRequest(request) {
|
|
|
641
657
|
if (!headers.has("Accept")) {
|
|
642
658
|
headers.set("Accept", "application/json, text/plain, */*");
|
|
643
659
|
}
|
|
644
|
-
const credentials =
|
|
660
|
+
const credentials = request2.withCredentials ? "include" : undefined;
|
|
645
661
|
return new Request(url, {
|
|
646
662
|
headers,
|
|
647
|
-
method:
|
|
648
|
-
body: __serializeBody(
|
|
649
|
-
signal:
|
|
663
|
+
method: request2.method,
|
|
664
|
+
body: __serializeBody(request2.body),
|
|
665
|
+
signal: request2.abort,
|
|
650
666
|
credentials
|
|
651
667
|
});
|
|
652
668
|
}
|
|
653
669
|
async function fetchHandler(httpRequest) {
|
|
654
670
|
const downloadProgress = httpRequest.downloadProgress;
|
|
655
|
-
const
|
|
671
|
+
const request2 = __createRequest(httpRequest);
|
|
656
672
|
const abortSignal = httpRequest.abort;
|
|
657
|
-
let
|
|
673
|
+
let response3;
|
|
658
674
|
try {
|
|
659
|
-
|
|
660
|
-
} catch (
|
|
675
|
+
response3 = await globalThis.fetch(request2);
|
|
676
|
+
} catch (error4) {
|
|
661
677
|
if (abortSignal?.aborted && abortSignal.reason instanceof Error) {
|
|
662
678
|
switch (true) {
|
|
663
679
|
case abortSignal.reason.name === "AbortError":
|
|
@@ -666,15 +682,15 @@ async function fetchHandler(httpRequest) {
|
|
|
666
682
|
throw new HttpErrorResponse({ error: ERR_TIMEOUT });
|
|
667
683
|
}
|
|
668
684
|
}
|
|
669
|
-
throw new HttpErrorResponse({ error });
|
|
685
|
+
throw new HttpErrorResponse({ error: error4 });
|
|
670
686
|
}
|
|
671
|
-
const { ok, headers, status, statusText, url } =
|
|
687
|
+
const { ok, headers, status, statusText, url } = response3;
|
|
672
688
|
const contentLength = __getContentLength(headers);
|
|
673
689
|
const contentType = __getContentType(headers);
|
|
674
690
|
let body = null;
|
|
675
|
-
if (
|
|
691
|
+
if (response3.body) {
|
|
676
692
|
const chunks = [];
|
|
677
|
-
const reader =
|
|
693
|
+
const reader = response3.body.getReader();
|
|
678
694
|
let receivedLength = 0;
|
|
679
695
|
while (true) {
|
|
680
696
|
const { done, value } = await reader.read();
|
|
@@ -696,9 +712,9 @@ async function fetchHandler(httpRequest) {
|
|
|
696
712
|
content: chunksAll,
|
|
697
713
|
contentType
|
|
698
714
|
});
|
|
699
|
-
} catch (
|
|
715
|
+
} catch (error4) {
|
|
700
716
|
throw new HttpErrorResponse({
|
|
701
|
-
error,
|
|
717
|
+
error: error4,
|
|
702
718
|
status,
|
|
703
719
|
statusText,
|
|
704
720
|
headers,
|
|
@@ -723,17 +739,15 @@ async function fetchHandler(httpRequest) {
|
|
|
723
739
|
body
|
|
724
740
|
});
|
|
725
741
|
}
|
|
726
|
-
|
|
727
|
-
const CLIENT = Symbol("Client");
|
|
728
|
-
let globalClient;
|
|
742
|
+
// src/client.ts
|
|
729
743
|
function isClient(value) {
|
|
730
744
|
return typeof value === "object" && value !== null && CLIENT in value;
|
|
731
745
|
}
|
|
732
|
-
function getClientConfig(
|
|
733
|
-
if (!isClient(
|
|
746
|
+
function getClientConfig(client2) {
|
|
747
|
+
if (!isClient(client2)) {
|
|
734
748
|
throw ERR_INVALID_CLIENT;
|
|
735
749
|
}
|
|
736
|
-
return
|
|
750
|
+
return client2[CLIENT];
|
|
737
751
|
}
|
|
738
752
|
function createClient(options) {
|
|
739
753
|
const conf = {
|
|
@@ -746,8 +760,8 @@ function createClient(options) {
|
|
|
746
760
|
[CLIENT]: conf
|
|
747
761
|
};
|
|
748
762
|
}
|
|
749
|
-
function cloneClient(
|
|
750
|
-
const preConf = getClientConfig(
|
|
763
|
+
function cloneClient(client2, options) {
|
|
764
|
+
const preConf = getClientConfig(client2);
|
|
751
765
|
const conf = {
|
|
752
766
|
...preConf,
|
|
753
767
|
...options
|
|
@@ -762,16 +776,18 @@ function getGlobalClient() {
|
|
|
762
776
|
}
|
|
763
777
|
return globalClient;
|
|
764
778
|
}
|
|
765
|
-
function setGlobalClient(
|
|
766
|
-
globalClient =
|
|
779
|
+
function setGlobalClient(client2) {
|
|
780
|
+
globalClient = client2;
|
|
767
781
|
}
|
|
768
782
|
function restGlobalClient() {
|
|
769
|
-
globalClient =
|
|
783
|
+
globalClient = undefined;
|
|
770
784
|
}
|
|
771
785
|
function createGlobalClient(options) {
|
|
772
786
|
globalClient = createClient(options);
|
|
773
787
|
}
|
|
774
|
-
|
|
788
|
+
var CLIENT = Symbol("Client");
|
|
789
|
+
var globalClient;
|
|
790
|
+
// src/interceptor/authorization/basic_auth_interceptor.ts
|
|
775
791
|
function basicAuthInterceptor(fn, options) {
|
|
776
792
|
let encode = options?.encode;
|
|
777
793
|
if (!encode) {
|
|
@@ -782,48 +798,48 @@ function basicAuthInterceptor(fn, options) {
|
|
|
782
798
|
encode = (data) => btoa(`${data.username}:${data.password}`);
|
|
783
799
|
}
|
|
784
800
|
return (req, next) => {
|
|
785
|
-
const headers = req.headers || new Headers
|
|
801
|
+
const headers = req.headers || new Headers;
|
|
786
802
|
headers.set("Authorization", `Basic ${encode(fn())}`);
|
|
787
803
|
req.headers = headers;
|
|
788
804
|
return next(req);
|
|
789
805
|
};
|
|
790
806
|
}
|
|
791
|
-
|
|
792
|
-
|
|
807
|
+
// src/validator.ts
|
|
808
|
+
var required = (value) => {
|
|
793
809
|
if (!value) {
|
|
794
810
|
return new Error("required");
|
|
795
811
|
}
|
|
796
812
|
return null;
|
|
797
813
|
};
|
|
798
|
-
|
|
814
|
+
var requiredTrue = (value) => {
|
|
799
815
|
if (typeof value !== "boolean" || !value) {
|
|
800
816
|
return new Error("requiredTrue");
|
|
801
817
|
}
|
|
802
818
|
return null;
|
|
803
819
|
};
|
|
804
|
-
|
|
820
|
+
var minLength = (min) => {
|
|
805
821
|
return (value) => {
|
|
806
822
|
if (typeof value !== "string") {
|
|
807
823
|
return new Error("invalid string");
|
|
808
824
|
}
|
|
809
|
-
if (value.length <
|
|
810
|
-
return new Error(`minLength ${
|
|
825
|
+
if (value.length < min) {
|
|
826
|
+
return new Error(`minLength ${min}`);
|
|
811
827
|
}
|
|
812
828
|
return null;
|
|
813
829
|
};
|
|
814
830
|
};
|
|
815
|
-
|
|
831
|
+
var maxLength = (max) => {
|
|
816
832
|
return (value) => {
|
|
817
833
|
if (typeof value !== "string") {
|
|
818
834
|
return new Error("invalid string");
|
|
819
835
|
}
|
|
820
|
-
if (value.length >
|
|
821
|
-
return new Error(`maxLength ${
|
|
836
|
+
if (value.length > max) {
|
|
837
|
+
return new Error(`maxLength ${max}`);
|
|
822
838
|
}
|
|
823
839
|
return null;
|
|
824
840
|
};
|
|
825
841
|
};
|
|
826
|
-
|
|
842
|
+
var min = (min2) => {
|
|
827
843
|
return (value) => {
|
|
828
844
|
if (typeof value !== "number" || isNaN(value)) {
|
|
829
845
|
return new Error("invalid number");
|
|
@@ -834,7 +850,7 @@ const min = (min2) => {
|
|
|
834
850
|
return null;
|
|
835
851
|
};
|
|
836
852
|
};
|
|
837
|
-
|
|
853
|
+
var max = (max2) => {
|
|
838
854
|
return (value) => {
|
|
839
855
|
if (typeof value !== "number" || isNaN(value)) {
|
|
840
856
|
return new Error("invalid number");
|
|
@@ -845,7 +861,7 @@ const max = (max2) => {
|
|
|
845
861
|
return null;
|
|
846
862
|
};
|
|
847
863
|
};
|
|
848
|
-
|
|
864
|
+
var pattern = (pattern2) => {
|
|
849
865
|
return (value) => {
|
|
850
866
|
if (typeof value !== "string") {
|
|
851
867
|
return new Error("invalid string");
|
|
@@ -856,5 +872,41 @@ const pattern = (pattern2) => {
|
|
|
856
872
|
return null;
|
|
857
873
|
};
|
|
858
874
|
};
|
|
859
|
-
|
|
860
|
-
|
|
875
|
+
export {
|
|
876
|
+
setGlobalClient,
|
|
877
|
+
restGlobalClient,
|
|
878
|
+
requiredTrue,
|
|
879
|
+
required,
|
|
880
|
+
pattern,
|
|
881
|
+
minLength,
|
|
882
|
+
min,
|
|
883
|
+
maxLength,
|
|
884
|
+
max,
|
|
885
|
+
makeHttpContextToken,
|
|
886
|
+
makeHttpContext,
|
|
887
|
+
isHttpContextToken,
|
|
888
|
+
isFieldGroup,
|
|
889
|
+
isField,
|
|
890
|
+
isClient,
|
|
891
|
+
getGlobalClient,
|
|
892
|
+
field,
|
|
893
|
+
fetchHandler,
|
|
894
|
+
doValid,
|
|
895
|
+
defineRequest,
|
|
896
|
+
createGlobalClient,
|
|
897
|
+
createClient,
|
|
898
|
+
cloneClient,
|
|
899
|
+
basicAuthInterceptor,
|
|
900
|
+
HttpErrorResponse,
|
|
901
|
+
ERR_UNSUPPORTED_FIELD_TYPE,
|
|
902
|
+
ERR_UNKNOWN,
|
|
903
|
+
ERR_TIMEOUT,
|
|
904
|
+
ERR_OBSERVE,
|
|
905
|
+
ERR_NOT_SET_ALIAS,
|
|
906
|
+
ERR_NOT_FOUND_HANDLER,
|
|
907
|
+
ERR_NOT_FOUND_GLOBAL_CLIENT,
|
|
908
|
+
ERR_NETWORK,
|
|
909
|
+
ERR_INVALID_HTTP_CONTEXT_TOKEN,
|
|
910
|
+
ERR_INVALID_CLIENT,
|
|
911
|
+
ERR_ABORTED
|
|
912
|
+
};
|