@vielzeug/flux 1.0.7 → 2.0.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 (160) hide show
  1. package/README.md +22 -25
  2. package/dist/_dev.cjs +1 -1
  3. package/dist/_dev.cjs.map +1 -1
  4. package/dist/_dev.js +2 -8
  5. package/dist/_dev.js.map +1 -1
  6. package/dist/_iterator.cjs +1 -1
  7. package/dist/_iterator.cjs.map +1 -1
  8. package/dist/_iterator.d.ts +3 -1
  9. package/dist/_iterator.d.ts.map +1 -1
  10. package/dist/_iterator.js +57 -35
  11. package/dist/_iterator.js.map +1 -1
  12. package/dist/_link.cjs +2 -0
  13. package/dist/_link.cjs.map +1 -0
  14. package/dist/_link.d.ts +4 -0
  15. package/dist/_link.d.ts.map +1 -0
  16. package/dist/_link.js +8 -0
  17. package/dist/_link.js.map +1 -0
  18. package/dist/_numeric.cjs +1 -1
  19. package/dist/_numeric.cjs.map +1 -1
  20. package/dist/_numeric.d.ts +2 -1
  21. package/dist/_numeric.d.ts.map +1 -1
  22. package/dist/_numeric.js +3 -7
  23. package/dist/_numeric.js.map +1 -1
  24. package/dist/_pipe.cjs +1 -1
  25. package/dist/_pipe.cjs.map +1 -1
  26. package/dist/_pipe.d.ts +2 -1
  27. package/dist/_pipe.d.ts.map +1 -1
  28. package/dist/_pipe.js +3 -3
  29. package/dist/_pipe.js.map +1 -1
  30. package/dist/_safe.cjs +1 -1
  31. package/dist/_safe.cjs.map +1 -1
  32. package/dist/_safe.d.ts +1 -1
  33. package/dist/_safe.d.ts.map +1 -1
  34. package/dist/_safe.js +2 -2
  35. package/dist/_safe.js.map +1 -1
  36. package/dist/_scheduler.cjs +1 -1
  37. package/dist/_scheduler.cjs.map +1 -1
  38. package/dist/_scheduler.d.ts +5 -2
  39. package/dist/_scheduler.d.ts.map +1 -1
  40. package/dist/_scheduler.js +1 -1
  41. package/dist/_scheduler.js.map +1 -1
  42. package/dist/_subscription.cjs +2 -0
  43. package/dist/_subscription.cjs.map +1 -0
  44. package/dist/_subscription.d.ts +8 -0
  45. package/dist/_subscription.d.ts.map +1 -0
  46. package/dist/_subscription.js +80 -0
  47. package/dist/_subscription.js.map +1 -0
  48. package/dist/adapters/courier.cjs +1 -1
  49. package/dist/adapters/courier.cjs.map +1 -1
  50. package/dist/adapters/courier.d.ts +35 -21
  51. package/dist/adapters/courier.d.ts.map +1 -1
  52. package/dist/adapters/courier.js +25 -6
  53. package/dist/adapters/courier.js.map +1 -1
  54. package/dist/adapters/herald.cjs +1 -1
  55. package/dist/adapters/herald.cjs.map +1 -1
  56. package/dist/adapters/herald.d.ts +2 -16
  57. package/dist/adapters/herald.d.ts.map +1 -1
  58. package/dist/adapters/herald.js +12 -8
  59. package/dist/adapters/herald.js.map +1 -1
  60. package/dist/adapters/pulse.cjs +1 -1
  61. package/dist/adapters/pulse.cjs.map +1 -1
  62. package/dist/adapters/pulse.d.ts +3 -20
  63. package/dist/adapters/pulse.d.ts.map +1 -1
  64. package/dist/adapters/pulse.js +2 -6
  65. package/dist/adapters/pulse.js.map +1 -1
  66. package/dist/adapters/ripple.cjs +1 -1
  67. package/dist/adapters/ripple.cjs.map +1 -1
  68. package/dist/adapters/ripple.d.ts +3 -39
  69. package/dist/adapters/ripple.d.ts.map +1 -1
  70. package/dist/adapters/ripple.js +22 -29
  71. package/dist/adapters/ripple.js.map +1 -1
  72. package/dist/async.cjs +2 -0
  73. package/dist/async.cjs.map +1 -0
  74. package/dist/async.d.ts +4 -0
  75. package/dist/async.d.ts.map +1 -0
  76. package/dist/async.js +11 -0
  77. package/dist/async.js.map +1 -0
  78. package/dist/core.cjs +1 -1
  79. package/dist/core.cjs.map +1 -1
  80. package/dist/core.d.ts +3 -16
  81. package/dist/core.d.ts.map +1 -1
  82. package/dist/core.js +12 -81
  83. package/dist/core.js.map +1 -1
  84. package/dist/courier.cjs +1 -0
  85. package/dist/courier.d.ts +2 -0
  86. package/dist/courier.d.ts.map +1 -0
  87. package/dist/courier.js +2 -0
  88. package/dist/errors.cjs.map +1 -1
  89. package/dist/errors.js.map +1 -1
  90. package/dist/flux.cjs +1 -1
  91. package/dist/flux.cjs.map +1 -1
  92. package/dist/flux.iife.js +1 -1
  93. package/dist/flux.iife.js.map +1 -1
  94. package/dist/flux.js +1 -1
  95. package/dist/flux.js.map +1 -1
  96. package/dist/herald.cjs +1 -0
  97. package/dist/herald.d.ts +2 -0
  98. package/dist/herald.d.ts.map +1 -0
  99. package/dist/herald.js +2 -0
  100. package/dist/index.cjs +1 -1
  101. package/dist/index.d.ts +13 -15
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +10 -14
  104. package/dist/operators/combination.cjs +1 -1
  105. package/dist/operators/combination.cjs.map +1 -1
  106. package/dist/operators/combination.d.ts +9 -64
  107. package/dist/operators/combination.d.ts.map +1 -1
  108. package/dist/operators/combination.js +46 -160
  109. package/dist/operators/combination.js.map +1 -1
  110. package/dist/operators/creation.cjs +1 -1
  111. package/dist/operators/creation.cjs.map +1 -1
  112. package/dist/operators/creation.d.ts +13 -46
  113. package/dist/operators/creation.d.ts.map +1 -1
  114. package/dist/operators/creation.js +61 -65
  115. package/dist/operators/creation.js.map +1 -1
  116. package/dist/operators/filtering.cjs +1 -1
  117. package/dist/operators/filtering.cjs.map +1 -1
  118. package/dist/operators/filtering.d.ts +10 -60
  119. package/dist/operators/filtering.d.ts.map +1 -1
  120. package/dist/operators/filtering.js +62 -109
  121. package/dist/operators/filtering.js.map +1 -1
  122. package/dist/operators/transformation.cjs +1 -1
  123. package/dist/operators/transformation.cjs.map +1 -1
  124. package/dist/operators/transformation.d.ts +9 -62
  125. package/dist/operators/transformation.d.ts.map +1 -1
  126. package/dist/operators/transformation.js +91 -142
  127. package/dist/operators/transformation.js.map +1 -1
  128. package/dist/operators/utility.cjs +1 -1
  129. package/dist/operators/utility.cjs.map +1 -1
  130. package/dist/operators/utility.d.ts +16 -97
  131. package/dist/operators/utility.d.ts.map +1 -1
  132. package/dist/operators/utility.js +75 -191
  133. package/dist/operators/utility.js.map +1 -1
  134. package/dist/pipe.cjs +2 -0
  135. package/dist/pipe.cjs.map +1 -0
  136. package/dist/pipe.d.ts +15 -0
  137. package/dist/pipe.d.ts.map +1 -0
  138. package/dist/pipe.js +9 -0
  139. package/dist/pipe.js.map +1 -0
  140. package/dist/pulse.cjs +1 -0
  141. package/dist/pulse.d.ts +2 -0
  142. package/dist/pulse.d.ts.map +1 -0
  143. package/dist/pulse.js +2 -0
  144. package/dist/ripple.cjs +1 -0
  145. package/dist/ripple.d.ts +3 -0
  146. package/dist/ripple.d.ts.map +1 -0
  147. package/dist/ripple.js +2 -0
  148. package/dist/subject.cjs +1 -1
  149. package/dist/subject.cjs.map +1 -1
  150. package/dist/subject.d.ts +14 -65
  151. package/dist/subject.d.ts.map +1 -1
  152. package/dist/subject.js +31 -166
  153. package/dist/subject.js.map +1 -1
  154. package/dist/subjects.cjs +1 -0
  155. package/dist/subjects.d.ts +3 -0
  156. package/dist/subjects.d.ts.map +1 -0
  157. package/dist/subjects.js +2 -0
  158. package/dist/types.d.ts +32 -79
  159. package/dist/types.d.ts.map +1 -1
  160. package/package.json +54 -15
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.js","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\n\nimport type { Flux } from '../types';\n\nimport { error } from '../_dev';\nimport { flux } from '../core';\n\n/**\n * Create a `Flux` that emits a new value every time a ripple `Reactive` changes.\n * The current value is emitted immediately on subscribe.\n *\n * @example\n * const count = signal(0);\n * const count$ = fromSignal(count);\n * count$.subscribe((n) => console.log(n)); // logs 0 immediately, then on every change\n */\nexport function fromSignal<T>(source: Readable<T>): Flux<T> {\n return flux<T>((observer) => {\n observer.next(source.value);\n\n const subscription = source.subscribe(() => {\n observer.next(source.value);\n });\n\n return () => subscription.dispose();\n });\n}\n\nexport type ToSignalOptions<T> = {\n /** Initial value before the first emission. */\n initial: T;\n /**\n * Optional `AbortSignal` that stops tracking independently of disposal.\n * Useful when the caller does not own the flux's lifetime.\n */\n signal?: AbortSignal;\n};\n\n/**\n * A handle returned by `toSignal()` that wraps a ripple signal updated by a `Flux`.\n * Exposes `value` (reactive — usable in ripple `effect()` calls) and `dispose()` to\n * stop tracking. The underlying signal retains its last value after disposal.\n */\nexport type SignalBinding<T> = {\n /** ES2026 `using` compatible disposal. */\n [Symbol.dispose](): void;\n /** AbortSignal that aborts when `dispose()` is called. */\n readonly disposalSignal: AbortSignal;\n /** Stop tracking the source `Flux` and freeze the signal value. */\n dispose(): void;\n /** `true` after `dispose()` is called. */\n readonly disposed: boolean;\n /** The underlying ripple `Readable<T>` for use with ripple operators. */\n readonly signal: Readable<T>;\n /** The current tracked value (reactive — reads track in ripple effects). */\n readonly value: T;\n};\n\n/**\n * Create a `SignalBinding<T>` whose value is updated by each emission from a `Flux`.\n * The binding starts with `opts.initial` and updates reactively as the flux emits.\n *\n * Call `dispose()` to stop tracking; the last value remains readable after disposal.\n *\n * @example\n * const latest = toSignal(count$, { initial: 0 });\n * effect(() => console.log(latest.value)); // reactive — re-runs on flux emissions\n * latest.dispose(); // stop tracking\n */\nexport function toSignal<T>(source: Flux<T>, opts: ToSignalOptions<T>): SignalBinding<T> {\n const sig = signal<T>(opts.initial);\n const ac = new AbortController();\n\n const unsub = source.subscribe(\n {\n error(err) {\n error('toSignal: source errored — signal value may be stale', err);\n },\n next(v) {\n sig.value = v;\n },\n },\n opts.signal,\n );\n\n const dispose = (): void => {\n if (ac.signal.aborted) return;\n\n ac.abort();\n unsub();\n };\n\n return {\n get disposalSignal(): AbortSignal {\n return ac.signal;\n },\n dispose,\n get disposed(): boolean {\n return ac.signal.aborted;\n },\n get signal(): Readable<T> {\n return sig;\n },\n [Symbol.dispose](): void {\n dispose();\n },\n get value(): T {\n return sig.value;\n },\n };\n}\n"],"mappings":";;;;AAkBA,SAAgB,EAAc,GAA8B;CAC1D,OAAO,GAAS,MAAa;EAC3B,EAAS,KAAK,EAAO,KAAK;EAE1B,IAAM,IAAe,EAAO,gBAAgB;GAC1C,EAAS,KAAK,EAAO,KAAK;EAC5B,CAAC;EAED,aAAa,EAAa,QAAQ;CACpC,CAAC;AACH;AA2CA,SAAgB,EAAY,GAAiB,GAA4C;CACvF,IAAM,IAAM,EAAU,EAAK,OAAO,GAC5B,IAAK,IAAI,gBAAgB,GAEzB,IAAQ,EAAO,UACnB;EACE,MAAM,GAAK;GACT,EAAM,wDAAwD,CAAG;EACnE;EACA,KAAK,GAAG;GACN,EAAI,QAAQ;EACd;CACF,GACA,EAAK,MACP,GAEM,UAAsB;EACtB,EAAG,OAAO,YAEd,EAAG,MAAM,GACT,EAAM;CACR;CAEA,OAAO;EACL,IAAI,iBAA8B;GAChC,OAAO,EAAG;EACZ;EACA;EACA,IAAI,WAAoB;GACtB,OAAO,EAAG,OAAO;EACnB;EACA,IAAI,SAAsB;GACxB,OAAO;EACT;EACA,CAAC,OAAO,WAAiB;GACvB,EAAQ;EACV;EACA,IAAI,QAAW;GACb,OAAO,EAAI;EACb;CACF;AACF"}
1
+ {"version":3,"file":"ripple.js","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\n\nimport type { Stream, Subscription } from '../types';\n\nimport { error } from '../_dev';\nimport { stream } from '../core';\n\nexport type ToSignalOptions<T> = {\n initial: T;\n signal?: AbortSignal;\n};\n\nexport type SignalBinding<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n readonly signal: Readable<T>;\n readonly value: T;\n};\n\nexport function fromSignal<T>(source: Readable<T>): Stream<T> {\n return stream((sink) => {\n sink.next(source.value);\n\n return source.subscribe(() => sink.next(source.value));\n });\n}\n\nexport function toSignal<T>(source: Stream<T>, options: ToSignalOptions<T>): SignalBinding<T> {\n const target = signal(options.initial);\n const controller = new AbortController();\n const subscriptionRef: { current?: Subscription } = {};\n\n const dispose = (): void => {\n if (controller.signal.aborted) return;\n\n controller.abort();\n options.signal?.removeEventListener('abort', dispose);\n subscriptionRef.current?.unsubscribe();\n };\n\n if (options.signal?.aborted) controller.abort();\n\n subscriptionRef.current = source.subscribe(\n {\n complete: dispose,\n error(reason) {\n error('toSignal source error', reason);\n dispose();\n },\n next(value) {\n target.value = value;\n },\n },\n { signal: controller.signal },\n );\n\n if (!controller.signal.aborted) options.signal?.addEventListener('abort', dispose, { once: true });\n\n return {\n get disposalSignal(): AbortSignal {\n return controller.signal;\n },\n dispose,\n get disposed(): boolean {\n return controller.signal.aborted;\n },\n get signal(): Readable<T> {\n return target;\n },\n [Symbol.dispose]: dispose,\n get value(): T {\n return target.value;\n },\n };\n}\n"],"mappings":";;;;AAuBA,SAAgB,EAAc,GAAgC;CAC5D,OAAO,GAAQ,OACb,EAAK,KAAK,EAAO,KAAK,GAEf,EAAO,gBAAgB,EAAK,KAAK,EAAO,KAAK,CAAC,EACtD;AACH;AAEA,SAAgB,EAAY,GAAmB,GAA+C;CAC5F,IAAM,IAAS,EAAO,EAAQ,OAAO,GAC/B,IAAa,IAAI,gBAAgB,GACjC,IAA8C,CAAC,GAE/C,UAAsB;EACtB,EAAW,OAAO,YAEtB,EAAW,MAAM,GACjB,EAAQ,QAAQ,oBAAoB,SAAS,CAAO,GACpD,EAAgB,SAAS,YAAY;CACvC;CAoBA,OAlBI,EAAQ,QAAQ,WAAS,EAAW,MAAM,GAE9C,EAAgB,UAAU,EAAO,UAC/B;EACE,UAAU;EACV,MAAM,GAAQ;GAEZ,EAAQ;EACV;EACA,KAAK,GAAO;GACV,EAAO,QAAQ;EACjB;CACF,GACA,EAAE,QAAQ,EAAW,OAAO,CAC9B,GAEK,EAAW,OAAO,WAAS,EAAQ,QAAQ,iBAAiB,SAAS,GAAS,EAAE,MAAM,GAAK,CAAC,GAE1F;EACL,IAAI,iBAA8B;GAChC,OAAO,EAAW;EACpB;EACA;EACA,IAAI,WAAoB;GACtB,OAAO,EAAW,OAAO;EAC3B;EACA,IAAI,SAAsB;GACxB,OAAO;EACT;GACC,OAAO,UAAU;EAClB,IAAI,QAAW;GACb,OAAO,EAAO;EAChB;CACF;AACF"}
package/dist/async.cjs ADDED
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./_iterator.cjs");function t(t,n){return{[Symbol.asyncIterator](){return e.toIterator(t,n)}}}exports.toAsyncIterable=t;
2
+ //# sourceMappingURL=async.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.cjs","names":[],"sources":["../src/async.ts"],"sourcesContent":["import type { AsyncIterableOptions, Stream } from './types';\n\nimport { toIterator } from './_iterator';\n\n/** Converts a push stream into an async iterable with an explicit overflow policy. */\nexport function toAsyncIterable<T>(source: Stream<T>, options: AsyncIterableOptions): AsyncIterable<T> {\n return {\n [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return toIterator(source, options);\n },\n };\n}\n"],"mappings":"sGAKA,SAAgB,EAAmB,EAAmB,EAAiD,CACrG,MAAO,CACL,CAAC,OAAO,gBAA2C,CACjD,OAAO,EAAA,WAAW,EAAQ,CAAO,CACnC,CACF,CACF"}
@@ -0,0 +1,4 @@
1
+ import type { AsyncIterableOptions, Stream } from './types';
2
+ /** Converts a push stream into an async iterable with an explicit overflow policy. */
3
+ export declare function toAsyncIterable<T>(source: Stream<T>, options: AsyncIterableOptions): AsyncIterable<T>;
4
+ //# sourceMappingURL=async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAI5D,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC,CAMrG"}
package/dist/async.js ADDED
@@ -0,0 +1,11 @@
1
+ import { toIterator as e } from "./_iterator.js";
2
+ //#region src/async.ts
3
+ function t(t, n) {
4
+ return { [Symbol.asyncIterator]() {
5
+ return e(t, n);
6
+ } };
7
+ }
8
+ //#endregion
9
+ export { t as toAsyncIterable };
10
+
11
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","names":[],"sources":["../src/async.ts"],"sourcesContent":["import type { AsyncIterableOptions, Stream } from './types';\n\nimport { toIterator } from './_iterator';\n\n/** Converts a push stream into an async iterable with an explicit overflow policy. */\nexport function toAsyncIterable<T>(source: Stream<T>, options: AsyncIterableOptions): AsyncIterable<T> {\n return {\n [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return toIterator(source, options);\n },\n };\n}\n"],"mappings":";;AAKA,SAAgB,EAAmB,GAAmB,GAAiD;CACrG,OAAO,EACL,CAAC,OAAO,iBAA2C;EACjD,OAAO,EAAW,GAAQ,CAAO;CACnC,EACF;AACF"}
package/dist/core.cjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=require("./_iterator.cjs"),t=require("./_pipe.cjs");var n=()=>{};function r(r){let i=new AbortController,a={get disposalSignal(){return i.signal},dispose(){i.abort()},get disposed(){return i.signal.aborted},pipe:t.makePipe(()=>a),subscribe(e,t){let a=typeof e==`function`?{next:e}:e;if(i.signal.aborted||t?.aborted){try{a.complete?.()}catch{}return n}let o=!0,s,c=()=>{i.signal.removeEventListener(`abort`,l),t&&t.removeEventListener(`abort`,d)},l=()=>{if(o){o=!1,c();try{a.complete?.()}catch{}try{s?.()}catch{}}},u={complete(){if(o){o=!1,c();try{a.complete?.()}finally{s?.()}}},error(e){if(o){o=!1,c();try{a.error?.(e)}finally{s?.()}}},next(e){o&&a.next(e)}};try{s=r(u)}catch(e){return o=!1,a.error?.(e),n}if(!o)return s?.(),n;function d(){o&&(o=!1,c(),s?.())}return i.signal.addEventListener(`abort`,l,{once:!0}),t&&t.addEventListener(`abort`,d,{once:!0}),()=>{d()}},[Symbol.asyncIterator](){return e.makeAsyncIterator(e=>a.subscribe(e))},[Symbol.dispose](){a.dispose()}};return a}exports.flux=r;
1
+ const e=require("./_subscription.cjs");function t(t){return{subscribe(n,r){let i=e.createSubscription(n,r?.signal);if(i.subscription.closed)return i.subscription;try{i.add(t(i.sink,i.signal))}catch(e){i.sink.error(e)}return i.subscription}}}exports.stream=t;
2
2
  //# sourceMappingURL=core.cjs.map
