rexfect 0.0.7 → 0.2.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/async/abortable.d.ts +44 -0
- package/dist/async/abortable.d.ts.map +1 -1
- package/dist/async/abortable.js +44 -7
- package/dist/async/abortable.js.map +1 -1
- package/dist/async/index.d.ts +1 -1
- package/dist/async/index.d.ts.map +1 -1
- package/dist/async/index.js +1 -1
- package/dist/async/index.js.map +1 -1
- package/dist/async/wrappers.d.ts +311 -0
- package/dist/async/wrappers.d.ts.map +1 -0
- package/dist/async/wrappers.js +542 -0
- package/dist/async/wrappers.js.map +1 -0
- package/dist/async/wrappers.test.d.ts +2 -0
- package/dist/async/wrappers.test.d.ts.map +1 -0
- package/dist/async/wrappers.test.js +649 -0
- package/dist/async/wrappers.test.js.map +1 -0
- package/dist/atom.d.ts +5 -0
- package/dist/atom.d.ts.map +1 -1
- package/dist/atom.js +11 -3
- package/dist/atom.js.map +1 -1
- package/dist/batch.js +1 -1
- package/dist/batch.js.map +1 -1
- package/dist/effect.d.ts.map +1 -1
- package/dist/effect.js +3 -2
- package/dist/effect.js.map +1 -1
- package/dist/emitter.d.ts +2 -2
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +20 -23
- package/dist/emitter.js.map +1 -1
- package/dist/emitter.test.js +11 -11
- package/dist/emitter.test.js.map +1 -1
- package/dist/pick.js +3 -2
- package/dist/pick.js.map +1 -1
- package/dist/react/useRx.d.ts.map +1 -1
- package/dist/react/useRx.js +75 -43
- package/dist/react/useRx.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/event.d.ts +0 -18
- package/dist/event.d.ts.map +0 -1
- package/dist/event.js +0 -166
- package/dist/event.js.map +0 -1
- package/dist/event.test.d.ts +0 -2
- package/dist/event.test.d.ts.map +0 -1
- package/dist/event.test.js +0 -167
- package/dist/event.test.js.map +0 -1
- package/dist/utils.d.ts +0 -7
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -7
- package/dist/utils.js.map +0 -1
package/dist/react/useRx.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useEffect, useRef, useReducer } from "react";
|
|
2
2
|
import { withHooks } from "../hooks";
|
|
3
3
|
import { untrack } from "../untrack";
|
|
4
|
+
import { emitter } from "../emitter";
|
|
4
5
|
/**
|
|
5
6
|
* React hook for reactive computations.
|
|
6
7
|
*
|
|
@@ -19,58 +20,93 @@ export function useRx(fn) {
|
|
|
19
20
|
if (controllerRef.current === null) {
|
|
20
21
|
controllerRef.current = new UseRxController(rerender);
|
|
21
22
|
}
|
|
22
|
-
//
|
|
23
|
-
// Cleanup: unsubscribe using signals captured in closure
|
|
23
|
+
// useEffect runs commit() after render, returns cleanup function
|
|
24
24
|
useEffect(() => controllerRef.current.commit());
|
|
25
25
|
return controllerRef.current.render(fn);
|
|
26
26
|
}
|
|
27
27
|
class UseRxController {
|
|
28
28
|
rerender;
|
|
29
|
-
|
|
30
|
-
pendingSignals =
|
|
29
|
+
/** Signals tracked during render phase (used for change detection before commit) */
|
|
30
|
+
pendingSignals = [];
|
|
31
|
+
/** Error captured during commit to rethrow in next render */
|
|
31
32
|
error;
|
|
33
|
+
/** The selector function passed to useRx */
|
|
34
|
+
_fn = () => {
|
|
35
|
+
throw new Error("useRx: fn is not set");
|
|
36
|
+
};
|
|
32
37
|
constructor(rerender) {
|
|
33
38
|
this.rerender = rerender;
|
|
34
39
|
}
|
|
35
40
|
/**
|
|
36
|
-
*
|
|
41
|
+
* Tracks signals by running the selector function.
|
|
42
|
+
* Collects tracked signals and their values, plus cleanup functions from pick().
|
|
43
|
+
*
|
|
44
|
+
* @returns tracked signals, result, and cleanup function
|
|
45
|
+
*/
|
|
46
|
+
_track() {
|
|
47
|
+
const pendingSignals = new Map();
|
|
48
|
+
const onCleanupEmitter = emitter();
|
|
49
|
+
let result;
|
|
50
|
+
try {
|
|
51
|
+
result = withHooks({
|
|
52
|
+
track: (signal, onCleanup) => {
|
|
53
|
+
onCleanup && onCleanupEmitter.on(onCleanup);
|
|
54
|
+
pendingSignals.set(signal, {
|
|
55
|
+
signal,
|
|
56
|
+
value: untrack(signal),
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
scheduleCleanup: onCleanupEmitter.on,
|
|
60
|
+
}, () => this._fn());
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
// On error, cleanup any resources created during tracking
|
|
64
|
+
pendingSignals.clear();
|
|
65
|
+
onCleanupEmitter.emitAndClear();
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
result,
|
|
70
|
+
tracked: Array.from(pendingSignals.values()),
|
|
71
|
+
cleanup: onCleanupEmitter.emitAndClear,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Render phase: Run selector, track signals, capture values for change detection.
|
|
76
|
+
*
|
|
77
|
+
* In StrictMode, render may be called multiple times before commit.
|
|
78
|
+
* We cleanup immediately after tracking to avoid abandoned resources
|
|
79
|
+
* if React discards this render.
|
|
37
80
|
*/
|
|
38
81
|
render(fn) {
|
|
39
|
-
// Rethrow any error
|
|
82
|
+
// Rethrow any error captured during previous commit
|
|
40
83
|
if (this.error !== undefined) {
|
|
41
84
|
const error = this.error;
|
|
42
85
|
this.error = undefined;
|
|
43
86
|
throw error;
|
|
44
87
|
}
|
|
45
|
-
|
|
46
|
-
this.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
value: untrack(() => signal()),
|
|
53
|
-
onCleanup,
|
|
54
|
-
});
|
|
55
|
-
},
|
|
56
|
-
}, fn);
|
|
88
|
+
this.pendingSignals.length = 0;
|
|
89
|
+
this._fn = fn;
|
|
90
|
+
const { result, tracked, cleanup } = this._track();
|
|
91
|
+
// Store tracked signals for change detection in commit phase
|
|
92
|
+
this.pendingSignals = tracked;
|
|
93
|
+
// Cleanup render-phase resources (StrictMode safe - no abandoned resources)
|
|
94
|
+
cleanup();
|
|
57
95
|
return result;
|
|
58
96
|
}
|
|
59
97
|
/**
|
|
60
|
-
* Commit phase (useEffect):
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
98
|
+
* Commit phase (useEffect): Subscribe to signals and setup cleanup.
|
|
99
|
+
*
|
|
100
|
+
* 1. Check if signal values changed since render (concurrent mode safety)
|
|
101
|
+
* 2. If changed, trigger re-render to get fresh values
|
|
102
|
+
* 3. Re-track signals to create subscriptions (separate from render tracking)
|
|
103
|
+
* 4. Subscribe to all tracked signals
|
|
104
|
+
* 5. Return cleanup function for unmount/re-commit
|
|
65
105
|
*/
|
|
66
106
|
commit() {
|
|
67
|
-
//
|
|
68
|
-
// Don't clear pendingSignals - let render() clear it
|
|
69
|
-
// This ensures StrictMode re-runs have access to the same signals
|
|
70
|
-
const trackedSignals = new Map(this.pendingSignals);
|
|
71
|
-
// Check if any signal value changed since render
|
|
107
|
+
// Check if any signal value changed between render and commit
|
|
72
108
|
let changed = false;
|
|
73
|
-
for (const entry of
|
|
109
|
+
for (const entry of this.pendingSignals) {
|
|
74
110
|
try {
|
|
75
111
|
const currentValue = untrack(() => entry.signal());
|
|
76
112
|
if (!Object.is(currentValue, entry.value)) {
|
|
@@ -84,26 +120,22 @@ class UseRxController {
|
|
|
84
120
|
return () => { };
|
|
85
121
|
}
|
|
86
122
|
}
|
|
87
|
-
// Re-render if values changed
|
|
123
|
+
// Re-render if values changed (handles concurrent mode race conditions)
|
|
88
124
|
if (changed) {
|
|
89
125
|
this.rerender();
|
|
90
126
|
}
|
|
127
|
+
// Re-track to create commit-phase resources (these persist until cleanup)
|
|
128
|
+
const { tracked, cleanup } = this._track();
|
|
91
129
|
// Subscribe to all tracked signals
|
|
92
|
-
const
|
|
93
|
-
for (const entry of
|
|
94
|
-
|
|
95
|
-
this.rerender();
|
|
96
|
-
});
|
|
97
|
-
unsubscribes.push(unsub);
|
|
130
|
+
const onUnsubscribeEmitter = emitter();
|
|
131
|
+
for (const entry of tracked) {
|
|
132
|
+
onUnsubscribeEmitter.on(entry.signal.on(this.rerender));
|
|
98
133
|
}
|
|
99
|
-
// Cleanup: unsubscribe
|
|
134
|
+
// Cleanup: unsubscribe and dispose commit-phase resources
|
|
100
135
|
return () => {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
for (const entry of trackedSignals.values()) {
|
|
105
|
-
entry.onCleanup?.();
|
|
106
|
-
}
|
|
136
|
+
onUnsubscribeEmitter.emitAndClear();
|
|
137
|
+
tracked.length = 0;
|
|
138
|
+
cleanup();
|
|
107
139
|
};
|
|
108
140
|
}
|
|
109
141
|
}
|
package/dist/react/useRx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRx.js","sourceRoot":"","sources":["../../src/react/useRx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAI,EAAW;IAClC,MAAM,aAAa,GAAG,MAAM,CAA4B,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACnC,aAAa,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"useRx.js","sourceRoot":"","sources":["../../src/react/useRx.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -48,7 +48,7 @@ export type Signal<T = any> = {
|
|
|
48
48
|
* setCount(c => c + 1); // Functional update (if supported)
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
|
-
export type Setter<T = any> = (
|
|
51
|
+
export type Setter<T = any> = (valueOrReducer: T | ((prev: T) => T)) => void;
|
|
52
52
|
/**
|
|
53
53
|
* A getter function that returns a value.
|
|
54
54
|
* Used for read-only access patterns.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI;IAC5B;;;;OAIG;IACH,IAAI,CAAC,CAAC;IAEN;;;;OAIG;IACH,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,YAAY,CAAC;CAChD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/event.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { EventOptions, Event } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Creates an event dispatcher for fire-and-forget notifications.
|
|
4
|
-
*
|
|
5
|
-
* @param options - Optional configuration
|
|
6
|
-
* @returns An Event object
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* const onClick = event<MouseEvent>();
|
|
10
|
-
*
|
|
11
|
-
* onClick.on((e, ctx) => {
|
|
12
|
-
* console.log("Clicked at:", e.clientX, e.clientY);
|
|
13
|
-
* });
|
|
14
|
-
*
|
|
15
|
-
* onClick(mouseEvent); // dispatch
|
|
16
|
-
*/
|
|
17
|
-
export declare function event<T = void>(options?: EventOptions): Event<T>;
|
|
18
|
-
//# sourceMappingURL=event.d.ts.map
|
package/dist/event.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EAEZ,KAAK,EAEN,MAAM,SAAS,CAAC;AAUjB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,GAAE,YAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAwGpE"}
|
package/dist/event.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { defer } from "./defer";
|
|
2
|
-
import { emitter } from "./emitter";
|
|
3
|
-
import { isPromiseLike } from "./isPromiseLike";
|
|
4
|
-
const noop = () => { };
|
|
5
|
-
/**
|
|
6
|
-
* Creates an event dispatcher for fire-and-forget notifications.
|
|
7
|
-
*
|
|
8
|
-
* @param options - Optional configuration
|
|
9
|
-
* @returns An Event object
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* const onClick = event<MouseEvent>();
|
|
13
|
-
*
|
|
14
|
-
* onClick.on((e, ctx) => {
|
|
15
|
-
* console.log("Clicked at:", e.clientX, e.clientY);
|
|
16
|
-
* });
|
|
17
|
-
*
|
|
18
|
-
* onClick(mouseEvent); // dispatch
|
|
19
|
-
*/
|
|
20
|
-
export function event(options = {}) {
|
|
21
|
-
const listeners = new Set();
|
|
22
|
-
let isSealed = false;
|
|
23
|
-
let lastDispatch;
|
|
24
|
-
let nextDispatch;
|
|
25
|
-
const next = () => {
|
|
26
|
-
if (isSealed) {
|
|
27
|
-
if (lastDispatch) {
|
|
28
|
-
return lastDispatch.promise;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
nextDispatch = defer();
|
|
32
|
-
return nextDispatch.promise;
|
|
33
|
-
};
|
|
34
|
-
const fire = (payload, entry) => {
|
|
35
|
-
const controller = new AbortController();
|
|
36
|
-
const onError = emitter();
|
|
37
|
-
const ctx = createEventContext(controller, entry.prevController, () => entry.active);
|
|
38
|
-
entry.prevController = controller;
|
|
39
|
-
try {
|
|
40
|
-
const result = entry.fn(payload, ctx);
|
|
41
|
-
if (isPromiseLike(result)) {
|
|
42
|
-
result.then(undefined, (error) => {
|
|
43
|
-
onError.emitAndClear(error);
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (_error) {
|
|
48
|
-
onError.emitAndClear(_error);
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
const dispatch = (payload) => {
|
|
52
|
-
if (isSealed)
|
|
53
|
-
return; // no-op if sealed
|
|
54
|
-
nextDispatch?.resolve(payload);
|
|
55
|
-
lastDispatch = {
|
|
56
|
-
payload,
|
|
57
|
-
promise: nextDispatch?.promise ?? Promise.resolve(payload),
|
|
58
|
-
};
|
|
59
|
-
nextDispatch = undefined;
|
|
60
|
-
if (options.sealed) {
|
|
61
|
-
isSealed = true;
|
|
62
|
-
}
|
|
63
|
-
const copyListeners = [...listeners];
|
|
64
|
-
for (const entry of copyListeners) {
|
|
65
|
-
fire(payload, entry);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const eventObj = Object.assign(dispatch, {
|
|
69
|
-
sealed: () => isSealed,
|
|
70
|
-
fired: () => !!lastDispatch,
|
|
71
|
-
latest() {
|
|
72
|
-
if (lastDispatch) {
|
|
73
|
-
return lastDispatch.promise;
|
|
74
|
-
}
|
|
75
|
-
return next();
|
|
76
|
-
},
|
|
77
|
-
on(listener) {
|
|
78
|
-
const entry = {
|
|
79
|
-
fn: listener,
|
|
80
|
-
active: true,
|
|
81
|
-
prevController: null,
|
|
82
|
-
};
|
|
83
|
-
if (isSealed && lastDispatch) {
|
|
84
|
-
fire(lastDispatch.payload, entry);
|
|
85
|
-
return noop;
|
|
86
|
-
}
|
|
87
|
-
listeners.add(entry);
|
|
88
|
-
return () => {
|
|
89
|
-
if (!entry.active)
|
|
90
|
-
return;
|
|
91
|
-
entry.active = false;
|
|
92
|
-
listeners.delete(entry);
|
|
93
|
-
};
|
|
94
|
-
},
|
|
95
|
-
then(onFulfilled, onRejected) {
|
|
96
|
-
return next().then(onFulfilled, onRejected);
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
return eventObj;
|
|
100
|
-
}
|
|
101
|
-
function createEventContext(controller, prevController, active) {
|
|
102
|
-
const cleanups = [];
|
|
103
|
-
const errorHandlers = [];
|
|
104
|
-
const ctx = {
|
|
105
|
-
...createAbortableContext(controller),
|
|
106
|
-
active,
|
|
107
|
-
abortPrevious() {
|
|
108
|
-
prevController?.abort();
|
|
109
|
-
},
|
|
110
|
-
onCleanup(cleanup) {
|
|
111
|
-
cleanups.push(cleanup);
|
|
112
|
-
},
|
|
113
|
-
onError(handler) {
|
|
114
|
-
errorHandlers.push(handler);
|
|
115
|
-
},
|
|
116
|
-
use(plugin, ...args) {
|
|
117
|
-
return plugin(ctx, ...args);
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
return ctx;
|
|
121
|
-
}
|
|
122
|
-
function createAbortableContext(controller) {
|
|
123
|
-
const ctx = {
|
|
124
|
-
signal: controller.signal,
|
|
125
|
-
abort() {
|
|
126
|
-
controller.abort();
|
|
127
|
-
},
|
|
128
|
-
safe(promiseOrCallback) {
|
|
129
|
-
if (typeof promiseOrCallback === "function") {
|
|
130
|
-
return (...args) => {
|
|
131
|
-
if (!controller.signal.aborted) {
|
|
132
|
-
return promiseOrCallback(...args);
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
return new Promise((resolve, reject) => {
|
|
137
|
-
promiseOrCallback.then((value) => {
|
|
138
|
-
if (!controller.signal.aborted) {
|
|
139
|
-
resolve(value);
|
|
140
|
-
}
|
|
141
|
-
}, (error) => {
|
|
142
|
-
if (!controller.signal.aborted) {
|
|
143
|
-
reject(error);
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
},
|
|
148
|
-
fork() {
|
|
149
|
-
const childController = new AbortController();
|
|
150
|
-
const handler = () => {
|
|
151
|
-
controller.signal.removeEventListener("abort", handler);
|
|
152
|
-
childController.abort();
|
|
153
|
-
};
|
|
154
|
-
controller.signal.addEventListener("abort", handler);
|
|
155
|
-
return createAbortableContext(childController);
|
|
156
|
-
},
|
|
157
|
-
spawn() {
|
|
158
|
-
return createAbortableContext(new AbortController());
|
|
159
|
-
},
|
|
160
|
-
use(plugin, ...args) {
|
|
161
|
-
return plugin(ctx, ...args);
|
|
162
|
-
},
|
|
163
|
-
};
|
|
164
|
-
return ctx;
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=event.js.map
|
package/dist/event.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"}
|
package/dist/event.test.d.ts
DELETED
package/dist/event.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event.test.d.ts","sourceRoot":"","sources":["../src/event.test.ts"],"names":[],"mappings":""}
|
package/dist/event.test.js
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from "vitest";
|
|
2
|
-
import { event } from "./event";
|
|
3
|
-
describe("event", () => {
|
|
4
|
-
describe("dispatch", () => {
|
|
5
|
-
it("should dispatch event to listeners", () => {
|
|
6
|
-
const onClick = event();
|
|
7
|
-
const listener = vi.fn();
|
|
8
|
-
onClick.on(listener);
|
|
9
|
-
onClick(42);
|
|
10
|
-
expect(listener).toHaveBeenCalledWith(42, expect.any(Object));
|
|
11
|
-
});
|
|
12
|
-
it("should support void payload", () => {
|
|
13
|
-
const onReset = event();
|
|
14
|
-
const listener = vi.fn();
|
|
15
|
-
onReset.on(listener);
|
|
16
|
-
onReset();
|
|
17
|
-
expect(listener).toHaveBeenCalled();
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
describe("fired", () => {
|
|
21
|
-
it("should track if event has been fired", () => {
|
|
22
|
-
const onClick = event();
|
|
23
|
-
expect(onClick.fired()).toBe(false);
|
|
24
|
-
expect(!onClick.fired()).toBe(true); // use !fired() instead of notFired()
|
|
25
|
-
onClick(1);
|
|
26
|
-
expect(onClick.fired()).toBe(true);
|
|
27
|
-
expect(!onClick.fired()).toBe(false);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
describe("sealed", () => {
|
|
31
|
-
it("should auto-seal after first dispatch", () => {
|
|
32
|
-
const onInit = event({ sealed: true });
|
|
33
|
-
expect(onInit.sealed()).toBe(false);
|
|
34
|
-
onInit("first");
|
|
35
|
-
expect(onInit.sealed()).toBe(true);
|
|
36
|
-
});
|
|
37
|
-
it("should ignore subsequent dispatches when sealed", () => {
|
|
38
|
-
const onInit = event({ sealed: true });
|
|
39
|
-
const listener = vi.fn();
|
|
40
|
-
onInit.on(listener);
|
|
41
|
-
onInit("first");
|
|
42
|
-
onInit("second");
|
|
43
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
44
|
-
expect(listener).toHaveBeenCalledWith("first", expect.any(Object));
|
|
45
|
-
});
|
|
46
|
-
it("should call late listeners immediately with sealed value", () => {
|
|
47
|
-
const onInit = event({ sealed: true });
|
|
48
|
-
onInit("config");
|
|
49
|
-
const lateListener = vi.fn();
|
|
50
|
-
onInit.on(lateListener);
|
|
51
|
-
expect(lateListener).toHaveBeenCalledWith("config", expect.any(Object));
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
describe("latest", () => {
|
|
55
|
-
it("should resolve immediately if already dispatched", async () => {
|
|
56
|
-
const onData = event();
|
|
57
|
-
onData(42);
|
|
58
|
-
const result = await onData.latest();
|
|
59
|
-
expect(result).toBe(42);
|
|
60
|
-
});
|
|
61
|
-
it("should wait for dispatch if not fired", async () => {
|
|
62
|
-
const onData = event();
|
|
63
|
-
const promise = onData.latest();
|
|
64
|
-
// Dispatch after a delay
|
|
65
|
-
setTimeout(() => onData(100), 10);
|
|
66
|
-
const result = await promise;
|
|
67
|
-
expect(result).toBe(100);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
describe("thenable (await event)", () => {
|
|
71
|
-
it("should wait for next dispatch", async () => {
|
|
72
|
-
const onClick = event();
|
|
73
|
-
const promise = onClick.then((value) => value.toUpperCase());
|
|
74
|
-
setTimeout(() => onClick("hello"), 10);
|
|
75
|
-
const result = await promise;
|
|
76
|
-
expect(result).toBe("HELLO");
|
|
77
|
-
});
|
|
78
|
-
it("should resolve immediately if sealed", async () => {
|
|
79
|
-
const onInit = event({ sealed: true });
|
|
80
|
-
onInit("sealed-value");
|
|
81
|
-
const result = await onInit;
|
|
82
|
-
expect(result).toBe("sealed-value");
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
describe("on listener", () => {
|
|
86
|
-
it("should return unsubscribe function", () => {
|
|
87
|
-
const onClick = event();
|
|
88
|
-
const listener = vi.fn();
|
|
89
|
-
const unsubscribe = onClick.on(listener);
|
|
90
|
-
onClick(1);
|
|
91
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
92
|
-
unsubscribe();
|
|
93
|
-
onClick(2);
|
|
94
|
-
expect(listener).toHaveBeenCalledTimes(1); // not called again
|
|
95
|
-
});
|
|
96
|
-
it("should provide context with signal", () => {
|
|
97
|
-
const onClick = event();
|
|
98
|
-
onClick.on((_payload, ctx) => {
|
|
99
|
-
expect(ctx.signal).toBeInstanceOf(AbortSignal);
|
|
100
|
-
expect(ctx.signal.aborted).toBe(false);
|
|
101
|
-
});
|
|
102
|
-
onClick(1);
|
|
103
|
-
});
|
|
104
|
-
it("should support abortPrevious", async () => {
|
|
105
|
-
const onSearch = event();
|
|
106
|
-
const abortedSignals = [];
|
|
107
|
-
onSearch.on((_query, ctx) => {
|
|
108
|
-
ctx.abortPrevious();
|
|
109
|
-
abortedSignals.push(ctx.signal.aborted);
|
|
110
|
-
});
|
|
111
|
-
onSearch("first");
|
|
112
|
-
onSearch("second");
|
|
113
|
-
// First call's signal should be aborted by second call
|
|
114
|
-
// Note: This depends on implementation details
|
|
115
|
-
});
|
|
116
|
-
it("should support active() check", () => {
|
|
117
|
-
const onClick = event();
|
|
118
|
-
let isActive = true;
|
|
119
|
-
const unsubscribe = onClick.on((_, ctx) => {
|
|
120
|
-
isActive = ctx.active();
|
|
121
|
-
});
|
|
122
|
-
onClick(1);
|
|
123
|
-
expect(isActive).toBe(true);
|
|
124
|
-
unsubscribe();
|
|
125
|
-
// After unsubscribe, active() would return false
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
describe("context methods", () => {
|
|
129
|
-
it("should support safe() for promises", async () => {
|
|
130
|
-
const onFetch = event();
|
|
131
|
-
const results = [];
|
|
132
|
-
onFetch.on(async (url, ctx) => {
|
|
133
|
-
const result = await ctx.safe(Promise.resolve(url + "-fetched"));
|
|
134
|
-
results.push(result);
|
|
135
|
-
});
|
|
136
|
-
onFetch("test");
|
|
137
|
-
// Wait for async
|
|
138
|
-
await new Promise((r) => setTimeout(r, 10));
|
|
139
|
-
expect(results).toContain("test-fetched");
|
|
140
|
-
});
|
|
141
|
-
it("should support fork() for child contexts", () => {
|
|
142
|
-
const onClick = event();
|
|
143
|
-
onClick.on((_, ctx) => {
|
|
144
|
-
const child = ctx.fork();
|
|
145
|
-
expect(child.signal).toBeInstanceOf(AbortSignal);
|
|
146
|
-
expect(child.signal.aborted).toBe(false);
|
|
147
|
-
// Abort parent should abort child
|
|
148
|
-
ctx.abort();
|
|
149
|
-
expect(child.signal.aborted).toBe(true);
|
|
150
|
-
});
|
|
151
|
-
onClick(1);
|
|
152
|
-
});
|
|
153
|
-
it("should support spawn() for independent contexts", () => {
|
|
154
|
-
const onClick = event();
|
|
155
|
-
onClick.on((_, ctx) => {
|
|
156
|
-
const independent = ctx.spawn();
|
|
157
|
-
expect(independent.signal).toBeInstanceOf(AbortSignal);
|
|
158
|
-
expect(independent.signal.aborted).toBe(false);
|
|
159
|
-
// Abort parent should NOT abort spawned context
|
|
160
|
-
ctx.abort();
|
|
161
|
-
expect(independent.signal.aborted).toBe(false);
|
|
162
|
-
});
|
|
163
|
-
onClick(1);
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
//# sourceMappingURL=event.test.js.map
|
package/dist/event.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event.test.js","sourceRoot":"","sources":["../src/event.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
DELETED
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/utils.js
DELETED
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|