reactor-core-ts 2.1.6 → 3.2.2
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/README.md +927 -658
- package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.js +12 -0
- package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPrimitive.js +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPropertyKey.js +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/typeof.js +11 -0
- package/dist/context/context-view.d.ts +31 -0
- package/dist/context/context-view.d.ts.map +1 -0
- package/dist/context/context-view.js +58 -0
- package/dist/context/context-view.js.map +1 -0
- package/dist/context/context.d.ts +46 -0
- package/dist/context/context.d.ts.map +1 -0
- package/dist/context/context.js +125 -0
- package/dist/context/context.js.map +1 -0
- package/dist/context/types.d.ts +7 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/core/boolean-disposable.d.ts +19 -0
- package/dist/core/boolean-disposable.d.ts.map +1 -0
- package/dist/core/boolean-disposable.js +37 -0
- package/dist/core/boolean-disposable.js.map +1 -0
- package/dist/core/composite-disposable.d.ts +21 -0
- package/dist/core/composite-disposable.d.ts.map +1 -0
- package/dist/core/composite-disposable.js +64 -0
- package/dist/core/composite-disposable.js.map +1 -0
- package/dist/core/demand.d.ts +9 -0
- package/dist/core/demand.d.ts.map +1 -0
- package/dist/core/demand.js +21 -0
- package/dist/core/demand.js.map +1 -0
- package/dist/core/disposables.d.ts +12 -0
- package/dist/core/disposables.d.ts.map +1 -0
- package/dist/core/disposables.js +37 -0
- package/dist/core/disposables.js.map +1 -0
- package/dist/core/teardown.d.ts +4 -0
- package/dist/core/teardown.d.ts.map +1 -0
- package/dist/core/types.d.ts +14 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/errors/classes.d.ts +37 -0
- package/dist/errors/classes.d.ts.map +1 -0
- package/dist/errors/classes.js +53 -0
- package/dist/errors/classes.js.map +1 -0
- package/dist/errors/exceptions.d.ts +15 -0
- package/dist/errors/exceptions.d.ts.map +1 -0
- package/dist/errors/helpers.d.ts +9 -0
- package/dist/errors/helpers.d.ts.map +1 -0
- package/dist/errors/helpers.js +18 -0
- package/dist/errors/helpers.js.map +1 -0
- package/dist/index.d.ts +17 -2556
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -2
- package/dist/internal/abort.d.ts +5 -0
- package/dist/internal/abort.d.ts.map +1 -0
- package/dist/internal/abort.js +36 -0
- package/dist/internal/abort.js.map +1 -0
- package/dist/internal/async-queue.d.ts +48 -0
- package/dist/internal/async-queue.d.ts.map +1 -0
- package/dist/internal/async-queue.js +187 -0
- package/dist/internal/async-queue.js.map +1 -0
- package/dist/internal/iterable-terminal.d.ts +12 -0
- package/dist/internal/iterable-terminal.d.ts.map +1 -0
- package/dist/internal/iterable-terminal.js +49 -0
- package/dist/internal/iterable-terminal.js.map +1 -0
- package/dist/internal/iterable-transform.d.ts +24 -0
- package/dist/internal/iterable-transform.d.ts.map +1 -0
- package/dist/internal/iterable-transform.js +159 -0
- package/dist/internal/iterable-transform.js.map +1 -0
- package/dist/internal/iterable.d.ts +23 -0
- package/dist/internal/iterable.d.ts.map +1 -0
- package/dist/internal/iterable.js +81 -0
- package/dist/internal/iterable.js.map +1 -0
- package/dist/internal/microtask.d.ts +7 -0
- package/dist/internal/microtask.d.ts.map +1 -0
- package/dist/internal/microtask.js +19 -0
- package/dist/internal/microtask.js.map +1 -0
- package/dist/publisher/browser-sources.d.ts +15 -0
- package/dist/publisher/browser-sources.d.ts.map +1 -0
- package/dist/publisher/browser-sources.js +92 -0
- package/dist/publisher/browser-sources.js.map +1 -0
- package/dist/publisher/flux-entrypoint.d.ts +7 -0
- package/dist/publisher/flux-entrypoint.d.ts.map +1 -0
- package/dist/publisher/flux-entrypoint.js +11 -0
- package/dist/publisher/flux-entrypoint.js.map +1 -0
- package/dist/publisher/flux.d.ts +121 -0
- package/dist/publisher/flux.d.ts.map +1 -0
- package/dist/publisher/flux.js +767 -0
- package/dist/publisher/flux.js.map +1 -0
- package/dist/publisher/helpers.d.ts +19 -0
- package/dist/publisher/helpers.d.ts.map +1 -0
- package/dist/publisher/helpers.js +84 -0
- package/dist/publisher/helpers.js.map +1 -0
- package/dist/publisher/mono-entrypoint.d.ts +7 -0
- package/dist/publisher/mono-entrypoint.d.ts.map +1 -0
- package/dist/publisher/mono-entrypoint.js +11 -0
- package/dist/publisher/mono-entrypoint.js.map +1 -0
- package/dist/publisher/mono.d.ts +72 -0
- package/dist/publisher/mono.d.ts.map +1 -0
- package/dist/publisher/mono.js +373 -0
- package/dist/publisher/mono.js.map +1 -0
- package/dist/publisher/operators/aggregate.d.ts +35 -0
- package/dist/publisher/operators/aggregate.d.ts.map +1 -0
- package/dist/publisher/operators/aggregate.js +217 -0
- package/dist/publisher/operators/aggregate.js.map +1 -0
- package/dist/publisher/operators/compat/flux.d.ts +56 -0
- package/dist/publisher/operators/compat/flux.d.ts.map +1 -0
- package/dist/publisher/operators/compat/flux.js +156 -0
- package/dist/publisher/operators/compat/flux.js.map +1 -0
- package/dist/publisher/operators/compat/mono.d.ts +82 -0
- package/dist/publisher/operators/compat/mono.d.ts.map +1 -0
- package/dist/publisher/operators/compat/mono.js +125 -0
- package/dist/publisher/operators/compat/mono.js.map +1 -0
- package/dist/publisher/operators/coordination.d.ts +82 -0
- package/dist/publisher/operators/coordination.d.ts.map +1 -0
- package/dist/publisher/operators/coordination.js +345 -0
- package/dist/publisher/operators/coordination.js.map +1 -0
- package/dist/publisher/operators/error.d.ts +17 -0
- package/dist/publisher/operators/error.d.ts.map +1 -0
- package/dist/publisher/operators/error.js +48 -0
- package/dist/publisher/operators/error.js.map +1 -0
- package/dist/publisher/operators/flatten.d.ts +19 -0
- package/dist/publisher/operators/flatten.d.ts.map +1 -0
- package/dist/publisher/operators/flatten.js +127 -0
- package/dist/publisher/operators/flatten.js.map +1 -0
- package/dist/publisher/operators/lifecycle.d.ts +103 -0
- package/dist/publisher/operators/lifecycle.d.ts.map +1 -0
- package/dist/publisher/operators/lifecycle.js +263 -0
- package/dist/publisher/operators/lifecycle.js.map +1 -0
- package/dist/publisher/operators/lift.d.ts +42 -0
- package/dist/publisher/operators/lift.d.ts.map +1 -0
- package/dist/publisher/operators/lift.js +343 -0
- package/dist/publisher/operators/lift.js.map +1 -0
- package/dist/publisher/operators/mono-parity.d.ts +109 -0
- package/dist/publisher/operators/mono-parity.d.ts.map +1 -0
- package/dist/publisher/operators/mono-parity.js +144 -0
- package/dist/publisher/operators/mono-parity.js.map +1 -0
- package/dist/publisher/operators/mono.d.ts +30 -0
- package/dist/publisher/operators/mono.d.ts.map +1 -0
- package/dist/publisher/operators/mono.js +37 -0
- package/dist/publisher/operators/mono.js.map +1 -0
- package/dist/publisher/operators/register.d.ts +20 -0
- package/dist/publisher/operators/register.d.ts.map +1 -0
- package/dist/publisher/operators/register.js +23 -0
- package/dist/publisher/operators/register.js.map +1 -0
- package/dist/publisher/operators/selection.d.ts +25 -0
- package/dist/publisher/operators/selection.d.ts.map +1 -0
- package/dist/publisher/operators/selection.js +108 -0
- package/dist/publisher/operators/selection.js.map +1 -0
- package/dist/publisher/operators/side-effect.d.ts +15 -0
- package/dist/publisher/operators/side-effect.d.ts.map +1 -0
- package/dist/publisher/operators/side-effect.js +81 -0
- package/dist/publisher/operators/side-effect.js.map +1 -0
- package/dist/publisher/operators/terminal.d.ts +16 -0
- package/dist/publisher/operators/terminal.d.ts.map +1 -0
- package/dist/publisher/operators/terminal.js +47 -0
- package/dist/publisher/operators/terminal.js.map +1 -0
- package/dist/publisher/operators/time.d.ts +20 -0
- package/dist/publisher/operators/time.d.ts.map +1 -0
- package/dist/publisher/operators/time.js +92 -0
- package/dist/publisher/operators/time.js.map +1 -0
- package/dist/publisher/operators/transform.d.ts +31 -0
- package/dist/publisher/operators/transform.d.ts.map +1 -0
- package/dist/publisher/operators/transform.js +75 -0
- package/dist/publisher/operators/transform.js.map +1 -0
- package/dist/publisher/operators/windowing.d.ts +28 -0
- package/dist/publisher/operators/windowing.d.ts.map +1 -0
- package/dist/publisher/operators/windowing.js +148 -0
- package/dist/publisher/operators/windowing.js.map +1 -0
- package/dist/publisher/publisher.d.ts +11 -0
- package/dist/publisher/publisher.d.ts.map +1 -0
- package/dist/publisher/types.d.ts +51 -0
- package/dist/publisher/types.d.ts.map +1 -0
- package/dist/schedulers/animation-frame-scheduler.d.ts +11 -0
- package/dist/schedulers/animation-frame-scheduler.d.ts.map +1 -0
- package/dist/schedulers/animation-frame-scheduler.js +30 -0
- package/dist/schedulers/animation-frame-scheduler.js.map +1 -0
- package/dist/schedulers/base-scheduler.d.ts +28 -0
- package/dist/schedulers/base-scheduler.d.ts.map +1 -0
- package/dist/schedulers/base-scheduler.js +77 -0
- package/dist/schedulers/base-scheduler.js.map +1 -0
- package/dist/schedulers/basic-worker.d.ts +22 -0
- package/dist/schedulers/basic-worker.d.ts.map +1 -0
- package/dist/schedulers/basic-worker.js +71 -0
- package/dist/schedulers/basic-worker.js.map +1 -0
- package/dist/schedulers/delay-scheduler.d.ts +12 -0
- package/dist/schedulers/delay-scheduler.d.ts.map +1 -0
- package/dist/schedulers/delay-scheduler.js +17 -0
- package/dist/schedulers/delay-scheduler.js.map +1 -0
- package/dist/schedulers/disposed.d.ts +4 -0
- package/dist/schedulers/disposed.d.ts.map +1 -0
- package/dist/schedulers/disposed.js +14 -0
- package/dist/schedulers/disposed.js.map +1 -0
- package/dist/schedulers/duration.d.ts +8 -0
- package/dist/schedulers/duration.d.ts.map +1 -0
- package/dist/schedulers/duration.js +11 -0
- package/dist/schedulers/duration.js.map +1 -0
- package/dist/schedulers/executor-scheduler.d.ts +13 -0
- package/dist/schedulers/executor-scheduler.d.ts.map +1 -0
- package/dist/schedulers/executor-scheduler.js +43 -0
- package/dist/schedulers/executor-scheduler.js.map +1 -0
- package/dist/schedulers/immediate-scheduler.d.ts +15 -0
- package/dist/schedulers/immediate-scheduler.d.ts.map +1 -0
- package/dist/schedulers/immediate-scheduler.js +24 -0
- package/dist/schedulers/immediate-scheduler.js.map +1 -0
- package/dist/schedulers/index.d.ts +7 -0
- package/dist/schedulers/index.d.ts.map +1 -0
- package/dist/schedulers/index.js +2 -0
- package/dist/schedulers/interval-scheduler.d.ts +12 -0
- package/dist/schedulers/interval-scheduler.d.ts.map +1 -0
- package/dist/schedulers/interval-scheduler.js +17 -0
- package/dist/schedulers/interval-scheduler.js.map +1 -0
- package/dist/schedulers/macro-scheduler.d.ts +19 -0
- package/dist/schedulers/macro-scheduler.d.ts.map +1 -0
- package/dist/schedulers/macro-scheduler.js +30 -0
- package/dist/schedulers/macro-scheduler.js.map +1 -0
- package/dist/schedulers/microtask-scheduler.d.ts +11 -0
- package/dist/schedulers/microtask-scheduler.d.ts.map +1 -0
- package/dist/schedulers/microtask-scheduler.js +34 -0
- package/dist/schedulers/microtask-scheduler.js.map +1 -0
- package/dist/schedulers/schedulers.d.ts +39 -0
- package/dist/schedulers/schedulers.d.ts.map +1 -0
- package/dist/schedulers/schedulers.js +83 -0
- package/dist/schedulers/schedulers.js.map +1 -0
- package/dist/schedulers/timeout-scheduler.d.ts +11 -0
- package/dist/schedulers/timeout-scheduler.d.ts.map +1 -0
- package/dist/schedulers/types.d.ts +35 -0
- package/dist/schedulers/types.d.ts.map +1 -0
- package/dist/signal/signal-type.d.ts +26 -0
- package/dist/signal/signal-type.d.ts.map +1 -0
- package/dist/signal/signal-type.js +31 -0
- package/dist/signal/signal-type.js.map +1 -0
- package/dist/signal/signal.d.ts +33 -0
- package/dist/signal/signal.d.ts.map +1 -0
- package/dist/signal/signal.js +70 -0
- package/dist/signal/signal.js.map +1 -0
- package/dist/sinks/index.d.ts +7 -0
- package/dist/sinks/index.d.ts.map +1 -0
- package/dist/sinks/index.js +2 -0
- package/dist/sinks/many.d.ts +66 -0
- package/dist/sinks/many.d.ts.map +1 -0
- package/dist/sinks/many.js +193 -0
- package/dist/sinks/many.js.map +1 -0
- package/dist/sinks/one.d.ts +41 -0
- package/dist/sinks/one.d.ts.map +1 -0
- package/dist/sinks/one.js +144 -0
- package/dist/sinks/one.js.map +1 -0
- package/dist/sinks/specs.d.ts +25 -0
- package/dist/sinks/specs.d.ts.map +1 -0
- package/dist/sinks/specs.js +126 -0
- package/dist/sinks/specs.js.map +1 -0
- package/dist/sinks/subscribers.d.ts +16 -0
- package/dist/sinks/subscribers.d.ts.map +1 -0
- package/dist/sinks/subscribers.js +32 -0
- package/dist/sinks/subscribers.js.map +1 -0
- package/dist/sinks/types.d.ts +137 -0
- package/dist/sinks/types.d.ts.map +1 -0
- package/dist/sinks/types.js +58 -0
- package/dist/sinks/types.js.map +1 -0
- package/dist/subscription/core-subscriber.d.ts +12 -0
- package/dist/subscription/core-subscriber.d.ts.map +1 -0
- package/dist/subscription/iterable-subscription.d.ts +64 -0
- package/dist/subscription/iterable-subscription.d.ts.map +1 -0
- package/dist/subscription/iterable-subscription.js +281 -0
- package/dist/subscription/iterable-subscription.js.map +1 -0
- package/dist/subscription/reactive-streams.d.ts +8 -0
- package/dist/subscription/reactive-streams.d.ts.map +1 -0
- package/dist/subscription/reactive-streams.js +0 -0
- package/dist/subscription/subscriber.d.ts +17 -0
- package/dist/subscription/subscriber.d.ts.map +1 -0
- package/dist/subscription/subscription.d.ts +12 -0
- package/dist/subscription/subscription.d.ts.map +1 -0
- package/package.json +100 -33
- package/dist/index.d.mts +0 -2557
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -2
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import type { DurationInput, Executor, Scheduler } from "./types.js";
|
|
6
|
+
/** Browser-oriented scheduler factories and Reactor-compatible aliases. */
|
|
7
|
+
export declare const Schedulers: Readonly<{
|
|
8
|
+
/** Returns the synchronous immediate scheduler. */
|
|
9
|
+
immediate(): Scheduler;
|
|
10
|
+
/** Returns the shared microtask scheduler. */
|
|
11
|
+
micro(): Scheduler;
|
|
12
|
+
/** Returns the shared macrotask scheduler. */
|
|
13
|
+
macro(): Scheduler;
|
|
14
|
+
/** Creates a scheduler that applies a default delay when one is not provided per call. */
|
|
15
|
+
delay(delay: DurationInput, name?: string): Scheduler;
|
|
16
|
+
/** Creates a scheduler that applies a default interval when one is not provided per call. */
|
|
17
|
+
interval(period: DurationInput, name?: string): Scheduler;
|
|
18
|
+
/** Returns the shared animation-frame scheduler. */
|
|
19
|
+
animationFrame(): Scheduler;
|
|
20
|
+
/** Returns the shared microtask scheduler using its legacy name. */
|
|
21
|
+
microtask(): Scheduler;
|
|
22
|
+
/** Returns the shared macrotask scheduler using its legacy timeout name. */
|
|
23
|
+
timeout(): Scheduler;
|
|
24
|
+
/** Returns a shared scheduler suitable for single-threaded work. */
|
|
25
|
+
single(): Scheduler;
|
|
26
|
+
/** Returns a shared scheduler suitable for parallel-style browser work. */
|
|
27
|
+
parallel(): Scheduler;
|
|
28
|
+
/** Returns a shared scheduler suitable for delayed or blocking-like work. */
|
|
29
|
+
boundedElastic(): Scheduler;
|
|
30
|
+
/** Creates a new microtask-backed single scheduler. */
|
|
31
|
+
newSingle(name?: string): Scheduler;
|
|
32
|
+
/** Creates a new microtask-backed parallel scheduler. */
|
|
33
|
+
newParallel(name?: string): Scheduler;
|
|
34
|
+
/** Creates a new macrotask-backed bounded elastic scheduler. */
|
|
35
|
+
newBoundedElastic(name?: string): Scheduler;
|
|
36
|
+
/** Creates a scheduler backed by a custom executor. */
|
|
37
|
+
fromExecutor(executor: Executor, name?: string): Scheduler;
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=schedulers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedulers.d.ts","sourceRoot":"","sources":["../../src/schedulers/schedulers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAkB9E,2EAA2E;AAC3E,eAAO,MAAM,UAAU;IACnB,mDAAmD;iBACtC,SAAS;IAItB,8CAA8C;aACrC,SAAS;IAIlB,8CAA8C;aACrC,SAAS;IAIlB,0FAA0F;iBAC7E,aAAa,kBAAmB,SAAS;IAItD,6FAA6F;qBAC5E,aAAa,kBAAsB,SAAS;IAI7D,oDAAoD;sBAClC,SAAS;IAI3B,oEAAoE;iBACvD,SAAS;IAItB,4EAA4E;eACjE,SAAS;IAIpB,oEAAoE;cAC1D,SAAS;IAInB,2EAA2E;gBAC/D,SAAS;IAIrB,6EAA6E;sBAC3D,SAAS;IAI3B,uDAAuD;8BAC3B,SAAS;IAIrC,yDAAyD;gCACzB,SAAS;IAIzC,gEAAgE;sCACpB,SAAS;IAIrD,uDAAuD;2BAChC,QAAQ,kBAAsB,SAAS;EAGhE,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { AnimationFrameScheduler } from "./animation-frame-scheduler.js";
|
|
2
|
+
import { MacroScheduler } from "./macro-scheduler.js";
|
|
3
|
+
import { DelayScheduler } from "./delay-scheduler.js";
|
|
4
|
+
import { ExecutorScheduler } from "./executor-scheduler.js";
|
|
5
|
+
import { ImmediateScheduler } from "./immediate-scheduler.js";
|
|
6
|
+
import { IntervalScheduler } from "./interval-scheduler.js";
|
|
7
|
+
import { MicrotaskScheduler } from "./microtask-scheduler.js";
|
|
8
|
+
//#region src/schedulers/schedulers.ts
|
|
9
|
+
/** Shared scheduler that executes work synchronously. */
|
|
10
|
+
var immediateScheduler = new ImmediateScheduler();
|
|
11
|
+
/** Shared scheduler that queues work through the microtask queue. */
|
|
12
|
+
var microScheduler = new MicrotaskScheduler("micro");
|
|
13
|
+
/** Shared scheduler that queues work through the macrotask queue. */
|
|
14
|
+
var macroScheduler = new MacroScheduler();
|
|
15
|
+
/** Shared scheduler that queues work with `requestAnimationFrame` when available. */
|
|
16
|
+
var animationFrameScheduler = new AnimationFrameScheduler();
|
|
17
|
+
/** Browser-oriented scheduler factories and Reactor-compatible aliases. */
|
|
18
|
+
var Schedulers = Object.freeze({
|
|
19
|
+
/** Returns the synchronous immediate scheduler. */
|
|
20
|
+
immediate() {
|
|
21
|
+
return immediateScheduler;
|
|
22
|
+
},
|
|
23
|
+
/** Returns the shared microtask scheduler. */
|
|
24
|
+
micro() {
|
|
25
|
+
return microScheduler;
|
|
26
|
+
},
|
|
27
|
+
/** Returns the shared macrotask scheduler. */
|
|
28
|
+
macro() {
|
|
29
|
+
return macroScheduler;
|
|
30
|
+
},
|
|
31
|
+
/** Creates a scheduler that applies a default delay when one is not provided per call. */
|
|
32
|
+
delay(delay, name = "delay") {
|
|
33
|
+
return new DelayScheduler(delay, name);
|
|
34
|
+
},
|
|
35
|
+
/** Creates a scheduler that applies a default interval when one is not provided per call. */
|
|
36
|
+
interval(period, name = "interval") {
|
|
37
|
+
return new IntervalScheduler(period, name);
|
|
38
|
+
},
|
|
39
|
+
/** Returns the shared animation-frame scheduler. */
|
|
40
|
+
animationFrame() {
|
|
41
|
+
return animationFrameScheduler;
|
|
42
|
+
},
|
|
43
|
+
/** Returns the shared microtask scheduler using its legacy name. */
|
|
44
|
+
microtask() {
|
|
45
|
+
return microScheduler;
|
|
46
|
+
},
|
|
47
|
+
/** Returns the shared macrotask scheduler using its legacy timeout name. */
|
|
48
|
+
timeout() {
|
|
49
|
+
return macroScheduler;
|
|
50
|
+
},
|
|
51
|
+
/** Returns a shared scheduler suitable for single-threaded work. */
|
|
52
|
+
single() {
|
|
53
|
+
return microScheduler;
|
|
54
|
+
},
|
|
55
|
+
/** Returns a shared scheduler suitable for parallel-style browser work. */
|
|
56
|
+
parallel() {
|
|
57
|
+
return microScheduler;
|
|
58
|
+
},
|
|
59
|
+
/** Returns a shared scheduler suitable for delayed or blocking-like work. */
|
|
60
|
+
boundedElastic() {
|
|
61
|
+
return macroScheduler;
|
|
62
|
+
},
|
|
63
|
+
/** Creates a new microtask-backed single scheduler. */
|
|
64
|
+
newSingle(name = "single") {
|
|
65
|
+
return new MicrotaskScheduler(name);
|
|
66
|
+
},
|
|
67
|
+
/** Creates a new microtask-backed parallel scheduler. */
|
|
68
|
+
newParallel(name = "parallel") {
|
|
69
|
+
return new MicrotaskScheduler(name);
|
|
70
|
+
},
|
|
71
|
+
/** Creates a new macrotask-backed bounded elastic scheduler. */
|
|
72
|
+
newBoundedElastic(name = "boundedElastic") {
|
|
73
|
+
return new MacroScheduler(name);
|
|
74
|
+
},
|
|
75
|
+
/** Creates a scheduler backed by a custom executor. */
|
|
76
|
+
fromExecutor(executor, name = "executor") {
|
|
77
|
+
return new ExecutorScheduler(name, executor);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
//#endregion
|
|
81
|
+
export { Schedulers };
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=schedulers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedulers.js","names":[],"sources":["../../src/schedulers/schedulers.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport type {DurationInput, Executor, Scheduler} from \"@/schedulers/types.js\";\nimport {AnimationFrameScheduler} from \"@/schedulers/animation-frame-scheduler.js\";\nimport {DelayScheduler} from \"@/schedulers/delay-scheduler.js\";\nimport {ExecutorScheduler} from \"@/schedulers/executor-scheduler.js\";\nimport {ImmediateScheduler} from \"@/schedulers/immediate-scheduler.js\";\nimport {IntervalScheduler} from \"@/schedulers/interval-scheduler.js\";\nimport {MacroScheduler} from \"@/schedulers/macro-scheduler.js\";\nimport {MicrotaskScheduler} from \"@/schedulers/microtask-scheduler.js\";\n\n/** Shared scheduler that executes work synchronously. */\nconst immediateScheduler = new ImmediateScheduler();\n/** Shared scheduler that queues work through the microtask queue. */\nconst microScheduler = new MicrotaskScheduler(\"micro\");\n/** Shared scheduler that queues work through the macrotask queue. */\nconst macroScheduler = new MacroScheduler();\n/** Shared scheduler that queues work with `requestAnimationFrame` when available. */\nconst animationFrameScheduler = new AnimationFrameScheduler();\n\n/** Browser-oriented scheduler factories and Reactor-compatible aliases. */\nexport const Schedulers = Object.freeze({\n /** Returns the synchronous immediate scheduler. */\n immediate(): Scheduler {\n return immediateScheduler;\n },\n\n /** Returns the shared microtask scheduler. */\n micro(): Scheduler {\n return microScheduler;\n },\n\n /** Returns the shared macrotask scheduler. */\n macro(): Scheduler {\n return macroScheduler;\n },\n\n /** Creates a scheduler that applies a default delay when one is not provided per call. */\n delay(delay: DurationInput, name = \"delay\"): Scheduler {\n return new DelayScheduler(delay, name);\n },\n\n /** Creates a scheduler that applies a default interval when one is not provided per call. */\n interval(period: DurationInput, name = \"interval\"): Scheduler {\n return new IntervalScheduler(period, name);\n },\n\n /** Returns the shared animation-frame scheduler. */\n animationFrame(): Scheduler {\n return animationFrameScheduler;\n },\n\n /** Returns the shared microtask scheduler using its legacy name. */\n microtask(): Scheduler {\n return microScheduler;\n },\n\n /** Returns the shared macrotask scheduler using its legacy timeout name. */\n timeout(): Scheduler {\n return macroScheduler;\n },\n\n /** Returns a shared scheduler suitable for single-threaded work. */\n single(): Scheduler {\n return microScheduler;\n },\n\n /** Returns a shared scheduler suitable for parallel-style browser work. */\n parallel(): Scheduler {\n return microScheduler;\n },\n\n /** Returns a shared scheduler suitable for delayed or blocking-like work. */\n boundedElastic(): Scheduler {\n return macroScheduler;\n },\n\n /** Creates a new microtask-backed single scheduler. */\n newSingle(name = \"single\"): Scheduler {\n return new MicrotaskScheduler(name);\n },\n\n /** Creates a new microtask-backed parallel scheduler. */\n newParallel(name = \"parallel\"): Scheduler {\n return new MicrotaskScheduler(name);\n },\n\n /** Creates a new macrotask-backed bounded elastic scheduler. */\n newBoundedElastic(name = \"boundedElastic\"): Scheduler {\n return new MacroScheduler(name);\n },\n\n /** Creates a scheduler backed by a custom executor. */\n fromExecutor(executor: Executor, name = \"executor\"): Scheduler {\n return new ExecutorScheduler(name, executor);\n }\n});\n"],"mappings":";;;;;;;;;AAcA,IAAM,qBAAqB,IAAI,mBAAmB;;AAElD,IAAM,iBAAiB,IAAI,mBAAmB,OAAO;;AAErD,IAAM,iBAAiB,IAAI,eAAe;;AAE1C,IAAM,0BAA0B,IAAI,wBAAwB;;AAG5D,IAAa,aAAa,OAAO,OAAO;;CAEpC,YAAuB;EACnB,OAAO;CACX;;CAGA,QAAmB;EACf,OAAO;CACX;;CAGA,QAAmB;EACf,OAAO;CACX;;CAGA,MAAM,OAAsB,OAAO,SAAoB;EACnD,OAAO,IAAI,eAAe,OAAO,IAAI;CACzC;;CAGA,SAAS,QAAuB,OAAO,YAAuB;EAC1D,OAAO,IAAI,kBAAkB,QAAQ,IAAI;CAC7C;;CAGA,iBAA4B;EACxB,OAAO;CACX;;CAGA,YAAuB;EACnB,OAAO;CACX;;CAGA,UAAqB;EACjB,OAAO;CACX;;CAGA,SAAoB;EAChB,OAAO;CACX;;CAGA,WAAsB;EAClB,OAAO;CACX;;CAGA,iBAA4B;EACxB,OAAO;CACX;;CAGA,UAAU,OAAO,UAAqB;EAClC,OAAO,IAAI,mBAAmB,IAAI;CACtC;;CAGA,YAAY,OAAO,YAAuB;EACtC,OAAO,IAAI,mBAAmB,IAAI;CACtC;;CAGA,kBAAkB,OAAO,kBAA6B;EAClD,OAAO,IAAI,eAAe,IAAI;CAClC;;CAGA,aAAa,UAAoB,OAAO,YAAuB;EAC3D,OAAO,IAAI,kBAAkB,MAAM,QAAQ;CAC/C;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import { MacroScheduler } from "./macro-scheduler.js";
|
|
6
|
+
/** Compatibility scheduler name for timeout-backed macrotask scheduling. */
|
|
7
|
+
export declare class TimeoutScheduler extends MacroScheduler {
|
|
8
|
+
/** Creates a timeout-named macrotask scheduler. */
|
|
9
|
+
constructor(name?: string);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=timeout-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout-scheduler.d.ts","sourceRoot":"","sources":["../../src/schedulers/timeout-scheduler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAE/D,4EAA4E;AAC5E,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,mDAAmD;IACnD,YAAmB,IAAI,SAAY,EAElC;CACJ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import type { Disposable } from "../core/types.js";
|
|
6
|
+
/** Duration accepted by browser schedulers, expressed in milliseconds or fields. */
|
|
7
|
+
export type DurationInput = number | {
|
|
8
|
+
milliseconds?: number;
|
|
9
|
+
seconds?: number;
|
|
10
|
+
minutes?: number;
|
|
11
|
+
hours?: number;
|
|
12
|
+
};
|
|
13
|
+
/** Scheduler capable of executing immediate, delayed and periodic tasks. */
|
|
14
|
+
export interface Scheduler extends Disposable {
|
|
15
|
+
/** Human-readable scheduler name. */
|
|
16
|
+
readonly name: string;
|
|
17
|
+
/** Returns the current scheduler time in milliseconds. */
|
|
18
|
+
now(): number;
|
|
19
|
+
/** Schedules a single task, optionally after a delay. */
|
|
20
|
+
schedule(task: () => void, delay?: DurationInput): Disposable;
|
|
21
|
+
/** Schedules a repeated task. */
|
|
22
|
+
schedulePeriodically(task: () => void, initialDelay?: DurationInput, period?: DurationInput): Disposable;
|
|
23
|
+
/** Creates a worker that can dispose a group of tasks together. */
|
|
24
|
+
createWorker(): SchedulerWorker;
|
|
25
|
+
}
|
|
26
|
+
/** Worker groups scheduled tasks for coordinated disposal. */
|
|
27
|
+
export interface SchedulerWorker extends Disposable {
|
|
28
|
+
/** Schedules a single task on this worker. */
|
|
29
|
+
schedule(task: () => void, delay?: DurationInput): Disposable;
|
|
30
|
+
/** Schedules a repeated task on this worker. */
|
|
31
|
+
schedulePeriodically(task: () => void, initialDelay?: DurationInput, period?: DurationInput): Disposable;
|
|
32
|
+
}
|
|
33
|
+
/** Function that accepts a task for execution. */
|
|
34
|
+
export type Executor = (task: () => void) => void;
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schedulers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEhD,oFAAoF;AACpF,MAAM,MAAM,aAAa,GACnB,MAAM,GACN;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,WAAW,SAAU,SAAQ,UAAU;IACzC,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,0DAA0D;IAC1D,GAAG,IAAI,MAAM,CAAC;IAEd,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IAE9D,iCAAiC;IACjC,oBAAoB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IAEzG,mEAAmE;IACnE,YAAY,IAAI,eAAe,CAAC;CACnC;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAgB,SAAQ,UAAU;IAC/C,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IAE9D,gDAAgD;IAChD,oBAAoB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;CAC5G;AAED,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Materialized signal representation and signal kinds.
|
|
4
|
+
*/
|
|
5
|
+
/** Reactive signal kinds used by materialize/dematerialize and sink handlers. */
|
|
6
|
+
export declare enum SignalType {
|
|
7
|
+
/** Subscription signal. */
|
|
8
|
+
SUBSCRIBE = "subscribe",
|
|
9
|
+
/** Request signal. */
|
|
10
|
+
REQUEST = "request",
|
|
11
|
+
/** Cancellation signal. */
|
|
12
|
+
CANCEL = "cancel",
|
|
13
|
+
/** Next value signal. */
|
|
14
|
+
NEXT = "next",
|
|
15
|
+
/** Error terminal signal. */
|
|
16
|
+
ERROR = "error",
|
|
17
|
+
/** Complete terminal signal. */
|
|
18
|
+
COMPLETE = "complete",
|
|
19
|
+
/** Post-termination callback signal. */
|
|
20
|
+
AFTER_TERMINATE = "afterTerminate",
|
|
21
|
+
/** Current context lookup signal. */
|
|
22
|
+
CURRENT_CONTEXT = "currentContext",
|
|
23
|
+
/** Context write signal. */
|
|
24
|
+
ON_CONTEXT = "onContext"
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=signal-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-type.d.ts","sourceRoot":"","sources":["../../src/signal/signal-type.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,iFAAiF;AACjF,oBAAY,UAAU;IAClB,2BAA2B;IAC3B,SAAS,cAAc;IACvB,sBAAsB;IACtB,OAAO,YAAY;IACnB,2BAA2B;IAC3B,MAAM,WAAW;IACjB,yBAAyB;IACzB,IAAI,SAAS;IACb,6BAA6B;IAC7B,KAAK,UAAU;IACf,gCAAgC;IAChC,QAAQ,aAAa;IACrB,wCAAwC;IACxC,eAAe,mBAAmB;IAClC,qCAAqC;IACrC,eAAe,mBAAmB;IAClC,4BAA4B;IAC5B,UAAU,cAAc;CAC3B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/signal/signal-type.ts
|
|
2
|
+
/**
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
* Materialized signal representation and signal kinds.
|
|
5
|
+
*/
|
|
6
|
+
/** Reactive signal kinds used by materialize/dematerialize and sink handlers. */
|
|
7
|
+
var SignalType = /* @__PURE__ */ function(SignalType) {
|
|
8
|
+
/** Subscription signal. */
|
|
9
|
+
SignalType["SUBSCRIBE"] = "subscribe";
|
|
10
|
+
/** Request signal. */
|
|
11
|
+
SignalType["REQUEST"] = "request";
|
|
12
|
+
/** Cancellation signal. */
|
|
13
|
+
SignalType["CANCEL"] = "cancel";
|
|
14
|
+
/** Next value signal. */
|
|
15
|
+
SignalType["NEXT"] = "next";
|
|
16
|
+
/** Error terminal signal. */
|
|
17
|
+
SignalType["ERROR"] = "error";
|
|
18
|
+
/** Complete terminal signal. */
|
|
19
|
+
SignalType["COMPLETE"] = "complete";
|
|
20
|
+
/** Post-termination callback signal. */
|
|
21
|
+
SignalType["AFTER_TERMINATE"] = "afterTerminate";
|
|
22
|
+
/** Current context lookup signal. */
|
|
23
|
+
SignalType["CURRENT_CONTEXT"] = "currentContext";
|
|
24
|
+
/** Context write signal. */
|
|
25
|
+
SignalType["ON_CONTEXT"] = "onContext";
|
|
26
|
+
return SignalType;
|
|
27
|
+
}({});
|
|
28
|
+
//#endregion
|
|
29
|
+
export { SignalType };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=signal-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-type.js","names":[],"sources":["../../src/signal/signal-type.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Materialized signal representation and signal kinds.\n */\n/** Reactive signal kinds used by materialize/dematerialize and sink handlers. */\nexport enum SignalType {\n /** Subscription signal. */\n SUBSCRIBE = \"subscribe\",\n /** Request signal. */\n REQUEST = \"request\",\n /** Cancellation signal. */\n CANCEL = \"cancel\",\n /** Next value signal. */\n NEXT = \"next\",\n /** Error terminal signal. */\n ERROR = \"error\",\n /** Complete terminal signal. */\n COMPLETE = \"complete\",\n /** Post-termination callback signal. */\n AFTER_TERMINATE = \"afterTerminate\",\n /** Current context lookup signal. */\n CURRENT_CONTEXT = \"currentContext\",\n /** Context write signal. */\n ON_CONTEXT = \"onContext\"\n}\n"],"mappings":";;;;;;AAKA,IAAY,aAAL,yBAAA,YAAA;;CAEH,WAAA,eAAA;;CAEA,WAAA,aAAA;;CAEA,WAAA,YAAA;;CAEA,WAAA,UAAA;;CAEA,WAAA,WAAA;;CAEA,WAAA,cAAA;;CAEA,WAAA,qBAAA;;CAEA,WAAA,qBAAA;;CAEA,WAAA,gBAAA;;AACJ,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Materialized signal representation and signal kinds.
|
|
4
|
+
*/
|
|
5
|
+
import { SignalType } from "./signal-type.js";
|
|
6
|
+
/** Immutable representation of a Reactor signal. */
|
|
7
|
+
export declare class Signal<T> {
|
|
8
|
+
/** Signal kind represented by this instance. */
|
|
9
|
+
readonly type: SignalType;
|
|
10
|
+
/** Value carried by onNext signals. */
|
|
11
|
+
readonly value: T | undefined;
|
|
12
|
+
/** Error carried by onError signals. */
|
|
13
|
+
readonly error: unknown;
|
|
14
|
+
/** Creates an immutable signal value. */
|
|
15
|
+
private constructor();
|
|
16
|
+
/** Creates an onNext signal. */
|
|
17
|
+
static next<T>(value: T): Signal<T>;
|
|
18
|
+
/** Creates an onError signal. */
|
|
19
|
+
static error<T = never>(error: unknown): Signal<T>;
|
|
20
|
+
/** Creates an onComplete signal. */
|
|
21
|
+
static complete<T = never>(): Signal<T>;
|
|
22
|
+
/** Returns true for onNext signals. */
|
|
23
|
+
isOnNext(): boolean;
|
|
24
|
+
/** Returns true for onError signals. */
|
|
25
|
+
isOnError(): boolean;
|
|
26
|
+
/** Returns true for onComplete signals. */
|
|
27
|
+
isOnComplete(): boolean;
|
|
28
|
+
/** Returns the signal value when present. */
|
|
29
|
+
get(): T | undefined;
|
|
30
|
+
/** Returns the signal error when present. */
|
|
31
|
+
getThrowable(): unknown;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/signal/signal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAEnD,oDAAoD;AACpD,qBAAa,MAAM,CAAC,CAAC;IACjB,gDAAgD;IAChD,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,uCAAuC;IACvC,SAAgB,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrC,wCAAwC;IACxC,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B,yCAAyC;IACzC,OAAO,eAIN;IAED,gCAAgC;IAChC,OAAc,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAEzC;IAED,iCAAiC;IACjC,OAAc,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAExD;IAED,oCAAoC;IACpC,OAAc,QAAQ,CAAC,CAAC,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAE7C;IAED,uCAAuC;IAChC,QAAQ,IAAI,OAAO,CAEzB;IAED,wCAAwC;IACjC,SAAS,IAAI,OAAO,CAE1B;IAED,2CAA2C;IACpC,YAAY,IAAI,OAAO,CAE7B;IAED,6CAA6C;IACtC,GAAG,IAAI,CAAC,GAAG,SAAS,CAE1B;IAED,6CAA6C;IACtC,YAAY,IAAI,OAAO,CAE7B;CACJ"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.js";
|
|
2
|
+
import { SignalType } from "./signal-type.js";
|
|
3
|
+
//#region src/signal/signal.ts
|
|
4
|
+
/**
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
* Materialized signal representation and signal kinds.
|
|
7
|
+
*/
|
|
8
|
+
/** Immutable representation of a Reactor signal. */
|
|
9
|
+
var Signal = class Signal {
|
|
10
|
+
/** Creates an immutable signal value. */
|
|
11
|
+
constructor(type, value, error) {
|
|
12
|
+
_defineProperty(
|
|
13
|
+
this,
|
|
14
|
+
/** Signal kind represented by this instance. */
|
|
15
|
+
"type",
|
|
16
|
+
void 0
|
|
17
|
+
);
|
|
18
|
+
_defineProperty(
|
|
19
|
+
this,
|
|
20
|
+
/** Value carried by onNext signals. */
|
|
21
|
+
"value",
|
|
22
|
+
void 0
|
|
23
|
+
);
|
|
24
|
+
_defineProperty(
|
|
25
|
+
this,
|
|
26
|
+
/** Error carried by onError signals. */
|
|
27
|
+
"error",
|
|
28
|
+
void 0
|
|
29
|
+
);
|
|
30
|
+
this.type = type;
|
|
31
|
+
this.value = value;
|
|
32
|
+
this.error = error;
|
|
33
|
+
}
|
|
34
|
+
/** Creates an onNext signal. */
|
|
35
|
+
static next(value) {
|
|
36
|
+
return new Signal(SignalType.NEXT, value);
|
|
37
|
+
}
|
|
38
|
+
/** Creates an onError signal. */
|
|
39
|
+
static error(error) {
|
|
40
|
+
return new Signal(SignalType.ERROR, void 0, error);
|
|
41
|
+
}
|
|
42
|
+
/** Creates an onComplete signal. */
|
|
43
|
+
static complete() {
|
|
44
|
+
return new Signal(SignalType.COMPLETE);
|
|
45
|
+
}
|
|
46
|
+
/** Returns true for onNext signals. */
|
|
47
|
+
isOnNext() {
|
|
48
|
+
return this.type === SignalType.NEXT;
|
|
49
|
+
}
|
|
50
|
+
/** Returns true for onError signals. */
|
|
51
|
+
isOnError() {
|
|
52
|
+
return this.type === SignalType.ERROR;
|
|
53
|
+
}
|
|
54
|
+
/** Returns true for onComplete signals. */
|
|
55
|
+
isOnComplete() {
|
|
56
|
+
return this.type === SignalType.COMPLETE;
|
|
57
|
+
}
|
|
58
|
+
/** Returns the signal value when present. */
|
|
59
|
+
get() {
|
|
60
|
+
return this.value;
|
|
61
|
+
}
|
|
62
|
+
/** Returns the signal error when present. */
|
|
63
|
+
getThrowable() {
|
|
64
|
+
return this.error;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
//#endregion
|
|
68
|
+
export { Signal };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal.js","names":[],"sources":["../../src/signal/signal.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Materialized signal representation and signal kinds.\n */\nimport {SignalType} from \"@/signal/signal-type.js\";\n\n/** Immutable representation of a Reactor signal. */\nexport class Signal<T> {\n /** Signal kind represented by this instance. */\n public readonly type: SignalType;\n /** Value carried by onNext signals. */\n public readonly value: T | undefined;\n /** Error carried by onError signals. */\n public readonly error: unknown;\n\n /** Creates an immutable signal value. */\n private constructor(type: SignalType, value?: T, error?: unknown) {\n this.type = type;\n this.value = value;\n this.error = error;\n }\n\n /** Creates an onNext signal. */\n public static next<T>(value: T): Signal<T> {\n return new Signal(SignalType.NEXT, value);\n }\n\n /** Creates an onError signal. */\n public static error<T = never>(error: unknown): Signal<T> {\n return new Signal<T>(SignalType.ERROR, undefined, error);\n }\n\n /** Creates an onComplete signal. */\n public static complete<T = never>(): Signal<T> {\n return new Signal<T>(SignalType.COMPLETE);\n }\n\n /** Returns true for onNext signals. */\n public isOnNext(): boolean {\n return this.type === SignalType.NEXT;\n }\n\n /** Returns true for onError signals. */\n public isOnError(): boolean {\n return this.type === SignalType.ERROR;\n }\n\n /** Returns true for onComplete signals. */\n public isOnComplete(): boolean {\n return this.type === SignalType.COMPLETE;\n }\n\n /** Returns the signal value when present. */\n public get(): T | undefined {\n return this.value;\n }\n\n /** Returns the signal error when present. */\n public getThrowable(): unknown {\n return this.error;\n }\n}\n"],"mappings":";;;;;;;;AAOA,IAAa,SAAb,MAAa,OAAU;;CASnB,YAAoB,MAAkB,OAAW,OAAiB;;;;GAPlE;;;;;;GAEA;;;;;;GAEA;;;EAII,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,QAAQ;CACjB;;CAGA,OAAc,KAAQ,OAAqB;EACvC,OAAO,IAAI,OAAO,WAAW,MAAM,KAAK;CAC5C;;CAGA,OAAc,MAAiB,OAA2B;EACtD,OAAO,IAAI,OAAU,WAAW,OAAO,QAAW,KAAK;CAC3D;;CAGA,OAAc,WAAiC;EAC3C,OAAO,IAAI,OAAU,WAAW,QAAQ;CAC5C;;CAGA,WAA2B;EACvB,OAAO,KAAK,SAAS,WAAW;CACpC;;CAGA,YAA4B;EACxB,OAAO,KAAK,SAAS,WAAW;CACpC;;CAGA,eAA+B;EAC3B,OAAO,KAAK,SAAS,WAAW;CACpC;;CAGA,MAA4B;EACxB,OAAO,KAAK;CAChB;;CAGA,eAA+B;EAC3B,OAAO,KAAK;CAChB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sinks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,+BAA+B;AAC/B,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Flux } from "../publisher/flux.js";
|
|
2
|
+
import type { PublisherInput } from "../publisher/types.js";
|
|
3
|
+
import { SignalType } from "../signal/signal-type.js";
|
|
4
|
+
import { type EmitFailureHandler, EmitResult, type ManySink } from "./types.js";
|
|
5
|
+
/** Delivery mode supported by the default many-valued sink. */
|
|
6
|
+
type ManyMode = "unicast" | "unicast-error" | "multicast-buffer" | "multicast-direct" | "replay";
|
|
7
|
+
/** Configuration for a many-valued sink implementation. */
|
|
8
|
+
export interface ManyOptions<T> {
|
|
9
|
+
/** Delivery mode used by the sink. */
|
|
10
|
+
mode: ManyMode;
|
|
11
|
+
/** Maximum number of replayed values retained in history. */
|
|
12
|
+
replayLimit?: number;
|
|
13
|
+
/** Initial value replayed by latest-or-default sinks. */
|
|
14
|
+
latestDefault?: T;
|
|
15
|
+
}
|
|
16
|
+
/** Default implementation for unicast, multicast and replay many-valued sinks. */
|
|
17
|
+
export declare class DefaultManySink<T> implements ManySink<T> {
|
|
18
|
+
/** Active subscriber queues currently receiving live values. */
|
|
19
|
+
private subscribers;
|
|
20
|
+
/** Values buffered before a non-replay sink receives its first subscriber. */
|
|
21
|
+
private pending;
|
|
22
|
+
/** Values retained for replay subscribers. */
|
|
23
|
+
private history;
|
|
24
|
+
/** Ring-buffer index of the oldest replay value. */
|
|
25
|
+
private historyHead;
|
|
26
|
+
/** Terminal state when the sink has completed or failed. */
|
|
27
|
+
private terminated;
|
|
28
|
+
/** Error retained for late subscribers after failure. */
|
|
29
|
+
private errorValue;
|
|
30
|
+
/** Tracks whether a unicast sink already accepted its single subscriber. */
|
|
31
|
+
private unicastAttached;
|
|
32
|
+
/** Construction options controlling delivery and replay behavior. */
|
|
33
|
+
private readonly options;
|
|
34
|
+
/** Creates a many-valued sink with the provided delivery mode. */
|
|
35
|
+
constructor(options: ManyOptions<T>);
|
|
36
|
+
/** Returns the Flux view of this sink. */
|
|
37
|
+
asFlux(): Flux<T>;
|
|
38
|
+
/** Attempts to emit a value to current subscribers. */
|
|
39
|
+
tryEmitNext(value: T): EmitResult;
|
|
40
|
+
/** Attempts to complete this sink. */
|
|
41
|
+
tryEmitComplete(): EmitResult;
|
|
42
|
+
/** Attempts to fail this sink. */
|
|
43
|
+
tryEmitError(error: unknown): EmitResult;
|
|
44
|
+
/** Emits a value or delegates failure handling to the provided handler. */
|
|
45
|
+
emitNext(value: T, handler?: EmitFailureHandler): void;
|
|
46
|
+
/** Completes this sink or delegates failure handling to the provided handler. */
|
|
47
|
+
emitComplete(handler?: EmitFailureHandler): void;
|
|
48
|
+
/** Fails this sink or delegates failure handling to the provided handler. */
|
|
49
|
+
emitError(error: unknown, handler?: EmitFailureHandler): void;
|
|
50
|
+
/** Returns the current number of active subscribers. */
|
|
51
|
+
currentSubscriberCount(): number;
|
|
52
|
+
/** Subscribes this sink to an upstream publisher and relays its signals. */
|
|
53
|
+
subscribeTo(source: PublisherInput<T>): void;
|
|
54
|
+
/** Handles an emission failure and returns false to fail fast by default. */
|
|
55
|
+
onEmitFailure(_signalType: SignalType, _emitResult: EmitResult): boolean;
|
|
56
|
+
/** Adds a subscriber queue and removes it again when its subscription is cancelled. */
|
|
57
|
+
private addSubscriber;
|
|
58
|
+
/** Removes a subscriber queue and releases the set when it becomes empty. */
|
|
59
|
+
private removeSubscriber;
|
|
60
|
+
/** Clears and releases all active subscriber queues. */
|
|
61
|
+
private clearSubscribers;
|
|
62
|
+
/** Records one value into replay history, allocating history only for replay sinks. */
|
|
63
|
+
private rememberHistory;
|
|
64
|
+
}
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=many.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"many.d.ts","sourceRoot":"","sources":["../../src/sinks/many.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AACzC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAQnD,OAAO,EAAC,KAAK,kBAAkB,EAAoC,UAAU,EAAE,KAAK,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAEtH,+DAA+D;AAC/D,KAAK,QAAQ,GAAG,SAAS,GAAG,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAEjG,2DAA2D;AAC3D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,sCAAsC;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,aAAa,CAAC,EAAE,CAAC,CAAC;CACrB;AAED,kFAAkF;AAClF,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IAClD,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAiC;IACpD,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAkB;IACjC,8CAA8C;IAC9C,OAAO,CAAC,OAAO,CAAkB;IACjC,oDAAoD;IACpD,OAAO,CAAC,WAAW,CAAK;IACxB,4DAA4D;IAC5D,OAAO,CAAC,UAAU,CAAmC;IACrD,yDAAyD;IACzD,OAAO,CAAC,UAAU,CAAU;IAC5B,4EAA4E;IAC5E,OAAO,CAAC,eAAe,CAAS;IAChC,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,kEAAkE;IAClE,YAAmB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAKzC;IAED,0CAA0C;IACnC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAgCvB;IAED,uDAAuD;IAChD,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAyBvC;IAED,sCAAsC;IAC/B,eAAe,IAAI,UAAU,CAkBnC;IAED,kCAAkC;IAC3B,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAmB9C;IAED,2EAA2E;IACpE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,kBAAkD,GAAG,IAAI,CAE3F;IAED,iFAAiF;IAC1E,YAAY,CAAC,OAAO,GAAE,kBAAkD,GAAG,IAAI,CAErF;IAED,6EAA6E;IACtE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAkD,GAAG,IAAI,CAElG;IAED,wDAAwD;IACjD,sBAAsB,IAAI,MAAM,CAEtC;IAED,4EAA4E;IACrE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAMlD;IAED,6EAA6E;IACtE,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CAE9E;IAED,uFAAuF;IACvF,OAAO,CAAC,aAAa;IAKrB,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB;IAIxB,wDAAwD;IACxD,OAAO,CAAC,gBAAgB;IAKxB,uFAAuF;IACvF,OAAO,CAAC,eAAe;CAkB1B"}
|