aeon-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +87 -0
  2. package/dist/adapter.d.ts +17 -0
  3. package/dist/adapter.d.ts.map +1 -0
  4. package/dist/asyncIterator.d.ts +23 -0
  5. package/dist/asyncIterator.d.ts.map +1 -0
  6. package/dist/behavior.d.ts +140 -0
  7. package/dist/behavior.d.ts.map +1 -0
  8. package/dist/combinators/aggregate.d.ts +27 -0
  9. package/dist/combinators/aggregate.d.ts.map +1 -0
  10. package/dist/combinators/attach.d.ts +21 -0
  11. package/dist/combinators/attach.d.ts.map +1 -0
  12. package/dist/combinators/chain.d.ts +17 -0
  13. package/dist/combinators/chain.d.ts.map +1 -0
  14. package/dist/combinators/combine.d.ts +24 -0
  15. package/dist/combinators/combine.d.ts.map +1 -0
  16. package/dist/combinators/cons.d.ts +14 -0
  17. package/dist/combinators/cons.d.ts.map +1 -0
  18. package/dist/combinators/constant.d.ts +13 -0
  19. package/dist/combinators/constant.d.ts.map +1 -0
  20. package/dist/combinators/dedupe.d.ts +16 -0
  21. package/dist/combinators/dedupe.d.ts.map +1 -0
  22. package/dist/combinators/ensure.d.ts +13 -0
  23. package/dist/combinators/ensure.d.ts.map +1 -0
  24. package/dist/combinators/error.d.ts +29 -0
  25. package/dist/combinators/error.d.ts.map +1 -0
  26. package/dist/combinators/exhaustMap.d.ts +17 -0
  27. package/dist/combinators/exhaustMap.d.ts.map +1 -0
  28. package/dist/combinators/filter.d.ts +16 -0
  29. package/dist/combinators/filter.d.ts.map +1 -0
  30. package/dist/combinators/firstLast.d.ts +23 -0
  31. package/dist/combinators/firstLast.d.ts.map +1 -0
  32. package/dist/combinators/forkJoin.d.ts +14 -0
  33. package/dist/combinators/forkJoin.d.ts.map +1 -0
  34. package/dist/combinators/fromPromise.d.ts +17 -0
  35. package/dist/combinators/fromPromise.d.ts.map +1 -0
  36. package/dist/combinators/index.d.ts +31 -0
  37. package/dist/combinators/index.d.ts.map +1 -0
  38. package/dist/combinators/map.d.ts +16 -0
  39. package/dist/combinators/map.d.ts.map +1 -0
  40. package/dist/combinators/merge.d.ts +17 -0
  41. package/dist/combinators/merge.d.ts.map +1 -0
  42. package/dist/combinators/mergeMap.d.ts +18 -0
  43. package/dist/combinators/mergeMap.d.ts.map +1 -0
  44. package/dist/combinators/orElse.d.ts +14 -0
  45. package/dist/combinators/orElse.d.ts.map +1 -0
  46. package/dist/combinators/pairwise.d.ts +14 -0
  47. package/dist/combinators/pairwise.d.ts.map +1 -0
  48. package/dist/combinators/race.d.ts +13 -0
  49. package/dist/combinators/race.d.ts.map +1 -0
  50. package/dist/combinators/retry.d.ts +18 -0
  51. package/dist/combinators/retry.d.ts.map +1 -0
  52. package/dist/combinators/scan.d.ts +15 -0
  53. package/dist/combinators/scan.d.ts.map +1 -0
  54. package/dist/combinators/share.d.ts +22 -0
  55. package/dist/combinators/share.d.ts.map +1 -0
  56. package/dist/combinators/slice.d.ts +38 -0
  57. package/dist/combinators/slice.d.ts.map +1 -0
  58. package/dist/combinators/switch.d.ts +17 -0
  59. package/dist/combinators/switch.d.ts.map +1 -0
  60. package/dist/combinators/tap.d.ts +12 -0
  61. package/dist/combinators/tap.d.ts.map +1 -0
  62. package/dist/combinators/terminal.d.ts +32 -0
  63. package/dist/combinators/terminal.d.ts.map +1 -0
  64. package/dist/combinators/time.d.ts +40 -0
  65. package/dist/combinators/time.d.ts.map +1 -0
  66. package/dist/combinators/timeout.d.ts +20 -0
  67. package/dist/combinators/timeout.d.ts.map +1 -0
  68. package/dist/combinators/traverse.d.ts +21 -0
  69. package/dist/combinators/traverse.d.ts.map +1 -0
  70. package/dist/constructors.d.ts +72 -0
  71. package/dist/constructors.d.ts.map +1 -0
  72. package/dist/fluent.d.ts +83 -0
  73. package/dist/fluent.d.ts.map +1 -0
  74. package/dist/index.cjs +3648 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/index.d.cts +11 -0
  77. package/dist/index.d.ts +11 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +3564 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/internal/Pipe.d.ts +15 -0
  82. package/dist/internal/Pipe.d.ts.map +1 -0
  83. package/dist/internal/behavior.d.ts +62 -0
  84. package/dist/internal/behavior.d.ts.map +1 -0
  85. package/dist/internal/dispose.d.ts +16 -0
  86. package/dist/internal/dispose.d.ts.map +1 -0
  87. package/dist/internal/event.d.ts +25 -0
  88. package/dist/internal/event.d.ts.map +1 -0
  89. package/dist/internal/fusion.d.ts +32 -0
  90. package/dist/internal/fusion.d.ts.map +1 -0
  91. package/dist/internal/testScheduler.d.ts +22 -0
  92. package/dist/internal/testScheduler.d.ts.map +1 -0
  93. package/dist/multicast.d.ts +18 -0
  94. package/dist/multicast.d.ts.map +1 -0
  95. package/dist/pipe.d.ts +20 -0
  96. package/dist/pipe.d.ts.map +1 -0
  97. package/dist/pipeable.d.ts +55 -0
  98. package/dist/pipeable.d.ts.map +1 -0
  99. package/package.json +46 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/internal/dispose.ts","../src/internal/event.ts","../src/constructors.ts","../src/internal/Pipe.ts","../src/internal/fusion.ts","../src/combinators/map.ts","../src/combinators/filter.ts","../src/combinators/tap.ts","../src/combinators/constant.ts","../src/combinators/scan.ts","../src/combinators/terminal.ts","../src/combinators/slice.ts","../src/combinators/merge.ts","../src/combinators/combine.ts","../src/combinators/switch.ts","../src/combinators/mergeMap.ts","../src/combinators/error.ts","../src/combinators/chain.ts","../src/combinators/time.ts","../src/combinators/traverse.ts","../src/combinators/fromPromise.ts","../src/combinators/retry.ts","../src/combinators/share.ts","../src/combinators/attach.ts","../src/combinators/dedupe.ts","../src/combinators/cons.ts","../src/combinators/firstLast.ts","../src/combinators/pairwise.ts","../src/combinators/timeout.ts","../src/combinators/exhaustMap.ts","../src/combinators/forkJoin.ts","../src/combinators/orElse.ts","../src/combinators/ensure.ts","../src/combinators/race.ts","../src/combinators/aggregate.ts","../src/internal/behavior.ts","../src/behavior.ts","../src/asyncIterator.ts","../src/multicast.ts","../src/fluent.ts","../src/pipe.ts","../src/pipeable.ts","../src/adapter.ts"],"sourcesContent":["import type { Disposable } from \"aeon-types\";\n\n/** A no-op disposable. */\nexport const disposeNone: Disposable = { dispose() {} };\n\n/** Create a Disposable from a function. */\nexport const disposable = (f: () => void): Disposable => ({ dispose: f });\n\n/** Dispose all disposables in an array. */\nexport const disposeAll = (disposables: Disposable[]): Disposable => ({\n dispose() {\n for (let i = disposables.length - 1; i >= 0; i--) {\n disposables[i]!.dispose();\n }\n },\n});\n\n/** A settable disposable — allows replacing the inner disposable. */\nexport class SettableDisposable implements Disposable {\n private declare inner: Disposable | undefined;\n private declare disposed: boolean;\n\n constructor() {\n this.inner = undefined;\n this.disposed = false;\n }\n\n set(d: Disposable): void {\n if (this.disposed) {\n d.dispose();\n } else {\n this.inner = d;\n }\n }\n\n dispose(): void {\n if (!this.disposed) {\n this.disposed = true;\n if (this.inner !== undefined) {\n this.inner.dispose();\n }\n }\n }\n}\n","/**\n * Internal Event representation.\n *\n * At runtime, an Event<A, E> IS the Source<A, E> object — no wrapper,\n * no Symbol-keyed indirection. The type-level brand (EventBrand) keeps\n * them distinct in TypeScript's type system while _createEvent and\n * _getSource compile to identity casts with zero runtime cost.\n *\n * This matches @most/core's approach where Stream = Source at runtime.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source } from \"aeon-types\";\n\n/** A Source that supports synchronous iteration (sync loop compilation). */\nexport interface SyncSource<A, E = never> extends Source<A, E> {\n readonly _sync: boolean;\n syncIterate(emit: (value: A) => boolean): void;\n}\n\n/** Type guard: does this source support sync iteration? */\nexport const isSyncSource = <A, E>(source: Source<A, E>): source is SyncSource<A, E> =>\n (source as SyncSource<A, E>)._sync === true;\n\n/** Create an opaque Event from a Source. Zero-cost identity cast. */\nexport const _createEvent = <A, E = never>(source: Source<A, E>): Event<A, E> =>\n source as unknown as Event<A, E>;\n\n/** Extract the Source from an opaque Event. Zero-cost identity cast. */\nexport const _getSource = <A, E = never>(event: Event<A, E>): Source<A, E> =>\n event as unknown as Source<A, E>;\n\n/** Run an Event by connecting it to a Sink via a Scheduler. Internal use only. */\nexport const _runEvent = <A, E>(\n event: Event<A, E>,\n sink: Sink<A, E>,\n scheduler: Scheduler,\n): Disposable => _getSource(event).run(sink, scheduler);\n","/**\n * Event constructors.\n *\n * Each constructor creates an Event<A, E> backed by a Source\n * that produces events according to its denotational meaning.\n */\n\nimport {\n DURATION_ZERO,\n type Disposable,\n type Duration,\n type Event,\n type Scheduler,\n type Sink,\n type Source,\n type Time,\n timeAdd,\n} from \"aeon-types\";\nimport { disposeNone } from \"./internal/dispose.js\";\nimport { _createEvent } from \"./internal/event.js\";\n\n// --- Source classes for V8 hidden class stability ---\n\nclass EmptySource<A> implements Source<A, never> {\n declare readonly _sync: true;\n\n constructor() {\n this._sync = true;\n }\n\n run(sink: Sink<A, never>, scheduler: Scheduler) {\n sink.end(scheduler.currentTime());\n return disposeNone;\n }\n\n syncIterate(_emit: (value: A) => boolean): void {}\n}\n\nclass NeverSource<A> implements Source<A, never> {\n run() {\n return disposeNone;\n }\n}\n\nclass NowSource<A> implements Source<A, never> {\n declare readonly value: A;\n declare readonly _sync: true;\n\n constructor(value: A) {\n this.value = value;\n this._sync = true;\n }\n\n run(sink: Sink<A, never>, scheduler: Scheduler) {\n const t = scheduler.currentTime();\n sink.event(t, this.value);\n sink.end(t);\n return disposeNone;\n }\n\n syncIterate(emit: (value: A) => boolean): void {\n emit(this.value);\n }\n}\n\nclass ArraySource<A> implements Source<A, never> {\n declare readonly values: readonly A[];\n declare readonly _sync: true;\n\n constructor(values: readonly A[]) {\n this.values = values;\n this._sync = true;\n }\n\n run(sink: Sink<A, never>, scheduler: Scheduler) {\n const t = scheduler.currentTime();\n const values = this.values;\n for (let i = 0; i < values.length; i++) {\n sink.event(t, values[i]!);\n }\n sink.end(t);\n return disposeNone;\n }\n\n syncIterate(emit: (value: A) => boolean): void {\n const values = this.values;\n for (let i = 0; i < values.length; i++) {\n if (!emit(values[i]!)) return;\n }\n }\n}\n\n// --- Singletons for empty/never ---\n\nconst EMPTY_SOURCE = new EmptySource<never>();\nconst NEVER_SOURCE = new NeverSource<never>();\n\n// --- Internal exports for algebraic simplification ---\n\n/** @internal — used by combinators for instanceof detection */\nexport { EmptySource as _EmptySource, NowSource as _NowSource, EMPTY_SOURCE as _EMPTY_SOURCE };\n\n// --- Public API ---\n\n/**\n * An Event that ends immediately without emitting any values.\n *\n * Denotation: `[]` — the empty sequence.\n */\nexport const empty = <A>(): Event<A, never> =>\n _createEvent(EMPTY_SOURCE as unknown as Source<A, never>);\n\n/**\n * An Event that never emits and never ends.\n *\n * Denotation: `_|_` — bottom / divergent.\n */\nexport const never = <A>(): Event<A, never> =>\n _createEvent(NEVER_SOURCE as unknown as Source<A, never>);\n\n/**\n * An Event that emits a single value at time 0, then ends.\n *\n * Denotation: `[(0, value)]`\n */\nexport const now = <A>(value: A): Event<A, never> => _createEvent(new NowSource(value));\n\nclass AtSource<A> implements Source<A, never> {\n declare readonly time: Time;\n declare readonly value: A;\n\n constructor(time: Time, value: A) {\n this.time = time;\n this.value = value;\n }\n\n run(sink: Sink<A, never>, scheduler: Scheduler): Disposable {\n const val = this.value;\n const delay = ((this.time as number) - (scheduler.currentTime() as number)) as Duration;\n return scheduler.scheduleTask(delay, {\n run(t: Time) {\n sink.event(t, val);\n sink.end(t);\n },\n error(t: Time, err: unknown) {\n sink.error(t, err as never);\n },\n dispose() {},\n });\n }\n}\n\n/**\n * An Event that emits a single value at a specific time, then ends.\n *\n * Denotation: `[(time, value)]`\n */\nexport const at = <A>(time: Time, value: A): Event<A, never> =>\n _createEvent(new AtSource(time, value));\n\n/**\n * An Event that emits all values from an array synchronously, then ends.\n *\n * Denotation: `[(t, values[0]), (t, values[1]), ...]` all at the same time.\n */\nexport const fromArray = <A>(values: readonly A[]): Event<A, never> =>\n _createEvent(new ArraySource(values));\n\nclass PeriodicSource implements Source<undefined, never> {\n declare readonly period: Duration;\n\n constructor(period: Duration) {\n this.period = period;\n }\n\n run(sink: Sink<undefined, never>, scheduler: Scheduler): Disposable {\n const period = this.period;\n let disposed = false;\n\n const task = {\n run(t: Time) {\n if (!disposed) {\n sink.event(t, undefined);\n scheduler.scheduleTask(period, task);\n }\n },\n error(t: Time, err: unknown) {\n sink.error(t, err as never);\n },\n dispose() {\n disposed = true;\n },\n };\n\n const st = scheduler.scheduleTask(period, task);\n return {\n dispose() {\n disposed = true;\n st.dispose();\n },\n };\n }\n}\n\n/**\n * An Event that emits undefined at regular intervals.\n *\n * Denotation: `[(period, undefined), (2*period, undefined), ...]`\n */\nexport const periodic = (period: Duration): Event<undefined, never> =>\n _createEvent(new PeriodicSource(period));\n\nclass RangeSource implements Source<number, never> {\n declare readonly start: number;\n declare readonly count: number;\n declare readonly _sync: true;\n\n constructor(start: number, count: number) {\n this.start = start;\n this.count = count;\n this._sync = true;\n }\n\n run(sink: Sink<number, never>, scheduler: Scheduler): Disposable {\n const t = scheduler.currentTime();\n const end = this.start + this.count;\n for (let i = this.start; i < end; i++) {\n sink.event(t, i);\n }\n sink.end(t);\n return disposeNone;\n }\n\n syncIterate(emit: (value: number) => boolean): void {\n const end = this.start + this.count;\n for (let i = this.start; i < end; i++) {\n if (!emit(i)) return;\n }\n }\n}\n\n/**\n * An Event that emits a sequence of numbers synchronously, then ends.\n *\n * Denotation: `[(t, start), (t, start+1), ..., (t, start+count-1)]`\n */\nexport const range = (start: number, count: number): Event<number, never> =>\n _createEvent(new RangeSource(start, Math.max(0, count)));\n\nclass IterableSource<A> implements Source<A, never> {\n declare readonly iterable: Iterable<A>;\n declare readonly _sync: true;\n\n constructor(iterable: Iterable<A>) {\n this.iterable = iterable;\n this._sync = true;\n }\n\n run(sink: Sink<A, never>, scheduler: Scheduler): Disposable {\n const t = scheduler.currentTime();\n for (const value of this.iterable) {\n sink.event(t, value);\n }\n sink.end(t);\n return disposeNone;\n }\n\n syncIterate(emit: (value: A) => boolean): void {\n for (const value of this.iterable) {\n if (!emit(value)) return;\n }\n }\n}\n\n/**\n * Create an Event from an iterable, emitting all values synchronously.\n *\n * Denotation: `[(t, v) for v in iterable]` all at the same time.\n */\nexport const fromIterable = <A>(iterable: Iterable<A>): Event<A, never> =>\n _createEvent(new IterableSource(iterable));\n","/**\n * Pipe base class for sinks that forward error/end unchanged.\n *\n * With ES2022 target, `extends Pipe` compiles to native `class extends` —\n * zero helpers, zero overhead. V8 devirtualizes the shared error/end\n * methods across all sink subtypes.\n */\n\nimport type { Sink, Time } from \"aeon-types\";\n\nexport class Pipe<A, E> {\n declare readonly sink: Sink<A, E>;\n\n constructor(sink: Sink<A, E>) {\n this.sink = sink;\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.sink.end(time);\n }\n}\n","/**\n * Pipeline fusion IR.\n *\n * At Event construction time, instead of immediately creating Sink chains,\n * we detect fusible patterns (map∘map, filter∘filter, filter∘map, etc.)\n * and collapse them into a single operation.\n *\n * Uses proper classes with instanceof checks for V8 hidden class stability.\n * All sinks extend Pipe for shared error/end — with ES2022 target this\n * compiles to native `class extends`, zero overhead.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _EMPTY_SOURCE, _EmptySource, _NowSource } from \"../constructors.js\";\nimport { Pipe } from \"./Pipe.js\";\nimport { _createEvent, _getSource } from \"./event.js\";\n\n// --- Sink classes ---\n\n/** Map sink: applies f to each value. */\nclass MapSink<A, B, E> extends Pipe<B, E> implements Sink<A, E> {\n declare readonly f: (a: A) => B;\n\n constructor(f: (a: A) => B, sink: Sink<B, E>) {\n super(sink);\n this.f = f;\n }\n\n event(time: Time, value: A): void {\n const f = this.f;\n this.sink.event(time, f(value));\n }\n}\n\n/** Filter sink: only forwards values that pass the predicate. */\nclass FilterSink<A, E> extends Pipe<A, E> {\n declare readonly predicate: (a: A) => boolean;\n\n constructor(predicate: (a: A) => boolean, sink: Sink<A, E>) {\n super(sink);\n this.predicate = predicate;\n }\n\n event(time: Time, value: A): void {\n const p = this.predicate;\n if (p(value)) {\n this.sink.event(time, value);\n }\n }\n}\n\n/** Combined filter+map sink: filter then map in one node. */\nclass FilterMapSink<A, B, E> extends Pipe<B, E> implements Sink<A, E> {\n declare readonly predicate: (a: A) => boolean;\n declare readonly f: (a: A) => B;\n\n constructor(predicate: (a: A) => boolean, f: (a: A) => B, sink: Sink<B, E>) {\n super(sink);\n this.predicate = predicate;\n this.f = f;\n }\n\n event(time: Time, value: A): void {\n const p = this.predicate;\n if (p(value)) {\n const f = this.f;\n this.sink.event(time, f(value));\n }\n }\n}\n\n/** Combined map+filter sink: map then filter in one node. */\nclass MapFilterSink<A, B, E> extends Pipe<B, E> implements Sink<A, E> {\n declare readonly f: (a: A) => B;\n declare readonly predicate: (b: B) => boolean;\n\n constructor(f: (a: A) => B, predicate: (b: B) => boolean, sink: Sink<B, E>) {\n super(sink);\n this.f = f;\n this.predicate = predicate;\n }\n\n event(time: Time, value: A): void {\n const f = this.f;\n const mapped = f(value);\n const p = this.predicate;\n if (p(mapped)) {\n this.sink.event(time, mapped);\n }\n }\n}\n\n// --- Source classes (for instanceof fusion detection) ---\n\n/** A map source, tagged for fusion detection via instanceof. */\nclass MapSource<A, B, E> implements Source<B, E> {\n declare readonly f: (a: A) => B;\n declare readonly source: Source<A, E>;\n\n constructor(f: (a: A) => B, source: Source<A, E>) {\n this.f = f;\n this.source = source;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new MapSink(this.f, sink), scheduler);\n }\n\n /** Factory with fusion and algebraic simplification. */\n static create<A, B, E>(f: (a: A) => B, source: Source<A, E>): Source<B, E> {\n // map(f, empty()) → empty()\n if (source instanceof _EmptySource) {\n return _EMPTY_SOURCE as unknown as Source<B, E>;\n }\n\n // map(f, now(x)) → now(f(x)) — constant folding\n if (source instanceof _NowSource) {\n return new _NowSource(f((source as _NowSource<A>).value));\n }\n\n // map(f, map(g, s)) → map(f∘g, s)\n if (source instanceof MapSource) {\n const inner = source as MapSource<unknown, A, E>;\n return new MapSource((x: unknown) => f(inner.f(x)), inner.source);\n }\n\n // map(f, filter(p, s)) → filterMap(p, f, s)\n if (source instanceof FilterSource) {\n const inner = source as FilterSource<A, E>;\n return new FilterMapSource(inner.predicate, f, inner.source);\n }\n\n return new MapSource(f, source);\n }\n}\n\n/** A filter source, tagged for fusion detection via instanceof. */\nclass FilterSource<A, E> implements Source<A, E> {\n declare readonly predicate: (a: A) => boolean;\n declare readonly source: Source<A, E>;\n\n constructor(predicate: (a: A) => boolean, source: Source<A, E>) {\n this.predicate = predicate;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new FilterSink(this.predicate, sink), scheduler);\n }\n\n /** Factory with fusion and algebraic simplification. */\n static create<A, E>(predicate: (a: A) => boolean, source: Source<A, E>): Source<A, E> {\n // filter(p, empty()) → empty()\n if (source instanceof _EmptySource) {\n return _EMPTY_SOURCE as unknown as Source<A, E>;\n }\n\n // filter(p, now(x)) → p(x) ? now(x) : empty() — constant folding\n if (source instanceof _NowSource) {\n const val = (source as _NowSource<A>).value;\n return predicate(val)\n ? (source as unknown as Source<A, E>)\n : (_EMPTY_SOURCE as unknown as Source<A, E>);\n }\n\n // filter(p, filter(q, s)) → filter(x => q(x) && p(x), s)\n if (source instanceof FilterSource) {\n const inner = source as FilterSource<A, E>;\n return new FilterSource((x: A) => inner.predicate(x) && predicate(x), inner.source);\n }\n\n // filter(p, map(f, s)) → mapFilter(f, p, s)\n if (source instanceof MapSource) {\n const inner = source as MapSource<unknown, A, E>;\n return new MapFilterSource(inner.f, predicate, inner.source);\n }\n\n return new FilterSource(predicate, source);\n }\n}\n\n/** Fused filter-then-map source. */\nclass FilterMapSource<A, B, E> implements Source<B, E> {\n declare readonly predicate: (a: A) => boolean;\n declare readonly f: (a: A) => B;\n declare readonly source: Source<A, E>;\n\n constructor(predicate: (a: A) => boolean, f: (a: A) => B, source: Source<A, E>) {\n this.predicate = predicate;\n this.f = f;\n this.source = source;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new FilterMapSink(this.predicate, this.f, sink), scheduler);\n }\n}\n\n/** Fused map-then-filter source. */\nclass MapFilterSource<A, B, E> implements Source<B, E> {\n declare readonly f: (a: A) => B;\n declare readonly predicate: (b: B) => boolean;\n declare readonly source: Source<A, E>;\n\n constructor(f: (a: A) => B, predicate: (b: B) => boolean, source: Source<A, E>) {\n this.f = f;\n this.predicate = predicate;\n this.source = source;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new MapFilterSink(this.f, this.predicate, sink), scheduler);\n }\n}\n\n// --- Internal exports for cross-module fusion ---\n\n/** @internal — used by scan for scan∘map detection */\nexport { MapSource as _MapSource };\n\n// --- Public API ---\n\n/**\n * Create a fusible map Event. Detects map∘map and composes functions.\n */\nexport const fusedMap = <A, B, E>(f: (a: A) => B, event: Event<A, E>): Event<B, E> => {\n const source = _getSource(event);\n return _createEvent(MapSource.create(f, source));\n};\n\n/**\n * Create a fusible filter Event. Detects filter∘filter and conjoins predicates.\n */\nexport const fusedFilter = <A, E>(\n predicate: (a: A) => boolean,\n event: Event<A, E>,\n): Event<A, E> => {\n const source = _getSource(event);\n return _createEvent(FilterSource.create(predicate, source));\n};\n","/**\n * map combinator.\n *\n * Denotation: `map(f, e) = [(t, f(v)) | (t, v) ∈ e]`\n *\n * Uses pipeline fusion: map∘map is collapsed into a single map with\n * a composed function. map∘filter becomes a filterMap node.\n */\n\nimport type { Event } from \"aeon-types\";\nimport { fusedMap } from \"../internal/fusion.js\";\n\n/**\n * Transform each value in an Event stream.\n *\n * Denotation: `map(f, e) = [(t, f(v)) | (t, v) ∈ e]`\n */\nexport const map = <A, B, E>(f: (a: A) => B, event: Event<A, E>): Event<B, E> => fusedMap(f, event);\n","/**\n * filter combinator.\n *\n * Denotation: `filter(p, e) = [(t, v) | (t, v) ∈ e, p(v)]`\n *\n * Uses pipeline fusion: filter∘filter is collapsed into a single filter\n * with conjoined predicates. filter∘map becomes a mapFilter node.\n */\n\nimport type { Event } from \"aeon-types\";\nimport { fusedFilter } from \"../internal/fusion.js\";\n\n/**\n * Keep only values that satisfy the predicate.\n *\n * Denotation: `filter(p, e) = [(t, v) | (t, v) ∈ e, p(v)]`\n */\nexport const filter = <A, E>(predicate: (a: A) => boolean, event: Event<A, E>): Event<A, E> =>\n fusedFilter(predicate, event);\n","/**\n * tap combinator.\n *\n * Runs a side effect for each value without altering the stream.\n * Denotation: identity on the event sequence (side effects are invisible to the denotation).\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass TapSink<A, E> extends Pipe<A, E> {\n declare readonly f: (a: A) => void;\n\n constructor(f: (a: A) => void, sink: Sink<A, E>) {\n super(sink);\n this.f = f;\n }\n\n event(time: Time, value: A): void {\n const f = this.f;\n f(value);\n this.sink.event(time, value);\n }\n}\n\nclass TapSource<A, E> implements Source<A, E> {\n declare readonly f: (a: A) => void;\n declare readonly source: Source<A, E>;\n\n constructor(f: (a: A) => void, source: Source<A, E>) {\n this.f = f;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new TapSink(this.f, sink), scheduler);\n }\n}\n\n/**\n * Run a side-effect for each event value, passing values through unchanged.\n */\nexport const tap = <A, E>(f: (a: A) => void, event: Event<A, E>): Event<A, E> =>\n _createEvent(new TapSource(f, _getSource(event)));\n","/**\n * constant combinator.\n *\n * Denotation: `constant(b, e) = [(t, b) | (t, _) ∈ e]`\n */\n\nimport type { Event } from \"aeon-types\";\nimport { map } from \"./map.js\";\n\n/**\n * Replace every value in the stream with a constant.\n *\n * Denotation: `constant(b, e) = map(_ => b, e)`\n */\nexport const constant = <A, B, E>(value: B, event: Event<A, E>): Event<B, E> =>\n map(() => value, event);\n","/**\n * scan combinator.\n *\n * Denotation: `scan(f, seed, e) = [(t, foldl f seed (values up to t)) | (t, _) ∈ e]`\n *\n * Includes fusion: scan(f, seed, map(g, s)) → scanMap with composed function.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _EMPTY_SOURCE, _EmptySource } from \"../constructors.js\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { type SyncSource, _createEvent, _getSource } from \"../internal/event.js\";\nimport { _MapSource } from \"../internal/fusion.js\";\n\nclass ScanSink<A, B, E> extends Pipe<B, E> implements Sink<A, E> {\n declare readonly f: (acc: B, a: A) => B;\n declare acc: B;\n\n constructor(f: (acc: B, a: A) => B, seed: B, sink: Sink<B, E>) {\n super(sink);\n this.f = f;\n this.acc = seed;\n }\n\n event(time: Time, value: A): void {\n const f = this.f;\n const acc = f(this.acc, value);\n this.acc = acc;\n this.sink.event(time, acc);\n }\n}\n\nclass ScanSource<A, B, E> implements Source<B, E> {\n declare readonly f: (acc: B, a: A) => B;\n declare readonly seed: B;\n declare readonly source: Source<A, E>;\n declare readonly _sync: boolean;\n\n constructor(f: (acc: B, a: A) => B, seed: B, source: Source<A, E>) {\n this.f = f;\n this.seed = seed;\n this.source = source;\n this._sync = (source as SyncSource<A, E>)._sync === true;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new ScanSink(this.f, this.seed, sink), scheduler);\n }\n\n syncIterate(emit: (value: B) => boolean): void {\n const f = this.f;\n let acc = this.seed;\n (this.source as SyncSource<A, E>).syncIterate((v: A) => {\n acc = f(acc, v);\n return emit(acc);\n });\n }\n}\n\n/**\n * Incrementally accumulate values, emitting each intermediate result.\n *\n * Denotation: produces a running fold of the event sequence.\n */\nexport const scan = <A, B, E>(f: (acc: B, a: A) => B, seed: B, event: Event<A, E>): Event<B, E> => {\n const source = _getSource(event);\n\n // scan(f, seed, empty()) → empty()\n if (source instanceof _EmptySource) {\n return _createEvent(_EMPTY_SOURCE as unknown as Source<B, E>);\n }\n\n // scan(f, seed, map(g, s)) → scan((acc, x) => f(acc, g(x)), seed, s)\n if (source instanceof _MapSource) {\n const inner = source as InstanceType<typeof _MapSource<unknown, A, E>>;\n const g = inner.f;\n return _createEvent(\n new ScanSource(\n (acc: B, x: unknown) => f(acc, g(x) as A),\n seed,\n inner.source as Source<unknown, E>,\n ),\n );\n }\n\n return _createEvent(new ScanSource(f, seed, source));\n};\n","/**\n * Terminal combinators: reduce, observe, drain.\n *\n * These activate (subscribe to) the stream and return a Promise\n * that resolves when the stream ends.\n *\n * Uses monomorphic Sink classes for V8 hidden class stability.\n * Hot paths use local variable hoisting for function properties.\n */\n\nimport { DURATION_ZERO, type Event, type Scheduler, type Sink, type Time } from \"aeon-types\";\nimport { _getSource, isSyncSource } from \"../internal/event.js\";\n\n// --- Sink classes for V8 monomorphism ---\n\nclass ReduceSink<A, B, E> implements Sink<A, E> {\n declare readonly f: (acc: B, a: A) => B;\n declare acc: B;\n declare readonly resolve: (value: B) => void;\n declare readonly reject: (err: E) => void;\n\n constructor(\n f: (acc: B, a: A) => B,\n seed: B,\n resolve: (value: B) => void,\n reject: (err: E) => void,\n ) {\n this.f = f;\n this.acc = seed;\n this.resolve = resolve;\n this.reject = reject;\n }\n\n event(_time: Time, value: A): void {\n const f = this.f;\n this.acc = f(this.acc, value);\n }\n\n error(_time: Time, err: E): void {\n this.reject(err);\n }\n\n end(_time: Time): void {\n this.resolve(this.acc);\n }\n}\n\nclass ObserveSink<A, E> implements Sink<A, E> {\n declare readonly f: (a: A) => void;\n declare readonly resolve: () => void;\n declare readonly reject: (err: E) => void;\n\n constructor(f: (a: A) => void, resolve: () => void, reject: (err: E) => void) {\n this.f = f;\n this.resolve = resolve;\n this.reject = reject;\n }\n\n event(_time: Time, value: A): void {\n const f = this.f;\n f(value);\n }\n\n error(_time: Time, err: E): void {\n this.reject(err);\n }\n\n end(_time: Time): void {\n this.resolve();\n }\n}\n\nclass DrainSink<E> implements Sink<unknown, E> {\n declare readonly resolve: () => void;\n declare readonly reject: (err: E) => void;\n\n constructor(resolve: () => void, reject: (err: E) => void) {\n this.resolve = resolve;\n this.reject = reject;\n }\n\n event(): void {}\n\n error(_time: Time, err: E): void {\n this.reject(err);\n }\n\n end(_time: Time): void {\n this.resolve();\n }\n}\n\n// --- Public API ---\n\n/**\n * Fold all values into a single result. Activates the stream.\n *\n * Denotation: `reduce(f, seed, e) = foldl f seed (map snd e)`\n *\n * Uses sync loop compilation when the source chain is fully synchronous,\n * bypassing the Sink protocol for a tight for-loop.\n */\nexport const reduce = <A, B, E>(\n f: (acc: B, a: A) => B,\n seed: B,\n event: Event<A, E>,\n scheduler: Scheduler,\n): Promise<B> => {\n const source = _getSource(event);\n\n if (isSyncSource(source)) {\n try {\n let acc = seed;\n source.syncIterate((value: A) => {\n acc = f(acc, value);\n return true;\n });\n return Promise.resolve(acc);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n return new Promise((resolve, reject) => {\n source.run(new ReduceSink(f, seed, resolve, reject), scheduler);\n });\n};\n\n/**\n * Run a side-effect for each value. Activates the stream.\n *\n * Denotation: executes the effect for each `(t, v)` in the event sequence.\n */\nexport const observe = <A, E>(\n f: (a: A) => void,\n event: Event<A, E>,\n scheduler: Scheduler,\n): Promise<void> => {\n const source = _getSource(event);\n\n if (isSyncSource(source)) {\n try {\n source.syncIterate((value: A) => {\n f(value);\n return true;\n });\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n return new Promise((resolve, reject) => {\n source.run(new ObserveSink(f, resolve, reject), scheduler);\n });\n};\n\n/**\n * Activate the stream, discarding all values. Returns when the stream ends.\n *\n * Denotation: activates the event sequence purely for its effects.\n */\nexport const drain = <A, E>(event: Event<A, E>, scheduler: Scheduler): Promise<void> => {\n const source = _getSource(event);\n\n if (isSyncSource(source)) {\n try {\n source.syncIterate(() => true);\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n }\n\n return new Promise((resolve, reject) => {\n source.run(new DrainSink(resolve, reject) as unknown as Sink<A, E>, scheduler);\n });\n};\n","/**\n * Slicing combinators: take, drop, takeWhile, dropWhile, slice.\n *\n * Includes algebraic simplifications:\n * - take(n, take(m, s)) → take(min(n, m), s)\n * - drop(n, drop(m, s)) → drop(n + m, s)\n * - take/drop on empty → empty\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _EMPTY_SOURCE, _EmptySource } from \"../constructors.js\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { SettableDisposable, disposeAll, disposeNone } from \"../internal/dispose.js\";\nimport { type SyncSource, _createEvent, _getSource } from \"../internal/event.js\";\n\n// --- take ---\n\nclass TakeSink<A, E> extends Pipe<A, E> {\n declare readonly disposable: SettableDisposable;\n declare remaining: number;\n\n constructor(n: number, sink: Sink<A, E>, disposable: SettableDisposable) {\n super(sink);\n this.remaining = n;\n this.disposable = disposable;\n }\n\n event(time: Time, value: A): void {\n if (this.remaining <= 0) return;\n this.remaining--;\n this.sink.event(time, value);\n if (this.remaining === 0) {\n this.disposable.dispose();\n this.sink.end(time);\n }\n }\n}\n\nclass TakeSource<A, E> implements Source<A, E> {\n declare readonly n: number;\n declare readonly source: Source<A, E>;\n declare readonly _sync: boolean;\n\n constructor(n: number, source: Source<A, E>) {\n this.n = n;\n this.source = source;\n this._sync = (source as SyncSource<A, E>)._sync === true;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n sd.set(this.source.run(new TakeSink(this.n, sink, sd), scheduler));\n return sd;\n }\n\n syncIterate(emit: (value: A) => boolean): void {\n let remaining = this.n;\n (this.source as SyncSource<A, E>).syncIterate((v: A) => {\n if (remaining <= 0) return false;\n remaining--;\n return emit(v) && remaining > 0;\n });\n }\n}\n\nclass EmptySliceSource<A, E> implements Source<A, E> {\n declare readonly _sync: true;\n\n constructor() {\n this._sync = true;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n sink.end(scheduler.currentTime());\n return disposeNone;\n }\n\n syncIterate(_emit: (value: A) => boolean): void {}\n}\n\nconst EMPTY_SLICE = new EmptySliceSource<never, never>();\n\n/** Take the first n values from the stream, then end. */\nexport const take = <A, E>(n: number, event: Event<A, E>): Event<A, E> => {\n if (n <= 0) {\n return _createEvent(EMPTY_SLICE as unknown as Source<A, E>);\n }\n const source = _getSource(event);\n\n // take(n, empty()) → empty()\n if (source instanceof _EmptySource) {\n return _createEvent(_EMPTY_SOURCE as unknown as Source<A, E>);\n }\n\n // take(n, take(m, s)) → take(min(n, m), s)\n if (source instanceof TakeSource) {\n return _createEvent(new TakeSource(Math.min(n, source.n), source.source));\n }\n\n return _createEvent(new TakeSource(n, source));\n};\n\n// --- drop ---\n\nclass DropSink<A, E> extends Pipe<A, E> {\n declare remaining: number;\n\n constructor(n: number, sink: Sink<A, E>) {\n super(sink);\n this.remaining = n;\n }\n\n event(time: Time, value: A): void {\n if (this.remaining > 0) {\n this.remaining--;\n } else {\n this.sink.event(time, value);\n }\n }\n}\n\nclass DropSource<A, E> implements Source<A, E> {\n declare readonly n: number;\n declare readonly source: Source<A, E>;\n declare readonly _sync: boolean;\n\n constructor(n: number, source: Source<A, E>) {\n this.n = n;\n this.source = source;\n this._sync = (source as SyncSource<A, E>)._sync === true;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new DropSink(this.n, sink), scheduler);\n }\n\n syncIterate(emit: (value: A) => boolean): void {\n let remaining = this.n;\n (this.source as SyncSource<A, E>).syncIterate((v: A) => {\n if (remaining > 0) {\n remaining--;\n return true;\n }\n return emit(v);\n });\n }\n}\n\n/** Drop the first n values, then pass through the rest. */\nexport const drop = <A, E>(n: number, event: Event<A, E>): Event<A, E> => {\n if (n <= 0) return event;\n const source = _getSource(event);\n\n // drop(n, empty()) → empty()\n if (source instanceof _EmptySource) {\n return _createEvent(_EMPTY_SOURCE as unknown as Source<A, E>);\n }\n\n // drop(n, drop(m, s)) → drop(n + m, s)\n if (source instanceof DropSource) {\n return _createEvent(new DropSource(n + source.n, source.source));\n }\n\n return _createEvent(new DropSource(n, source));\n};\n\n// --- takeWhile ---\n\nclass TakeWhileSink<A, E> extends Pipe<A, E> {\n declare readonly predicate: (a: A) => boolean;\n declare readonly disposable: SettableDisposable;\n declare active: boolean;\n\n constructor(predicate: (a: A) => boolean, sink: Sink<A, E>, disposable: SettableDisposable) {\n super(sink);\n this.predicate = predicate;\n this.disposable = disposable;\n this.active = true;\n }\n\n event(time: Time, value: A): void {\n if (!this.active) return;\n const p = this.predicate;\n if (p(value)) {\n this.sink.event(time, value);\n } else {\n this.active = false;\n this.disposable.dispose();\n this.sink.end(time);\n }\n }\n}\n\nclass TakeWhileSource<A, E> implements Source<A, E> {\n declare readonly predicate: (a: A) => boolean;\n declare readonly source: Source<A, E>;\n\n constructor(predicate: (a: A) => boolean, source: Source<A, E>) {\n this.predicate = predicate;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n sd.set(this.source.run(new TakeWhileSink(this.predicate, sink, sd), scheduler));\n return sd;\n }\n}\n\n/** Take values while the predicate holds, then end. */\nexport const takeWhile = <A, E>(predicate: (a: A) => boolean, event: Event<A, E>): Event<A, E> =>\n _createEvent(new TakeWhileSource(predicate, _getSource(event)));\n\n// --- dropWhile ---\n\nclass DropWhileSink<A, E> extends Pipe<A, E> {\n declare readonly predicate: (a: A) => boolean;\n declare skipping: boolean;\n\n constructor(predicate: (a: A) => boolean, sink: Sink<A, E>) {\n super(sink);\n this.predicate = predicate;\n this.skipping = true;\n }\n\n event(time: Time, value: A): void {\n if (this.skipping) {\n const p = this.predicate;\n if (p(value)) return;\n this.skipping = false;\n }\n this.sink.event(time, value);\n }\n}\n\nclass DropWhileSource<A, E> implements Source<A, E> {\n declare readonly predicate: (a: A) => boolean;\n declare readonly source: Source<A, E>;\n\n constructor(predicate: (a: A) => boolean, source: Source<A, E>) {\n this.predicate = predicate;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new DropWhileSink(this.predicate, sink), scheduler);\n }\n}\n\n/** Drop values while the predicate holds, then pass through the rest. */\nexport const dropWhile = <A, E>(predicate: (a: A) => boolean, event: Event<A, E>): Event<A, E> =>\n _createEvent(new DropWhileSource(predicate, _getSource(event)));\n\n// --- slice ---\n\n/**\n * Take a contiguous slice: drop `start` values, then take `end - start`.\n *\n * Denotation: `slice(s, e, stream) = take(e - s, drop(s, stream))`\n */\nexport const slice = <A, E>(start: number, end: number, event: Event<A, E>): Event<A, E> =>\n take(end - start, drop(start, event));\n\n// --- until ---\n\nclass UntilSink<A, E> extends Pipe<A, E> {\n declare readonly disposable: SettableDisposable;\n declare active: boolean;\n\n constructor(sink: Sink<A, E>, disposable: SettableDisposable) {\n super(sink);\n this.disposable = disposable;\n this.active = true;\n }\n\n event(time: Time, value: A): void {\n if (this.active) {\n this.sink.event(time, value);\n }\n }\n}\n\nclass UntilSignalSink<A, E> {\n declare readonly mainSink: UntilSink<A, E>;\n declare readonly disposable: SettableDisposable;\n\n constructor(mainSink: UntilSink<A, E>, disposable: SettableDisposable) {\n this.mainSink = mainSink;\n this.disposable = disposable;\n }\n\n event(time: Time, _value: unknown): void {\n if (this.mainSink.active) {\n this.mainSink.active = false;\n this.disposable.dispose();\n this.mainSink.sink.end(time);\n }\n }\n\n error(time: Time, err: E): void {\n this.mainSink.sink.error(time, err);\n }\n\n end(_time: Time): void {\n // Signal ending without firing means: keep going until main ends naturally\n }\n}\n\nclass UntilSource<A, E> implements Source<A, E> {\n declare readonly signal: Source<unknown, E>;\n declare readonly source: Source<A, E>;\n\n constructor(signal: Source<unknown, E>, source: Source<A, E>) {\n this.signal = signal;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n const mainSink = new UntilSink<A, E>(sink, sd);\n const signalDisposable = this.signal.run(\n new UntilSignalSink<A, E>(mainSink, sd) as unknown as Sink<unknown, E>,\n scheduler,\n );\n const mainDisposable = this.source.run(mainSink, scheduler);\n sd.set(disposeAll([mainDisposable, signalDisposable]));\n return sd;\n }\n}\n\n/**\n * Take values from the event until the signal fires, then end.\n *\n * Denotation: `until(signal, e) = [(t, v) | (t, v) ∈ e, t < t_signal]`\n * where `t_signal` is the time of the first occurrence in `signal`.\n */\nexport const until = <A, E>(signal: Event<unknown, E>, event: Event<A, E>): Event<A, E> =>\n _createEvent(new UntilSource(_getSource(signal), _getSource(event)));\n\n// --- since ---\n\nclass SinceSink<A, E> extends Pipe<A, E> {\n declare open: boolean;\n\n constructor(sink: Sink<A, E>) {\n super(sink);\n this.open = false;\n }\n\n event(time: Time, value: A): void {\n if (this.open) {\n this.sink.event(time, value);\n }\n }\n}\n\nclass SinceSignalSink<A, E> {\n declare readonly mainSink: SinceSink<A, E>;\n\n constructor(mainSink: SinceSink<A, E>) {\n this.mainSink = mainSink;\n }\n\n event(_time: Time, _value: unknown): void {\n this.mainSink.open = true;\n }\n\n error(time: Time, err: E): void {\n this.mainSink.sink.error(time, err);\n }\n\n end(_time: Time): void {\n // Signal ending without firing means: never open\n }\n}\n\nclass SinceSource<A, E> implements Source<A, E> {\n declare readonly signal: Source<unknown, E>;\n declare readonly source: Source<A, E>;\n\n constructor(signal: Source<unknown, E>, source: Source<A, E>) {\n this.signal = signal;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const mainSink = new SinceSink<A, E>(sink);\n const signalDisposable = this.signal.run(\n new SinceSignalSink<A, E>(mainSink) as unknown as Sink<unknown, E>,\n scheduler,\n );\n const mainDisposable = this.source.run(mainSink, scheduler);\n return disposeAll([mainDisposable, signalDisposable]);\n }\n}\n\n/**\n * Drop values from the event until the signal fires, then pass through the rest.\n *\n * Denotation: `since(signal, e) = [(t, v) | (t, v) ∈ e, t >= t_signal]`\n * where `t_signal` is the time of the first occurrence in `signal`.\n */\nexport const since = <A, E>(signal: Event<unknown, E>, event: Event<A, E>): Event<A, E> =>\n _createEvent(new SinceSource(_getSource(signal), _getSource(event)));\n","/**\n * merge combinator.\n *\n * Denotation: `merge(e1, e2, ...) = sort by time (e1 ++ e2 ++ ...)`\n * Ends when ALL sources have ended.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { disposeAll, disposeNone } from \"../internal/dispose.js\";\nimport { type SyncSource, _createEvent, _getSource } from \"../internal/event.js\";\n\nclass MergeSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A, E>;\n declare remaining: number;\n\n constructor(sink: Sink<A, E>, count: number) {\n this.sink = sink;\n this.remaining = count;\n }\n\n event(time: Time, value: A): void {\n this.sink.event(time, value);\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.remaining--;\n if (this.remaining === 0) {\n this.sink.end(time);\n }\n }\n}\n\nclass MergeSource<A, E> implements Source<A, E> {\n declare readonly sources: Source<A, E>[];\n declare readonly _sync: boolean;\n\n constructor(sources: Source<A, E>[]) {\n this.sources = sources;\n let sync = true;\n for (let i = 0; i < sources.length; i++) {\n if ((sources[i] as SyncSource<A, E>)._sync !== true) {\n sync = false;\n break;\n }\n }\n this._sync = sync;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sources = this.sources;\n const mergeSink = new MergeSink(sink, sources.length);\n const disposables = new Array<Disposable>(sources.length);\n for (let i = 0; i < sources.length; i++) {\n disposables[i] = sources[i]!.run(mergeSink, scheduler);\n }\n return disposeAll(disposables);\n }\n\n syncIterate(emit: (value: A) => boolean): void {\n const sources = this.sources;\n let active = true;\n const wrappedEmit = (v: A) => {\n active = emit(v);\n return active;\n };\n for (let i = 0; i < sources.length && active; i++) {\n (sources[i]! as SyncSource<A, E>).syncIterate(wrappedEmit);\n }\n }\n}\n\nclass EmptyMergeSource<A, E> implements Source<A, E> {\n declare readonly _sync: true;\n\n constructor() {\n this._sync = true;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n sink.end(scheduler.currentTime());\n return disposeNone;\n }\n\n syncIterate(_emit: (value: A) => boolean): void {}\n}\n\nconst EMPTY_MERGE = new EmptyMergeSource<never, never>();\n\n/**\n * Merge multiple Event streams into one, interleaving values by time.\n * Ends when all input streams have ended.\n *\n * Flattens nested merges: merge(a, merge(b, c)) → merge(a, b, c)\n */\nexport const merge = <A, E>(...events: Event<A, E>[]): Event<A, E> => {\n if (events.length === 0) {\n return _createEvent(EMPTY_MERGE as unknown as Source<A, E>);\n }\n if (events.length === 1) return events[0]!;\n\n // Flatten nested merges and collect sources\n const sources: Source<A, E>[] = [];\n for (let i = 0; i < events.length; i++) {\n const source = _getSource(events[i]!);\n if (source instanceof MergeSource) {\n // Flatten: merge(a, merge(b, c)) → merge(a, b, c)\n const inner = source.sources;\n for (let j = 0; j < inner.length; j++) {\n sources.push(inner[j]!);\n }\n } else {\n sources.push(source);\n }\n }\n\n if (sources.length === 1) {\n return _createEvent(sources[0]!);\n }\n\n return _createEvent(new MergeSource(sources));\n};\n","/**\n * combine and zip combinators.\n *\n * combine: emits whenever either source emits, using the latest value from each.\n * zip: emits pairwise — only when both sources have emitted a new value.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { disposeAll } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\n// --- combine ---\n\nclass CombineState<A, B, C, E> {\n declare latestA: A | undefined;\n declare latestB: B | undefined;\n declare hasA: boolean;\n declare hasB: boolean;\n declare endCount: number;\n declare readonly sink: Sink<C, E>;\n declare readonly f: (a: A, b: B) => C;\n\n constructor(f: (a: A, b: B) => C, sink: Sink<C, E>) {\n this.latestA = undefined;\n this.latestB = undefined;\n this.hasA = false;\n this.hasB = false;\n this.endCount = 0;\n this.sink = sink;\n this.f = f;\n }\n\n emit(time: Time): void {\n if (this.hasA && this.hasB) {\n const f = this.f;\n this.sink.event(time, f(this.latestA as A, this.latestB as B));\n }\n }\n\n tryEnd(time: Time): void {\n this.endCount++;\n if (this.endCount === 2) this.sink.end(time);\n }\n}\n\nclass CombineSinkA<A, B, C, E> implements Sink<A, E> {\n declare readonly state: CombineState<A, B, C, E>;\n\n constructor(state: CombineState<A, B, C, E>) {\n this.state = state;\n }\n\n event(time: Time, value: A): void {\n this.state.latestA = value;\n this.state.hasA = true;\n this.state.emit(time);\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.tryEnd(time);\n }\n}\n\nclass CombineSinkB<A, B, C, E> implements Sink<B, E> {\n declare readonly state: CombineState<A, B, C, E>;\n\n constructor(state: CombineState<A, B, C, E>) {\n this.state = state;\n }\n\n event(time: Time, value: B): void {\n this.state.latestB = value;\n this.state.hasB = true;\n this.state.emit(time);\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.tryEnd(time);\n }\n}\n\nclass CombineSource<A, B, C, E> implements Source<C, E> {\n declare readonly f: (a: A, b: B) => C;\n declare readonly sourceA: Source<A, E>;\n declare readonly sourceB: Source<B, E>;\n\n constructor(f: (a: A, b: B) => C, sourceA: Source<A, E>, sourceB: Source<B, E>) {\n this.f = f;\n this.sourceA = sourceA;\n this.sourceB = sourceB;\n }\n\n run(sink: Sink<C, E>, scheduler: Scheduler): Disposable {\n const state = new CombineState<A, B, C, E>(this.f, sink);\n return disposeAll([\n this.sourceA.run(new CombineSinkA(state), scheduler),\n this.sourceB.run(new CombineSinkB(state), scheduler),\n ]);\n }\n}\n\n/**\n * Combine two event streams using a function, emitting whenever either source emits.\n *\n * Denotation: emits f(latestA, latestB) at each time where either A or B fires,\n * once both have produced at least one value.\n */\nexport const combine = <A, B, C, E>(\n f: (a: A, b: B) => C,\n ea: Event<A, E>,\n eb: Event<B, E>,\n): Event<C, E> => _createEvent(new CombineSource(f, _getSource(ea), _getSource(eb)));\n\n// --- zip ---\n\nclass ZipState<A, B, E> {\n declare readonly bufferA: A[];\n declare readonly bufferB: B[];\n declare endCount: number;\n declare readonly sink: Sink<[A, B], E>;\n\n constructor(sink: Sink<[A, B], E>) {\n this.bufferA = [];\n this.bufferB = [];\n this.endCount = 0;\n this.sink = sink;\n }\n\n tryEmit(time: Time): void {\n const bufA = this.bufferA;\n const bufB = this.bufferB;\n while (bufA.length > 0 && bufB.length > 0) {\n this.sink.event(time, [bufA.shift()!, bufB.shift()!]);\n }\n }\n\n tryEnd(time: Time): void {\n this.endCount++;\n if (this.endCount === 2) {\n this.sink.end(time);\n }\n }\n}\n\nclass ZipSinkA<A, B, E> implements Sink<A, E> {\n declare readonly state: ZipState<A, B, E>;\n\n constructor(state: ZipState<A, B, E>) {\n this.state = state;\n }\n\n event(time: Time, value: A): void {\n this.state.bufferA.push(value);\n this.state.tryEmit(time);\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.tryEnd(time);\n }\n}\n\nclass ZipSinkB<A, B, E> implements Sink<B, E> {\n declare readonly state: ZipState<A, B, E>;\n\n constructor(state: ZipState<A, B, E>) {\n this.state = state;\n }\n\n event(time: Time, value: B): void {\n this.state.bufferB.push(value);\n this.state.tryEmit(time);\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.tryEnd(time);\n }\n}\n\nclass ZipSource<A, B, E> implements Source<[A, B], E> {\n declare readonly sourceA: Source<A, E>;\n declare readonly sourceB: Source<B, E>;\n\n constructor(sourceA: Source<A, E>, sourceB: Source<B, E>) {\n this.sourceA = sourceA;\n this.sourceB = sourceB;\n }\n\n run(sink: Sink<[A, B], E>, scheduler: Scheduler): Disposable {\n const state = new ZipState<A, B, E>(sink);\n return disposeAll([\n this.sourceA.run(new ZipSinkA(state), scheduler),\n this.sourceB.run(new ZipSinkB(state), scheduler),\n ]);\n }\n}\n\n/**\n * Zip two event streams pairwise.\n *\n * Denotation: `zip(ea, eb) = [(t, [a, b]) | (ta, a) ∈ ea, (tb, b) ∈ eb]`\n * where pairs are consumed in order, t = max(ta, tb).\n */\nexport const zip = <A, B, E>(ea: Event<A, E>, eb: Event<B, E>): Event<[A, B], E> =>\n _createEvent(new ZipSource(_getSource(ea), _getSource(eb)));\n","/**\n * switchLatest combinator.\n *\n * Denotation: given an Event of Events, always listens to the most\n * recently emitted inner Event, disposing previous subscriptions.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { SettableDisposable } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass SwitchInnerSink<A, E> implements Sink<A, E> {\n declare readonly outer: SwitchSink<A, E>;\n\n constructor(outer: SwitchSink<A, E>) {\n this.outer = outer;\n }\n\n event(time: Time, value: A): void {\n this.outer.sink.event(time, value);\n }\n\n error(time: Time, err: E): void {\n this.outer.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.outer.innerEnded = true;\n if (this.outer.outerEnded) {\n this.outer.sink.end(time);\n }\n }\n}\n\nclass SwitchSink<A, E> implements Sink<Event<A, E>, E> {\n declare readonly sink: Sink<A, E>;\n declare readonly scheduler: Scheduler;\n declare readonly outerDisposable: SettableDisposable;\n declare innerDisposable: Disposable | undefined;\n declare outerEnded: boolean;\n declare innerEnded: boolean;\n\n constructor(sink: Sink<A, E>, scheduler: Scheduler, outerDisposable: SettableDisposable) {\n this.sink = sink;\n this.scheduler = scheduler;\n this.outerDisposable = outerDisposable;\n this.innerDisposable = undefined;\n this.outerEnded = false;\n this.innerEnded = true;\n }\n\n event(_time: Time, innerEvent: Event<A, E>): void {\n if (this.innerDisposable !== undefined) {\n this.innerDisposable.dispose();\n }\n\n this.innerEnded = false;\n this.innerDisposable = _getSource(innerEvent).run(new SwitchInnerSink(this), this.scheduler);\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.outerEnded = true;\n if (this.innerEnded) {\n this.sink.end(time);\n }\n }\n}\n\nclass SwitchSource<A, E> implements Source<A, E> {\n declare readonly source: Source<Event<A, E>, E>;\n\n constructor(source: Source<Event<A, E>, E>) {\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n const switchSink = new SwitchSink(sink, scheduler, sd);\n sd.set(this.source.run(switchSink, scheduler));\n return {\n dispose() {\n sd.dispose();\n if (switchSink.innerDisposable !== undefined) {\n switchSink.innerDisposable.dispose();\n }\n },\n };\n }\n}\n\n/**\n * Switch to the latest inner Event, disposing the previous.\n *\n * Denotation: flatten an Event<Event<A, E>, E> by always following\n * the most recently emitted inner event.\n */\nexport const switchLatest = <A, E>(event: Event<Event<A, E>, E>): Event<A, E> =>\n _createEvent(new SwitchSource(_getSource(event)));\n","/**\n * mergeMap combinator.\n *\n * Maps each value to an inner Event and merges the results, with\n * bounded concurrency.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass MergeMapInnerSink<B, E> implements Sink<B, E> {\n declare readonly state: MergeMapState<unknown, B, E>;\n\n constructor(state: MergeMapState<unknown, B, E>) {\n this.state = state;\n }\n\n event(time: Time, value: B): void {\n if (!this.state.disposed) this.state.sink.event(time, value);\n }\n\n error(time: Time, err: E): void {\n if (!this.state.disposed) this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.active--;\n if (this.state.buffer.length > 0) {\n this.state.tryStart();\n } else if (this.state.outerEnded && this.state.active === 0) {\n this.state.sink.end(time);\n }\n }\n}\n\nclass MergeMapOuterSink<A, B, E> implements Sink<A, E> {\n declare readonly state: MergeMapState<A, B, E>;\n\n constructor(state: MergeMapState<A, B, E>) {\n this.state = state;\n }\n\n event(_time: Time, value: A): void {\n this.state.buffer.push(value);\n this.state.tryStart();\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.outerEnded = true;\n if (this.state.active === 0 && this.state.buffer.length === 0) {\n this.state.sink.end(time);\n }\n }\n}\n\nclass MergeMapState<A, B, E> {\n declare readonly sink: Sink<B, E>;\n declare readonly f: (a: A) => Event<B, E>;\n declare readonly concurrency: number;\n declare readonly scheduler: Scheduler;\n declare readonly buffer: A[];\n declare readonly innerDisposables: Disposable[];\n declare active: number;\n declare outerEnded: boolean;\n declare disposed: boolean;\n\n constructor(\n f: (a: A) => Event<B, E>,\n concurrency: number,\n sink: Sink<B, E>,\n scheduler: Scheduler,\n ) {\n this.f = f;\n this.concurrency = concurrency;\n this.sink = sink;\n this.scheduler = scheduler;\n this.buffer = [];\n this.innerDisposables = [];\n this.active = 0;\n this.outerEnded = false;\n this.disposed = false;\n }\n\n tryStart(): void {\n while (this.active < this.concurrency && this.buffer.length > 0) {\n const value = this.buffer.shift()!;\n this.active++;\n\n const innerSource = _getSource(this.f(value));\n this.innerDisposables.push(\n innerSource.run(\n new MergeMapInnerSink<B, E>(this as MergeMapState<unknown, B, E>),\n this.scheduler,\n ),\n );\n }\n }\n}\n\nclass MergeMapSource<A, B, E> implements Source<B, E> {\n declare readonly f: (a: A) => Event<B, E>;\n declare readonly concurrency: number;\n declare readonly source: Source<A, E>;\n\n constructor(f: (a: A) => Event<B, E>, concurrency: number, source: Source<A, E>) {\n this.f = f;\n this.concurrency = concurrency;\n this.source = source;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n const state = new MergeMapState<A, B, E>(this.f, this.concurrency, sink, scheduler);\n const outerDisposable = this.source.run(new MergeMapOuterSink(state), scheduler);\n\n return {\n dispose() {\n state.disposed = true;\n outerDisposable.dispose();\n for (const d of state.innerDisposables) {\n d.dispose();\n }\n },\n };\n }\n}\n\n/**\n * Map each value to an Event and merge the results with bounded concurrency.\n *\n * Denotation: `mergeMap(f, c, e) = merge(map(f, e))` with\n * at most `c` inner streams active at any time. Values from finished\n * inner streams are replaced by newly spawned ones from the buffer.\n */\nexport const mergeMap = <A, B, E>(\n f: (a: A) => Event<B, E>,\n concurrency: number,\n event: Event<A, E>,\n): Event<B, E> => _createEvent(new MergeMapSource(f, concurrency, _getSource(event)));\n","/**\n * Error handling combinators with typed error channel.\n *\n * The E type parameter transforms through these operations — this is\n * the key advantage over untyped error handling.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { SettableDisposable, disposeNone } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\n// --- catchError ---\n\nclass CatchSink<A, E1, E2> implements Sink<A, E1> {\n declare readonly sink: Sink<A, E2>;\n declare readonly handler: (err: E1) => Event<A, E2>;\n declare readonly scheduler: Scheduler;\n declare readonly disposable: SettableDisposable;\n\n constructor(\n handler: (err: E1) => Event<A, E2>,\n sink: Sink<A, E2>,\n scheduler: Scheduler,\n disposable: SettableDisposable,\n ) {\n this.handler = handler;\n this.sink = sink;\n this.scheduler = scheduler;\n this.disposable = disposable;\n }\n\n event(time: Time, value: A): void {\n this.sink.event(time, value);\n }\n\n error(_time: Time, err: E1): void {\n const handler = this.handler;\n const recovery = handler(err);\n this.disposable.set(_getSource(recovery).run(this.sink, this.scheduler));\n }\n\n end(time: Time): void {\n this.sink.end(time);\n }\n}\n\nclass CatchSource<A, E1, E2> implements Source<A, E2> {\n declare readonly handler: (err: E1) => Event<A, E2>;\n declare readonly source: Source<A, E1>;\n\n constructor(handler: (err: E1) => Event<A, E2>, source: Source<A, E1>) {\n this.handler = handler;\n this.source = source;\n }\n\n run(sink: Sink<A, E2>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n sd.set(this.source.run(new CatchSink(this.handler, sink, scheduler, sd), scheduler));\n return sd;\n }\n}\n\n/**\n * Recover from errors by switching to a new Event stream.\n * The error type CHANGES from E1 to E2.\n *\n * Denotation: if the stream errors with `e`, continue with `handler(e)`.\n */\nexport const catchError = <A, E1, E2>(\n handler: (err: E1) => Event<A, E2>,\n event: Event<A, E1>,\n): Event<A, E2> => _createEvent(new CatchSource(handler, _getSource(event)));\n\n// --- mapError ---\n\nclass MapErrorSink<A, E1, E2> implements Sink<A, E1> {\n declare readonly sink: Sink<A, E2>;\n declare readonly f: (err: E1) => E2;\n\n constructor(f: (err: E1) => E2, sink: Sink<A, E2>) {\n this.f = f;\n this.sink = sink;\n }\n\n event(time: Time, value: A): void {\n this.sink.event(time, value);\n }\n\n error(time: Time, err: E1): void {\n const f = this.f;\n this.sink.error(time, f(err));\n }\n\n end(time: Time): void {\n this.sink.end(time);\n }\n}\n\nclass MapErrorSource<A, E1, E2> implements Source<A, E2> {\n declare readonly f: (err: E1) => E2;\n declare readonly source: Source<A, E1>;\n\n constructor(f: (err: E1) => E2, source: Source<A, E1>) {\n this.f = f;\n this.source = source;\n }\n\n run(sink: Sink<A, E2>, scheduler: Scheduler): Disposable {\n return this.source.run(new MapErrorSink(this.f, sink), scheduler);\n }\n}\n\n/**\n * Transform the error value without changing the stream structure.\n *\n * Denotation: `mapError(f, e)` — the error, if any, is replaced by `f(err)`.\n */\nexport const mapError = <A, E1, E2>(f: (err: E1) => E2, event: Event<A, E1>): Event<A, E2> =>\n _createEvent(new MapErrorSource(f, _getSource(event)));\n\n// --- throwError ---\n\nclass ThrowErrorSource<A, E> implements Source<A, E> {\n declare readonly err: E;\n\n constructor(err: E) {\n this.err = err;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n sink.error(scheduler.currentTime(), this.err);\n return disposeNone;\n }\n}\n\n/**\n * An Event that immediately errors with the given value.\n *\n * Denotation: `Error(err)` — a failed event sequence.\n */\nexport const throwError = <A, E>(err: E): Event<A, E> => _createEvent(new ThrowErrorSource(err));\n","/**\n * chain combinator.\n *\n * Denotation: `chain(f, e) = concat(map(f, e))` — each inner stream\n * runs to completion before the next begins.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { SettableDisposable } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass ChainInnerSink<B, E> implements Sink<B, E> {\n declare readonly outer: ChainSink<unknown, B, E>;\n\n constructor(outer: ChainSink<unknown, B, E>) {\n this.outer = outer;\n }\n\n event(time: Time, value: B): void {\n this.outer.sink.event(time, value);\n }\n\n error(time: Time, err: E): void {\n this.outer.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.outer.innerActive = false;\n if (this.outer.queue.length > 0) {\n this.outer.startInner(this.outer.queue.shift()!);\n } else if (this.outer.outerEnded) {\n this.outer.sink.end(time);\n }\n }\n}\n\nclass ChainSink<A, B, E> implements Sink<A, E> {\n declare readonly sink: Sink<B, E>;\n declare readonly f: (a: A) => Event<B, E>;\n declare readonly scheduler: Scheduler;\n declare readonly outerDisposable: SettableDisposable;\n declare innerDisposable: Disposable | undefined;\n declare outerEnded: boolean;\n declare readonly queue: Event<B, E>[];\n declare innerActive: boolean;\n\n constructor(\n f: (a: A) => Event<B, E>,\n sink: Sink<B, E>,\n scheduler: Scheduler,\n outerDisposable: SettableDisposable,\n ) {\n this.f = f;\n this.sink = sink;\n this.scheduler = scheduler;\n this.outerDisposable = outerDisposable;\n this.innerDisposable = undefined;\n this.outerEnded = false;\n this.queue = [];\n this.innerActive = false;\n }\n\n event(_time: Time, value: A): void {\n const f = this.f;\n const inner = f(value);\n if (this.innerActive) {\n this.queue.push(inner);\n } else {\n this.startInner(inner);\n }\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.outerEnded = true;\n if (!this.innerActive) {\n this.sink.end(time);\n }\n }\n\n startInner(inner: Event<B, E>): void {\n this.innerActive = true;\n if (this.innerDisposable !== undefined) {\n this.innerDisposable.dispose();\n }\n\n this.innerDisposable = _getSource(inner).run(\n new ChainInnerSink<B, E>(this as ChainSink<unknown, B, E>),\n this.scheduler,\n );\n }\n}\n\nclass ChainSource<A, B, E> implements Source<B, E> {\n declare readonly f: (a: A) => Event<B, E>;\n declare readonly source: Source<A, E>;\n\n constructor(f: (a: A) => Event<B, E>, source: Source<A, E>) {\n this.f = f;\n this.source = source;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n const chainSink = new ChainSink(this.f, sink, scheduler, sd);\n sd.set(this.source.run(chainSink, scheduler));\n return {\n dispose() {\n sd.dispose();\n if (chainSink.innerDisposable !== undefined) {\n chainSink.innerDisposable.dispose();\n }\n },\n };\n }\n}\n\n/**\n * Sequentially flatMap: for each value, create an inner Event and\n * concatenate the results.\n *\n * Denotation: `chain(f, e) = concat [f(v) | (t, v) ∈ e]`\n */\nexport const chain = <A, B, E>(f: (a: A) => Event<B, E>, event: Event<A, E>): Event<B, E> =>\n _createEvent(new ChainSource(f, _getSource(event)));\n","/**\n * Time-based combinators: debounce, throttle, delay, bufferTime, bufferCount.\n *\n * These use the Scheduler for timing and are the async boundary\n * where push meets scheduled execution.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type {\n Disposable,\n Duration,\n Event,\n ScheduledTask,\n Scheduler,\n Sink,\n Source,\n Time,\n} from \"aeon-types\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\n// --- debounce ---\n\nclass DebounceSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A, E>;\n declare readonly duration: Duration;\n declare readonly scheduler: Scheduler;\n declare pending: ScheduledTask | undefined;\n declare latestValue: A | undefined;\n declare hasValue: boolean;\n\n constructor(duration: Duration, sink: Sink<A, E>, scheduler: Scheduler) {\n this.duration = duration;\n this.sink = sink;\n this.scheduler = scheduler;\n this.pending = undefined;\n this.latestValue = undefined;\n this.hasValue = false;\n }\n\n event(_time: Time, value: A): void {\n this.latestValue = value;\n this.hasValue = true;\n\n if (this.pending !== undefined) {\n this.pending.dispose();\n }\n\n this.pending = this.scheduler.scheduleTask(this.duration, {\n run: (t: Time) => {\n if (this.hasValue) {\n this.hasValue = false;\n this.sink.event(t, this.latestValue as A);\n }\n },\n error: (t: Time, err: unknown) => {\n this.sink.error(t, err as E);\n },\n dispose: () => {},\n });\n }\n\n error(time: Time, err: E): void {\n this.clearPending();\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.clearPending();\n if (this.hasValue) {\n this.sink.event(time, this.latestValue as A);\n }\n this.sink.end(time);\n }\n\n clearPending(): void {\n if (this.pending !== undefined) {\n this.pending.dispose();\n this.pending = undefined;\n }\n }\n}\n\nclass DebounceSource<A, E> implements Source<A, E> {\n declare readonly duration: Duration;\n declare readonly source: Source<A, E>;\n\n constructor(duration: Duration, source: Source<A, E>) {\n this.duration = duration;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const debounceSink = new DebounceSink(this.duration, sink, scheduler);\n const d = this.source.run(debounceSink, scheduler);\n return {\n dispose() {\n debounceSink.clearPending();\n d.dispose();\n },\n };\n }\n}\n\n/**\n * Wait for a quiet period before emitting the latest value.\n * Each new value resets the timer.\n *\n * Denotation: emits the last value in each burst, after `duration` of silence.\n */\nexport const debounce = <A, E>(duration: Duration, event: Event<A, E>): Event<A, E> =>\n _createEvent(new DebounceSource(duration, _getSource(event)));\n\n// --- throttle ---\n\nclass ThrottleSink<A, E> extends Pipe<A, E> {\n declare readonly duration: Duration;\n declare readonly scheduler: Scheduler;\n declare lastEmitTime: number;\n\n constructor(duration: Duration, sink: Sink<A, E>, scheduler: Scheduler) {\n super(sink);\n this.duration = duration;\n this.scheduler = scheduler;\n this.lastEmitTime = Number.NEGATIVE_INFINITY;\n }\n\n event(time: Time, value: A): void {\n const now = time as number;\n if (now - this.lastEmitTime >= (this.duration as number)) {\n this.lastEmitTime = now;\n this.sink.event(time, value);\n }\n }\n}\n\nclass ThrottleSource<A, E> implements Source<A, E> {\n declare readonly duration: Duration;\n declare readonly source: Source<A, E>;\n\n constructor(duration: Duration, source: Source<A, E>) {\n this.duration = duration;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new ThrottleSink(this.duration, sink, scheduler), scheduler);\n }\n}\n\n/**\n * Emit at most one value per duration window.\n * Takes the first value in each window, ignores the rest.\n *\n * Denotation: rate-limits the event sequence.\n */\nexport const throttle = <A, E>(duration: Duration, event: Event<A, E>): Event<A, E> =>\n _createEvent(new ThrottleSource(duration, _getSource(event)));\n\n// --- delay ---\n\nclass DelaySink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A, E>;\n declare readonly duration: Duration;\n declare readonly scheduler: Scheduler;\n declare readonly pendingTasks: ScheduledTask[];\n\n constructor(duration: Duration, sink: Sink<A, E>, scheduler: Scheduler) {\n this.duration = duration;\n this.sink = sink;\n this.scheduler = scheduler;\n this.pendingTasks = [];\n }\n\n event(_time: Time, value: A): void {\n const st = this.scheduler.scheduleTask(this.duration, {\n run: (t: Time) => {\n this.sink.event(t, value);\n },\n error: (t: Time, err: unknown) => {\n this.sink.error(t, err as E);\n },\n dispose: () => {},\n });\n this.pendingTasks.push(st);\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(_time: Time): void {\n const st = this.scheduler.scheduleTask(this.duration, {\n run: (t: Time) => {\n this.sink.end(t);\n },\n error: () => {},\n dispose: () => {},\n });\n this.pendingTasks.push(st);\n }\n}\n\nclass DelaySource<A, E> implements Source<A, E> {\n declare readonly duration: Duration;\n declare readonly source: Source<A, E>;\n\n constructor(duration: Duration, source: Source<A, E>) {\n this.duration = duration;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const delaySink = new DelaySink(this.duration, sink, scheduler);\n const d = this.source.run(delaySink, scheduler);\n return {\n dispose() {\n for (const st of delaySink.pendingTasks) {\n st.dispose();\n }\n d.dispose();\n },\n };\n }\n}\n\n/**\n * Delay each event by a fixed duration.\n *\n * Denotation: `delay(d, e) = [(t + d, v) | (t, v) ∈ e]`\n */\nexport const delay = <A, E>(duration: Duration, event: Event<A, E>): Event<A, E> =>\n _createEvent(new DelaySource(duration, _getSource(event)));\n\n// --- bufferCount ---\n\nclass BufferCountSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A[], E>;\n declare readonly count: number;\n declare buffer: A[];\n\n constructor(count: number, sink: Sink<A[], E>) {\n this.count = count;\n this.sink = sink;\n this.buffer = [];\n }\n\n event(time: Time, value: A): void {\n this.buffer.push(value);\n if (this.buffer.length >= this.count) {\n const batch = this.buffer;\n this.buffer = [];\n this.sink.event(time, batch);\n }\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n if (this.buffer.length > 0) {\n this.sink.event(time, this.buffer);\n this.buffer = [];\n }\n this.sink.end(time);\n }\n}\n\nclass BufferCountSource<A, E> implements Source<A[], E> {\n declare readonly count: number;\n declare readonly source: Source<A, E>;\n\n constructor(count: number, source: Source<A, E>) {\n this.count = count;\n this.source = source;\n }\n\n run(sink: Sink<A[], E>, scheduler: Scheduler): Disposable {\n return this.source.run(new BufferCountSink(this.count, sink), scheduler);\n }\n}\n\n/**\n * Buffer values into arrays of a fixed size.\n * Emits when the buffer reaches `count`. Flushes remaining on end.\n */\nexport const bufferCount = <A, E>(count: number, event: Event<A, E>): Event<A[], E> =>\n _createEvent(new BufferCountSource(count, _getSource(event)));\n\n// --- bufferTime ---\n\nclass BufferTimeSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A[], E>;\n declare buffer: A[];\n declare ended: boolean;\n\n constructor(sink: Sink<A[], E>) {\n this.sink = sink;\n this.buffer = [];\n this.ended = false;\n }\n\n event(_time: Time, value: A): void {\n this.buffer.push(value);\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.ended = true;\n if (this.buffer.length > 0) {\n this.sink.event(time, this.buffer);\n this.buffer = [];\n }\n this.sink.end(time);\n }\n}\n\nclass BufferTimeSource<A, E> implements Source<A[], E> {\n declare readonly duration: Duration;\n declare readonly source: Source<A, E>;\n\n constructor(duration: Duration, source: Source<A, E>) {\n this.duration = duration;\n this.source = source;\n }\n\n run(sink: Sink<A[], E>, scheduler: Scheduler): Disposable {\n const btSink = new BufferTimeSink<A, E>(sink);\n\n const flush = (): void => {\n if (btSink.buffer.length > 0) {\n const batch = btSink.buffer;\n btSink.buffer = [];\n sink.event(scheduler.currentTime(), batch);\n }\n if (!btSink.ended) {\n scheduler.scheduleTask(this.duration, {\n run: () => flush(),\n error: () => {},\n dispose: () => {},\n });\n }\n };\n\n scheduler.scheduleTask(this.duration, {\n run: () => flush(),\n error: () => {},\n dispose: () => {},\n });\n\n return this.source.run(btSink, scheduler);\n }\n}\n\n/**\n * Buffer values over a time window.\n * Emits the buffer contents at the end of each window.\n */\nexport const bufferTime = <A, E>(duration: Duration, event: Event<A, E>): Event<A[], E> =>\n _createEvent(new BufferTimeSource(duration, _getSource(event)));\n","/**\n * traverse combinator.\n *\n * Applies an async function to each event value with bounded concurrency.\n * When all concurrency slots are occupied, incoming values are buffered.\n *\n * Uses monomorphic classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass TraverseState<A, B, E> {\n declare readonly sink: Sink<B, E>;\n declare readonly f: (a: A) => Promise<B>;\n declare readonly concurrency: number;\n declare readonly buffer: { time: Time; value: A }[];\n declare active: number;\n declare outerEnded: boolean;\n declare disposed: boolean;\n declare lastTime: Time;\n\n constructor(f: (a: A) => Promise<B>, concurrency: number, sink: Sink<B, E>, time: Time) {\n this.f = f;\n this.concurrency = concurrency;\n this.sink = sink;\n this.buffer = [];\n this.active = 0;\n this.outerEnded = false;\n this.disposed = false;\n this.lastTime = time;\n }\n\n tryDrain(): void {\n while (this.active < this.concurrency && this.buffer.length > 0) {\n const { time, value } = this.buffer.shift()!;\n this.startOne(time, value);\n }\n }\n\n startOne(time: Time, value: A): void {\n this.active++;\n const f = this.f;\n f(value).then(\n (result) => {\n if (this.disposed) return;\n this.sink.event(time, result);\n this.active--;\n if (this.buffer.length > 0) {\n this.tryDrain();\n } else if (this.outerEnded && this.active === 0) {\n this.sink.end(this.lastTime);\n }\n },\n (err) => {\n if (this.disposed) return;\n this.sink.error(time, err as E);\n },\n );\n }\n}\n\nclass TraverseSink<A, B, E> implements Sink<A, E> {\n declare readonly state: TraverseState<A, B, E>;\n\n constructor(state: TraverseState<A, B, E>) {\n this.state = state;\n }\n\n event(time: Time, value: A): void {\n this.state.lastTime = time;\n if (this.state.active < this.state.concurrency) {\n this.state.startOne(time, value);\n } else {\n this.state.buffer.push({ time, value });\n }\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.lastTime = time;\n this.state.outerEnded = true;\n if (this.state.active === 0 && this.state.buffer.length === 0) {\n this.state.sink.end(time);\n }\n }\n}\n\nclass TraverseSource<A, B, E> implements Source<B, E> {\n declare readonly f: (a: A) => Promise<B>;\n declare readonly concurrency: number;\n declare readonly source: Source<A, E>;\n\n constructor(f: (a: A) => Promise<B>, concurrency: number, source: Source<A, E>) {\n this.f = f;\n this.concurrency = concurrency;\n this.source = source;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n const state = new TraverseState<A, B, E>(\n this.f,\n this.concurrency,\n sink,\n scheduler.currentTime(),\n );\n const outerDisposable = this.source.run(new TraverseSink(state), scheduler);\n\n return {\n dispose() {\n state.disposed = true;\n outerDisposable.dispose();\n },\n };\n }\n}\n\n/**\n * Apply an async function to each event value with bounded concurrency.\n *\n * Denotation: `traverse(f, c, e) = [(t, await f(v)) | (t, v) ∈ e]`\n * with at most `c` pending promises at any time. When all slots are\n * occupied, incoming values are buffered until a slot frees up.\n *\n * Results are emitted as promises resolve, so output order may differ\n * from input order when concurrency > 1.\n */\nexport const traverse = <A, B, E>(\n f: (a: A) => Promise<B>,\n concurrency: number,\n event: Event<A, E>,\n): Event<B, E> => _createEvent(new TraverseSource(f, concurrency, _getSource(event)));\n","/**\n * fromPromise constructor.\n *\n * Denotation: `fromPromise(p) = [(t_resolve, value)]` or `Error(rejection)`\n * where `t_resolve` is the time at which the promise settles.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent } from \"../internal/event.js\";\n\nclass FromPromiseSource<A> implements Source<A, unknown> {\n declare readonly promise: Promise<A>;\n\n constructor(promise: Promise<A>) {\n this.promise = promise;\n }\n\n run(sink: Sink<A, unknown>, scheduler: Scheduler): Disposable {\n let disposed = false;\n\n this.promise.then(\n (value) => {\n if (!disposed) {\n const t = scheduler.currentTime();\n sink.event(t, value);\n sink.end(t);\n }\n },\n (err) => {\n if (!disposed) {\n sink.error(scheduler.currentTime(), err);\n }\n },\n );\n\n return {\n dispose() {\n disposed = true;\n },\n };\n }\n}\n\n/**\n * Create an Event from a Promise.\n *\n * The event emits the resolved value at the time the promise settles,\n * then ends. If the promise rejects, the event errors.\n *\n * Denotation: `[(t_resolve, value)]` or `Error(rejection)`\n */\nexport const fromPromise = <A>(promise: Promise<A>): Event<A, unknown> =>\n _createEvent(new FromPromiseSource(promise));\n","/**\n * retry combinator.\n *\n * Denotation: on error, re-subscribe to the source up to `maxRetries` times.\n * Optionally delays each retry.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Duration, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { SettableDisposable } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass RetrySink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A, E>;\n declare readonly source: Source<A, E>;\n declare readonly scheduler: Scheduler;\n declare readonly disposable: SettableDisposable;\n declare readonly maxRetries: number;\n declare readonly delayDuration: Duration | undefined;\n declare attempt: number;\n\n constructor(\n sink: Sink<A, E>,\n source: Source<A, E>,\n scheduler: Scheduler,\n disposable: SettableDisposable,\n maxRetries: number,\n delayDuration: Duration | undefined,\n ) {\n this.sink = sink;\n this.source = source;\n this.scheduler = scheduler;\n this.disposable = disposable;\n this.maxRetries = maxRetries;\n this.delayDuration = delayDuration;\n this.attempt = 0;\n }\n\n event(time: Time, value: A): void {\n this.sink.event(time, value);\n }\n\n error(time: Time, err: E): void {\n this.attempt++;\n if (this.attempt > this.maxRetries) {\n this.sink.error(time, err);\n return;\n }\n\n if (this.delayDuration !== undefined) {\n const self = this;\n const st = this.scheduler.scheduleTask(this.delayDuration, {\n run() {\n self.disposable.set(self.source.run(self, self.scheduler));\n },\n error(t: Time, e: unknown) {\n self.sink.error(t, e as E);\n },\n dispose() {},\n });\n this.disposable.set(st);\n } else {\n this.disposable.set(this.source.run(this, this.scheduler));\n }\n }\n\n end(time: Time): void {\n this.sink.end(time);\n }\n}\n\nclass RetrySource<A, E> implements Source<A, E> {\n declare readonly source: Source<A, E>;\n declare readonly maxRetries: number;\n declare readonly delayDuration: Duration | undefined;\n\n constructor(source: Source<A, E>, maxRetries: number, delayDuration: Duration | undefined) {\n this.source = source;\n this.maxRetries = maxRetries;\n this.delayDuration = delayDuration;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n const retrySink = new RetrySink(\n sink,\n this.source,\n scheduler,\n sd,\n this.maxRetries,\n this.delayDuration,\n );\n sd.set(this.source.run(retrySink, scheduler));\n return sd;\n }\n}\n\n/**\n * Retry a failing event stream up to `maxRetries` times.\n *\n * On error, re-subscribes to the source. If `delay` is provided,\n * waits that duration before each retry. If all retries are exhausted,\n * the error propagates downstream.\n */\nexport const retry = <A, E>(\n maxRetries: number,\n event: Event<A, E>,\n delay?: Duration,\n): Event<A, E> => _createEvent(new RetrySource(_getSource(event), maxRetries, delay));\n","/**\n * share — replay multicast.\n *\n * Like multicast, but buffers the last N values and replays them\n * to late subscribers. Useful for hot streams where late subscribers\n * need the most recent state.\n *\n * Uses monomorphic classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass ReplayState<A, E> {\n declare readonly sinks: Set<Sink<A, E>>;\n declare readonly buffer: { time: Time; value: A }[];\n declare readonly bufferSize: number;\n declare sourceDisposable: Disposable | undefined;\n declare ended: boolean;\n declare endTime: Time | undefined;\n declare errored: boolean;\n declare errorTime: Time | undefined;\n declare errorValue: E | undefined;\n\n constructor(bufferSize: number) {\n this.sinks = new Set();\n this.buffer = [];\n this.bufferSize = bufferSize;\n this.sourceDisposable = undefined;\n this.ended = false;\n this.endTime = undefined;\n this.errored = false;\n this.errorTime = undefined;\n this.errorValue = undefined;\n }\n\n push(time: Time, value: A): void {\n this.buffer.push({ time, value });\n if (this.buffer.length > this.bufferSize) {\n this.buffer.shift();\n }\n }\n}\n\nclass ShareSource<A, E> implements Source<A, E> {\n declare readonly source: Source<A, E>;\n declare readonly state: ReplayState<A, E>;\n\n constructor(source: Source<A, E>, bufferSize: number) {\n this.source = source;\n this.state = new ReplayState(bufferSize);\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const state = this.state;\n\n // Replay buffered values to new subscriber\n for (let i = 0; i < state.buffer.length; i++) {\n const entry = state.buffer[i]!;\n sink.event(entry.time, entry.value);\n }\n\n // If source already errored, propagate immediately\n if (state.errored) {\n sink.error(state.errorTime!, state.errorValue!);\n return { dispose() {} };\n }\n\n // If source already ended, end immediately\n if (state.ended) {\n sink.end(state.endTime!);\n return { dispose() {} };\n }\n\n state.sinks.add(sink);\n\n if (state.sinks.size === 1) {\n // First subscriber — connect to source\n state.sourceDisposable = this.source.run(\n {\n event(time: Time, value: A) {\n state.push(time, value);\n for (const s of state.sinks) {\n s.event(time, value);\n }\n },\n error(time: Time, err: E) {\n state.errored = true;\n state.errorTime = time;\n state.errorValue = err;\n for (const s of state.sinks) {\n s.error(time, err);\n }\n },\n end(time: Time) {\n state.ended = true;\n state.endTime = time;\n for (const s of state.sinks) {\n s.end(time);\n }\n },\n },\n scheduler,\n );\n }\n\n return {\n dispose() {\n state.sinks.delete(sink);\n if (state.sinks.size === 0 && state.sourceDisposable !== undefined) {\n state.sourceDisposable.dispose();\n state.sourceDisposable = undefined;\n // Reset state so source can be re-subscribed\n state.ended = false;\n state.endTime = undefined;\n state.errored = false;\n state.errorTime = undefined;\n state.errorValue = undefined;\n state.buffer.length = 0;\n }\n },\n };\n }\n}\n\n/**\n * Share a single subscription with replay for late subscribers.\n *\n * Buffers the last `bufferSize` values and replays them to new subscribers.\n * Like `multicast`, the source is subscribed lazily and disposed when\n * the last subscriber leaves.\n *\n * - `share(1, event)` — replay latest value (like RxJS `shareReplay(1)`)\n * - `share(0, event)` — equivalent to `multicast` (no replay)\n */\nexport const share = <A, E>(bufferSize: number, event: Event<A, E>): Event<A, E> =>\n _createEvent(new ShareSource(_getSource(event), bufferSize));\n","/**\n * attach combinator.\n *\n * Denotation: `attach(f, sampled, sampler)` emits\n * `f(latestA, b)` whenever `sampler` fires, using the latest\n * value from `sampled`. Only emits after `sampled` has produced\n * at least one value.\n *\n * Uses monomorphic Sink/Source classes for V8 hidden class stability.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { disposeAll } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass AttachState<A, B, C, E> {\n declare latestA: A | undefined;\n declare hasA: boolean;\n declare readonly sink: Sink<C, E>;\n declare readonly f: (a: A, b: B) => C;\n\n constructor(f: (a: A, b: B) => C, sink: Sink<C, E>) {\n this.latestA = undefined;\n this.hasA = false;\n this.sink = sink;\n this.f = f;\n }\n}\n\nclass AttachSampledSink<A, B, C, E> implements Sink<A, E> {\n declare readonly state: AttachState<A, B, C, E>;\n\n constructor(state: AttachState<A, B, C, E>) {\n this.state = state;\n }\n\n event(_time: Time, value: A): void {\n this.state.latestA = value;\n this.state.hasA = true;\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(_time: Time): void {\n // sampled ending doesn't end the output — sampler controls timing\n }\n}\n\nclass AttachSamplerSink<A, B, C, E> implements Sink<B, E> {\n declare readonly state: AttachState<A, B, C, E>;\n\n constructor(state: AttachState<A, B, C, E>) {\n this.state = state;\n }\n\n event(time: Time, value: B): void {\n if (this.state.hasA) {\n const f = this.state.f;\n this.state.sink.event(time, f(this.state.latestA as A, value));\n }\n }\n\n error(time: Time, err: E): void {\n this.state.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.sink.end(time);\n }\n}\n\nclass AttachSource<A, B, C, E> implements Source<C, E> {\n declare readonly f: (a: A, b: B) => C;\n declare readonly sampled: Source<A, E>;\n declare readonly sampler: Source<B, E>;\n\n constructor(f: (a: A, b: B) => C, sampled: Source<A, E>, sampler: Source<B, E>) {\n this.f = f;\n this.sampled = sampled;\n this.sampler = sampler;\n }\n\n run(sink: Sink<C, E>, scheduler: Scheduler): Disposable {\n const state = new AttachState<A, B, C, E>(this.f, sink);\n return disposeAll([\n this.sampled.run(new AttachSampledSink(state), scheduler),\n this.sampler.run(new AttachSamplerSink(state), scheduler),\n ]);\n }\n}\n\n/**\n * Combine the latest value from one stream with each emission of another.\n *\n * Emits `f(latestA, b)` each time `sampler` fires, using the most recent\n * value from `sampled`. Only emits after `sampled` has produced at least one value.\n *\n * The output ends when `sampler` ends. Errors from either source propagate.\n */\nexport const attach = <A, B, C, E>(\n f: (a: A, b: B) => C,\n sampled: Event<A, E>,\n sampler: Event<B, E>,\n): Event<C, E> => _createEvent(new AttachSource(f, _getSource(sampled), _getSource(sampler)));\n","/**\n * dedupe combinator.\n *\n * Denotation: suppress consecutive duplicate values.\n * `dedupe(eq, e) = [(t, v) | (t, v) ∈ e, v ≠ prev]`\n * where `prev` is the most recently emitted value.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass DedupeSink<A, E> extends Pipe<A, E> {\n declare readonly eq: (a: A, b: A) => boolean;\n declare prev: A | typeof UNSET;\n\n constructor(eq: (a: A, b: A) => boolean, sink: Sink<A, E>) {\n super(sink);\n this.eq = eq;\n this.prev = UNSET;\n }\n\n event(time: Time, value: A): void {\n if (this.prev === UNSET || !this.eq(this.prev as A, value)) {\n this.prev = value;\n this.sink.event(time, value);\n }\n }\n}\n\nconst UNSET: unique symbol = Symbol(\"unset\");\n\nclass DedupeSource<A, E> implements Source<A, E> {\n declare readonly eq: (a: A, b: A) => boolean;\n declare readonly source: Source<A, E>;\n\n constructor(eq: (a: A, b: A) => boolean, source: Source<A, E>) {\n this.eq = eq;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new DedupeSink(this.eq, sink), scheduler);\n }\n}\n\nconst defaultEq = <A>(a: A, b: A): boolean => a === b;\n\n/**\n * Suppress consecutive duplicate values.\n *\n * Denotation: emits a value only when it differs from the previous\n * emission, according to the provided equality function (defaults to `===`).\n */\nexport const dedupe = <A, E>(\n event: Event<A, E>,\n eq: (a: A, b: A) => boolean = defaultEq,\n): Event<A, E> => _createEvent(new DedupeSource(eq, _getSource(event)));\n","/**\n * cons combinator.\n *\n * Denotation: `cons(value, e) = [(t₀, value)] ++ e`\n * Prepends a synchronous initial value before the first event.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass ConsSource<A, E> implements Source<A, E> {\n declare readonly value: A;\n declare readonly source: Source<A, E>;\n\n constructor(value: A, source: Source<A, E>) {\n this.value = value;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n sink.event(scheduler.currentTime(), this.value);\n return this.source.run(sink, scheduler);\n }\n}\n\n/**\n * Prepend an initial value before the first event.\n *\n * Denotation: `cons(value, e) = [(t₀, value)] ++ e`\n */\nexport const cons = <A, E>(value: A, event: Event<A, E>): Event<A, E> =>\n _createEvent(new ConsSource(value, _getSource(event)));\n","/**\n * first and last combinators.\n *\n * first: emit only the first value (optionally matching a predicate), then end.\n * last: emit only the final value (optionally matching a predicate) on end.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { SettableDisposable } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\n// --- first ---\n\nclass FirstSink<A, E> extends Pipe<A, E> {\n declare readonly predicate: ((a: A) => boolean) | undefined;\n declare readonly disposable: SettableDisposable;\n declare found: boolean;\n\n constructor(\n predicate: ((a: A) => boolean) | undefined,\n sink: Sink<A, E>,\n disposable: SettableDisposable,\n ) {\n super(sink);\n this.predicate = predicate;\n this.disposable = disposable;\n this.found = false;\n }\n\n event(time: Time, value: A): void {\n if (this.found) return;\n if (this.predicate !== undefined && !this.predicate(value)) return;\n this.found = true;\n this.sink.event(time, value);\n this.disposable.dispose();\n this.sink.end(time);\n }\n\n end(time: Time): void {\n if (!this.found) {\n this.sink.end(time);\n }\n }\n}\n\nclass FirstSource<A, E> implements Source<A, E> {\n declare readonly predicate: ((a: A) => boolean) | undefined;\n declare readonly source: Source<A, E>;\n\n constructor(predicate: ((a: A) => boolean) | undefined, source: Source<A, E>) {\n this.predicate = predicate;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n sd.set(this.source.run(new FirstSink(this.predicate, sink, sd), scheduler));\n return sd;\n }\n}\n\n/**\n * Emit only the first value, then end.\n * With a predicate: emit the first value matching the predicate.\n *\n * Denotation: `first(e) = take(1, e)`\n * `first(p, e) = take(1, filter(p, e))`\n */\nexport const first = <A, E>(event: Event<A, E>, predicate?: (a: A) => boolean): Event<A, E> =>\n _createEvent(new FirstSource(predicate, _getSource(event)));\n\n// --- last ---\n\nclass LastSink<A, E> extends Pipe<A, E> {\n declare readonly predicate: ((a: A) => boolean) | undefined;\n declare latest: A | typeof UNSET;\n\n constructor(predicate: ((a: A) => boolean) | undefined, sink: Sink<A, E>) {\n super(sink);\n this.predicate = predicate;\n this.latest = UNSET;\n }\n\n event(_time: Time, value: A): void {\n if (this.predicate !== undefined && !this.predicate(value)) return;\n this.latest = value;\n }\n\n end(time: Time): void {\n if (this.latest !== UNSET) {\n this.sink.event(time, this.latest as A);\n }\n this.sink.end(time);\n }\n}\n\nconst UNSET: unique symbol = Symbol(\"unset\");\n\nclass LastSource<A, E> implements Source<A, E> {\n declare readonly predicate: ((a: A) => boolean) | undefined;\n declare readonly source: Source<A, E>;\n\n constructor(predicate: ((a: A) => boolean) | undefined, source: Source<A, E>) {\n this.predicate = predicate;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new LastSink(this.predicate, sink), scheduler);\n }\n}\n\n/**\n * Emit only the final value when the stream ends.\n * With a predicate: emit the last value matching the predicate.\n *\n * Denotation: `last(e) = let vs = values(e) in [vs[|vs|-1]]`\n */\nexport const last = <A, E>(event: Event<A, E>, predicate?: (a: A) => boolean): Event<A, E> =>\n _createEvent(new LastSource(predicate, _getSource(event)));\n","/**\n * pairwise combinator.\n *\n * Denotation: `pairwise(e) = [(t₂, [v₁, v₂]), (t₃, [v₂, v₃]), ...]`\n * Emits [previous, current] tuples, starting from the second event.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass PairwiseSink<A, E> {\n declare readonly sink: Sink<[A, A], E>;\n declare prev: A | typeof UNSET;\n\n constructor(sink: Sink<[A, A], E>) {\n this.sink = sink;\n this.prev = UNSET;\n }\n\n event(time: Time, value: A): void {\n if (this.prev !== UNSET) {\n this.sink.event(time, [this.prev as A, value]);\n }\n this.prev = value;\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.sink.end(time);\n }\n}\n\nconst UNSET: unique symbol = Symbol(\"unset\");\n\nclass PairwiseSource<A, E> implements Source<[A, A], E> {\n declare readonly source: Source<A, E>;\n\n constructor(source: Source<A, E>) {\n this.source = source;\n }\n\n run(sink: Sink<[A, A], E>, scheduler: Scheduler): Disposable {\n return this.source.run(new PairwiseSink(sink) as unknown as Sink<A, E>, scheduler);\n }\n}\n\n/**\n * Emit [previous, current] pairs, starting from the second event.\n *\n * Denotation: `pairwise(e) = [(tₙ, [vₙ₋₁, vₙ]) | n >= 2]`\n */\nexport const pairwise = <A, E>(event: Event<A, E>): Event<[A, A], E> =>\n _createEvent(new PairwiseSource(_getSource(event)));\n","/**\n * timeout combinator.\n *\n * Denotation: error if no event is emitted within a time window.\n * After each event, the timer resets. If the timer expires before\n * the next event (or the first event), an error is emitted.\n */\n\nimport type {\n Disposable,\n Duration,\n Event,\n ScheduledTask,\n Scheduler,\n Sink,\n Source,\n Time,\n} from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass TimeoutError extends Error {\n constructor(duration: Duration) {\n super(`Timeout: no event within ${duration as number}ms`);\n this.name = \"TimeoutError\";\n }\n}\n\nclass TimeoutSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A, E | TimeoutError>;\n declare readonly duration: Duration;\n declare readonly scheduler: Scheduler;\n declare pending: ScheduledTask | undefined;\n declare active: boolean;\n\n constructor(duration: Duration, sink: Sink<A, E | TimeoutError>, scheduler: Scheduler) {\n this.duration = duration;\n this.sink = sink;\n this.scheduler = scheduler;\n this.active = true;\n this.pending = undefined;\n this.scheduleTimeout();\n }\n\n event(time: Time, value: A): void {\n if (!this.active) return;\n this.clearPending();\n this.sink.event(time, value);\n this.scheduleTimeout();\n }\n\n error(time: Time, err: E): void {\n if (!this.active) return;\n this.active = false;\n this.clearPending();\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n if (!this.active) return;\n this.active = false;\n this.clearPending();\n this.sink.end(time);\n }\n\n scheduleTimeout(): void {\n this.pending = this.scheduler.scheduleTask(this.duration, {\n run: (t: Time) => {\n if (this.active) {\n this.active = false;\n this.sink.error(t, new TimeoutError(this.duration) as unknown as E | TimeoutError);\n }\n },\n error: () => {},\n dispose: () => {},\n });\n }\n\n clearPending(): void {\n if (this.pending !== undefined) {\n this.pending.dispose();\n this.pending = undefined;\n }\n }\n}\n\nclass TimeoutSource<A, E> implements Source<A, E | TimeoutError> {\n declare readonly duration: Duration;\n declare readonly source: Source<A, E>;\n\n constructor(duration: Duration, source: Source<A, E>) {\n this.duration = duration;\n this.source = source;\n }\n\n run(sink: Sink<A, E | TimeoutError>, scheduler: Scheduler): Disposable {\n const timeoutSink = new TimeoutSink<A, E>(this.duration, sink, scheduler);\n const d = this.source.run(timeoutSink as unknown as Sink<A, E>, scheduler);\n return {\n dispose() {\n timeoutSink.active = false;\n timeoutSink.clearPending();\n d.dispose();\n },\n };\n }\n}\n\n/**\n * Error if no event is emitted within `duration`.\n * The timer starts immediately and resets after each event.\n *\n * Emits a TimeoutError via the error channel.\n */\nexport const timeout = <A, E>(duration: Duration, event: Event<A, E>): Event<A, E | TimeoutError> =>\n _createEvent(new TimeoutSource(duration, _getSource(event)));\n\nexport { TimeoutError };\n","/**\n * exhaustMap combinator.\n *\n * Denotation: while an inner stream is active, ignore new outer values.\n * The counterpart to switchLatest (which cancels) and mergeMap (which\n * runs all concurrently).\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass ExhaustMapInnerSink<B, E> implements Sink<B, E> {\n declare readonly outer: ExhaustMapSink<unknown, B, E>;\n\n constructor(outer: ExhaustMapSink<unknown, B, E>) {\n this.outer = outer;\n }\n\n event(time: Time, value: B): void {\n this.outer.sink.event(time, value);\n }\n\n error(time: Time, err: E): void {\n this.outer.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.outer.innerActive = false;\n this.outer.innerDisposable = undefined;\n if (this.outer.outerEnded) {\n this.outer.sink.end(time);\n }\n }\n}\n\nclass ExhaustMapSink<A, B, E> implements Sink<A, E> {\n declare readonly sink: Sink<B, E>;\n declare readonly f: (a: A) => Event<B, E>;\n declare readonly scheduler: Scheduler;\n declare innerActive: boolean;\n declare innerDisposable: Disposable | undefined;\n declare outerEnded: boolean;\n\n constructor(f: (a: A) => Event<B, E>, sink: Sink<B, E>, scheduler: Scheduler) {\n this.f = f;\n this.sink = sink;\n this.scheduler = scheduler;\n this.innerActive = false;\n this.innerDisposable = undefined;\n this.outerEnded = false;\n }\n\n event(_time: Time, value: A): void {\n if (this.innerActive) return; // Ignore while inner is active\n this.innerActive = true;\n const f = this.f;\n const inner = f(value);\n this.innerDisposable = _getSource(inner).run(\n new ExhaustMapInnerSink<B, E>(this as ExhaustMapSink<unknown, B, E>),\n this.scheduler,\n );\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.outerEnded = true;\n if (!this.innerActive) {\n this.sink.end(time);\n }\n }\n}\n\nclass ExhaustMapSource<A, B, E> implements Source<B, E> {\n declare readonly f: (a: A) => Event<B, E>;\n declare readonly source: Source<A, E>;\n\n constructor(f: (a: A) => Event<B, E>, source: Source<A, E>) {\n this.f = f;\n this.source = source;\n }\n\n run(sink: Sink<B, E>, scheduler: Scheduler): Disposable {\n const exhaustSink = new ExhaustMapSink(this.f, sink, scheduler);\n const d = this.source.run(exhaustSink, scheduler);\n return {\n dispose() {\n if (exhaustSink.innerDisposable !== undefined) {\n exhaustSink.innerDisposable.dispose();\n }\n d.dispose();\n },\n };\n }\n}\n\n/**\n * Map each outer value to an inner Event, ignoring new outer values\n * while the current inner is still active.\n *\n * Denotation: projects outer values to inner streams, but drops\n * projections that arrive while an inner stream is running.\n */\nexport const exhaustMap = <A, B, E>(f: (a: A) => Event<B, E>, event: Event<A, E>): Event<B, E> =>\n _createEvent(new ExhaustMapSource(f, _getSource(event)));\n","/**\n * forkJoin combinator.\n *\n * Denotation: wait for all streams to complete, emit an array\n * of their final values. If any stream completes without emitting,\n * the result completes without emitting.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { disposeAll } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nconst UNSET: unique symbol = Symbol(\"unset\");\n\nclass ForkJoinSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A[], E>;\n declare readonly index: number;\n declare readonly state: ForkJoinState<A, E>;\n\n constructor(sink: Sink<A[], E>, index: number, state: ForkJoinState<A, E>) {\n this.sink = sink;\n this.index = index;\n this.state = state;\n }\n\n event(_time: Time, value: A): void {\n this.state.latestValues[this.index] = value;\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.state.remaining--;\n if (this.state.remaining === 0) {\n // Check all have emitted at least once\n const values = this.state.latestValues;\n for (let i = 0; i < values.length; i++) {\n if (values[i] === UNSET) {\n this.sink.end(time);\n return;\n }\n }\n this.sink.event(time, values as A[]);\n this.sink.end(time);\n }\n }\n}\n\nclass ForkJoinState<A, E> {\n declare readonly latestValues: (A | typeof UNSET)[];\n declare remaining: number;\n\n constructor(count: number) {\n this.latestValues = new Array(count).fill(UNSET) as (A | typeof UNSET)[];\n this.remaining = count;\n }\n}\n\nclass ForkJoinSource<A, E> implements Source<A[], E> {\n declare readonly sources: Source<A, E>[];\n\n constructor(sources: Source<A, E>[]) {\n this.sources = sources;\n }\n\n run(sink: Sink<A[], E>, scheduler: Scheduler): Disposable {\n const count = this.sources.length;\n if (count === 0) {\n sink.end(scheduler.currentTime());\n return { dispose() {} };\n }\n\n const state = new ForkJoinState<A, E>(count);\n const disposables: Disposable[] = [];\n\n for (let i = 0; i < count; i++) {\n disposables.push(this.sources[i]!.run(new ForkJoinSink(sink, i, state), scheduler));\n }\n\n return disposeAll(disposables);\n }\n}\n\n/**\n * Wait for all streams to complete, then emit an array of their final values.\n * If any stream completes without emitting, the result completes empty.\n */\nexport const forkJoin = <A, E>(...events: Event<A, E>[]): Event<A[], E> =>\n _createEvent(new ForkJoinSource(events.map(_getSource)));\n","/**\n * orElse combinator.\n *\n * Denotation: if the stream completes without emitting any values,\n * emit a default value before ending.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass OrElseSink<A, E> extends Pipe<A, E> {\n declare readonly defaultValue: A;\n declare hasValue: boolean;\n\n constructor(defaultValue: A, sink: Sink<A, E>) {\n super(sink);\n this.defaultValue = defaultValue;\n this.hasValue = false;\n }\n\n event(time: Time, value: A): void {\n this.hasValue = true;\n this.sink.event(time, value);\n }\n\n end(time: Time): void {\n if (!this.hasValue) {\n this.sink.event(time, this.defaultValue);\n }\n this.sink.end(time);\n }\n}\n\nclass OrElseSource<A, E> implements Source<A, E> {\n declare readonly defaultValue: A;\n declare readonly source: Source<A, E>;\n\n constructor(defaultValue: A, source: Source<A, E>) {\n this.defaultValue = defaultValue;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new OrElseSink(this.defaultValue, sink), scheduler);\n }\n}\n\n/**\n * Emit a default value if the stream completes without producing any values.\n *\n * Denotation: `orElse(d, e) = isEmpty(e) ? [(t_end, d)] : e`\n */\nexport const orElse = <A, E>(defaultValue: A, event: Event<A, E>): Event<A, E> =>\n _createEvent(new OrElseSource(defaultValue, _getSource(event)));\n","/**\n * ensure combinator.\n *\n * Denotation: run a side-effect function when the stream ends or errors.\n * The cleanup runs exactly once.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass EnsureSink<A, E> extends Pipe<A, E> {\n declare readonly cleanup: () => void;\n declare called: boolean;\n\n constructor(cleanup: () => void, sink: Sink<A, E>) {\n super(sink);\n this.cleanup = cleanup;\n this.called = false;\n }\n\n event(time: Time, value: A): void {\n this.sink.event(time, value);\n }\n\n error(time: Time, err: E): void {\n this.runCleanup();\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.runCleanup();\n this.sink.end(time);\n }\n\n runCleanup(): void {\n if (!this.called) {\n this.called = true;\n this.cleanup();\n }\n }\n}\n\nclass EnsureSource<A, E> implements Source<A, E> {\n declare readonly cleanup: () => void;\n declare readonly source: Source<A, E>;\n\n constructor(cleanup: () => void, source: Source<A, E>) {\n this.cleanup = cleanup;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const ensureSink = new EnsureSink(this.cleanup, sink);\n const d = this.source.run(ensureSink, scheduler);\n return {\n dispose() {\n ensureSink.runCleanup();\n d.dispose();\n },\n };\n }\n}\n\n/**\n * Run a cleanup function when the stream ends, errors, or is disposed.\n * The cleanup runs exactly once regardless of which termination path fires.\n */\nexport const ensure = <A, E>(cleanup: () => void, event: Event<A, E>): Event<A, E> =>\n _createEvent(new EnsureSource(cleanup, _getSource(event)));\n","/**\n * race combinator.\n *\n * Denotation: the first stream to emit wins. All others are disposed.\n * If any stream errors before the first event, the error propagates.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\nclass RaceSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<A, E>;\n declare readonly index: number;\n declare readonly state: RaceState<A, E>;\n\n constructor(sink: Sink<A, E>, index: number, state: RaceState<A, E>) {\n this.sink = sink;\n this.index = index;\n this.state = state;\n }\n\n event(time: Time, value: A): void {\n if (this.state.winner === -1) {\n this.state.winner = this.index;\n // Dispose all losers\n for (let i = 0; i < this.state.disposables.length; i++) {\n if (i !== this.index) {\n this.state.disposables[i]?.dispose();\n }\n }\n }\n if (this.state.winner === this.index) {\n this.sink.event(time, value);\n }\n }\n\n error(time: Time, err: E): void {\n if (this.state.winner === -1 || this.state.winner === this.index) {\n this.sink.error(time, err);\n }\n }\n\n end(time: Time): void {\n if (this.state.winner === this.index) {\n this.sink.end(time);\n } else if (this.state.winner === -1) {\n // A source ended without emitting — count it out\n this.state.endedCount++;\n if (this.state.endedCount === this.state.disposables.length) {\n this.sink.end(time);\n }\n }\n }\n}\n\nclass RaceState<A, E> {\n declare winner: number;\n declare endedCount: number;\n declare readonly disposables: (Disposable | undefined)[];\n\n constructor(count: number) {\n this.winner = -1;\n this.endedCount = 0;\n this.disposables = new Array(count).fill(undefined) as (Disposable | undefined)[];\n }\n}\n\nclass RaceSource<A, E> implements Source<A, E> {\n declare readonly sources: Source<A, E>[];\n\n constructor(sources: Source<A, E>[]) {\n this.sources = sources;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const count = this.sources.length;\n if (count === 0) {\n sink.end(scheduler.currentTime());\n return { dispose() {} };\n }\n\n const state = new RaceState<A, E>(count);\n\n for (let i = 0; i < count; i++) {\n state.disposables[i] = this.sources[i]!.run(new RaceSink(sink, i, state), scheduler);\n }\n\n return {\n dispose() {\n for (const d of state.disposables) {\n d?.dispose();\n }\n },\n };\n }\n}\n\n/**\n * Race multiple streams: the first to emit wins, others are disposed.\n * Subsequent events come only from the winner.\n */\nexport const race = <A, E>(...events: Event<A, E>[]): Event<A, E> =>\n _createEvent(new RaceSource(events.map(_getSource)));\n","/**\n * Aggregate combinators: count, every, elementAt.\n *\n * Simple stream aggregation operators that can be composed from\n * primitives but are common enough to justify named combinators.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Source, Time } from \"aeon-types\";\nimport { Pipe } from \"../internal/Pipe.js\";\nimport { SettableDisposable } from \"../internal/dispose.js\";\nimport { _createEvent, _getSource } from \"../internal/event.js\";\n\n// --- count ---\n\nclass CountSink<A, E> implements Sink<A, E> {\n declare readonly sink: Sink<number, E>;\n declare n: number;\n\n constructor(sink: Sink<number, E>) {\n this.sink = sink;\n this.n = 0;\n }\n\n event(_time: Time, _value: A): void {\n this.n++;\n }\n\n error(time: Time, err: E): void {\n this.sink.error(time, err);\n }\n\n end(time: Time): void {\n this.sink.event(time, this.n);\n this.sink.end(time);\n }\n}\n\nclass CountSource<A, E> implements Source<number, E> {\n declare readonly source: Source<A, E>;\n\n constructor(source: Source<A, E>) {\n this.source = source;\n }\n\n run(sink: Sink<number, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new CountSink(sink) as unknown as Sink<A, E>, scheduler);\n }\n}\n\n/**\n * Emit the total number of values when the stream ends.\n *\n * Denotation: `count(e) = [(t_end, |e|)]`\n */\nexport const count = <A, E>(event: Event<A, E>): Event<number, E> =>\n _createEvent(new CountSource(_getSource(event)));\n\n// --- all ---\n\nclass AllSink<A, E> extends Pipe<boolean, E> {\n declare readonly predicate: (a: A) => boolean;\n declare result: boolean;\n\n constructor(predicate: (a: A) => boolean, sink: Sink<boolean, E>) {\n super(sink);\n this.predicate = predicate;\n this.result = true;\n }\n\n event(time: Time, value: unknown): void {\n if (!this.result) return;\n if (!this.predicate(value as A)) {\n this.result = false;\n this.sink.event(time, false);\n this.sink.end(time);\n }\n }\n\n end(time: Time): void {\n if (this.result) {\n this.sink.event(time, true);\n }\n this.sink.end(time);\n }\n}\n\nclass AllSource<A, E> implements Source<boolean, E> {\n declare readonly predicate: (a: A) => boolean;\n declare readonly source: Source<A, E>;\n\n constructor(predicate: (a: A) => boolean, source: Source<A, E>) {\n this.predicate = predicate;\n this.source = source;\n }\n\n run(sink: Sink<boolean, E>, scheduler: Scheduler): Disposable {\n return this.source.run(new AllSink(this.predicate, sink) as unknown as Sink<A, E>, scheduler);\n }\n}\n\n/**\n * Emit `true` when the stream ends if all values matched the predicate,\n * or `false` as soon as one fails.\n *\n * Denotation: `all(p, e) = [(t, ∀v ∈ e. p(v))]`\n */\nexport const all = <A, E>(predicate: (a: A) => boolean, event: Event<A, E>): Event<boolean, E> =>\n _createEvent(new AllSource(predicate, _getSource(event)));\n\n// --- elementAt ---\n\nclass ElementAtSink<A, E> extends Pipe<A, E> {\n declare readonly n: number;\n declare readonly disposable: SettableDisposable;\n declare index: number;\n declare found: boolean;\n\n constructor(n: number, sink: Sink<A, E>, disposable: SettableDisposable) {\n super(sink);\n this.n = n;\n this.disposable = disposable;\n this.index = 0;\n this.found = false;\n }\n\n event(time: Time, value: A): void {\n if (this.found) return;\n if (this.index === this.n) {\n this.found = true;\n this.sink.event(time, value);\n this.disposable.dispose();\n this.sink.end(time);\n }\n this.index++;\n }\n\n end(time: Time): void {\n if (!this.found) {\n this.sink.end(time);\n }\n }\n}\n\nclass ElementAtSource<A, E> implements Source<A, E> {\n declare readonly n: number;\n declare readonly source: Source<A, E>;\n\n constructor(n: number, source: Source<A, E>) {\n this.n = n;\n this.source = source;\n }\n\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const sd = new SettableDisposable();\n sd.set(this.source.run(new ElementAtSink(this.n, sink, sd), scheduler));\n return sd;\n }\n}\n\n/**\n * Emit only the nth value (0-indexed), then end.\n *\n * Denotation: `elementAt(n, e) = [e[n]]` if it exists, empty otherwise.\n */\nexport const elementAt = <A, E>(n: number, event: Event<A, E>): Event<A, E> =>\n _createEvent(new ElementAtSource(n, _getSource(event)));\n","/**\n * Internal Behavior representation.\n *\n * A Behavior<A, E> is a continuous function of time: Time → A.\n * Internally it's a discriminated union of evaluation strategies,\n * with dirty-flag caching for derived behaviors.\n */\n\nimport type { Behavior, Disposable, Event, Scheduler, Sink, Time } from \"aeon-types\";\nimport { _getSource } from \"./event.js\";\n\n// --- Internal tag ---\n\nconst BEHAVIOR_KEY = Symbol(\"pulse/behavior\");\n\n/** Discriminated union of behavior implementations. */\nexport type BehaviorImpl<A> =\n | { readonly tag: \"constant\"; readonly value: A }\n | { readonly tag: \"function\"; readonly f: (time: Time) => A }\n | { readonly tag: \"stepper\"; initial: A; value: A; time: Time; generation: number }\n | {\n readonly tag: \"map\";\n readonly f: (a: unknown) => A;\n readonly source: BehaviorImpl<unknown>;\n cachedGeneration: number;\n cached: A | undefined;\n }\n | {\n readonly tag: \"lift2\";\n readonly f: (a: unknown, b: unknown) => A;\n readonly a: BehaviorImpl<unknown>;\n readonly b: BehaviorImpl<unknown>;\n cachedGeneration: number;\n cached: A | undefined;\n }\n | { readonly tag: \"switcher\"; current: BehaviorImpl<A> };\n\ninterface BehaviorWrapper<A> {\n readonly [BEHAVIOR_KEY]: BehaviorImpl<A>;\n}\n\n/** Create an opaque Behavior from a BehaviorImpl. Internal use only. */\nexport const _createBehavior = <A, E = never>(impl: BehaviorImpl<A>): Behavior<A, E> =>\n ({ [BEHAVIOR_KEY]: impl }) as unknown as Behavior<A, E>;\n\n/** Extract the BehaviorImpl from an opaque Behavior. Internal use only. */\nexport const _getBehaviorImpl = <A>(behavior: Behavior<A, unknown>): BehaviorImpl<A> =>\n (behavior as unknown as BehaviorWrapper<A>)[BEHAVIOR_KEY];\n\n// --- Generation tracking ---\n\n/**\n * Compute the current generation of a behavior tree. This is the sum\n * of all stepper generations in the tree. If any stepper's generation\n * changed since the last cache, the cached value is stale.\n *\n * Function-based and switcher behaviors return -1 (never cacheable).\n */\nconst currentGeneration = (impl: BehaviorImpl<unknown>): number => {\n switch (impl.tag) {\n case \"constant\":\n return 0;\n case \"function\":\n case \"switcher\":\n return -1; // Never cacheable\n case \"stepper\":\n return impl.generation;\n case \"map\":\n return currentGeneration(impl.source);\n case \"lift2\": {\n const ga = currentGeneration(impl.a);\n const gb = currentGeneration(impl.b);\n if (ga < 0 || gb < 0) return -1;\n return ga + gb;\n }\n }\n};\n\n// --- Sampling ---\n\n/**\n * Sample a behavior at a point in time.\n *\n * Denotation: evaluates `behavior(time)`.\n */\nexport const sampleImpl = <A>(impl: BehaviorImpl<A>, time: Time): A => {\n switch (impl.tag) {\n case \"constant\":\n return impl.value;\n case \"function\":\n return impl.f(time);\n case \"stepper\":\n return impl.value;\n case \"map\": {\n const gen = currentGeneration(impl);\n if (gen >= 0 && impl.cached !== undefined && impl.cachedGeneration === gen) {\n return impl.cached;\n }\n const result = impl.f(sampleImpl(impl.source, time));\n (impl as { cached: A | undefined }).cached = result;\n (impl as { cachedGeneration: number }).cachedGeneration = gen;\n return result;\n }\n case \"lift2\": {\n const gen = currentGeneration(impl);\n if (gen >= 0 && impl.cached !== undefined && impl.cachedGeneration === gen) {\n return impl.cached;\n }\n const result = impl.f(sampleImpl(impl.a, time), sampleImpl(impl.b, time));\n (impl as { cached: A | undefined }).cached = result;\n (impl as { cachedGeneration: number }).cachedGeneration = gen;\n return result;\n }\n case \"switcher\":\n return sampleImpl(impl.current, time);\n }\n};\n\n/**\n * Sample a Behavior at a time.\n */\nexport const sampleBehavior = <A>(behavior: Behavior<A, unknown>, time: Time): A =>\n sampleImpl(_getBehaviorImpl(behavior), time);\n\n// --- Generation bump ---\n\n/** Bump a stepper's generation to invalidate downstream caches. */\nexport const bumpGeneration = (impl: BehaviorImpl<unknown>): void => {\n if (impl.tag === \"stepper\") {\n impl.generation++;\n }\n};\n\n// --- Stepper subscription ---\n\n/**\n * Subscribe a stepper behavior to an event stream.\n * Returns a Disposable to unsubscribe.\n */\nexport const subscribeStepperToEvent = <A>(\n stepperImpl: BehaviorImpl<A> & { tag: \"stepper\" },\n event: Event<A, unknown>,\n scheduler: Scheduler,\n): Disposable => {\n const source = _getSource(event);\n const sink: Sink<A, unknown> = {\n event(time: Time, value: A) {\n stepperImpl.value = value;\n stepperImpl.time = time;\n stepperImpl.generation++;\n },\n error() {},\n end() {},\n };\n return source.run(sink, scheduler);\n};\n","/**\n * Behavior constructors and combinators.\n *\n * A Behavior is a continuous time-varying value: Time → A.\n * These are created with constructors, transformed with Functor/Applicative\n * operations, and bridged with Events via stepper/sample/snapshot.\n */\n\nimport type { Behavior, Disposable, Duration, Event, Scheduler, Sink, Time } from \"aeon-types\";\nimport {\n type BehaviorImpl,\n _createBehavior,\n _getBehaviorImpl,\n sampleBehavior,\n subscribeStepperToEvent,\n} from \"./internal/behavior.js\";\nimport { _createEvent, _getSource } from \"./internal/event.js\";\n\n// --- Constructors ---\n\n/**\n * A Behavior that always holds the same value.\n *\n * Denotation: `t => value`\n */\nexport const constantB = <A>(value: A): Behavior<A, never> =>\n _createBehavior({ tag: \"constant\", value });\n\n/**\n * A Behavior defined by an arbitrary function of time.\n *\n * Denotation: `f` itself.\n */\nexport const fromFunction = <A>(f: (time: Time) => A): Behavior<A, never> =>\n _createBehavior({ tag: \"function\", f });\n\n/**\n * The identity Behavior — its value is the current time.\n *\n * Denotation: `t => t`\n */\nexport const time: Behavior<Time, never> = fromFunction((t: Time) => t);\n\n/**\n * Alias for constantB — the pure/of for Behavior's Applicative.\n */\nexport const pureB = constantB;\n\n// --- Functor ---\n\n/**\n * Transform the value of a Behavior.\n *\n * Denotation: `mapB(f, b) = t => f(b(t))`\n */\nexport const mapB = <A, B, E>(f: (a: A) => B, behavior: Behavior<A, E>): Behavior<B, E> => {\n const source = _getBehaviorImpl(behavior);\n\n // Optimization: map of constant is a constant\n if (source.tag === \"constant\") {\n return _createBehavior({ tag: \"constant\", value: f(source.value) });\n }\n\n // Optimization: map of function is a composed function\n if (source.tag === \"function\") {\n return _createBehavior({ tag: \"function\", f: (t: Time) => f(source.f(t)) });\n }\n\n return _createBehavior<B, E>({\n tag: \"map\",\n f: f as (a: unknown) => B,\n source: source as BehaviorImpl<unknown>,\n cachedGeneration: -1,\n cached: undefined,\n });\n};\n\n// --- Applicative ---\n\n/**\n * Lift a binary function over two Behaviors.\n *\n * Denotation: `liftA2B(f, ba, bb) = t => f(ba(t), bb(t))`\n */\nexport const liftA2B = <A1, A2, B, E>(\n f: (a1: A1, a2: A2) => B,\n ba: Behavior<A1, E>,\n bb: Behavior<A2, E>,\n): Behavior<B, E> => {\n const implA = _getBehaviorImpl(ba);\n const implB = _getBehaviorImpl(bb);\n\n // Optimization: both constant → constant\n if (implA.tag === \"constant\" && implB.tag === \"constant\") {\n return _createBehavior({ tag: \"constant\", value: f(implA.value, implB.value) });\n }\n\n return _createBehavior<B, E>({\n tag: \"lift2\",\n f: f as (a: unknown, b: unknown) => B,\n a: implA as BehaviorImpl<unknown>,\n b: implB as BehaviorImpl<unknown>,\n cachedGeneration: -1,\n cached: undefined,\n });\n};\n\n/**\n * Lift a ternary function over three Behaviors.\n *\n * Denotation: `liftA3B(f, ba, bb, bc) = t => f(ba(t), bb(t), bc(t))`\n */\nexport const liftA3B = <A1, A2, A3, B, E>(\n f: (a1: A1, a2: A2, a3: A3) => B,\n ba: Behavior<A1, E>,\n bb: Behavior<A2, E>,\n bc: Behavior<A3, E>,\n): Behavior<B, E> =>\n liftA2B(\n (ab: (a3: A3) => B, c: A3) => ab(c),\n liftA2B((a: A1, b: A2) => (c: A3) => f(a, b, c), ba, bb),\n bc,\n );\n\n/**\n * Lift a quaternary function over four Behaviors.\n *\n * Denotation: `liftA4B(f, ba, bb, bc, bd) = t => f(ba(t), bb(t), bc(t), bd(t))`\n */\nexport const liftA4B = <A1, A2, A3, A4, B, E>(\n f: (a1: A1, a2: A2, a3: A3, a4: A4) => B,\n ba: Behavior<A1, E>,\n bb: Behavior<A2, E>,\n bc: Behavior<A3, E>,\n bd: Behavior<A4, E>,\n): Behavior<B, E> =>\n liftA2B(\n (abc: (a4: A4) => B, d: A4) => abc(d),\n liftA3B((a: A1, b: A2, c: A3) => (d: A4) => f(a, b, c, d), ba, bb, bc),\n bd,\n );\n\n/**\n * Lift a quinary function over five Behaviors.\n *\n * Denotation: `liftA5B(f, ba, bb, bc, bd, be) = t => f(ba(t), bb(t), bc(t), bd(t), be(t))`\n */\nexport const liftA5B = <A1, A2, A3, A4, A5, B, E>(\n f: (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5) => B,\n ba: Behavior<A1, E>,\n bb: Behavior<A2, E>,\n bc: Behavior<A3, E>,\n bd: Behavior<A4, E>,\n be: Behavior<A5, E>,\n): Behavior<B, E> =>\n liftA2B(\n (abcd: (a5: A5) => B, e: A5) => abcd(e),\n liftA4B((a: A1, b: A2, c: A3, d: A4) => (e: A5) => f(a, b, c, d, e), ba, bb, bc, bd),\n be,\n );\n\n// --- Event ↔ Behavior Bridge ---\n\n/**\n * Create a Behavior that holds the latest value from an Event.\n *\n * Denotation: `stepper(init, e) = t => latestValue(e, t) ?? init`\n *\n * This is the primary push→pull bridge. The returned behavior is\n * push-updated when the event fires, and pull-sampled when read.\n *\n * IMPORTANT: The caller must provide a scheduler to subscribe to the event.\n * Returns [Behavior, Disposable] — the disposable unsubscribes from the event.\n */\nexport const stepper = <A, E>(\n initial: A,\n event: Event<A, E>,\n scheduler: Scheduler,\n): [Behavior<A, E>, Disposable] => {\n const impl: BehaviorImpl<A> & { tag: \"stepper\" } = {\n tag: \"stepper\",\n initial,\n value: initial,\n time: scheduler.currentTime(),\n generation: 0,\n };\n\n const disposable = subscribeStepperToEvent(impl, event, scheduler);\n return [_createBehavior<A, E>(impl), disposable];\n};\n\n/**\n * Create a Behavior that accumulates event values with a fold function.\n *\n * Denotation: `accumB(f, init, e) = t => foldl f init [v | (t', v) ∈ e, t' <= t]`\n *\n * Like `stepper` but applies a reducer to each event instead of replacing\n * the held value. Equivalent to `stepper(init, scan(f, init, e))` but\n * without an intermediate Event allocation.\n */\nexport const accumB = <A, B, E>(\n f: (acc: B, a: A) => B,\n initial: B,\n event: Event<A, E>,\n scheduler: Scheduler,\n): [Behavior<B, E>, Disposable] => {\n const impl: BehaviorImpl<B> & { tag: \"stepper\" } = {\n tag: \"stepper\",\n initial,\n value: initial,\n time: scheduler.currentTime(),\n generation: 0,\n };\n\n const source = _getSource(event);\n const disposable = source.run(\n {\n event(time: Time, value: A) {\n impl.value = f(impl.value, value);\n impl.time = time;\n impl.generation++;\n },\n error() {},\n end() {},\n },\n scheduler,\n );\n\n return [_createBehavior<B, E>(impl), disposable];\n};\n\n/**\n * Sample a Behavior whenever a sampler Event fires.\n *\n * Denotation: `sample(b, sampler) = [(t, b(t)) | (t, _) ∈ sampler]`\n */\nexport const sample = <A, B, E>(behavior: Behavior<A, E>, sampler: Event<B, E>): Event<A, E> => {\n const source = _getSource(sampler);\n return _createEvent({\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n return source.run(\n {\n event(t: Time, _value: B) {\n const v = sampleBehavior(behavior, t);\n sink.event(t, v);\n },\n error(t: Time, err: E) {\n sink.error(t, err);\n },\n end(t: Time) {\n sink.end(t);\n },\n },\n scheduler,\n );\n },\n });\n};\n\n/**\n * Snapshot: sample a Behavior and combine with the Event value.\n *\n * Denotation: `snapshot(f, b, e) = [(t, f(b(t), v)) | (t, v) ∈ e]`\n */\nexport const snapshot = <A, B, C, E>(\n f: (a: A, b: B) => C,\n behavior: Behavior<A, E>,\n event: Event<B, E>,\n): Event<C, E> => {\n const source = _getSource(event);\n return _createEvent({\n run(sink: Sink<C, E>, scheduler: Scheduler): Disposable {\n return source.run(\n {\n event(t: Time, value: B) {\n const bValue = sampleBehavior(behavior, t);\n sink.event(t, f(bValue, value));\n },\n error(t: Time, err: E) {\n sink.error(t, err);\n },\n end(t: Time) {\n sink.end(t);\n },\n },\n scheduler,\n );\n },\n });\n};\n\n/**\n * Dynamic Behavior switching.\n *\n * Holds `initial` until the event fires, then switches to the\n * Behavior carried by each event occurrence.\n *\n * Denotation: holds the most recently received Behavior; samples it.\n */\nexport const switcher = <A, E>(\n initial: Behavior<A, E>,\n event: Event<Behavior<A, E>, E>,\n scheduler: Scheduler,\n): [Behavior<A, E>, Disposable] => {\n const impl: BehaviorImpl<A> & { tag: \"switcher\" } = {\n tag: \"switcher\",\n current: _getBehaviorImpl(initial),\n };\n\n const source = _getSource(event);\n const disposable = source.run(\n {\n event(_t: Time, newBehavior: Behavior<A, E>) {\n impl.current = _getBehaviorImpl(newBehavior);\n },\n error() {},\n end() {},\n },\n scheduler,\n );\n\n return [_createBehavior<A, E>(impl), disposable];\n};\n\n/**\n * Flatten a Behavior of Behaviors — the Monad join for Behaviors.\n *\n * Denotation: `switchB(bb) = t => bb(t)(t)`\n *\n * At time `t`, samples the outer behavior to get the inner behavior,\n * then samples the inner behavior at the same time. This is inherently\n * non-cacheable (the inner behavior can change at any time).\n */\nexport const switchB = <A, E>(bb: Behavior<Behavior<A, E>, E>): Behavior<A, E> =>\n _createBehavior<A, E>({\n tag: \"function\",\n f: (t: Time) => sampleBehavior(sampleBehavior(bb, t), t),\n });\n\n// --- Integration ---\n\n/**\n * Numerical integration of a Behavior over time.\n *\n * Denotation: `integral(b, dt) ≈ t => ∫₀ᵗ b(s) ds`\n *\n * Uses the trapezoidal rule with step size `dt`. The consumer's sampling\n * rate and the integration step size are decoupled — the integrator\n * subdivides [0, t] into steps of size `dt` regardless of when sampling\n * occurs.\n */\nexport const integral = (\n behavior: Behavior<number, never>,\n dt: Duration,\n): Behavior<number, never> => {\n const step = dt as number;\n return fromFunction((t: Time) => {\n const end = t as number;\n if (end <= 0) return 0;\n\n let acc = 0;\n let prev = sampleBehavior(behavior, 0 as Time) as number;\n let s = 0;\n\n while (s + step < end) {\n s += step;\n const curr = sampleBehavior(behavior, s as Time) as number;\n acc += (prev + curr) * 0.5 * step;\n prev = curr;\n }\n\n // Final partial step\n if (s < end) {\n const remaining = end - s;\n const curr = sampleBehavior(behavior, end as Time) as number;\n acc += (prev + curr) * 0.5 * remaining;\n }\n\n return acc;\n });\n};\n\n/**\n * Numerical differentiation of a Behavior over time.\n *\n * Denotation: `derivative(b, dt) ≈ t => db/dt(t)`\n *\n * Uses the backward finite difference: `(b(t) - b(t - dt)) / dt`.\n * At `t = 0`, returns 0 (no history). For `t < dt`, uses the\n * available interval `[0, t]`.\n */\nexport const derivative = (\n behavior: Behavior<number, never>,\n dt: Duration,\n): Behavior<number, never> => {\n const step = dt as number;\n return fromFunction((t: Time) => {\n const tNum = t as number;\n if (tNum <= 0) return 0;\n\n const interval = Math.min(step, tNum);\n const curr = sampleBehavior(behavior, t) as number;\n const prev = sampleBehavior(behavior, (tNum - interval) as Time) as number;\n return (curr - prev) / interval;\n });\n};\n\n/**\n * Read the current value of a Behavior at a given time.\n */\nexport { sampleBehavior as readBehavior };\n","/**\n * AsyncIterator integration.\n *\n * Bridges between Event streams and the AsyncIterator protocol,\n * providing natural backpressure via pull-based async iteration.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"./internal/event.js\";\n\n/**\n * Convert an Event to an AsyncIterableIterator.\n *\n * Backpressure: the source pushes into a buffer. The consumer pulls\n * via `next()`. If the consumer is slower than the producer, values\n * buffer in memory.\n */\nexport const toAsyncIterator = <A, E>(\n event: Event<A, E>,\n scheduler: Scheduler,\n): AsyncIterableIterator<A> & Disposable => {\n type QueueItem = { tag: \"value\"; value: A } | { tag: \"error\"; error: E } | { tag: \"end\" };\n\n const queue: QueueItem[] = [];\n let resolve: ((result: IteratorResult<A>) => void) | undefined;\n let reject: ((error: E) => void) | undefined;\n let done = false;\n\n const source = _getSource(event);\n const disposable = source.run(\n {\n event(_time: Time, value: A) {\n if (resolve) {\n const r = resolve;\n resolve = undefined;\n r({ value, done: false });\n } else {\n queue.push({ tag: \"value\", value });\n }\n },\n error(_time: Time, err: E) {\n done = true;\n if (reject) {\n const r = reject;\n reject = undefined;\n r(err);\n } else {\n queue.push({ tag: \"error\", error: err });\n }\n },\n end(_time: Time) {\n done = true;\n if (resolve) {\n const r = resolve;\n resolve = undefined;\n r({ value: undefined, done: true });\n } else {\n queue.push({ tag: \"end\" });\n }\n },\n },\n scheduler,\n );\n\n const iterator: AsyncIterableIterator<A> & Disposable = {\n next(): Promise<IteratorResult<A>> {\n if (queue.length > 0) {\n const item = queue.shift()!;\n switch (item.tag) {\n case \"value\":\n return Promise.resolve({ value: item.value, done: false });\n case \"error\":\n return Promise.reject(item.error);\n case \"end\":\n return Promise.resolve({ value: undefined as A, done: true });\n }\n }\n\n if (done) {\n return Promise.resolve({ value: undefined as A, done: true });\n }\n\n return new Promise<IteratorResult<A>>((res, rej) => {\n resolve = res;\n reject = rej as (error: E) => void;\n });\n },\n\n return(): Promise<IteratorResult<A>> {\n done = true;\n disposable.dispose();\n return Promise.resolve({ value: undefined as A, done: true });\n },\n\n [Symbol.asyncIterator]() {\n return this;\n },\n\n dispose() {\n done = true;\n disposable.dispose();\n },\n };\n\n return iterator;\n};\n\n/**\n * Create an Event from an AsyncIterable.\n *\n * The async iterable is pulled eagerly — each value is pushed\n * to subscribers as soon as it's available.\n */\nexport const fromAsyncIterable = <A>(iterable: AsyncIterable<A>): Event<A, never> =>\n _createEvent({\n run(sink: Sink<A, never>, scheduler: Scheduler): Disposable {\n let disposed = false;\n\n (async () => {\n try {\n for await (const value of iterable) {\n if (disposed) break;\n sink.event(scheduler.currentTime(), value);\n }\n if (!disposed) {\n sink.end(scheduler.currentTime());\n }\n } catch (err) {\n if (!disposed) {\n sink.error(scheduler.currentTime(), err as never);\n }\n }\n })();\n\n return {\n dispose() {\n disposed = true;\n },\n };\n },\n });\n","/**\n * Multicast / share.\n *\n * Shares a single subscription among multiple consumers.\n * The source is subscribed to lazily on the first consumer,\n * and disposed when the last consumer unsubscribes.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Time } from \"aeon-types\";\nimport { _createEvent, _getSource } from \"./internal/event.js\";\n\n/**\n * Share a single subscription to the source Event among all downstream consumers.\n *\n * - First subscriber triggers the source subscription\n * - Subsequent subscribers share the same subscription\n * - When the last subscriber disposes, the source subscription is disposed\n * - If a new subscriber arrives after disposal, the source is re-subscribed\n */\nexport const multicast = <A, E>(event: Event<A, E>): Event<A, E> => {\n const source = _getSource(event);\n const sinks = new Set<Sink<A, E>>();\n let sourceDisposable: Disposable | undefined;\n let scheduler: Scheduler | undefined;\n let ended = false;\n\n return _createEvent({\n run(sink: Sink<A, E>, sched: Scheduler): Disposable {\n sinks.add(sink);\n\n if (sinks.size === 1) {\n // First subscriber — connect to source\n scheduler = sched;\n ended = false;\n sourceDisposable = source.run(\n {\n event(time: Time, value: A) {\n for (const s of sinks) {\n s.event(time, value);\n }\n },\n error(time: Time, err: E) {\n for (const s of sinks) {\n s.error(time, err);\n }\n },\n end(time: Time) {\n ended = true;\n for (const s of sinks) {\n s.end(time);\n }\n },\n },\n sched,\n );\n } else if (ended) {\n // Source already ended — immediately end new subscriber\n sink.end(sched.currentTime());\n }\n\n return {\n dispose() {\n sinks.delete(sink);\n if (sinks.size === 0 && sourceDisposable !== undefined) {\n sourceDisposable.dispose();\n sourceDisposable = undefined;\n scheduler = undefined;\n }\n },\n };\n },\n });\n};\n","/**\n * Fluent API wrapper for Event streams.\n *\n * Provides a chainable interface: `fluent(event).map(f).filter(p).take(10)`\n * All methods delegate to standalone combinators — zero logic duplication.\n *\n * This is a separate entry point so tree-shaking eliminates it when unused.\n */\n\nimport type { Behavior, Duration, Event, Scheduler } from \"aeon-types\";\nimport { toAsyncIterator } from \"./asyncIterator.js\";\nimport { sample, snapshot } from \"./behavior.js\";\nimport { all, count, elementAt } from \"./combinators/aggregate.js\";\nimport { attach } from \"./combinators/attach.js\";\nimport { chain } from \"./combinators/chain.js\";\nimport { combine, zip } from \"./combinators/combine.js\";\nimport { cons } from \"./combinators/cons.js\";\nimport { constant } from \"./combinators/constant.js\";\nimport { dedupe } from \"./combinators/dedupe.js\";\nimport { ensure } from \"./combinators/ensure.js\";\nimport { catchError, mapError } from \"./combinators/error.js\";\nimport { exhaustMap } from \"./combinators/exhaustMap.js\";\nimport { filter } from \"./combinators/filter.js\";\nimport { first, last } from \"./combinators/firstLast.js\";\nimport { map } from \"./combinators/map.js\";\nimport { merge } from \"./combinators/merge.js\";\nimport { mergeMap as mergeMapDirect } from \"./combinators/mergeMap.js\";\nimport { orElse } from \"./combinators/orElse.js\";\nimport { pairwise } from \"./combinators/pairwise.js\";\nimport { race } from \"./combinators/race.js\";\nimport { retry } from \"./combinators/retry.js\";\nimport { scan } from \"./combinators/scan.js\";\nimport { share } from \"./combinators/share.js\";\nimport { drop, dropWhile, since, slice, take, takeWhile, until } from \"./combinators/slice.js\";\nimport { switchLatest } from \"./combinators/switch.js\";\nimport { tap } from \"./combinators/tap.js\";\nimport { drain, observe, reduce } from \"./combinators/terminal.js\";\nimport { bufferCount, bufferTime, debounce, delay, throttle } from \"./combinators/time.js\";\nimport { timeout } from \"./combinators/timeout.js\";\nimport { traverse } from \"./combinators/traverse.js\";\nimport { multicast } from \"./multicast.js\";\n\n/**\n * Chainable wrapper around a pulse Event.\n *\n * Every method returns a new FluentEvent (or a terminal value like Promise).\n * The underlying Event is accessible via `.event`.\n */\nexport class FluentEvent<A, E> {\n declare readonly event: Event<A, E>;\n\n constructor(event: Event<A, E>) {\n this.event = event;\n }\n\n // --- Functor / Transform ---\n\n map<B>(f: (a: A) => B): FluentEvent<B, E> {\n return new FluentEvent(map(f, this.event));\n }\n\n filter(predicate: (a: A) => boolean): FluentEvent<A, E> {\n return new FluentEvent(filter(predicate, this.event));\n }\n\n tap(f: (a: A) => void): FluentEvent<A, E> {\n return new FluentEvent(tap(f, this.event));\n }\n\n constant<B>(value: B): FluentEvent<B, E> {\n return new FluentEvent(constant(value, this.event));\n }\n\n scan<B>(f: (acc: B, a: A) => B, seed: B): FluentEvent<B, E> {\n return new FluentEvent(scan(f, seed, this.event));\n }\n\n dedupe(eq?: (a: A, b: A) => boolean): FluentEvent<A, E> {\n return new FluentEvent(dedupe(this.event, eq));\n }\n\n cons(value: A): FluentEvent<A, E> {\n return new FluentEvent(cons(value, this.event));\n }\n\n pairwise(): FluentEvent<[A, A], E> {\n return new FluentEvent(pairwise(this.event));\n }\n\n first(predicate?: (a: A) => boolean): FluentEvent<A, E> {\n return new FluentEvent(first(this.event, predicate));\n }\n\n last(predicate?: (a: A) => boolean): FluentEvent<A, E> {\n return new FluentEvent(last(this.event, predicate));\n }\n\n // --- Slicing ---\n\n take(n: number): FluentEvent<A, E> {\n return new FluentEvent(take(n, this.event));\n }\n\n drop(n: number): FluentEvent<A, E> {\n return new FluentEvent(drop(n, this.event));\n }\n\n takeWhile(predicate: (a: A) => boolean): FluentEvent<A, E> {\n return new FluentEvent(takeWhile(predicate, this.event));\n }\n\n dropWhile(predicate: (a: A) => boolean): FluentEvent<A, E> {\n return new FluentEvent(dropWhile(predicate, this.event));\n }\n\n slice(start: number, end: number): FluentEvent<A, E> {\n return new FluentEvent(slice(start, end, this.event));\n }\n\n until(signal: Event<unknown, E>): FluentEvent<A, E> {\n return new FluentEvent(until(signal, this.event));\n }\n\n since(signal: Event<unknown, E>): FluentEvent<A, E> {\n return new FluentEvent(since(signal, this.event));\n }\n\n // --- Combining ---\n\n merge(...others: Event<A, E>[]): FluentEvent<A, E> {\n return new FluentEvent(merge(this.event, ...others));\n }\n\n combine<B, C>(f: (a: A, b: B) => C, other: Event<B, E>): FluentEvent<C, E> {\n return new FluentEvent(combine(f, this.event, other));\n }\n\n zip<B>(other: Event<B, E>): FluentEvent<[A, B], E> {\n return new FluentEvent(zip(this.event, other));\n }\n\n // --- Higher-order ---\n\n chain<B>(f: (a: A) => Event<B, E>): FluentEvent<B, E> {\n return new FluentEvent(chain(f, this.event));\n }\n\n mergeMap<B>(f: (a: A) => Event<B, E>, concurrency: number): FluentEvent<B, E> {\n return new FluentEvent(mergeMapDirect(f, concurrency, this.event));\n }\n\n traverse<B>(f: (a: A) => Promise<B>, concurrency: number): FluentEvent<B, E> {\n return new FluentEvent(traverse(f, concurrency, this.event));\n }\n\n exhaustMap<B>(f: (a: A) => Event<B, E>): FluentEvent<B, E> {\n return new FluentEvent(exhaustMap(f, this.event));\n }\n\n // --- Error handling ---\n\n catchError<E2>(handler: (err: E) => Event<A, E2>): FluentEvent<A, E2> {\n return new FluentEvent(catchError(handler, this.event));\n }\n\n mapError<E2>(f: (err: E) => E2): FluentEvent<A, E2> {\n return new FluentEvent(mapError(f, this.event));\n }\n\n // --- Time ---\n\n debounce(duration: Duration): FluentEvent<A, E> {\n return new FluentEvent(debounce(duration, this.event));\n }\n\n throttle(duration: Duration): FluentEvent<A, E> {\n return new FluentEvent(throttle(duration, this.event));\n }\n\n delay(duration: Duration): FluentEvent<A, E> {\n return new FluentEvent(delay(duration, this.event));\n }\n\n bufferCount(count: number): FluentEvent<A[], E> {\n return new FluentEvent(bufferCount(count, this.event));\n }\n\n bufferTime(duration: Duration): FluentEvent<A[], E> {\n return new FluentEvent(bufferTime(duration, this.event));\n }\n\n // --- Behavior bridge ---\n\n sample<B>(behavior: Behavior<B, E>): FluentEvent<B, E> {\n return new FluentEvent(sample(behavior, this.event));\n }\n\n snapshot<B, C>(f: (b: B, a: A) => C, behavior: Behavior<B, E>): FluentEvent<C, E> {\n return new FluentEvent(snapshot(f, behavior, this.event));\n }\n\n retry(maxRetries: number, delayDuration?: Duration): FluentEvent<A, E> {\n return new FluentEvent(retry(maxRetries, this.event, delayDuration));\n }\n\n attach<B, C>(f: (a: A, b: B) => C, sampler: Event<B, E>): FluentEvent<C, E> {\n return new FluentEvent(attach(f, this.event, sampler));\n }\n\n timeout(duration: Duration) {\n return new FluentEvent(timeout(duration, this.event));\n }\n\n orElse(value: A): FluentEvent<A, E> {\n return new FluentEvent(orElse(value, this.event));\n }\n\n ensure(cleanup: () => void): FluentEvent<A, E> {\n return new FluentEvent(ensure(cleanup, this.event));\n }\n\n count(): FluentEvent<number, E> {\n return new FluentEvent(count(this.event));\n }\n\n all(predicate: (a: A) => boolean): FluentEvent<boolean, E> {\n return new FluentEvent(all(predicate, this.event));\n }\n\n elementAt(n: number): FluentEvent<A, E> {\n return new FluentEvent(elementAt(n, this.event));\n }\n\n race(...others: Event<A, E>[]): FluentEvent<A, E> {\n return new FluentEvent(race(this.event, ...others));\n }\n\n // --- Utilities ---\n\n multicast(): FluentEvent<A, E> {\n return new FluentEvent(multicast(this.event));\n }\n\n share(bufferSize: number): FluentEvent<A, E> {\n return new FluentEvent(share(bufferSize, this.event));\n }\n\n toAsyncIterator(scheduler: Scheduler): AsyncIterableIterator<A> & { dispose(): void } {\n return toAsyncIterator(this.event, scheduler);\n }\n\n // --- Terminal (activate the stream) ---\n\n reduce<B>(f: (acc: B, a: A) => B, seed: B, scheduler: Scheduler): Promise<B> {\n return reduce(f, seed, this.event, scheduler);\n }\n\n observe(f: (a: A) => void, scheduler: Scheduler): Promise<void> {\n return observe(f, this.event, scheduler);\n }\n\n drain(scheduler: Scheduler): Promise<void> {\n return drain(this.event, scheduler);\n }\n}\n\n/**\n * Wrap a pulse Event in a chainable fluent interface.\n *\n * ```typescript\n * const result = await fluent(fromArray([1, 2, 3, 4, 5]))\n * .filter(x => x % 2 === 0)\n * .map(x => x * 10)\n * .take(2)\n * .reduce((acc, x) => acc + x, 0, scheduler);\n * // result === 60\n * ```\n */\nexport const fluent = <A, E>(event: Event<A, E>): FluentEvent<A, E> => new FluentEvent(event);\n","/**\n * Pipeable utility.\n *\n * Enables `pipe(event, map(f), filter(p), take(10))` style composition\n * with full type inference up to 12 operators.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport function pipe<A>(source: A): A;\nexport function pipe<A, B>(source: A, op1: (a: A) => B): B;\nexport function pipe<A, B, C>(source: A, op1: (a: A) => B, op2: (b: B) => C): C;\nexport function pipe<A, B, C, D>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n): D;\nexport function pipe<A, B, C, D, E>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n): E;\nexport function pipe<A, B, C, D, E, F>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n): F;\nexport function pipe<A, B, C, D, E, F, G>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n op6: (f: F) => G,\n): G;\nexport function pipe<A, B, C, D, E, F, G, H>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n op6: (f: F) => G,\n op7: (g: G) => H,\n): H;\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n op6: (f: F) => G,\n op7: (g: G) => H,\n op8: (h: H) => I,\n): I;\nexport function pipe<A, B, C, D, E, F, G, H, I, J>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n op6: (f: F) => G,\n op7: (g: G) => H,\n op8: (h: H) => I,\n op9: (i: I) => J,\n): J;\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n op6: (f: F) => G,\n op7: (g: G) => H,\n op8: (h: H) => I,\n op9: (i: I) => J,\n op10: (j: J) => K,\n): K;\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n op6: (f: F) => G,\n op7: (g: G) => H,\n op8: (h: H) => I,\n op9: (i: I) => J,\n op10: (j: J) => K,\n op11: (k: K) => L,\n): L;\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(\n source: A,\n op1: (a: A) => B,\n op2: (b: B) => C,\n op3: (c: C) => D,\n op4: (d: D) => E,\n op5: (e: E) => F,\n op6: (f: F) => G,\n op7: (g: G) => H,\n op8: (h: H) => I,\n op9: (i: I) => J,\n op10: (j: J) => K,\n op11: (k: K) => L,\n op12: (l: L) => M,\n): M;\nexport function pipe(source: unknown, ...ops: Array<(x: unknown) => unknown>): unknown {\n let result = source;\n for (const op of ops) {\n result = op(result);\n }\n return result;\n}\n","/**\n * Pipeable (data-last curried) overloads for all combinators.\n *\n * Usage:\n * pipe(event, P.map(f), P.filter(p), P.take(10))\n */\n\nimport type { Behavior, Duration, Event, Scheduler } from \"aeon-types\";\nimport {\n derivative as derivativeDirect,\n integral as integralDirect,\n liftA2B as liftA2BDirect,\n mapB as mapBDirect,\n sample as sampleDirect,\n snapshot as snapshotDirect,\n switchB as switchBDirect,\n} from \"./behavior.js\";\nimport {\n all as allDirect,\n count as countDirect,\n elementAt as elementAtDirect,\n} from \"./combinators/aggregate.js\";\nimport { attach as attachDirect } from \"./combinators/attach.js\";\nimport { chain as chainDirect } from \"./combinators/chain.js\";\nimport { combine as combineDirect, zip as zipDirect } from \"./combinators/combine.js\";\nimport { cons as consDirect } from \"./combinators/cons.js\";\nimport { constant as constantDirect } from \"./combinators/constant.js\";\nimport { dedupe as dedupeDirect } from \"./combinators/dedupe.js\";\nimport { ensure as ensureDirect } from \"./combinators/ensure.js\";\nimport { catchError as catchErrorDirect, mapError as mapErrorDirect } from \"./combinators/error.js\";\nimport { exhaustMap as exhaustMapDirect } from \"./combinators/exhaustMap.js\";\nimport { filter as filterDirect } from \"./combinators/filter.js\";\nimport { first as firstDirect, last as lastDirect } from \"./combinators/firstLast.js\";\nimport { forkJoin as forkJoinDirect } from \"./combinators/forkJoin.js\";\nimport { map as mapDirect } from \"./combinators/map.js\";\nimport { merge as mergeDirect } from \"./combinators/merge.js\";\nimport { mergeMap as mergeMapDirect } from \"./combinators/mergeMap.js\";\nimport { orElse as orElseDirect } from \"./combinators/orElse.js\";\nimport { pairwise as pairwiseDirect } from \"./combinators/pairwise.js\";\nimport { retry as retryDirect } from \"./combinators/retry.js\";\nimport { scan as scanDirect } from \"./combinators/scan.js\";\nimport { share as shareDirect } from \"./combinators/share.js\";\nimport {\n drop as dropDirect,\n dropWhile as dropWhileDirect,\n since as sinceDirect,\n slice as sliceDirect,\n take as takeDirect,\n takeWhile as takeWhileDirect,\n until as untilDirect,\n} from \"./combinators/slice.js\";\nimport { switchLatest as switchLatestDirect } from \"./combinators/switch.js\";\nimport { tap as tapDirect } from \"./combinators/tap.js\";\nimport {\n drain as drainDirect,\n observe as observeDirect,\n reduce as reduceDirect,\n} from \"./combinators/terminal.js\";\nimport {\n bufferCount as bufferCountDirect,\n bufferTime as bufferTimeDirect,\n debounce as debounceDirect,\n delay as delayDirect,\n throttle as throttleDirect,\n} from \"./combinators/time.js\";\nimport { timeout as timeoutDirect } from \"./combinators/timeout.js\";\nimport { traverse as traverseDirect } from \"./combinators/traverse.js\";\n\n// --- Event operators ---\n\nexport const map =\n <A, B>(f: (a: A) => B) =>\n <E>(event: Event<A, E>): Event<B, E> =>\n mapDirect(f, event);\n\nexport const filter =\n <A>(predicate: (a: A) => boolean) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n filterDirect(predicate, event);\n\nexport const tap =\n <A>(f: (a: A) => void) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n tapDirect(f, event);\n\nexport const constant =\n <B>(value: B) =>\n <A, E>(event: Event<A, E>): Event<B, E> =>\n constantDirect(value, event);\n\nexport const scan =\n <A, B>(f: (acc: B, a: A) => B, seed: B) =>\n <E>(event: Event<A, E>): Event<B, E> =>\n scanDirect(f, seed, event);\n\nexport const take =\n (n: number) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n takeDirect(n, event);\n\nexport const drop =\n (n: number) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n dropDirect(n, event);\n\nexport const takeWhile =\n <A>(predicate: (a: A) => boolean) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n takeWhileDirect(predicate, event);\n\nexport const dropWhile =\n <A>(predicate: (a: A) => boolean) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n dropWhileDirect(predicate, event);\n\nexport const slice =\n (start: number, end: number) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n sliceDirect(start, end, event);\n\nexport const chain =\n <A, B, E>(f: (a: A) => Event<B, E>) =>\n (event: Event<A, E>): Event<B, E> =>\n chainDirect(f, event);\n\nexport const mergeMap =\n <A, B, E>(f: (a: A) => Event<B, E>, concurrency: number) =>\n (event: Event<A, E>): Event<B, E> =>\n mergeMapDirect(f, concurrency, event);\n\nexport const catchError =\n <A, E1, E2>(handler: (err: E1) => Event<A, E2>) =>\n (event: Event<A, E1>): Event<A, E2> =>\n catchErrorDirect(handler, event);\n\nexport const mapError =\n <E1, E2>(f: (err: E1) => E2) =>\n <A>(event: Event<A, E1>): Event<A, E2> =>\n mapErrorDirect(f, event);\n\nexport const traverse =\n <A, B>(f: (a: A) => Promise<B>, concurrency: number) =>\n <E>(event: Event<A, E>): Event<B, E> =>\n traverseDirect(f, concurrency, event);\n\nexport const switchLatest = <A, E>(event: Event<Event<A, E>, E>): Event<A, E> =>\n switchLatestDirect(event);\n\nexport const retry =\n (maxRetries: number, delay?: Duration) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n retryDirect(maxRetries, event, delay);\n\nexport const share =\n (bufferSize: number) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n shareDirect(bufferSize, event);\n\nexport const attach =\n <A, B, C, E>(f: (a: A, b: B) => C, sampled: Event<A, E>) =>\n (sampler: Event<B, E>): Event<C, E> =>\n attachDirect(f, sampled, sampler);\n\nexport const until =\n <E>(signal: Event<unknown, E>) =>\n <A>(event: Event<A, E>): Event<A, E> =>\n untilDirect(signal, event);\n\nexport const since =\n <E>(signal: Event<unknown, E>) =>\n <A>(event: Event<A, E>): Event<A, E> =>\n sinceDirect(signal, event);\n\nexport const dedupe =\n <A>(eq?: (a: A, b: A) => boolean) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n dedupeDirect(event, eq);\n\nexport const cons =\n <A>(value: A) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n consDirect(value, event);\n\nexport const first =\n <A>(predicate?: (a: A) => boolean) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n firstDirect(event, predicate);\n\nexport const last =\n <A>(predicate?: (a: A) => boolean) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n lastDirect(event, predicate);\n\nexport const pairwise = <A, E>(event: Event<A, E>): Event<[A, A], E> => pairwiseDirect(event);\n\nexport const timeout =\n (duration: Duration) =>\n <A, E>(event: Event<A, E>) =>\n timeoutDirect(duration, event);\n\nexport const exhaustMap =\n <A, B, E>(f: (a: A) => Event<B, E>) =>\n (event: Event<A, E>): Event<B, E> =>\n exhaustMapDirect(f, event);\n\nexport const orElse =\n <A>(value: A) =>\n <E>(event: Event<A, E>): Event<A, E> =>\n orElseDirect(value, event);\n\nexport const ensure =\n (cleanup: () => void) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n ensureDirect(cleanup, event);\n\nexport const count = <A, E>(event: Event<A, E>): Event<number, E> => countDirect(event);\n\nexport const all =\n <A>(predicate: (a: A) => boolean) =>\n <E>(event: Event<A, E>): Event<boolean, E> =>\n allDirect(predicate, event);\n\nexport const elementAt =\n (n: number) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n elementAtDirect(n, event);\n\n// --- Time operators ---\n\nexport const debounce =\n (duration: Duration) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n debounceDirect(duration, event);\n\nexport const throttle =\n (duration: Duration) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n throttleDirect(duration, event);\n\nexport const delay =\n (duration: Duration) =>\n <A, E>(event: Event<A, E>): Event<A, E> =>\n delayDirect(duration, event);\n\nexport const bufferCount =\n (count: number) =>\n <A, E>(event: Event<A, E>): Event<A[], E> =>\n bufferCountDirect(count, event);\n\nexport const bufferTime =\n (duration: Duration) =>\n <A, E>(event: Event<A, E>): Event<A[], E> =>\n bufferTimeDirect(duration, event);\n\n// --- Terminal operators ---\n\nexport const reduce =\n <A, B>(f: (acc: B, a: A) => B, seed: B, scheduler: Scheduler) =>\n <E>(event: Event<A, E>): Promise<B> =>\n reduceDirect(f, seed, event, scheduler);\n\nexport const observe =\n <A>(f: (a: A) => void, scheduler: Scheduler) =>\n <E>(event: Event<A, E>): Promise<void> =>\n observeDirect(f, event, scheduler);\n\nexport const drain =\n (scheduler: Scheduler) =>\n <A, E>(event: Event<A, E>): Promise<void> =>\n drainDirect(event, scheduler);\n\n// --- Behavior operators ---\n\nexport const mapB =\n <A, B>(f: (a: A) => B) =>\n <E>(behavior: Behavior<A, E>): Behavior<B, E> =>\n mapBDirect(f, behavior);\n\nexport const sample =\n <A, E>(behavior: Behavior<A, E>) =>\n <B>(sampler: Event<B, E>): Event<A, E> =>\n sampleDirect(behavior, sampler);\n\nexport const snapshot =\n <A, B, C, E>(f: (a: A, b: B) => C, behavior: Behavior<A, E>) =>\n (event: Event<B, E>): Event<C, E> =>\n snapshotDirect(f, behavior, event);\n\nexport const integral =\n (dt: Duration) =>\n (behavior: Behavior<number, never>): Behavior<number, never> =>\n integralDirect(behavior, dt);\n\nexport const derivative =\n (dt: Duration) =>\n (behavior: Behavior<number, never>): Behavior<number, never> =>\n derivativeDirect(behavior, dt);\n\nexport const switchB = <A, E>(bb: Behavior<Behavior<A, E>, E>): Behavior<A, E> => switchBDirect(bb);\n","/**\n * Imperative push adapter.\n *\n * createAdapter returns a [push, event] pair. Calling push(value) sends\n * the value to all current subscribers. This is the equivalent of\n * RxJS's Subject, but as a clean separated push/pull pair.\n */\n\nimport type { Disposable, Event, Scheduler, Sink, Time } from \"aeon-types\";\nimport { _createEvent } from \"./internal/event.js\";\n\n/**\n * Create an imperative push adapter.\n *\n * Returns [push, event] where:\n * - `push(value)` sends a value to all current subscribers\n * - `event` is a subscribable Event stream\n */\nexport const createAdapter = <A, E = never>(): [push: (value: A) => void, event: Event<A, E>] => {\n const sinks = new Set<{ sink: Sink<A, E>; scheduler: Scheduler }>();\n\n const push = (value: A): void => {\n if (sinks.size === 0) return;\n for (const { sink, scheduler } of sinks) {\n sink.event(scheduler.currentTime(), value);\n }\n };\n\n const event = _createEvent<A, E>({\n run(sink: Sink<A, E>, scheduler: Scheduler): Disposable {\n const entry = { sink, scheduler };\n sinks.add(entry);\n return {\n dispose() {\n sinks.delete(entry);\n },\n };\n },\n });\n\n return [push, event];\n};\n"],"names":["disposeNone","dispose","disposeAll","disposables","i","length","SettableDisposable","inner","undefined","disposed","set","d","isSyncSource","source","_sync","_createEvent","_getSource","event","EmptySource","run","sink","scheduler","end","currentTime","syncIterate","_emit","NeverSource","NowSource","value","t","emit","ArraySource","values","EMPTY_SOURCE","NEVER_SOURCE","empty","never","now","AtSource","time","val","delay","scheduleTask","error","err","at","fromArray","PeriodicSource","period","task","st","periodic","RangeSource","start","count","range","Math","max","IterableSource","iterable","fromIterable","Pipe","MapSink","f","FilterSink","predicate","p","FilterMapSink","MapFilterSink","mapped","MapSource","create","_EmptySource","_EMPTY_SOURCE","_NowSource","x","FilterSource","FilterMapSource","MapFilterSource","fusedMap","fusedFilter","map","filter","TapSink","TapSource","tap","constant","ScanSink","seed","acc","ScanSource","v","scan","_MapSource","g","ReduceSink","resolve","reject","_time","ObserveSink","DrainSink","reduce","Promise","observe","drain","TakeSink","n","disposable","remaining","TakeSource","sd","EmptySliceSource","EMPTY_SLICE","take","min","DropSink","DropSource","drop","TakeWhileSink","active","TakeWhileSource","takeWhile","DropWhileSink","skipping","DropWhileSource","dropWhile","slice","UntilSink","UntilSignalSink","mainSink","_value","UntilSource","signal","signalDisposable","mainDisposable","until","SinceSink","open","SinceSignalSink","SinceSource","since","MergeSink","MergeSource","sources","sync","mergeSink","Array","wrappedEmit","EmptyMergeSource","EMPTY_MERGE","merge","events","j","push","CombineState","latestA","latestB","hasA","hasB","endCount","tryEnd","CombineSinkA","state","CombineSinkB","CombineSource","sourceA","sourceB","combine","ea","eb","ZipState","bufferA","bufferB","tryEmit","bufA","bufB","shift","ZipSinkA","ZipSinkB","ZipSource","zip","SwitchInnerSink","outer","innerEnded","outerEnded","SwitchSink","outerDisposable","innerDisposable","innerEvent","SwitchSource","switchSink","switchLatest","MergeMapInnerSink","buffer","tryStart","MergeMapOuterSink","MergeMapState","concurrency","innerDisposables","innerSource","MergeMapSource","mergeMap","CatchSink","handler","recovery","CatchSource","catchError","MapErrorSink","MapErrorSource","mapError","ThrowErrorSource","throwError","ChainInnerSink","innerActive","queue","startInner","ChainSink","ChainSource","chainSink","chain","DebounceSink","duration","pending","latestValue","hasValue","clearPending","DebounceSource","debounceSink","debounce","ThrottleSink","lastEmitTime","Number","NEGATIVE_INFINITY","ThrottleSource","throttle","DelaySink","pendingTasks","DelaySource","delaySink","BufferCountSink","batch","BufferCountSource","bufferCount","BufferTimeSink","ended","BufferTimeSource","btSink","flush","bufferTime","TraverseState","lastTime","tryDrain","startOne","then","result","TraverseSink","TraverseSource","traverse","FromPromiseSource","promise","fromPromise","RetrySink","maxRetries","delayDuration","attempt","self","e","RetrySource","retrySink","retry","ReplayState","bufferSize","sinks","Set","sourceDisposable","endTime","errored","errorTime","errorValue","ShareSource","entry","add","size","s","delete","share","AttachState","AttachSampledSink","AttachSamplerSink","AttachSource","sampled","sampler","attach","DedupeSink","eq","prev","UNSET","Symbol","DedupeSource","defaultEq","a","b","dedupe","ConsSource","cons","FirstSink","found","FirstSource","first","LastSink","latest","LastSource","last","PairwiseSink","PairwiseSource","pairwise","TimeoutError","Error","name","TimeoutSink","scheduleTimeout","TimeoutSource","timeoutSink","timeout","ExhaustMapInnerSink","ExhaustMapSink","ExhaustMapSource","exhaustSink","exhaustMap","ForkJoinSink","index","latestValues","ForkJoinState","fill","ForkJoinSource","forkJoin","OrElseSink","defaultValue","OrElseSource","orElse","EnsureSink","cleanup","called","runCleanup","EnsureSource","ensureSink","ensure","RaceSink","winner","endedCount","RaceState","RaceSource","race","CountSink","CountSource","AllSink","AllSource","all","ElementAtSink","ElementAtSource","elementAt","BEHAVIOR_KEY","_createBehavior","impl","_getBehaviorImpl","behavior","currentGeneration","tag","generation","ga","gb","sampleImpl","gen","cached","cachedGeneration","current","sampleBehavior","subscribeStepperToEvent","stepperImpl","constantB","fromFunction","pureB","mapB","liftA2B","ba","bb","implA","implB","liftA3B","bc","ab","c","liftA4B","bd","abc","liftA5B","be","abcd","stepper","initial","accumB","sample","snapshot","bValue","switcher","_t","newBehavior","switchB","integral","dt","step","curr","derivative","tNum","interval","toAsyncIterator","done","r","iterator","next","item","res","rej","return","asyncIterator","fromAsyncIterable","multicast","sched","FluentEvent","others","other","mergeMapDirect","fluent","pipe","ops","op","mapDirect","filterDirect","tapDirect","constantDirect","scanDirect","takeDirect","dropDirect","takeWhileDirect","dropWhileDirect","sliceDirect","chainDirect","catchErrorDirect","mapErrorDirect","traverseDirect","switchLatestDirect","retryDirect","shareDirect","attachDirect","untilDirect","sinceDirect","dedupeDirect","consDirect","firstDirect","lastDirect","pairwiseDirect","timeoutDirect","exhaustMapDirect","orElseDirect","ensureDirect","countDirect","allDirect","elementAtDirect","debounceDirect","throttleDirect","delayDirect","bufferCountDirect","bufferTimeDirect","reduceDirect","observeDirect","drainDirect","mapBDirect","sampleDirect","snapshotDirect","integralDirect","derivativeDirect","switchBDirect","createAdapter"],"mappings":"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"}