@defjs/core 0.0.0-test-000 → 0.0.0-test-001
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 +19 -8
- package/index.js +92 -64
- package/index.min.js +1 -0
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -57,23 +57,22 @@ declare const HTTP_RESPONSE: unique symbol;
|
|
|
57
57
|
export type HttpResponseBody = string | ArrayBuffer | Blob | object | null;
|
|
58
58
|
export type HttpResponse<R> = ({
|
|
59
59
|
readonly ok: true;
|
|
60
|
-
readonly
|
|
61
|
-
readonly statusText: string;
|
|
62
|
-
readonly url: string;
|
|
63
|
-
readonly headers: Headers;
|
|
64
|
-
readonly body: R | null;
|
|
60
|
+
readonly error: null;
|
|
65
61
|
} | {
|
|
66
62
|
readonly ok: false;
|
|
67
63
|
readonly error: Error;
|
|
64
|
+
}) & {
|
|
65
|
+
readonly url: string;
|
|
68
66
|
readonly status: number;
|
|
69
67
|
readonly statusText: string;
|
|
70
|
-
readonly url: string;
|
|
71
68
|
readonly headers: Headers;
|
|
72
|
-
readonly body: null;
|
|
73
|
-
}) & {
|
|
69
|
+
readonly body: R | null;
|
|
74
70
|
readonly [HTTP_RESPONSE]: unknown;
|
|
75
71
|
};
|
|
76
72
|
export declare function isHttpResponse<R>(value: unknown): value is HttpResponse<R>;
|
|
73
|
+
export declare function isHttpResponseError<R>(value: unknown): value is HttpResponse<R> & {
|
|
74
|
+
ok: false;
|
|
75
|
+
};
|
|
77
76
|
export type MakeResponseOptions<R> = {
|
|
78
77
|
status?: number;
|
|
79
78
|
statusText?: string;
|
|
@@ -315,5 +314,17 @@ export declare function getGlobalClient(): Client;
|
|
|
315
314
|
export declare function setGlobalClient(client: Client): void;
|
|
316
315
|
export declare function restGlobalClient(): void;
|
|
317
316
|
export declare function createGlobalClient(options: ClientOptions): void;
|
|
317
|
+
export declare const ERR_ABORTED: Error;
|
|
318
|
+
export declare const ERR_TIMEOUT: Error;
|
|
319
|
+
export declare const ERR_NETWORK: Error;
|
|
320
|
+
export declare const ERR_NOT_FOUND_HANDLER: Error;
|
|
321
|
+
export declare const ERR_TRANSFORM_RESPONSE: Error;
|
|
322
|
+
export declare const ERR_STREAMING_NOT_IMPLEMENTED: Error;
|
|
323
|
+
export declare const ERR_OBSERVE: Error;
|
|
324
|
+
export declare const ERR_NOT_SET_ALIAS: Error;
|
|
325
|
+
export declare const ERR_UNSUPPORTED_FIELD_TYPE: Error;
|
|
326
|
+
export declare const ERR_INVALID_CLIENT: Error;
|
|
327
|
+
export declare const ERR_NOT_FOUND_GLOBAL_CLIENT: Error;
|
|
328
|
+
export declare const ERR_INVALID_HTTP_CONTEXT_TOKEN: Error;
|
|
318
329
|
|
|
319
330
|
export {};
|
package/index.js
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
// src/error.ts
|
|
2
|
+
function __withErrorCause(err, cause) {
|
|
3
|
+
err.cause = cause;
|
|
4
|
+
return err;
|
|
5
|
+
}
|
|
6
|
+
var ERR_ABORTED = new Error("ERR_ABORTED");
|
|
7
|
+
var ERR_TIMEOUT = new Error("ERR_TIMEOUT");
|
|
8
|
+
var ERR_NETWORK = new Error("ERR_NETWORK");
|
|
9
|
+
var ERR_NOT_FOUND_HANDLER = new Error("ERR_NOT_FOUND_HANDLER");
|
|
10
|
+
var ERR_TRANSFORM_RESPONSE = new Error("ERR_TRANSFORM_RESPONSE");
|
|
11
|
+
var ERR_STREAMING_NOT_IMPLEMENTED = new Error("ERR_STREAMING_NOT_IMPLEMENTED");
|
|
12
|
+
var ERR_OBSERVE = new Error("ERR_OBSERVE");
|
|
13
|
+
var ERR_NOT_SET_ALIAS = new Error("ERR_NOT_SET_ALIAS");
|
|
14
|
+
var ERR_UNSUPPORTED_FIELD_TYPE = new Error("ERR_UNSUPPORTED_FIELD_TYPE");
|
|
15
|
+
var ERR_INVALID_CLIENT = new Error("ERR_INVALID_CLIENT");
|
|
16
|
+
var ERR_NOT_FOUND_GLOBAL_CLIENT = new Error("ERR_NOT_FOUND_GLOBAL_CLIENT");
|
|
17
|
+
var ERR_INVALID_HTTP_CONTEXT_TOKEN = new Error("ERR_INVALID_HTTP_CONTEXT_TOKEN");
|
|
18
|
+
|
|
1
19
|
// src/context.ts
|
|
2
20
|
function makeHttpContextToken(defaultValue) {
|
|
3
21
|
Object.defineProperty(defaultValue, HTTP_CONTEXT_TOKEN, { value: defaultValue });
|
|
@@ -11,14 +29,14 @@ function makeHttpContext() {
|
|
|
11
29
|
return {
|
|
12
30
|
set(token, value) {
|
|
13
31
|
if (!isHttpContextToken(token)) {
|
|
14
|
-
throw
|
|
32
|
+
throw ERR_INVALID_HTTP_CONTEXT_TOKEN;
|
|
15
33
|
}
|
|
16
34
|
ctx.set(token, value);
|
|
17
35
|
return this;
|
|
18
36
|
},
|
|
19
37
|
get(token) {
|
|
20
38
|
if (!isHttpContextToken(token)) {
|
|
21
|
-
throw
|
|
39
|
+
throw ERR_INVALID_HTTP_CONTEXT_TOKEN;
|
|
22
40
|
}
|
|
23
41
|
if (!ctx.has(token)) {
|
|
24
42
|
ctx.set(token, token());
|
|
@@ -84,7 +102,7 @@ function field(defaultValue) {
|
|
|
84
102
|
};
|
|
85
103
|
return getter;
|
|
86
104
|
}
|
|
87
|
-
function
|
|
105
|
+
function __getFieldMetadata(field2) {
|
|
88
106
|
return field2[FIELD];
|
|
89
107
|
}
|
|
90
108
|
function validatorField(validators, value) {
|
|
@@ -126,6 +144,9 @@ function makeInterceptorChain(interceptors) {
|
|
|
126
144
|
function isHttpResponse(value) {
|
|
127
145
|
return typeof value === "object" && value !== null && HTTP_RESPONSE in value;
|
|
128
146
|
}
|
|
147
|
+
function isHttpResponseError(value) {
|
|
148
|
+
return isHttpResponse(value) && !value.ok;
|
|
149
|
+
}
|
|
129
150
|
function makeResponse(options) {
|
|
130
151
|
const status = options.status ?? 0;
|
|
131
152
|
const statusText = options.statusText ?? "";
|
|
@@ -134,20 +155,21 @@ function makeResponse(options) {
|
|
|
134
155
|
const headers = options.headers ?? new Headers;
|
|
135
156
|
const body = options.body ?? null;
|
|
136
157
|
if (!ok || options.error) {
|
|
137
|
-
const
|
|
158
|
+
const error2 = options.error || new Error(`Http failure response for ${options.url}: ${status} ${statusText}`);
|
|
138
159
|
return {
|
|
139
160
|
ok: false,
|
|
140
|
-
error,
|
|
161
|
+
error: error2,
|
|
141
162
|
status,
|
|
142
163
|
statusText,
|
|
143
164
|
url,
|
|
144
165
|
headers,
|
|
145
|
-
body
|
|
166
|
+
body,
|
|
146
167
|
[HTTP_RESPONSE]: null
|
|
147
168
|
};
|
|
148
169
|
}
|
|
149
170
|
return {
|
|
150
171
|
ok: true,
|
|
172
|
+
error: null,
|
|
151
173
|
status,
|
|
152
174
|
statusText,
|
|
153
175
|
url,
|
|
@@ -159,7 +181,7 @@ function makeResponse(options) {
|
|
|
159
181
|
var HTTP_RESPONSE = Symbol("HTTP_RESPONSE");
|
|
160
182
|
|
|
161
183
|
// src/request.ts
|
|
162
|
-
function
|
|
184
|
+
function __serializeBody(body) {
|
|
163
185
|
switch (true) {
|
|
164
186
|
case body instanceof FormData:
|
|
165
187
|
case body instanceof Blob:
|
|
@@ -175,7 +197,7 @@ function serializeBody(body) {
|
|
|
175
197
|
return null;
|
|
176
198
|
}
|
|
177
199
|
}
|
|
178
|
-
function
|
|
200
|
+
function __detectContentTypeHeader(body) {
|
|
179
201
|
switch (true) {
|
|
180
202
|
case body instanceof FormData:
|
|
181
203
|
return "multipart/form-data";
|
|
@@ -197,7 +219,7 @@ function detectContentTypeHeader(body) {
|
|
|
197
219
|
return null;
|
|
198
220
|
}
|
|
199
221
|
}
|
|
200
|
-
function
|
|
222
|
+
function __buildFieldValue(input) {
|
|
201
223
|
if (isField(input)) {
|
|
202
224
|
return input();
|
|
203
225
|
}
|
|
@@ -241,10 +263,13 @@ function defineRequest(options) {
|
|
|
241
263
|
}
|
|
242
264
|
}
|
|
243
265
|
if (requiredInput && !input) {
|
|
244
|
-
throw new Error(
|
|
266
|
+
throw new Error(`Because the request has input, the first argument must be the input value`);
|
|
245
267
|
}
|
|
268
|
+
const timeout = doRequestOptions?.timeout || 0;
|
|
246
269
|
if (doRequestOptions?.abort) {
|
|
247
270
|
abortSignal = doRequestOptions.abort;
|
|
271
|
+
} else if (timeout > 0) {
|
|
272
|
+
abortSignal = AbortSignal.timeout(timeout);
|
|
248
273
|
} else {
|
|
249
274
|
abortController = new AbortController;
|
|
250
275
|
abortSignal = abortController.signal;
|
|
@@ -264,45 +289,47 @@ function defineRequest(options) {
|
|
|
264
289
|
observe: requestOptions.observe ?? "body",
|
|
265
290
|
uploadProgress,
|
|
266
291
|
downloadProgress,
|
|
267
|
-
timeout
|
|
292
|
+
timeout,
|
|
268
293
|
abort: abortSignal
|
|
269
294
|
};
|
|
270
295
|
const handler2 = doRequestOptions?.handler || clientOptions?.handler || getGlobalHttpHandler();
|
|
271
296
|
if (!handler2) {
|
|
272
|
-
throw
|
|
297
|
+
throw ERR_NOT_FOUND_HANDLER;
|
|
273
298
|
}
|
|
274
299
|
if (requiredInput) {
|
|
275
|
-
await
|
|
300
|
+
await __fillRequestFromField(req, requestOptions.input, input);
|
|
276
301
|
}
|
|
277
302
|
if (typeof requestOptions.transformRequest === "function") {
|
|
278
303
|
req.body = requestOptions.transformRequest(input, req);
|
|
279
304
|
}
|
|
280
305
|
const chain = makeInterceptorChain([...clientOptions?.interceptors || [], ...requestOptions?.interceptors || []]);
|
|
281
|
-
if (typeof req.timeout === "number" && req.timeout > 0 && abortController) {
|
|
282
|
-
setTimeout(() => {
|
|
283
|
-
if (!req.abort?.aborted) {
|
|
284
|
-
abortController?.abort("timeout");
|
|
285
|
-
}
|
|
286
|
-
}, req.timeout);
|
|
287
|
-
}
|
|
288
306
|
let res;
|
|
289
307
|
try {
|
|
290
308
|
res = await chain(req, handler2);
|
|
291
|
-
} catch (
|
|
309
|
+
} catch (error3) {
|
|
310
|
+
if (error3 instanceof DOMException) {
|
|
311
|
+
switch (true) {
|
|
312
|
+
case (error3.name === "AbortError" || error3.code === error3.ABORT_ERR):
|
|
313
|
+
throw ERR_ABORTED;
|
|
314
|
+
case (error3.name === "TimeoutError" || error3.code === error3.TIMEOUT_ERR):
|
|
315
|
+
throw ERR_TIMEOUT;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
292
318
|
throw makeResponse({
|
|
293
|
-
error:
|
|
319
|
+
error: __withErrorCause(ERR_NETWORK, error3)
|
|
294
320
|
});
|
|
295
321
|
}
|
|
296
322
|
if (typeof requestOptions.transformResponse === "function") {
|
|
297
323
|
try {
|
|
298
324
|
res = makeResponse({
|
|
299
325
|
...res,
|
|
300
|
-
body: requestOptions.transformResponse(res)
|
|
326
|
+
body: requestOptions.transformResponse(res),
|
|
327
|
+
error: undefined
|
|
301
328
|
});
|
|
302
|
-
} catch (
|
|
329
|
+
} catch (error3) {
|
|
303
330
|
throw makeResponse({
|
|
304
331
|
...res,
|
|
305
|
-
error:
|
|
332
|
+
error: __withErrorCause(ERR_TRANSFORM_RESPONSE, error3)
|
|
306
333
|
});
|
|
307
334
|
}
|
|
308
335
|
}
|
|
@@ -310,30 +337,27 @@ function defineRequest(options) {
|
|
|
310
337
|
case "body":
|
|
311
338
|
return res.body;
|
|
312
339
|
case "stream":
|
|
313
|
-
throw
|
|
340
|
+
throw ERR_STREAMING_NOT_IMPLEMENTED;
|
|
314
341
|
case "response":
|
|
315
342
|
return res;
|
|
316
343
|
default:
|
|
317
|
-
throw
|
|
344
|
+
throw ERR_OBSERVE;
|
|
318
345
|
}
|
|
319
346
|
};
|
|
320
347
|
return {
|
|
321
348
|
doRequest,
|
|
322
|
-
inputValue:
|
|
349
|
+
inputValue: __buildFieldValue(requestOptions.input),
|
|
323
350
|
setUploadProgress,
|
|
324
351
|
setDownloadProgress
|
|
325
352
|
};
|
|
326
353
|
};
|
|
327
354
|
}
|
|
328
|
-
function
|
|
329
|
-
throw new Error("alias not set");
|
|
330
|
-
}
|
|
331
|
-
function fillUrl(endpoint, params) {
|
|
355
|
+
function __fillUrl(endpoint, params) {
|
|
332
356
|
return endpoint.replace(/:([^\/]+)/g, (_, p1) => {
|
|
333
357
|
return params.get(p1) ?? "undefined";
|
|
334
358
|
});
|
|
335
359
|
}
|
|
336
|
-
async function
|
|
360
|
+
async function __fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
337
361
|
async function doValid(validators, value) {
|
|
338
362
|
for (const validator of validators) {
|
|
339
363
|
const err = await validator(value);
|
|
@@ -372,7 +396,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
372
396
|
let headers;
|
|
373
397
|
let body = undefined;
|
|
374
398
|
const fieldValue = input ?? fieldOrFieldGroup();
|
|
375
|
-
const meta =
|
|
399
|
+
const meta = __getFieldMetadata(fieldOrFieldGroup);
|
|
376
400
|
const err = await doValid([...meta.validators, ...meta.asyncValidator], fieldValue);
|
|
377
401
|
if (err) {
|
|
378
402
|
throw err;
|
|
@@ -381,28 +405,28 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
381
405
|
switch (type) {
|
|
382
406
|
case 2 /* Query */: {
|
|
383
407
|
if (!aliasName) {
|
|
384
|
-
|
|
408
|
+
throw ERR_NOT_SET_ALIAS;
|
|
385
409
|
}
|
|
386
410
|
queryParams = appendValue(new URLSearchParams, aliasName, fieldValue);
|
|
387
411
|
break;
|
|
388
412
|
}
|
|
389
413
|
case 3 /* Param */: {
|
|
390
414
|
if (!aliasName) {
|
|
391
|
-
|
|
415
|
+
throw ERR_NOT_SET_ALIAS;
|
|
392
416
|
}
|
|
393
417
|
params = setValue(new Map, aliasName, fieldValue);
|
|
394
418
|
break;
|
|
395
419
|
}
|
|
396
420
|
case 4 /* Header */: {
|
|
397
421
|
if (!aliasName) {
|
|
398
|
-
|
|
422
|
+
throw ERR_NOT_SET_ALIAS;
|
|
399
423
|
}
|
|
400
424
|
headers = appendValue(new Headers, aliasName, fieldValue);
|
|
401
425
|
break;
|
|
402
426
|
}
|
|
403
427
|
case 5 /* Form */: {
|
|
404
428
|
if (!aliasName) {
|
|
405
|
-
|
|
429
|
+
throw ERR_NOT_SET_ALIAS;
|
|
406
430
|
}
|
|
407
431
|
body = appendValue(new FormData, aliasName, fieldValue);
|
|
408
432
|
break;
|
|
@@ -414,7 +438,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
414
438
|
}
|
|
415
439
|
}
|
|
416
440
|
if (params) {
|
|
417
|
-
request.endpoint =
|
|
441
|
+
request.endpoint = __fillUrl(request.endpoint, params);
|
|
418
442
|
}
|
|
419
443
|
request.queryParams = queryParams;
|
|
420
444
|
request.headers = headers;
|
|
@@ -429,7 +453,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
429
453
|
const json = {};
|
|
430
454
|
let body = undefined;
|
|
431
455
|
for (const [propertyKey, field3] of Object.entries(fieldOrFieldGroup)) {
|
|
432
|
-
const meta =
|
|
456
|
+
const meta = __getFieldMetadata(field3);
|
|
433
457
|
for (const [type, aliasName] of meta.alias) {
|
|
434
458
|
const valueKey = aliasName || propertyKey;
|
|
435
459
|
const value = input[propertyKey] || field3();
|
|
@@ -463,7 +487,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
463
487
|
}
|
|
464
488
|
}
|
|
465
489
|
}
|
|
466
|
-
request.endpoint =
|
|
490
|
+
request.endpoint = __fillUrl(request.endpoint, params);
|
|
467
491
|
request.queryParams = queryParams;
|
|
468
492
|
request.headers = headers;
|
|
469
493
|
if (body) {
|
|
@@ -475,7 +499,7 @@ async function fillRequestFromField(request, fieldOrFieldGroup, input) {
|
|
|
475
499
|
}
|
|
476
500
|
return;
|
|
477
501
|
}
|
|
478
|
-
throw
|
|
502
|
+
throw ERR_UNSUPPORTED_FIELD_TYPE;
|
|
479
503
|
}
|
|
480
504
|
|
|
481
505
|
// src/handler/util.ts
|
|
@@ -529,14 +553,14 @@ function concatChunks(chunks, totalLength) {
|
|
|
529
553
|
}
|
|
530
554
|
|
|
531
555
|
// src/handler/fetch/fetch.ts
|
|
532
|
-
function
|
|
556
|
+
function __createRequest(request2) {
|
|
533
557
|
const url = new URL(request2.endpoint, request2.host);
|
|
534
558
|
if (request2.queryParams) {
|
|
535
559
|
url.search = request2.queryParams.toString();
|
|
536
560
|
}
|
|
537
561
|
const headers = request2.headers ?? new Headers;
|
|
538
562
|
if (!headers.has("Content-Type")) {
|
|
539
|
-
const detectedType =
|
|
563
|
+
const detectedType = __detectContentTypeHeader(request2.body);
|
|
540
564
|
if (detectedType) {
|
|
541
565
|
headers.set("Content-Type", detectedType);
|
|
542
566
|
}
|
|
@@ -550,20 +574,15 @@ function createRequest(request2) {
|
|
|
550
574
|
...fetchConfig,
|
|
551
575
|
headers,
|
|
552
576
|
method: request2.method,
|
|
553
|
-
body:
|
|
577
|
+
body: __serializeBody(request2.body),
|
|
554
578
|
signal: request2.abort,
|
|
555
579
|
credentials
|
|
556
580
|
});
|
|
557
581
|
}
|
|
558
582
|
async function fetchHandler(httpRequest) {
|
|
559
583
|
const downloadProgress = httpRequest.downloadProgress;
|
|
560
|
-
const request2 =
|
|
561
|
-
|
|
562
|
-
try {
|
|
563
|
-
response3 = await (globalThis || window).fetch(request2);
|
|
564
|
-
} catch (error) {
|
|
565
|
-
throw new Error("Network Error", { cause: error });
|
|
566
|
-
}
|
|
584
|
+
const request2 = __createRequest(httpRequest);
|
|
585
|
+
const response3 = await (globalThis || window).fetch(request2);
|
|
567
586
|
const { headers, status, statusText, url } = response3;
|
|
568
587
|
const contentLength = getContentLength(headers);
|
|
569
588
|
const contentType = getContentType(headers);
|
|
@@ -586,15 +605,11 @@ async function fetchHandler(httpRequest) {
|
|
|
586
605
|
});
|
|
587
606
|
}
|
|
588
607
|
const chunksAll = concatChunks(chunks, receivedLength);
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
});
|
|
595
|
-
} catch (error) {
|
|
596
|
-
throw new Error("Parse response body error", { cause: error });
|
|
597
|
-
}
|
|
608
|
+
body = parseBody({
|
|
609
|
+
request: httpRequest,
|
|
610
|
+
content: chunksAll,
|
|
611
|
+
contentType
|
|
612
|
+
});
|
|
598
613
|
}
|
|
599
614
|
return makeResponse({
|
|
600
615
|
url,
|
|
@@ -611,7 +626,7 @@ function isClient(value) {
|
|
|
611
626
|
}
|
|
612
627
|
function getClientConfig(client2) {
|
|
613
628
|
if (!isClient(client2)) {
|
|
614
|
-
throw
|
|
629
|
+
throw ERR_INVALID_CLIENT;
|
|
615
630
|
}
|
|
616
631
|
return client2[CLIENT];
|
|
617
632
|
}
|
|
@@ -637,7 +652,7 @@ function cloneClient(client2, options) {
|
|
|
637
652
|
}
|
|
638
653
|
function getGlobalClient() {
|
|
639
654
|
if (!globalClient) {
|
|
640
|
-
throw
|
|
655
|
+
throw ERR_NOT_FOUND_GLOBAL_CLIENT;
|
|
641
656
|
}
|
|
642
657
|
return globalClient;
|
|
643
658
|
}
|
|
@@ -754,6 +769,7 @@ export {
|
|
|
754
769
|
makeResponse,
|
|
755
770
|
makeHttpContextToken,
|
|
756
771
|
makeHttpContext,
|
|
772
|
+
isHttpResponseError,
|
|
757
773
|
isHttpResponse,
|
|
758
774
|
isHttpContextToken,
|
|
759
775
|
isFieldGroup,
|
|
@@ -768,5 +784,17 @@ export {
|
|
|
768
784
|
cloneClient,
|
|
769
785
|
basicAuthInterceptor,
|
|
770
786
|
asyncValidatorField,
|
|
771
|
-
FETCH_CONFIG_KEY
|
|
787
|
+
FETCH_CONFIG_KEY,
|
|
788
|
+
ERR_UNSUPPORTED_FIELD_TYPE,
|
|
789
|
+
ERR_TRANSFORM_RESPONSE,
|
|
790
|
+
ERR_TIMEOUT,
|
|
791
|
+
ERR_STREAMING_NOT_IMPLEMENTED,
|
|
792
|
+
ERR_OBSERVE,
|
|
793
|
+
ERR_NOT_SET_ALIAS,
|
|
794
|
+
ERR_NOT_FOUND_HANDLER,
|
|
795
|
+
ERR_NOT_FOUND_GLOBAL_CLIENT,
|
|
796
|
+
ERR_NETWORK,
|
|
797
|
+
ERR_INVALID_HTTP_CONTEXT_TOKEN,
|
|
798
|
+
ERR_INVALID_CLIENT,
|
|
799
|
+
ERR_ABORTED
|
|
772
800
|
};
|
package/index.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function U(t,n){return t.cause=n,t}var l=new Error("ERR_ABORTED"),h=new Error("ERR_TIMEOUT"),L=new Error("ERR_NETWORK"),P=new Error("ERR_NOT_FOUND_HANDLER"),D=new Error("ERR_TRANSFORM_RESPONSE"),M=new Error("ERR_STREAMING_NOT_IMPLEMENTED"),d=new Error("ERR_OBSERVE"),m=new Error("ERR_NOT_SET_ALIAS"),O=new Error("ERR_UNSUPPORTED_FIELD_TYPE"),g=new Error("ERR_INVALID_CLIENT"),S=new Error("ERR_NOT_FOUND_GLOBAL_CLIENT"),u=new Error("ERR_INVALID_HTTP_CONTEXT_TOKEN");function X(t){return Object.defineProperty(t,z,{value:t}),t}function $(t){return typeof t==="function"&&z in t}function J(){const t=new Map;return{set(n,r){if(!$(n))throw u;return t.set(n,r),this},get(n){if(!$(n))throw u;if(!t.has(n))t.set(n,n());return t.get(n)},del(n){return t.delete(n),this},has(n){return t.has(n)},keys(){return t.keys()}}}var z=Symbol("HttpContextToken");function it(t){const n={alias:new Map,validators:[],asyncValidator:[]},r=()=>t;return Object.defineProperty(r,K,{value:n}),r.withJson=(o)=>{return n.alias.set(1,o),r},r.withForm=(o)=>{return n.alias.set(5,o),r},r.withQuery=(o)=>{return n.alias.set(2,o),r},r.withParam=(o)=>{return n.alias.set(3,o),r},r.withHeader=(o)=>{return n.alias.set(4,o),r},r.withBody=()=>{return n.alias.set(6,void 0),r},r.withValidators=(...o)=>{return n.validators=o,r},r.withAsyncValidators=(...o)=>{return n.asyncValidator=o,r},r}function Q(t){return t[K]}function pt(t,n){for(let r of t){const o=r(n);if(o)throw o}}async function ct(t,n){for(let r of t){const o=await r(n);if(o)throw o}}function A(t){return!!t&&typeof t==="function"&&K in t}function y(t){return!!t&&typeof t==="object"&&Object.entries(t).every(([,n])=>A(n))}var K=Symbol("field");var ft=void 0;var G=()=>ft;function b(t){return t.reduceRight((n,r)=>{return(o,T)=>r(o,(x)=>n(x,T))},(n,r)=>r(n))}function v(t){return typeof t==="object"&&t!==null&&j in t}function Rt(t){return v(t)&&!t.ok}function _(t){const n=t.status??0,r=t.statusText??"",o=n>=200&&n<300,T=t.url??"",x=t.headers??new Headers,a=t.body??null;if(!o||t.error)return{ok:!1,error:t.error||new Error(`Http failure response for ${t.url}: ${n} ${r}`),status:n,statusText:r,url:T,headers:x,body:a,[j]:null};return{ok:!0,error:null,status:n,statusText:r,url:T,headers:x,body:a,[j]:null}}var j=Symbol("HTTP_RESPONSE");function tt(t){switch(!0){case t instanceof FormData:case t instanceof Blob:case t instanceof ArrayBuffer:case typeof t==="string":return t;case typeof t==="object":case typeof t==="boolean":case typeof t==="number":case Array.isArray(t):return JSON.stringify(t);default:return null}}function nt(t){switch(!0){case t instanceof FormData:return"multipart/form-data";case t instanceof ArrayBuffer:return"application/octet-stream";case t instanceof Blob:return t.type||"application/octet-stream";case t instanceof URLSearchParams:return"application/x-www-form-urlencoded;charset=UTF-8";case typeof t==="string":return"text/plain";case(typeof t==="object"&&t!==null):case typeof t==="number":case typeof t==="boolean":return"application/json";default:return null}}function Ht(t){if(A(t))return t();if(y(t)){const n={};for(let[r,o]of Object.entries(t))n[r]=o();return n}return}function wt(t){const n={...t},r=!!n.input;return()=>{let o,T,x,a;const E=(e)=>{o=e},i=(e)=>{T=e};return{doRequest:async(...e)=>{let c,f;switch(e.length){case 1:{f=e[0];break}case 2:{c=e[0],f=e[1];break}}if(r&&!c)throw new Error("Because the request has input, the first argument must be the input value");const w=f?.timeout||0;if(f?.abort)a=f.abort;else if(w>0)a=AbortSignal.timeout(w);else x=new AbortController,a=x.signal;const F=B(f?.client)?f.client:Y(),R=W(F),k={host:R?.host,method:n.method,endpoint:n.endpoint,queryParams:new URLSearchParams,headers:new Headers,body:void 0,withCredentials:n.withCredentials,responseType:n.responseType??"json",context:n.context||J(),observe:n.observe??"body",uploadProgress:o,downloadProgress:T,timeout:w,abort:a},I=f?.handler||R?.handler||G();if(!I)throw P;if(r)await st(k,n.input,c);if(typeof n.transformRequest==="function")k.body=n.transformRequest(c,k);const N=b([...R?.interceptors||[],...n?.interceptors||[]]);let H;try{H=await N(k,I)}catch(s){if(s instanceof DOMException)switch(!0){case(s.name==="AbortError"||s.code===s.ABORT_ERR):throw l;case(s.name==="TimeoutError"||s.code===s.TIMEOUT_ERR):throw h}throw _({error:U(L,s)})}if(typeof n.transformResponse==="function")try{H=_({...H,body:n.transformResponse(H),error:void 0})}catch(s){throw _({...H,error:U(D,s)})}switch(k.observe){case"body":return H.body;case"stream":throw M;case"response":return H;default:throw d}},inputValue:Ht(n.input),setUploadProgress:E,setDownloadProgress:i}}}function q(t,n){return t.replace(/:([^\/]+)/g,(r,o)=>{return n.get(o)??"undefined"})}async function st(t,n,r){async function o(E,i){for(let p of E){const e=await p(i);if(e)return e}return}function T(E){return typeof E==="object"&&E!==null}function x(E,i,p){if(Array.isArray(p))for(let e of p)E.append(i,String(e));else E.set(i,String(p));return E}function a(E,i,p){if(Array.isArray(p))for(let e of p)E.set(i,String(e));else E.set(i,String(p));return E}if(A(n)){let E,i,p,e=void 0;const c=r??n(),f=Q(n),w=await o([...f.validators,...f.asyncValidator],c);if(w)throw w;for(let[F,R]of f.alias)switch(F){case 2:{if(!R)throw m;i=x(new URLSearchParams,R,c);break}case 3:{if(!R)throw m;E=a(new Map,R,c);break}case 4:{if(!R)throw m;p=x(new Headers,R,c);break}case 5:{if(!R)throw m;e=x(new FormData,R,c);break}case 1:case 6:e=c;break}if(E)t.endpoint=q(t.endpoint,E);t.queryParams=i,t.headers=p,t.body=e;return}if(y(n)&&T(r)){let E=new Map,i=new URLSearchParams,p=new Headers,e=new FormData;const c={};let f=void 0;for(let[w,F]of Object.entries(n)){const R=Q(F);for(let[k,I]of R.alias){const N=I||w,H=r[w]||F(),s=await o([...R.validators,...R.asyncValidator],H);if(s)throw s;switch(k){case 1:Object.defineProperty(c,N,{value:H,writable:!0,enumerable:!0});break;case 2:i=x(i,N,H);break;case 3:E=a(E,N,H);break;case 4:p=x(p,N,H);break;case 5:e=x(e,N,H);break;case 6:f=H;break}}}if(t.endpoint=q(t.endpoint,E),t.queryParams=i,t.headers=p,f)t.body=f;else if(Array.from(e.keys()).length>0)t.body=e;else if(Object.keys(c).length)t.body=c;return}throw O}function rt(t){const n=t.get("Content-Length");if(!n)return 0;const r=Number(n);if(isNaN(r))return 0;return r}function ot(t){return t.get("Content-Type")||""}function et(t){const{request:n,content:r,contentType:o}=t,T=n.responseType;if(!T)return null;switch(T){case"json":{const x=new TextDecoder().decode(r);if(x==="")return null;return JSON.parse(x)}case"text":return new TextDecoder().decode(r);case"blob":return new Blob([r],{type:o});case"arraybuffer":return r.buffer;default:return null}}function Tt(t,n){const r=new Uint8Array(n);let o=0;for(let T of t)r.set(T,o),o+=T.length;return r}function at(t){const n=new URL(t.endpoint,t.host);if(t.queryParams)n.search=t.queryParams.toString();const r=t.headers??new Headers;if(!r.has("Content-Type")){const x=nt(t.body);if(x)r.set("Content-Type",x)}if(!r.has("Accept"))r.set("Accept","application/json, text/plain, */*");const o=t.withCredentials?"include":void 0,T=t.context?.get(xt)||{};return new Request(n,{...T,headers:r,method:t.method,body:tt(t.body),signal:t.abort,credentials:o})}async function Z(t){const n=t.downloadProgress,r=at(t),o=await(globalThis||window).fetch(r),{headers:T,status:x,statusText:a,url:E}=o,i=rt(T),p=ot(T);let e=null;if(o.body){const c=[],f=o.body.getReader();let w=0;while(!0){const{done:R,value:k}=await f.read();if(R)break;c.push(k),w+=k.length,n?.({lengthComputable:i>0,loaded:w,total:i})}const F=Tt(c,w);e=et({request:t,content:F,contentType:p})}return _({url:E,status:x,statusText:a,headers:T,body:e})}var xt=X(()=>({}));function B(t){return typeof t==="object"&&t!==null&&V in t}function W(t){if(!B(t))throw g;return t[V]}function Et(t){const n={host:t.host,interceptors:t.interceptors??[],handler:t.handler||Z};return{[V]:n}}function kt(t,n){const o={...W(t),...n};return{[V]:o}}function Y(){if(!C)throw S;return C}function Ft(t){C=t}function Nt(){C=void 0}function _t(t){C=Et(t)}var V=Symbol("Client"),C;function mt(t,n){let r=n?.encode;if(!r){const o=(globalThis||window).btoa;if(typeof o!=="function")throw new Error("BasicAuthInterceptor is not supported in this environment");r=(T)=>o(`${T.username}:${T.password}`)}return(o,T)=>{const x=o.headers||new Headers;return x.set("Authorization",`Basic ${r(t())}`),o.headers=x,T(o)}}var At=(t)=>{if(!t)return new Error("required");return null},Ct=(t)=>{if(typeof t!=="boolean"||!t)return new Error("requiredTrue");return null},It=(t)=>{return(n)=>{if(typeof n!=="string")return new Error("invalid string");if(n.length<t)return new Error(`minLength ${t}`);return null}},ut=(t)=>{return(n)=>{if(typeof n!=="string")return new Error("invalid string");if(n.length>t)return new Error(`maxLength ${t}`);return null}},yt=(t)=>{return(n)=>{if(typeof n!=="number"||isNaN(n))return new Error("invalid number");if(n<t)return new Error(`minLength ${t}`);return null}},Bt=(t)=>{return(n)=>{if(typeof n!=="number"||isNaN(n))return new Error("invalid number");if(n>t)return new Error(`maxLength ${t}`);return null}},Vt=(t)=>{return(n)=>{if(typeof n!=="string")return new Error("invalid string");if(typeof t==="string")t=new RegExp(t);if(!t.test(n))return new Error("pattern");return null}};export{pt as validatorField,Ft as setGlobalClient,Nt as restGlobalClient,Ct as requiredTrue,At as required,Vt as pattern,It as minLength,yt as min,ut as maxLength,Bt as max,_ as makeResponse,X as makeHttpContextToken,J as makeHttpContext,Rt as isHttpResponseError,v as isHttpResponse,$ as isHttpContextToken,y as isFieldGroup,A as isField,B as isClient,Y as getGlobalClient,it as field,Z as fetchHandler,wt as defineRequest,_t as createGlobalClient,Et as createClient,kt as cloneClient,mt as basicAuthInterceptor,ct as asyncValidatorField,xt as FETCH_CONFIG_KEY,O as ERR_UNSUPPORTED_FIELD_TYPE,D as ERR_TRANSFORM_RESPONSE,h as ERR_TIMEOUT,M as ERR_STREAMING_NOT_IMPLEMENTED,d as ERR_OBSERVE,m as ERR_NOT_SET_ALIAS,P as ERR_NOT_FOUND_HANDLER,S as ERR_NOT_FOUND_GLOBAL_CLIENT,L as ERR_NETWORK,u as ERR_INVALID_HTTP_CONTEXT_TOKEN,g as ERR_INVALID_CLIENT,l as ERR_ABORTED};
|