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,77 @@
|
|
|
1
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.js";
|
|
2
|
+
import { BooleanDisposable } from "../core/boolean-disposable.js";
|
|
3
|
+
import { toMillis } from "./duration.js";
|
|
4
|
+
import { CompositeDisposable } from "../core/composite-disposable.js";
|
|
5
|
+
import { disposed } from "./disposed.js";
|
|
6
|
+
import { BasicWorker } from "./basic-worker.js";
|
|
7
|
+
//#region src/schedulers/base-scheduler.ts
|
|
8
|
+
/**
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
* Browser scheduler implementations and contracts.
|
|
11
|
+
*/
|
|
12
|
+
/** Base implementation for browser schedulers that share lifecycle behavior. */
|
|
13
|
+
var BaseScheduler = class {
|
|
14
|
+
/** Creates a scheduler base with the provided name. */
|
|
15
|
+
constructor(name) {
|
|
16
|
+
_defineProperty(
|
|
17
|
+
this,
|
|
18
|
+
/** Human-readable scheduler name. */
|
|
19
|
+
"name",
|
|
20
|
+
void 0
|
|
21
|
+
);
|
|
22
|
+
_defineProperty(
|
|
23
|
+
this,
|
|
24
|
+
/** Tracks whether this scheduler has been disposed. */
|
|
25
|
+
"disposed",
|
|
26
|
+
false
|
|
27
|
+
);
|
|
28
|
+
this.name = name;
|
|
29
|
+
}
|
|
30
|
+
/** Returns the current wall-clock time in milliseconds. */
|
|
31
|
+
now() {
|
|
32
|
+
return Date.now();
|
|
33
|
+
}
|
|
34
|
+
/** Schedules a periodic task using this scheduler for the first execution. */
|
|
35
|
+
schedulePeriodically(task, initialDelay, period) {
|
|
36
|
+
if (this.disposed) return disposed();
|
|
37
|
+
const composite = new CompositeDisposable();
|
|
38
|
+
const start = this.schedule(() => {
|
|
39
|
+
if (composite.isDisposed()) return;
|
|
40
|
+
task();
|
|
41
|
+
const id = setInterval(() => {
|
|
42
|
+
if (!composite.isDisposed() && !this.disposed) task();
|
|
43
|
+
}, Math.max(1, toMillis(period)));
|
|
44
|
+
composite.add(new BooleanDisposable(() => clearInterval(id)));
|
|
45
|
+
}, initialDelay);
|
|
46
|
+
composite.add(start);
|
|
47
|
+
return composite;
|
|
48
|
+
}
|
|
49
|
+
/** Creates a worker that tracks tasks for grouped disposal. */
|
|
50
|
+
createWorker() {
|
|
51
|
+
return new BasicWorker(this);
|
|
52
|
+
}
|
|
53
|
+
/** Marks this scheduler as disposed. */
|
|
54
|
+
dispose() {
|
|
55
|
+
this.disposed = true;
|
|
56
|
+
}
|
|
57
|
+
/** Returns true when this scheduler is disposed. */
|
|
58
|
+
isDisposed() {
|
|
59
|
+
return this.disposed;
|
|
60
|
+
}
|
|
61
|
+
/** Returns an already-disposed disposable when this scheduler is disposed. */
|
|
62
|
+
disposedIfNeeded() {
|
|
63
|
+
return this.disposed ? disposed() : void 0;
|
|
64
|
+
}
|
|
65
|
+
/** Schedules a timeout-backed task with disposal and disposed-state checks. */
|
|
66
|
+
scheduleTimeout(task, delayMs = 0) {
|
|
67
|
+
if (this.disposed) return disposed();
|
|
68
|
+
const id = setTimeout(() => {
|
|
69
|
+
if (!this.disposed) task();
|
|
70
|
+
}, delayMs);
|
|
71
|
+
return new BooleanDisposable(() => clearTimeout(id));
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
//#endregion
|
|
75
|
+
export { BaseScheduler };
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=base-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-scheduler.js","names":[],"sources":["../../src/schedulers/base-scheduler.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport {BooleanDisposable} from \"@/core/boolean-disposable.js\";\nimport {CompositeDisposable} from \"@/core/composite-disposable.js\";\nimport type {Disposable} from \"@/core/types.js\";\nimport {BasicWorker} from \"@/schedulers/basic-worker.js\";\nimport {disposed} from \"@/schedulers/disposed.js\";\nimport {toMillis} from \"@/schedulers/duration.js\";\nimport type {DurationInput, Scheduler, SchedulerWorker} from \"@/schedulers/types.js\";\n\n/** Base implementation for browser schedulers that share lifecycle behavior. */\nexport abstract class BaseScheduler implements Scheduler {\n /** Human-readable scheduler name. */\n public readonly name: string;\n /** Tracks whether this scheduler has been disposed. */\n private disposed = false;\n\n /** Creates a scheduler base with the provided name. */\n public constructor(name: string) {\n this.name = name;\n }\n\n /** Returns the current wall-clock time in milliseconds. */\n public now(): number {\n return Date.now();\n }\n\n /** Schedules a single task, optionally after a delay. */\n public abstract schedule(task: () => void, delay?: DurationInput): Disposable;\n\n /** Schedules a periodic task using this scheduler for the first execution. */\n public schedulePeriodically(task: () => void, initialDelay?: DurationInput, period?: DurationInput): Disposable {\n if (this.disposed) {\n return disposed();\n }\n const composite = new CompositeDisposable();\n const start = this.schedule(() => {\n if (composite.isDisposed()) {\n return;\n }\n task();\n const id = setInterval(() => {\n if (!composite.isDisposed() && !this.disposed) {\n task();\n }\n }, Math.max(1, toMillis(period)));\n composite.add(new BooleanDisposable(() => clearInterval(id)));\n }, initialDelay);\n composite.add(start);\n return composite;\n }\n\n /** Creates a worker that tracks tasks for grouped disposal. */\n public createWorker(): SchedulerWorker {\n return new BasicWorker(this);\n }\n\n /** Marks this scheduler as disposed. */\n public dispose(): void {\n this.disposed = true;\n }\n\n /** Returns true when this scheduler is disposed. */\n public isDisposed(): boolean {\n return this.disposed;\n }\n\n /** Returns an already-disposed disposable when this scheduler is disposed. */\n protected disposedIfNeeded(): Disposable | undefined {\n return this.disposed ? disposed() : undefined;\n }\n\n /** Schedules a timeout-backed task with disposal and disposed-state checks. */\n protected scheduleTimeout(task: () => void, delayMs = 0): Disposable {\n if (this.disposed) {\n return disposed();\n }\n const id = setTimeout(() => {\n if (!this.disposed) {\n task();\n }\n }, delayMs);\n return new BooleanDisposable(() => clearTimeout(id));\n }\n}\n"],"mappings":";;;;;;;;;;;;AAaA,IAAsB,gBAAtB,MAAyD;;CAOrD,YAAmB,MAAc;;;;GALjC;;;;;;GAEA;GAAmB;;EAIf,KAAK,OAAO;CAChB;;CAGA,MAAqB;EACjB,OAAO,KAAK,IAAI;CACpB;;CAMA,qBAA4B,MAAkB,cAA8B,QAAoC;EAC5G,IAAI,KAAK,UACL,OAAO,SAAS;EAEpB,MAAM,YAAY,IAAI,oBAAoB;EAC1C,MAAM,QAAQ,KAAK,eAAe;GAC9B,IAAI,UAAU,WAAW,GACrB;GAEJ,KAAK;GACL,MAAM,KAAK,kBAAkB;IACzB,IAAI,CAAC,UAAU,WAAW,KAAK,CAAC,KAAK,UACjC,KAAK;GAEb,GAAG,KAAK,IAAI,GAAG,SAAS,MAAM,CAAC,CAAC;GAChC,UAAU,IAAI,IAAI,wBAAwB,cAAc,EAAE,CAAC,CAAC;EAChE,GAAG,YAAY;EACf,UAAU,IAAI,KAAK;EACnB,OAAO;CACX;;CAGA,eAAuC;EACnC,OAAO,IAAI,YAAY,IAAI;CAC/B;;CAGA,UAAuB;EACnB,KAAK,WAAW;CACpB;;CAGA,aAA6B;EACzB,OAAO,KAAK;CAChB;;CAGA,mBAAqD;EACjD,OAAO,KAAK,WAAW,SAAS,IAAI;CACxC;;CAGA,gBAA0B,MAAkB,UAAU,GAAe;EACjE,IAAI,KAAK,UACL,OAAO,SAAS;EAEpB,MAAM,KAAK,iBAAiB;GACxB,IAAI,CAAC,KAAK,UACN,KAAK;EAEb,GAAG,OAAO;EACV,OAAO,IAAI,wBAAwB,aAAa,EAAE,CAAC;CACvD;AACJ"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Disposable } from "../core/types.js";
|
|
2
|
+
import type { DurationInput, Scheduler, SchedulerWorker } from "./types.js";
|
|
3
|
+
/** Scheduler worker that tracks child tasks in a composite disposable. */
|
|
4
|
+
export declare class BasicWorker implements SchedulerWorker {
|
|
5
|
+
/** Tasks currently owned by this worker, allocated only after a task needs tracking. */
|
|
6
|
+
private tasks;
|
|
7
|
+
/** Tracks whether this worker has been disposed. */
|
|
8
|
+
private disposed;
|
|
9
|
+
/** Scheduler used to create tracked tasks. */
|
|
10
|
+
private readonly scheduler;
|
|
11
|
+
/** Creates a worker backed by the provided scheduler. */
|
|
12
|
+
constructor(scheduler: Scheduler);
|
|
13
|
+
/** Schedules a task and tracks it for disposal. */
|
|
14
|
+
schedule(task: () => void, delay?: DurationInput): Disposable;
|
|
15
|
+
/** Schedules a periodic task and tracks it for disposal. */
|
|
16
|
+
schedulePeriodically(task: () => void, initialDelay?: DurationInput, period?: DurationInput): Disposable;
|
|
17
|
+
/** Disposes all tasks scheduled through this worker. */
|
|
18
|
+
dispose(): void;
|
|
19
|
+
/** Returns true after this worker has been disposed. */
|
|
20
|
+
isDisposed(): boolean;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=basic-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic-worker.d.ts","sourceRoot":"","sources":["../../src/schedulers/basic-worker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAGrF,0EAA0E;AAC1E,qBAAa,WAAY,YAAW,eAAe;IAC/C,wFAAwF;IACxF,OAAO,CAAC,KAAK,CAAkC;IAC/C,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAS;IACzB,8CAA8C;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,yDAAyD;IACzD,YAAmB,SAAS,EAAE,SAAS,EAEtC;IAED,mDAAmD;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAqBnE;IAED,4DAA4D;IACrD,oBAAoB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,UAAU,CAW9G;IAED,wDAAwD;IACjD,OAAO,IAAI,IAAI,CAOrB;IAED,wDAAwD;IACjD,UAAU,IAAI,OAAO,CAE3B;CACJ"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.js";
|
|
2
|
+
import { CompositeDisposable } from "../core/composite-disposable.js";
|
|
3
|
+
import { disposed } from "./disposed.js";
|
|
4
|
+
//#region src/schedulers/basic-worker.ts
|
|
5
|
+
/**
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* Browser scheduler implementations and contracts.
|
|
8
|
+
*/
|
|
9
|
+
/** Scheduler worker that tracks child tasks in a composite disposable. */
|
|
10
|
+
var BasicWorker = class {
|
|
11
|
+
/** Creates a worker backed by the provided scheduler. */
|
|
12
|
+
constructor(scheduler) {
|
|
13
|
+
_defineProperty(
|
|
14
|
+
this,
|
|
15
|
+
/** Tasks currently owned by this worker, allocated only after a task needs tracking. */
|
|
16
|
+
"tasks",
|
|
17
|
+
void 0
|
|
18
|
+
);
|
|
19
|
+
_defineProperty(
|
|
20
|
+
this,
|
|
21
|
+
/** Tracks whether this worker has been disposed. */
|
|
22
|
+
"disposed",
|
|
23
|
+
false
|
|
24
|
+
);
|
|
25
|
+
_defineProperty(
|
|
26
|
+
this,
|
|
27
|
+
/** Scheduler used to create tracked tasks. */
|
|
28
|
+
"scheduler",
|
|
29
|
+
void 0
|
|
30
|
+
);
|
|
31
|
+
this.scheduler = scheduler;
|
|
32
|
+
}
|
|
33
|
+
/** Schedules a task and tracks it for disposal. */
|
|
34
|
+
schedule(task, delay) {
|
|
35
|
+
if (this.disposed) return disposed();
|
|
36
|
+
let tracked;
|
|
37
|
+
let finished = false;
|
|
38
|
+
const disposable = this.scheduler.schedule(() => {
|
|
39
|
+
if (tracked) this.tasks?.remove(tracked);
|
|
40
|
+
else finished = true;
|
|
41
|
+
task();
|
|
42
|
+
}, delay);
|
|
43
|
+
tracked = disposable;
|
|
44
|
+
if (this.disposed) disposable.dispose();
|
|
45
|
+
else if (!finished && !disposable.isDisposed()) (this.tasks ?? (this.tasks = new CompositeDisposable())).add(disposable);
|
|
46
|
+
return disposable;
|
|
47
|
+
}
|
|
48
|
+
/** Schedules a periodic task and tracks it for disposal. */
|
|
49
|
+
schedulePeriodically(task, initialDelay, period) {
|
|
50
|
+
if (this.disposed) return disposed();
|
|
51
|
+
const disposable = this.scheduler.schedulePeriodically(task, initialDelay, period);
|
|
52
|
+
if (this.disposed) disposable.dispose();
|
|
53
|
+
else if (!disposable.isDisposed()) (this.tasks ?? (this.tasks = new CompositeDisposable())).add(disposable);
|
|
54
|
+
return disposable;
|
|
55
|
+
}
|
|
56
|
+
/** Disposes all tasks scheduled through this worker. */
|
|
57
|
+
dispose() {
|
|
58
|
+
if (this.disposed) return;
|
|
59
|
+
this.disposed = true;
|
|
60
|
+
this.tasks?.dispose();
|
|
61
|
+
this.tasks = void 0;
|
|
62
|
+
}
|
|
63
|
+
/** Returns true after this worker has been disposed. */
|
|
64
|
+
isDisposed() {
|
|
65
|
+
return this.disposed;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
//#endregion
|
|
69
|
+
export { BasicWorker };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=basic-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic-worker.js","names":[],"sources":["../../src/schedulers/basic-worker.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport {CompositeDisposable} from \"@/core/composite-disposable.js\";\nimport type {Disposable} from \"@/core/types.js\";\nimport type {DurationInput, Scheduler, SchedulerWorker} from \"@/schedulers/types.js\";\nimport {disposed} from \"@/schedulers/disposed.js\";\n\n/** Scheduler worker that tracks child tasks in a composite disposable. */\nexport class BasicWorker implements SchedulerWorker {\n /** Tasks currently owned by this worker, allocated only after a task needs tracking. */\n private tasks: CompositeDisposable | undefined;\n /** Tracks whether this worker has been disposed. */\n private disposed = false;\n /** Scheduler used to create tracked tasks. */\n private readonly scheduler: Scheduler;\n\n /** Creates a worker backed by the provided scheduler. */\n public constructor(scheduler: Scheduler) {\n this.scheduler = scheduler;\n }\n\n /** Schedules a task and tracks it for disposal. */\n public schedule(task: () => void, delay?: DurationInput): Disposable {\n if (this.disposed) {\n return disposed();\n }\n let tracked: Disposable | undefined;\n let finished = false;\n const disposable = this.scheduler.schedule(() => {\n if (tracked) {\n this.tasks?.remove(tracked);\n } else {\n finished = true;\n }\n task();\n }, delay);\n tracked = disposable;\n if (this.disposed) {\n disposable.dispose();\n } else if (!finished && !disposable.isDisposed()) {\n (this.tasks ??= new CompositeDisposable()).add(disposable);\n }\n return disposable;\n }\n\n /** Schedules a periodic task and tracks it for disposal. */\n public schedulePeriodically(task: () => void, initialDelay?: DurationInput, period?: DurationInput): Disposable {\n if (this.disposed) {\n return disposed();\n }\n const disposable = this.scheduler.schedulePeriodically(task, initialDelay, period);\n if (this.disposed) {\n disposable.dispose();\n } else if (!disposable.isDisposed()) {\n (this.tasks ??= new CompositeDisposable()).add(disposable);\n }\n return disposable;\n }\n\n /** Disposes all tasks scheduled through this worker. */\n public dispose(): void {\n if (this.disposed) {\n return;\n }\n this.disposed = true;\n this.tasks?.dispose();\n this.tasks = undefined;\n }\n\n /** Returns true after this worker has been disposed. */\n public isDisposed(): boolean {\n return this.disposed;\n }\n}\n"],"mappings":";;;;;;;;;AAUA,IAAa,cAAb,MAAoD;;CAShD,YAAmB,WAAsB;;;;GAPzC;;;;;;GAEA;GAAmB;;;;;GAEnB;;;EAII,KAAK,YAAY;CACrB;;CAGA,SAAgB,MAAkB,OAAmC;EACjE,IAAI,KAAK,UACL,OAAO,SAAS;EAEpB,IAAI;EACJ,IAAI,WAAW;EACf,MAAM,aAAa,KAAK,UAAU,eAAe;GAC7C,IAAI,SACA,KAAK,OAAO,OAAO,OAAO;QAE1B,WAAW;GAEf,KAAK;EACT,GAAG,KAAK;EACR,UAAU;EACV,IAAI,KAAK,UACL,WAAW,QAAQ;OAChB,IAAI,CAAC,YAAY,CAAC,WAAW,WAAW,GAC3C,CAAC,KAAK,UAAL,KAAK,QAAU,IAAI,oBAAoB,GAAA,CAAG,IAAI,UAAU;EAE7D,OAAO;CACX;;CAGA,qBAA4B,MAAkB,cAA8B,QAAoC;EAC5G,IAAI,KAAK,UACL,OAAO,SAAS;EAEpB,MAAM,aAAa,KAAK,UAAU,qBAAqB,MAAM,cAAc,MAAM;EACjF,IAAI,KAAK,UACL,WAAW,QAAQ;OAChB,IAAI,CAAC,WAAW,WAAW,GAC9B,CAAC,KAAK,UAAL,KAAK,QAAU,IAAI,oBAAoB,GAAA,CAAG,IAAI,UAAU;EAE7D,OAAO;CACX;;CAGA,UAAuB;EACnB,IAAI,KAAK,UACL;EAEJ,KAAK,WAAW;EAChB,KAAK,OAAO,QAAQ;EACpB,KAAK,QAAQ;CACjB;;CAGA,aAA6B;EACzB,OAAO,KAAK;CAChB;AACJ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import { MacroScheduler } from "./macro-scheduler.js";
|
|
6
|
+
import type { DurationInput } from "./types.js";
|
|
7
|
+
/** Scheduler that applies a configured delay when no call-specific delay is provided. */
|
|
8
|
+
export declare class DelayScheduler extends MacroScheduler {
|
|
9
|
+
/** Creates a scheduler with the provided default delay. */
|
|
10
|
+
constructor(delay: DurationInput, name?: string);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=delay-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delay-scheduler.d.ts","sourceRoot":"","sources":["../../src/schedulers/delay-scheduler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEzD,yFAAyF;AACzF,qBAAa,cAAe,SAAQ,cAAc;IAC9C,2DAA2D;IAC3D,YAAmB,KAAK,EAAE,aAAa,EAAE,IAAI,SAAU,EAEtD;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MacroScheduler } from "./macro-scheduler.js";
|
|
2
|
+
//#region src/schedulers/delay-scheduler.ts
|
|
3
|
+
/**
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* Browser scheduler implementations and contracts.
|
|
6
|
+
*/
|
|
7
|
+
/** Scheduler that applies a configured delay when no call-specific delay is provided. */
|
|
8
|
+
var DelayScheduler = class extends MacroScheduler {
|
|
9
|
+
/** Creates a scheduler with the provided default delay. */
|
|
10
|
+
constructor(delay, name = "delay") {
|
|
11
|
+
super(name, delay);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { DelayScheduler };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=delay-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delay-scheduler.js","names":[],"sources":["../../src/schedulers/delay-scheduler.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport {MacroScheduler} from \"@/schedulers/macro-scheduler.js\";\nimport type {DurationInput} from \"@/schedulers/types.js\";\n\n/** Scheduler that applies a configured delay when no call-specific delay is provided. */\nexport class DelayScheduler extends MacroScheduler {\n /** Creates a scheduler with the provided default delay. */\n public constructor(delay: DurationInput, name = \"delay\") {\n super(name, delay);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,iBAAb,cAAoC,eAAe;;CAE/C,YAAmB,OAAsB,OAAO,SAAS;EACrD,MAAM,MAAM,KAAK;CACrB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disposed.d.ts","sourceRoot":"","sources":["../../src/schedulers/disposed.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEhD,2DAA2D;AAC3D,wBAAgB,QAAQ,IAAI,UAAU,CAErC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Disposables } from "../core/disposables.js";
|
|
2
|
+
//#region src/schedulers/disposed.ts
|
|
3
|
+
/**
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* Browser scheduler implementations and contracts.
|
|
6
|
+
*/
|
|
7
|
+
/** Returns a no-op disposable that is already disposed. */
|
|
8
|
+
function disposed() {
|
|
9
|
+
return Disposables.disposed();
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { disposed };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=disposed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disposed.js","names":[],"sources":["../../src/schedulers/disposed.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport {Disposables} from \"@/core/disposables.js\";\nimport type {Disposable} from \"@/core/types.js\";\n\n/** Returns a no-op disposable that is already disposed. */\nexport function disposed(): Disposable {\n return Disposables.disposed();\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,WAAuB;CACnC,OAAO,YAAY,SAAS;AAChC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import type { DurationInput } from "./types.js";
|
|
6
|
+
/** Converts a duration input into milliseconds. */
|
|
7
|
+
export declare function toMillis(duration: DurationInput | undefined): number;
|
|
8
|
+
//# sourceMappingURL=duration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/schedulers/duration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEzD,mDAAmD;AACnD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAcpE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/schedulers/duration.ts
|
|
2
|
+
/** Converts a duration input into milliseconds. */
|
|
3
|
+
function toMillis(duration) {
|
|
4
|
+
if (duration === void 0) return 0;
|
|
5
|
+
if (typeof duration === "number") return Math.max(0, duration);
|
|
6
|
+
return Math.max(0, (duration.milliseconds ?? 0) + (duration.seconds ?? 0) * 1e3 + (duration.minutes ?? 0) * 6e4 + (duration.hours ?? 0) * 36e5);
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { toMillis };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=duration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.js","names":[],"sources":["../../src/schedulers/duration.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport type {DurationInput} from \"@/schedulers/types.js\";\n\n/** Converts a duration input into milliseconds. */\nexport function toMillis(duration: DurationInput | undefined): number {\n if (duration === undefined) {\n return 0;\n }\n if (typeof duration === \"number\") {\n return Math.max(0, duration);\n }\n return Math.max(\n 0,\n (duration.milliseconds ?? 0) +\n (duration.seconds ?? 0) * 1_000 +\n (duration.minutes ?? 0) * 60_000 +\n (duration.hours ?? 0) * 3_600_000\n );\n}\n"],"mappings":";;AAOA,SAAgB,SAAS,UAA6C;CAClE,IAAI,aAAa,QACb,OAAO;CAEX,IAAI,OAAO,aAAa,UACpB,OAAO,KAAK,IAAI,GAAG,QAAQ;CAE/B,OAAO,KAAK,IACR,IACC,SAAS,gBAAgB,MACzB,SAAS,WAAW,KAAK,OACzB,SAAS,WAAW,KAAK,OACzB,SAAS,SAAS,KAAK,IAC5B;AACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Disposable } from "../core/types.js";
|
|
2
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
3
|
+
import type { DurationInput, Executor } from "./types.js";
|
|
4
|
+
/** Scheduler backed by a caller-provided task executor. */
|
|
5
|
+
export declare class ExecutorScheduler extends BaseScheduler {
|
|
6
|
+
/** Executor callback used for immediate task scheduling. */
|
|
7
|
+
private readonly executor;
|
|
8
|
+
/** Creates a scheduler backed by a user-provided executor. */
|
|
9
|
+
constructor(name: string, executor: Executor);
|
|
10
|
+
/** Schedules a task through the executor. */
|
|
11
|
+
schedule(task: () => void, delay?: DurationInput): Disposable;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=executor-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor-scheduler.d.ts","sourceRoot":"","sources":["../../src/schedulers/executor-scheduler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,aAAa,EAAC,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAGnE,2DAA2D;AAC3D,qBAAa,iBAAkB,SAAQ,aAAa;IAChD,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAEpC,8DAA8D;IAC9D,YAAmB,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAGlD;IAED,6CAA6C;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAoBnE;CACJ"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.js";
|
|
2
|
+
import { BooleanDisposable } from "../core/boolean-disposable.js";
|
|
3
|
+
import { toMillis } from "./duration.js";
|
|
4
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
5
|
+
//#region src/schedulers/executor-scheduler.ts
|
|
6
|
+
/**
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* Browser scheduler implementations and contracts.
|
|
9
|
+
*/
|
|
10
|
+
/** Scheduler backed by a caller-provided task executor. */
|
|
11
|
+
var ExecutorScheduler = class extends BaseScheduler {
|
|
12
|
+
/** Creates a scheduler backed by a user-provided executor. */
|
|
13
|
+
constructor(name, executor) {
|
|
14
|
+
super(name);
|
|
15
|
+
_defineProperty(
|
|
16
|
+
this,
|
|
17
|
+
/** Executor callback used for immediate task scheduling. */
|
|
18
|
+
"executor",
|
|
19
|
+
void 0
|
|
20
|
+
);
|
|
21
|
+
this.executor = executor;
|
|
22
|
+
}
|
|
23
|
+
/** Schedules a task through the executor. */
|
|
24
|
+
schedule(task, delay) {
|
|
25
|
+
const disposedDisposable = this.disposedIfNeeded();
|
|
26
|
+
if (disposedDisposable) return disposedDisposable;
|
|
27
|
+
const delayMs = toMillis(delay);
|
|
28
|
+
if (delayMs > 0) return this.scheduleTimeout(() => {
|
|
29
|
+
this.schedule(task);
|
|
30
|
+
}, delayMs);
|
|
31
|
+
let cancelled = false;
|
|
32
|
+
this.executor(() => {
|
|
33
|
+
if (!cancelled && !this.isDisposed()) task();
|
|
34
|
+
});
|
|
35
|
+
return new BooleanDisposable(() => {
|
|
36
|
+
cancelled = true;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
41
|
+
export { ExecutorScheduler };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=executor-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor-scheduler.js","names":[],"sources":["../../src/schedulers/executor-scheduler.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport {BooleanDisposable} from \"@/core/boolean-disposable.js\";\nimport type {Disposable} from \"@/core/types.js\";\nimport {BaseScheduler} from \"@/schedulers/base-scheduler.js\";\nimport type {DurationInput, Executor} from \"@/schedulers/types.js\";\nimport {toMillis} from \"@/schedulers/duration.js\";\n\n/** Scheduler backed by a caller-provided task executor. */\nexport class ExecutorScheduler extends BaseScheduler {\n /** Executor callback used for immediate task scheduling. */\n private readonly executor: Executor;\n\n /** Creates a scheduler backed by a user-provided executor. */\n public constructor(name: string, executor: Executor) {\n super(name);\n this.executor = executor;\n }\n\n /** Schedules a task through the executor. */\n public schedule(task: () => void, delay?: DurationInput): Disposable {\n const disposedDisposable = this.disposedIfNeeded();\n if (disposedDisposable) {\n return disposedDisposable;\n }\n const delayMs = toMillis(delay);\n if (delayMs > 0) {\n return this.scheduleTimeout(() => {\n this.schedule(task);\n }, delayMs);\n }\n let cancelled = false;\n this.executor(() => {\n if (!cancelled && !this.isDisposed()) {\n task();\n }\n });\n return new BooleanDisposable(() => {\n cancelled = true;\n });\n }\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAa,oBAAb,cAAuC,cAAc;;CAKjD,YAAmB,MAAc,UAAoB;EACjD,MAAM,IAAI;;;;GAJd;;;EAKI,KAAK,WAAW;CACpB;;CAGA,SAAgB,MAAkB,OAAmC;EACjE,MAAM,qBAAqB,KAAK,iBAAiB;EACjD,IAAI,oBACA,OAAO;EAEX,MAAM,UAAU,SAAS,KAAK;EAC9B,IAAI,UAAU,GACV,OAAO,KAAK,sBAAsB;GAC9B,KAAK,SAAS,IAAI;EACtB,GAAG,OAAO;EAEd,IAAI,YAAY;EAChB,KAAK,eAAe;GAChB,IAAI,CAAC,aAAa,CAAC,KAAK,WAAW,GAC/B,KAAK;EAEb,CAAC;EACD,OAAO,IAAI,wBAAwB;GAC/B,YAAY;EAChB,CAAC;CACL;AACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import type { Disposable } from "../core/types.js";
|
|
6
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
7
|
+
import type { DurationInput } from "./types.js";
|
|
8
|
+
/** Scheduler that executes zero-delay tasks synchronously. */
|
|
9
|
+
export declare class ImmediateScheduler extends BaseScheduler {
|
|
10
|
+
/** Creates an immediate scheduler. */
|
|
11
|
+
constructor(name?: string);
|
|
12
|
+
/** Schedules a task synchronously when there is no delay. */
|
|
13
|
+
schedule(task: () => void, delay?: DurationInput): Disposable;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=immediate-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immediate-scheduler.d.ts","sourceRoot":"","sources":["../../src/schedulers/immediate-scheduler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAC,aAAa,EAAC,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEzD,8DAA8D;AAC9D,qBAAa,kBAAmB,SAAQ,aAAa;IACjD,sCAAsC;IACtC,YAAmB,IAAI,SAAc,EAEpC;IAED,6DAA6D;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAWnE;CACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { toMillis } from "./duration.js";
|
|
2
|
+
import { disposed } from "./disposed.js";
|
|
3
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
4
|
+
//#region src/schedulers/immediate-scheduler.ts
|
|
5
|
+
/** Scheduler that executes zero-delay tasks synchronously. */
|
|
6
|
+
var ImmediateScheduler = class extends BaseScheduler {
|
|
7
|
+
/** Creates an immediate scheduler. */
|
|
8
|
+
constructor(name = "immediate") {
|
|
9
|
+
super(name);
|
|
10
|
+
}
|
|
11
|
+
/** Schedules a task synchronously when there is no delay. */
|
|
12
|
+
schedule(task, delay) {
|
|
13
|
+
const disposedDisposable = this.disposedIfNeeded();
|
|
14
|
+
if (disposedDisposable) return disposedDisposable;
|
|
15
|
+
const delayMs = toMillis(delay);
|
|
16
|
+
if (delayMs > 0) return this.scheduleTimeout(task, delayMs);
|
|
17
|
+
task();
|
|
18
|
+
return disposed();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { ImmediateScheduler };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=immediate-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immediate-scheduler.js","names":[],"sources":["../../src/schedulers/immediate-scheduler.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport type {Disposable} from \"@/core/types.js\";\nimport {disposed} from \"@/schedulers/disposed.js\";\nimport {toMillis} from \"@/schedulers/duration.js\";\nimport {BaseScheduler} from \"@/schedulers/base-scheduler.js\";\nimport type {DurationInput} from \"@/schedulers/types.js\";\n\n/** Scheduler that executes zero-delay tasks synchronously. */\nexport class ImmediateScheduler extends BaseScheduler {\n /** Creates an immediate scheduler. */\n public constructor(name = \"immediate\") {\n super(name);\n }\n\n /** Schedules a task synchronously when there is no delay. */\n public schedule(task: () => void, delay?: DurationInput): Disposable {\n const disposedDisposable = this.disposedIfNeeded();\n if (disposedDisposable) {\n return disposedDisposable;\n }\n const delayMs = toMillis(delay);\n if (delayMs > 0) {\n return this.scheduleTimeout(task, delayMs);\n }\n task();\n return disposed();\n }\n}\n"],"mappings":";;;;;AAWA,IAAa,qBAAb,cAAwC,cAAc;;CAElD,YAAmB,OAAO,aAAa;EACnC,MAAM,IAAI;CACd;;CAGA,SAAgB,MAAkB,OAAmC;EACjE,MAAM,qBAAqB,KAAK,iBAAiB;EACjD,IAAI,oBACA,OAAO;EAEX,MAAM,UAAU,SAAS,KAAK;EAC9B,IAAI,UAAU,GACV,OAAO,KAAK,gBAAgB,MAAM,OAAO;EAE7C,KAAK;EACL,OAAO,SAAS;CACpB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schedulers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AACtD,YAAY,EAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import { MacroScheduler } from "./macro-scheduler.js";
|
|
6
|
+
import type { DurationInput } from "./types.js";
|
|
7
|
+
/** Scheduler that applies a configured interval as its default timing cadence. */
|
|
8
|
+
export declare class IntervalScheduler extends MacroScheduler {
|
|
9
|
+
/** Creates a scheduler with the provided default interval. */
|
|
10
|
+
constructor(period: DurationInput, name?: string);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=interval-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interval-scheduler.d.ts","sourceRoot":"","sources":["../../src/schedulers/interval-scheduler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEzD,kFAAkF;AAClF,qBAAa,iBAAkB,SAAQ,cAAc;IACjD,8DAA8D;IAC9D,YAAmB,MAAM,EAAE,aAAa,EAAE,IAAI,SAAa,EAE1D;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MacroScheduler } from "./macro-scheduler.js";
|
|
2
|
+
//#region src/schedulers/interval-scheduler.ts
|
|
3
|
+
/**
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* Browser scheduler implementations and contracts.
|
|
6
|
+
*/
|
|
7
|
+
/** Scheduler that applies a configured interval as its default timing cadence. */
|
|
8
|
+
var IntervalScheduler = class extends MacroScheduler {
|
|
9
|
+
/** Creates a scheduler with the provided default interval. */
|
|
10
|
+
constructor(period, name = "interval") {
|
|
11
|
+
super(name, period);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { IntervalScheduler };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=interval-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interval-scheduler.js","names":[],"sources":["../../src/schedulers/interval-scheduler.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport {MacroScheduler} from \"@/schedulers/macro-scheduler.js\";\nimport type {DurationInput} from \"@/schedulers/types.js\";\n\n/** Scheduler that applies a configured interval as its default timing cadence. */\nexport class IntervalScheduler extends MacroScheduler {\n /** Creates a scheduler with the provided default interval. */\n public constructor(period: DurationInput, name = \"interval\") {\n super(name, period);\n }\n}\n"],"mappings":";;;;;;;AAQA,IAAa,oBAAb,cAAuC,eAAe;;CAElD,YAAmB,QAAuB,OAAO,YAAY;EACzD,MAAM,MAAM,MAAM;CACtB;AACJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Browser scheduler implementations and contracts.
|
|
4
|
+
*/
|
|
5
|
+
import type { Disposable } from "../core/types.js";
|
|
6
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
7
|
+
import type { DurationInput } from "./types.js";
|
|
8
|
+
/** Scheduler that queues tasks through the browser macrotask queue. */
|
|
9
|
+
export declare class MacroScheduler extends BaseScheduler {
|
|
10
|
+
/** Optional duration applied when a schedule call does not provide one. */
|
|
11
|
+
private readonly defaultDelay;
|
|
12
|
+
/** Creates a macrotask scheduler. */
|
|
13
|
+
constructor(name?: string, defaultDelay?: DurationInput);
|
|
14
|
+
/** Schedules a task with `setTimeout`. */
|
|
15
|
+
schedule(task: () => void, delay?: DurationInput): Disposable;
|
|
16
|
+
/** Schedules a repeated task with the default duration as fallback cadence. */
|
|
17
|
+
schedulePeriodically(task: () => void, initialDelay?: DurationInput, period?: DurationInput): Disposable;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=macro-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macro-scheduler.d.ts","sourceRoot":"","sources":["../../src/schedulers/macro-scheduler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,aAAa,EAAC,MAAM,gCAAgC,CAAC;AAE7D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEzD,uEAAuE;AACvE,qBAAa,cAAe,SAAQ,aAAa;IAC7C,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD,qCAAqC;IACrC,YAAmB,IAAI,SAAU,EAAE,YAAY,CAAC,EAAE,aAAa,EAG9D;IAED,0CAA0C;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAEnE;IAED,+EAA+E;IAC/D,oBAAoB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,UAAU,CAEvH;CACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _defineProperty from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.js";
|
|
2
|
+
import { toMillis } from "./duration.js";
|
|
3
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
4
|
+
//#region src/schedulers/macro-scheduler.ts
|
|
5
|
+
/** Scheduler that queues tasks through the browser macrotask queue. */
|
|
6
|
+
var MacroScheduler = class extends BaseScheduler {
|
|
7
|
+
/** Creates a macrotask scheduler. */
|
|
8
|
+
constructor(name = "macro", defaultDelay) {
|
|
9
|
+
super(name);
|
|
10
|
+
_defineProperty(
|
|
11
|
+
this,
|
|
12
|
+
/** Optional duration applied when a schedule call does not provide one. */
|
|
13
|
+
"defaultDelay",
|
|
14
|
+
void 0
|
|
15
|
+
);
|
|
16
|
+
this.defaultDelay = defaultDelay;
|
|
17
|
+
}
|
|
18
|
+
/** Schedules a task with `setTimeout`. */
|
|
19
|
+
schedule(task, delay) {
|
|
20
|
+
return this.scheduleTimeout(task, toMillis(delay ?? this.defaultDelay));
|
|
21
|
+
}
|
|
22
|
+
/** Schedules a repeated task with the default duration as fallback cadence. */
|
|
23
|
+
schedulePeriodically(task, initialDelay, period) {
|
|
24
|
+
return super.schedulePeriodically(task, initialDelay ?? this.defaultDelay, period ?? this.defaultDelay);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { MacroScheduler };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=macro-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macro-scheduler.js","names":[],"sources":["../../src/schedulers/macro-scheduler.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport type {Disposable} from \"@/core/types.js\";\nimport {BaseScheduler} from \"@/schedulers/base-scheduler.js\";\nimport {toMillis} from \"@/schedulers/duration.js\";\nimport type {DurationInput} from \"@/schedulers/types.js\";\n\n/** Scheduler that queues tasks through the browser macrotask queue. */\nexport class MacroScheduler extends BaseScheduler {\n /** Optional duration applied when a schedule call does not provide one. */\n private readonly defaultDelay: DurationInput | undefined;\n\n /** Creates a macrotask scheduler. */\n public constructor(name = \"macro\", defaultDelay?: DurationInput) {\n super(name);\n this.defaultDelay = defaultDelay;\n }\n\n /** Schedules a task with `setTimeout`. */\n public schedule(task: () => void, delay?: DurationInput): Disposable {\n return this.scheduleTimeout(task, toMillis(delay ?? this.defaultDelay));\n }\n\n /** Schedules a repeated task with the default duration as fallback cadence. */\n public override schedulePeriodically(task: () => void, initialDelay?: DurationInput, period?: DurationInput): Disposable {\n return super.schedulePeriodically(task, initialDelay ?? this.defaultDelay, period ?? this.defaultDelay);\n }\n}\n"],"mappings":";;;;;AAUA,IAAa,iBAAb,cAAoC,cAAc;;CAK9C,YAAmB,OAAO,SAAS,cAA8B;EAC7D,MAAM,IAAI;;;;GAJd;;;EAKI,KAAK,eAAe;CACxB;;CAGA,SAAgB,MAAkB,OAAmC;EACjE,OAAO,KAAK,gBAAgB,MAAM,SAAS,SAAS,KAAK,YAAY,CAAC;CAC1E;;CAGA,qBAAqC,MAAkB,cAA8B,QAAoC;EACrH,OAAO,MAAM,qBAAqB,MAAM,gBAAgB,KAAK,cAAc,UAAU,KAAK,YAAY;CAC1G;AACJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Disposable } from "../core/types.js";
|
|
2
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
3
|
+
import type { DurationInput } from "./types.js";
|
|
4
|
+
/** Scheduler that queues zero-delay tasks in the browser microtask queue. */
|
|
5
|
+
export declare class MicrotaskScheduler extends BaseScheduler {
|
|
6
|
+
/** Creates a microtask scheduler. */
|
|
7
|
+
constructor(name?: string);
|
|
8
|
+
/** Schedules a task on the microtask queue when there is no delay. */
|
|
9
|
+
schedule(task: () => void, delay?: DurationInput): Disposable;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=microtask-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microtask-scheduler.d.ts","sourceRoot":"","sources":["../../src/schedulers/microtask-scheduler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAC,aAAa,EAAC,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEzD,6EAA6E;AAC7E,qBAAa,kBAAmB,SAAQ,aAAa;IACjD,qCAAqC;IACrC,YAAmB,IAAI,SAAc,EAEpC;IAED,sEAAsE;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAkBnE;CACJ"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BooleanDisposable } from "../core/boolean-disposable.js";
|
|
2
|
+
import { toMillis } from "./duration.js";
|
|
3
|
+
import { BaseScheduler } from "./base-scheduler.js";
|
|
4
|
+
import { scheduleMicrotask } from "../internal/microtask.js";
|
|
5
|
+
//#region src/schedulers/microtask-scheduler.ts
|
|
6
|
+
/**
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* Browser scheduler implementations and contracts.
|
|
9
|
+
*/
|
|
10
|
+
/** Scheduler that queues zero-delay tasks in the browser microtask queue. */
|
|
11
|
+
var MicrotaskScheduler = class extends BaseScheduler {
|
|
12
|
+
/** Creates a microtask scheduler. */
|
|
13
|
+
constructor(name = "microtask") {
|
|
14
|
+
super(name);
|
|
15
|
+
}
|
|
16
|
+
/** Schedules a task on the microtask queue when there is no delay. */
|
|
17
|
+
schedule(task, delay) {
|
|
18
|
+
const disposedDisposable = this.disposedIfNeeded();
|
|
19
|
+
if (disposedDisposable) return disposedDisposable;
|
|
20
|
+
const delayMs = toMillis(delay);
|
|
21
|
+
if (delayMs > 0) return this.scheduleTimeout(task, delayMs);
|
|
22
|
+
let cancelled = false;
|
|
23
|
+
scheduleMicrotask(() => {
|
|
24
|
+
if (!cancelled && !this.isDisposed()) task();
|
|
25
|
+
});
|
|
26
|
+
return new BooleanDisposable(() => {
|
|
27
|
+
cancelled = true;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
export { MicrotaskScheduler };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=microtask-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microtask-scheduler.js","names":[],"sources":["../../src/schedulers/microtask-scheduler.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * Browser scheduler implementations and contracts.\n */\nimport {BooleanDisposable} from \"@/core/boolean-disposable.js\";\nimport type {Disposable} from \"@/core/types.js\";\nimport {scheduleMicrotask} from \"@/internal/microtask.js\";\nimport {toMillis} from \"@/schedulers/duration.js\";\nimport {BaseScheduler} from \"@/schedulers/base-scheduler.js\";\nimport type {DurationInput} from \"@/schedulers/types.js\";\n\n/** Scheduler that queues zero-delay tasks in the browser microtask queue. */\nexport class MicrotaskScheduler extends BaseScheduler {\n /** Creates a microtask scheduler. */\n public constructor(name = \"microtask\") {\n super(name);\n }\n\n /** Schedules a task on the microtask queue when there is no delay. */\n public schedule(task: () => void, delay?: DurationInput): Disposable {\n const disposedDisposable = this.disposedIfNeeded();\n if (disposedDisposable) {\n return disposedDisposable;\n }\n const delayMs = toMillis(delay);\n if (delayMs > 0) {\n return this.scheduleTimeout(task, delayMs);\n }\n let cancelled = false;\n scheduleMicrotask(() => {\n if (!cancelled && !this.isDisposed()) {\n task();\n }\n });\n return new BooleanDisposable(() => {\n cancelled = true;\n });\n }\n}\n"],"mappings":";;;;;;;;;;AAYA,IAAa,qBAAb,cAAwC,cAAc;;CAElD,YAAmB,OAAO,aAAa;EACnC,MAAM,IAAI;CACd;;CAGA,SAAgB,MAAkB,OAAmC;EACjE,MAAM,qBAAqB,KAAK,iBAAiB;EACjD,IAAI,oBACA,OAAO;EAEX,MAAM,UAAU,SAAS,KAAK;EAC9B,IAAI,UAAU,GACV,OAAO,KAAK,gBAAgB,MAAM,OAAO;EAE7C,IAAI,YAAY;EAChB,wBAAwB;GACpB,IAAI,CAAC,aAAa,CAAC,KAAK,WAAW,GAC/B,KAAK;EAEb,CAAC;EACD,OAAO,IAAI,wBAAwB;GAC/B,YAAY;EAChB,CAAC;CACL;AACJ"}
|