@defjs/core 0.0.0-test-005 → 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 +198 -150
- 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,49 +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) {
|
|
334
|
-
input =
|
|
345
|
+
input = args2[0];
|
|
335
346
|
} else {
|
|
336
|
-
doRequestOptions =
|
|
347
|
+
doRequestOptions = args2[0];
|
|
337
348
|
}
|
|
338
349
|
break;
|
|
339
350
|
}
|
|
340
351
|
case 2: {
|
|
341
|
-
input =
|
|
342
|
-
doRequestOptions =
|
|
352
|
+
input = args2[0];
|
|
353
|
+
doRequestOptions = args2[1];
|
|
343
354
|
break;
|
|
344
355
|
}
|
|
345
356
|
}
|
|
@@ -357,41 +368,41 @@ function defineRequest(method, endpoint) {
|
|
|
357
368
|
} else if (timeout > 0) {
|
|
358
369
|
abortSignal = AbortSignal.timeout(timeout);
|
|
359
370
|
}
|
|
360
|
-
const
|
|
361
|
-
const clientOptions = getClientConfig(
|
|
371
|
+
const client2 = isClient(doRequestOptions?.client) ? doRequestOptions.client : getGlobalClient();
|
|
372
|
+
const clientOptions = getClientConfig(client2);
|
|
362
373
|
const req = {
|
|
363
374
|
host: clientOptions?.host,
|
|
364
375
|
method,
|
|
365
376
|
endpoint,
|
|
366
|
-
queryParams: new URLSearchParams
|
|
367
|
-
headers: new Headers
|
|
368
|
-
body:
|
|
377
|
+
queryParams: new URLSearchParams,
|
|
378
|
+
headers: new Headers,
|
|
379
|
+
body: undefined,
|
|
369
380
|
withCredentials,
|
|
370
381
|
responseType,
|
|
371
|
-
context:
|
|
382
|
+
context: context2 || makeHttpContext(),
|
|
372
383
|
observe,
|
|
373
384
|
uploadProgress,
|
|
374
385
|
downloadProgress,
|
|
375
386
|
timeout,
|
|
376
387
|
abort: abortSignal
|
|
377
388
|
};
|
|
378
|
-
const
|
|
379
|
-
if (!
|
|
389
|
+
const handler2 = doRequestOptions?.handler || clientOptions?.handler || getGlobalHttpHandler();
|
|
390
|
+
if (!handler2) {
|
|
380
391
|
throw ERR_NOT_FOUND_HANDLER;
|
|
381
392
|
}
|
|
382
|
-
if (requiredInput &&
|
|
383
|
-
await __fillRequestFromField(req,
|
|
393
|
+
if (requiredInput && field3) {
|
|
394
|
+
await __fillRequestFromField(req, field3, input);
|
|
384
395
|
}
|
|
385
396
|
const chain = makeInterceptorChain([...interceptors]);
|
|
386
|
-
let res = await chain(req,
|
|
397
|
+
let res = await chain(req, handler2);
|
|
387
398
|
if (typeof transformResponse === "function") {
|
|
388
399
|
try {
|
|
389
400
|
res = __makeResponse({
|
|
390
401
|
...res,
|
|
391
402
|
body: transformResponse(res)
|
|
392
403
|
});
|
|
393
|
-
} catch (
|
|
394
|
-
throw new HttpErrorResponse({ error });
|
|
404
|
+
} catch (error3) {
|
|
405
|
+
throw new HttpErrorResponse({ error: error3 });
|
|
395
406
|
}
|
|
396
407
|
}
|
|
397
408
|
switch (req.observe) {
|
|
@@ -411,7 +422,7 @@ function defineRequest(method, endpoint) {
|
|
|
411
422
|
};
|
|
412
423
|
};
|
|
413
424
|
fn.withField = (value) => {
|
|
414
|
-
|
|
425
|
+
field3 = value;
|
|
415
426
|
requiredInput = true;
|
|
416
427
|
return fn;
|
|
417
428
|
};
|
|
@@ -420,7 +431,7 @@ function defineRequest(method, endpoint) {
|
|
|
420
431
|
return fn;
|
|
421
432
|
};
|
|
422
433
|
fn.withContext = (value) => {
|
|
423
|
-
|
|
434
|
+
context2 = value;
|
|
424
435
|
return fn;
|
|
425
436
|
};
|
|
426
437
|
fn.withCredentials = (value) => {
|
|
@@ -501,49 +512,49 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
501
512
|
let params;
|
|
502
513
|
let queryParams;
|
|
503
514
|
let headers;
|
|
504
|
-
let body =
|
|
515
|
+
let body = undefined;
|
|
505
516
|
const validValue = getValidValue(input, fieldOrFieldGroup());
|
|
506
517
|
const meta = __getFieldMetadata(fieldOrFieldGroup);
|
|
507
518
|
await doValid([...meta.validators, ...meta.asyncValidator], validValue);
|
|
508
519
|
for (const [type, aliasName] of meta.alias) {
|
|
509
520
|
switch (type) {
|
|
510
|
-
case
|
|
521
|
+
case 1 /* Query */: {
|
|
511
522
|
if (!aliasName) {
|
|
512
523
|
throw ERR_NOT_SET_ALIAS;
|
|
513
524
|
}
|
|
514
|
-
queryParams = appendValue(new URLSearchParams
|
|
525
|
+
queryParams = appendValue(new URLSearchParams, aliasName, validValue);
|
|
515
526
|
break;
|
|
516
527
|
}
|
|
517
|
-
case
|
|
528
|
+
case 2 /* Param */: {
|
|
518
529
|
if (!aliasName) {
|
|
519
530
|
throw ERR_NOT_SET_ALIAS;
|
|
520
531
|
}
|
|
521
|
-
params = setValue(
|
|
532
|
+
params = setValue(new Map, aliasName, validValue);
|
|
522
533
|
break;
|
|
523
534
|
}
|
|
524
|
-
case
|
|
535
|
+
case 3 /* Header */: {
|
|
525
536
|
if (!aliasName) {
|
|
526
537
|
throw ERR_NOT_SET_ALIAS;
|
|
527
538
|
}
|
|
528
|
-
headers = appendValue(new Headers
|
|
539
|
+
headers = appendValue(new Headers, aliasName, validValue);
|
|
529
540
|
break;
|
|
530
541
|
}
|
|
531
|
-
case
|
|
542
|
+
case 4 /* Form */: {
|
|
532
543
|
if (!aliasName) {
|
|
533
544
|
throw ERR_NOT_SET_ALIAS;
|
|
534
545
|
}
|
|
535
|
-
body = appendValue(new FormData
|
|
546
|
+
body = appendValue(new FormData, aliasName, validValue);
|
|
536
547
|
break;
|
|
537
548
|
}
|
|
538
|
-
case
|
|
549
|
+
case 6 /* UrlForm */: {
|
|
539
550
|
if (!aliasName) {
|
|
540
551
|
throw ERR_NOT_SET_ALIAS;
|
|
541
552
|
}
|
|
542
|
-
body = appendValue(new URLSearchParams
|
|
553
|
+
body = appendValue(new URLSearchParams, aliasName, validValue);
|
|
543
554
|
break;
|
|
544
555
|
}
|
|
545
|
-
case
|
|
546
|
-
case
|
|
556
|
+
case 0 /* Json */:
|
|
557
|
+
case 5 /* Body */:
|
|
547
558
|
body = validValue;
|
|
548
559
|
break;
|
|
549
560
|
}
|
|
@@ -557,52 +568,52 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
557
568
|
return;
|
|
558
569
|
}
|
|
559
570
|
if (isFieldGroup(fieldOrFieldGroup) && inputIsObject(input)) {
|
|
560
|
-
let params =
|
|
561
|
-
let queryParams = new URLSearchParams
|
|
562
|
-
let headers = new Headers
|
|
563
|
-
let urlForm = new URLSearchParams
|
|
564
|
-
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;
|
|
565
576
|
const json = {};
|
|
566
|
-
let body =
|
|
577
|
+
let body = undefined;
|
|
567
578
|
let lastBodyField;
|
|
568
|
-
for (const [propertyKey,
|
|
569
|
-
const meta = __getFieldMetadata(
|
|
579
|
+
for (const [propertyKey, field3] of Object.entries(fieldOrFieldGroup)) {
|
|
580
|
+
const meta = __getFieldMetadata(field3);
|
|
570
581
|
for (const [type, aliasName] of meta.alias) {
|
|
571
582
|
const valueKey = aliasName || propertyKey;
|
|
572
|
-
const value = getValidValue(input[propertyKey],
|
|
583
|
+
const value = getValidValue(input[propertyKey], field3());
|
|
573
584
|
await doValid([...meta.validators, ...meta.asyncValidator], value);
|
|
574
585
|
switch (type) {
|
|
575
|
-
case
|
|
586
|
+
case 0 /* Json */: {
|
|
576
587
|
Object.defineProperty(json, valueKey, {
|
|
577
588
|
value,
|
|
578
589
|
writable: true,
|
|
579
590
|
enumerable: true
|
|
580
591
|
});
|
|
581
|
-
lastBodyField =
|
|
592
|
+
lastBodyField = 0 /* Json */;
|
|
582
593
|
break;
|
|
583
594
|
}
|
|
584
|
-
case
|
|
595
|
+
case 1 /* Query */:
|
|
585
596
|
queryParams = appendValue(queryParams, valueKey, value);
|
|
586
597
|
break;
|
|
587
|
-
case
|
|
598
|
+
case 2 /* Param */:
|
|
588
599
|
params = setValue(params, valueKey, value);
|
|
589
600
|
break;
|
|
590
|
-
case
|
|
601
|
+
case 3 /* Header */:
|
|
591
602
|
headers = appendValue(headers, valueKey, value);
|
|
592
603
|
break;
|
|
593
|
-
case
|
|
604
|
+
case 4 /* Form */: {
|
|
594
605
|
formData = appendValue(formData, valueKey, value);
|
|
595
|
-
lastBodyField =
|
|
606
|
+
lastBodyField = 4 /* Form */;
|
|
596
607
|
break;
|
|
597
608
|
}
|
|
598
|
-
case
|
|
609
|
+
case 6 /* UrlForm */: {
|
|
599
610
|
urlForm = appendValue(urlForm, valueKey, value);
|
|
600
|
-
lastBodyField =
|
|
611
|
+
lastBodyField = 6 /* UrlForm */;
|
|
601
612
|
break;
|
|
602
613
|
}
|
|
603
|
-
case
|
|
614
|
+
case 5 /* Body */: {
|
|
604
615
|
body = value;
|
|
605
|
-
lastBodyField =
|
|
616
|
+
lastBodyField = 5 /* Body */;
|
|
606
617
|
break;
|
|
607
618
|
}
|
|
608
619
|
}
|
|
@@ -612,16 +623,16 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
612
623
|
request.queryParams = queryParams;
|
|
613
624
|
request.headers = headers;
|
|
614
625
|
switch (lastBodyField) {
|
|
615
|
-
case
|
|
626
|
+
case 5 /* Body */:
|
|
616
627
|
request.body = body;
|
|
617
628
|
break;
|
|
618
|
-
case
|
|
629
|
+
case 4 /* Form */:
|
|
619
630
|
request.body = formData;
|
|
620
631
|
break;
|
|
621
|
-
case
|
|
632
|
+
case 6 /* UrlForm */:
|
|
622
633
|
request.body = urlForm;
|
|
623
634
|
break;
|
|
624
|
-
case
|
|
635
|
+
case 0 /* Json */:
|
|
625
636
|
request.body = json;
|
|
626
637
|
break;
|
|
627
638
|
}
|
|
@@ -630,14 +641,15 @@ async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
630
641
|
throw ERR_UNSUPPORTED_FIELD_TYPE;
|
|
631
642
|
}
|
|
632
643
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
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();
|
|
637
649
|
}
|
|
638
|
-
const headers =
|
|
650
|
+
const headers = request2.headers ?? new Headers;
|
|
639
651
|
if (!headers.has("Content-Type")) {
|
|
640
|
-
const detectedType = __detectContentTypeHeader(
|
|
652
|
+
const detectedType = __detectContentTypeHeader(request2.body);
|
|
641
653
|
if (detectedType) {
|
|
642
654
|
headers.set("Content-Type", detectedType);
|
|
643
655
|
}
|
|
@@ -645,23 +657,23 @@ function __createRequest(request) {
|
|
|
645
657
|
if (!headers.has("Accept")) {
|
|
646
658
|
headers.set("Accept", "application/json, text/plain, */*");
|
|
647
659
|
}
|
|
648
|
-
const credentials =
|
|
660
|
+
const credentials = request2.withCredentials ? "include" : undefined;
|
|
649
661
|
return new Request(url, {
|
|
650
662
|
headers,
|
|
651
|
-
method:
|
|
652
|
-
body: __serializeBody(
|
|
653
|
-
signal:
|
|
663
|
+
method: request2.method,
|
|
664
|
+
body: __serializeBody(request2.body),
|
|
665
|
+
signal: request2.abort,
|
|
654
666
|
credentials
|
|
655
667
|
});
|
|
656
668
|
}
|
|
657
669
|
async function fetchHandler(httpRequest) {
|
|
658
670
|
const downloadProgress = httpRequest.downloadProgress;
|
|
659
|
-
const
|
|
671
|
+
const request2 = __createRequest(httpRequest);
|
|
660
672
|
const abortSignal = httpRequest.abort;
|
|
661
|
-
let
|
|
673
|
+
let response3;
|
|
662
674
|
try {
|
|
663
|
-
|
|
664
|
-
} catch (
|
|
675
|
+
response3 = await globalThis.fetch(request2);
|
|
676
|
+
} catch (error4) {
|
|
665
677
|
if (abortSignal?.aborted && abortSignal.reason instanceof Error) {
|
|
666
678
|
switch (true) {
|
|
667
679
|
case abortSignal.reason.name === "AbortError":
|
|
@@ -670,15 +682,15 @@ async function fetchHandler(httpRequest) {
|
|
|
670
682
|
throw new HttpErrorResponse({ error: ERR_TIMEOUT });
|
|
671
683
|
}
|
|
672
684
|
}
|
|
673
|
-
throw new HttpErrorResponse({ error });
|
|
685
|
+
throw new HttpErrorResponse({ error: error4 });
|
|
674
686
|
}
|
|
675
|
-
const { ok, headers, status, statusText, url } =
|
|
687
|
+
const { ok, headers, status, statusText, url } = response3;
|
|
676
688
|
const contentLength = __getContentLength(headers);
|
|
677
689
|
const contentType = __getContentType(headers);
|
|
678
690
|
let body = null;
|
|
679
|
-
if (
|
|
691
|
+
if (response3.body) {
|
|
680
692
|
const chunks = [];
|
|
681
|
-
const reader =
|
|
693
|
+
const reader = response3.body.getReader();
|
|
682
694
|
let receivedLength = 0;
|
|
683
695
|
while (true) {
|
|
684
696
|
const { done, value } = await reader.read();
|
|
@@ -700,9 +712,9 @@ async function fetchHandler(httpRequest) {
|
|
|
700
712
|
content: chunksAll,
|
|
701
713
|
contentType
|
|
702
714
|
});
|
|
703
|
-
} catch (
|
|
715
|
+
} catch (error4) {
|
|
704
716
|
throw new HttpErrorResponse({
|
|
705
|
-
error,
|
|
717
|
+
error: error4,
|
|
706
718
|
status,
|
|
707
719
|
statusText,
|
|
708
720
|
headers,
|
|
@@ -727,17 +739,15 @@ async function fetchHandler(httpRequest) {
|
|
|
727
739
|
body
|
|
728
740
|
});
|
|
729
741
|
}
|
|
730
|
-
|
|
731
|
-
const CLIENT = Symbol("Client");
|
|
732
|
-
let globalClient;
|
|
742
|
+
// src/client.ts
|
|
733
743
|
function isClient(value) {
|
|
734
744
|
return typeof value === "object" && value !== null && CLIENT in value;
|
|
735
745
|
}
|
|
736
|
-
function getClientConfig(
|
|
737
|
-
if (!isClient(
|
|
746
|
+
function getClientConfig(client2) {
|
|
747
|
+
if (!isClient(client2)) {
|
|
738
748
|
throw ERR_INVALID_CLIENT;
|
|
739
749
|
}
|
|
740
|
-
return
|
|
750
|
+
return client2[CLIENT];
|
|
741
751
|
}
|
|
742
752
|
function createClient(options) {
|
|
743
753
|
const conf = {
|
|
@@ -750,8 +760,8 @@ function createClient(options) {
|
|
|
750
760
|
[CLIENT]: conf
|
|
751
761
|
};
|
|
752
762
|
}
|
|
753
|
-
function cloneClient(
|
|
754
|
-
const preConf = getClientConfig(
|
|
763
|
+
function cloneClient(client2, options) {
|
|
764
|
+
const preConf = getClientConfig(client2);
|
|
755
765
|
const conf = {
|
|
756
766
|
...preConf,
|
|
757
767
|
...options
|
|
@@ -766,16 +776,18 @@ function getGlobalClient() {
|
|
|
766
776
|
}
|
|
767
777
|
return globalClient;
|
|
768
778
|
}
|
|
769
|
-
function setGlobalClient(
|
|
770
|
-
globalClient =
|
|
779
|
+
function setGlobalClient(client2) {
|
|
780
|
+
globalClient = client2;
|
|
771
781
|
}
|
|
772
782
|
function restGlobalClient() {
|
|
773
|
-
globalClient =
|
|
783
|
+
globalClient = undefined;
|
|
774
784
|
}
|
|
775
785
|
function createGlobalClient(options) {
|
|
776
786
|
globalClient = createClient(options);
|
|
777
787
|
}
|
|
778
|
-
|
|
788
|
+
var CLIENT = Symbol("Client");
|
|
789
|
+
var globalClient;
|
|
790
|
+
// src/interceptor/authorization/basic_auth_interceptor.ts
|
|
779
791
|
function basicAuthInterceptor(fn, options) {
|
|
780
792
|
let encode = options?.encode;
|
|
781
793
|
if (!encode) {
|
|
@@ -786,48 +798,48 @@ function basicAuthInterceptor(fn, options) {
|
|
|
786
798
|
encode = (data) => btoa(`${data.username}:${data.password}`);
|
|
787
799
|
}
|
|
788
800
|
return (req, next) => {
|
|
789
|
-
const headers = req.headers || new Headers
|
|
801
|
+
const headers = req.headers || new Headers;
|
|
790
802
|
headers.set("Authorization", `Basic ${encode(fn())}`);
|
|
791
803
|
req.headers = headers;
|
|
792
804
|
return next(req);
|
|
793
805
|
};
|
|
794
806
|
}
|
|
795
|
-
|
|
796
|
-
|
|
807
|
+
// src/validator.ts
|
|
808
|
+
var required = (value) => {
|
|
797
809
|
if (!value) {
|
|
798
810
|
return new Error("required");
|
|
799
811
|
}
|
|
800
812
|
return null;
|
|
801
813
|
};
|
|
802
|
-
|
|
814
|
+
var requiredTrue = (value) => {
|
|
803
815
|
if (typeof value !== "boolean" || !value) {
|
|
804
816
|
return new Error("requiredTrue");
|
|
805
817
|
}
|
|
806
818
|
return null;
|
|
807
819
|
};
|
|
808
|
-
|
|
820
|
+
var minLength = (min) => {
|
|
809
821
|
return (value) => {
|
|
810
822
|
if (typeof value !== "string") {
|
|
811
823
|
return new Error("invalid string");
|
|
812
824
|
}
|
|
813
|
-
if (value.length <
|
|
814
|
-
return new Error(`minLength ${
|
|
825
|
+
if (value.length < min) {
|
|
826
|
+
return new Error(`minLength ${min}`);
|
|
815
827
|
}
|
|
816
828
|
return null;
|
|
817
829
|
};
|
|
818
830
|
};
|
|
819
|
-
|
|
831
|
+
var maxLength = (max) => {
|
|
820
832
|
return (value) => {
|
|
821
833
|
if (typeof value !== "string") {
|
|
822
834
|
return new Error("invalid string");
|
|
823
835
|
}
|
|
824
|
-
if (value.length >
|
|
825
|
-
return new Error(`maxLength ${
|
|
836
|
+
if (value.length > max) {
|
|
837
|
+
return new Error(`maxLength ${max}`);
|
|
826
838
|
}
|
|
827
839
|
return null;
|
|
828
840
|
};
|
|
829
841
|
};
|
|
830
|
-
|
|
842
|
+
var min = (min2) => {
|
|
831
843
|
return (value) => {
|
|
832
844
|
if (typeof value !== "number" || isNaN(value)) {
|
|
833
845
|
return new Error("invalid number");
|
|
@@ -838,7 +850,7 @@ const min = (min2) => {
|
|
|
838
850
|
return null;
|
|
839
851
|
};
|
|
840
852
|
};
|
|
841
|
-
|
|
853
|
+
var max = (max2) => {
|
|
842
854
|
return (value) => {
|
|
843
855
|
if (typeof value !== "number" || isNaN(value)) {
|
|
844
856
|
return new Error("invalid number");
|
|
@@ -849,7 +861,7 @@ const max = (max2) => {
|
|
|
849
861
|
return null;
|
|
850
862
|
};
|
|
851
863
|
};
|
|
852
|
-
|
|
864
|
+
var pattern = (pattern2) => {
|
|
853
865
|
return (value) => {
|
|
854
866
|
if (typeof value !== "string") {
|
|
855
867
|
return new Error("invalid string");
|
|
@@ -860,5 +872,41 @@ const pattern = (pattern2) => {
|
|
|
860
872
|
return null;
|
|
861
873
|
};
|
|
862
874
|
};
|
|
863
|
-
|
|
864
|
-
|
|
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
|
+
};
|