@vielzeug/flux 2.4.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +12 -22
  2. package/dist/_iterator.cjs +1 -1
  3. package/dist/_iterator.cjs.map +1 -1
  4. package/dist/_iterator.d.ts +1 -1
  5. package/dist/_iterator.d.ts.map +1 -1
  6. package/dist/_iterator.js +35 -31
  7. package/dist/_iterator.js.map +1 -1
  8. package/dist/_link.cjs.map +1 -1
  9. package/dist/_link.d.ts +1 -1
  10. package/dist/_link.d.ts.map +1 -1
  11. package/dist/_link.js.map +1 -1
  12. package/dist/_numeric.cjs +1 -1
  13. package/dist/_numeric.cjs.map +1 -1
  14. package/dist/_numeric.js +1 -1
  15. package/dist/_numeric.js.map +1 -1
  16. package/dist/_subscription.cjs.map +1 -1
  17. package/dist/_subscription.d.ts +1 -1
  18. package/dist/_subscription.d.ts.map +1 -1
  19. package/dist/_subscription.js.map +1 -1
  20. package/dist/async.cjs.map +1 -1
  21. package/dist/async.d.ts +1 -1
  22. package/dist/async.d.ts.map +1 -1
  23. package/dist/async.js.map +1 -1
  24. package/dist/channel.cjs +1 -1
  25. package/dist/channel.cjs.map +1 -1
  26. package/dist/channel.d.ts +1 -1
  27. package/dist/channel.d.ts.map +1 -1
  28. package/dist/channel.js +1 -1
  29. package/dist/channel.js.map +1 -1
  30. package/dist/core.cjs +1 -1
  31. package/dist/core.cjs.map +1 -1
  32. package/dist/core.d.ts +8 -1
  33. package/dist/core.d.ts.map +1 -1
  34. package/dist/core.js +30 -1
  35. package/dist/core.js.map +1 -1
  36. package/dist/errors.cjs +1 -1
  37. package/dist/errors.cjs.map +1 -1
  38. package/dist/errors.d.ts +4 -0
  39. package/dist/errors.d.ts.map +1 -1
  40. package/dist/errors.js +5 -1
  41. package/dist/errors.js.map +1 -1
  42. package/dist/flux.cjs +1 -1
  43. package/dist/flux.cjs.map +1 -1
  44. package/dist/flux.iife.js +1 -1
  45. package/dist/flux.iife.js.map +1 -1
  46. package/dist/flux.js +1 -1
  47. package/dist/flux.js.map +1 -1
  48. package/dist/index.cjs +1 -1
  49. package/dist/index.d.ts +13 -13
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +10 -10
  52. package/dist/operators/combination.cjs +1 -1
  53. package/dist/operators/combination.cjs.map +1 -1
  54. package/dist/operators/combination.d.ts +1 -1
  55. package/dist/operators/combination.d.ts.map +1 -1
  56. package/dist/operators/combination.js +28 -13
  57. package/dist/operators/combination.js.map +1 -1
  58. package/dist/operators/creation.cjs +1 -1
  59. package/dist/operators/creation.cjs.map +1 -1
  60. package/dist/operators/creation.d.ts +1 -1
  61. package/dist/operators/creation.d.ts.map +1 -1
  62. package/dist/operators/creation.js +36 -30
  63. package/dist/operators/creation.js.map +1 -1
  64. package/dist/operators/filtering.cjs +1 -1
  65. package/dist/operators/filtering.cjs.map +1 -1
  66. package/dist/operators/filtering.d.ts +1 -1
  67. package/dist/operators/filtering.d.ts.map +1 -1
  68. package/dist/operators/filtering.js +31 -28
  69. package/dist/operators/filtering.js.map +1 -1
  70. package/dist/operators/transformation.cjs +1 -1
  71. package/dist/operators/transformation.cjs.map +1 -1
  72. package/dist/operators/transformation.d.ts +1 -1
  73. package/dist/operators/transformation.d.ts.map +1 -1
  74. package/dist/operators/transformation.js +50 -50
  75. package/dist/operators/transformation.js.map +1 -1
  76. package/dist/operators/utility.cjs +1 -1
  77. package/dist/operators/utility.cjs.map +1 -1
  78. package/dist/operators/utility.d.ts +5 -5
  79. package/dist/operators/utility.d.ts.map +1 -1
  80. package/dist/operators/utility.js +57 -57
  81. package/dist/operators/utility.js.map +1 -1
  82. package/dist/pipe.cjs.map +1 -1
  83. package/dist/pipe.d.ts +1 -1
  84. package/dist/pipe.d.ts.map +1 -1
  85. package/dist/pipe.js.map +1 -1
  86. package/dist/subjects.d.ts +2 -2
  87. package/dist/subjects.d.ts.map +1 -1
  88. package/package.json +10 -62
  89. package/dist/adapters/courier.cjs +0 -2
  90. package/dist/adapters/courier.cjs.map +0 -1
  91. package/dist/adapters/courier.d.ts +0 -4
  92. package/dist/adapters/courier.d.ts.map +0 -1
  93. package/dist/adapters/courier.js +0 -12
  94. package/dist/adapters/courier.js.map +0 -1
  95. package/dist/adapters/herald.cjs +0 -2
  96. package/dist/adapters/herald.cjs.map +0 -1
  97. package/dist/adapters/herald.d.ts +0 -5
  98. package/dist/adapters/herald.d.ts.map +0 -1
  99. package/dist/adapters/herald.js +0 -22
  100. package/dist/adapters/herald.js.map +0 -1
  101. package/dist/adapters/pulse.cjs +0 -2
  102. package/dist/adapters/pulse.cjs.map +0 -1
  103. package/dist/adapters/pulse.d.ts +0 -5
  104. package/dist/adapters/pulse.d.ts.map +0 -1
  105. package/dist/adapters/pulse.js +0 -18
  106. package/dist/adapters/pulse.js.map +0 -1
  107. package/dist/adapters/ripple.cjs +0 -2
  108. package/dist/adapters/ripple.cjs.map +0 -1
  109. package/dist/adapters/ripple.d.ts +0 -19
  110. package/dist/adapters/ripple.d.ts.map +0 -1
  111. package/dist/adapters/ripple.js +0 -46
  112. package/dist/adapters/ripple.js.map +0 -1
  113. package/dist/courier.cjs +0 -1
  114. package/dist/courier.d.ts +0 -2
  115. package/dist/courier.d.ts.map +0 -1
  116. package/dist/courier.js +0 -2
  117. package/dist/herald.cjs +0 -1
  118. package/dist/herald.d.ts +0 -2
  119. package/dist/herald.d.ts.map +0 -1
  120. package/dist/herald.js +0 -2
  121. package/dist/pulse.cjs +0 -1
  122. package/dist/pulse.d.ts +0 -2
  123. package/dist/pulse.d.ts.map +0 -1
  124. package/dist/pulse.js +0 -2
  125. package/dist/ripple.cjs +0 -1
  126. package/dist/ripple.d.ts +0 -3
  127. package/dist/ripple.d.ts.map +0 -1
  128. package/dist/ripple.js +0 -2
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- export { toAsyncIterable } from './async';
2
- export { stream } from './core';
3
- export { FluxCapacityError, FluxEmptyError, FluxError, FluxTimeoutError } from './errors';
4
- export { combineLatest, concat, merge } from './operators/combination';
5
- export type { TimerOptions } from './operators/creation';
6
- export { from, fromEvent, interval, of, timer } from './operators/creation';
7
- export { debounce, take, takeUntil, timeout } from './operators/filtering';
8
- export type { FlattenOptions } from './operators/transformation';
9
- export { concatMap, filter, map, mergeMap, scan, switchMap } from './operators/transformation';
10
- export type { RetryOptions, ToArrayOptions, ValueOptions } from './operators/utility';
11
- export { first, last, retry, toArray } from './operators/utility';
12
- export { pipe } from './pipe';
13
- export type { AsyncIterableOptions, Observer, Operator, OverflowPolicy, Producer, Sink, Stream, SubscribeOptions, Subscription, Teardown, } from './types';
1
+ export { toAsyncIterable } from './async.js';
2
+ export { fromStore, fromSubscribe, stream } from './core.js';
3
+ export { FluxCapacityError, FluxEmptyError, FluxError, FluxTimeoutError } from './errors.js';
4
+ export { combineLatest, concat, merge } from './operators/combination.js';
5
+ export type { TimerOptions } from './operators/creation.js';
6
+ export { from, fromEvent, interval, of, timer } from './operators/creation.js';
7
+ export { debounce, take, takeUntil, timeout } from './operators/filtering.js';
8
+ export type { FlattenOptions } from './operators/transformation.js';
9
+ export { concatMap, filter, map, mergeMap, scan, switchMap } from './operators/transformation.js';
10
+ export type { RetryOptions, ToArrayOptions, ValueOptions } from './operators/utility.js';
11
+ export { first, last, retry, toArray } from './operators/utility.js';
12
+ export { pipe } from './pipe.js';
13
+ export type { AsyncIterableOptions, Observer, Operator, OverflowPolicy, Producer, Sink, Stream, SubscribeOptions, Subscription, Teardown, } from './types.js';
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC/F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,QAAQ,GACT,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAClG,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,QAAQ,GACT,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import { toAsyncIterable as e } from "./async.js";
2
- import { stream as t } from "./core.js";
3
- import { FluxCapacityError as n, FluxEmptyError as r, FluxError as i, FluxTimeoutError as a } from "./errors.js";
4
- import { combineLatest as o, concat as s, merge as c } from "./operators/combination.js";
5
- import { from as l, fromEvent as u, interval as d, of as f, timer as p } from "./operators/creation.js";
6
- import { debounce as m, take as h, takeUntil as g, timeout as _ } from "./operators/filtering.js";
7
- import { concatMap as v, filter as y, map as b, mergeMap as x, scan as S, switchMap as C } from "./operators/transformation.js";
8
- import { first as w, last as T, retry as E, toArray as D } from "./operators/utility.js";
9
- import { pipe as O } from "./pipe.js";
10
- export { n as FluxCapacityError, r as FluxEmptyError, i as FluxError, a as FluxTimeoutError, o as combineLatest, s as concat, v as concatMap, m as debounce, y as filter, w as first, l as from, u as fromEvent, d as interval, T as last, b as map, c as merge, x as mergeMap, f as of, O as pipe, E as retry, S as scan, t as stream, C as switchMap, h as take, g as takeUntil, _ as timeout, p as timer, D as toArray, e as toAsyncIterable };
1
+ import { FluxCapacityError as e, FluxEmptyError as t, FluxError as n, FluxTimeoutError as r } from "./errors.js";
2
+ import { toAsyncIterable as i } from "./async.js";
3
+ import { fromStore as a, fromSubscribe as o, stream as s } from "./core.js";
4
+ import { combineLatest as c, concat as l, merge as u } from "./operators/combination.js";
5
+ import { from as d, fromEvent as f, interval as p, of as m, timer as h } from "./operators/creation.js";
6
+ import { debounce as g, take as _, takeUntil as v, timeout as y } from "./operators/filtering.js";
7
+ import { concatMap as b, filter as x, map as S, mergeMap as C, scan as w, switchMap as T } from "./operators/transformation.js";
8
+ import { first as E, last as D, retry as O, toArray as k } from "./operators/utility.js";
9
+ import { pipe as A } from "./pipe.js";
10
+ export { e as FluxCapacityError, t as FluxEmptyError, n as FluxError, r as FluxTimeoutError, c as combineLatest, l as concat, b as concatMap, g as debounce, x as filter, E as first, d as from, f as fromEvent, a as fromStore, o as fromSubscribe, p as interval, D as last, S as map, u as merge, C as mergeMap, m as of, A as pipe, O as retry, w as scan, s as stream, T as switchMap, _ as take, v as takeUntil, y as timeout, h as timer, k as toArray, i as toAsyncIterable };
@@ -1,2 +1,2 @@
1
- const e=require("../core.cjs"),t=require("../_link.cjs");function n(...n){return e.stream((e,r)=>{if(n.length===0){e.complete();return}let i=0,a=[];for(let o of n){let s=t.link(o,{complete(){i++,i===n.length&&e.complete()},error:e.error,next:e.next},r);if(a.push(s),r.aborted)break}return()=>a.forEach(e=>{e.unsubscribe()})})}function r(...n){return e.stream((e,r)=>{let i=0,a,o=()=>{if(r.aborted)return;let s=n[i++];if(!s){e.complete();return}let c=t.link(s,{complete:o,error:e.error,next:e.next},r);a=c.closed?void 0:c};return o(),()=>a?.unsubscribe()})}function i(...n){return e.stream((e,r)=>{if(n.length===0){e.complete();return}let i=Array(n.length),a=Array(n.length).fill(!1),o=[],s=0;for(let[c,l]of n.entries()){if(r.aborted)break;let u=t.link(l,{complete(){if(!a[c]){e.complete();return}s++,s===n.length&&e.complete()},error:e.error,next(t){i[c]=t,a[c]=!0,a.every(Boolean)&&e.next([...i])}},r);o.push(u)}return()=>o.forEach(e=>{e.unsubscribe()})})}exports.combineLatest=i,exports.concat=r,exports.merge=n;
1
+ const e=require("../core.cjs"),t=require("../_link.cjs");function n(...n){return e.stream((e,r)=>{if(n.length===0){e.complete();return}let i=0,a=[];for(let o of n){let s=t.link(o,{complete(){i++,i===n.length&&e.complete()},error:e.error,next:e.next},r);if(a.push(s),r.aborted)break}return()=>a.forEach(e=>{e.unsubscribe()})})}function r(...n){return e.stream((e,r)=>{let i=!1,a,o=0,s=!1,c=()=>{if(!r.aborted){if(i){s=!0;return}i=!0;try{do{s=!1;let i=n[o++];if(!i){e.complete();return}let l=t.link(i,{complete(){a=void 0,c()},error:e.error,next:e.next},r);a=l.closed?void 0:l}while(s&&!r.aborted)}finally{i=!1}}};return c(),()=>a?.unsubscribe()})}function i(...n){return e.stream((e,r)=>{if(n.length===0){e.complete();return}let i=Array(n.length),a=Array(n.length).fill(!1),o=[],s=0;for(let[c,l]of n.entries()){if(r.aborted)break;let u=t.link(l,{complete(){if(!a[c]){e.complete();return}s++,s===n.length&&e.complete()},error:e.error,next(t){i[c]=t,a[c]=!0,a.every(Boolean)&&e.next([...i])}},r);o.push(u)}return()=>o.forEach(e=>{e.unsubscribe()})})}exports.combineLatest=i,exports.concat=r,exports.merge=n;
2
2
  //# sourceMappingURL=combination.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"combination.cjs","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["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"],"mappings":"yDAOA,SAAgB,EAAS,GAAG,EAAiC,CAC3D,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAK,SAAS,EAEd,MACF,CAEA,IAAI,EAAY,EACV,EAAgC,CAAC,EAEvC,IAAK,IAAM,KAAU,EAAS,CAC5B,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,IAEI,IAAc,EAAQ,QAAQ,EAAK,SAAS,CAClD,EACA,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,EAIA,GAFA,EAAc,KAAK,CAAY,EAE3B,EAAO,QAAS,KACtB,CAEA,UACE,EAAc,QAAS,GAAiB,CACtC,EAAa,YAAY,CAC3B,CAAC,CACL,CAAC,CACH,CAEA,SAAgB,EAAU,GAAG,EAAiC,CAC5D,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,IAAI,EAAQ,EACR,EAEE,MAA4B,CAChC,GAAI,EAAO,QAAS,OAEpB,IAAM,EAAS,EAAQ,KAEvB,GAAI,CAAC,EAAQ,CACX,EAAK,SAAS,EAEd,MACF,CAEA,IAAM,EAAe,EAAA,KACnB,EACA,CACE,SAAU,EACV,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,EAEA,EAAU,EAAa,OAAS,IAAA,GAAY,CAC9C,EAIA,OAFA,EAAc,MAED,GAAS,YAAY,CACpC,CAAC,CACH,CAEA,SAAgB,EAAoD,GAAG,EAAqC,CAC1G,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAK,SAAS,EAEd,MACF,CAEA,IAAM,EAAa,MAAe,EAAQ,MAAM,EAC1C,EAAY,MAAe,EAAQ,MAAM,CAAC,CAAC,KAAK,EAAK,EACrD,EAAgC,CAAC,EACnC,EAAY,EAEhB,IAAK,GAAM,CAAC,EAAO,KAAW,EAAQ,QAAQ,EAAG,CAC/C,GAAI,EAAO,QAAS,MAEpB,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,GAAI,CAAC,EAAM,GAAQ,CACjB,EAAK,SAAS,EAEd,MACF,CAEA,IAEI,IAAc,EAAQ,QAAQ,EAAK,SAAS,CAClD,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAO,GAAS,EAChB,EAAM,GAAS,GAEX,EAAM,MAAM,OAAO,GAAG,EAAK,KAAK,CAAC,GAAG,CAAM,CAAoB,CACpE,CACF,EACA,CACF,EAEA,EAAc,KAAK,CAAY,CACjC,CAEA,UACE,EAAc,QAAS,GAAiB,CACtC,EAAa,YAAY,CAC3B,CAAC,CACL,CAAC,CACH"}
