@nestia/fetcher 2.0.0-dev.20230907 → 2.0.0-dev.20230908
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/lib/EncryptedFetcher.d.ts +2 -2
- package/lib/EncryptedFetcher.js.map +1 -1
- package/lib/IPropagation.d.ts +36 -7
- package/lib/PlainFetcher.d.ts +2 -2
- package/lib/PlainFetcher.js.map +1 -1
- package/lib/internal/FetcherBase.d.ts +1 -1
- package/lib/internal/FetcherBase.js.map +1 -1
- package/package.json +1 -1
- package/src/EncryptedFetcher.ts +6 -8
- package/src/IPropagation.ts +51 -12
- package/src/PlainFetcher.ts +6 -8
- package/src/internal/FetcherBase.ts +7 -7
|
@@ -41,6 +41,6 @@ export declare namespace EncryptedFetcher {
|
|
|
41
41
|
* @return Response body data from the remote API
|
|
42
42
|
*/
|
|
43
43
|
function fetch<Input, Output>(connection: IConnection, route: IFetchRoute<"POST" | "PUT" | "PATCH" | "DELETE">, input?: Input, stringify?: (input: Input) => string): Promise<Primitive<Output>>;
|
|
44
|
-
function propagate<Output extends IPropagation<
|
|
45
|
-
function propagate<Input, Output extends IPropagation<
|
|
44
|
+
function propagate<Output extends IPropagation<any, any>>(connection: IConnection, route: IFetchRoute<"HEAD">): Promise<Output>;
|
|
45
|
+
function propagate<Input, Output extends IPropagation<any, any>>(connection: IConnection, route: IFetchRoute<"HEAD">, input?: Input, stringify?: (input: Input) => string): Promise<Output>;
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedFetcher.js","sourceRoot":"","sources":["../src/EncryptedFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAsC;AAKtC,sDAAqD;AAGrD;;;;;;;;;;;;;GAaG;AACH,IAAiB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"EncryptedFetcher.js","sourceRoot":"","sources":["../src/EncryptedFetcher.ts"],"names":[],"mappings":"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"}
|
package/lib/IPropagation.d.ts
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Propagation type.
|
|
3
|
+
*
|
|
4
|
+
* @template StatusMap Map of status code and its body data type.
|
|
5
|
+
* @template Success Default success status code.
|
|
6
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
7
|
+
*/
|
|
8
|
+
export type IPropagation<StatusMap extends {
|
|
9
|
+
[P in IPropagation.Status]?: any;
|
|
10
|
+
}, Success extends number = 200 | 201> = {
|
|
11
|
+
[P in keyof StatusMap]: IPropagation.IBranch<P extends Success ? true : false, P, StatusMap[P]>;
|
|
12
|
+
}[keyof StatusMap] | IPropagation.IBranch<false, number, any>;
|
|
8
13
|
export declare namespace IPropagation {
|
|
14
|
+
/**
|
|
15
|
+
* Type of configurable status codes.
|
|
16
|
+
*
|
|
17
|
+
* The special characters like `2XX`, `3XX`, `4XX`, `5XX` are meaning the range
|
|
18
|
+
* of status codes. If `5XX` is specified, it means the status code is in the
|
|
19
|
+
* range of `500` to `599`.
|
|
20
|
+
*/
|
|
21
|
+
export type Status = number | "2XX" | "3XX" | "4XX" | "5XX";
|
|
22
|
+
/**
|
|
23
|
+
* Branch type of propagation.
|
|
24
|
+
*
|
|
25
|
+
* `IPropagation.IBranch` is a branch type composing `IPropagation` type,
|
|
26
|
+
* which is gathering all possible status codes and their body data types
|
|
27
|
+
* as a union type.
|
|
28
|
+
*/
|
|
29
|
+
export interface IBranch<Success extends boolean, StatusValue, BodyData> {
|
|
30
|
+
success: Success;
|
|
31
|
+
status: StatusValue extends "2XX" | "3XX" | "4XX" | "5XX" ? StatusRange<StatusValue> : StatusValue extends number ? StatusValue : never;
|
|
32
|
+
data: BodyData;
|
|
33
|
+
headers: Record<string, string | string[]>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Range of status codes by the first digit.
|
|
37
|
+
*/
|
|
9
38
|
export type StatusRange<T extends "2XX" | "3XX" | "4XX" | "5XX"> = T extends 0 ? IntRange<200, 299> : T extends 3 ? IntRange<300, 399> : T extends 4 ? IntRange<400, 499> : IntRange<500, 599>;
|
|
10
39
|
type IntRange<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
|
|
11
40
|
type Enumerate<N extends number, Acc extends number[] = []> = Acc["length"] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc["length"]]>;
|
package/lib/PlainFetcher.d.ts
CHANGED
|
@@ -42,6 +42,6 @@ export declare namespace PlainFetcher {
|
|
|
42
42
|
* @return Response body data from the remote API
|
|
43
43
|
*/
|
|
44
44
|
function fetch<Input, Output>(connection: IConnection, route: IFetchRoute<"POST" | "PUT" | "PATCH" | "DELETE">, input?: Input, stringify?: (input: Input) => string): Promise<Primitive<Output>>;
|
|
45
|
-
function propagate<Output extends IPropagation<
|
|
46
|
-
function propagate<Input, Output extends IPropagation<
|
|
45
|
+
function propagate<Output extends IPropagation<any, any>>(connection: IConnection, route: IFetchRoute<"HEAD">): Promise<Output>;
|
|
46
|
+
function propagate<Input, Output extends IPropagation<any, any>>(connection: IConnection, route: IFetchRoute<"HEAD">, input?: Input, stringify?: (input: Input) => string): Promise<Output>;
|
|
47
47
|
}
|
package/lib/PlainFetcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlainFetcher.js","sourceRoot":"","sources":["../src/PlainFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,sDAAqD;AAGrD;;;;;;;;;;;;;;GAcG;AACH,IAAiB,YAAY,
|
|
1
|
+
{"version":3,"file":"PlainFetcher.js","sourceRoot":"","sources":["../src/PlainFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,sDAAqD;AAGrD;;;;;;;;;;;;;;GAcG;AACH,IAAiB,YAAY,CAiG5B;AAjGD,WAAiB,YAAY;IAuCzB,SAAsB,KAAK,CACvB,UAAuB,EACvB,KAEC,EACD,KAAa,EACb,SAAoC;;;;gBAEpC,IACI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,SAAS,MAAK,IAAI;oBACjC,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,SAAS,MAAK,IAAI;oBAElC,MAAM,IAAI,KAAK,CACX,4GAA4G,CAC/G,CAAC;gBACN,sBAAO,yBAAW,CAAC,KAAK,CAAC;wBACrB,SAAS,EAAE,cAAc;wBACzB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;wBACxB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;qBAC3B,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAC;;;KAC3C;IApBqB,kBAAK,QAoB1B,CAAA;IAcD,SAAsB,SAAS,CAI3B,UAAuB,EACvB,KAEC,EACD,KAAa,EACb,SAAoC;;;;gBAEpC,IACI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,SAAS,MAAK,IAAI;oBACjC,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,SAAS,MAAK,IAAI;oBAElC,MAAM,IAAI,KAAK,CACX,gHAAgH,CACnH,CAAC;gBACN,sBAAO,yBAAW,CAAC,SAAS,CAAC;wBACzB,SAAS,EAAE,cAAc;wBACzB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;wBACxB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;qBAC3B,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAoB,EAAC;;;KAC9D;IAvBqB,sBAAS,YAuB9B,CAAA;AACL,CAAC,EAjGgB,YAAY,4BAAZ,YAAY,QAiG5B"}
|
|
@@ -9,5 +9,5 @@ export declare namespace FetcherBase {
|
|
|
9
9
|
decode: (input: string, headers: Record<string, IConnection.HeaderValue | undefined>) => any;
|
|
10
10
|
}
|
|
11
11
|
const fetch: (props: IProps) => <Input, Output>(connection: IConnection, route: IFetchRoute<"DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT">, input?: Input | undefined, stringify?: ((input: Input) => string) | undefined) => Promise<Primitive<Output>>;
|
|
12
|
-
const propagate: (props: IProps) => <Input>(connection: IConnection, route: IFetchRoute<"DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT">, input?: Input | undefined, stringify?: ((input: Input) => string) | undefined) => Promise<IPropagation<any, any
|
|
12
|
+
const propagate: (props: IProps) => <Input>(connection: IConnection, route: IFetchRoute<"DELETE" | "GET" | "HEAD" | "PATCH" | "POST" | "PUT">, input?: Input | undefined, stringify?: ((input: Input) => string) | undefined) => Promise<IPropagation<any, any>>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetcherBase.js","sourceRoot":"","sources":["../../src/internal/FetcherBase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAI9B,yCAAwC;AACxC,0CAAyC;AAGzC,IAAiB,WAAW,CAgK3B;AAhKD,WAAiB,WAAW;;IAaX,iBAAK,GACd,UAAC,KAAa;QACd,OAAA,UACI,UAAuB,EACvB,KAEC,EACD,KAAa,EACb,SAAoC;;;;4BAErB,qBAAM,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAC3C,UAAU,EACV,KAAK,EACL,KAAK,EACL,SAAS,CACZ,EAAA;;wBALK,MAAM,GAAG,SAKd;wBACD,
|
|
1
|
+
{"version":3,"file":"FetcherBase.js","sourceRoot":"","sources":["../../src/internal/FetcherBase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAI9B,yCAAwC;AACxC,0CAAyC;AAGzC,IAAiB,WAAW,CAgK3B;AAhKD,WAAiB,WAAW;;IAaX,iBAAK,GACd,UAAC,KAAa;QACd,OAAA,UACI,UAAuB,EACvB,KAEC,EACD,KAAa,EACb,SAAoC;;;;4BAErB,qBAAM,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAC3C,UAAU,EACV,KAAK,EACL,KAAK,EACL,SAAS,CACZ,EAAA;;wBALK,MAAM,GAAG,SAKd;wBACD,IAAK,MAAc,CAAC,OAAO,KAAK,KAAK;4BACjC,MAAM,IAAI,qBAAS,CACf,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,MAAM,CAAC,MAAuB,EAC9B,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAc,CACxB,CAAC;wBACN,sBAAO,MAAM,CAAC,IAAyB,EAAC;;;aAC3C;IAvBD,CAuBC,CAAC;IAEO,qBAAS,GAClB,UAAC,KAAa;QACd,OAAA,UACI,UAAuB,EACvB,KAEC,EACD,KAAa,EACb,SAAoC;YAEpC,sBAAA,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAA;iBAAA;IARvE,CAQuE,CAAC;IAE5E;;OAEG;IACH,IAAM,UAAU,GACZ,UAAC,MAAc;QACf,OAAA,UAAC,KAAa;YACd,OAAA,UACI,UAAuB,EACvB,KAEC,EACD,KAAa,EACb,SAAoC;;;;;;4BAM9B,OAAO,gBAEF,CAAC,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAChC,CAAC;4BACN,IAAI,KAAK,KAAK,SAAS,EAAE;gCACrB,IAAI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,MAAK,SAAS;oCACjC,MAAM,IAAI,KAAK,CACX,mBAAY,KAAK,CAAC,SAAS,gDAA6C,CAC3E,CAAC;gCACN,OAAO,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;6BAChD;4BAGK,IAAI,yBACH,CAAC,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,KAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,CAAC;;oCACN,IAAM,MAAM,GAAuB,EAAE,CAAC;;wCACtC,KAA2B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,gBAAA;4CAAvC,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;4CAClB,IAAI,KAAK,KAAK,SAAS;gDAAE,SAAS;iDAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;oDACzB,KAAgB,IAAA,yBAAA,SAAA,KAAK,CAAA,CAAA,4BAAA;wDAAhB,IAAM,CAAC,kBAAA;wDACR,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qDAAA;;;;;;;;;;gDACjC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;yCAAA;;;;;;;;;oCAC3C,OAAO,MAAM,CAAC;gCAClB,CAAC,CAAC,EAAE,GACP,CAAC;4BAEF,sBAAsB;4BACtB,IAAI,KAAK,KAAK,SAAS;gCACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM;gCACpB,iBAAiB;gCACjB,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,MAAK,YAAY;oCAChC,CAAC,CAAC,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;oCACtC,CAAC,CAAC,KAAK,EACX,OAAO,CACV,CAAC;4BAMA,IAAI,GACN,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;gCACnD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gCACjB,CAAC,CAAC,WAAI,KAAK,CAAC,IAAI,CAAE;gCAClB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;4BACf,GAAG,GAAQ,IAAI,GAAG,CAAC,UAAG,UAAU,CAAC,IAAI,SAAG,IAAI,CAAE,CAAC,CAAC;4BAIlD,qBAAM,QAAQ,CAAC,GAAG,EAAE,EAAA;gCADG,qBAAM,CAC7B,SAAoB,CACvB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAA;;4BAFX,QAAQ,GAAa,SAEV;4BAGX,MAAM,GAA2B;gCACnC,OAAO,EACH,QAAQ,CAAC,MAAM,KAAK,GAAG;oCACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;oCACvB,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;gCACnC,MAAM,EAAE,KAAK,CAAC,MAAM;gCACpB,OAAO,EAAE,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC;gCACrD,IAAI,EAAE,SAAU;6BACZ,CAAC;iCACL,CAAC,MAAc,CAAC,OAAO,KAAK,KAAK,CAAA,EAAjC,wBAAiC;4BACjC,cAAc;4BACd,KAAA,MAAM,CAAA;4BAAQ,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;4BADnC,cAAc;4BACd,GAAO,IAAI,GAAG,SAAqB,CAAC;4BAC9B,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;4BAClD,IACI,MAAM,KAAK,OAAO;gCAClB,IAAI;gCACJ,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gCAEvC,IAAI;oCACA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iCACzC;gCAAC,WAAM,GAAE;;;iCAGV,CAAA,KAAK,CAAC,MAAM,KAAK,MAAM,CAAA,EAAvB,wBAAuB;4BAAE,MAAM,CAAC,IAAI,GAAG,SAAU,CAAC;;;iCAC7C,CAAA,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,MAAK,kBAAkB,CAAA,EAA3C,wBAA2C;4BAC3B,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;4BAApC,IAAI,GAAW,SAAqB;4BAC1C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;;;4BAEzD,KAAA,MAAM,CAAA;4BAAQ,KAAA,CAAA,KAAA,KAAK,CAAA,CAAC,MAAM,CAAA;4BACtB,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;4BADzB,GAAO,IAAI,GAAG,cACV,SAAqB,EACrB,MAAM,CAAC,OAAO,EACjB,CAAC;;gCAEV,sBAAO,MAAM,EAAC;;;iBACjB;QArGD,CAqGC;IAtGD,CAsGC,CAAC;AACV,CAAC,EAhKgB,WAAW,2BAAX,WAAW,QAgK3B;AAED;;GAEG;AACH,IAAM,QAAQ,GAAG,IAAI,qBAAS,CAAC;;;;;;qBAEvB,CAAA,OAAO,MAAM,KAAK,QAAQ;oBAC1B,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;oBAClC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAA,EAHjD,wBAGiD;qBAE7C,CAAA,MAAM,CAAC,KAAK,KAAK,SAAS,CAAA,EAA1B,wBAA0B;4BAC1B,MAAM,CAAC,KAAK;;;;gBAAZ,KAAA,MAAM,CAAA;gBAAa,qBAAM,IAAA,iBAAO,EAAC,YAAY,CAAC,EAAA;;yBAAvC,KAAK,GAAM,CAAC,SAA2B,CAAS,CAAC,OAAO;;;gBAA/D,GAAgE;;oBACpE,sBAAQ,MAAc,CAAC,KAAK,EAAC;oBAEjC,sBAAO,MAAM,CAAC,KAAK,EAAC;;;KACvB,CAAC,CAAC;AAEH;;GAEG;AACH,IAAM,0BAA0B,GAAG,UAC/B,OAAgB;IAEhB,IAAM,MAAM,GAAsC,EAAE,CAAC;IACrD,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,GAAG;;;QACvB,IAAI,GAAG,KAAK,YAAY,EAAE;YACtB,MAAA,MAAM,CAAC,GAAG,qCAAV,MAAM,CAAC,GAAG,IAAM,EAAE,EAAC;YACnB,CAAA,KAAC,MAAM,CAAC,GAAG,CAAc,CAAA,CAAC,IAAI,oCACvB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,WAC9C;SACL;;YAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/EncryptedFetcher.ts
CHANGED
|
@@ -117,14 +117,12 @@ export namespace EncryptedFetcher {
|
|
|
117
117
|
})(connection, route, input, stringify);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
export function propagate<
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
export function propagate<Output extends IPropagation<any, any>>(
|
|
121
|
+
connection: IConnection,
|
|
122
|
+
route: IFetchRoute<"HEAD">,
|
|
123
|
+
): Promise<Output>;
|
|
123
124
|
|
|
124
|
-
export function propagate<
|
|
125
|
-
Input,
|
|
126
|
-
Output extends IPropagation<number, any, boolean>,
|
|
127
|
-
>(
|
|
125
|
+
export function propagate<Input, Output extends IPropagation<any, any>>(
|
|
128
126
|
connection: IConnection,
|
|
129
127
|
route: IFetchRoute<"HEAD">,
|
|
130
128
|
input?: Input,
|
|
@@ -133,7 +131,7 @@ export namespace EncryptedFetcher {
|
|
|
133
131
|
|
|
134
132
|
export async function propagate<
|
|
135
133
|
Input,
|
|
136
|
-
Output extends IPropagation<
|
|
134
|
+
Output extends IPropagation<any, any>,
|
|
137
135
|
>(
|
|
138
136
|
connection: IConnection,
|
|
139
137
|
route: IFetchRoute<
|
package/src/IPropagation.ts
CHANGED
|
@@ -1,16 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Propagation type.
|
|
3
|
+
*
|
|
4
|
+
* @template StatusMap Map of status code and its body data type.
|
|
5
|
+
* @template Success Default success status code.
|
|
6
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
7
|
+
*/
|
|
8
|
+
export type IPropagation<
|
|
9
|
+
StatusMap extends {
|
|
10
|
+
[P in IPropagation.Status]?: any;
|
|
11
|
+
},
|
|
12
|
+
Success extends number = 200 | 201,
|
|
13
|
+
> =
|
|
14
|
+
| {
|
|
15
|
+
[P in keyof StatusMap]: IPropagation.IBranch<
|
|
16
|
+
P extends Success ? true : false,
|
|
17
|
+
P,
|
|
18
|
+
StatusMap[P]
|
|
19
|
+
>;
|
|
20
|
+
}[keyof StatusMap]
|
|
21
|
+
| IPropagation.IBranch<false, number, any>;
|
|
13
22
|
export namespace IPropagation {
|
|
23
|
+
/**
|
|
24
|
+
* Type of configurable status codes.
|
|
25
|
+
*
|
|
26
|
+
* The special characters like `2XX`, `3XX`, `4XX`, `5XX` are meaning the range
|
|
27
|
+
* of status codes. If `5XX` is specified, it means the status code is in the
|
|
28
|
+
* range of `500` to `599`.
|
|
29
|
+
*/
|
|
30
|
+
export type Status = number | "2XX" | "3XX" | "4XX" | "5XX";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Branch type of propagation.
|
|
34
|
+
*
|
|
35
|
+
* `IPropagation.IBranch` is a branch type composing `IPropagation` type,
|
|
36
|
+
* which is gathering all possible status codes and their body data types
|
|
37
|
+
* as a union type.
|
|
38
|
+
*/
|
|
39
|
+
export interface IBranch<Success extends boolean, StatusValue, BodyData> {
|
|
40
|
+
success: Success;
|
|
41
|
+
status: StatusValue extends "2XX" | "3XX" | "4XX" | "5XX"
|
|
42
|
+
? StatusRange<StatusValue>
|
|
43
|
+
: StatusValue extends number
|
|
44
|
+
? StatusValue
|
|
45
|
+
: never;
|
|
46
|
+
data: BodyData;
|
|
47
|
+
headers: Record<string, string | string[]>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Range of status codes by the first digit.
|
|
52
|
+
*/
|
|
14
53
|
export type StatusRange<T extends "2XX" | "3XX" | "4XX" | "5XX"> =
|
|
15
54
|
T extends 0
|
|
16
55
|
? IntRange<200, 299>
|
package/src/PlainFetcher.ts
CHANGED
|
@@ -81,14 +81,12 @@ export namespace PlainFetcher {
|
|
|
81
81
|
})(connection, route, input, stringify);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
export function propagate<
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
export function propagate<Output extends IPropagation<any, any>>(
|
|
85
|
+
connection: IConnection,
|
|
86
|
+
route: IFetchRoute<"HEAD">,
|
|
87
|
+
): Promise<Output>;
|
|
87
88
|
|
|
88
|
-
export function propagate<
|
|
89
|
-
Input,
|
|
90
|
-
Output extends IPropagation<number, any, boolean>,
|
|
91
|
-
>(
|
|
89
|
+
export function propagate<Input, Output extends IPropagation<any, any>>(
|
|
92
90
|
connection: IConnection,
|
|
93
91
|
route: IFetchRoute<"HEAD">,
|
|
94
92
|
input?: Input,
|
|
@@ -97,7 +95,7 @@ export namespace PlainFetcher {
|
|
|
97
95
|
|
|
98
96
|
export async function propagate<
|
|
99
97
|
Input,
|
|
100
|
-
Output extends IPropagation<
|
|
98
|
+
Output extends IPropagation<any, any>,
|
|
101
99
|
>(
|
|
102
100
|
connection: IConnection,
|
|
103
101
|
route: IFetchRoute<
|
|
@@ -35,11 +35,11 @@ export namespace FetcherBase {
|
|
|
35
35
|
input,
|
|
36
36
|
stringify,
|
|
37
37
|
);
|
|
38
|
-
if (result.success === false)
|
|
38
|
+
if ((result as any).success === false)
|
|
39
39
|
throw new HttpError(
|
|
40
40
|
route.method,
|
|
41
41
|
route.path,
|
|
42
|
-
result.status,
|
|
42
|
+
result.status as any as number,
|
|
43
43
|
result.headers,
|
|
44
44
|
result.data as string,
|
|
45
45
|
);
|
|
@@ -55,7 +55,7 @@ export namespace FetcherBase {
|
|
|
55
55
|
>,
|
|
56
56
|
input?: Input,
|
|
57
57
|
stringify?: (input: Input) => string,
|
|
58
|
-
): Promise<IPropagation<any, any
|
|
58
|
+
): Promise<IPropagation<any, any>> =>
|
|
59
59
|
_Propagate("propagate")(props)(connection, route, input, stringify);
|
|
60
60
|
|
|
61
61
|
/**
|
|
@@ -71,7 +71,7 @@ export namespace FetcherBase {
|
|
|
71
71
|
>,
|
|
72
72
|
input?: Input,
|
|
73
73
|
stringify?: (input: Input) => string,
|
|
74
|
-
): Promise<IPropagation<any, any
|
|
74
|
+
): Promise<IPropagation<any, any>> => {
|
|
75
75
|
//----
|
|
76
76
|
// REQUEST MESSSAGE
|
|
77
77
|
//----
|
|
@@ -131,7 +131,7 @@ export namespace FetcherBase {
|
|
|
131
131
|
)(url.href, init);
|
|
132
132
|
|
|
133
133
|
// CONSTRUCT RESULT DATA
|
|
134
|
-
const result: IPropagation<any, any
|
|
134
|
+
const result: IPropagation<any, any> = {
|
|
135
135
|
success:
|
|
136
136
|
response.status === 200 ||
|
|
137
137
|
response.status === 201 ||
|
|
@@ -139,8 +139,8 @@ export namespace FetcherBase {
|
|
|
139
139
|
status: route.status,
|
|
140
140
|
headers: response_headers_to_object(response.headers),
|
|
141
141
|
data: undefined!,
|
|
142
|
-
};
|
|
143
|
-
if (result.success === false) {
|
|
142
|
+
} as any;
|
|
143
|
+
if ((result as any).success === false) {
|
|
144
144
|
// WHEN FAILED
|
|
145
145
|
result.data = await response.text();
|
|
146
146
|
const type = response.headers.get("content-type");
|