posipaki 0.3.3 → 0.4.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/dist/process.d.ts +2 -2
- package/dist/process.js.map +1 -1
- package/dist/xfetch.d.ts +10 -2
- package/dist/xfetch.js +8 -2
- package/dist/xfetch.js.map +1 -1
- package/package.json +1 -1
- package/src/process.ts +4 -4
- package/src/xfetch.ts +17 -3
package/dist/process.d.ts
CHANGED
|
@@ -6,12 +6,12 @@ type ExitMessage = {
|
|
|
6
6
|
pid: Symbol;
|
|
7
7
|
};
|
|
8
8
|
type ProcessGenerator<ProcessState> = Generator<ProcessState | null, void, Message>;
|
|
9
|
-
type Fork<ChildArgs, ChildState>
|
|
9
|
+
type Fork = <ChildArgs, ChildState>(fn: ProcessFn<ChildArgs, ChildState>, pname: string) => (args: ChildArgs) => Process<ChildArgs, ChildState>;
|
|
10
10
|
export type ProcessFn<Args, State> = (ctx: ProcessCtx, args: Args) => ProcessGenerator<State>;
|
|
11
11
|
type ProcessMessageCb = (msg: Message | ExitMessage) => void;
|
|
12
12
|
export type ProcessCtx = {
|
|
13
13
|
pname: string;
|
|
14
|
-
fork: Fork
|
|
14
|
+
fork: Fork;
|
|
15
15
|
send: (msg: Message) => void;
|
|
16
16
|
toParent: ProcessMessageCb;
|
|
17
17
|
};
|
package/dist/process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA2BjE,MAAM,UAAU,KAAK,CAAc,EAA0B,EAAE,KAAa,EAAE,QAA2B;IACvG,OAAO,CAAC,IAAU,EAAwB,EAAE;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AACD,MAAM,IAAI,GAAG,GAAE,EAAE,CAAC,IAAI,CAAC;AAEvB,MAAM,OAAO;IAaX,YAAY,EAA0B,EAAE,KAAa,EAAE,QAAsC;QAC3F,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAGxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,IAAU;QACd,MAAM,GAAG,GAAe;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QACF,MAAM,IAAI,GAAG,SAAS,CAAc,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAyB,EAAqC,EAAE,KAAc;QAChF,OAAO,CAAC,IAAe,
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA2BjE,MAAM,UAAU,KAAK,CAAc,EAA0B,EAAE,KAAa,EAAE,QAA2B;IACvG,OAAO,CAAC,IAAU,EAAwB,EAAE;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AACD,MAAM,IAAI,GAAG,GAAE,EAAE,CAAC,IAAI,CAAC;AAEvB,MAAM,OAAO;IAaX,YAAY,EAA0B,EAAE,KAAa,EAAE,QAAsC;QAC3F,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAGxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,IAAU;QACd,MAAM,GAAG,GAAe;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QACF,MAAM,IAAI,GAAG,SAAS,CAAc,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAyB,EAAqC,EAAE,KAAc;QAChF,OAAO,CAAC,IAAe,EAAmC,EAAE;YAC1D,MAAM,KAAK,GAAI,IAAI,OAAO,CAAwB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAkC,CAAC,CAAC;YACvD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAE,GAA8C;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QAED,IAAI,GAAwB,CAAC;QAC7B,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3B;IACH,CAAC;IAED,aAAa,CAAC,GAAY;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,GAAY;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,GAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,CAAW;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,GAAG,GAAG,CAAC,EAAE;gBACX,OAAO;aACR;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAA;IACH,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,GAA0B;QAClC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC,EAAE,KAAM,GAAmB,CAAC,GAAG,CAAC,CAAC;SAC7E;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAED,eAAe,OAAO,CAAC"}
|
package/dist/xfetch.d.ts
CHANGED
|
@@ -4,9 +4,17 @@ export type FetchState<T> = {
|
|
|
4
4
|
data: T | null;
|
|
5
5
|
text: string | null;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
type FetchArgsGet = {
|
|
8
8
|
url: URL;
|
|
9
|
+
method?: 'GET';
|
|
10
|
+
body?: undefined;
|
|
9
11
|
};
|
|
12
|
+
type FetchArgsSend<T> = {
|
|
13
|
+
url: URL;
|
|
14
|
+
method?: 'POST' | 'PUT' | 'PATCH';
|
|
15
|
+
body: T;
|
|
16
|
+
};
|
|
17
|
+
export type FetchArgs<T> = FetchArgsGet | FetchArgsSend<T>;
|
|
10
18
|
type FetchGenerator<T> = Generator<FetchState<T> | null, void, Message>;
|
|
11
|
-
declare function xfetch<Type>({ pname, toParent, send }: ProcessCtx, { url }: FetchArgs): FetchGenerator<Type>;
|
|
19
|
+
declare function xfetch<Type>({ pname, toParent, send }: ProcessCtx, { method, url, body }: FetchArgs<Type>): FetchGenerator<Type>;
|
|
12
20
|
export { xfetch };
|
package/dist/xfetch.js
CHANGED
|
@@ -12,7 +12,7 @@ function isJsonHelper(res) {
|
|
|
12
12
|
const ct = res.headers.get('content-type');
|
|
13
13
|
return ct === 'application/json';
|
|
14
14
|
}
|
|
15
|
-
function* xfetch({ pname, toParent, send }, { url }) {
|
|
15
|
+
function* xfetch({ pname, toParent, send }, { method = 'GET', url, body }) {
|
|
16
16
|
const state = { code: 'pending', data: null, text: null };
|
|
17
17
|
yield state;
|
|
18
18
|
const controller = new AbortController();
|
|
@@ -22,7 +22,13 @@ function* xfetch({ pname, toParent, send }, { url }) {
|
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
try {
|
|
24
24
|
toSelf({ type: 'LOADING' });
|
|
25
|
-
const
|
|
25
|
+
const serializedBody = method === 'GET' ? undefined : JSON.stringify(body);
|
|
26
|
+
const headers = new Headers({});
|
|
27
|
+
if (serializedBody) {
|
|
28
|
+
headers.set('content-type', 'application/json');
|
|
29
|
+
}
|
|
30
|
+
;
|
|
31
|
+
const res = yield fetch(url.href, { method, signal, body: serializedBody, headers });
|
|
26
32
|
if (isJsonHelper(res)) {
|
|
27
33
|
const data = yield res.json();
|
|
28
34
|
toSelf({ type: 'OK', data });
|
package/dist/xfetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xfetch.js","sourceRoot":"","sources":["../src/xfetch.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,SAAS,YAAY,CAAC,GAAc;IAClC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,EAAE,KAAK,kBAAkB,CAAC;AACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"xfetch.js","sourceRoot":"","sources":["../src/xfetch.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,SAAS,YAAY,CAAC,GAAc;IAClC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,EAAE,KAAK,kBAAkB,CAAC;AACnC,CAAC;AA2BD,QAAQ,CAAC,CAAC,MAAM,CAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAe,EAAE,EAAE,MAAM,GAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAoB;IAC1G,MAAM,KAAK,GAAqB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5E,MAAM,KAAK,CAAC;IAEZ,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAEjC,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,CAAC,GAAc,CAAC,CAAC;IAEtD,CAAC,SAAe,UAAU;;YACxB,IAAI;gBACF,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC3B,MAAM,cAAc,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC3E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChC,IAAI,cAAc,EAAE;oBAClB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;iBACjD;gBAAA,CAAC;gBACF,MAAM,GAAG,GAAa,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/F,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;oBACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC9B;qBAAM;oBACL,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC9B;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;gBACzE,IAAI,SAAS,EAAE;oBACb,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACpC;qBAAM;oBACL,sBAAsB;oBACtB,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;iBAClC;aACF;QACH,CAAC;KAAA,CAAC,EAAE,CAAC;IAEL,MAAM,MAAM,GAAG,GAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAE3E,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAwB,EAAC,EAAE;QACpD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YACvB,UAAU,CAAC,KAAK,EAAE,CAAC;SACpB;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;SACxB;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YACxB,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;SACvB;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YAC1B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;SACxB;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;YACrB,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAClB,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;YAC9B,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;SAC/B;IACH,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/package.json
CHANGED
package/src/process.ts
CHANGED
|
@@ -9,7 +9,7 @@ type ExitMessage = {
|
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
type ProcessGenerator<ProcessState> = Generator<ProcessState | null, void, Message>;
|
|
12
|
-
type Fork<ChildArgs, ChildState>
|
|
12
|
+
type Fork = <ChildArgs, ChildState>(fn : ProcessFn<ChildArgs, ChildState>, pname : string) => (args: ChildArgs) => Process<ChildArgs, ChildState>;
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
export type ProcessFn<Args, State> = (ctx: ProcessCtx, args: Args) => ProcessGenerator<State>;
|
|
@@ -17,7 +17,7 @@ type ProcessMessageCb = (msg: Message | ExitMessage) => void;
|
|
|
17
17
|
|
|
18
18
|
export type ProcessCtx = {
|
|
19
19
|
pname: string,
|
|
20
|
-
fork: Fork
|
|
20
|
+
fork: Fork,
|
|
21
21
|
send: (msg: Message) => void,
|
|
22
22
|
toParent: ProcessMessageCb,
|
|
23
23
|
};
|
|
@@ -78,8 +78,8 @@ class Process<Args, State> {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
fork<ChildArgs, ChildState> (fn : ProcessFn<ChildArgs, ChildState>, pname : string) {
|
|
81
|
-
return (args: ChildArgs) => {
|
|
82
|
-
const child = new Process(fn, pname, this.fromChild.bind(this));
|
|
81
|
+
return (args: ChildArgs): Process<ChildArgs, ChildState> => {
|
|
82
|
+
const child = new Process<ChildArgs, ChildState>(fn, pname, this.fromChild.bind(this));
|
|
83
83
|
this.children.push(child as Process<unknown, unknown>);
|
|
84
84
|
child.start(args);
|
|
85
85
|
return child;
|
package/src/xfetch.ts
CHANGED
|
@@ -11,9 +11,18 @@ export type FetchState<T> = {
|
|
|
11
11
|
data: T | null,
|
|
12
12
|
text: string | null,
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
type FetchArgsGet = {
|
|
15
15
|
url: URL,
|
|
16
|
+
method?: 'GET',
|
|
17
|
+
body?: undefined,
|
|
16
18
|
};
|
|
19
|
+
type FetchArgsSend<T> = {
|
|
20
|
+
url: URL,
|
|
21
|
+
method?: 'POST' | 'PUT' | 'PATCH',
|
|
22
|
+
body: T,
|
|
23
|
+
};
|
|
24
|
+
export type FetchArgs<T> = FetchArgsGet | FetchArgsSend<T>;
|
|
25
|
+
|
|
17
26
|
type FetchMessage<T> = {
|
|
18
27
|
type: string,
|
|
19
28
|
data?: T | null,
|
|
@@ -22,7 +31,7 @@ type FetchMessage<T> = {
|
|
|
22
31
|
|
|
23
32
|
type FetchGenerator<T> = Generator<FetchState<T> | null, void, Message>;
|
|
24
33
|
|
|
25
|
-
function* xfetch<Type>({ pname, toParent, send } : ProcessCtx, { url } : FetchArgs) : FetchGenerator<Type> {
|
|
34
|
+
function* xfetch<Type>({ pname, toParent, send } : ProcessCtx, { method='GET', url, body } : FetchArgs<Type>) : FetchGenerator<Type> {
|
|
26
35
|
const state: FetchState<Type> = { code: 'pending', data: null, text: null };
|
|
27
36
|
yield state;
|
|
28
37
|
|
|
@@ -34,7 +43,12 @@ function* xfetch<Type>({ pname, toParent, send } : ProcessCtx, { url } : FetchAr
|
|
|
34
43
|
(async function do_request() {
|
|
35
44
|
try {
|
|
36
45
|
toSelf({ type: 'LOADING'});
|
|
37
|
-
const
|
|
46
|
+
const serializedBody = method === 'GET' ? undefined : JSON.stringify(body);
|
|
47
|
+
const headers = new Headers({});
|
|
48
|
+
if (serializedBody) {
|
|
49
|
+
headers.set('content-type', 'application/json');
|
|
50
|
+
};
|
|
51
|
+
const res: Response = await fetch(url.href, { method, signal, body: serializedBody, headers });
|
|
38
52
|
if (isJsonHelper(res)) {
|
|
39
53
|
const data = await res.json();
|
|
40
54
|
toSelf({ type: 'OK', data });
|