@vielzeug/flux 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/adapters/ripple.cjs +1 -1
  2. package/dist/adapters/ripple.cjs.map +1 -1
  3. package/dist/adapters/ripple.d.ts +2 -0
  4. package/dist/adapters/ripple.d.ts.map +1 -1
  5. package/dist/adapters/ripple.js +3 -0
  6. package/dist/adapters/ripple.js.map +1 -1
  7. package/dist/channel.cjs +2 -0
  8. package/dist/channel.cjs.map +1 -0
  9. package/dist/{subject.d.ts → channel.d.ts} +1 -1
  10. package/dist/{subject.d.ts.map → channel.d.ts.map} +1 -1
  11. package/dist/{subject.js → channel.js} +5 -4
  12. package/dist/channel.js.map +1 -0
  13. package/dist/flux.cjs +1 -1
  14. package/dist/flux.cjs.map +1 -1
  15. package/dist/flux.iife.js +1 -1
  16. package/dist/flux.iife.js.map +1 -1
  17. package/dist/flux.js +1 -1
  18. package/dist/flux.js.map +1 -1
  19. package/dist/operators/combination.cjs +1 -1
  20. package/dist/operators/combination.cjs.map +1 -1
  21. package/dist/operators/combination.d.ts.map +1 -1
  22. package/dist/operators/combination.js +6 -2
  23. package/dist/operators/combination.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.map +1 -1
  27. package/dist/pipe.js +3 -4
  28. package/dist/pipe.js.map +1 -1
  29. package/dist/subjects.cjs +1 -1
  30. package/dist/subjects.d.ts +2 -2
  31. package/dist/subjects.js +1 -1
  32. package/package.json +7 -7
  33. package/dist/_pipe.cjs +0 -2
  34. package/dist/_pipe.cjs.map +0 -1
  35. package/dist/_pipe.d.ts +0 -3
  36. package/dist/_pipe.d.ts.map +0 -1
  37. package/dist/_pipe.js +0 -8
  38. package/dist/_pipe.js.map +0 -1
  39. package/dist/subject.cjs +0 -2
  40. package/dist/subject.cjs.map +0 -1
  41. package/dist/subject.js.map +0 -1
@@ -1,2 +1,2 @@
1
- const e=require("../core.cjs");require("../_dev.cjs");let t=require("@vielzeug/ripple");function n(t){return e.stream(e=>(e.next(t.value),t.subscribe(()=>e.next(t.value))))}function r(e,n){let r=(0,t.signal)(n.initial),i=new AbortController,a={},o=()=>{i.signal.aborted||(i.abort(),n.signal?.removeEventListener(`abort`,o),a.current?.unsubscribe())};return n.signal?.aborted&&i.abort(),a.current=e.subscribe({complete:o,error(e){o()},next(e){r.value=e}},{signal:i.signal}),i.signal.aborted||n.signal?.addEventListener(`abort`,o,{once:!0}),{get disposalSignal(){return i.signal},dispose:o,get disposed(){return i.signal.aborted},get signal(){return r},[Symbol.dispose]:o,get value(){return r.value}}}exports.fromSignal=n,exports.toSignal=r;
1
+ const e=require("../core.cjs");require("../_dev.cjs");let t=require("@vielzeug/ripple");function n(t){return e.stream(e=>(e.next(t.value),t.subscribe(()=>e.next(t.value))))}function r(e,n){let r=(0,t.signal)(n.initial),i=new AbortController,a={},o=()=>{i.signal.aborted||(i.abort(),n.signal?.removeEventListener(`abort`,o),a.current?.unsubscribe())};return n.signal?.aborted&&i.abort(),a.current=e.subscribe({complete:o,error(e){if(n.onError)try{n.onError(e)}catch{}o()},next(e){r.value=e}},{signal:i.signal}),i.signal.aborted||n.signal?.addEventListener(`abort`,o,{once:!0}),{get disposalSignal(){return i.signal},dispose:o,get disposed(){return i.signal.aborted},get signal(){return r},[Symbol.dispose]:o,get value(){return r.value}}}exports.fromSignal=n,exports.toSignal=r;
2
2
  //# sourceMappingURL=ripple.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.cjs","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\nimport { error } from '../_dev';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\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":"wFAqBA,SAAgB,EAAc,EAAgC,CAC5D,OAAO,EAAA,OAAQ,IACb,EAAK,KAAK,EAAO,KAAK,EAEf,EAAO,cAAgB,EAAK,KAAK,EAAO,KAAK,CAAC,EACtD,CACH,CAEA,SAAgB,EAAY,EAAmB,EAA+C,CAC5F,IAAM,GAAA,EAAS,EAAA,OAAA,CAAO,EAAQ,OAAO,EAC/B,EAAa,IAAI,gBACjB,EAA8C,CAAC,EAE/C,MAAsB,CACtB,EAAW,OAAO,UAEtB,EAAW,MAAM,EACjB,EAAQ,QAAQ,oBAAoB,QAAS,CAAO,EACpD,EAAgB,SAAS,YAAY,EACvC,EAoBA,OAlBI,EAAQ,QAAQ,SAAS,EAAW,MAAM,EAE9C,EAAgB,QAAU,EAAO,UAC/B,CACE,SAAU,EACV,MAAM,EAAQ,CAEZ,EAAQ,CACV,EACA,KAAK,EAAO,CACV,EAAO,MAAQ,CACjB,CACF,EACA,CAAE,OAAQ,EAAW,MAAO,CAC9B,EAEK,EAAW,OAAO,SAAS,EAAQ,QAAQ,iBAAiB,QAAS,EAAS,CAAE,KAAM,EAAK,CAAC,EAE1F,CACL,IAAI,gBAA8B,CAChC,OAAO,EAAW,MACpB,EACA,UACA,IAAI,UAAoB,CACtB,OAAO,EAAW,OAAO,OAC3B,EACA,IAAI,QAAsB,CACxB,OAAO,CACT,GACC,OAAO,SAAU,EAClB,IAAI,OAAW,CACb,OAAO,EAAO,KAChB,CACF,CACF"}
1
+ {"version":3,"file":"ripple.cjs","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\nimport { error } from '../_dev';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\nexport type ToSignalOptions<T> = {\n initial: T;\n /** Called when the source stream errors. If omitted, the error is logged via `console.error` (dev-only) and the binding disposes — the signal freezes at its last value. */\n onError?: (reason: unknown) => void;\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 if (options.onError) {\n try {\n options.onError(reason);\n } catch (callbackError) {\n error('toSignal onError callback threw', callbackError);\n }\n } else {\n error('toSignal source error', reason);\n }\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":"wFAuBA,SAAgB,EAAc,EAAgC,CAC5D,OAAO,EAAA,OAAQ,IACb,EAAK,KAAK,EAAO,KAAK,EAEf,EAAO,cAAgB,EAAK,KAAK,EAAO,KAAK,CAAC,EACtD,CACH,CAEA,SAAgB,EAAY,EAAmB,EAA+C,CAC5F,IAAM,GAAA,EAAS,EAAA,OAAA,CAAO,EAAQ,OAAO,EAC/B,EAAa,IAAI,gBACjB,EAA8C,CAAC,EAE/C,MAAsB,CACtB,EAAW,OAAO,UAEtB,EAAW,MAAM,EACjB,EAAQ,QAAQ,oBAAoB,QAAS,CAAO,EACpD,EAAgB,SAAS,YAAY,EACvC,EA4BA,OA1BI,EAAQ,QAAQ,SAAS,EAAW,MAAM,EAE9C,EAAgB,QAAU,EAAO,UAC/B,CACE,SAAU,EACV,MAAM,EAAQ,CACZ,GAAI,EAAQ,QACV,GAAI,CACF,EAAQ,QAAQ,CAAM,CACxB,MAAwB,CAExB,CAIF,EAAQ,CACV,EACA,KAAK,EAAO,CACV,EAAO,MAAQ,CACjB,CACF,EACA,CAAE,OAAQ,EAAW,MAAO,CAC9B,EAEK,EAAW,OAAO,SAAS,EAAQ,QAAQ,iBAAiB,QAAS,EAAS,CAAE,KAAM,EAAK,CAAC,EAE1F,CACL,IAAI,gBAA8B,CAChC,OAAO,EAAW,MACpB,EACA,UACA,IAAI,UAAoB,CACtB,OAAO,EAAW,OAAO,OAC3B,EACA,IAAI,QAAsB,CACxB,OAAO,CACT,GACC,OAAO,SAAU,EAClB,IAAI,OAAW,CACb,OAAO,EAAO,KAChB,CACF,CACF"}
@@ -2,6 +2,8 @@ import type { Readable } from '@vielzeug/ripple';
2
2
  import type { Stream } from '../types';
3
3
  export type ToSignalOptions<T> = {
4
4
  initial: T;
5
+ /** Called when the source stream errors. If omitted, the error is logged via `console.error` (dev-only) and the binding disposes — the signal freezes at its last value. */
6
+ onError?: (reason: unknown) => void;
5
7
  signal?: AbortSignal;
6
8
  };