package/dist/core.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs","names":[],"sources":["../src/core.ts"],"sourcesContent":["import type { Flux, Observer, Producer, Unsubscribe } from './types';\n\nimport { makeAsyncIterator } from './_iterator';\nimport { makePipe } from './_pipe';\n\nconst NOOP: Unsubscribe = () => {};\n\n/**\n * Creates a cold `Flux<T>` stream from a producer function.\n *\n * The producer is called once per `subscribe()` invocation (cold by default).\n * Return a cleanup function from the producer to run when the subscriber\n * unsubscribes, errors, or the stream is disposed.\n *\n * @example\n * const ticker = flux<number>((observer) => {\n * let i = 0;\n * const id = setInterval(() => observer.next(i++), 1000);\n * return () => clearInterval(id);\n * });\n */\nexport function flux<T>(producer: Producer<T>): Flux<T> {\n const ac = new AbortController();\n\n const instance: Flux<T> = {\n get disposalSignal(): AbortSignal {\n return ac.signal;\n },\n\n dispose(): void {\n ac.abort();\n },\n\n get disposed(): boolean {\n return ac.signal.aborted;\n },\n\n pipe: makePipe(() => instance),\n\n subscribe(observerOrNext: Observer<T> | ((value: T) => void), signal?: AbortSignal): Unsubscribe {\n const observer: Observer<T> = typeof observerOrNext === 'function' ? { next: observerOrNext } : observerOrNext;\n\n if (ac.signal.aborted || signal?.aborted) {\n try {\n observer.complete?.();\n } catch {\n /* empty */\n }\n\n return NOOP;\n }\n\n let active = true;\n let producerCleanup: Unsubscribe | void;\n\n const deregister = (): void => {\n ac.signal.removeEventListener('abort', notifyComplete);\n\n if (signal) signal.removeEventListener('abort', unsubscribe);\n };\n\n const notifyComplete = (): void => {\n if (!active) return;\n\n active = false;\n deregister();\n\n try {\n observer.complete?.();\n } catch {\n /* empty */\n }\n\n try {\n producerCleanup?.();\n } catch {\n /* empty */\n }\n };\n\n const safeObserver: Observer<T> = {\n complete(): void {\n if (!active) return;\n\n active = false;\n deregister();\n\n try {\n observer.complete?.();\n } finally {\n producerCleanup?.();\n }\n },\n\n error(err: unknown): void {\n if (!active) return;\n\n active = false;\n deregister();\n\n try {\n observer.error?.(err);\n } finally {\n producerCleanup?.();\n }\n },\n\n next(value: T): void {\n if (active) observer.next(value);\n },\n };\n\n try {\n producerCleanup = producer(safeObserver);\n } catch (err) {\n active = false;\n observer.error?.(err);\n\n return NOOP;\n }\n\n if (!active) {\n producerCleanup?.();\n\n return NOOP;\n }\n\n function unsubscribe(): void {\n if (!active) return;\n\n active = false;\n deregister();\n producerCleanup?.();\n }\n\n ac.signal.addEventListener('abort', notifyComplete, { once: true });\n\n if (signal) {\n signal.addEventListener('abort', unsubscribe, { once: true });\n }\n\n return (): void => {\n unsubscribe();\n };\n },\n\n [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return makeAsyncIterator<T>((obs) => instance.subscribe(obs));\n },\n\n [Symbol.dispose](): void {\n instance.dispose();\n },\n };\n\n return instance;\n}\n"],"mappings":"4DAKA,IAAM,MAA0B,CAAC,EAgBjC,SAAgB,EAAQ,EAAgC,CACtD,IAAM,EAAK,IAAI,gBAET,EAAoB,CACxB,IAAI,gBAA8B,CAChC,OAAO,EAAG,MACZ,EAEA,SAAgB,CACd,EAAG,MAAM,CACX,EAEA,IAAI,UAAoB,CACtB,OAAO,EAAG,OAAO,OACnB,EAEA,KAAM,EAAA,aAAe,CAAQ,EAE7B,UAAU,EAAoD,EAAmC,CAC/F,IAAM,EAAwB,OAAO,GAAmB,WAAa,CAAE,KAAM,CAAe,EAAI,EAEhG,GAAI,EAAG,OAAO,SAAW,GAAQ,QAAS,CACxC,GAAI,CACF,EAAS,WAAW,CACtB,MAAQ,CAER,CAEA,OAAO,CACT,CAEA,IAAI,EAAS,GACT,EAEE,MAAyB,CAC7B,EAAG,OAAO,oBAAoB,QAAS,CAAc,EAEjD,GAAQ,EAAO,oBAAoB,QAAS,CAAW,CAC7D,EAEM,MAA6B,CAC5B,KAGL,CADA,EAAS,GACT,EAAW,EAEX,GAAI,CACF,EAAS,WAAW,CACtB,MAAQ,CAER,CAEA,GAAI,CACF,IAAkB,CACpB,MAAQ,CAER,CAZW,CAab,EAEM,EAA4B,CAChC,UAAiB,CACV,KAGL,CADA,EAAS,GACT,EAAW,EAEX,GAAI,CACF,EAAS,WAAW,CACtB,QAAU,CACR,IAAkB,CACpB,CANW,CAOb,EAEA,MAAM,EAAoB,CACnB,KAGL,CADA,EAAS,GACT,EAAW,EAEX,GAAI,CACF,EAAS,QAAQ,CAAG,CACtB,QAAU,CACR,IAAkB,CACpB,CANW,CAOb,EAEA,KAAK,EAAgB,CACf,GAAQ,EAAS,KAAK,CAAK,CACjC,CACF,EAEA,GAAI,CACF,EAAkB,EAAS,CAAY,CACzC,OAAS,EAAK,CAIZ,MAHA,GAAS,GACT,EAAS,QAAQ,CAAG,EAEb,CACT,CAEA,GAAI,CAAC,EAGH,OAFA,IAAkB,EAEX,EAGT,SAAS,GAAoB,CACtB,IAEL,EAAS,GACT,EAAW,EACX,IAAkB,EACpB,CAQA,OANA,EAAG,OAAO,iBAAiB,QAAS,EAAgB,CAAE,KAAM,EAAK,CAAC,EAE9D,GACF,EAAO,iBAAiB,QAAS,EAAa,CAAE,KAAM,EAAK,CAAC,MAG3C,CACjB,EAAY,CACd,CACF,EAEA,CAAC,OAAO,gBAA2C,CACjD,OAAO,EAAA,kBAAsB,GAAQ,EAAS,UAAU,CAAG,CAAC,CAC9D,EAEA,CAAC,OAAO,UAAiB,CACvB,EAAS,QAAQ,CACnB,CACF,EAEA,OAAO,CACT"}
1
+ {"version":3,"file":"core.cjs","names":[],"sources":["../src/core.ts"],"sourcesContent":["import type { Observer, Producer, Stream, SubscribeOptions, Subscription } from './types';\n\nimport { createSubscription } from './_subscription';\n\n/** Creates lazy work. Producer cleanup belongs to each individual subscription. */\nexport function stream<T>(producer: Producer<T>): Stream<T> {\n return {\n subscribe(observer: Observer<T> | ((value: T) => void), options?: SubscribeOptions): Subscription {\n const subscription = createSubscription(observer, options?.signal);\n\n if (subscription.subscription.closed) return subscription.subscription;\n\n try {\n subscription.add(producer(subscription.sink, subscription.signal));\n } catch (reason) {\n subscription.sink.error(reason);\n }\n\n return subscription.subscription;\n },\n };\n}\n"],"mappings":"uCAKA,SAAgB,EAAU,EAAkC,CAC1D,MAAO,CACL,UAAU,EAA8C,EAA0C,CAChG,IAAM,EAAe,EAAA,mBAAmB,EAAU,GAAS,MAAM,EAEjE,GAAI,EAAa,aAAa,OAAQ,OAAO,EAAa,aAE1D,GAAI,CACF,EAAa,IAAI,EAAS,EAAa,KAAM,EAAa,MAAM,CAAC,CACnE,OAAS,EAAQ,CACf,EAAa,KAAK,MAAM,CAAM,CAChC,CAEA,OAAO,EAAa,YACtB,CACF,CACF"}
package/dist/core.d.ts CHANGED
@@ -1,17 +1,4 @@
1
- import type { Flux, Producer } from './types';
2
- /**
3
- * Creates a cold `Flux<T>` stream from a producer function.
4
- *
5
- * The producer is called once per `subscribe()` invocation (cold by default).
6
- * Return a cleanup function from the producer to run when the subscriber
7
- * unsubscribes, errors, or the stream is disposed.
8
- *
9
- * @example
10
- * const ticker = flux<number>((observer) => {
11
- * let i = 0;
12
- * const id = setInterval(() => observer.next(i++), 1000);
13
- * return () => clearInterval(id);
14
- * });
15
- */
16
- export declare function flux<T>(producer: Producer<T>): Flux<T>;
1
+ import type { Producer, Stream } from './types';
2
+ /** Creates lazy work. Producer cleanup belongs to each individual subscription. */
3
+ export declare function stream<T>(producer: Producer<T>): Stream<T>;
17
4
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAY,QAAQ,EAAe,MAAM,SAAS,CAAC;AAOrE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAuItD"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,EAAkC,MAAM,SAAS,CAAC;AAI1F,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAgB1D"}
package/dist/core.js CHANGED
@@ -1,87 +1,18 @@
1
- import { makeAsyncIterator as e } from "./_iterator.js";
2
- import { makePipe as t } from "./_pipe.js";
1
+ import { createSubscription as e } from "./_subscription.js";
3
2
  //#region src/core.ts