1
+ {"version":3,"file":"combination.cjs","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { stream } from '../core.js';\nimport type { Stream, Subscription } from '../types.js';\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 advancing = false;\n let current: Subscription | undefined;\n let index = 0;\n let requested = false;\n\n const subscribeNext = (): void => {\n if (signal.aborted) return;\n if (advancing) {\n requested = true;\n return;\n }\n\n advancing = true;\n try {\n do {\n requested = false;\n const source = sources[index++];\n\n if (!source) {\n sink.complete();\n return;\n }\n\n const subscription = link(\n source,\n {\n complete() {\n current = undefined;\n subscribeNext();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n current = subscription.closed ? undefined : subscription;\n } while (requested && !signal.aborted);\n } finally {\n advancing = false;\n }\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"],"mappings":"yDAOA,SAAgB,EAAS,GAAG,EAAiC,CAC3D,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAK,SAAS,EAEd,MACF,CAEA,IAAI,EAAY,EACV,EAAgC,CAAC,EAEvC,IAAK,IAAM,KAAU,EAAS,CAC5B,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,IAEI,IAAc,EAAQ,QAAQ,EAAK,SAAS,CAClD,EACA,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,EAIA,GAFA,EAAc,KAAK,CAAY,EAE3B,EAAO,QAAS,KACtB,CAEA,UACE,EAAc,QAAS,GAAiB,CACtC,EAAa,YAAY,CAC3B,CAAC,CACL,CAAC,CACH,CAEA,SAAgB,EAAU,GAAG,EAAiC,CAC5D,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,IAAI,EAAY,GACZ,EACA,EAAQ,EACR,EAAY,GAEV,MAA4B,CAC5B,MAAO,QACX,IAAI,EAAW,CACb,EAAY,GACZ,MACF,CAEA,EAAY,GACZ,GAAI,CACF,EAAG,CACD,EAAY,GACZ,IAAM,EAAS,EAAQ,KAEvB,GAAI,CAAC,EAAQ,CACX,EAAK,SAAS,EACd,MACF,CAEA,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,EAAU,IAAA,GACV,EAAc,CAChB,EACA,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,EAEA,EAAU,EAAa,OAAS,IAAA,GAAY,CAC9C,OAAS,GAAa,CAAC,EAAO,QAChC,QAAU,CACR,EAAY,EACd,CA9BA,CA+BF,EAIA,OAFA,EAAc,MAED,GAAS,YAAY,CACpC,CAAC,CACH,CAEA,SAAgB,EAAoD,GAAG,EAAqC,CAC1G,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAK,SAAS,EAEd,MACF,CAEA,IAAM,EAAa,MAAe,EAAQ,MAAM,EAC1C,EAAY,MAAe,EAAQ,MAAM,CAAC,CAAC,KAAK,EAAK,EACrD,EAAgC,CAAC,EACnC,EAAY,EAEhB,IAAK,GAAM,CAAC,EAAO,KAAW,EAAQ,QAAQ,EAAG,CAC/C,GAAI,EAAO,QAAS,MAEpB,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,GAAI,CAAC,EAAM,GAAQ,CACjB,EAAK,SAAS,EAEd,MACF,CAEA,IAEI,IAAc,EAAQ,QAAQ,EAAK,SAAS,CAClD,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAO,GAAS,EAChB,EAAM,GAAS,GAEX,EAAM,MAAM,OAAO,GAAG,EAAK,KAAK,CAAC,GAAG,CAAM,CAAoB,CACpE,CACF,EACA,CACF,EAEA,EAAc,KAAK,CAAY,CACjC,CAEA,UACE,EAAc,QAAS,GAAiB,CACtC,EAAa,YAAY,CAC3B,CAAC,CACL,CAAC,CACH"}
@@ -1,4 +1,4 @@
1
- import type { Stream } from '../types';
1
+ import type { Stream } from '../types.js';
2
2
  type StreamValue<T> = T extends Stream<infer Value> ? Value : never;