7
9
  export type SignalBinding<T> = {
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../src/adapters/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAErD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAM5D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CA+C5F"}
1
+ {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../src/adapters/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAErD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,4KAA4K;IAC5K,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAM5D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAuD5F"}
@@ -12,6 +12,9 @@ function r(e, n) {
12
12
  return n.signal?.aborted && i.abort(), a.current = e.subscribe({
13
13
  complete: o,
14
14
  error(e) {
15
+ if (n.onError) try {
16
+ n.onError(e);
17
+ } catch {}
15
18
  o();
16
19
  },
17
20
  next(e) {
@@ -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';\nimport { error } from '../_dev';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\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":";;;;AAqBA,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"}
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';\nimport { error } from '../_dev';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\nexport type ToSignalOptions<T> = {\n initial: T;\n /** Called when the source stream errors. If omitted, the error is logged via `console.error` (dev-only) and the binding disposes — the signal freezes at its last value. */\n onError?: (reason: unknown) => void;\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 if (options.onError) {\n try {\n options.onError(reason);\n } catch (callbackError) {\n error('toSignal onError callback threw', callbackError);\n }\n } else {\n error('toSignal source error', reason);\n }\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;CA4BA,OA1BI,EAAQ,QAAQ,WAAS,EAAW,MAAM,GAE9C,EAAgB,UAAU,EAAO,UAC/B;EACE,UAAU;EACV,MAAM,GAAQ;GACZ,IAAI,EAAQ,SACV,IAAI;IACF,EAAQ,QAAQ,CAAM;GACxB,QAAwB,CAExB;GAIF,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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./_numeric.cjs"),t=require("./core.cjs");function n(t){let n=`initial`in t,r=t.replay??+!!n;if(e.assertNonNegativeInteger(r,`Channel replay`),n&&r===0)throw RangeError(`Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped`);return r}function r(e={}){let r=n(e),i=new AbortController,a=new Set,o=[];`initial`in e&&r>0&&o.push(e.initial);let s=t.stream(e=>{for(let t of o)e.next(t);if(i.signal.aborted){e.complete();return}return a.add(e),()=>a.delete(e)}),c=()=>{if(!i.signal.aborted){i.abort();for(let e of[...a])e.complete();a.clear()}};return{get disposalSignal(){return i.signal},dispose:c,get disposed(){return i.signal.aborted},send(e){if(!i.signal.aborted){r>0&&(o.length===r&&o.shift(),o.push(e));for(let t of[...a])t.next(e)}},stream:s,[Symbol.dispose]:c}}exports.createChannel=r;
2
+ //# sourceMappingURL=channel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.cjs","names":[],"sources":["../src/channel.ts"],"sourcesContent":["import { assertNonNegativeInteger } from './_numeric';\nimport { stream } from './core';\nimport type { Sink, Stream } from './types';\n\nexport type ChannelOptions<T> = {\n initial?: T;\n replay?: number;\n};\n\nexport type Channel<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n send(value: T): void;\n readonly stream: Stream<T>;\n};\n\nfunction replayCapacity<T>(options: ChannelOptions<T>): number {\n const hasInitial = 'initial' in options;\n const capacity = options.replay ?? (hasInitial ? 1 : 0);\n\n assertNonNegativeInteger(capacity, 'Channel replay');\n\n if (hasInitial && capacity === 0) {\n throw new RangeError(\n 'Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped',\n );\n }\n\n return capacity;\n}\n\n/** Channels own mutable multicast state; disposal is their only terminal event. */\nexport function createChannel<T>(options: ChannelOptions<T> = {}): Channel<T> {\n const capacity = replayCapacity(options);\n const controller = new AbortController();\n const listeners = new Set<Sink<T>>();\n const replay: T[] = [];\n\n if ('initial' in options && capacity > 0) replay.push(options.initial as T);\n\n const source = stream<T>((sink) => {\n for (const value of replay) sink.next(value);\n\n if (controller.signal.aborted) {\n sink.complete();\n\n return;\n }\n\n listeners.add(sink);\n\n return () => listeners.delete(sink);\n });\n\n const dispose = (): void => {\n if (controller.signal.aborted) return;\n\n controller.abort();\n\n for (const listener of [...listeners]) listener.complete();\n\n listeners.clear();\n };\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 send(value: T): void {\n if (controller.signal.aborted) return;\n\n if (capacity > 0) {\n if (replay.length === capacity) replay.shift();\n\n replay.push(value);\n }\n\n for (const listener of [...listeners]) listener.next(value);\n },\n stream: source,\n [Symbol.dispose]: dispose,\n };\n}\n"],"mappings":"0DAkBA,SAAS,EAAkB,EAAoC,CAC7D,IAAM,EAAa,YAAa,EAC1B,EAAW,EAAQ,QAAW,KAIpC,GAFA,EAAA,yBAAyB,EAAU,gBAAgB,EAE/C,GAAc,IAAa,EAC7B,MAAU,WACR,sGACF,EAGF,OAAO,CACT,CAGA,SAAgB,EAAiB,EAA6B,CAAC,EAAe,CAC5E,IAAM,EAAW,EAAe,CAAO,EACjC,EAAa,IAAI,gBACjB,EAAY,IAAI,IAChB,EAAc,CAAC,EAEjB,YAAa,GAAW,EAAW,GAAG,EAAO,KAAK,EAAQ,OAAY,EAE1E,IAAM,EAAS,EAAA,OAAW,GAAS,CACjC,IAAK,IAAM,KAAS,EAAQ,EAAK,KAAK,CAAK,EAE3C,GAAI,EAAW,OAAO,QAAS,CAC7B,EAAK,SAAS,EAEd,MACF,CAIA,OAFA,EAAU,IAAI,CAAI,MAEL,EAAU,OAAO,CAAI,CACpC,CAAC,EAEK,MAAsB,CACtB,MAAW,OAAO,QAEtB,GAAW,MAAM,EAEjB,IAAK,IAAM,IAAY,CAAC,GAAG,CAAS,EAAG,EAAS,SAAS,EAEzD,EAAU,MAAM,CAJC,CAKnB,EAEA,MAAO,CACL,IAAI,gBAA8B,CAChC,OAAO,EAAW,MACpB,EACA,UACA,IAAI,UAAoB,CACtB,OAAO,EAAW,OAAO,OAC3B,EACA,KAAK,EAAgB,CACf,MAAW,OAAO,QAEtB,CAAI,EAAW,IACT,EAAO,SAAW,GAAU,EAAO,MAAM,EAE7C,EAAO,KAAK,CAAK,GAGnB,IAAK,IAAM,IAAY,CAAC,GAAG,CAAS,EAAG,EAAS,KAAK,CAAK,CAF1D,CAGF,EACA,OAAQ,GACP,OAAO,SAAU,CACpB,CACF"}
@@ -13,4 +13,4 @@ export type Channel<T> = {
13
13
  };
14
14
  /** Channels own mutable multicast state; disposal is their only terminal event. */
15
15
  export declare function createChannel<T>(options?: ChannelOptions<T>): Channel<T>;
16
- //# sourceMappingURL=subject.d.ts.map
16
+ //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../src/subject.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAUF,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAE,cAAc,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAsD5E"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAiBF,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAE,cAAc,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAsD5E"}
@@ -1,9 +1,10 @@
1
1
  import { assertNonNegativeInteger as e } from "./_numeric.js";
2
2
  import { stream as t } from "./core.js";
3
- //#region src/subject.ts
3
+ //#region src/channel.ts
4
4
  function n(t) {
5
- let n = t.replay ?? +("initial" in t);
6
- return e(n, "Channel replay"), n;
5
+ let n = "initial" in t, r = t.replay ?? +!!n;
6
+ if (e(r, "Channel replay"), n && r === 0) throw RangeError("Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped");
7
+ return r;
7
8
  }
8
9
  function r(e = {}) {
9
10
  let r = n(e), i = new AbortController(), a = /* @__PURE__ */ new Set(), o = [];
@@ -43,4 +44,4 @@ function r(e = {}) {
43
44
  //#endregion
44
45
  export { r as createChannel };
45
46
 
46
- //# sourceMappingURL=subject.js.map
47
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","names":[],"sources":["../src/channel.ts"],"sourcesContent":["import { assertNonNegativeInteger } from './_numeric';\nimport { stream } from './core';\nimport type { Sink, Stream } from './types';\n\nexport type ChannelOptions<T> = {\n initial?: T;\n replay?: number;\n};\n\nexport type Channel<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n send(value: T): void;\n readonly stream: Stream<T>;\n};\n\nfunction replayCapacity<T>(options: ChannelOptions<T>): number {\n const hasInitial = 'initial' in options;\n const capacity = options.replay ?? (hasInitial ? 1 : 0);\n\n assertNonNegativeInteger(capacity, 'Channel replay');\n\n if (hasInitial && capacity === 0) {\n throw new RangeError(\n 'Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped',\n );\n }\n\n return capacity;\n}\n\n/** Channels own mutable multicast state; disposal is their only terminal event. */\nexport function createChannel<T>(options: ChannelOptions<T> = {}): Channel<T> {\n const capacity = replayCapacity(options);\n const controller = new AbortController();\n const listeners = new Set<Sink<T>>();\n const replay: T[] = [];\n\n if ('initial' in options && capacity > 0) replay.push(options.initial as T);\n\n const source = stream<T>((sink) => {\n for (const value of replay) sink.next(value);\n\n if (controller.signal.aborted) {\n sink.complete();\n\n return;\n }\n\n listeners.add(sink);\n\n return () => listeners.delete(sink);\n });\n\n const dispose = (): void => {\n if (controller.signal.aborted) return;\n\n controller.abort();\n\n for (const listener of [...listeners]) listener.complete();\n\n listeners.clear();\n };\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 send(value: T): void {\n if (controller.signal.aborted) return;\n\n if (capacity > 0) {\n if (replay.length === capacity) replay.shift();\n\n replay.push(value);\n }\n\n for (const listener of [...listeners]) listener.next(value);\n },\n stream: source,\n [Symbol.dispose]: dispose,\n };\n}\n"],"mappings":";;;AAkBA,SAAS,EAAkB,GAAoC;CAC7D,IAAM,IAAa,aAAa,GAC1B,IAAW,EAAQ,UAAW;CAIpC,IAFA,EAAyB,GAAU,gBAAgB,GAE/C,KAAc,MAAa,GAC7B,MAAU,WACR,sGACF;CAGF,OAAO;AACT;AAGA,SAAgB,EAAiB,IAA6B,CAAC,GAAe;CAC5E,IAAM,IAAW,EAAe,CAAO,GACjC,IAAa,IAAI,gBAAgB,GACjC,oBAAY,IAAI,IAAa,GAC7B,IAAc,CAAC;CAErB,AAAI,aAAa,KAAW,IAAW,KAAG,EAAO,KAAK,EAAQ,OAAY;CAE1E,IAAM,IAAS,GAAW,MAAS;EACjC,KAAK,IAAM,KAAS,GAAQ,EAAK,KAAK,CAAK;EAE3C,IAAI,EAAW,OAAO,SAAS;GAC7B,EAAK,SAAS;GAEd;EACF;EAIA,OAFA,EAAU,IAAI,CAAI,SAEL,EAAU,OAAO,CAAI;CACpC,CAAC,GAEK,UAAsB;EACtB,OAAW,OAAO,SAEtB;KAAW,MAAM;GAEjB,KAAK,IAAM,KAAY,CAAC,GAAG,CAAS,GAAG,EAAS,SAAS;GAEzD,EAAU,MAAM;EAJC;CAKnB;CAEA,OAAO;EACL,IAAI,iBAA8B;GAChC,OAAO,EAAW;EACpB;EACA;EACA,IAAI,WAAoB;GACtB,OAAO,EAAW,OAAO;EAC3B;EACA,KAAK,GAAgB;GACf,OAAW,OAAO,SAEtB;IAAI,IAAW,MACT,EAAO,WAAW,KAAU,EAAO,MAAM,GAE7C,EAAO,KAAK,CAAK;IAGnB,KAAK,IAAM,KAAY,CAAC,GAAG,CAAS,GAAG,EAAS,KAAK,CAAK;GAF1D;EAGF;EACA,QAAQ;GACP,OAAO,UAAU;CACpB;AACF"}
package/dist/flux.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e,t){if(!Number.isInteger(e)||e<0)throw RangeError(`${t} must be a non-negative integer`)}function t(e,t){if(!Number.isInteger(e)||e<1)throw RangeError(`${t} must be a positive integer`)}function n(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function r(e,n){t(n.capacity,`Async iterable capacity`);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}),e.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 i(e,t){return{[Symbol.asyncIterator](){return r(e,t)}}}function a(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function o(e,t){let n=typeof e==`function`?{next:e}:e,r=new AbortController,i=!1,o,s=()=>{if(!i){i=!0,r.abort(),t?.removeEventListener(`abort`,s);try{o?.()}catch(e){a(e)}}};return t?.aborted?s():t?.addEventListener(`abort`,s,{once:!0}),{add:e=>{if(e){if(i){try{e()}catch(e){a(e)}return}o=e}},signal:r.signal,sink:{complete(){if(!i){try{n.complete?.()}catch(e){a(e)}s()}},error(e){if(!i){if(n.error)try{n.error(e)}catch(e){a(e)}else a(e);s()}},next(e){if(!i)try{n.next(e)}catch(e){s(),a(e)}}},subscription:{get closed(){return i},[Symbol.dispose]:s,unsubscribe:s}}}function s(e){return{subscribe(t,n){let r=o(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 c=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},l=class extends c{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};function u(e,t,n){return e.subscribe(t,{signal:n})}function d(...e){return s((t,n)=>{if(e.length===0){t.complete();return}let r=0,i=[];for(let a of e){let o=u(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 f(...e){return s((t,n)=>{let r=0,i,a=()=>{if(n.aborted)return;let o=e[r++];if(!o){t.complete();return}let s=u(o,{complete:a,error:t.error,next:t.next},n);i=s.closed?void 0:s};return a(),()=>i?.unsubscribe()})}function p(...e){return s((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,c]of e.entries()){if(n.aborted)break;let l=u(c,{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(l)}return()=>a.forEach(e=>e.unsubscribe())})}var m={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}};function h(...e){return s(t=>{for(let n of e)t.next(n);t.complete()})}function g(e){return Symbol.asyncIterator in Object(e)?s((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`?s((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):s((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 _(e,t){return s(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function v(e){return n(e.every,`Interval duration`),s(t=>{let n=0;return m.repeat(()=>t.next(n++),e.every)})}function y(e){return n(e.delay,`Timer delay`),e.interval!==void 0&&n(e.interval,`Timer interval`),s(t=>{let n=0,r,i=m.delay(()=>{if(t.next(n++),e.interval===void 0){t.complete();return}r=m.repeat(()=>t.next(n++),e.interval)},e.delay);return()=>{i(),r?.()}})}function b(t){return e(t,`take count`),e=>s((n,r)=>{if(t===0){n.complete();return}let i=0,a={};return a.current=u(e,{complete:n.complete,error:n.error,next(e){n.next(e),i++,i===t&&(n.complete(),a.current?.unsubscribe())}},r),()=>a.current?.unsubscribe()})}function x(e){return t=>s((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=u(e,{error:n.error,next:s},r);return r.aborted||(i=u(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{o(),i?.unsubscribe(),a?.unsubscribe()}})}function S(e){return n(e.for,`Debounce duration`),t=>s((n,r)=>{let i,a,o=!1,s=()=>{i=void 0,o&&(o=!1,n.next(a))},c=u(t,{complete(){i?.(),s(),n.complete()},error:n.error,next(t){a=t,o=!0,i?.(),i=m.delay(s,e.for)}},r);return()=>{i?.(),c.unsubscribe()}})}function C(e){return n(e.after,`Timeout duration`),t=>s((n,r)=>{let i,a=()=>{i=m.delay(()=>n.error(new l(e.after)),e.after)};a();let o=u(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=>s((n,r)=>u(t,{complete:n.complete,error:n.error,next(t){w(()=>n.next(e(t)),n.error)}},r).unsubscribe)}function E(e){return t=>s((n,r)=>u(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=>s((r,i)=>{let a=t;return u(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=>s((n,r)=>{let i=!1,a,o=()=>{i&&!a&&n.complete()},s=u(t,{complete(){i=!0,o()},error:n.error,next(t){a?.unsubscribe(),a=void 0,w(()=>{let i=u(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=>s((n,r)=>{let i=!1,a=new Set,o=()=>{i&&a.size===0&&n.complete()},s=u(t,{complete(){i=!0,o()},error:n.error,next(t){w(()=>{let i={};i.current=u(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,n){return t(n.capacity,`concatMap capacity`),t=>s((r,i)=>{let a=[],o=!1,s,c={},l=()=>{if(s||a.length===0){o&&!s&&a.length===0&&r.complete();return}let t=a.shift();w(()=>{let n=u(e(t),{complete(){s=void 0,l()},error:r.error,next:r.next},i);s=n.closed?void 0:n,s||l()},r.error)};return c.current=u(t,{complete(){o=!0,l()},error:r.error,next(e){if(a.length===n.capacity){c.current?.unsubscribe(),r.error(RangeError(`concatMap buffer capacity exceeded`));return}a.push(e),l()}},i),()=>{c.current?.unsubscribe(),s?.unsubscribe(),a.length=0}})}function j(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function M(t){return e(t.attempts,`retry attempts`),e=>s((n,r)=>{let i=0,a,o,s=()=>{if(r.aborted)return;let c=u(e,{complete:n.complete,error(e){if(i===t.attempts){n.error(e);return}let a=i++,c;if(w(()=>{c=typeof t.delay==`function`?t.delay(a):t.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=m.delay(s,c)}},next:n.next},r);c.closed||(a=c)};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}),u(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}),u(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(t,n){return e(n.maxItems,`toArray maxItems`),new Promise((e,r)=>{let i=new AbortController,a=[],o=()=>{i.abort(),r(j())};if(n.signal?.aborted){o();return}n.signal?.addEventListener(`abort`,o,{once:!0}),u(t,{complete(){n.signal?.removeEventListener(`abort`,o),e(a)},error(e){n.signal?.removeEventListener(`abort`,o),r(e)},next(e){if(a.length===n.maxItems){n.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=c,exports.FluxTimeoutError=l,exports.combineLatest=p,exports.concat=f,exports.concatMap=A,exports.debounce=S,exports.filter=E,exports.first=N,exports.from=g,exports.fromEvent=_,exports.interval=v,exports.last=P,exports.map=T,exports.merge=d,exports.mergeMap=k,exports.of=h,exports.pipe=L,exports.retry=M,exports.scan=D,exports.stream=s,exports.switchMap=O,exports.take=b,exports.takeUntil=x,exports.timeout=C,exports.timer=y,exports.toArray=F,exports.toAsyncIterable=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e,t){if(!Number.isInteger(e)||e<0)throw RangeError(`${t} must be a non-negative integer`)}function t(e,t){if(!Number.isInteger(e)||e<1)throw RangeError(`${t} must be a positive integer`)}function n(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function r(e,n){t(n.capacity,`Async iterable capacity`);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}),e.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 i(e,t){return{[Symbol.asyncIterator](){return r(e,t)}}}function a(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function o(e,t){let n=typeof e==`function`?{next:e}:e,r=new AbortController,i=!1,o,s=()=>{if(!i){i=!0,r.abort(),t?.removeEventListener(`abort`,s);try{o?.()}catch(e){a(e)}}};return t?.aborted?s():t?.addEventListener(`abort`,s,{once:!0}),{add:e=>{if(e){if(i){try{e()}catch(e){a(e)}return}o=e}},signal:r.signal,sink:{complete(){if(!i){try{n.complete?.()}catch(e){a(e)}s()}},error(e){if(!i){if(n.error)try{n.error(e)}catch(e){a(e)}else a(e);s()}},next(e){if(!i)try{n.next(e)}catch(e){s(),a(e)}}},subscription:{get closed(){return i},[Symbol.dispose]:s,unsubscribe:s}}}function s(e){return{subscribe(t,n){let r=o(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 c=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},l=class extends c{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};function u(e,t,n){return e.subscribe(t,{signal:n})}function d(...e){return s((t,n)=>{if(e.length===0){t.complete();return}let r=0,i=[];for(let a of e){let o=u(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 f(...e){return s((t,n)=>{let r=0,i,a=()=>{if(n.aborted)return;let o=e[r++];if(!o){t.complete();return}let s=u(o,{complete:a,error:t.error,next:t.next},n);i=s.closed?void 0:s};return a(),()=>i?.unsubscribe()})}function p(...e){return s((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,c]of e.entries()){if(n.aborted)break;let l=u(c,{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(l)}return()=>a.forEach(e=>{e.unsubscribe()})})}var m={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}};function h(...e){return s(t=>{for(let n of e)t.next(n);t.complete()})}function g(e){return Symbol.asyncIterator in Object(e)?s((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`?s((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):s((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 _(e,t){return s(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function v(e){return n(e.every,`Interval duration`),s(t=>{let n=0;return m.repeat(()=>t.next(n++),e.every)})}function y(e){return n(e.delay,`Timer delay`),e.interval!==void 0&&n(e.interval,`Timer interval`),s(t=>{let n=0,r,i=m.delay(()=>{if(t.next(n++),e.interval===void 0){t.complete();return}r=m.repeat(()=>t.next(n++),e.interval)},e.delay);return()=>{i(),r?.()}})}function b(t){return e(t,`take count`),e=>s((n,r)=>{if(t===0){n.complete();return}let i=0,a={};return a.current=u(e,{complete:n.complete,error:n.error,next(e){n.next(e),i++,i===t&&(n.complete(),a.current?.unsubscribe())}},r),()=>a.current?.unsubscribe()})}function x(e){return t=>s((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=u(e,{error:n.error,next:s},r);return r.aborted||(i=u(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{o(),i?.unsubscribe(),a?.unsubscribe()}})}function S(e){return n(e.for,`Debounce duration`),t=>s((n,r)=>{let i,a,o=!1,s=()=>{i=void 0,o&&(o=!1,n.next(a))},c=u(t,{complete(){i?.(),s(),n.complete()},error:n.error,next(t){a=t,o=!0,i?.(),i=m.delay(s,e.for)}},r);return()=>{i?.(),c.unsubscribe()}})}function C(e){return n(e.after,`Timeout duration`),t=>s((n,r)=>{let i,a=()=>{i=m.delay(()=>n.error(new l(e.after)),e.after)};a();let o=u(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=>s((n,r)=>u(t,{complete:n.complete,error:n.error,next(t){w(()=>n.next(e(t)),n.error)}},r).unsubscribe)}function E(e){return t=>s((n,r)=>u(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=>s((r,i)=>{let a=t;return u(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=>s((n,r)=>{let i=!1,a,o=()=>{i&&!a&&n.complete()},s=u(t,{complete(){i=!0,o()},error:n.error,next(t){a?.unsubscribe(),a=void 0,w(()=>{let i=u(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=>s((n,r)=>{let i=!1,a=new Set,o=()=>{i&&a.size===0&&n.complete()},s=u(t,{complete(){i=!0,o()},error:n.error,next(t){w(()=>{let i={};i.current=u(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,n){return t(n.capacity,`concatMap capacity`),t=>s((r,i)=>{let a=[],o=!1,s,c={},l=()=>{if(s||a.length===0){o&&!s&&a.length===0&&r.complete();return}let t=a.shift();w(()=>{let n=u(e(t),{complete(){s=void 0,l()},error:r.error,next:r.next},i);s=n.closed?void 0:n,s||l()},r.error)};return c.current=u(t,{complete(){o=!0,l()},error:r.error,next(e){if(a.length===n.capacity){c.current?.unsubscribe(),r.error(RangeError(`concatMap buffer capacity exceeded`));return}a.push(e),l()}},i),()=>{c.current?.unsubscribe(),s?.unsubscribe(),a.length=0}})}function j(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function M(t){return e(t.attempts,`retry attempts`),e=>s((n,r)=>{let i=0,a,o,s=()=>{if(r.aborted)return;let c=u(e,{complete:n.complete,error(e){if(i===t.attempts){n.error(e);return}let a=i++,c;if(w(()=>{c=typeof t.delay==`function`?t.delay(a):t.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=m.delay(s,c)}},next:n.next},r);c.closed||(a=c)};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}),u(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}),u(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(t,n){return e(n.maxItems,`toArray maxItems`),new Promise((e,r)=>{let i=new AbortController,a=[],o=()=>{i.abort(),r(j())};if(n.signal?.aborted){o();return}n.signal?.addEventListener(`abort`,o,{once:!0}),u(t,{complete(){n.signal?.removeEventListener(`abort`,o),e(a)},error(e){n.signal?.removeEventListener(`abort`,o),r(e)},next(e){if(a.length===n.maxItems){n.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)}exports.FluxError=c,exports.FluxTimeoutError=l,exports.combineLatest=p,exports.concat=f,exports.concatMap=A,exports.debounce=S,exports.filter=E,exports.first=N,exports.from=g,exports.fromEvent=_,exports.interval=v,exports.last=P,exports.map=T,exports.merge=d,exports.mergeMap=k,exports.of=h,exports.pipe=I,exports.retry=M,exports.scan=D,exports.stream=s,exports.switchMap=O,exports.take=b,exports.takeUntil=x,exports.timeout=C,exports.timer=y,exports.toArray=F,exports.toAsyncIterable=i;
2
2
  //# sourceMappingURL=flux.cjs.map
package/dist/flux.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"flux.cjs","names":[],"sources":["../src/_numeric.ts","../src/_iterator.ts","../src/async.ts","../src/_subscription.ts","../src/core.ts","../src/errors.ts","../src/_link.ts","../src/operators/combination.ts","../src/_scheduler.ts","../src/operators/creation.ts","../src/operators/filtering.ts","../src/_safe.ts","../src/operators/transformation.ts","../src/operators/utility.ts","../src/_pipe.ts","../src/pipe.ts"],"sourcesContent":["export function assertNonNegativeInteger(value: number, name: string): void {\n if (!Number.isInteger(value) || value < 0) {\n throw new RangeError(`${name} must be a non-negative integer`);\n }\n}\n\nexport function assertPositiveInteger(value: number, name: string): void {\n if (!Number.isInteger(value) || value < 1) {\n throw new RangeError(`${name} must be a positive integer`);\n }\n}\n\nexport function assertDuration(milliseconds: number, name: string): void {\n if (!Number.isFinite(milliseconds) || milliseconds < 0) {\n throw new RangeError(`${name} must be a finite number greater than or equal to zero`);\n }\n}\n","import { assertPositiveInteger } from './_numeric';\nimport type { AsyncIterableOptions, Observer, Stream } from './types';\n\ntype Pending<T> = {\n reject(reason: unknown): void;\n resolve(result: IteratorResult<T>): void;\n};\n\ntype IteratorState<T> =\n | { kind: 'complete' | 'open'; queue: T[] }\n | { kind: 'error'; queue: T[]; reason: unknown }\n | { kind: 'returned' };\n\n/** Async iteration requires explicit queue policy because streams are push based. */\nexport function toIterator<T>(source: Stream<T>, options: AsyncIterableOptions): AsyncIterableIterator<T> {\n assertPositiveInteger(options.capacity, 'Async iterable capacity');\n\n const controller = new AbortController();\n const pending: Pending<T>[] = [];\n let state: IteratorState<T> = { kind: 'open', queue: [] };\n\n const detach = (): void => options.signal?.removeEventListener('abort', stop);\n\n const resolveDone = (): void => {\n while (pending.length > 0) pending.shift()?.resolve({ done: true, value: undefined as T });\n };\n\n const complete = (): void => {\n if (state.kind !== 'open') return;\n\n state.kind = 'complete';\n detach();\n resolveDone();\n };\n\n const fail = (reason: unknown): void => {\n if (state.kind !== 'open') return;\n\n state = { kind: 'error', queue: state.queue, reason };\n controller.abort();\n detach();\n\n while (pending.length > 0) pending.shift()?.reject(reason);\n };\n\n const stop = (): void => {\n controller.abort();\n detach();\n state = { kind: 'returned' };\n resolveDone();\n };\n\n const observer: Observer<T> = {\n complete,\n error: fail,\n next(value) {\n if (state.kind !== 'open') return;\n\n const waiter = pending.shift();\n\n if (waiter) {\n waiter.resolve({ done: false, value });\n\n return;\n }\n\n if (state.queue.length < options.capacity) {\n state.queue.push(value);\n\n return;\n }\n\n if (options.overflow === 'drop-oldest') {\n state.queue.shift();\n state.queue.push(value);\n } else if (options.overflow === 'error') {\n fail(new RangeError('Async iterable buffer capacity exceeded'));\n }\n },\n };\n\n if (options.signal?.aborted) stop();\n else options.signal?.addEventListener('abort', stop, { once: true });\n\n source.subscribe(observer, { signal: controller.signal });\n\n return {\n next(): Promise<IteratorResult<T>> {\n if (state.kind === 'returned') return Promise.resolve({ done: true, value: undefined as T });\n\n if (state.queue.length > 0) return Promise.resolve({ done: false, value: state.queue.shift()! });\n\n if (state.kind === 'error') return Promise.reject(state.reason);\n\n if (state.kind === 'complete') return Promise.resolve({ done: true, value: undefined as T });\n\n return new Promise<IteratorResult<T>>((resolve, reject) => pending.push({ reject, resolve }));\n },\n return(): Promise<IteratorResult<T>> {\n stop();\n\n return Promise.resolve({ done: true, value: undefined as T });\n },\n [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return this;\n },\n };\n}\n","import { toIterator } from './_iterator';\nimport type { AsyncIterableOptions, Stream } from './types';\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","import type { Observer, Sink, Subscription, Teardown } from './types';\n\nfunction reportUnhandledError(reason: unknown): void {\n const reportError = (globalThis as { reportError?: (value: unknown) => void }).reportError;\n\n if (reportError) {\n reportError(reason);\n\n return;\n }\n\n queueMicrotask(() => {\n throw reason;\n });\n}\n\nexport function createSubscription<T>(\n observerOrNext: Observer<T> | ((value: T) => void),\n signal?: AbortSignal,\n): { add(teardown: Teardown | undefined): void; signal: AbortSignal; sink: Sink<T>; subscription: Subscription } {\n const observer: Observer<T> = typeof observerOrNext === 'function' ? { next: observerOrNext } : observerOrNext;\n const controller = new AbortController();\n let closed = false;\n let teardown: Teardown | undefined;\n\n const unsubscribe = (): void => {\n if (closed) return;\n\n closed = true;\n controller.abort();\n signal?.removeEventListener('abort', unsubscribe);\n\n try {\n teardown?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n };\n\n const sink: Sink<T> = {\n complete(): void {\n if (closed) return;\n\n try {\n observer.complete?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n error(reason: unknown): void {\n if (closed) return;\n\n if (observer.error) {\n try {\n observer.error(reason);\n } catch (callbackError) {\n reportUnhandledError(callbackError);\n }\n } else {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n next(value: T): void {\n if (closed) return;\n\n try {\n observer.next(value);\n } catch (reason) {\n unsubscribe();\n reportUnhandledError(reason);\n }\n },\n };\n\n const add = (nextTeardown: Teardown | undefined): void => {\n if (!nextTeardown) return;\n\n if (closed) {\n try {\n nextTeardown();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n return;\n }\n\n teardown = nextTeardown;\n };\n\n if (signal?.aborted) {\n unsubscribe();\n } else {\n signal?.addEventListener('abort', unsubscribe, { once: true });\n }\n\n return {\n add,\n signal: controller.signal,\n sink,\n subscription: {\n get closed(): boolean {\n return closed;\n },\n [Symbol.dispose]: unsubscribe,\n unsubscribe,\n },\n };\n}\n","import { createSubscription } from './_subscription';\nimport type { Observer, Producer, Stream, SubscribeOptions, Subscription } from './types';\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","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\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","import type { Observer, Stream, Subscription } from './types';\n\n/** Every operator forwards its own lifetime to every upstream subscription. */\nexport function link<T>(source: Stream<T>, observer: Observer<T>, signal: AbortSignal): Subscription {\n return source.subscribe(observer, { signal });\n}\n","import { link } from '../_link';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\ntype StreamValue<T> = T extends Stream<infer Value> ? Value : never;\ntype StreamValues<T extends readonly Stream<unknown>[]> = { [Key in keyof T]: StreamValue<T[Key]> };\n\nexport function merge<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n let completed = 0;\n const subscriptions: Subscription[] = [];\n\n for (const source of sources) {\n const subscription = link(\n source,\n {\n complete() {\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n subscriptions.push(subscription);\n\n if (signal.aborted) break;\n }\n\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe());\n });\n}\n\nexport function concat<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n let index = 0;\n let current: Subscription | undefined;\n\n const subscribeNext = (): void => {\n if (signal.aborted) return;\n\n const source = sources[index++];\n\n if (!source) {\n sink.complete();\n\n return;\n }\n\n const subscription = link(\n source,\n {\n complete: subscribeNext,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n current = subscription.closed ? undefined : subscription;\n };\n\n subscribeNext();\n\n return () => current?.unsubscribe();\n });\n}\n\nexport function combineLatest<T extends readonly Stream<unknown>[]>(...sources: T): Stream<StreamValues<T>> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n const values = new Array<unknown>(sources.length);\n const ready = new Array<boolean>(sources.length).fill(false);\n const subscriptions: Subscription[] = [];\n let completed = 0;\n\n for (const [index, source] of sources.entries()) {\n if (signal.aborted) break;\n\n const subscription = link(\n source,\n {\n complete() {\n if (!ready[index]) {\n sink.complete();\n\n return;\n }\n\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next(value) {\n values[index] = value;\n ready[index] = true;\n\n if (ready.every(Boolean)) sink.next([...values] as StreamValues<T>);\n },\n },\n signal,\n );\n\n subscriptions.push(subscription);\n }\n\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe());\n });\n}\n","export type Scheduler = {\n delay(callback: () => void, milliseconds: number): () => void;\n repeat(callback: () => void, milliseconds: number): () => void;\n};\n\nexport const defaultScheduler: Scheduler = {\n delay(callback, milliseconds) {\n const id = setTimeout(callback, milliseconds);\n\n return () => clearTimeout(id);\n },\n repeat(callback, milliseconds) {\n const id = setInterval(callback, milliseconds);\n\n return () => clearInterval(id);\n },\n};\n","import { assertDuration } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\n\nexport type IntervalOptions = {\n every: number;\n};\n\nexport type TimerOptions = {\n delay: number;\n interval?: number;\n};\n\nexport function of<T>(...values: T[]): Stream<T> {\n return stream((sink) => {\n for (const value of values) sink.next(value);\n sink.complete();\n });\n}\n\nexport function from<T>(source: AsyncIterable<T> | Iterable<T> | Promise<T>): Stream<T> {\n if (Symbol.asyncIterator in Object(source)) {\n return stream((sink, signal) => {\n const iterator = (source as AsyncIterable<T>)[Symbol.asyncIterator]();\n\n void (async () => {\n try {\n while (!signal.aborted) {\n const result = await iterator.next();\n\n if (result.done) {\n sink.complete();\n\n return;\n }\n\n sink.next(result.value);\n }\n } catch (reason) {\n if (!signal.aborted) sink.error(reason);\n }\n })();\n\n return () => {\n void iterator.return?.();\n };\n });\n }\n\n if (typeof (source as Promise<T>).then === 'function') {\n return stream((sink, signal) => {\n void (source as Promise<T>).then(\n (value) => {\n if (!signal.aborted) {\n sink.next(value);\n sink.complete();\n }\n },\n (reason: unknown) => {\n if (!signal.aborted) sink.error(reason);\n },\n );\n });\n }\n\n return stream((sink, signal) => {\n const iterator = (source as Iterable<T>)[Symbol.iterator]();\n\n try {\n while (!signal.aborted) {\n const result = iterator.next();\n\n if (result.done) {\n sink.complete();\n\n return;\n }\n\n sink.next(result.value);\n }\n } catch (reason) {\n sink.error(reason);\n }\n\n return () => {\n iterator.return?.();\n };\n });\n}\n\nexport function fromEvent<T = Event>(\n target: {\n addEventListener(type: string, listener: (event: T) => void): void;\n removeEventListener(type: string, listener: (event: T) => void): void;\n },\n type: string,\n): Stream<T> {\n return stream((sink) => {\n const listener = (event: T): void => sink.next(event);\n\n target.addEventListener(type, listener);\n\n return () => target.removeEventListener(type, listener);\n });\n}\n\nexport function interval(options: IntervalOptions): Stream<number> {\n assertDuration(options.every, 'Interval duration');\n\n return stream((sink) => {\n let index = 0;\n\n return defaultScheduler.repeat(() => sink.next(index++), options.every);\n });\n}\n\nexport function timer(options: TimerOptions): Stream<number> {\n assertDuration(options.delay, 'Timer delay');\n\n if (options.interval !== undefined) assertDuration(options.interval, 'Timer interval');\n\n return stream((sink) => {\n let index = 0;\n let cancelInterval: (() => void) | undefined;\n const cancelDelay = defaultScheduler.delay(() => {\n sink.next(index++);\n\n if (options.interval === undefined) {\n sink.complete();\n\n return;\n }\n\n cancelInterval = defaultScheduler.repeat(() => sink.next(index++), options.interval);\n }, options.delay);\n\n return () => {\n cancelDelay();\n cancelInterval?.();\n };\n });\n}\n","import { link } from '../_link';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport { FluxTimeoutError } from '../errors';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type DebounceOptions = {\n for: number;\n};\n\nexport type TimeoutOptions = {\n after: number;\n};\n\nexport function take<T>(count: number): Operator<T, T> {\n assertNonNegativeInteger(count, 'take count');\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (notifier instanceof AbortSignal) {\n if (notifier.aborted) {\n sink.complete();\n\n return;\n }\n\n notifier.addEventListener('abort', complete, { once: true });\n removeNotifier = (): void => notifier.removeEventListener('abort', complete);\n } else {\n notifierSubscription = link(notifier, { error: sink.error, next: complete }, signal);\n }\n\n if (!signal.aborted) {\n sourceSubscription = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n }\n\n return () => {\n removeNotifier();\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n };\n });\n}\n\nexport function debounce<T>(options: DebounceOptions): Operator<T, T> {\n assertDuration(options.for, 'Debounce duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: (() => void) | undefined;\n let pending: T | undefined;\n let hasPending = false;\n\n const flush = (): void => {\n cancel = undefined;\n\n if (!hasPending) return;\n\n hasPending = false;\n sink.next(pending as T);\n };\n\n const subscription = link(\n source,\n {\n complete() {\n cancel?.();\n flush();\n sink.complete();\n },\n error: sink.error,\n next(value) {\n pending = value;\n hasPending = true;\n cancel?.();\n cancel = defaultScheduler.delay(flush, options.for);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(options: TimeoutOptions): Operator<T, T> {\n assertDuration(options.after, 'Timeout duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: () => void;\n\n const start = (): void => {\n cancel = defaultScheduler.delay(() => sink.error(new FluxTimeoutError(options.after)), options.after);\n };\n\n start();\n\n const subscription = link(\n source,\n {\n complete() {\n cancel();\n sink.complete();\n },\n error(reason) {\n cancel();\n sink.error(reason);\n },\n next(value) {\n cancel();\n start();\n sink.next(value);\n },\n },\n signal,\n );\n\n return () => {\n cancel();\n subscription.unsubscribe();\n };\n });\n}\n","export function tryCall(callback: () => void, onError: (reason: unknown) => void): void {\n try {\n callback();\n } catch (reason) {\n onError(reason);\n }\n}\n","import { link } from '../_link';\nimport { assertPositiveInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type ConcatMapOptions = {\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n const inners = new Set<Subscription>();\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n };\n });\n}\n\nexport function concatMap<A, B>(project: (value: A) => Stream<B>, options: ConcatMapOptions): Operator<A, B> {\n assertPositiveInteger(options.capacity, 'concatMap capacity');\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n let outerComplete = false;\n let inner: Subscription | undefined;\n const outerRef: { current?: Subscription } = {};\n\n const next = (): void => {\n if (inner || queue.length === 0) {\n if (outerComplete && !inner && queue.length === 0) sink.complete();\n\n return;\n }\n\n const value = queue.shift()!;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n next();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n\n if (!inner) next();\n }, sink.error);\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n next();\n },\n error: sink.error,\n next(value) {\n if (queue.length === options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new RangeError('concatMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n next();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n inner?.unsubscribe();\n queue.length = 0;\n };\n });\n}\n","import { link } from '../_link';\nimport { assertNonNegativeInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type RetryOptions = {\n attempts: number;\n delay?: number | ((attempt: number) => number);\n};\n\nexport type ToArrayOptions = {\n maxItems: number;\n signal?: AbortSignal;\n};\n\nexport type ValueOptions = {\n signal?: AbortSignal;\n};\n\nfunction abortError(): DOMException {\n return new DOMException('Stream consumption aborted', 'AbortError');\n}\n\nexport function retry<T>(options: RetryOptions): Operator<T, T> {\n assertNonNegativeInteger(options.attempts, 'retry attempts');\n\n return (source) =>\n stream((sink, signal) => {\n let attempts = 0;\n let current: Subscription | undefined;\n let cancelDelay: (() => void) | undefined;\n\n const start = (): void => {\n if (signal.aborted) return;\n\n const subscription = link(\n source,\n {\n complete: sink.complete,\n error(reason) {\n if (attempts === options.attempts) {\n sink.error(reason);\n\n return;\n }\n\n const attempt = attempts++;\n let delay: number | undefined;\n\n tryCall(() => {\n delay = typeof options.delay === 'function' ? options.delay(attempt) : options.delay;\n }, sink.error);\n\n if (signal.aborted) return;\n\n if (delay !== undefined && (!Number.isFinite(delay) || delay < 0)) {\n sink.error(new RangeError('retry delay must be a finite number greater than or equal to zero'));\n\n return;\n }\n\n if (delay === undefined || delay === 0) {\n queueMicrotask(start);\n } else {\n cancelDelay = defaultScheduler.delay(start, delay);\n }\n },\n next: sink.next,\n },\n signal,\n );\n\n if (!subscription.closed) current = subscription;\n };\n\n start();\n\n return () => {\n cancelDelay?.();\n current?.unsubscribe();\n };\n });\n}\n\nexport function first<T>(source: Stream<T>, options?: ValueOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n options?.signal?.removeEventListener('abort', abort);\n controller.abort();\n resolve(value);\n },\n },\n controller.signal,\n );\n });\n}\n\nexport function last<T>(source: Stream<T>, options?: ValueOptions): Promise<T | undefined> {\n return new Promise<T | undefined>((resolve, reject) => {\n const abort = (): void => reject(abortError());\n let latest: T | undefined;\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options?.signal?.removeEventListener('abort', abort);\n resolve(latest);\n },\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n latest = value;\n },\n },\n options?.signal ?? new AbortController().signal,\n );\n });\n}\n\nexport function toArray<T>(source: Stream<T>, options: ToArrayOptions): Promise<T[]> {\n assertNonNegativeInteger(options.maxItems, 'toArray maxItems');\n\n return new Promise<T[]>((resolve, reject) => {\n const controller = new AbortController();\n const values: T[] = [];\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options.signal?.aborted) {\n abort();\n\n return;\n }\n\n options.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options.signal?.removeEventListener('abort', abort);\n resolve(values);\n },\n error(reason) {\n options.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n if (values.length === options.maxItems) {\n options.signal?.removeEventListener('abort', abort);\n controller.abort();\n reject(new RangeError('toArray maxItems exceeded'));\n\n return;\n }\n\n values.push(value);\n },\n },\n controller.signal,\n );\n });\n}\n","import type { Operator, Stream } from './types';\n\nexport function applyOperators(source: Stream<unknown>, operators: readonly Operator[]): Stream<unknown> {\n return operators.reduce((current, operator) => operator(current), source);\n}\n","import { applyOperators } from './_pipe';\nimport type { Operator, PipedStream, Stream, ValidPipe } from './types';\n\n/** Standalone composition preserves contextual types for inline generic operators. */\nexport function pipe<Input>(source: Stream<Input>): Stream<Input>;\nexport function pipe<Input, A>(source: Stream<Input>, operator1: Operator<Input, A>): Stream<A>;\nexport function pipe<Input, A, B>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<Input, A, B, C>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<Input, A, B, C, D>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<Input, A, B, C, D, E>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<Input, A, B, C, D, E, F>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<Input, A, B, C, D, E, F, G>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<Input, A, B, C, D, E, F, G, H>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n): Stream<I>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I, J>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n operator10: Operator<I, J>,\n): Stream<J>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators> {\n return applyOperators(source as Stream<unknown>, operators) as PipedStream<Input, Operators>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"flux.cjs","names":[],"sources":["../src/_numeric.ts","../src/_iterator.ts","../src/async.ts","../src/_subscription.ts","../src/core.ts","../src/errors.ts","../src/_link.ts","../src/operators/combination.ts","../src/_scheduler.ts","../src/operators/creation.ts","../src/operators/filtering.ts","../src/_safe.ts","../src/operators/transformation.ts","../src/operators/utility.ts","../src/pipe.ts"],"sourcesContent":["export function assertNonNegativeInteger(value: number, name: string): void {\n if (!Number.isInteger(value) || value < 0) {\n throw new RangeError(`${name} must be a non-negative integer`);\n }\n}\n\nexport function assertPositiveInteger(value: number, name: string): void {\n if (!Number.isInteger(value) || value < 1) {\n throw new RangeError(`${name} must be a positive integer`);\n }\n}\n\nexport function assertDuration(milliseconds: number, name: string): void {\n if (!Number.isFinite(milliseconds) || milliseconds < 0) {\n throw new RangeError(`${name} must be a finite number greater than or equal to zero`);\n }\n}\n","import { assertPositiveInteger } from './_numeric';\nimport type { AsyncIterableOptions, Observer, Stream } from './types';\n\ntype Pending<T> = {\n reject(reason: unknown): void;\n resolve(result: IteratorResult<T>): void;\n};\n\ntype IteratorState<T> =\n | { kind: 'complete' | 'open'; queue: T[] }\n | { kind: 'error'; queue: T[]; reason: unknown }\n | { kind: 'returned' };\n\n/** Async iteration requires explicit queue policy because streams are push based. */\nexport function toIterator<T>(source: Stream<T>, options: AsyncIterableOptions): AsyncIterableIterator<T> {\n assertPositiveInteger(options.capacity, 'Async iterable capacity');\n\n const controller = new AbortController();\n const pending: Pending<T>[] = [];\n let state: IteratorState<T> = { kind: 'open', queue: [] };\n\n const detach = (): void => options.signal?.removeEventListener('abort', stop);\n\n const resolveDone = (): void => {\n while (pending.length > 0) pending.shift()?.resolve({ done: true, value: undefined as T });\n };\n\n const complete = (): void => {\n if (state.kind !== 'open') return;\n\n state.kind = 'complete';\n detach();\n resolveDone();\n };\n\n const fail = (reason: unknown): void => {\n if (state.kind !== 'open') return;\n\n state = { kind: 'error', queue: state.queue, reason };\n controller.abort();\n detach();\n\n while (pending.length > 0) pending.shift()?.reject(reason);\n };\n\n const stop = (): void => {\n controller.abort();\n detach();\n state = { kind: 'returned' };\n resolveDone();\n };\n\n const observer: Observer<T> = {\n complete,\n error: fail,\n next(value) {\n if (state.kind !== 'open') return;\n\n const waiter = pending.shift();\n\n if (waiter) {\n waiter.resolve({ done: false, value });\n\n return;\n }\n\n if (state.queue.length < options.capacity) {\n state.queue.push(value);\n\n return;\n }\n\n if (options.overflow === 'drop-oldest') {\n state.queue.shift();\n state.queue.push(value);\n } else if (options.overflow === 'error') {\n fail(new RangeError('Async iterable buffer capacity exceeded'));\n }\n },\n };\n\n if (options.signal?.aborted) stop();\n else options.signal?.addEventListener('abort', stop, { once: true });\n\n source.subscribe(observer, { signal: controller.signal });\n\n return {\n next(): Promise<IteratorResult<T>> {\n if (state.kind === 'returned') return Promise.resolve({ done: true, value: undefined as T });\n\n if (state.queue.length > 0) return Promise.resolve({ done: false, value: state.queue.shift()! });\n\n if (state.kind === 'error') return Promise.reject(state.reason);\n\n if (state.kind === 'complete') return Promise.resolve({ done: true, value: undefined as T });\n\n return new Promise<IteratorResult<T>>((resolve, reject) => pending.push({ reject, resolve }));\n },\n return(): Promise<IteratorResult<T>> {\n stop();\n\n return Promise.resolve({ done: true, value: undefined as T });\n },\n [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return this;\n },\n };\n}\n","import { toIterator } from './_iterator';\nimport type { AsyncIterableOptions, Stream } from './types';\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","import type { Observer, Sink, Subscription, Teardown } from './types';\n\nfunction reportUnhandledError(reason: unknown): void {\n const reportError = (globalThis as { reportError?: (value: unknown) => void }).reportError;\n\n if (reportError) {\n reportError(reason);\n\n return;\n }\n\n queueMicrotask(() => {\n throw reason;\n });\n}\n\nexport function createSubscription<T>(\n observerOrNext: Observer<T> | ((value: T) => void),\n signal?: AbortSignal,\n): { add(teardown: Teardown | undefined): void; signal: AbortSignal; sink: Sink<T>; subscription: Subscription } {\n const observer: Observer<T> = typeof observerOrNext === 'function' ? { next: observerOrNext } : observerOrNext;\n const controller = new AbortController();\n let closed = false;\n let teardown: Teardown | undefined;\n\n const unsubscribe = (): void => {\n if (closed) return;\n\n closed = true;\n controller.abort();\n signal?.removeEventListener('abort', unsubscribe);\n\n try {\n teardown?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n };\n\n const sink: Sink<T> = {\n complete(): void {\n if (closed) return;\n\n try {\n observer.complete?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n error(reason: unknown): void {\n if (closed) return;\n\n if (observer.error) {\n try {\n observer.error(reason);\n } catch (callbackError) {\n reportUnhandledError(callbackError);\n }\n } else {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n next(value: T): void {\n if (closed) return;\n\n try {\n observer.next(value);\n } catch (reason) {\n unsubscribe();\n reportUnhandledError(reason);\n }\n },\n };\n\n const add = (nextTeardown: Teardown | undefined): void => {\n if (!nextTeardown) return;\n\n if (closed) {\n try {\n nextTeardown();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n return;\n }\n\n teardown = nextTeardown;\n };\n\n if (signal?.aborted) {\n unsubscribe();\n } else {\n signal?.addEventListener('abort', unsubscribe, { once: true });\n }\n\n return {\n add,\n signal: controller.signal,\n sink,\n subscription: {\n get closed(): boolean {\n return closed;\n },\n [Symbol.dispose]: unsubscribe,\n unsubscribe,\n },\n };\n}\n","import { createSubscription } from './_subscription';\nimport type { Observer, Producer, Stream, SubscribeOptions, Subscription } from './types';\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","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\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","import type { Observer, Stream, Subscription } from './types';\n\n/** Every operator forwards its own lifetime to every upstream subscription. */\nexport function link<T>(source: Stream<T>, observer: Observer<T>, signal: AbortSignal): Subscription {\n return source.subscribe(observer, { signal });\n}\n","import { link } from '../_link';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\ntype StreamValue<T> = T extends Stream<infer Value> ? Value : never;\ntype StreamValues<T extends readonly Stream<unknown>[]> = { [Key in keyof T]: StreamValue<T[Key]> };\n\nexport function merge<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n let completed = 0;\n const subscriptions: Subscription[] = [];\n\n for (const source of sources) {\n const subscription = link(\n source,\n {\n complete() {\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n subscriptions.push(subscription);\n\n if (signal.aborted) break;\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n\nexport function concat<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n let index = 0;\n let current: Subscription | undefined;\n\n const subscribeNext = (): void => {\n if (signal.aborted) return;\n\n const source = sources[index++];\n\n if (!source) {\n sink.complete();\n\n return;\n }\n\n const subscription = link(\n source,\n {\n complete: subscribeNext,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n current = subscription.closed ? undefined : subscription;\n };\n\n subscribeNext();\n\n return () => current?.unsubscribe();\n });\n}\n\nexport function combineLatest<T extends readonly Stream<unknown>[]>(...sources: T): Stream<StreamValues<T>> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n const values = new Array<unknown>(sources.length);\n const ready = new Array<boolean>(sources.length).fill(false);\n const subscriptions: Subscription[] = [];\n let completed = 0;\n\n for (const [index, source] of sources.entries()) {\n if (signal.aborted) break;\n\n const subscription = link(\n source,\n {\n complete() {\n if (!ready[index]) {\n sink.complete();\n\n return;\n }\n\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next(value) {\n values[index] = value;\n ready[index] = true;\n\n if (ready.every(Boolean)) sink.next([...values] as StreamValues<T>);\n },\n },\n signal,\n );\n\n subscriptions.push(subscription);\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n","export type Scheduler = {\n delay(callback: () => void, milliseconds: number): () => void;\n repeat(callback: () => void, milliseconds: number): () => void;\n};\n\nexport const defaultScheduler: Scheduler = {\n delay(callback, milliseconds) {\n const id = setTimeout(callback, milliseconds);\n\n return () => clearTimeout(id);\n },\n repeat(callback, milliseconds) {\n const id = setInterval(callback, milliseconds);\n\n return () => clearInterval(id);\n },\n};\n","import { assertDuration } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\n\nexport type IntervalOptions = {\n every: number;\n};\n\nexport type TimerOptions = {\n delay: number;\n interval?: number;\n};\n\nexport function of<T>(...values: T[]): Stream<T> {\n return stream((sink) => {\n for (const value of values) sink.next(value);\n sink.complete();\n });\n}\n\nexport function from<T>(source: AsyncIterable<T> | Iterable<T> | Promise<T>): Stream<T> {\n if (Symbol.asyncIterator in Object(source)) {\n return stream((sink, signal) => {\n const iterator = (source as AsyncIterable<T>)[Symbol.asyncIterator]();\n\n void (async () => {\n try {\n while (!signal.aborted) {\n const result = await iterator.next();\n\n if (result.done) {\n sink.complete();\n\n return;\n }\n\n sink.next(result.value);\n }\n } catch (reason) {\n if (!signal.aborted) sink.error(reason);\n }\n })();\n\n return () => {\n void iterator.return?.();\n };\n });\n }\n\n if (typeof (source as Promise<T>).then === 'function') {\n return stream((sink, signal) => {\n void (source as Promise<T>).then(\n (value) => {\n if (!signal.aborted) {\n sink.next(value);\n sink.complete();\n }\n },\n (reason: unknown) => {\n if (!signal.aborted) sink.error(reason);\n },\n );\n });\n }\n\n return stream((sink, signal) => {\n const iterator = (source as Iterable<T>)[Symbol.iterator]();\n\n try {\n while (!signal.aborted) {\n const result = iterator.next();\n\n if (result.done) {\n sink.complete();\n\n return;\n }\n\n sink.next(result.value);\n }\n } catch (reason) {\n sink.error(reason);\n }\n\n return () => {\n iterator.return?.();\n };\n });\n}\n\nexport function fromEvent<T = Event>(\n target: {\n addEventListener(type: string, listener: (event: T) => void): void;\n removeEventListener(type: string, listener: (event: T) => void): void;\n },\n type: string,\n): Stream<T> {\n return stream((sink) => {\n const listener = (event: T): void => sink.next(event);\n\n target.addEventListener(type, listener);\n\n return () => target.removeEventListener(type, listener);\n });\n}\n\nexport function interval(options: IntervalOptions): Stream<number> {\n assertDuration(options.every, 'Interval duration');\n\n return stream((sink) => {\n let index = 0;\n\n return defaultScheduler.repeat(() => sink.next(index++), options.every);\n });\n}\n\nexport function timer(options: TimerOptions): Stream<number> {\n assertDuration(options.delay, 'Timer delay');\n\n if (options.interval !== undefined) assertDuration(options.interval, 'Timer interval');\n\n return stream((sink) => {\n let index = 0;\n let cancelInterval: (() => void) | undefined;\n const cancelDelay = defaultScheduler.delay(() => {\n sink.next(index++);\n\n if (options.interval === undefined) {\n sink.complete();\n\n return;\n }\n\n cancelInterval = defaultScheduler.repeat(() => sink.next(index++), options.interval);\n }, options.delay);\n\n return () => {\n cancelDelay();\n cancelInterval?.();\n };\n });\n}\n","import { link } from '../_link';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport { FluxTimeoutError } from '../errors';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type DebounceOptions = {\n for: number;\n};\n\nexport type TimeoutOptions = {\n after: number;\n};\n\nexport function take<T>(count: number): Operator<T, T> {\n assertNonNegativeInteger(count, 'take count');\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (notifier instanceof AbortSignal) {\n if (notifier.aborted) {\n sink.complete();\n\n return;\n }\n\n notifier.addEventListener('abort', complete, { once: true });\n removeNotifier = (): void => notifier.removeEventListener('abort', complete);\n } else {\n notifierSubscription = link(notifier, { error: sink.error, next: complete }, signal);\n }\n\n if (!signal.aborted) {\n sourceSubscription = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n }\n\n return () => {\n removeNotifier();\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n };\n });\n}\n\nexport function debounce<T>(options: DebounceOptions): Operator<T, T> {\n assertDuration(options.for, 'Debounce duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: (() => void) | undefined;\n let pending: T | undefined;\n let hasPending = false;\n\n const flush = (): void => {\n cancel = undefined;\n\n if (!hasPending) return;\n\n hasPending = false;\n sink.next(pending as T);\n };\n\n const subscription = link(\n source,\n {\n complete() {\n cancel?.();\n flush();\n sink.complete();\n },\n error: sink.error,\n next(value) {\n pending = value;\n hasPending = true;\n cancel?.();\n cancel = defaultScheduler.delay(flush, options.for);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(options: TimeoutOptions): Operator<T, T> {\n assertDuration(options.after, 'Timeout duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: () => void;\n\n const start = (): void => {\n cancel = defaultScheduler.delay(() => sink.error(new FluxTimeoutError(options.after)), options.after);\n };\n\n start();\n\n const subscription = link(\n source,\n {\n complete() {\n cancel();\n sink.complete();\n },\n error(reason) {\n cancel();\n sink.error(reason);\n },\n next(value) {\n cancel();\n start();\n sink.next(value);\n },\n },\n signal,\n );\n\n return () => {\n cancel();\n subscription.unsubscribe();\n };\n });\n}\n","export function tryCall(callback: () => void, onError: (reason: unknown) => void): void {\n try {\n callback();\n } catch (reason) {\n onError(reason);\n }\n}\n","import { link } from '../_link';\nimport { assertPositiveInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type ConcatMapOptions = {\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n const inners = new Set<Subscription>();\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n };\n });\n}\n\nexport function concatMap<A, B>(project: (value: A) => Stream<B>, options: ConcatMapOptions): Operator<A, B> {\n assertPositiveInteger(options.capacity, 'concatMap capacity');\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n let outerComplete = false;\n let inner: Subscription | undefined;\n const outerRef: { current?: Subscription } = {};\n\n const next = (): void => {\n if (inner || queue.length === 0) {\n if (outerComplete && !inner && queue.length === 0) sink.complete();\n\n return;\n }\n\n const value = queue.shift()!;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n next();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n\n if (!inner) next();\n }, sink.error);\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n next();\n },\n error: sink.error,\n next(value) {\n if (queue.length === options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new RangeError('concatMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n next();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n inner?.unsubscribe();\n queue.length = 0;\n };\n });\n}\n","import { link } from '../_link';\nimport { assertNonNegativeInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type RetryOptions = {\n attempts: number;\n delay?: number | ((attempt: number) => number);\n};\n\nexport type ToArrayOptions = {\n maxItems: number;\n signal?: AbortSignal;\n};\n\nexport type ValueOptions = {\n signal?: AbortSignal;\n};\n\nfunction abortError(): DOMException {\n return new DOMException('Stream consumption aborted', 'AbortError');\n}\n\nexport function retry<T>(options: RetryOptions): Operator<T, T> {\n assertNonNegativeInteger(options.attempts, 'retry attempts');\n\n return (source) =>\n stream((sink, signal) => {\n let attempts = 0;\n let current: Subscription | undefined;\n let cancelDelay: (() => void) | undefined;\n\n const start = (): void => {\n if (signal.aborted) return;\n\n const subscription = link(\n source,\n {\n complete: sink.complete,\n error(reason) {\n if (attempts === options.attempts) {\n sink.error(reason);\n\n return;\n }\n\n const attempt = attempts++;\n let delay: number | undefined;\n\n tryCall(() => {\n delay = typeof options.delay === 'function' ? options.delay(attempt) : options.delay;\n }, sink.error);\n\n if (signal.aborted) return;\n\n if (delay !== undefined && (!Number.isFinite(delay) || delay < 0)) {\n sink.error(new RangeError('retry delay must be a finite number greater than or equal to zero'));\n\n return;\n }\n\n if (delay === undefined || delay === 0) {\n queueMicrotask(start);\n } else {\n cancelDelay = defaultScheduler.delay(start, delay);\n }\n },\n next: sink.next,\n },\n signal,\n );\n\n if (!subscription.closed) current = subscription;\n };\n\n start();\n\n return () => {\n cancelDelay?.();\n current?.unsubscribe();\n };\n });\n}\n\nexport function first<T>(source: Stream<T>, options?: ValueOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n options?.signal?.removeEventListener('abort', abort);\n controller.abort();\n resolve(value);\n },\n },\n controller.signal,\n );\n });\n}\n\nexport function last<T>(source: Stream<T>, options?: ValueOptions): Promise<T | undefined> {\n return new Promise<T | undefined>((resolve, reject) => {\n const abort = (): void => reject(abortError());\n let latest: T | undefined;\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options?.signal?.removeEventListener('abort', abort);\n resolve(latest);\n },\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n latest = value;\n },\n },\n options?.signal ?? new AbortController().signal,\n );\n });\n}\n\nexport function toArray<T>(source: Stream<T>, options: ToArrayOptions): Promise<T[]> {\n assertNonNegativeInteger(options.maxItems, 'toArray maxItems');\n\n return new Promise<T[]>((resolve, reject) => {\n const controller = new AbortController();\n const values: T[] = [];\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options.signal?.aborted) {\n abort();\n\n return;\n }\n\n options.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options.signal?.removeEventListener('abort', abort);\n resolve(values);\n },\n error(reason) {\n options.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n if (values.length === options.maxItems) {\n options.signal?.removeEventListener('abort', abort);\n controller.abort();\n reject(new RangeError('toArray maxItems exceeded'));\n\n return;\n }\n\n values.push(value);\n },\n },\n controller.signal,\n );\n });\n}\n","import type { Operator, PipedStream, Stream, ValidPipe } from './types';\n\n/** Standalone composition preserves contextual types for inline generic operators. */\nexport function pipe<Input>(source: Stream<Input>): Stream<Input>;\nexport function pipe<Input, A>(source: Stream<Input>, operator1: Operator<Input, A>): Stream<A>;\nexport function pipe<Input, A, B>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<Input, A, B, C>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<Input, A, B, C, D>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<Input, A, B, C, D, E>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<Input, A, B, C, D, E, F>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<Input, A, B, C, D, E, F, G>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<Input, A, B, C, D, E, F, G, H>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n): Stream<I>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I, J>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n operator10: Operator<I, J>,\n): Stream<J>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators> {\n return operators.reduce(\n (current: Stream<unknown>, operator: Operator) => operator(current),\n source as Stream<unknown>,\n ) as PipedStream<Input, Operators>;\n}\n"],"mappings":"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"}
package/dist/flux.iife.js CHANGED
@@ -1,2 +1,2 @@
1
- var Flux=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){if(!Number.isInteger(e)||e<0)throw RangeError(`${t} must be a non-negative integer`)}function n(e,t){if(!Number.isInteger(e)||e<1)throw RangeError(`${t} must be a positive integer`)}function r(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function i(e,t){n(t.capacity,`Async iterable capacity`);let r=new AbortController,i=[],a={kind:`open`,queue:[]},o=()=>t.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 n=i.shift();if(n){n.resolve({done:!1,value:e});return}if(a.queue.length<t.capacity){a.queue.push(e);return}t.overflow===`drop-oldest`?(a.queue.shift(),a.queue.push(e)):t.overflow===`error`&&l(RangeError(`Async iterable buffer capacity exceeded`))}};return t.signal?.aborted?u():t.signal?.addEventListener(`abort`,u,{once:!0}),e.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 a(e,t){return{[Symbol.asyncIterator](){return i(e,t)}}}function o(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function s(e,t){let n=typeof e==`function`?{next:e}:e,r=new AbortController,i=!1,a,s=()=>{if(!i){i=!0,r.abort(),t?.removeEventListener(`abort`,s);try{a?.()}catch(e){o(e)}}};return t?.aborted?s():t?.addEventListener(`abort`,s,{once:!0}),{add:e=>{if(e){if(i){try{e()}catch(e){o(e)}return}a=e}},signal:r.signal,sink:{complete(){if(!i){try{n.complete?.()}catch(e){o(e)}s()}},error(e){if(!i){if(n.error)try{n.error(e)}catch(e){o(e)}else o(e);s()}},next(e){if(!i)try{n.next(e)}catch(e){s(),o(e)}}},subscription:{get closed(){return i},[Symbol.dispose]:s,unsubscribe:s}}}function c(e){return{subscribe(t,n){let r=s(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 l=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},u=class extends l{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};function d(e,t,n){return e.subscribe(t,{signal:n})}function f(...e){return c((t,n)=>{if(e.length===0){t.complete();return}let r=0,i=[];for(let a of e){let o=d(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 p(...e){return c((t,n)=>{let r=0,i,a=()=>{if(n.aborted)return;let o=e[r++];if(!o){t.complete();return}let s=d(o,{complete:a,error:t.error,next:t.next},n);i=s.closed?void 0:s};return a(),()=>i?.unsubscribe()})}function m(...e){return c((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,c]of e.entries()){if(n.aborted)break;let l=d(c,{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(l)}return()=>a.forEach(e=>e.unsubscribe())})}var h={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}};function g(...e){return c(t=>{for(let n of e)t.next(n);t.complete()})}function _(e){return Symbol.asyncIterator in Object(e)?c((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`?c((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):c((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 v(e,t){return c(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function y(e){return r(e.every,`Interval duration`),c(t=>{let n=0;return h.repeat(()=>t.next(n++),e.every)})}function b(e){return r(e.delay,`Timer delay`),e.interval!==void 0&&r(e.interval,`Timer interval`),c(t=>{let n=0,r,i=h.delay(()=>{if(t.next(n++),e.interval===void 0){t.complete();return}r=h.repeat(()=>t.next(n++),e.interval)},e.delay);return()=>{i(),r?.()}})}function x(e){return t(e,`take count`),t=>c((n,r)=>{if(e===0){n.complete();return}let i=0,a={};return a.current=d(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 S(e){return t=>c((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=d(e,{error:n.error,next:s},r);return r.aborted||(i=d(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{o(),i?.unsubscribe(),a?.unsubscribe()}})}function C(e){return r(e.for,`Debounce duration`),t=>c((n,r)=>{let i,a,o=!1,s=()=>{i=void 0,o&&(o=!1,n.next(a))},c=d(t,{complete(){i?.(),s(),n.complete()},error:n.error,next(t){a=t,o=!0,i?.(),i=h.delay(s,e.for)}},r);return()=>{i?.(),c.unsubscribe()}})}function w(e){return r(e.after,`Timeout duration`),t=>c((n,r)=>{let i,a=()=>{i=h.delay(()=>n.error(new u(e.after)),e.after)};a();let o=d(t,{complete(){i(),n.complete()},error(e){i(),n.error(e)},next(e){i(),a(),n.next(e)}},r);return()=>{i(),o.unsubscribe()}})}function T(e,t){try{e()}catch(e){t(e)}}function E(e){return t=>c((n,r)=>d(t,{complete:n.complete,error:n.error,next(t){T(()=>n.next(e(t)),n.error)}},r).unsubscribe)}function D(e){return t=>c((n,r)=>d(t,{complete:n.complete,error:n.error,next(t){T(()=>{e(t)&&n.next(t)},n.error)}},r).unsubscribe)}function O(e,t){return n=>c((r,i)=>{let a=t;return d(n,{complete:r.complete,error:r.error,next(t){T(()=>{a=e(a,t),r.next(a)},r.error)}},i).unsubscribe})}function k(e){return t=>c((n,r)=>{let i=!1,a,o=()=>{i&&!a&&n.complete()},s=d(t,{complete(){i=!0,o()},error:n.error,next(t){a?.unsubscribe(),a=void 0,T(()=>{let i=d(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 A(e){return t=>c((n,r)=>{let i=!1,a=new Set,o=()=>{i&&a.size===0&&n.complete()},s=d(t,{complete(){i=!0,o()},error:n.error,next(t){T(()=>{let i={};i.current=d(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 j(e,t){return n(t.capacity,`concatMap capacity`),n=>c((r,i)=>{let a=[],o=!1,s,c={},l=()=>{if(s||a.length===0){o&&!s&&a.length===0&&r.complete();return}let t=a.shift();T(()=>{let n=d(e(t),{complete(){s=void 0,l()},error:r.error,next:r.next},i);s=n.closed?void 0:n,s||l()},r.error)};return c.current=d(n,{complete(){o=!0,l()},error:r.error,next(e){if(a.length===t.capacity){c.current?.unsubscribe(),r.error(RangeError(`concatMap buffer capacity exceeded`));return}a.push(e),l()}},i),()=>{c.current?.unsubscribe(),s?.unsubscribe(),a.length=0}})}function M(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function N(e){return t(e.attempts,`retry attempts`),t=>c((n,r)=>{let i=0,a,o,s=()=>{if(r.aborted)return;let c=d(t,{complete:n.complete,error(t){if(i===e.attempts){n.error(t);return}let a=i++,c;if(T(()=>{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=h.delay(s,c)}},next:n.next},r);c.closed||(a=c)};return s(),()=>{o?.(),a?.unsubscribe()}})}function P(e,t){return new Promise((n,r)=>{let i=new AbortController,a=()=>{i.abort(),r(M())};if(t?.signal?.aborted){a();return}t?.signal?.addEventListener(`abort`,a,{once:!0}),d(e,{error(e){t?.signal?.removeEventListener(`abort`,a),r(e)},next(e){t?.signal?.removeEventListener(`abort`,a),i.abort(),n(e)}},i.signal)})}function F(e,t){return new Promise((n,r)=>{let i=()=>r(M()),a;if(t?.signal?.aborted){i();return}t?.signal?.addEventListener(`abort`,i,{once:!0}),d(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 I(e,n){return t(n.maxItems,`toArray maxItems`),new Promise((t,r)=>{let i=new AbortController,a=[],o=()=>{i.abort(),r(M())};if(n.signal?.aborted){o();return}n.signal?.addEventListener(`abort`,o,{once:!0}),d(e,{complete(){n.signal?.removeEventListener(`abort`,o),t(a)},error(e){n.signal?.removeEventListener(`abort`,o),r(e)},next(e){if(a.length===n.maxItems){n.signal?.removeEventListener(`abort`,o),i.abort(),r(RangeError(`toArray maxItems exceeded`));return}a.push(e)}},i.signal)})}function L(e,t){return t.reduce((e,t)=>t(e),e)}function R(e,...t){return L(e,t)}return e.FluxError=l,e.FluxTimeoutError=u,e.combineLatest=m,e.concat=p,e.concatMap=j,e.debounce=C,e.filter=D,e.first=P,e.from=_,e.fromEvent=v,e.interval=y,e.last=F,e.map=E,e.merge=f,e.mergeMap=A,e.of=g,e.pipe=R,e.retry=N,e.scan=O,e.stream=c,e.switchMap=k,e.take=x,e.takeUntil=S,e.timeout=w,e.timer=b,e.toArray=I,e.toAsyncIterable=a,e})({});
1
+ var Flux=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){if(!Number.isInteger(e)||e<0)throw RangeError(`${t} must be a non-negative integer`)}function n(e,t){if(!Number.isInteger(e)||e<1)throw RangeError(`${t} must be a positive integer`)}function r(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function i(e,t){n(t.capacity,`Async iterable capacity`);let r=new AbortController,i=[],a={kind:`open`,queue:[]},o=()=>t.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 n=i.shift();if(n){n.resolve({done:!1,value:e});return}if(a.queue.length<t.capacity){a.queue.push(e);return}t.overflow===`drop-oldest`?(a.queue.shift(),a.queue.push(e)):t.overflow===`error`&&l(RangeError(`Async iterable buffer capacity exceeded`))}};return t.signal?.aborted?u():t.signal?.addEventListener(`abort`,u,{once:!0}),e.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 a(e,t){return{[Symbol.asyncIterator](){return i(e,t)}}}function o(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function s(e,t){let n=typeof e==`function`?{next:e}:e,r=new AbortController,i=!1,a,s=()=>{if(!i){i=!0,r.abort(),t?.removeEventListener(`abort`,s);try{a?.()}catch(e){o(e)}}};return t?.aborted?s():t?.addEventListener(`abort`,s,{once:!0}),{add:e=>{if(e){if(i){try{e()}catch(e){o(e)}return}a=e}},signal:r.signal,sink:{complete(){if(!i){try{n.complete?.()}catch(e){o(e)}s()}},error(e){if(!i){if(n.error)try{n.error(e)}catch(e){o(e)}else o(e);s()}},next(e){if(!i)try{n.next(e)}catch(e){s(),o(e)}}},subscription:{get closed(){return i},[Symbol.dispose]:s,unsubscribe:s}}}function c(e){return{subscribe(t,n){let r=s(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 l=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},u=class extends l{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};function d(e,t,n){return e.subscribe(t,{signal:n})}function f(...e){return c((t,n)=>{if(e.length===0){t.complete();return}let r=0,i=[];for(let a of e){let o=d(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 p(...e){return c((t,n)=>{let r=0,i,a=()=>{if(n.aborted)return;let o=e[r++];if(!o){t.complete();return}let s=d(o,{complete:a,error:t.error,next:t.next},n);i=s.closed?void 0:s};return a(),()=>i?.unsubscribe()})}function m(...e){return c((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,c]of e.entries()){if(n.aborted)break;let l=d(c,{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(l)}return()=>a.forEach(e=>{e.unsubscribe()})})}var h={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}};function g(...e){return c(t=>{for(let n of e)t.next(n);t.complete()})}function _(e){return Symbol.asyncIterator in Object(e)?c((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`?c((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):c((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 v(e,t){return c(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function y(e){return r(e.every,`Interval duration`),c(t=>{let n=0;return h.repeat(()=>t.next(n++),e.every)})}function b(e){return r(e.delay,`Timer delay`),e.interval!==void 0&&r(e.interval,`Timer interval`),c(t=>{let n=0,r,i=h.delay(()=>{if(t.next(n++),e.interval===void 0){t.complete();return}r=h.repeat(()=>t.next(n++),e.interval)},e.delay);return()=>{i(),r?.()}})}function x(e){return t(e,`take count`),t=>c((n,r)=>{if(e===0){n.complete();return}let i=0,a={};return a.current=d(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 S(e){return t=>c((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=d(e,{error:n.error,next:s},r);return r.aborted||(i=d(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{o(),i?.unsubscribe(),a?.unsubscribe()}})}function C(e){return r(e.for,`Debounce duration`),t=>c((n,r)=>{let i,a,o=!1,s=()=>{i=void 0,o&&(o=!1,n.next(a))},c=d(t,{complete(){i?.(),s(),n.complete()},error:n.error,next(t){a=t,o=!0,i?.(),i=h.delay(s,e.for)}},r);return()=>{i?.(),c.unsubscribe()}})}function w(e){return r(e.after,`Timeout duration`),t=>c((n,r)=>{let i,a=()=>{i=h.delay(()=>n.error(new u(e.after)),e.after)};a();let o=d(t,{complete(){i(),n.complete()},error(e){i(),n.error(e)},next(e){i(),a(),n.next(e)}},r);return()=>{i(),o.unsubscribe()}})}function T(e,t){try{e()}catch(e){t(e)}}function E(e){return t=>c((n,r)=>d(t,{complete:n.complete,error:n.error,next(t){T(()=>n.next(e(t)),n.error)}},r).unsubscribe)}function D(e){return t=>c((n,r)=>d(t,{complete:n.complete,error:n.error,next(t){T(()=>{e(t)&&n.next(t)},n.error)}},r).unsubscribe)}function O(e,t){return n=>c((r,i)=>{let a=t;return d(n,{complete:r.complete,error:r.error,next(t){T(()=>{a=e(a,t),r.next(a)},r.error)}},i).unsubscribe})}function k(e){return t=>c((n,r)=>{let i=!1,a,o=()=>{i&&!a&&n.complete()},s=d(t,{complete(){i=!0,o()},error:n.error,next(t){a?.unsubscribe(),a=void 0,T(()=>{let i=d(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 A(e){return t=>c((n,r)=>{let i=!1,a=new Set,o=()=>{i&&a.size===0&&n.complete()},s=d(t,{complete(){i=!0,o()},error:n.error,next(t){T(()=>{let i={};i.current=d(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 j(e,t){return n(t.capacity,`concatMap capacity`),n=>c((r,i)=>{let a=[],o=!1,s,c={},l=()=>{if(s||a.length===0){o&&!s&&a.length===0&&r.complete();return}let t=a.shift();T(()=>{let n=d(e(t),{complete(){s=void 0,l()},error:r.error,next:r.next},i);s=n.closed?void 0:n,s||l()},r.error)};return c.current=d(n,{complete(){o=!0,l()},error:r.error,next(e){if(a.length===t.capacity){c.current?.unsubscribe(),r.error(RangeError(`concatMap buffer capacity exceeded`));return}a.push(e),l()}},i),()=>{c.current?.unsubscribe(),s?.unsubscribe(),a.length=0}})}function M(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function N(e){return t(e.attempts,`retry attempts`),t=>c((n,r)=>{let i=0,a,o,s=()=>{if(r.aborted)return;let c=d(t,{complete:n.complete,error(t){if(i===e.attempts){n.error(t);return}let a=i++,c;if(T(()=>{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=h.delay(s,c)}},next:n.next},r);c.closed||(a=c)};return s(),()=>{o?.(),a?.unsubscribe()}})}function P(e,t){return new Promise((n,r)=>{let i=new AbortController,a=()=>{i.abort(),r(M())};if(t?.signal?.aborted){a();return}t?.signal?.addEventListener(`abort`,a,{once:!0}),d(e,{error(e){t?.signal?.removeEventListener(`abort`,a),r(e)},next(e){t?.signal?.removeEventListener(`abort`,a),i.abort(),n(e)}},i.signal)})}function F(e,t){return new Promise((n,r)=>{let i=()=>r(M()),a;if(t?.signal?.aborted){i();return}t?.signal?.addEventListener(`abort`,i,{once:!0}),d(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 I(e,n){return t(n.maxItems,`toArray maxItems`),new Promise((t,r)=>{let i=new AbortController,a=[],o=()=>{i.abort(),r(M())};if(n.signal?.aborted){o();return}n.signal?.addEventListener(`abort`,o,{once:!0}),d(e,{complete(){n.signal?.removeEventListener(`abort`,o),t(a)},error(e){n.signal?.removeEventListener(`abort`,o),r(e)},next(e){if(a.length===n.maxItems){n.signal?.removeEventListener(`abort`,o),i.abort(),r(RangeError(`toArray maxItems exceeded`));return}a.push(e)}},i.signal)})}function L(e,...t){return t.reduce((e,t)=>t(e),e)}return e.FluxError=l,e.FluxTimeoutError=u,e.combineLatest=m,e.concat=p,e.concatMap=j,e.debounce=C,e.filter=D,e.first=P,e.from=_,e.fromEvent=v,e.interval=y,e.last=F,e.map=E,e.merge=f,e.mergeMap=A,e.of=g,e.pipe=L,e.retry=N,e.scan=O,e.stream=c,e.switchMap=k,e.take=x,e.takeUntil=S,e.timeout=w,e.timer=b,e.toArray=I,e.toAsyncIterable=a,e})({});
2
2
  //# sourceMappingURL=flux.iife.js.map