4
- var n = () => {};
5
- function r(r) {
6
- let i = new AbortController(), a = {
7
- get disposalSignal() {
8
- return i.signal;
9
- },
10
- dispose() {
11
- i.abort();
12
- },
13
- get disposed() {
14
- return i.signal.aborted;
15
- },
16
- pipe: t(() => a),
17
- subscribe(e, t) {
18
- let a = typeof e == "function" ? { next: e } : e;
19
- if (i.signal.aborted || t?.aborted) {
20
- try {
21
- a.complete?.();
22
- } catch {}
23
- return n;
24
- }
25
- let o = !0, s, c = () => {
26
- i.signal.removeEventListener("abort", l), t && t.removeEventListener("abort", d);
27
- }, l = () => {
28
- if (o) {
29
- o = !1, c();
30
- try {
31
- a.complete?.();
32
- } catch {}
33
- try {
34
- s?.();
35
- } catch {}
36
- }
37
- }, u = {
38
- complete() {
39
- if (o) {
40
- o = !1, c();
41
- try {
42
- a.complete?.();
43
- } finally {
44
- s?.();
45
- }
46
- }
47
- },
48
- error(e) {
49
- if (o) {
50
- o = !1, c();
51
- try {
52
- a.error?.(e);
53
- } finally {
54
- s?.();
55
- }
56
- }
57
- },
58
- next(e) {
59
- o && a.next(e);
60
- }
61
- };
62
- try {
63
- s = r(u);
64
- } catch (e) {
65
- return o = !1, a.error?.(e), n;
66
- }
67
- if (!o) return s?.(), n;
68
- function d() {
69
- o && (o = !1, c(), s?.());
70
- }
71
- return i.signal.addEventListener("abort", l, { once: !0 }), t && t.addEventListener("abort", d, { once: !0 }), () => {
72
- d();
73
- };
74
- },
75
- [Symbol.asyncIterator]() {
76
- return e((e) => a.subscribe(e));
77
- },
78
- [Symbol.dispose]() {
79
- a.dispose();
3
+ function t(t) {
4
+ return { subscribe(n, r) {
5
+ let i = e(n, r?.signal);
6
+ if (i.subscription.closed) return i.subscription;
7
+ try {
8
+ i.add(t(i.sink, i.signal));
9
+ } catch (e) {
10
+ i.sink.error(e);
80
11
  }
81
- };
82
- return a;
12
+ return i.subscription;
13
+ } };
83
14
  }
84
15
  //#endregion
85
- export { r as flux };
16
+ export { t as stream };
86
17
 
87
18
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","names":[],"sources":["../src/core.ts"],"sourcesContent":["import type { Flux, Observer, Producer, Unsubscribe } from './types';\n\nimport { makeAsyncIterator } from './_iterator';\nimport { makePipe } from './_pipe';\n\nconst NOOP: Unsubscribe = () => {};\n\n/**\n * Creates a cold `Flux<T>` stream from a producer function.\n *\n * The producer is called once per `subscribe()` invocation (cold by default).\n * Return a cleanup function from the producer to run when the subscriber\n * unsubscribes, errors, or the stream is disposed.\n *\n * @example\n * const ticker = flux<number>((observer) => {\n * let i = 0;\n * const id = setInterval(() => observer.next(i++), 1000);\n * return () => clearInterval(id);\n * });\n */\nexport function flux<T>(producer: Producer<T>): Flux<T> {\n const ac = new AbortController();\n\n const instance: Flux<T> = {\n get disposalSignal(): AbortSignal {\n return ac.signal;\n },\n\n dispose(): void {\n ac.abort();\n },\n\n get disposed(): boolean {\n return ac.signal.aborted;\n },\n\n pipe: makePipe(() => instance),\n\n subscribe(observerOrNext: Observer<T> | ((value: T) => void), signal?: AbortSignal): Unsubscribe {\n const observer: Observer<T> = typeof observerOrNext === 'function' ? { next: observerOrNext } : observerOrNext;\n\n if (ac.signal.aborted || signal?.aborted) {\n try {\n observer.complete?.();\n } catch {\n /* empty */\n }\n\n return NOOP;\n }\n\n let active = true;\n let producerCleanup: Unsubscribe | void;\n\n const deregister = (): void => {\n ac.signal.removeEventListener('abort', notifyComplete);\n\n if (signal) signal.removeEventListener('abort', unsubscribe);\n };\n\n const notifyComplete = (): void => {\n if (!active) return;\n\n active = false;\n deregister();\n\n try {\n observer.complete?.();\n } catch {\n /* empty */\n }\n\n try {\n producerCleanup?.();\n } catch {\n /* empty */\n }\n };\n\n const safeObserver: Observer<T> = {\n complete(): void {\n if (!active) return;\n\n active = false;\n deregister();\n\n try {\n observer.complete?.();\n } finally {\n producerCleanup?.();\n }\n },\n\n error(err: unknown): void {\n if (!active) return;\n\n active = false;\n deregister();\n\n try {\n observer.error?.(err);\n } finally {\n producerCleanup?.();\n }\n },\n\n next(value: T): void {\n if (active) observer.next(value);\n },\n };\n\n try {\n producerCleanup = producer(safeObserver);\n } catch (err) {\n active = false;\n observer.error?.(err);\n\n return NOOP;\n }\n\n if (!active) {\n producerCleanup?.();\n\n return NOOP;\n }\n\n function unsubscribe(): void {\n if (!active) return;\n\n active = false;\n deregister();\n producerCleanup?.();\n }\n\n ac.signal.addEventListener('abort', notifyComplete, { once: true });\n\n if (signal) {\n signal.addEventListener('abort', unsubscribe, { once: true });\n }\n\n return (): void => {\n unsubscribe();\n };\n },\n\n [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return makeAsyncIterator<T>((obs) => instance.subscribe(obs));\n },\n\n [Symbol.dispose](): void {\n instance.dispose();\n },\n };\n\n return instance;\n}\n"],"mappings":";;;AAKA,IAAM,UAA0B,CAAC;AAgBjC,SAAgB,EAAQ,GAAgC;CACtD,IAAM,IAAK,IAAI,gBAAgB,GAEzB,IAAoB;EACxB,IAAI,iBAA8B;GAChC,OAAO,EAAG;EACZ;EAEA,UAAgB;GACd,EAAG,MAAM;EACX;EAEA,IAAI,WAAoB;GACtB,OAAO,EAAG,OAAO;EACnB;EAEA,MAAM,QAAe,CAAQ;EAE7B,UAAU,GAAoD,GAAmC;GAC/F,IAAM,IAAwB,OAAO,KAAmB,aAAa,EAAE,MAAM,EAAe,IAAI;GAEhG,IAAI,EAAG,OAAO,WAAW,GAAQ,SAAS;IACxC,IAAI;KACF,EAAS,WAAW;IACtB,QAAQ,CAER;IAEA,OAAO;GACT;GAEA,IAAI,IAAS,IACT,GAEE,UAAyB;IAG7B,AAFA,EAAG,OAAO,oBAAoB,SAAS,CAAc,GAEjD,KAAQ,EAAO,oBAAoB,SAAS,CAAW;GAC7D,GAEM,UAA6B;IAC5B,OAGL;KADA,IAAS,IACT,EAAW;KAEX,IAAI;MACF,EAAS,WAAW;KACtB,QAAQ,CAER;KAEA,IAAI;MACF,IAAkB;KACpB,QAAQ,CAER;IAZW;GAab,GAEM,IAA4B;IAChC,WAAiB;KACV,OAGL;MADA,IAAS,IACT,EAAW;MAEX,IAAI;OACF,EAAS,WAAW;MACtB,UAAU;OACR,IAAkB;MACpB;KANW;IAOb;IAEA,MAAM,GAAoB;KACnB,OAGL;MADA,IAAS,IACT,EAAW;MAEX,IAAI;OACF,EAAS,QAAQ,CAAG;MACtB,UAAU;OACR,IAAkB;MACpB;KANW;IAOb;IAEA,KAAK,GAAgB;KACnB,AAAI,KAAQ,EAAS,KAAK,CAAK;IACjC;GACF;GAEA,IAAI;IACF,IAAkB,EAAS,CAAY;GACzC,SAAS,GAAK;IAIZ,OAHA,IAAS,IACT,EAAS,QAAQ,CAAG,GAEb;GACT;GAEA,IAAI,CAAC,GAGH,OAFA,IAAkB,GAEX;GAGT,SAAS,IAAoB;IACtB,MAEL,IAAS,IACT,EAAW,GACX,IAAkB;GACpB;GAQA,OANA,EAAG,OAAO,iBAAiB,SAAS,GAAgB,EAAE,MAAM,GAAK,CAAC,GAE9D,KACF,EAAO,iBAAiB,SAAS,GAAa,EAAE,MAAM,GAAK,CAAC,SAG3C;IACjB,EAAY;GACd;EACF;EAEA,CAAC,OAAO,iBAA2C;GACjD,OAAO,GAAsB,MAAQ,EAAS,UAAU,CAAG,CAAC;EAC9D;EAEA,CAAC,OAAO,WAAiB;GACvB,EAAS,QAAQ;EACnB;CACF;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"core.js","names":[],"sources":["../src/core.ts"],"sourcesContent":["import type { Observer, Producer, Stream, SubscribeOptions, Subscription } from './types';\n\nimport { createSubscription } from './_subscription';\n\n/** Creates lazy work. Producer cleanup belongs to each individual subscription. */\nexport function stream<T>(producer: Producer<T>): Stream<T> {\n return {\n subscribe(observer: Observer<T> | ((value: T) => void), options?: SubscribeOptions): Subscription {\n const subscription = createSubscription(observer, options?.signal);\n\n if (subscription.subscription.closed) return subscription.subscription;\n\n try {\n subscription.add(producer(subscription.sink, subscription.signal));\n } catch (reason) {\n subscription.sink.error(reason);\n }\n\n return subscription.subscription;\n },\n };\n}\n"],"mappings":";;AAKA,SAAgB,EAAU,GAAkC;CAC1D,OAAO,EACL,UAAU,GAA8C,GAA0C;EAChG,IAAM,IAAe,EAAmB,GAAU,GAAS,MAAM;EAEjE,IAAI,EAAa,aAAa,QAAQ,OAAO,EAAa;EAE1D,IAAI;GACF,EAAa,IAAI,EAAS,EAAa,MAAM,EAAa,MAAM,CAAC;EACnE,SAAS,GAAQ;GACf,EAAa,KAAK,MAAM,CAAM;EAChC;EAEA,OAAO,EAAa;CACtB,EACF;AACF"}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./adapters/courier.cjs");exports.fromQuery=e.fromQuery,exports.fromSse=e.fromSse;
@@ -0,0 +1,2 @@
1
+ export { fromQuery, fromSse } from './adapters/courier';
2
+ //# sourceMappingURL=courier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"courier.d.ts","sourceRoot":"","sources":["../src/courier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { fromQuery as e, fromSse as t } from "./adapters/courier.js";
2
+ export { e as fromQuery, t as fromSse };
@@ -1 +1 @@
1
- {"version":3,"file":"errors.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static is(err: unknown): err is FluxError {\n return err instanceof FluxError;\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n"],"mappings":"AAAA,IAAa,EAAb,MAAa,UAAkB,KAAM,CACnC,YAAY,EAAiB,EAAwB,CACnD,MAAM,EAAS,CAAO,EACtB,KAAK,KAAO,IAAI,OAAO,KACvB,OAAO,eAAe,KAAM,IAAI,OAAO,SAAS,CAClD,CAEA,OAAO,GAAG,EAAgC,CACxC,OAAO,aAAe,CACxB,CACF,EAEa,EAAb,cAAsC,CAAU,CAE9C,GAEA,YAAY,EAAY,CACtB,MAAM,iBAAiB,EAAG,GAAG,EAC7B,KAAK,GAAK,CACZ,CACF"}
1
+ {"version":3,"file":"errors.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static is(err: unknown): err is FluxError {\n return err instanceof FluxError;\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n"],"mappings":"AAAA,IAAa,EAAb,MAAa,UAAkB,KAAM,CACnC,YAAY,EAAiB,EAAwB,CACnD,MAAM,EAAS,CAAO,EACtB,KAAK,KAAO,WAAW,KACvB,OAAO,eAAe,KAAM,WAAW,SAAS,CAClD,CAEA,OAAO,GAAG,EAAgC,CACxC,OAAO,aAAe,CACxB,CACF,EAEa,EAAb,cAAsC,CAAU,CAE9C,GAEA,YAAY,EAAY,CACtB,MAAM,iBAAiB,EAAG,GAAG,EAC7B,KAAK,GAAK,CACZ,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static is(err: unknown): err is FluxError {\n return err instanceof FluxError;\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n"],"mappings":";AAAA,IAAa,IAAb,MAAa,UAAkB,MAAM;CACnC,YAAY,GAAiB,GAAwB;EAGnD,AAFA,MAAM,GAAS,CAAO,GACtB,KAAK,OAAO,IAAI,OAAO,MACvB,OAAO,eAAe,MAAM,IAAI,OAAO,SAAS;CAClD;CAEA,OAAO,GAAG,GAAgC;EACxC,OAAO,aAAe;CACxB;AACF,GAEa,IAAb,cAAsC,EAAU;CAE9C;CAEA,YAAY,GAAY;EAEtB,AADA,MAAM,iBAAiB,EAAG,GAAG,GAC7B,KAAK,KAAK;CACZ;AACF"}
1
+ {"version":3,"file":"errors.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static is(err: unknown): err is FluxError {\n return err instanceof FluxError;\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n"],"mappings":";AAAA,IAAa,IAAb,MAAa,UAAkB,MAAM;CACnC,YAAY,GAAiB,GAAwB;EAGnD,AAFA,MAAM,GAAS,CAAO,GACtB,KAAK,OAAO,WAAW,MACvB,OAAO,eAAe,MAAM,WAAW,SAAS;CAClD;CAEA,OAAO,GAAG,GAAgC;EACxC,OAAO,aAAe;CACxB;AACF,GAEa,IAAb,cAAsC,EAAU;CAE9C;CAEA,YAAY,GAAY;EAEtB,AADA,MAAM,iBAAiB,EAAG,GAAG,GAC7B,KAAK,KAAK;CACZ;AACF"}
package/dist/flux.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@vielzeug/ripple");var t=!globalThis.__FLUX_PROD__;function n(e){t&&console.warn(`[@vielzeug/flux] ${e}`)}function r(e,...n){t&&console.error(`[@vielzeug/flux] ${e}`,...n)}var i=1e4;function a(e){let t=[],r=[],a=!1,o=!1,s={done:!0,value:void 0},c=e({complete(){a=!0,l()},error(e){a=!0,r.length>0?(r.shift().reject(e),l()):t.push({__err:e})},next(e){let a={done:!1,value:e};if(r.length>0){r.shift().resolve(a);return}t.length>=i&&(t.shift(),o||(o=!0,n(`async iterator buffer exceeded ${i} queued values — dropping the oldest. The consumer is falling behind the producer; throttle the source or drain the iterator faster.`))),t.push(a)}});function l(){for(;r.length>0;)r.shift().resolve(s)}let u={next(){if(t.length>0){let e=t.shift();return`__err`in e?Promise.reject(e.__err):Promise.resolve(e)}return a?Promise.resolve(s):new Promise((e,t)=>r.push({reject:t,resolve:e}))},return(){return a||(c(),a=!0,l()),Promise.resolve(s)},[Symbol.asyncIterator](){return u}};return u}function o(e){return((...t)=>t.reduce((e,t)=>t(e),e()))}var s=()=>{};function c(e){let t=new AbortController,n={get disposalSignal(){return t.signal},dispose(){t.abort()},get disposed(){return t.signal.aborted},pipe:o(()=>n),subscribe(n,r){let i=typeof n==`function`?{next:n}:n;if(t.signal.aborted||r?.aborted){try{i.complete?.()}catch{}return s}let a=!0,o,c=()=>{t.signal.removeEventListener(`abort`,l),r&&r.removeEventListener(`abort`,d)},l=()=>{if(a){a=!1,c();try{i.complete?.()}catch{}try{o?.()}catch{}}},u={complete(){if(a){a=!1,c();try{i.complete?.()}finally{o?.()}}},error(e){if(a){a=!1,c();try{i.error?.(e)}finally{o?.()}}},next(e){a&&i.next(e)}};try{o=e(u)}catch(e){return a=!1,i.error?.(e),s}if(!a)return o?.(),s;function d(){a&&(a=!1,c(),o?.())}return t.signal.addEventListener(`abort`,l,{once:!0}),r&&r.addEventListener(`abort`,d,{once:!0}),()=>{d()}},[Symbol.asyncIterator](){return a(e=>n.subscribe(e))},[Symbol.dispose](){n.dispose()}};return n}function l(e,t){return c(n=>e.on(t,e=>n.next(e)))}function u(e){return c(t=>(t.next(e.peek()),e.subscribe(()=>{t.next(e.peek())})))}function d(e,t){return c(n=>e.on(t,e=>n.next(e)))}function f(e,t){return n=>c(r=>n.subscribe({complete:r.complete,error:r.error,next(n){e.emit(t,...n===void 0?[]:[n]),r.next(n)}}))}function ee(e,t){return c(n=>e.on(t,e=>n.next(e)))}function te(e){return c(t=>{t.next(e.state.value);let n=e.onJoin(()=>{t.next(e.state.value)}),r=e.onLeave(()=>{t.next(e.state.value)});return()=>{n(),r()}})}function p(e){return c(t=>{t.next(e.value);let n=e.subscribe(()=>{t.next(e.value)});return()=>n.dispose()})}function m(t,n){let i=(0,e.signal)(n.initial),a=new AbortController,o=t.subscribe({error(e){r(`toSignal: source errored — signal value may be stale`,e)},next(e){i.value=e}},n.signal),s=()=>{a.signal.aborted||(a.abort(),o())};return{get disposalSignal(){return a.signal},dispose:s,get disposed(){return a.signal.aborted},get signal(){return i},[Symbol.dispose](){s()},get value(){return i.value}}}var h={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}},g=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},_=class extends g{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};function ne(...e){return c(t=>{if(e.length===0){t.complete?.();return}let n=0,r=[];for(let i of e)r.push(i.subscribe({complete(){n++,n===e.length&&t.complete?.()},error:t.error,next:t.next}));return()=>{for(let e of r)e()}})}function re(...e){return c(t=>{let n=0,r;function i(){if(n>=e.length){t.complete?.();return}r=e[n++].subscribe({complete(){r=void 0,i()},error:t.error,next:t.next})}return i(),()=>r?.()})}function ie(...e){return c(t=>{if(e.length===0){t.complete?.();return}let n=Array(e.length),r=Array(e.length).fill(!1),i=0,a=[];return e.forEach((o,s)=>{a.push(o.subscribe({complete(){i++,i===e.length&&t.complete?.()},error:t.error,next(e){n[s]=e,r[s]=!0,r.every(Boolean)&&t.next([...n])}}))}),()=>{for(let e of a)e()}})}function ae(...e){return t=>c(n=>{let r=Array(e.length),i=Array(e.length).fill(!1),a=[];e.forEach((e,t)=>{a.push(e.subscribe({error:n.error,next(e){r[t]=e,i[t]=!0}}))});let o=t.subscribe({complete:n.complete,error:n.error,next(e){i.every(Boolean)&&n.next([e,...r])}});return()=>{o();for(let e of a)e()}})}function oe(...e){return c(t=>{if(e.length===0){t.complete?.();return}let n=!1,r=[];for(let i of e)r.push(i.subscribe({complete(){if(!n){n=!0,t.complete?.();for(let e of r)e()}},error(e){if(!n){n=!0,t.error?.(e);for(let e of r)e()}},next(e){if(!n){n=!0,t.next(e);for(let e of r)e()}}}));return()=>{for(let e of r)e()}})}function se(...e){return c(t=>{if(e.length===0){t.complete?.();return}let n=e.map(()=>[]),r=Array(e.length).fill(!1),i=[],a=!1;function o(){if(!a){for(;n.every(e=>e.length>0);){let e=n.map(e=>e.shift());t.next(e)}if(n.some((e,t)=>r[t]&&e.length===0)){a=!0,t.complete?.();for(let e of i)e()}}}return e.forEach((e,s)=>{i.push(e.subscribe({complete(){r[s]=!0,o()},error(e){a=!0,t.error?.(e);for(let e of i)e()},next(e){n[s].push(e),o()}}))}),()=>{for(let e of i)e()}})}function v(...e){return c(t=>{if(e.length===0){t.complete?.();return}let n=Array(e.length),r=Array(e.length).fill(!1),i=[];return e.forEach((e,a)=>{let o,s=!1;i.push(e.subscribe({complete(){if(r[a]=!0,!s){t.complete?.();for(let e of i)e();return}n[a]=o,r.every(Boolean)&&(t.next([...n]),t.complete?.())},error:t.error,next(e){o=e,s=!0}}))}),()=>{for(let e of i)e()}})}function y(...e){return c(t=>{for(let n of e)t.next(n);t.complete?.()})}function b(e){if(e instanceof Promise)return c(t=>{let n=!1;return e.then(e=>{n||(t.next(e),t.complete?.())}).catch(e=>{n||t.error?.(e)}),()=>{n=!0}});if(Symbol.asyncIterator in e){let t=e;return c(e=>{let n=!1,r=t[Symbol.asyncIterator]();return(async()=>{try{for(;;){let{done:t,value:i}=await r.next();if(n||t)break;e.next(i)}n||e.complete?.()}catch(t){n||e.error?.(t)}})(),()=>{n=!0,r.return?.()}})}let t=e;return c(e=>{try{for(let n of t)e.next(n);e.complete?.()}catch(t){e.error?.(t)}})}function x(e,t=h){return c(n=>{let r=0;return t.repeat(()=>n.next(r++),e)})}function S(e,t,n=h){return c(r=>{let i=0,a,o=n.delay(()=>{r.next(i++),t===void 0?r.complete?.():a=n.repeat(()=>r.next(i++),t)},e);return()=>{o(),a?.()}})}function C(){return c(e=>{e.complete?.()})}function w(){return c(()=>{})}function T(e){return c(t=>{let n=typeof e==`function`?e():e;t.error?.(n)})}function E(e,t){return c(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function D(e,t){try{e()}catch(e){t?.(e)}}function O(e){return t=>c(n=>{if(e<=0){n.complete?.();return}let r=0,i=()=>{};return i=t.subscribe({complete:n.complete,error:n.error,next(t){n.next(t),r++,r>=e&&(n.complete?.(),i())}}),i})}function k(e){return t=>c(n=>{let r=0;return t.subscribe({complete:n.complete,error:n.error,next(t){r<e?r++:n.next(t)}})})}function A(e){return t=>c(n=>{let r=!1,i=()=>{r||(r=!0,n.complete?.(),a(),o?.())},a;if(e instanceof AbortSignal){if(e.aborted){n.complete?.();return}e.addEventListener(`abort`,i,{once:!0}),a=()=>e.removeEventListener(`abort`,i)}else a=e.subscribe({next:i});let o=t.subscribe({complete(){r=!0,a(),n.complete?.()},error(e){r=!0,a(),n.error?.(e)},next:n.next});return()=>{a(),o()}})}function j(e){return t=>c(n=>{let r=()=>{};return r=t.subscribe({complete:n.complete,error:n.error,next(t){D(()=>{e(t)?n.next(t):(n.complete?.(),r())},n.error)}}),r})}function M(e,t=h){return n=>c(r=>{let i,a=n.subscribe({complete(){i?.(),r.complete?.()},error(e){i?.(),r.error?.(e)},next(n){i?.(),i=t.delay(()=>r.next(n),e)}});return()=>{i?.(),a()}})}function N(e,t=Date.now){return n=>c(r=>{let i=-1/0;return n.subscribe({complete:r.complete,error:r.error,next(n){let a=t();a-i>=e&&(i=a,r.next(n))}})})}function P(e){return t=>c(n=>{let r,i=!1,a=t.subscribe({complete:n.complete,error:n.error,next(e){r=e,i=!0}}),o=e.subscribe({next(){i&&n.next(r)}});return()=>{a(),o()}})}function F(){return O(1)}function I(){return e=>c(t=>{let n,r=!1;return e.subscribe({complete(){r&&t.next(n),t.complete?.()},error:t.error,next(e){n=e,r=!0}})})}function L(e){let t=Number.isFinite(e)?Math.max(1,Math.floor(e)):1;return{clamped:t!==e,value:t}}function R(e){return t=>c(n=>t.subscribe({complete:n.complete,error:n.error,next(t){D(()=>n.next(e(t)),n.error)}}))}function z(e){return t=>c(n=>t.subscribe({complete:n.complete,error:n.error,next(t){D(()=>{e(t)&&n.next(t)},n.error)}}))}function B(e,t){return n=>c(r=>{let i=t;return n.subscribe({complete:r.complete,error:r.error,next(t){D(()=>{i=e(i,t),r.next(i)},r.error)}})})}function V(e){return t=>c(n=>{let r,i=!1,a=()=>{i&&!r&&n.complete?.()},o=t.subscribe({complete(){i=!0,a()},error:n.error,next(t){D(()=>{r?.(),r=e(t).subscribe({complete(){r=void 0,a()},error:n.error,next:n.next})},n.error)}});return()=>{o(),r?.()}})}function ce(e){return t=>c(n=>{let r=!1,i=0,a=new Set,o=()=>{r&&i===0&&n.complete?.()},s=t.subscribe({complete(){r=!0,o()},error:n.error,next(t){D(()=>{i++;let r=!1,s=()=>{};s=e(t).subscribe({complete(){r=!0,i--,a.delete(s),o()},error:n.error,next:n.next}),r||a.add(s)},n.error)}});return()=>{s();for(let e of a)e()}})}function H(e,t=1/0){return n=>c(r=>{let i=!1,a=[],o=!1,s;function c(){if(a.length===0){o=!1,i&&r.complete?.();return}o=!0;let t=a.shift();D(()=>{s=e(t).subscribe({complete(){s=void 0,c()},error:r.error,next:r.next})},r.error)}let l=n.subscribe({complete(){i=!0,o||r.complete?.()},error:r.error,next(e){a.length<t&&(a.push(e),o||c())}});return()=>{l(),s?.(),a.length=0}})}function U(e){let t=e??Object.is;return e=>c(n=>{let r=!1,i;return e.subscribe({complete:n.complete,error:n.error,next(e){D(()=>{(!r||!t(i,e))&&(r=!0,i=e,n.next(e))},n.error)}})})}function W(...e){return t=>c(n=>{for(let t of e)n.next(t);return t.subscribe(n)})}function G(e,t){let{clamped:r,value:i}=L(e),{clamped:a,value:o}=L(t??i);return r&&n(`bufferCount: size must be a finite integer >= 1, got ${e} — clamped to ${i}`),t!==void 0&&a&&n(`bufferCount: every must be a finite integer >= 1, got ${t} — clamped to ${o}`),e=>c(t=>{let n=[],r=0;return e.subscribe({complete(){for(let e of n)e.length>0&&t.next(e);t.complete?.()},error:t.error,next(e){r%o===0&&n.push([]);for(let t of n)t.push(e);let a=0;for(;a<n.length;)n[a].length>=i?(t.next(n[a]),n.splice(a,1)):a++;r++}})})}function le(){return e=>c(t=>{let n=!1,r;return e.subscribe({complete:t.complete,error:t.error,next(e){n&&t.next([r,e]),n=!0,r=e}})})}function K(e,t){let n=new Set,r=[],i,a=!1,o,s=!1;return c(c=>{if(s){c.error?.(o);return}for(let e of r)c.next(e);if(a){c.complete?.();return}let l={complete:c.complete,error:c.error,next:c.next};return n.add(l),n.size===1&&(i=e.subscribe({complete(){a=!0;for(let e of[...n])e.complete?.();n.clear()},error(e){s=!0,o=e;for(let t of[...n])t.error?.(e);n.clear()},next(e){t>0&&(r.length>=t&&r.shift(),r.push(e));for(let t of[...n])t.next(e)}})),()=>{n.delete(l),n.size===0&&(i?.(),i=void 0)}})}function ue(){return e=>K(e,0)}function de(e=1){let{clamped:t,value:r}=L(e);return t&&n(`shareReplay: bufferSize must be a finite integer >= 1, got ${e} — clamped to ${r}`),e=>K(e,r)}function fe(e){return t=>c(n=>t.subscribe({complete:n.complete,error:n.error,next(t){D(()=>{e(t),n.next(t)},n.error)}}))}function pe(e,t=h){return n=>c(r=>{let i=[],a=n.subscribe({complete(){i.push(t.delay(()=>r.complete?.(),e))},error:r.error,next(n){i.push(t.delay(()=>r.next(n),e))}});return()=>{a();for(let e of i)e()}})}function me(e,t=h){return n=>c(r=>{let i,a=()=>{i=t.delay(()=>{r.error?.(new _(e))},e)};a();let o=n.subscribe({complete(){i(),r.complete?.()},error(e){i(),r.error?.(e)},next(e){i(),a(),r.next(e)}});return()=>{i(),o()}})}function he(e){return t=>c(n=>{let r,i=t.subscribe({complete:n.complete,error(t){D(()=>{r=e(t).subscribe({complete:n.complete,error:n.error,next:n.next})},n.error)},next:n.next});return()=>{i(),r?.()}})}function ge(e,t,n=h){return r=>c(i=>{let a=0,o,s;function c(){o=r.subscribe({complete:i.complete,error(r){if(a<e){let e=a++;t===void 0?c():D(()=>{let r=typeof t==`function`?t(e):t;s=n.delay(c,Math.max(0,r))},i.error)}else i.error?.(r)},next:i.next})}return c(),()=>{s?.(),o?.()}})}function _e(e){return t=>c(n=>{let i=!1,a=()=>{if(!i){i=!0;try{e()}catch(e){r(`finalize: cleanup callback threw`,e)}}},o=t.subscribe({complete(){a(),n.complete?.()},error(e){a(),n.error?.(e)},next:n.next});return()=>{a(),o()}})}function q(e){return e.reason??new DOMException(`Aborted`,`AbortError`)}function ve(e,t){return new Promise((n,r)=>{if(t?.aborted){r(q(t));return}let i,a=()=>{},o=()=>{a(),r(q(t))};t?.addEventListener(`abort`,o,{once:!0}),a=e.subscribe({complete(){t?.removeEventListener(`abort`,o),n(i)},error(e){t?.removeEventListener(`abort`,o),r(e)},next(e){i=e}})})}function J(e,t){return new Promise((n,r)=>{let i=[];if(t?.aborted){n(i);return}let a=()=>{},o=()=>{a(),n(i)};t?.addEventListener(`abort`,o,{once:!0}),a=e.subscribe({complete(){t?.removeEventListener(`abort`,o),n(i)},error(e){t?.removeEventListener(`abort`,o),r(e)},next(e){i.push(e)}})})}function ye(...e){return t=>e.reduce((e,t)=>t(e),t)}var Y=()=>{};function X(){let e=new AbortController,t=new Set;function n(e){for(let n of[...t])try{e(n)}catch(e){r(`Subscriber threw during broadcast`,e)}}function i(n,r){let i=typeof n==`function`?{next:n}:n;if(e.signal.aborted||r?.aborted){try{i.complete?.()}catch{}return Y}t.add(i);let a=()=>{t.delete(i),r&&r.removeEventListener(`abort`,a)};return r&&r.addEventListener(`abort`,a,{once:!0}),a}return{ac:e,broadcast:n,doSubscribe:i,subscribers:t}}function Z(e,t,n,r){let i=typeof n==`function`?{next:n}:n;if(e.ac.signal.aborted||r?.aborted){try{i.complete?.()}catch{}return Y}if(t(),e.ac.signal.aborted){try{i.complete?.()}catch{}return Y}return e.doSubscribe(i,r)}function Q(e){return()=>{e.ac.signal.aborted||(e.ac.abort(),e.broadcast(e=>e.complete?.()),e.subscribers.clear())}}function $(e){return t=>{e.ac.signal.aborted||(e.ac.abort(),e.broadcast(e=>e.error?.(t)),e.subscribers.clear())}}function be(){let e=X(),t=Q(e),n={complete:t,get disposalSignal(){return e.ac.signal},dispose:t,get disposed(){return e.ac.signal.aborted},emit(t){e.ac.signal.aborted||e.broadcast(e=>e.next(t))},fail:$(e),pipe:o(()=>n),subscribe(t,n){return e.doSubscribe(t,n)},[Symbol.asyncIterator](){return a(t=>e.doSubscribe(t))},[Symbol.dispose](){t()}};return n}function xe(e){let t=X(),n=Q(t),i=$(t),s=e,c={complete:n,get disposalSignal(){return t.ac.signal},dispose:n,get disposed(){return t.ac.signal.aborted},emit(e){t.ac.signal.aborted||(s=e,t.broadcast(t=>t.next(e)))},fail:i,pipe:o(()=>c),subscribe(e,n){return Z(t,()=>{let t=typeof e==`function`?{next:e}:e;try{t.next(s)}catch(e){r(`BehaviorSubject: subscriber threw during initial replay`,e)}},e,n)},[Symbol.asyncIterator](){return a(e=>Z(t,()=>{try{e.next(s)}catch(e){r(`BehaviorSubject: subscriber threw during initial replay`,e)}},e))},[Symbol.dispose](){n()},get value(){return s}};return c}function Se(e){let t=X(),i=Q(t),s=$(t),{clamped:c,value:l}=L(e),u=[];c&&n(`createReplaySubject: bufferSize must be a finite integer >= 1, got ${e} — clamped to ${l}`);let d={get buffer(){return u},complete:i,get disposalSignal(){return t.ac.signal},dispose:i,get disposed(){return t.ac.signal.aborted},emit(e){t.ac.signal.aborted||(u.length>=l&&u.shift(),u.push(e),t.broadcast(t=>t.next(e)))},fail:s,pipe:o(()=>d),subscribe(e,n){return Z(t,()=>{let t=typeof e==`function`?{next:e}:e;for(let e of u)try{t.next(e)}catch(e){r(`ReplaySubject: subscriber threw during replay`,e)}},e,n)},[Symbol.asyncIterator](){return a(e=>Z(t,()=>{for(let t of u)try{e.next(t)}catch(e){r(`ReplaySubject: subscriber threw during replay`,e)}},e))},[Symbol.dispose](){i()}};return d}exports.DEFAULT_SCHEDULER=h,exports.FluxError=g,exports.FluxTimeoutError=_,exports.bufferCount=G,exports.catchError=he,exports.combineLatest=ie,exports.concat=re,exports.concatMap=H,exports.createBehaviorSubject=xe,exports.createReplaySubject=Se,exports.createSubject=be,exports.debounce=M,exports.delay=pe,exports.distinctUntilChanged=U,exports.empty=C,exports.filter=z,exports.finalize=_e,exports.first=F,exports.flatMap=ce,exports.flow=ye,exports.flux=c,exports.forkJoin=v,exports.from=b,exports.fromBus=d,exports.fromEvent=E,exports.fromPresence=te,exports.fromPulse=ee,exports.fromQuery=u,exports.fromSignal=p,exports.fromSse=l,exports.interval=x,exports.last=I,exports.map=R,exports.merge=ne,exports.never=w,exports.of=y,exports.pairwise=le,exports.race=oe,exports.retry=ge,exports.sample=P,exports.scan=B,exports.share=ue,exports.shareReplay=de,exports.skip=k,exports.startWith=W,exports.switchMap=V,exports.take=O,exports.takeUntil=A,exports.takeWhile=j,exports.tap=fe,exports.throttle=N,exports.throwError=T,exports.timeout=me,exports.timer=S,exports.toArray=J,exports.toBus=f,exports.toPromise=ve,exports.toSignal=m,exports.withLatestFrom=ae,exports.zip=se;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){if(!Number.isInteger(e.capacity)||e.capacity<1)throw RangeError(`Async iterable capacity must be a positive integer`)}function t(t,n){e(n);let r=new AbortController,i=[],a={kind:`open`,queue:[]},o=()=>n.signal?.removeEventListener(`abort`,u),s=()=>{for(;i.length>0;)i.shift().resolve({done:!0,value:void 0})},c=()=>{a.kind===`open`&&(a.kind=`complete`,o(),s())},l=e=>{if(a.kind===`open`)for(a={kind:`error`,queue:a.queue,reason:e},r.abort(),o();i.length>0;)i.shift().reject(e)},u=()=>{r.abort(),o(),a={kind:`returned`},s()},d={complete:c,error:l,next(e){if(a.kind!==`open`)return;let t=i.shift();if(t){t.resolve({done:!1,value:e});return}if(a.queue.length<n.capacity){a.queue.push(e);return}n.overflow===`drop-oldest`?(a.queue.shift(),a.queue.push(e)):n.overflow===`error`&&l(RangeError(`Async iterable buffer capacity exceeded`))}};return n.signal?.aborted?u():n.signal?.addEventListener(`abort`,u,{once:!0}),t.subscribe(d,{signal:r.signal}),{next(){return a.kind===`returned`?Promise.resolve({done:!0,value:void 0}):a.queue.length>0?Promise.resolve({done:!1,value:a.queue.shift()}):a.kind===`error`?Promise.reject(a.reason):a.kind===`complete`?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>i.push({reject:t,resolve:e}))},return(){return u(),Promise.resolve({done:!0,value:void 0})},[Symbol.asyncIterator](){return this}}}function n(e,n){return{[Symbol.asyncIterator](){return t(e,n)}}}function r(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function i(e,t){let n=typeof e==`function`?{next:e}:e,i=new AbortController,a=!1,o,s=()=>{if(!a){a=!0,i.abort(),t?.removeEventListener(`abort`,s);try{o?.()}catch(e){r(e)}}};return t?.aborted?s():t?.addEventListener(`abort`,s,{once:!0}),{add:e=>{if(e){if(a){try{e()}catch(e){r(e)}return}o=e}},signal:i.signal,sink:{complete(){if(!a){try{n.complete?.()}catch(e){r(e)}s()}},error(e){if(!a){if(n.error)try{n.error(e)}catch(e){r(e)}else r(e);s()}},next(e){if(!a)try{n.next(e)}catch(e){s(),r(e)}}},subscription:{get closed(){return a},[Symbol.dispose]:s,unsubscribe:s}}}function a(e){return{subscribe(t,n){let r=i(t,n?.signal);if(r.subscription.closed)return r.subscription;try{r.add(e(r.sink,r.signal))}catch(e){r.sink.error(e)}return r.subscription}}}var o=class e extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}static is(t){return t instanceof e}},s=class extends o{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};function c(e,t,n){return e.subscribe(t,{signal:n})}function l(...e){return a((t,n)=>{if(e.length===0){t.complete();return}let r=0,i=[];for(let a of e){let o=c(a,{complete(){r++,r===e.length&&t.complete()},error:t.error,next:t.next},n);if(i.push(o),n.aborted)break}return()=>i.forEach(e=>e.unsubscribe())})}function u(...e){return a((t,n)=>{let r=0,i,a=()=>{if(n.aborted)return;let o=e[r++];if(!o){t.complete();return}let s=c(o,{complete:a,error:t.error,next:t.next},n);i=s.closed?void 0:s};return a(),()=>i?.unsubscribe()})}function d(...e){return a((t,n)=>{if(e.length===0){t.complete();return}let r=Array(e.length),i=Array(e.length).fill(!1),a=[],o=0;for(let[s,l]of e.entries()){if(n.aborted)break;let u=c(l,{complete(){if(!i[s]){t.complete();return}o++,o===e.length&&t.complete()},error:t.error,next(e){r[s]=e,i[s]=!0,i.every(Boolean)&&t.next([...r])}},n);a.push(u)}return()=>a.forEach(e=>e.unsubscribe())})}var f={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}};function p(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function m(...e){return a(t=>{for(let n of e)t.next(n);t.complete()})}function h(e){return Symbol.asyncIterator in Object(e)?a((t,n)=>{let r=e[Symbol.asyncIterator]();return(async()=>{try{for(;!n.aborted;){let e=await r.next();if(e.done){t.complete();return}t.next(e.value)}}catch(e){n.aborted||t.error(e)}})(),()=>{r.return?.()}}):typeof e.then==`function`?a((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):a((t,n)=>{let r=e[Symbol.iterator]();try{for(;!n.aborted;){let e=r.next();if(e.done){t.complete();return}t.next(e.value)}}catch(e){t.error(e)}return()=>{r.return?.()}})}function g(e,t){return a(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function _(e){return p(e.every,`Interval duration`),a(t=>{let n=0;return f.repeat(()=>t.next(n++),e.every)})}function v(e){return p(e.delay,`Timer delay`),e.interval!==void 0&&p(e.interval,`Timer interval`),a(t=>{let n=0,r,i=f.delay(()=>{if(t.next(n++),e.interval===void 0){t.complete();return}r=f.repeat(()=>t.next(n++),e.interval)},e.delay);return()=>{i(),r?.()}})}function y(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function b(e){if(!Number.isInteger(e)||e<0)throw RangeError(`take count must be a non-negative integer`);return t=>a((n,r)=>{if(e===0){n.complete();return}let i=0,a={};return a.current=c(t,{complete:n.complete,error:n.error,next(t){n.next(t),i++,i===e&&(n.complete(),a.current?.unsubscribe())}},r),()=>a.current?.unsubscribe()})}function x(e){return t=>a((n,r)=>{let i,a,o=()=>{},s=()=>{i?.unsubscribe(),a?.unsubscribe(),n.complete()};if(e instanceof AbortSignal){if(e.aborted){n.complete();return}e.addEventListener(`abort`,s,{once:!0}),o=()=>e.removeEventListener(`abort`,s)}else a=c(e,{error:n.error,next:s},r);return r.aborted||(i=c(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{o(),i?.unsubscribe(),a?.unsubscribe()}})}function S(e){return y(e.for,`Debounce duration`),t=>a((n,r)=>{let i,a,o=!1,s=()=>{i=void 0,o&&(o=!1,n.next(a))},l=c(t,{complete(){i?.(),s(),n.complete()},error:n.error,next(t){a=t,o=!0,i?.(),i=f.delay(s,e.for)}},r);return()=>{i?.(),l.unsubscribe()}})}function C(e){return y(e.after,`Timeout duration`),t=>a((n,r)=>{let i,a=()=>{i=f.delay(()=>n.error(new s(e.after)),e.after)};a();let o=c(t,{complete(){i(),n.complete()},error(e){i(),n.error(e)},next(e){i(),a(),n.next(e)}},r);return()=>{i(),o.unsubscribe()}})}function w(e,t){try{e()}catch(e){t(e)}}function T(e){return t=>a((n,r)=>c(t,{complete:n.complete,error:n.error,next(t){w(()=>n.next(e(t)),n.error)}},r).unsubscribe)}function E(e){return t=>a((n,r)=>c(t,{complete:n.complete,error:n.error,next(t){w(()=>{e(t)&&n.next(t)},n.error)}},r).unsubscribe)}function D(e,t){return n=>a((r,i)=>{let a=t;return c(n,{complete:r.complete,error:r.error,next(t){w(()=>{a=e(a,t),r.next(a)},r.error)}},i).unsubscribe})}function O(e){return t=>a((n,r)=>{let i=!1,a,o=()=>{i&&!a&&n.complete()},s=c(t,{complete(){i=!0,o()},error:n.error,next(t){a?.unsubscribe(),a=void 0,w(()=>{let i=c(e(t),{complete(){a=void 0,o()},error:n.error,next:n.next},r);a=i.closed?void 0:i},n.error)}},r);return()=>{s.unsubscribe(),a?.unsubscribe()}})}function k(e){return t=>a((n,r)=>{let i=!1,a=new Set,o=()=>{i&&a.size===0&&n.complete()},s=c(t,{complete(){i=!0,o()},error:n.error,next(t){w(()=>{let i={};i.current=c(e(t),{complete(){i.current&&a.delete(i.current),o()},error:n.error,next:n.next},r),i.current.closed||a.add(i.current)},n.error)}},r);return()=>{s.unsubscribe();for(let e of a)e.unsubscribe()}})}function A(e,t){if(!Number.isInteger(t.capacity)||t.capacity<1)throw RangeError(`concatMap capacity must be a positive integer`);return n=>a((r,i)=>{let a=[],o=!1,s,l={},u=()=>{if(s||a.length===0){o&&!s&&a.length===0&&r.complete();return}let t=a.shift();w(()=>{let n=c(e(t),{complete(){s=void 0,u()},error:r.error,next:r.next},i);s=n.closed?void 0:n,s||u()},r.error)};return l.current=c(n,{complete(){o=!0,u()},error:r.error,next(e){if(a.length===t.capacity){l.current?.unsubscribe(),r.error(RangeError(`concatMap buffer capacity exceeded`));return}a.push(e),u()}},i),()=>{l.current?.unsubscribe(),s?.unsubscribe(),a.length=0}})}function j(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function M(e){if(!Number.isInteger(e.attempts)||e.attempts<0)throw RangeError(`retry attempts must be a non-negative integer`);return t=>a((n,r)=>{let i=0,a,o,s=()=>{if(r.aborted)return;let l=c(t,{complete:n.complete,error(t){if(i===e.attempts){n.error(t);return}let a=i++,c;if(w(()=>{c=typeof e.delay==`function`?e.delay(a):e.delay},n.error),!r.aborted){if(c!==void 0&&(!Number.isFinite(c)||c<0)){n.error(RangeError(`retry delay must be a finite number greater than or equal to zero`));return}c===void 0||c===0?queueMicrotask(s):o=f.delay(s,c)}},next:n.next},r);l.closed||(a=l)};return s(),()=>{o?.(),a?.unsubscribe()}})}function N(e,t){return new Promise((n,r)=>{let i=new AbortController,a=()=>{i.abort(),r(j())};if(t?.signal?.aborted){a();return}t?.signal?.addEventListener(`abort`,a,{once:!0}),c(e,{error(e){t?.signal?.removeEventListener(`abort`,a),r(e)},next(e){t?.signal?.removeEventListener(`abort`,a),i.abort(),n(e)}},i.signal)})}function P(e,t){return new Promise((n,r)=>{let i=()=>r(j()),a;if(t?.signal?.aborted){i();return}t?.signal?.addEventListener(`abort`,i,{once:!0}),c(e,{complete(){t?.signal?.removeEventListener(`abort`,i),n(a)},error(e){t?.signal?.removeEventListener(`abort`,i),r(e)},next(e){a=e}},t?.signal??new AbortController().signal)})}function F(e,t){if(!Number.isInteger(t.maxItems)||t.maxItems<0)throw RangeError(`toArray maxItems must be a non-negative integer`);return new Promise((n,r)=>{let i=new AbortController,a=[],o=()=>{i.abort(),r(j())};if(t.signal?.aborted){o();return}t.signal?.addEventListener(`abort`,o,{once:!0}),c(e,{complete(){t.signal?.removeEventListener(`abort`,o),n(a)},error(e){t.signal?.removeEventListener(`abort`,o),r(e)},next(e){if(a.length===t.maxItems){t.signal?.removeEventListener(`abort`,o),i.abort(),r(RangeError(`toArray maxItems exceeded`));return}a.push(e)}},i.signal)})}function I(e,t){return t.reduce((e,t)=>t(e),e)}function L(e,...t){return I(e,t)}exports.FluxError=o,exports.FluxTimeoutError=s,exports.combineLatest=d,exports.concat=u,exports.concatMap=A,exports.debounce=S,exports.filter=E,exports.first=N,exports.from=h,exports.fromEvent=g,exports.interval=_,exports.last=P,exports.map=T,exports.merge=l,exports.mergeMap=k,exports.of=m,exports.pipe=L,exports.retry=M,exports.scan=D,exports.stream=a,exports.switchMap=O,exports.take=b,exports.takeUntil=x,exports.timeout=C,exports.timer=v,exports.toArray=F,exports.toAsyncIterable=n;
2
2
  //# sourceMappingURL=flux.cjs.map