@effect-rx/rx-react 0.28.10 → 0.28.12

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/index.js CHANGED
@@ -14,6 +14,7 @@ var Rx = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect-rx/
14
14
  var _Rx = Rx;
15
15
  exports.Rx = Rx;
16
16
  var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
17
+ var _Function = /*#__PURE__*/require("effect/Function");
17
18
  var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
18
19
  var React = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("react"));
19
20
  var Scheduler = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("scheduler"));
@@ -78,27 +79,22 @@ function scheduleTask(f) {
78
79
  const RegistryContext = exports.RegistryContext = /*#__PURE__*/React.createContext( /*#__PURE__*/Registry.make({
79
80
  scheduleTask
80
81
  }));
81
- const storeRegistry = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx-react/storeRegistry", () => new WeakMap());
82
- function makeStore(registry, rx) {
83
- const stores = storeRegistry.get(registry) ?? storeRegistry.set(registry, new WeakMap()).get(registry);
84
- const store = stores.get(rx);
85
- if (store) {
86
- return store;
82
+ function identityReducer(prev, next) {
83
+ if (Object.is(prev, next)) {
84
+ return prev;
87
85
  }
88
- const newStore = {
89
- subscribe(f) {
90
- return registry.subscribe(rx, f);
91
- },
92
- snapshot() {
93
- return registry.get(rx);
94
- }
95
- };
96
- stores.set(rx, newStore);
97
- return newStore;
86
+ return next;
98
87
  }
99
- function useStore(registry, rx) {
100
- const store = makeStore(registry, rx);
101
- return React.useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot);
88
+ function useRxValueRaw(registry, rx) {
89
+ const [state, dispatch] = React.useReducer(identityReducer, void 0, function (_) {
90
+ return registry.get(rx);
91
+ });
92
+ React.useEffect(function () {
93
+ return registry.subscribe(rx, dispatch, {
94
+ immediate: true
95
+ });
96
+ }, [registry, rx]);
97
+ return state;
102
98
  }
103
99
  /**
104
100
  * @since 1.0.0
@@ -108,9 +104,9 @@ const useRxValue = (rx, f) => {
108
104
  const registry = React.useContext(RegistryContext);
109
105
  if (f) {
110
106
  const rxB = React.useMemo(() => Rx.map(rx, f), [rx, f]);
111
- return useStore(registry, rxB);
107
+ return useRxValueRaw(registry, rxB);
112
108
  }
113
- return useStore(registry, rx);
109
+ return useRxValueRaw(registry, rx);
114
110
  };
115
111
  exports.useRxValue = useRxValue;
116
112
  function mountRx(registry, rx) {
@@ -200,58 +196,92 @@ const useRxRefresh = rx => {
200
196
  exports.useRxRefresh = useRxRefresh;
201
197
  const useRx = rx => {
202
198
  const registry = React.useContext(RegistryContext);
203
- return [useStore(registry, rx), setRx(registry, rx)];
199
+ return [useRxValueRaw(registry, rx), setRx(registry, rx)];
204
200
  };
205
201
  exports.useRx = useRx;
206
- const suspenseRx = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
207
- const result = get(rx);
208
- if (result._tag === "Initial") {
209
- return {
210
- _tag: "Suspended",
211
- promise: new Promise(resolve => get.addFinalizer(resolve))
212
- };
213
- }
202
+ function makeSuspended(rx) {
203
+ let resolve;
204
+ const promise = new Promise(_resolve => {
205
+ resolve = _resolve;
206
+ });
207
+ promise.rx = rx;
214
208
  return {
215
- _tag: "Value",
216
- value: result
209
+ _tag: "Suspended",
210
+ promise,
211
+ resolve: resolve
217
212
  };
218
- }));
219
- const suspenseRxWaiting = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
220
- const result = get(rx);
221
- if (result.waiting || result._tag === "Initial") {
222
- return {
223
- _tag: "Suspended",
224
- promise: new Promise(resolve => get.addFinalizer(resolve))
225
- };
213
+ }
214
+ const suspenseRxMap = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx-react/suspenseMounts", () => new WeakMap());
215
+ function suspenseRx(registry, rx, suspendOnWaiting) {
216
+ if (suspenseRxMap.has(rx)) {
217
+ return suspenseRxMap.get(rx);
226
218
  }
227
- return {
228
- _tag: "Value",
229
- value: result
230
- };
231
- }));
232
- const suspenseMounts = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect-rx/rx-react/suspenseMounts", () => new Set());
219
+ let unmount;
220
+ let timeout;
221
+ function performMount() {
222
+ if (timeout !== undefined) {
223
+ clearTimeout(timeout);
224
+ }
225
+ unmount = registry.subscribe(resultRx, _Function.constVoid);
226
+ }
227
+ function performUnmount() {
228
+ timeout = undefined;
229
+ if (unmount !== undefined) {
230
+ unmount();
231
+ unmount = undefined;
232
+ }
233
+ }
234
+ const resultRx = Rx.readable(function (get) {
235
+ let state = makeSuspended(rx);
236
+ get.subscribe(rx, function (result) {
237
+ if (result._tag === "Initial" || suspendOnWaiting && result.waiting) {
238
+ if (state._tag === "Resolved") {
239
+ state = makeSuspended(rx);
240
+ get.setSelfSync(state);
241
+ }
242
+ if (unmount === undefined) {
243
+ performMount();
244
+ }
245
+ } else {
246
+ if (unmount !== undefined && timeout === undefined) {
247
+ timeout = setTimeout(performUnmount, 1000);
248
+ }
249
+ if (state._tag === "Resolved") {
250
+ state = {
251
+ _tag: "Resolved",
252
+ result
253
+ };
254
+ get.setSelfSync(state);
255
+ } else {
256
+ const resolve = state.resolve;
257
+ state = {
258
+ _tag: "Resolved",
259
+ result
260
+ };
261
+ get.setSelfSync(state);
262
+ resolve();
263
+ }
264
+ }
265
+ }, {
266
+ immediate: true
267
+ });
268
+ return state;
269
+ });
270
+ suspenseRxMap.set(rx, resultRx);
271
+ return resultRx;
272
+ }
233
273
  /**
234
274
  * @since 1.0.0
235
275
  * @category hooks
236
276
  */
237
277
  const useRxSuspense = (rx, options) => {
238
278
  const registry = React.useContext(RegistryContext);
239
- const resultRx = React.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
240
- const result = useStore(registry, resultRx);
279
+ const promiseRx = React.useMemo(() => suspenseRx(registry, rx, options?.suspendOnWaiting ?? false), [registry, rx, options?.suspendOnWaiting]);
280
+ const result = useRxValueRaw(registry, promiseRx);
241
281
  if (result._tag === "Suspended") {
242
- if (!suspenseMounts.has(resultRx)) {
243
- suspenseMounts.add(resultRx);
244
- const unmount = registry.mount(resultRx);
245
- result.promise.then(function () {
246
- setTimeout(function () {
247
- unmount();
248
- suspenseMounts.delete(resultRx);
249
- }, 1000);
250
- });
251
- }
252
282
  throw result.promise;
253
283
  }
254
- return result.value;
284
+ return result.result;
255
285
  };
256
286
  /**
257
287
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","_Registry","exports","Result","_Result","Rx","_Rx","Cause","_GlobalValue","React","Scheduler","_RxRef","RxRef","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","storeRegistry","globalValue","makeStore","registry","rx","stores","store","newStore","subscribe","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","rxB","useMemo","map","mountRx","useEffect","mount","setRx","useCallback","value","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","suspenseRx","family","readable","result","_tag","promise","addFinalizer","suspenseRxWaiting","waiting","suspenseMounts","useRxSuspense","options","resultRx","suspendOnWaiting","unmount","then","setTimeout","useRxSuspenseSuccess","squash","cause","useRxSubscribe","immediate","useRxRef","ref","setValue","useState","useRxRefProp","prop"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Registry","_interopRequireWildcard","require","_Registry","exports","Result","_Result","Rx","_Rx","Cause","_Function","_GlobalValue","React","Scheduler","_RxRef","RxRef","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","identityReducer","prev","next","is","useRxValueRaw","registry","rx","state","dispatch","useReducer","_","useEffect","subscribe","immediate","useRxValue","useContext","rxB","useMemo","map","mountRx","mount","setRx","useCallback","value","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","makeSuspended","promise","_resolve","_tag","suspenseRxMap","globalValue","suspenseRx","suspendOnWaiting","unmount","timeout","performMount","clearTimeout","resultRx","constVoid","performUnmount","readable","result","waiting","setSelfSync","setTimeout","useRxSuspense","options","promiseRx","useRxSuspenseSuccess","squash","cause","useRxSubscribe","useRxRef","ref","setValue","useState","useRxRefProp","prop"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -5,6 +5,7 @@ import * as Registry from "@effect-rx/rx/Registry";
5
5
  import * as Result from "@effect-rx/rx/Result";
6
6
  import * as Rx from "@effect-rx/rx/Rx";
7
7
  import * as Cause from "effect/Cause";
8
+ import { constVoid } from "effect/Function";
8
9
  import { globalValue } from "effect/GlobalValue";
9
10
  import * as React from "react";
10
11
  import * as Scheduler from "scheduler";
@@ -38,27 +39,22 @@ function scheduleTask(f) {
38
39
  export const RegistryContext = /*#__PURE__*/React.createContext( /*#__PURE__*/Registry.make({
39
40
  scheduleTask
40
41
  }));
41
- const storeRegistry = /*#__PURE__*/globalValue("@effect-rx/rx-react/storeRegistry", () => new WeakMap());
42
- function makeStore(registry, rx) {
43
- const stores = storeRegistry.get(registry) ?? storeRegistry.set(registry, new WeakMap()).get(registry);
44
- const store = stores.get(rx);
45
- if (store) {
46
- return store;
42
+ function identityReducer(prev, next) {
43
+ if (Object.is(prev, next)) {
44
+ return prev;
47
45
  }
48
- const newStore = {
49
- subscribe(f) {
50
- return registry.subscribe(rx, f);
51
- },
52
- snapshot() {
53
- return registry.get(rx);
54
- }
55
- };
56
- stores.set(rx, newStore);
57
- return newStore;
46
+ return next;
58
47
  }
59
- function useStore(registry, rx) {
60
- const store = makeStore(registry, rx);
61
- return React.useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot);
48
+ function useRxValueRaw(registry, rx) {
49
+ const [state, dispatch] = React.useReducer(identityReducer, void 0, function (_) {
50
+ return registry.get(rx);
51
+ });
52
+ React.useEffect(function () {
53
+ return registry.subscribe(rx, dispatch, {
54
+ immediate: true
55
+ });
56
+ }, [registry, rx]);
57
+ return state;
62
58
  }
63
59
  /**
64
60
  * @since 1.0.0
@@ -68,9 +64,9 @@ export const useRxValue = (rx, f) => {
68
64
  const registry = React.useContext(RegistryContext);
69
65
  if (f) {
70
66
  const rxB = React.useMemo(() => Rx.map(rx, f), [rx, f]);
71
- return useStore(registry, rxB);
67
+ return useRxValueRaw(registry, rxB);
72
68
  }
73
- return useStore(registry, rx);
69
+ return useRxValueRaw(registry, rx);
74
70
  };
75
71
  function mountRx(registry, rx) {
76
72
  React.useEffect(() => registry.mount(rx), [rx, registry]);
@@ -155,57 +151,91 @@ export const useRxRefresh = rx => {
155
151
  */
156
152
  export const useRx = rx => {
157
153
  const registry = React.useContext(RegistryContext);
158
- return [useStore(registry, rx), setRx(registry, rx)];
154
+ return [useRxValueRaw(registry, rx), setRx(registry, rx)];
159
155
  };
160
- const suspenseRx = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
161
- const result = get(rx);
162
- if (result._tag === "Initial") {
163
- return {
164
- _tag: "Suspended",
165
- promise: new Promise(resolve => get.addFinalizer(resolve))
166
- };
167
- }
156
+ function makeSuspended(rx) {
157
+ let resolve;
158
+ const promise = new Promise(_resolve => {
159
+ resolve = _resolve;
160
+ });
161
+ promise.rx = rx;
168
162
  return {
169
- _tag: "Value",
170
- value: result
163
+ _tag: "Suspended",
164
+ promise,
165
+ resolve: resolve
171
166
  };
172
- }));
173
- const suspenseRxWaiting = /*#__PURE__*/Rx.family(rx => Rx.readable(get => {
174
- const result = get(rx);
175
- if (result.waiting || result._tag === "Initial") {
176
- return {
177
- _tag: "Suspended",
178
- promise: new Promise(resolve => get.addFinalizer(resolve))
179
- };
167
+ }
168
+ const suspenseRxMap = /*#__PURE__*/globalValue("@effect-rx/rx-react/suspenseMounts", () => new WeakMap());
169
+ function suspenseRx(registry, rx, suspendOnWaiting) {
170
+ if (suspenseRxMap.has(rx)) {
171
+ return suspenseRxMap.get(rx);
180
172
  }
181
- return {
182
- _tag: "Value",
183
- value: result
184
- };
185
- }));
186
- const suspenseMounts = /*#__PURE__*/globalValue("@effect-rx/rx-react/suspenseMounts", () => new Set());
173
+ let unmount;
174
+ let timeout;
175
+ function performMount() {
176
+ if (timeout !== undefined) {
177
+ clearTimeout(timeout);
178
+ }
179
+ unmount = registry.subscribe(resultRx, constVoid);
180
+ }
181
+ function performUnmount() {
182
+ timeout = undefined;
183
+ if (unmount !== undefined) {
184
+ unmount();
185
+ unmount = undefined;
186
+ }
187
+ }
188
+ const resultRx = Rx.readable(function (get) {
189
+ let state = makeSuspended(rx);
190
+ get.subscribe(rx, function (result) {
191
+ if (result._tag === "Initial" || suspendOnWaiting && result.waiting) {
192
+ if (state._tag === "Resolved") {
193
+ state = makeSuspended(rx);
194
+ get.setSelfSync(state);
195
+ }
196
+ if (unmount === undefined) {
197
+ performMount();
198
+ }
199
+ } else {
200
+ if (unmount !== undefined && timeout === undefined) {
201
+ timeout = setTimeout(performUnmount, 1000);
202
+ }
203
+ if (state._tag === "Resolved") {
204
+ state = {
205
+ _tag: "Resolved",
206
+ result
207
+ };
208
+ get.setSelfSync(state);
209
+ } else {
210
+ const resolve = state.resolve;
211
+ state = {
212
+ _tag: "Resolved",
213
+ result
214
+ };
215
+ get.setSelfSync(state);
216
+ resolve();
217
+ }
218
+ }
219
+ }, {
220
+ immediate: true
221
+ });
222
+ return state;
223
+ });
224
+ suspenseRxMap.set(rx, resultRx);
225
+ return resultRx;
226
+ }
187
227
  /**
188
228
  * @since 1.0.0
189
229
  * @category hooks
190
230
  */
191
231
  export const useRxSuspense = (rx, options) => {
192
232
  const registry = React.useContext(RegistryContext);
193
- const resultRx = React.useMemo(() => options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx), [options?.suspendOnWaiting, rx]);
194
- const result = useStore(registry, resultRx);
233
+ const promiseRx = React.useMemo(() => suspenseRx(registry, rx, options?.suspendOnWaiting ?? false), [registry, rx, options?.suspendOnWaiting]);
234
+ const result = useRxValueRaw(registry, promiseRx);
195
235
  if (result._tag === "Suspended") {
196
- if (!suspenseMounts.has(resultRx)) {
197
- suspenseMounts.add(resultRx);
198
- const unmount = registry.mount(resultRx);
199
- result.promise.then(function () {
200
- setTimeout(function () {
201
- unmount();
202
- suspenseMounts.delete(resultRx);
203
- }, 1000);
204
- });
205
- }
206
236
  throw result.promise;
207
237
  }
208
- return result.value;
238
+ return result.result;
209
239
  };
210
240
  /**
211
241
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Registry","Result","Rx","Cause","globalValue","React","Scheduler","RxRef","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","storeRegistry","WeakMap","makeStore","registry","rx","stores","get","set","store","newStore","subscribe","snapshot","useStore","useSyncExternalStore","useRxValue","useContext","rxB","useMemo","map","mountRx","useEffect","mount","setRx","useCallback","value","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","suspenseRx","family","readable","result","_tag","promise","addFinalizer","suspenseRxWaiting","waiting","suspenseMounts","useRxSuspense","options","resultRx","suspendOnWaiting","has","unmount","then","setTimeout","useRxSuspenseSuccess","squash","cause","useRxSubscribe","immediate","useRxRef","ref","setValue","useState","useRxRefProp","prop"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Registry","Result","Rx","Cause","constVoid","globalValue","React","Scheduler","RxRef","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","identityReducer","prev","next","Object","is","useRxValueRaw","registry","rx","state","dispatch","useReducer","_","get","useEffect","subscribe","immediate","useRxValue","useContext","rxB","useMemo","map","mountRx","mount","setRx","useCallback","value","set","setRxPromise","cancelRef","useRef","undefined","current","Set","forEach","cancel","clear","Promise","resolve","isSuccess","isFailure","toExit","delete","add","useRxMount","useRxSet","useRxSetPromise","useRxRefresh","refresh","useRx","makeSuspended","promise","_resolve","_tag","suspenseRxMap","WeakMap","suspenseRx","suspendOnWaiting","has","unmount","timeout","performMount","clearTimeout","resultRx","performUnmount","readable","result","waiting","setSelfSync","setTimeout","useRxSuspense","options","promiseRx","useRxSuspenseSuccess","squash","cause","useRxSubscribe","useRxRef","ref","setValue","useState","useRxRefProp","prop"],"sources":["../../src/index.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.28.10",
3
+ "version": "0.28.12",
4
4
  "description": "Reactive toolkit for Effect",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/index.ts CHANGED
@@ -7,6 +7,7 @@ import * as Rx from "@effect-rx/rx/Rx"
7
7
  import type * as RxRef from "@effect-rx/rx/RxRef"
8
8
  import * as Cause from "effect/Cause"
9
9
  import type * as Exit from "effect/Exit"
10
+ import { constVoid } from "effect/Function"
10
11
  import { globalValue } from "effect/GlobalValue"
11
12
  import * as React from "react"
12
13
  import * as Scheduler from "scheduler"
@@ -44,37 +45,21 @@ export const RegistryContext = React.createContext<Registry.Registry>(Registry.m
44
45
  scheduleTask
45
46
  }))
46
47
 
47
- interface RxStore<A> {
48
- readonly subscribe: (f: () => void) => () => void
49
- readonly snapshot: () => A
50
- }
51
-
52
- const storeRegistry = globalValue(
53
- "@effect-rx/rx-react/storeRegistry",
54
- () => new WeakMap<Registry.Registry, WeakMap<Rx.Rx<any>, RxStore<any>>>()
55
- )
56
-
57
- function makeStore<A>(registry: Registry.Registry, rx: Rx.Rx<A>): RxStore<A> {
58
- const stores = storeRegistry.get(registry) ?? storeRegistry.set(registry, new WeakMap()).get(registry)!
59
- const store = stores.get(rx)
60
- if (store) {
61
- return store
48
+ function identityReducer<A>(prev: A, next: A) {
49
+ if (Object.is(prev, next)) {
50
+ return prev
62
51
  }
63
- const newStore: RxStore<A> = {
64
- subscribe(f) {
65
- return registry.subscribe(rx, f)
66
- },
67
- snapshot() {
68
- return registry.get(rx)
69
- }
70
- }
71
- stores.set(rx, newStore)
72
- return newStore
52
+ return next
73
53
  }
74
54
 
75
- function useStore<A>(registry: Registry.Registry, rx: Rx.Rx<A>): A {
76
- const store = makeStore(registry, rx)
77
- return React.useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot)
55
+ function useRxValueRaw<A>(registry: Registry.Registry, rx: Rx.Rx<A>): A {
56
+ const [state, dispatch] = React.useReducer(identityReducer<A>, void 0, function(_) {
57
+ return registry.get(rx)
58
+ })
59
+ React.useEffect(function() {
60
+ return registry.subscribe(rx, dispatch, { immediate: true })
61
+ }, [registry, rx])
62
+ return state
78
63
  }
79
64
 
80
65
  /**
@@ -88,9 +73,9 @@ export const useRxValue: {
88
73
  const registry = React.useContext(RegistryContext)
89
74
  if (f) {
90
75
  const rxB = React.useMemo(() => Rx.map(rx, f), [rx, f])
91
- return useStore(registry, rxB)
76
+ return useRxValueRaw(registry, rxB)
92
77
  }
93
- return useStore(registry, rx)
78
+ return useRxValueRaw(registry, rx)
94
79
  }
95
80
 
96
81
  function mountRx<A>(registry: Registry.Registry, rx: Rx.Rx<A>): void {
@@ -193,48 +178,94 @@ export const useRx = <R, W>(
193
178
  ): readonly [value: R, setOrUpdate: (_: W | ((_: R) => W)) => void] => {
194
179
  const registry = React.useContext(RegistryContext)
195
180
  return [
196
- useStore(registry, rx),
181
+ useRxValueRaw(registry, rx),
197
182
  setRx(registry, rx)
198
183
  ] as const
199
184
  }
200
185
 
201
- type SuspenseResult<A, E> =
202
- | {
203
- readonly _tag: "Suspended"
204
- readonly promise: Promise<void>
205
- }
206
- | {
207
- readonly _tag: "Value"
208
- readonly value: Result.Success<A, E> | Result.Failure<A, E>
209
- }
210
-
211
- const suspenseRx = Rx.family((rx: Rx.Rx<Result.Result<any, any>>) =>
212
- Rx.readable((get): SuspenseResult<any, any> => {
213
- const result = get(rx)
214
- if (result._tag === "Initial") {
215
- return {
216
- _tag: "Suspended",
217
- promise: new Promise<void>((resolve) => get.addFinalizer(resolve))
218
- } as const
219
- }
220
- return { _tag: "Value", value: result } as const
186
+ type SuspenseResult<A, E> = {
187
+ readonly _tag: "Suspended"
188
+ readonly promise: Promise<void>
189
+ readonly resolve: () => void
190
+ } | {
191
+ readonly _tag: "Resolved"
192
+ readonly result: Result.Success<A, E> | Result.Failure<A, E>
193
+ }
194
+ function makeSuspended(rx: Rx.Rx<any>): {
195
+ readonly _tag: "Suspended"
196
+ readonly promise: Promise<void>
197
+ readonly resolve: () => void
198
+ } {
199
+ let resolve: () => void
200
+ const promise = new Promise<void>((_resolve) => {
201
+ resolve = _resolve
221
202
  })
203
+ ;(promise as any).rx = rx
204
+ return {
205
+ _tag: "Suspended",
206
+ promise,
207
+ resolve: resolve!
208
+ }
209
+ }
210
+ const suspenseRxMap = globalValue(
211
+ "@effect-rx/rx-react/suspenseMounts",
212
+ () => new WeakMap<Rx.Rx<any>, Rx.Rx<SuspenseResult<any, any>>>()
222
213
  )
223
214
 
224
- const suspenseRxWaiting = Rx.family((rx: Rx.Rx<Result.Result<any, any>>) =>
225
- Rx.readable((get): SuspenseResult<any, any> => {
226
- const result = get(rx)
227
- if (result.waiting || result._tag === "Initial") {
228
- return {
229
- _tag: "Suspended",
230
- promise: new Promise<void>((resolve) => get.addFinalizer(resolve))
231
- } as const
215
+ function suspenseRx<A, E>(
216
+ registry: Registry.Registry,
217
+ rx: Rx.Rx<Result.Result<A, E>>,
218
+ suspendOnWaiting: boolean
219
+ ): Rx.Rx<SuspenseResult<A, E>> {
220
+ if (suspenseRxMap.has(rx)) {
221
+ return suspenseRxMap.get(rx)!
222
+ }
223
+ let unmount: (() => void) | undefined
224
+ let timeout: number | undefined
225
+ function performMount() {
226
+ if (timeout !== undefined) {
227
+ clearTimeout(timeout)
232
228
  }
233
- return { _tag: "Value", value: result } as const
229
+ unmount = registry.subscribe(resultRx, constVoid)
230
+ }
231
+ function performUnmount() {
232
+ timeout = undefined
233
+ if (unmount !== undefined) {
234
+ unmount()
235
+ unmount = undefined
236
+ }
237
+ }
238
+ const resultRx = Rx.readable<SuspenseResult<A, E>>(function(get) {
239
+ let state: SuspenseResult<A, E> = makeSuspended(rx)
240
+ get.subscribe(rx, function(result) {
241
+ if (result._tag === "Initial" || (suspendOnWaiting && result.waiting)) {
242
+ if (state._tag === "Resolved") {
243
+ state = makeSuspended(rx)
244
+ get.setSelfSync(state)
245
+ }
246
+ if (unmount === undefined) {
247
+ performMount()
248
+ }
249
+ } else {
250
+ if (unmount !== undefined && timeout === undefined) {
251
+ timeout = setTimeout(performUnmount, 1000)
252
+ }
253
+ if (state._tag === "Resolved") {
254
+ state = { _tag: "Resolved", result }
255
+ get.setSelfSync(state)
256
+ } else {
257
+ const resolve = state.resolve
258
+ state = { _tag: "Resolved", result }
259
+ get.setSelfSync(state)
260
+ resolve()
261
+ }
262
+ }
263
+ }, { immediate: true })
264
+ return state
234
265
  })
235
- )
236
-
237
- const suspenseMounts = globalValue("@effect-rx/rx-react/suspenseMounts", () => new Set<Rx.Rx<any>>())
266
+ suspenseRxMap.set(rx, resultRx)
267
+ return resultRx
268
+ }
238
269
 
239
270
  /**
240
271
  * @since 1.0.0
@@ -245,26 +276,16 @@ export const useRxSuspense = <A, E>(
245
276
  options?: { readonly suspendOnWaiting?: boolean }
246
277
  ): Result.Success<A, E> | Result.Failure<A, E> => {
247
278
  const registry = React.useContext(RegistryContext)
248
- const resultRx = React.useMemo(
249
- () => (options?.suspendOnWaiting ? suspenseRxWaiting(rx) : suspenseRx(rx)),
250
- [options?.suspendOnWaiting, rx]
251
- )
252
- const result = useStore(registry, resultRx)
279
+ const promiseRx = React.useMemo(() => suspenseRx(registry, rx, options?.suspendOnWaiting ?? false), [
280
+ registry,
281
+ rx,
282
+ options?.suspendOnWaiting
283
+ ])
284
+ const result = useRxValueRaw(registry, promiseRx)
253
285
  if (result._tag === "Suspended") {
254
- if (!suspenseMounts.has(resultRx)) {
255
- suspenseMounts.add(resultRx)
256
- const unmount = registry.mount(resultRx)
257
- result.promise.then(function() {
258
- setTimeout(function() {
259
- unmount()
260
- suspenseMounts.delete(resultRx)
261
- }, 1000)
262
- })
263
- }
264
286
  throw result.promise
265
287
  }
266
-
267
- return result.value
288
+ return result.result
268
289
  }
269
290
 
270
291
  /**