3
3
  type StreamValues<T extends readonly Stream<unknown>[]> = {
4
4
  [Key in keyof T]: StreamValue<T[Key]>;
@@ -1 +1 @@
1
- {"version":3,"file":"combination.d.ts","sourceRoot":"","sources":["../../src/operators/combination.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAErD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAAE,CAAC;AAEpG,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAoC3D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAiC5D;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAiD1G"}
1
+ {"version":3,"file":"combination.d.ts","sourceRoot":"","sources":["../../src/operators/combination.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAExD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAAE,CAAC;AAEpG,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAoC3D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAiD5D;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAiD1G"}
@@ -25,21 +25,36 @@ function n(...n) {
25
25
  }
26
26
  function r(...n) {
27
27
  return e((e, r) => {
28
- let i = 0, a, o = () => {
29
- if (r.aborted) return;
30
- let s = n[i++];
31
- if (!s) {
32
- e.complete();
33
- return;
28
+ let i = !1, a, o = 0, s = !1, c = () => {
29
+ if (!r.aborted) {
30
+ if (i) {
31
+ s = !0;
32
+ return;
33
+ }
34
+ i = !0;
35
+ try {
36
+ do {
37
+ s = !1;
38
+ let i = n[o++];
39
+ if (!i) {
40
+ e.complete();
41
+ return;
42
+ }
43
+ let l = t(i, {
44
+ complete() {
45
+ a = void 0, c();
46
+ },
47
+ error: e.error,
48
+ next: e.next
49
+ }, r);
50
+ a = l.closed ? void 0 : l;
51
+ } while (s && !r.aborted);
52
+ } finally {
53
+ i = !1;
54
+ }
34
55
  }
35
- let c = t(s, {
36
- complete: o,
37
- error: e.error,
38
- next: e.next
39
- }, r);
40
- a = c.closed ? void 0 : c;
41
56
  };
42
- return o(), () => a?.unsubscribe();
57
+ return c(), () => a?.unsubscribe();
43
58
  });
44
59
  }
45
60
  function i(...n) {
@@ -1 +1 @@
1
- {"version":3,"file":"combination.js","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["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"],"mappings":";;;AAOA,SAAgB,EAAS,GAAG,GAAiC;CAC3D,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,EAAQ,WAAW,GAAG;GACxB,EAAK,SAAS;GAEd;EACF;EAEA,IAAI,IAAY,GACV,IAAgC,CAAC;EAEvC,KAAK,IAAM,KAAU,GAAS;GAC5B,IAAM,IAAe,EACnB,GACA;IACE,WAAW;KAGT,AAFA,KAEI,MAAc,EAAQ,UAAQ,EAAK,SAAS;IAClD;IACA,OAAO,EAAK;IACZ,MAAM,EAAK;GACb,GACA,CACF;GAIA,IAFA,EAAc,KAAK,CAAY,GAE3B,EAAO,SAAS;EACtB;EAEA,aACE,EAAc,SAAS,MAAiB;GACtC,EAAa,YAAY;EAC3B,CAAC;CACL,CAAC;AACH;AAEA,SAAgB,EAAU,GAAG,GAAiC;CAC5D,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,IAAQ,GACR,GAEE,UAA4B;GAChC,IAAI,EAAO,SAAS;GAEpB,IAAM,IAAS,EAAQ;GAEvB,IAAI,CAAC,GAAQ;IACX,EAAK,SAAS;IAEd;GACF;GAEA,IAAM,IAAe,EACnB,GACA;IACE,UAAU;IACV,OAAO,EAAK;IACZ,MAAM,EAAK;GACb,GACA,CACF;GAEA,IAAU,EAAa,SAAS,KAAA,IAAY;EAC9C;EAIA,OAFA,EAAc,SAED,GAAS,YAAY;CACpC,CAAC;AACH;AAEA,SAAgB,EAAoD,GAAG,GAAqC;CAC1G,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,EAAQ,WAAW,GAAG;GACxB,EAAK,SAAS;GAEd;EACF;EAEA,IAAM,IAAa,MAAe,EAAQ,MAAM,GAC1C,IAAY,MAAe,EAAQ,MAAM,CAAC,CAAC,KAAK,EAAK,GACrD,IAAgC,CAAC,GACnC,IAAY;EAEhB,KAAK,IAAM,CAAC,GAAO,MAAW,EAAQ,QAAQ,GAAG;GAC/C,IAAI,EAAO,SAAS;GAEpB,IAAM,IAAe,EACnB,GACA;IACE,WAAW;KACT,IAAI,CAAC,EAAM,IAAQ;MACjB,EAAK,SAAS;MAEd;KACF;KAIA,AAFA,KAEI,MAAc,EAAQ,UAAQ,EAAK,SAAS;IAClD;IACA,OAAO,EAAK;IACZ,KAAK,GAAO;KAIV,AAHA,EAAO,KAAS,GAChB,EAAM,KAAS,IAEX,EAAM,MAAM,OAAO,KAAG,EAAK,KAAK,CAAC,GAAG,CAAM,CAAoB;IACpE;GACF,GACA,CACF;GAEA,EAAc,KAAK,CAAY;EACjC;EAEA,aACE,EAAc,SAAS,MAAiB;GACtC,EAAa,YAAY;EAC3B,CAAC;CACL,CAAC;AACH"}
1
+ {"version":3,"file":"combination.js","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { stream } from '../core.js';\nimport type { Stream, Subscription } from '../types.js';\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 advancing = false;\n let current: Subscription | undefined;\n let index = 0;\n let requested = false;\n\n const subscribeNext = (): void => {\n if (signal.aborted) return;\n if (advancing) {\n requested = true;\n return;\n }\n\n advancing = true;\n try {\n do {\n requested = false;\n const source = sources[index++];\n\n if (!source) {\n sink.complete();\n return;\n }\n\n const subscription = link(\n source,\n {\n complete() {\n current = undefined;\n subscribeNext();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n current = subscription.closed ? undefined : subscription;\n } while (requested && !signal.aborted);\n } finally {\n advancing = false;\n }\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"],"mappings":";;;AAOA,SAAgB,EAAS,GAAG,GAAiC;CAC3D,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,EAAQ,WAAW,GAAG;GACxB,EAAK,SAAS;GAEd;EACF;EAEA,IAAI,IAAY,GACV,IAAgC,CAAC;EAEvC,KAAK,IAAM,KAAU,GAAS;GAC5B,IAAM,IAAe,EACnB,GACA;IACE,WAAW;KAGT,AAFA,KAEI,MAAc,EAAQ,UAAQ,EAAK,SAAS;IAClD;IACA,OAAO,EAAK;IACZ,MAAM,EAAK;GACb,GACA,CACF;GAIA,IAFA,EAAc,KAAK,CAAY,GAE3B,EAAO,SAAS;EACtB;EAEA,aACE,EAAc,SAAS,MAAiB;GACtC,EAAa,YAAY;EAC3B,CAAC;CACL,CAAC;AACH;AAEA,SAAgB,EAAU,GAAG,GAAiC;CAC5D,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,IAAY,IACZ,GACA,IAAQ,GACR,IAAY,IAEV,UAA4B;GAC5B,OAAO,SACX;QAAI,GAAW;KACb,IAAY;KACZ;IACF;IAEA,IAAY;IACZ,IAAI;KACF,GAAG;MACD,IAAY;MACZ,IAAM,IAAS,EAAQ;MAEvB,IAAI,CAAC,GAAQ;OACX,EAAK,SAAS;OACd;MACF;MAEA,IAAM,IAAe,EACnB,GACA;OACE,WAAW;QAET,AADA,IAAU,KAAA,GACV,EAAc;OAChB;OACA,OAAO,EAAK;OACZ,MAAM,EAAK;MACb,GACA,CACF;MAEA,IAAU,EAAa,SAAS,KAAA,IAAY;KAC9C,SAAS,KAAa,CAAC,EAAO;IAChC,UAAU;KACR,IAAY;IACd;GA9BA;EA+BF;EAIA,OAFA,EAAc,SAED,GAAS,YAAY;CACpC,CAAC;AACH;AAEA,SAAgB,EAAoD,GAAG,GAAqC;CAC1G,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,EAAQ,WAAW,GAAG;GACxB,EAAK,SAAS;GAEd;EACF;EAEA,IAAM,IAAa,MAAe,EAAQ,MAAM,GAC1C,IAAY,MAAe,EAAQ,MAAM,CAAC,CAAC,KAAK,EAAK,GACrD,IAAgC,CAAC,GACnC,IAAY;EAEhB,KAAK,IAAM,CAAC,GAAO,MAAW,EAAQ,QAAQ,GAAG;GAC/C,IAAI,EAAO,SAAS;GAEpB,IAAM,IAAe,EACnB,GACA;IACE,WAAW;KACT,IAAI,CAAC,EAAM,IAAQ;MACjB,EAAK,SAAS;MAEd;KACF;KAIA,AAFA,KAEI,MAAc,EAAQ,UAAQ,EAAK,SAAS;IAClD;IACA,OAAO,EAAK;IACZ,KAAK,GAAO;KAIV,AAHA,EAAO,KAAS,GAChB,EAAM,KAAS,IAEX,EAAM,MAAM,OAAO,KAAG,EAAK,KAAK,CAAC,GAAG,CAAM,CAAoB;IACpE;GACF,GACA,CACF;GAEA,EAAc,KAAK,CAAY;EACjC;EAEA,aACE,EAAc,SAAS,MAAiB;GACtC,EAAa,YAAY;EAC3B,CAAC;CACL,CAAC;AACH"}
@@ -1,2 +1,2 @@
1
- const e=require("../_numeric.cjs"),t=require("../core.cjs"),n=require("../_scheduler.cjs");function r(...e){return t.stream(t=>{for(let n of e)t.next(n);t.complete()})}function i(e){return Symbol.asyncIterator in Object(e)?t.stream((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`?t.stream((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):t.stream((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 a(e,n){return t.stream(t=>{let r=e=>t.next(e);return e.addEventListener(n,r),()=>e.removeEventListener(n,r)})}function o(r){return e.assertDuration(r,`Interval duration`),t.stream(e=>{let t=0;return n.defaultScheduler.repeat(()=>e.next(t++),r)})}function s(r){return e.assertDuration(r.delay,`Timer delay`),r.interval!==void 0&&e.assertDuration(r.interval,`Timer interval`),t.stream(e=>{let t=0,i,a=n.defaultScheduler.delay(()=>{if(e.next(t++),r.interval===void 0){e.complete();return}i=n.defaultScheduler.repeat(()=>e.next(t++),r.interval)},r.delay);return()=>{a(),i?.()}})}exports.from=i,exports.fromEvent=a,exports.interval=o,exports.of=r,exports.timer=s;
1
+ const e=require("../_numeric.cjs"),t=require("../_subscription.cjs"),n=require("../core.cjs"),r=require("../_scheduler.cjs");function i(...e){return n.stream(t=>{for(let n of e)t.next(n);t.complete()})}function a(e){return Symbol.asyncIterator in Object(e)?n.stream((n,r)=>{let i=e[Symbol.asyncIterator]();return(async()=>{try{for(;!r.aborted;){let e=await i.next();if(e.done){n.complete();return}n.next(e.value)}}catch(e){r.aborted||n.error(e)}})(),()=>{try{let e=i.return?.();e&&e.catch(t.reportUnhandledError)}catch(e){t.reportUnhandledError(e)}}}):typeof e.then==`function`?n.stream((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):n.stream((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 o(e,t){return n.stream(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function s(t){return e.assertDuration(t,`Interval duration`),n.stream(e=>{let n=0;return r.defaultScheduler.repeat(()=>e.next(n++),t)})}function c(t){return e.assertDuration(t.delay,`Timer delay`),t.interval!==void 0&&e.assertDuration(t.interval,`Timer interval`),n.stream(e=>{let n=0,i,a=r.defaultScheduler.delay(()=>{if(e.next(n++),t.interval===void 0){e.complete();return}i=r.defaultScheduler.repeat(()=>e.next(n++),t.interval)},t.delay);return()=>{a(),i?.()}})}exports.from=a,exports.fromEvent=o,exports.interval=s,exports.of=i,exports.timer=c;
2
2
  //# sourceMappingURL=creation.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"creation.cjs","names":[],"sources":["../../src/operators/creation.ts"],"sourcesContent":["import { assertDuration } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\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(every: number): Stream<number> {\n assertDuration(every, 'Interval duration');\n\n return stream((sink) => {\n let index = 0;\n\n return defaultScheduler.repeat(() => sink.next(index++), 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"],"mappings":"2FAUA,SAAgB,EAAM,GAAG,EAAwB,CAC/C,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAK,IAAM,KAAS,EAAQ,EAAK,KAAK,CAAK,EAC3C,EAAK,SAAS,CAChB,CAAC,CACH,CAEA,SAAgB,EAAQ,EAAgE,CA6CtF,OA5CI,OAAO,iBAAiB,OAAO,CAAM,EAChC,EAAA,QAAQ,EAAM,IAAW,CAC9B,IAAM,EAAY,EAA4B,OAAO,cAAc,CAAC,EAoBpE,OAlBM,SAAY,CAChB,GAAI,CACF,KAAO,CAAC,EAAO,SAAS,CACtB,IAAM,EAAS,MAAM,EAAS,KAAK,EAEnC,GAAI,EAAO,KAAM,CACf,EAAK,SAAS,EAEd,MACF,CAEA,EAAK,KAAK,EAAO,KAAK,CACxB,CACF,OAAS,EAAQ,CACV,EAAO,SAAS,EAAK,MAAM,CAAM,CACxC,CACF,EAAA,CAAG,MAEU,CACX,EAAc,SAAS,CACzB,CACF,CAAC,EAGC,OAAQ,EAAsB,MAAS,WAClC,EAAA,QAAQ,EAAM,IAAW,CAC9B,EAA4B,KACzB,GAAU,CACJ,EAAO,UACV,EAAK,KAAK,CAAK,EACf,EAAK,SAAS,EAElB,EACC,GAAoB,CACd,EAAO,SAAS,EAAK,MAAM,CAAM,CACxC,CACF,CACF,CAAC,EAGI,EAAA,QAAQ,EAAM,IAAW,CAC9B,IAAM,EAAY,EAAuB,OAAO,SAAS,CAAC,EAE1D,GAAI,CACF,KAAO,CAAC,EAAO,SAAS,CACtB,IAAM,EAAS,EAAS,KAAK,EAE7B,GAAI,EAAO,KAAM,CACf,EAAK,SAAS,EAEd,MACF,CAEA,EAAK,KAAK,EAAO,KAAK,CACxB,CACF,OAAS,EAAQ,CACf,EAAK,MAAM,CAAM,CACnB,CAEA,UAAa,CACX,EAAS,SAAS,CACpB,CACF,CAAC,CACH,CAEA,SAAgB,EACd,EAIA,EACW,CACX,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAM,EAAY,GAAmB,EAAK,KAAK,CAAK,EAIpD,OAFA,EAAO,iBAAiB,EAAM,CAAQ,MAEzB,EAAO,oBAAoB,EAAM,CAAQ,CACxD,CAAC,CACH,CAEA,SAAgB,EAAS,EAA+B,CAGtD,OAFA,EAAA,eAAe,EAAO,mBAAmB,EAElC,EAAA,OAAQ,GAAS,CACtB,IAAI,EAAQ,EAEZ,OAAO,EAAA,iBAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,CAAK,CAChE,CAAC,CACH,CAEA,SAAgB,EAAM,EAAuC,CAK3D,OAJA,EAAA,eAAe,EAAQ,MAAO,aAAa,EAEvC,EAAQ,WAAa,IAAA,IAAW,EAAA,eAAe,EAAQ,SAAU,gBAAgB,EAE9E,EAAA,OAAQ,GAAS,CACtB,IAAI,EAAQ,EACR,EACE,EAAc,EAAA,iBAAiB,UAAY,CAG/C,GAFA,EAAK,KAAK,GAAO,EAEb,EAAQ,WAAa,IAAA,GAAW,CAClC,EAAK,SAAS,EAEd,MACF,CAEA,EAAiB,EAAA,iBAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,EAAQ,QAAQ,CACrF,EAAG,EAAQ,KAAK,EAEhB,UAAa,CACX,EAAY,EACZ,IAAiB,CACnB,CACF,CAAC,CACH"}
1
+ {"version":3,"file":"creation.cjs","names":[],"sources":["../../src/operators/creation.ts"],"sourcesContent":["import { assertDuration } from '../_numeric.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { reportUnhandledError } from '../_subscription.js';\nimport { stream } from '../core.js';\nimport type { Stream } from '../types.js';\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 try {\n const returned = iterator.return?.();\n if (returned) void returned.catch(reportUnhandledError);\n } catch (reason) {\n reportUnhandledError(reason);\n }\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(every: number): Stream<number> {\n assertDuration(every, 'Interval duration');\n\n return stream((sink) => {\n let index = 0;\n\n return defaultScheduler.repeat(() => sink.next(index++), 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"],"mappings":"6HAWA,SAAgB,EAAM,GAAG,EAAwB,CAC/C,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAK,IAAM,KAAS,EAAQ,EAAK,KAAK,CAAK,EAC3C,EAAK,SAAS,CAChB,CAAC,CACH,CAEA,SAAgB,EAAQ,EAAgE,CAkDtF,OAjDI,OAAO,iBAAiB,OAAO,CAAM,EAChC,EAAA,QAAQ,EAAM,IAAW,CAC9B,IAAM,EAAY,EAA4B,OAAO,cAAc,CAAC,EAoBpE,OAlBM,SAAY,CAChB,GAAI,CACF,KAAO,CAAC,EAAO,SAAS,CACtB,IAAM,EAAS,MAAM,EAAS,KAAK,EAEnC,GAAI,EAAO,KAAM,CACf,EAAK,SAAS,EAEd,MACF,CAEA,EAAK,KAAK,EAAO,KAAK,CACxB,CACF,OAAS,EAAQ,CACV,EAAO,SAAS,EAAK,MAAM,CAAM,CACxC,CACF,EAAA,CAAG,MAEU,CACX,GAAI,CACF,IAAM,EAAW,EAAS,SAAS,EAC/B,GAAU,EAAc,MAAM,EAAA,oBAAoB,CACxD,OAAS,EAAQ,CACf,EAAA,qBAAqB,CAAM,CAC7B,CACF,CACF,CAAC,EAGC,OAAQ,EAAsB,MAAS,WAClC,EAAA,QAAQ,EAAM,IAAW,CAC9B,EAA4B,KACzB,GAAU,CACJ,EAAO,UACV,EAAK,KAAK,CAAK,EACf,EAAK,SAAS,EAElB,EACC,GAAoB,CACd,EAAO,SAAS,EAAK,MAAM,CAAM,CACxC,CACF,CACF,CAAC,EAGI,EAAA,QAAQ,EAAM,IAAW,CAC9B,IAAM,EAAY,EAAuB,OAAO,SAAS,CAAC,EAE1D,GAAI,CACF,KAAO,CAAC,EAAO,SAAS,CACtB,IAAM,EAAS,EAAS,KAAK,EAE7B,GAAI,EAAO,KAAM,CACf,EAAK,SAAS,EAEd,MACF,CAEA,EAAK,KAAK,EAAO,KAAK,CACxB,CACF,OAAS,EAAQ,CACf,EAAK,MAAM,CAAM,CACnB,CAEA,UAAa,CACX,EAAS,SAAS,CACpB,CACF,CAAC,CACH,CAEA,SAAgB,EACd,EAIA,EACW,CACX,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAM,EAAY,GAAmB,EAAK,KAAK,CAAK,EAIpD,OAFA,EAAO,iBAAiB,EAAM,CAAQ,MAEzB,EAAO,oBAAoB,EAAM,CAAQ,CACxD,CAAC,CACH,CAEA,SAAgB,EAAS,EAA+B,CAGtD,OAFA,EAAA,eAAe,EAAO,mBAAmB,EAElC,EAAA,OAAQ,GAAS,CACtB,IAAI,EAAQ,EAEZ,OAAO,EAAA,iBAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,CAAK,CAChE,CAAC,CACH,CAEA,SAAgB,EAAM,EAAuC,CAK3D,OAJA,EAAA,eAAe,EAAQ,MAAO,aAAa,EAEvC,EAAQ,WAAa,IAAA,IAAW,EAAA,eAAe,EAAQ,SAAU,gBAAgB,EAE9E,EAAA,OAAQ,GAAS,CACtB,IAAI,EAAQ,EACR,EACE,EAAc,EAAA,iBAAiB,UAAY,CAG/C,GAFA,EAAK,KAAK,GAAO,EAEb,EAAQ,WAAa,IAAA,GAAW,CAClC,EAAK,SAAS,EAEd,MACF,CAEA,EAAiB,EAAA,iBAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,EAAQ,QAAQ,CACrF,EAAG,EAAQ,KAAK,EAEhB,UAAa,CACX,EAAY,EACZ,IAAiB,CACnB,CACF,CAAC,CACH"}
@@ -1,4 +1,4 @@
1
- import type { Stream } from '../types';
1
+ import type { Stream } from '../types.js';
2
2
  export type TimerOptions = {
3
3
  delay: number;
4
4
  interval?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../src/operators/creation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAK/C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAoEtF;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,KAAK,EACjC,MAAM,EAAE;IACN,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;CACvE,EACD,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,CAAC,CAAC,CAQX;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAQtD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAyB3D"}
1
+ {"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../src/operators/creation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAK/C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAyEtF;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,KAAK,EACjC,MAAM,EAAE;IACN,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;CACvE,EACD,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,CAAC,CAAC,CAQX;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAQtD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAyB3D"}
@@ -1,39 +1,45 @@
1
1
  import { assertDuration as e } from "../_numeric.js";
2
- import { stream as t } from "../core.js";
3
- import { defaultScheduler as n } from "../_scheduler.js";
2
+ import { reportUnhandledError as t } from "../_subscription.js";
3
+ import { stream as n } from "../core.js";
4
+ import { defaultScheduler as r } from "../_scheduler.js";
4
5
  //#region src/operators/creation.ts
5
- function r(...e) {
6
- return t((t) => {
6
+ function i(...e) {
7
+ return n((t) => {
7
8
  for (let n of e) t.next(n);
8
9
  t.complete();
9
10
  });
10
11
  }
11
- function i(e) {
12
- return Symbol.asyncIterator in Object(e) ? t((t, n) => {
13
- let r = e[Symbol.asyncIterator]();
12
+ function a(e) {
13
+ return Symbol.asyncIterator in Object(e) ? n((n, r) => {
14
+ let i = e[Symbol.asyncIterator]();
14
15
  return (async () => {
15
16
  try {
16
- for (; !n.aborted;) {
17
- let e = await r.next();
17
+ for (; !r.aborted;) {
18
+ let e = await i.next();
18
19
  if (e.done) {
19
- t.complete();
20
+ n.complete();
20
21
  return;
21
22
  }
22
- t.next(e.value);
23
+ n.next(e.value);
23
24
  }
24
25
  } catch (e) {
25
- n.aborted || t.error(e);
26
+ r.aborted || n.error(e);
26
27
  }
27
28
  })(), () => {
28
- r.return?.();
29
+ try {
30
+ let e = i.return?.();
31
+ e && e.catch(t);
32
+ } catch (e) {
33
+ t(e);
34
+ }
29
35
  };
30
- }) : typeof e.then == "function" ? t((t, n) => {
36
+ }) : typeof e.then == "function" ? n((t, n) => {
31
37
  e.then((e) => {
32
38
  n.aborted || (t.next(e), t.complete());
33
39
  }, (e) => {
34
40
  n.aborted || t.error(e);
35
41
  });
36
- }) : t((t, n) => {
42
+ }) : n((t, n) => {
37
43
  let r = e[Symbol.iterator]();
38
44
  try {
39
45
  for (; !n.aborted;) {
@@ -52,33 +58,33 @@ function i(e) {
52
58
  };
53
59
  });
54
60
  }
55
- function a(e, n) {
56
- return t((t) => {
57
- let r = (e) => t.next(e);
58
- return e.addEventListener(n, r), () => e.removeEventListener(n, r);
61
+ function o(e, t) {
62
+ return n((n) => {
63
+ let r = (e) => n.next(e);
64
+ return e.addEventListener(t, r), () => e.removeEventListener(t, r);
59
65
  });
60
66
  }
61
- function o(r) {
62
- return e(r, "Interval duration"), t((e) => {
63
- let t = 0;
64
- return n.repeat(() => e.next(t++), r);
67
+ function s(t) {
68
+ return e(t, "Interval duration"), n((e) => {
69
+ let n = 0;
70
+ return r.repeat(() => e.next(n++), t);
65
71
  });
66
72
  }
67
- function s(r) {
68
- return e(r.delay, "Timer delay"), r.interval !== void 0 && e(r.interval, "Timer interval"), t((e) => {
69
- let t = 0, i, a = n.delay(() => {
70
- if (e.next(t++), r.interval === void 0) {
73
+ function c(t) {
74
+ return e(t.delay, "Timer delay"), t.interval !== void 0 && e(t.interval, "Timer interval"), n((e) => {
75
+ let n = 0, i, a = r.delay(() => {
76
+ if (e.next(n++), t.interval === void 0) {
71
77
  e.complete();
72
78
  return;
73
79
  }
74
- i = n.repeat(() => e.next(t++), r.interval);
75
- }, r.delay);
80
+ i = r.repeat(() => e.next(n++), t.interval);
81
+ }, t.delay);
76
82
  return () => {
77
83
  a(), i?.();
78
84
  };
79
85
  });
80
86
  }
81
87
  //#endregion
82
- export { i as from, a as fromEvent, o as interval, r as of, s as timer };
88
+ export { a as from, o as fromEvent, s as interval, i as of, c as timer };
83
89
 
84
90
  //# sourceMappingURL=creation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"creation.js","names":[],"sources":["../../src/operators/creation.ts"],"sourcesContent":["import { assertDuration } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\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(every: number): Stream<number> {\n assertDuration(every, 'Interval duration');\n\n return stream((sink) => {\n let index = 0;\n\n return defaultScheduler.repeat(() => sink.next(index++), 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"],"mappings":";;;;AAUA,SAAgB,EAAM,GAAG,GAAwB;CAC/C,OAAO,GAAQ,MAAS;EACtB,KAAK,IAAM,KAAS,GAAQ,EAAK,KAAK,CAAK;EAC3C,EAAK,SAAS;CAChB,CAAC;AACH;AAEA,SAAgB,EAAQ,GAAgE;CA6CtF,OA5CI,OAAO,iBAAiB,OAAO,CAAM,IAChC,GAAQ,GAAM,MAAW;EAC9B,IAAM,IAAY,EAA4B,OAAO,cAAc,CAAC;EAoBpE,QAlBM,YAAY;GAChB,IAAI;IACF,OAAO,CAAC,EAAO,UAAS;KACtB,IAAM,IAAS,MAAM,EAAS,KAAK;KAEnC,IAAI,EAAO,MAAM;MACf,EAAK,SAAS;MAEd;KACF;KAEA,EAAK,KAAK,EAAO,KAAK;IACxB;GACF,SAAS,GAAQ;IACf,AAAK,EAAO,WAAS,EAAK,MAAM,CAAM;GACxC;EACF,EAAA,CAAG,SAEU;GACX,EAAc,SAAS;EACzB;CACF,CAAC,IAGC,OAAQ,EAAsB,QAAS,aAClC,GAAQ,GAAM,MAAW;EAC9B,EAA4B,MACzB,MAAU;GACT,AAAK,EAAO,YACV,EAAK,KAAK,CAAK,GACf,EAAK,SAAS;EAElB,IACC,MAAoB;GACnB,AAAK,EAAO,WAAS,EAAK,MAAM,CAAM;EACxC,CACF;CACF,CAAC,IAGI,GAAQ,GAAM,MAAW;EAC9B,IAAM,IAAY,EAAuB,OAAO,SAAS,CAAC;EAE1D,IAAI;GACF,OAAO,CAAC,EAAO,UAAS;IACtB,IAAM,IAAS,EAAS,KAAK;IAE7B,IAAI,EAAO,MAAM;KACf,EAAK,SAAS;KAEd;IACF;IAEA,EAAK,KAAK,EAAO,KAAK;GACxB;EACF,SAAS,GAAQ;GACf,EAAK,MAAM,CAAM;EACnB;EAEA,aAAa;GACX,EAAS,SAAS;EACpB;CACF,CAAC;AACH;AAEA,SAAgB,EACd,GAIA,GACW;CACX,OAAO,GAAQ,MAAS;EACtB,IAAM,KAAY,MAAmB,EAAK,KAAK,CAAK;EAIpD,OAFA,EAAO,iBAAiB,GAAM,CAAQ,SAEzB,EAAO,oBAAoB,GAAM,CAAQ;CACxD,CAAC;AACH;AAEA,SAAgB,EAAS,GAA+B;CAGtD,OAFA,EAAe,GAAO,mBAAmB,GAElC,GAAQ,MAAS;EACtB,IAAI,IAAQ;EAEZ,OAAO,EAAiB,aAAa,EAAK,KAAK,GAAO,GAAG,CAAK;CAChE,CAAC;AACH;AAEA,SAAgB,EAAM,GAAuC;CAK3D,OAJA,EAAe,EAAQ,OAAO,aAAa,GAEvC,EAAQ,aAAa,KAAA,KAAW,EAAe,EAAQ,UAAU,gBAAgB,GAE9E,GAAQ,MAAS;EACtB,IAAI,IAAQ,GACR,GACE,IAAc,EAAiB,YAAY;GAG/C,IAFA,EAAK,KAAK,GAAO,GAEb,EAAQ,aAAa,KAAA,GAAW;IAClC,EAAK,SAAS;IAEd;GACF;GAEA,IAAiB,EAAiB,aAAa,EAAK,KAAK,GAAO,GAAG,EAAQ,QAAQ;EACrF,GAAG,EAAQ,KAAK;EAEhB,aAAa;GAEX,AADA,EAAY,GACZ,IAAiB;EACnB;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"creation.js","names":[],"sources":["../../src/operators/creation.ts"],"sourcesContent":["import { assertDuration } from '../_numeric.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { reportUnhandledError } from '../_subscription.js';\nimport { stream } from '../core.js';\nimport type { Stream } from '../types.js';\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 try {\n const returned = iterator.return?.();\n if (returned) void returned.catch(reportUnhandledError);\n } catch (reason) {\n reportUnhandledError(reason);\n }\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(every: number): Stream<number> {\n assertDuration(every, 'Interval duration');\n\n return stream((sink) => {\n let index = 0;\n\n return defaultScheduler.repeat(() => sink.next(index++), 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"],"mappings":";;;;;AAWA,SAAgB,EAAM,GAAG,GAAwB;CAC/C,OAAO,GAAQ,MAAS;EACtB,KAAK,IAAM,KAAS,GAAQ,EAAK,KAAK,CAAK;EAC3C,EAAK,SAAS;CAChB,CAAC;AACH;AAEA,SAAgB,EAAQ,GAAgE;CAkDtF,OAjDI,OAAO,iBAAiB,OAAO,CAAM,IAChC,GAAQ,GAAM,MAAW;EAC9B,IAAM,IAAY,EAA4B,OAAO,cAAc,CAAC;EAoBpE,QAlBM,YAAY;GAChB,IAAI;IACF,OAAO,CAAC,EAAO,UAAS;KACtB,IAAM,IAAS,MAAM,EAAS,KAAK;KAEnC,IAAI,EAAO,MAAM;MACf,EAAK,SAAS;MAEd;KACF;KAEA,EAAK,KAAK,EAAO,KAAK;IACxB;GACF,SAAS,GAAQ;IACf,AAAK,EAAO,WAAS,EAAK,MAAM,CAAM;GACxC;EACF,EAAA,CAAG,SAEU;GACX,IAAI;IACF,IAAM,IAAW,EAAS,SAAS;IACnC,AAAI,KAAU,EAAc,MAAM,CAAoB;GACxD,SAAS,GAAQ;IACf,EAAqB,CAAM;GAC7B;EACF;CACF,CAAC,IAGC,OAAQ,EAAsB,QAAS,aAClC,GAAQ,GAAM,MAAW;EAC9B,EAA4B,MACzB,MAAU;GACT,AAAK,EAAO,YACV,EAAK,KAAK,CAAK,GACf,EAAK,SAAS;EAElB,IACC,MAAoB;GACnB,AAAK,EAAO,WAAS,EAAK,MAAM,CAAM;EACxC,CACF;CACF,CAAC,IAGI,GAAQ,GAAM,MAAW;EAC9B,IAAM,IAAY,EAAuB,OAAO,SAAS,CAAC;EAE1D,IAAI;GACF,OAAO,CAAC,EAAO,UAAS;IACtB,IAAM,IAAS,EAAS,KAAK;IAE7B,IAAI,EAAO,MAAM;KACf,EAAK,SAAS;KAEd;IACF;IAEA,EAAK,KAAK,EAAO,KAAK;GACxB;EACF,SAAS,GAAQ;GACf,EAAK,MAAM,CAAM;EACnB;EAEA,aAAa;GACX,EAAS,SAAS;EACpB;CACF,CAAC;AACH;AAEA,SAAgB,EACd,GAIA,GACW;CACX,OAAO,GAAQ,MAAS;EACtB,IAAM,KAAY,MAAmB,EAAK,KAAK,CAAK;EAIpD,OAFA,EAAO,iBAAiB,GAAM,CAAQ,SAEzB,EAAO,oBAAoB,GAAM,CAAQ;CACxD,CAAC;AACH;AAEA,SAAgB,EAAS,GAA+B;CAGtD,OAFA,EAAe,GAAO,mBAAmB,GAElC,GAAQ,MAAS;EACtB,IAAI,IAAQ;EAEZ,OAAO,EAAiB,aAAa,EAAK,KAAK,GAAO,GAAG,CAAK;CAChE,CAAC;AACH;AAEA,SAAgB,EAAM,GAAuC;CAK3D,OAJA,EAAe,EAAQ,OAAO,aAAa,GAEvC,EAAQ,aAAa,KAAA,KAAW,EAAe,EAAQ,UAAU,gBAAgB,GAE9E,GAAQ,MAAS;EACtB,IAAI,IAAQ,GACR,GACE,IAAc,EAAiB,YAAY;GAG/C,IAFA,EAAK,KAAK,GAAO,GAEb,EAAQ,aAAa,KAAA,GAAW;IAClC,EAAK,SAAS;IAEd;GACF;GAEA,IAAiB,EAAiB,aAAa,EAAK,KAAK,GAAO,GAAG,EAAQ,QAAQ;EACrF,GAAG,EAAQ,KAAK;EAEhB,aAAa;GAEX,AADA,EAAY,GACZ,IAAiB;EACnB;CACF,CAAC;AACH"}
@@ -1,2 +1,2 @@
1
- const e=require("../_numeric.cjs"),t=require("../core.cjs"),n=require("../_link.cjs"),r=require("../errors.cjs"),i=require("../_scheduler.cjs");function a(r){return e.assertNonNegativeInteger(r,`take count`),e=>t.stream((t,i)=>{if(r===0){t.complete();return}let a=0,o={};return o.current=n.link(e,{complete:t.complete,error:t.error,next(e){t.next(e),a++,a===r&&(t.complete(),o.current?.unsubscribe())}},i),()=>o.current?.unsubscribe()})}function o(e){return r=>t.stream((t,i)=>{let a,o,s=()=>{},c=()=>{a?.unsubscribe(),o?.unsubscribe(),t.complete()};if(e instanceof AbortSignal){if(e.aborted){t.complete();return}e.addEventListener(`abort`,c,{once:!0}),s=()=>e.removeEventListener(`abort`,c)}else o=n.link(e,{error:t.error,next:c},i);return i.aborted||(a=n.link(r,{complete:t.complete,error:t.error,next:t.next},i)),()=>{s(),a?.unsubscribe(),o?.unsubscribe()}})}function s(r){return e.assertDuration(r,`Debounce duration`),e=>t.stream((t,a)=>{let o,s,c=!1,l=()=>{o=void 0,c&&(c=!1,t.next(s))},u=n.link(e,{complete(){o?.(),l(),t.complete()},error:t.error,next(e){s=e,c=!0,o?.(),o=i.defaultScheduler.delay(l,r)}},a);return()=>{o?.(),u.unsubscribe()}})}function c(a){return e.assertDuration(a,`Timeout duration`),e=>t.stream((t,o)=>{let s,c=()=>{s=i.defaultScheduler.delay(()=>t.error(new r.FluxTimeoutError(a)),a)};c();let l=n.link(e,{complete(){s(),t.complete()},error(e){s(),t.error(e)},next(e){s(),c(),t.next(e)}},o);return()=>{s(),l.unsubscribe()}})}exports.debounce=s,exports.take=a,exports.takeUntil=o,exports.timeout=c;
1
+ const e=require("../_numeric.cjs"),t=require("../errors.cjs"),n=require("../core.cjs"),r=require("../_link.cjs"),i=require("../_scheduler.cjs");function a(t){return e.assertNonNegativeInteger(t,`take count`),e=>n.stream((n,i)=>{if(t===0){n.complete();return}let a=0,o={};return o.current=r.link(e,{complete:n.complete,error:n.error,next(e){n.next(e),a++,a===t&&(n.complete(),o.current?.unsubscribe())}},i),()=>o.current?.unsubscribe()})}function o(e){return typeof e.aborted==`boolean`&&typeof e.addEventListener==`function`&&typeof e.removeEventListener==`function`}function s(e){return t=>n.stream((n,i)=>{let a,s,c=()=>{},l=()=>{a?.unsubscribe(),s?.unsubscribe(),n.complete()};if(o(e)){if(e.aborted){n.complete();return}e.addEventListener(`abort`,l,{once:!0}),c=()=>e.removeEventListener(`abort`,l)}else s=r.link(e,{error:n.error,next:l},i);return i.aborted||(a=r.link(t,{complete:n.complete,error:n.error,next:n.next},i)),()=>{c(),a?.unsubscribe(),s?.unsubscribe()}})}function c(t){return e.assertDuration(t,`Debounce duration`),e=>n.stream((n,a)=>{let o,s,c=!1,l=()=>{o=void 0,c&&(c=!1,n.next(s))},u=r.link(e,{complete(){o?.(),l(),n.complete()},error:n.error,next(e){s=e,c=!0,o?.(),o=i.defaultScheduler.delay(l,t)}},a);return()=>{o?.(),u.unsubscribe()}})}function l(a){return e.assertDuration(a,`Timeout duration`),e=>n.stream((n,o)=>{let s,c=()=>{s=i.defaultScheduler.delay(()=>n.error(new t.FluxTimeoutError(a)),a)};c();let l=r.link(e,{complete(){s(),n.complete()},error(e){s(),n.error(e)},next(e){s(),c(),n.next(e)}},o);return()=>{s(),l.unsubscribe()}})}exports.debounce=c,exports.take=a,exports.takeUntil=s,exports.timeout=l;
2
2
  //# sourceMappingURL=filtering.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.cjs","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["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 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>(duration: number): Operator<T, T> {\n assertDuration(duration, '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, duration);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(duration: number): Operator<T, T> {\n assertDuration(duration, '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(duration)), duration);\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"],"mappings":"gJAOA,SAAgB,EAAQ,EAA+B,CAGrD,OAFA,EAAA,yBAAyB,EAAO,YAAY,EAEpC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,GAAI,IAAU,EAAG,CACf,EAAK,SAAS,EAEd,MACF,CAEA,IAAI,EAAO,EACL,EAA8C,CAAC,EAoBrD,MAlBA,GAAgB,QAAU,EAAA,KACxB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAK,KAAK,CAAK,EACf,IAEI,IAAS,IACX,EAAK,SAAS,EACd,EAAgB,SAAS,YAAY,EAEzC,CACF,EACA,CACF,MAEa,EAAgB,SAAS,YAAY,CACpD,CAAC,CACL,CAEA,SAAgB,EAAa,EAAyD,CACpF,MAAQ,IACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,MAA6B,CAAC,EAE5B,MAAuB,CAC3B,GAAoB,YAAY,EAChC,GAAsB,YAAY,EAClC,EAAK,SAAS,CAChB,EAEA,GAAI,aAAoB,YAAa,CACnC,GAAI,EAAS,QAAS,CACpB,EAAK,SAAS,EAEd,MACF,CAEA,EAAS,iBAAiB,QAAS,EAAU,CAAE,KAAM,EAAK,CAAC,EAC3D,MAA6B,EAAS,oBAAoB,QAAS,CAAQ,CAC7E,KACE,GAAuB,EAAA,KAAK,EAAU,CAAE,MAAO,EAAK,MAAO,KAAM,CAAS,EAAG,CAAM,EAerF,OAZK,EAAO,UACV,EAAqB,EAAA,KACnB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,OAGW,CACX,EAAe,EACf,GAAoB,YAAY,EAChC,GAAsB,YAAY,CACpC,CACF,CAAC,CACL,CAEA,SAAgB,EAAY,EAAkC,CAG5D,OAFA,EAAA,eAAe,EAAU,mBAAmB,EAEpC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,EAAa,GAEX,MAAoB,CACxB,EAAS,IAAA,GAEJ,IAEL,EAAa,GACb,EAAK,KAAK,CAAY,EACxB,EAEM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,IAAS,EACT,EAAM,EACN,EAAK,SAAS,CAChB,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAU,EACV,EAAa,GACb,IAAS,EACT,EAAS,EAAA,iBAAiB,MAAM,EAAO,CAAQ,CACjD,CACF,EACA,CACF,EAEA,UAAa,CACX,IAAS,EACT,EAAa,YAAY,CAC3B,CACF,CAAC,CACL,CAEA,SAAgB,EAAW,EAAkC,CAG3D,OAFA,EAAA,eAAe,EAAU,kBAAkB,EAEnC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EAEE,MAAoB,CACxB,EAAS,EAAA,iBAAiB,UAAY,EAAK,MAAM,IAAI,EAAA,iBAAiB,CAAQ,CAAC,EAAG,CAAQ,CAC5F,EAEA,EAAM,EAEN,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,EAAO,EACP,EAAK,SAAS,CAChB,EACA,MAAM,EAAQ,CACZ,EAAO,EACP,EAAK,MAAM,CAAM,CACnB,EACA,KAAK,EAAO,CACV,EAAO,EACP,EAAM,EACN,EAAK,KAAK,CAAK,CACjB,CACF,EACA,CACF,EAEA,UAAa,CACX,EAAO,EACP,EAAa,YAAY,CAC3B,CACF,CAAC,CACL"}
1
+ {"version":3,"file":"filtering.cjs","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { stream } from '../core.js';\nimport { FluxTimeoutError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\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\nfunction isAbortSignal(value: AbortSignal | Stream<unknown>): value is AbortSignal {\n return (\n typeof (value as AbortSignal).aborted === 'boolean' &&\n typeof (value as AbortSignal).addEventListener === 'function' &&\n typeof (value as AbortSignal).removeEventListener === 'function'\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 (isAbortSignal(notifier)) {\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>(duration: number): Operator<T, T> {\n assertDuration(duration, '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, duration);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(duration: number): Operator<T, T> {\n assertDuration(duration, '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(duration)), duration);\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"],"mappings":"gJAOA,SAAgB,EAAQ,EAA+B,CAGrD,OAFA,EAAA,yBAAyB,EAAO,YAAY,EAEpC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,GAAI,IAAU,EAAG,CACf,EAAK,SAAS,EAEd,MACF,CAEA,IAAI,EAAO,EACL,EAA8C,CAAC,EAoBrD,MAlBA,GAAgB,QAAU,EAAA,KACxB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAK,KAAK,CAAK,EACf,IAEI,IAAS,IACX,EAAK,SAAS,EACd,EAAgB,SAAS,YAAY,EAEzC,CACF,EACA,CACF,MAEa,EAAgB,SAAS,YAAY,CACpD,CAAC,CACL,CAEA,SAAS,EAAc,EAA4D,CACjF,OACE,OAAQ,EAAsB,SAAY,WAC1C,OAAQ,EAAsB,kBAAqB,YACnD,OAAQ,EAAsB,qBAAwB,UAE1D,CAEA,SAAgB,EAAa,EAAyD,CACpF,MAAQ,IACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,MAA6B,CAAC,EAE5B,MAAuB,CAC3B,GAAoB,YAAY,EAChC,GAAsB,YAAY,EAClC,EAAK,SAAS,CAChB,EAEA,GAAI,EAAc,CAAQ,EAAG,CAC3B,GAAI,EAAS,QAAS,CACpB,EAAK,SAAS,EAEd,MACF,CAEA,EAAS,iBAAiB,QAAS,EAAU,CAAE,KAAM,EAAK,CAAC,EAC3D,MAA6B,EAAS,oBAAoB,QAAS,CAAQ,CAC7E,KACE,GAAuB,EAAA,KAAK,EAAU,CAAE,MAAO,EAAK,MAAO,KAAM,CAAS,EAAG,CAAM,EAerF,OAZK,EAAO,UACV,EAAqB,EAAA,KACnB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,OAGW,CACX,EAAe,EACf,GAAoB,YAAY,EAChC,GAAsB,YAAY,CACpC,CACF,CAAC,CACL,CAEA,SAAgB,EAAY,EAAkC,CAG5D,OAFA,EAAA,eAAe,EAAU,mBAAmB,EAEpC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,EAAa,GAEX,MAAoB,CACxB,EAAS,IAAA,GAEJ,IAEL,EAAa,GACb,EAAK,KAAK,CAAY,EACxB,EAEM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,IAAS,EACT,EAAM,EACN,EAAK,SAAS,CAChB,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAU,EACV,EAAa,GACb,IAAS,EACT,EAAS,EAAA,iBAAiB,MAAM,EAAO,CAAQ,CACjD,CACF,EACA,CACF,EAEA,UAAa,CACX,IAAS,EACT,EAAa,YAAY,CAC3B,CACF,CAAC,CACL,CAEA,SAAgB,EAAW,EAAkC,CAG3D,OAFA,EAAA,eAAe,EAAU,kBAAkB,EAEnC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EAEE,MAAoB,CACxB,EAAS,EAAA,iBAAiB,UAAY,EAAK,MAAM,IAAI,EAAA,iBAAiB,CAAQ,CAAC,EAAG,CAAQ,CAC5F,EAEA,EAAM,EAEN,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,EAAO,EACP,EAAK,SAAS,CAChB,EACA,MAAM,EAAQ,CACZ,EAAO,EACP,EAAK,MAAM,CAAM,CACnB,EACA,KAAK,EAAO,CACV,EAAO,EACP,EAAM,EACN,EAAK,KAAK,CAAK,CACjB,CACF,EACA,CACF,EAEA,UAAa,CACX,EAAO,EACP,EAAa,YAAY,CAC3B,CACF,CAAC,CACL"}
@@ -1,4 +1,4 @@
1
- import type { Operator, Stream } from '../types';
1
+ import type { Operator, Stream } from '../types.js';
2
2
  export declare function take<T>(count: number): Operator<T, T>;
3
3
  export declare function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T>;
4
4
  export declare function debounce<T>(duration: number): Operator<T, T>;
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../src/operators/filtering.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAE/D,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAkCrD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA4CpF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA0C5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAsC3D"}
1
+ {"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../src/operators/filtering.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAElE,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAkCrD;AAUD,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA4CpF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA0C5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAsC3D"}
@@ -1,54 +1,57 @@
1
1
  import { assertDuration as e, assertNonNegativeInteger as t } from "../_numeric.js";
2
- import { stream as n } from "../core.js";
3
- import { link as r } from "../_link.js";
4
- import { FluxTimeoutError as i } from "../errors.js";
2
+ import { FluxTimeoutError as n } from "../errors.js";
3
+ import { stream as r } from "../core.js";
4
+ import { link as i } from "../_link.js";
5
5
  import { defaultScheduler as a } from "../_scheduler.js";
6
6
  //#region src/operators/filtering.ts
7
7
  function o(e) {
8
- return t(e, "take count"), (t) => n((n, i) => {
8
+ return t(e, "take count"), (t) => r((n, r) => {
9
9
  if (e === 0) {
10
10
  n.complete();
11
11
  return;
12
12
  }
13
13
  let a = 0, o = {};
14
- return o.current = r(t, {
14
+ return o.current = i(t, {
15
15
  complete: n.complete,
16
16
  error: n.error,
17
17
  next(t) {
18
18
  n.next(t), a++, a === e && (n.complete(), o.current?.unsubscribe());
19
19
  }
20
- }, i), () => o.current?.unsubscribe();
20
+ }, r), () => o.current?.unsubscribe();
21
21
  });
22
22
  }
23
23
  function s(e) {
24
- return (t) => n((n, i) => {
25
- let a, o, s = () => {}, c = () => {
24
+ return typeof e.aborted == "boolean" && typeof e.addEventListener == "function" && typeof e.removeEventListener == "function";
25
+ }
26
+ function c(e) {
27
+ return (t) => r((n, r) => {
28
+ let a, o, c = () => {}, l = () => {
26
29
  a?.unsubscribe(), o?.unsubscribe(), n.complete();
27
30
  };
28
- if (e instanceof AbortSignal) {
31
+ if (s(e)) {
29
32
  if (e.aborted) {
30
33
  n.complete();
31
34
  return;
32
35
  }
33
- e.addEventListener("abort", c, { once: !0 }), s = () => e.removeEventListener("abort", c);
34
- } else o = r(e, {
36
+ e.addEventListener("abort", l, { once: !0 }), c = () => e.removeEventListener("abort", l);
37
+ } else o = i(e, {
35
38
  error: n.error,
36
- next: c
37
- }, i);
38
- return i.aborted || (a = r(t, {
39
+ next: l
40
+ }, r);
41
+ return r.aborted || (a = i(t, {
39
42
  complete: n.complete,
40
43
  error: n.error,
41
44
  next: n.next
42
- }, i)), () => {
43
- s(), a?.unsubscribe(), o?.unsubscribe();
45
+ }, r)), () => {
46
+ c(), a?.unsubscribe(), o?.unsubscribe();
44
47
  };
45
48
  });
46
49
  }
47
- function c(t) {
48
- return e(t, "Debounce duration"), (e) => n((n, i) => {
50
+ function l(t) {
51
+ return e(t, "Debounce duration"), (e) => r((n, r) => {
49
52
  let o, s, c = !1, l = () => {
50
53
  o = void 0, c && (c = !1, n.next(s));
51
- }, u = r(e, {
54
+ }, u = i(e, {
52
55
  complete() {
53
56
  o?.(), l(), n.complete();
54
57
  },
@@ -56,27 +59,27 @@ function c(t) {
56
59
  next(e) {
57
60
  s = e, c = !0, o?.(), o = a.delay(l, t);
58
61
  }
59
- }, i);
62
+ }, r);
60
63
  return () => {
61
64
  o?.(), u.unsubscribe();
62
65
  };
63
66
  });
64
67
  }
65
- function l(t) {
66
- return e(t, "Timeout duration"), (e) => n((n, o) => {
68
+ function u(t) {
69
+ return e(t, "Timeout duration"), (e) => r((r, o) => {
67
70
  let s, c = () => {
68
- s = a.delay(() => n.error(new i(t)), t);
71
+ s = a.delay(() => r.error(new n(t)), t);
69
72
  };
70
73
  c();
71
- let l = r(e, {
74
+ let l = i(e, {
72
75
  complete() {
73
- s(), n.complete();
76
+ s(), r.complete();
74
77
  },
75
78
  error(e) {
76
- s(), n.error(e);
79
+ s(), r.error(e);
77
80
  },
78
81
  next(e) {
79
- s(), c(), n.next(e);
82
+ s(), c(), r.next(e);
80
83
  }
81
84
  }, o);
82
85
  return () => {
@@ -85,6 +88,6 @@ function l(t) {
85
88
  });
86
89
  }
87
90
  //#endregion
88
- export { c as debounce, o as take, s as takeUntil, l as timeout };
91
+ export { l as debounce, o as take, c as takeUntil, u as timeout };
89
92
 
90
93
  //# sourceMappingURL=filtering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.js","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["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 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>(duration: number): Operator<T, T> {\n assertDuration(duration, '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, duration);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(duration: number): Operator<T, T> {\n assertDuration(duration, '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(duration)), duration);\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"],"mappings":";;;;;;AAOA,SAAgB,EAAQ,GAA+B;CAGrD,OAFA,EAAyB,GAAO,YAAY,IAEpC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,MAAU,GAAG;GACf,EAAK,SAAS;GAEd;EACF;EAEA,IAAI,IAAO,GACL,IAA8C,CAAC;EAoBrD,OAlBA,EAAgB,UAAU,EACxB,GACA;GACE,UAAU,EAAK;GACf,OAAO,EAAK;GACZ,KAAK,GAAO;IAIV,AAHA,EAAK,KAAK,CAAK,GACf,KAEI,MAAS,MACX,EAAK,SAAS,GACd,EAAgB,SAAS,YAAY;GAEzC;EACF,GACA,CACF,SAEa,EAAgB,SAAS,YAAY;CACpD,CAAC;AACL;AAEA,SAAgB,EAAa,GAAyD;CACpF,QAAQ,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GACA,GACA,UAA6B,CAAC,GAE5B,UAAuB;GAG3B,AAFA,GAAoB,YAAY,GAChC,GAAsB,YAAY,GAClC,EAAK,SAAS;EAChB;EAEA,IAAI,aAAoB,aAAa;GACnC,IAAI,EAAS,SAAS;IACpB,EAAK,SAAS;IAEd;GACF;GAGA,AADA,EAAS,iBAAiB,SAAS,GAAU,EAAE,MAAM,GAAK,CAAC,GAC3D,UAA6B,EAAS,oBAAoB,SAAS,CAAQ;EAC7E,OACE,IAAuB,EAAK,GAAU;GAAE,OAAO,EAAK;GAAO,MAAM;EAAS,GAAG,CAAM;EAerF,OAZK,EAAO,YACV,IAAqB,EACnB,GACA;GACE,UAAU,EAAK;GACf,OAAO,EAAK;GACZ,MAAM,EAAK;EACb,GACA,CACF,UAGW;GAGX,AAFA,EAAe,GACf,GAAoB,YAAY,GAChC,GAAsB,YAAY;EACpC;CACF,CAAC;AACL;AAEA,SAAgB,EAAY,GAAkC;CAG5D,OAFA,EAAe,GAAU,mBAAmB,IAEpC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GACA,GACA,IAAa,IAEX,UAAoB;GACxB,IAAS,KAAA,GAEJ,MAEL,IAAa,IACb,EAAK,KAAK,CAAY;EACxB,GAEM,IAAe,EACnB,GACA;GACE,WAAW;IAGT,AAFA,IAAS,GACT,EAAM,GACN,EAAK,SAAS;GAChB;GACA,OAAO,EAAK;GACZ,KAAK,GAAO;IAIV,AAHA,IAAU,GACV,IAAa,IACb,IAAS,GACT,IAAS,EAAiB,MAAM,GAAO,CAAQ;GACjD;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,IAAS,GACT,EAAa,YAAY;EAC3B;CACF,CAAC;AACL;AAEA,SAAgB,EAAW,GAAkC;CAG3D,OAFA,EAAe,GAAU,kBAAkB,IAEnC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GAEE,UAAoB;GACxB,IAAS,EAAiB,YAAY,EAAK,MAAM,IAAI,EAAiB,CAAQ,CAAC,GAAG,CAAQ;EAC5F;EAEA,EAAM;EAEN,IAAM,IAAe,EACnB,GACA;GACE,WAAW;IAET,AADA,EAAO,GACP,EAAK,SAAS;GAChB;GACA,MAAM,GAAQ;IAEZ,AADA,EAAO,GACP,EAAK,MAAM,CAAM;GACnB;GACA,KAAK,GAAO;IAGV,AAFA,EAAO,GACP,EAAM,GACN,EAAK,KAAK,CAAK;GACjB;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,EAAO,GACP,EAAa,YAAY;EAC3B;CACF,CAAC;AACL"}
1
+ {"version":3,"file":"filtering.js","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { stream } from '../core.js';\nimport { FluxTimeoutError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\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\nfunction isAbortSignal(value: AbortSignal | Stream<unknown>): value is AbortSignal {\n return (\n typeof (value as AbortSignal).aborted === 'boolean' &&\n typeof (value as AbortSignal).addEventListener === 'function' &&\n typeof (value as AbortSignal).removeEventListener === 'function'\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 (isAbortSignal(notifier)) {\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>(duration: number): Operator<T, T> {\n assertDuration(duration, '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, duration);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(duration: number): Operator<T, T> {\n assertDuration(duration, '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(duration)), duration);\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"],"mappings":";;;;;;AAOA,SAAgB,EAAQ,GAA+B;CAGrD,OAFA,EAAyB,GAAO,YAAY,IAEpC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,MAAU,GAAG;GACf,EAAK,SAAS;GAEd;EACF;EAEA,IAAI,IAAO,GACL,IAA8C,CAAC;EAoBrD,OAlBA,EAAgB,UAAU,EACxB,GACA;GACE,UAAU,EAAK;GACf,OAAO,EAAK;GACZ,KAAK,GAAO;IAIV,AAHA,EAAK,KAAK,CAAK,GACf,KAEI,MAAS,MACX,EAAK,SAAS,GACd,EAAgB,SAAS,YAAY;GAEzC;EACF,GACA,CACF,SAEa,EAAgB,SAAS,YAAY;CACpD,CAAC;AACL;AAEA,SAAS,EAAc,GAA4D;CACjF,OACE,OAAQ,EAAsB,WAAY,aAC1C,OAAQ,EAAsB,oBAAqB,cACnD,OAAQ,EAAsB,uBAAwB;AAE1D;AAEA,SAAgB,EAAa,GAAyD;CACpF,QAAQ,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GACA,GACA,UAA6B,CAAC,GAE5B,UAAuB;GAG3B,AAFA,GAAoB,YAAY,GAChC,GAAsB,YAAY,GAClC,EAAK,SAAS;EAChB;EAEA,IAAI,EAAc,CAAQ,GAAG;GAC3B,IAAI,EAAS,SAAS;IACpB,EAAK,SAAS;IAEd;GACF;GAGA,AADA,EAAS,iBAAiB,SAAS,GAAU,EAAE,MAAM,GAAK,CAAC,GAC3D,UAA6B,EAAS,oBAAoB,SAAS,CAAQ;EAC7E,OACE,IAAuB,EAAK,GAAU;GAAE,OAAO,EAAK;GAAO,MAAM;EAAS,GAAG,CAAM;EAerF,OAZK,EAAO,YACV,IAAqB,EACnB,GACA;GACE,UAAU,EAAK;GACf,OAAO,EAAK;GACZ,MAAM,EAAK;EACb,GACA,CACF,UAGW;GAGX,AAFA,EAAe,GACf,GAAoB,YAAY,GAChC,GAAsB,YAAY;EACpC;CACF,CAAC;AACL;AAEA,SAAgB,EAAY,GAAkC;CAG5D,OAFA,EAAe,GAAU,mBAAmB,IAEpC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GACA,GACA,IAAa,IAEX,UAAoB;GACxB,IAAS,KAAA,GAEJ,MAEL,IAAa,IACb,EAAK,KAAK,CAAY;EACxB,GAEM,IAAe,EACnB,GACA;GACE,WAAW;IAGT,AAFA,IAAS,GACT,EAAM,GACN,EAAK,SAAS;GAChB;GACA,OAAO,EAAK;GACZ,KAAK,GAAO;IAIV,AAHA,IAAU,GACV,IAAa,IACb,IAAS,GACT,IAAS,EAAiB,MAAM,GAAO,CAAQ;GACjD;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,IAAS,GACT,EAAa,YAAY;EAC3B;CACF,CAAC;AACL;AAEA,SAAgB,EAAW,GAAkC;CAG3D,OAFA,EAAe,GAAU,kBAAkB,IAEnC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GAEE,UAAoB;GACxB,IAAS,EAAiB,YAAY,EAAK,MAAM,IAAI,EAAiB,CAAQ,CAAC,GAAG,CAAQ;EAC5F;EAEA,EAAM;EAEN,IAAM,IAAe,EACnB,GACA;GACE,WAAW;IAET,AADA,EAAO,GACP,EAAK,SAAS;GAChB;GACA,MAAM,GAAQ;IAEZ,AADA,EAAO,GACP,EAAK,MAAM,CAAM;GACnB;GACA,KAAK,GAAO;IAGV,AAFA,EAAO,GACP,EAAM,GACN,EAAK,KAAK,CAAK;GACjB;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,EAAO,GACP,EAAa,YAAY;EAC3B;CACF,CAAC;AACL"}