@effect-rx/rx-react 0.41.0 → 0.42.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/cjs/Hooks.js +21 -27
- package/dist/cjs/Hooks.js.map +1 -1
- package/dist/dts/Hooks.d.ts +14 -9
- package/dist/dts/Hooks.d.ts.map +1 -1
- package/dist/esm/Hooks.js +20 -25
- package/dist/esm/Hooks.js.map +1 -1
- package/package.json +2 -2
- package/src/Hooks.ts +95 -33
package/dist/cjs/Hooks.js
CHANGED
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", {
|
|
9
9
|
value: true
|
|
10
10
|
});
|
|
11
|
-
exports.useRxValue = exports.useRxSuspense = exports.useRxSubscribe = exports.
|
|
11
|
+
exports.useRxValue = exports.useRxSuspense = exports.useRxSubscribe = exports.useRxSet = exports.useRxRefresh = exports.useRxRefPropValue = exports.useRxRefProp = exports.useRxRef = exports.useRxMount = exports.useRxInitialValues = exports.useRx = void 0;
|
|
12
12
|
var Registry = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-rx/rx/Registry"));
|
|
13
13
|
var Rx = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-rx/rx/Rx"));
|
|
14
14
|
var _effect = /*#__PURE__*/require("effect");
|
|
15
15
|
var Cause = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Cause"));
|
|
16
|
+
var Exit = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Exit"));
|
|
16
17
|
var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
|
|
17
18
|
var React = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("react"));
|
|
18
19
|
var _RegistryContext = /*#__PURE__*/require("./RegistryContext.js");
|
|
@@ -101,16 +102,24 @@ exports.useRxValue = useRxValue;
|
|
|
101
102
|
function mountRx(registry, rx) {
|
|
102
103
|
React.useEffect(() => registry.mount(rx), [rx, registry]);
|
|
103
104
|
}
|
|
104
|
-
function setRx(registry, rx) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
registry.set(rx, value(registry.get(rx)));
|
|
108
|
-
return;
|
|
109
|
-
} else {
|
|
105
|
+
function setRx(registry, rx, options) {
|
|
106
|
+
if (options?.mode === "promise" || options?.mode === "promiseExit") {
|
|
107
|
+
return React.useCallback((value, opts) => {
|
|
110
108
|
registry.set(rx, value);
|
|
111
|
-
|
|
109
|
+
const promise = _effect.Effect.runPromiseExit(Registry.getResult(registry, rx, {
|
|
110
|
+
suspendOnWaiting: true
|
|
111
|
+
}), opts);
|
|
112
|
+
return options.mode === "promise" ? promise.then(flattenExit) : promise;
|
|
113
|
+
}, [registry, rx, options.mode]);
|
|
114
|
+
}
|
|
115
|
+
return React.useCallback(value => {
|
|
116
|
+
registry.set(rx, typeof value === "function" ? value(registry.get(rx)) : value);
|
|
112
117
|
}, [registry, rx]);
|
|
113
118
|
}
|
|
119
|
+
const flattenExit = exit => {
|
|
120
|
+
if (Exit.isSuccess(exit)) return exit.value;
|
|
121
|
+
throw Cause.squash(exit.cause);
|
|
122
|
+
};
|
|
114
123
|
/**
|
|
115
124
|
* @since 1.0.0
|
|
116
125
|
* @category hooks
|
|
@@ -124,31 +133,16 @@ const useRxMount = rx => {
|
|
|
124
133
|
* @category hooks
|
|
125
134
|
*/
|
|
126
135
|
exports.useRxMount = useRxMount;
|
|
127
|
-
const useRxSet = rx => {
|
|
136
|
+
const useRxSet = (rx, options) => {
|
|
128
137
|
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
129
138
|
mountRx(registry, rx);
|
|
130
|
-
return setRx(registry, rx);
|
|
139
|
+
return setRx(registry, rx, options);
|
|
131
140
|
};
|
|
132
141
|
/**
|
|
133
142
|
* @since 1.0.0
|
|
134
143
|
* @category hooks
|
|
135
144
|
*/
|
|
136
145
|
exports.useRxSet = useRxSet;
|
|
137
|
-
const useRxSetPromise = rx => {
|
|
138
|
-
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
139
|
-
mountRx(registry, rx);
|
|
140
|
-
return React.useCallback((value, options) => {
|
|
141
|
-
registry.set(rx, value);
|
|
142
|
-
return _effect.Effect.runPromiseExit(Registry.getResult(registry, rx, {
|
|
143
|
-
suspendOnWaiting: true
|
|
144
|
-
}), options);
|
|
145
|
-
}, [registry, rx]);
|
|
146
|
-
};
|
|
147
|
-
/**
|
|
148
|
-
* @since 1.0.0
|
|
149
|
-
* @category hooks
|
|
150
|
-
*/
|
|
151
|
-
exports.useRxSetPromise = useRxSetPromise;
|
|
152
146
|
const useRxRefresh = rx => {
|
|
153
147
|
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
154
148
|
mountRx(registry, rx);
|
|
@@ -161,9 +155,9 @@ const useRxRefresh = rx => {
|
|
|
161
155
|
* @category hooks
|
|
162
156
|
*/
|
|
163
157
|
exports.useRxRefresh = useRxRefresh;
|
|
164
|
-
const useRx = rx => {
|
|
158
|
+
const useRx = (rx, options) => {
|
|
165
159
|
const registry = React.useContext(_RegistryContext.RegistryContext);
|
|
166
|
-
return [useStore(registry, rx), setRx(registry, rx)];
|
|
160
|
+
return [useStore(registry, rx), setRx(registry, rx, options)];
|
|
167
161
|
};
|
|
168
162
|
exports.useRx = useRx;
|
|
169
163
|
const rxPromiseMap = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx-react/rxPromiseMap", () => ({
|
package/dist/cjs/Hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hooks.js","names":["Object","defineProperty","exports","value","useRxValue","useRxSuspense","useRxSubscribe","
|
|
1
|
+
{"version":3,"file":"Hooks.js","names":["Object","defineProperty","exports","value","useRxValue","useRxSuspense","useRxSubscribe","useRxSet","useRxRefresh","useRxRefPropValue","useRxRefProp","useRxRef","useRxMount","useRxInitialValues","useRx","Registry","_interopRequireWildcard","require","Rx","_effect","Cause","Exit","_GlobalValue","React","_RegistryContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","storeRegistry","globalValue","makeStore","registry","rx","stores","undefined","store","newStore","subscribe","snapshot","getServerSnapshot","getServerValue","useStore","useSyncExternalStore","initialValuesSet","initialValues","useContext","RegistryContext","WeakSet","add","ensureNode","setValue","rxB","useMemo","map","mountRx","useEffect","mount","setRx","options","mode","useCallback","opts","promise","Effect","runPromiseExit","getResult","suspendOnWaiting","then","flattenExit","exit","isSuccess","squash","cause","refresh","rxPromiseMap","Map","rxToPromise","Promise","resolve","dispose","result","_tag","waiting","setTimeout","delete","rxResultOrSuspend","includeFailure","immediate","ref","useState","prop"],"sources":["../../src/Hooks.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/dts/Hooks.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type * as Result from "@effect-rx/rx/Result";
|
|
2
2
|
import * as Rx from "@effect-rx/rx/Rx";
|
|
3
3
|
import type * as RxRef from "@effect-rx/rx/RxRef";
|
|
4
|
-
import
|
|
4
|
+
import * as Exit from "effect/Exit";
|
|
5
5
|
/**
|
|
6
6
|
* @since 1.0.0
|
|
7
7
|
* @category hooks
|
|
@@ -24,14 +24,13 @@ export declare const useRxMount: <A>(rx: Rx.Rx<A>) => void;
|
|
|
24
24
|
* @since 1.0.0
|
|
25
25
|
* @category hooks
|
|
26
26
|
*/
|
|
27
|
-
export declare const useRxSet: <R, W
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* @category hooks
|
|
31
|
-
*/
|
|
32
|
-
export declare const useRxSetPromise: <E, A, W>(rx: Rx.Writable<Result.Result<A, E>, W>) => (_: W, options?: {
|
|
27
|
+
export declare const useRxSet: <R, W, Mode extends "value" | "promise" | "promiseExit" = never>(rx: Rx.Writable<R, W>, options?: {
|
|
28
|
+
readonly mode?: ([R] extends [Result.Result<any, any>] ? Mode : "value") | undefined;
|
|
29
|
+
}) => "promise" extends Mode ? ((value: W, options?: {
|
|
33
30
|
readonly signal?: AbortSignal | undefined;
|
|
34
|
-
} | undefined) => Promise<
|
|
31
|
+
} | undefined) => Promise<Result.Result.InferA<R>>) : "promiseExit" extends Mode ? ((value: W, options?: {
|
|
32
|
+
readonly signal?: AbortSignal | undefined;
|
|
33
|
+
} | undefined) => Promise<Exit.Exit<Result.Result.InferA<R>, Result.Result.InferE<R>>>) : ((value: W | ((value: R) => W)) => void);
|
|
35
34
|
/**
|
|
36
35
|
* @since 1.0.0
|
|
37
36
|
* @category hooks
|
|
@@ -41,7 +40,13 @@ export declare const useRxRefresh: <A>(rx: Rx.Rx<A>) => () => void;
|
|
|
41
40
|
* @since 1.0.0
|
|
42
41
|
* @category hooks
|
|
43
42
|
*/
|
|
44
|
-
export declare const useRx: <R, W
|
|
43
|
+
export declare const useRx: <R, W, const Mode extends "value" | "promise" | "promiseExit" = "value">(rx: Rx.Writable<R, W>, options?: {
|
|
44
|
+
readonly mode?: ([R] extends [Result.Result<any, any>] ? Mode : "value") | undefined;
|
|
45
|
+
}) => readonly [value: R, write: "promise" extends Mode ? ((value: W, options?: {
|
|
46
|
+
readonly signal?: AbortSignal | undefined;
|
|
47
|
+
} | undefined) => Promise<Result.Result.InferA<R>>) : "promiseExit" extends Mode ? ((value: W, options?: {
|
|
48
|
+
readonly signal?: AbortSignal | undefined;
|
|
49
|
+
} | undefined) => Promise<Exit.Exit<Result.Result.InferA<R>, Result.Result.InferE<R>>>) : ((value: W | ((value: R) => W)) => void)];
|
|
45
50
|
/**
|
|
46
51
|
* @since 1.0.0
|
|
47
52
|
* @category hooks
|
package/dist/dts/Hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hooks.d.ts","sourceRoot":"","sources":["../../src/Hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Hooks.d.ts","sourceRoot":"","sources":["../../src/Hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/Hooks.js
CHANGED
|
@@ -7,6 +7,7 @@ import * as Registry from "@effect-rx/rx/Registry";
|
|
|
7
7
|
import * as Rx from "@effect-rx/rx/Rx";
|
|
8
8
|
import { Effect } from "effect";
|
|
9
9
|
import * as Cause from "effect/Cause";
|
|
10
|
+
import * as Exit from "effect/Exit";
|
|
10
11
|
import { globalValue } from "effect/GlobalValue";
|
|
11
12
|
import * as React from "react";
|
|
12
13
|
import { RegistryContext } from "./RegistryContext.js";
|
|
@@ -73,46 +74,40 @@ export const useRxValue = (rx, f) => {
|
|
|
73
74
|
function mountRx(registry, rx) {
|
|
74
75
|
React.useEffect(() => registry.mount(rx), [rx, registry]);
|
|
75
76
|
}
|
|
76
|
-
function setRx(registry, rx) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
registry.set(rx, value(registry.get(rx)));
|
|
80
|
-
return;
|
|
81
|
-
} else {
|
|
77
|
+
function setRx(registry, rx, options) {
|
|
78
|
+
if (options?.mode === "promise" || options?.mode === "promiseExit") {
|
|
79
|
+
return React.useCallback((value, opts) => {
|
|
82
80
|
registry.set(rx, value);
|
|
83
|
-
|
|
81
|
+
const promise = Effect.runPromiseExit(Registry.getResult(registry, rx, {
|
|
82
|
+
suspendOnWaiting: true
|
|
83
|
+
}), opts);
|
|
84
|
+
return options.mode === "promise" ? promise.then(flattenExit) : promise;
|
|
85
|
+
}, [registry, rx, options.mode]);
|
|
86
|
+
}
|
|
87
|
+
return React.useCallback(value => {
|
|
88
|
+
registry.set(rx, typeof value === "function" ? value(registry.get(rx)) : value);
|
|
84
89
|
}, [registry, rx]);
|
|
85
90
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
*/
|
|
90
|
-
export const useRxMount = rx => {
|
|
91
|
-
const registry = React.useContext(RegistryContext);
|
|
92
|
-
mountRx(registry, rx);
|
|
91
|
+
const flattenExit = exit => {
|
|
92
|
+
if (Exit.isSuccess(exit)) return exit.value;
|
|
93
|
+
throw Cause.squash(exit.cause);
|
|
93
94
|
};
|
|
94
95
|
/**
|
|
95
96
|
* @since 1.0.0
|
|
96
97
|
* @category hooks
|
|
97
98
|
*/
|
|
98
|
-
export const
|
|
99
|
+
export const useRxMount = rx => {
|
|
99
100
|
const registry = React.useContext(RegistryContext);
|
|
100
101
|
mountRx(registry, rx);
|
|
101
|
-
return setRx(registry, rx);
|
|
102
102
|
};
|
|
103
103
|
/**
|
|
104
104
|
* @since 1.0.0
|
|
105
105
|
* @category hooks
|
|
106
106
|
*/
|
|
107
|
-
export const
|
|
107
|
+
export const useRxSet = (rx, options) => {
|
|
108
108
|
const registry = React.useContext(RegistryContext);
|
|
109
109
|
mountRx(registry, rx);
|
|
110
|
-
return
|
|
111
|
-
registry.set(rx, value);
|
|
112
|
-
return Effect.runPromiseExit(Registry.getResult(registry, rx, {
|
|
113
|
-
suspendOnWaiting: true
|
|
114
|
-
}), options);
|
|
115
|
-
}, [registry, rx]);
|
|
110
|
+
return setRx(registry, rx, options);
|
|
116
111
|
};
|
|
117
112
|
/**
|
|
118
113
|
* @since 1.0.0
|
|
@@ -129,9 +124,9 @@ export const useRxRefresh = rx => {
|
|
|
129
124
|
* @since 1.0.0
|
|
130
125
|
* @category hooks
|
|
131
126
|
*/
|
|
132
|
-
export const useRx = rx => {
|
|
127
|
+
export const useRx = (rx, options) => {
|
|
133
128
|
const registry = React.useContext(RegistryContext);
|
|
134
|
-
return [useStore(registry, rx), setRx(registry, rx)];
|
|
129
|
+
return [useStore(registry, rx), setRx(registry, rx, options)];
|
|
135
130
|
};
|
|
136
131
|
const rxPromiseMap = /*#__PURE__*/globalValue("@effect-rx/rx-react/rxPromiseMap", () => ({
|
|
137
132
|
suspendOnWaiting: new Map(),
|
package/dist/esm/Hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hooks.js","names":["Registry","Rx","Effect","Cause","globalValue","React","RegistryContext","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","undefined","set","store","newStore","subscribe","f","snapshot","getServerSnapshot","getServerValue","useStore","useSyncExternalStore","initialValuesSet","useRxInitialValues","initialValues","useContext","WeakSet","value","has","add","ensureNode","setValue","useRxValue","rxB","useMemo","map","mountRx","useEffect","mount","setRx","
|
|
1
|
+
{"version":3,"file":"Hooks.js","names":["Registry","Rx","Effect","Cause","Exit","globalValue","React","RegistryContext","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","undefined","set","store","newStore","subscribe","f","snapshot","getServerSnapshot","getServerValue","useStore","useSyncExternalStore","initialValuesSet","useRxInitialValues","initialValues","useContext","WeakSet","value","has","add","ensureNode","setValue","useRxValue","rxB","useMemo","map","mountRx","useEffect","mount","setRx","options","mode","useCallback","opts","promise","runPromiseExit","getResult","suspendOnWaiting","then","flattenExit","exit","isSuccess","squash","cause","useRxMount","useRxSet","useRxRefresh","refresh","useRx","rxPromiseMap","Map","default","rxToPromise","Promise","resolve","dispose","result","_tag","waiting","setTimeout","delete","rxResultOrSuspend","useRxSuspense","includeFailure","useRxSubscribe","immediate","useRxRef","ref","useState","useRxRefProp","prop","useRxRefPropValue"],"sources":["../../src/Hooks.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-rx/rx-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"description": "Reactive toolkit for Effect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"author": "Effect contributors",
|
|
12
12
|
"homepage": "https://github.com/effect-ts/rx",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@effect-rx/rx": "^0.48.
|
|
14
|
+
"@effect-rx/rx": "^0.48.4"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"effect": "^3.17",
|
package/src/Hooks.ts
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
"use client"
|
|
5
|
+
|
|
5
6
|
import * as Registry from "@effect-rx/rx/Registry"
|
|
6
7
|
import type * as Result from "@effect-rx/rx/Result"
|
|
7
8
|
import * as Rx from "@effect-rx/rx/Rx"
|
|
8
9
|
import type * as RxRef from "@effect-rx/rx/RxRef"
|
|
9
10
|
import { Effect } from "effect"
|
|
10
11
|
import * as Cause from "effect/Cause"
|
|
11
|
-
import
|
|
12
|
+
import * as Exit from "effect/Exit"
|
|
12
13
|
import { globalValue } from "effect/GlobalValue"
|
|
13
14
|
import * as React from "react"
|
|
14
15
|
import { RegistryContext } from "./RegistryContext.js"
|
|
@@ -99,54 +100,93 @@ function mountRx<A>(registry: Registry.Registry, rx: Rx.Rx<A>): void {
|
|
|
99
100
|
React.useEffect(() => registry.mount(rx), [rx, registry])
|
|
100
101
|
}
|
|
101
102
|
|
|
102
|
-
function setRx<R, W
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
103
|
+
function setRx<R, W, Mode extends "value" | "promise" | "promiseExit" = "value">(
|
|
104
|
+
registry: Registry.Registry,
|
|
105
|
+
rx: Rx.Writable<R, W>,
|
|
106
|
+
options?: {
|
|
107
|
+
readonly mode?: ([R] extends [Result.Result<any, any>] ? Mode : "value") | undefined
|
|
108
|
+
}
|
|
109
|
+
): "promise" extends Mode ? (
|
|
110
|
+
(
|
|
111
|
+
value: W,
|
|
112
|
+
options?: {
|
|
113
|
+
readonly signal?: AbortSignal | undefined
|
|
114
|
+
} | undefined
|
|
115
|
+
) => Promise<Result.Result.InferA<R>>
|
|
116
|
+
) :
|
|
117
|
+
"promiseExit" extends Mode ? (
|
|
118
|
+
(
|
|
119
|
+
value: W,
|
|
120
|
+
options?: {
|
|
121
|
+
readonly signal?: AbortSignal | undefined
|
|
122
|
+
} | undefined
|
|
123
|
+
) => Promise<Exit.Exit<Result.Result.InferA<R>, Result.Result.InferE<R>>>
|
|
124
|
+
) :
|
|
125
|
+
((value: W | ((value: R) => W)) => void)
|
|
126
|
+
{
|
|
127
|
+
if (options?.mode === "promise" || options?.mode === "promiseExit") {
|
|
128
|
+
return React.useCallback((value: W, opts?: any) => {
|
|
108
129
|
registry.set(rx, value)
|
|
109
|
-
|
|
110
|
-
|
|
130
|
+
const promise = Effect.runPromiseExit(
|
|
131
|
+
Registry.getResult(registry, rx as Rx.Rx<Result.Result<any, any>>, { suspendOnWaiting: true }),
|
|
132
|
+
opts
|
|
133
|
+
)
|
|
134
|
+
return options!.mode === "promise" ? promise.then(flattenExit) : promise
|
|
135
|
+
}, [registry, rx, options.mode]) as any
|
|
136
|
+
}
|
|
137
|
+
return React.useCallback((value: W | ((value: R) => W)) => {
|
|
138
|
+
registry.set(rx, typeof value === "function" ? (value as any)(registry.get(rx)) : value)
|
|
139
|
+
}, [registry, rx]) as any
|
|
111
140
|
}
|
|
112
141
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
*/
|
|
117
|
-
export const useRxMount = <A>(rx: Rx.Rx<A>): void => {
|
|
118
|
-
const registry = React.useContext(RegistryContext)
|
|
119
|
-
mountRx(registry, rx)
|
|
142
|
+
const flattenExit = <A, E>(exit: Exit.Exit<A, E>): A => {
|
|
143
|
+
if (Exit.isSuccess(exit)) return exit.value
|
|
144
|
+
throw Cause.squash(exit.cause)
|
|
120
145
|
}
|
|
121
146
|
|
|
122
147
|
/**
|
|
123
148
|
* @since 1.0.0
|
|
124
149
|
* @category hooks
|
|
125
150
|
*/
|
|
126
|
-
export const
|
|
151
|
+
export const useRxMount = <A>(rx: Rx.Rx<A>): void => {
|
|
127
152
|
const registry = React.useContext(RegistryContext)
|
|
128
153
|
mountRx(registry, rx)
|
|
129
|
-
return setRx(registry, rx)
|
|
130
154
|
}
|
|
131
155
|
|
|
132
156
|
/**
|
|
133
157
|
* @since 1.0.0
|
|
134
158
|
* @category hooks
|
|
135
159
|
*/
|
|
136
|
-
export const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
160
|
+
export const useRxSet = <
|
|
161
|
+
R,
|
|
162
|
+
W,
|
|
163
|
+
Mode extends "value" | "promise" | "promiseExit" = never
|
|
164
|
+
>(
|
|
165
|
+
rx: Rx.Writable<R, W>,
|
|
140
166
|
options?: {
|
|
141
|
-
readonly
|
|
142
|
-
}
|
|
143
|
-
)
|
|
167
|
+
readonly mode?: ([R] extends [Result.Result<any, any>] ? Mode : "value") | undefined
|
|
168
|
+
}
|
|
169
|
+
): "promise" extends Mode ? (
|
|
170
|
+
(
|
|
171
|
+
value: W,
|
|
172
|
+
options?: {
|
|
173
|
+
readonly signal?: AbortSignal | undefined
|
|
174
|
+
} | undefined
|
|
175
|
+
) => Promise<Result.Result.InferA<R>>
|
|
176
|
+
) :
|
|
177
|
+
"promiseExit" extends Mode ? (
|
|
178
|
+
(
|
|
179
|
+
value: W,
|
|
180
|
+
options?: {
|
|
181
|
+
readonly signal?: AbortSignal | undefined
|
|
182
|
+
} | undefined
|
|
183
|
+
) => Promise<Exit.Exit<Result.Result.InferA<R>, Result.Result.InferE<R>>>
|
|
184
|
+
) :
|
|
185
|
+
((value: W | ((value: R) => W)) => void) =>
|
|
186
|
+
{
|
|
144
187
|
const registry = React.useContext(RegistryContext)
|
|
145
188
|
mountRx(registry, rx)
|
|
146
|
-
return
|
|
147
|
-
registry.set(rx, value)
|
|
148
|
-
return Effect.runPromiseExit(Registry.getResult(registry, rx, { suspendOnWaiting: true }), options)
|
|
149
|
-
}, [registry, rx])
|
|
189
|
+
return setRx(registry, rx, options)
|
|
150
190
|
}
|
|
151
191
|
|
|
152
192
|
/**
|
|
@@ -165,13 +205,35 @@ export const useRxRefresh = <A>(rx: Rx.Rx<A>): () => void => {
|
|
|
165
205
|
* @since 1.0.0
|
|
166
206
|
* @category hooks
|
|
167
207
|
*/
|
|
168
|
-
export const useRx = <R, W>(
|
|
169
|
-
rx: Rx.Writable<R, W
|
|
170
|
-
|
|
208
|
+
export const useRx = <R, W, const Mode extends "value" | "promise" | "promiseExit" = "value">(
|
|
209
|
+
rx: Rx.Writable<R, W>,
|
|
210
|
+
options?: {
|
|
211
|
+
readonly mode?: ([R] extends [Result.Result<any, any>] ? Mode : "value") | undefined
|
|
212
|
+
}
|
|
213
|
+
): readonly [
|
|
214
|
+
value: R,
|
|
215
|
+
write: "promise" extends Mode ? (
|
|
216
|
+
(
|
|
217
|
+
value: W,
|
|
218
|
+
options?: {
|
|
219
|
+
readonly signal?: AbortSignal | undefined
|
|
220
|
+
} | undefined
|
|
221
|
+
) => Promise<Result.Result.InferA<R>>
|
|
222
|
+
) :
|
|
223
|
+
"promiseExit" extends Mode ? (
|
|
224
|
+
(
|
|
225
|
+
value: W,
|
|
226
|
+
options?: {
|
|
227
|
+
readonly signal?: AbortSignal | undefined
|
|
228
|
+
} | undefined
|
|
229
|
+
) => Promise<Exit.Exit<Result.Result.InferA<R>, Result.Result.InferE<R>>>
|
|
230
|
+
) :
|
|
231
|
+
((value: W | ((value: R) => W)) => void)
|
|
232
|
+
] => {
|
|
171
233
|
const registry = React.useContext(RegistryContext)
|
|
172
234
|
return [
|
|
173
235
|
useStore(registry, rx),
|
|
174
|
-
setRx(registry, rx)
|
|
236
|
+
setRx(registry, rx, options)
|
|
175
237
|
] as const
|
|
176
238
|
}
|
|
177
239
|
|