@vielzeug/flux 2.0.3 → 2.0.5

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 (92) hide show
  1. package/dist/_iterator.cjs +1 -1
  2. package/dist/_iterator.cjs.map +1 -1
  3. package/dist/_iterator.d.ts.map +1 -1
  4. package/dist/_iterator.js +4 -6
  5. package/dist/_iterator.js.map +1 -1
  6. package/dist/_numeric.cjs +1 -1
  7. package/dist/_numeric.cjs.map +1 -1
  8. package/dist/_numeric.d.ts +1 -0
  9. package/dist/_numeric.d.ts.map +1 -1
  10. package/dist/_numeric.js +7 -1
  11. package/dist/_numeric.js.map +1 -1
  12. package/dist/_subscription.cjs.map +1 -1
  13. package/dist/_subscription.d.ts +1 -1
  14. package/dist/_subscription.d.ts.map +1 -1
  15. package/dist/_subscription.js.map +1 -1
  16. package/dist/adapters/courier.cjs +1 -1
  17. package/dist/adapters/courier.cjs.map +1 -1
  18. package/dist/adapters/courier.d.ts +0 -5
  19. package/dist/adapters/courier.d.ts.map +1 -1
  20. package/dist/adapters/courier.js +1 -22
  21. package/dist/adapters/courier.js.map +1 -1
  22. package/dist/adapters/herald.cjs.map +1 -1
  23. package/dist/adapters/herald.d.ts.map +1 -1
  24. package/dist/adapters/herald.js.map +1 -1
  25. package/dist/adapters/pulse.cjs.map +1 -1
  26. package/dist/adapters/pulse.d.ts.map +1 -1
  27. package/dist/adapters/pulse.js.map +1 -1
  28. package/dist/adapters/ripple.cjs.map +1 -1
  29. package/dist/adapters/ripple.d.ts.map +1 -1
  30. package/dist/adapters/ripple.js.map +1 -1
  31. package/dist/async.cjs.map +1 -1
  32. package/dist/async.d.ts.map +1 -1
  33. package/dist/async.js.map +1 -1
  34. package/dist/core.cjs.map +1 -1
  35. package/dist/core.d.ts.map +1 -1
  36. package/dist/core.js.map +1 -1
  37. package/dist/courier.cjs +1 -1
  38. package/dist/courier.d.ts +1 -1
  39. package/dist/courier.d.ts.map +1 -1
  40. package/dist/courier.js +2 -2
  41. package/dist/errors.cjs +1 -1
  42. package/dist/errors.cjs.map +1 -1
  43. package/dist/errors.d.ts +0 -1
  44. package/dist/errors.d.ts.map +1 -1
  45. package/dist/errors.js +1 -4
  46. package/dist/errors.js.map +1 -1
  47. package/dist/flux.cjs +1 -1
  48. package/dist/flux.cjs.map +1 -1
  49. package/dist/flux.iife.js +1 -1
  50. package/dist/flux.iife.js.map +1 -1
  51. package/dist/flux.js +1 -1
  52. package/dist/flux.js.map +1 -1
  53. package/dist/index.d.ts +4 -4
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/operators/combination.cjs.map +1 -1
  56. package/dist/operators/combination.d.ts.map +1 -1
  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.map +1 -1
  61. package/dist/operators/creation.js +40 -42
  62. package/dist/operators/creation.js.map +1 -1
  63. package/dist/operators/filtering.cjs +1 -1
  64. package/dist/operators/filtering.cjs.map +1 -1
  65. package/dist/operators/filtering.d.ts.map +1 -1
  66. package/dist/operators/filtering.js +44 -47
  67. package/dist/operators/filtering.js.map +1 -1
  68. package/dist/operators/transformation.cjs +1 -1
  69. package/dist/operators/transformation.cjs.map +1 -1
  70. package/dist/operators/transformation.d.ts.map +1 -1
  71. package/dist/operators/transformation.js +68 -68
  72. package/dist/operators/transformation.js.map +1 -1
  73. package/dist/operators/utility.cjs +1 -1
  74. package/dist/operators/utility.cjs.map +1 -1
  75. package/dist/operators/utility.d.ts.map +1 -1
  76. package/dist/operators/utility.js +45 -46
  77. package/dist/operators/utility.js.map +1 -1
  78. package/dist/pipe.cjs.map +1 -1
  79. package/dist/pipe.d.ts.map +1 -1
  80. package/dist/pipe.js.map +1 -1
  81. package/dist/ripple.d.ts +1 -1
  82. package/dist/ripple.d.ts.map +1 -1
  83. package/dist/subject.cjs +1 -1
  84. package/dist/subject.cjs.map +1 -1
  85. package/dist/subject.d.ts.map +1 -1
  86. package/dist/subject.js +9 -9
  87. package/dist/subject.js.map +1 -1
  88. package/dist/subjects.d.ts +1 -1
  89. package/dist/subjects.d.ts.map +1 -1
  90. package/dist/types.d.ts +1 -1
  91. package/dist/types.d.ts.map +1 -1
  92. package/package.json +54 -54
@@ -1,85 +1,82 @@
1
- import { stream as e } from "../core.js";
2
- import { link as t } from "../_link.js";
3
- import { FluxTimeoutError as n } from "../errors.js";
4
- import { defaultScheduler as r } from "../_scheduler.js";
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";
5
+ import { defaultScheduler as a } from "../_scheduler.js";
5
6
  //#region src/operators/filtering.ts
6
- function i(e, t) {
7
- if (!Number.isFinite(e) || e < 0) throw RangeError(`${t} must be a finite number greater than or equal to zero`);
8
- }
9
- function a(n) {
10
- if (!Number.isInteger(n) || n < 0) throw RangeError("take count must be a non-negative integer");
11
- return (r) => e((e, i) => {
12
- if (n === 0) {
13
- e.complete();
7
+ function o(e) {
8
+ return t(e, "take count"), (t) => n((n, i) => {
9
+ if (e === 0) {
10
+ n.complete();
14
11
  return;
15
12
  }
16
13
  let a = 0, o = {};
17
- return o.current = t(r, {
18
- complete: e.complete,
19
- error: e.error,
14
+ return o.current = r(t, {
15
+ complete: n.complete,
16
+ error: n.error,
20
17
  next(t) {
21
- e.next(t), a++, a === n && (e.complete(), o.current?.unsubscribe());
18
+ n.next(t), a++, a === e && (n.complete(), o.current?.unsubscribe());
22
19
  }
23
20
  }, i), () => o.current?.unsubscribe();
24
21
  });
25
22
  }
26
- function o(n) {
27
- return (r) => e((e, i) => {
23
+ function s(e) {
24
+ return (t) => n((n, i) => {
28
25
  let a, o, s = () => {}, c = () => {
29
- a?.unsubscribe(), o?.unsubscribe(), e.complete();
26
+ a?.unsubscribe(), o?.unsubscribe(), n.complete();
30
27
  };
31
- if (n instanceof AbortSignal) {
32
- if (n.aborted) {
33
- e.complete();
28
+ if (e instanceof AbortSignal) {
29
+ if (e.aborted) {
30
+ n.complete();
34
31
  return;
35
32
  }
36
- n.addEventListener("abort", c, { once: !0 }), s = () => n.removeEventListener("abort", c);
37
- } else o = t(n, {
38
- error: e.error,
33
+ e.addEventListener("abort", c, { once: !0 }), s = () => e.removeEventListener("abort", c);
34
+ } else o = r(e, {
35
+ error: n.error,
39
36
  next: c
40
37
  }, i);
41
- return i.aborted || (a = t(r, {
42
- complete: e.complete,
43
- error: e.error,
44
- next: e.next
38
+ return i.aborted || (a = r(t, {
39
+ complete: n.complete,
40
+ error: n.error,
41
+ next: n.next
45
42
  }, i)), () => {
46
43
  s(), a?.unsubscribe(), o?.unsubscribe();
47
44
  };
48
45
  });
49
46
  }
50
- function s(n) {
51
- return i(n.for, "Debounce duration"), (i) => e((e, a) => {
47
+ function c(t) {
48
+ return e(t.for, "Debounce duration"), (e) => n((n, i) => {
52
49
  let o, s, c = !1, l = () => {
53
- o = void 0, c && (c = !1, e.next(s));
54
- }, u = t(i, {
50
+ o = void 0, c && (c = !1, n.next(s));
51
+ }, u = r(e, {
55
52
  complete() {
56
- o?.(), l(), e.complete();
53
+ o?.(), l(), n.complete();
57
54
  },
58
- error: e.error,
55
+ error: n.error,
59
56
  next(e) {
60
- s = e, c = !0, o?.(), o = r.delay(l, n.for);
57
+ s = e, c = !0, o?.(), o = a.delay(l, t.for);
61
58
  }
62
- }, a);
59
+ }, i);
63
60
  return () => {
64
61
  o?.(), u.unsubscribe();
65
62
  };
66
63
  });
67
64
  }
68
- function c(a) {
69
- return i(a.after, "Timeout duration"), (i) => e((e, o) => {
65
+ function l(t) {
66
+ return e(t.after, "Timeout duration"), (e) => n((n, o) => {
70
67
  let s, c = () => {
71
- s = r.delay(() => e.error(new n(a.after)), a.after);
68
+ s = a.delay(() => n.error(new i(t.after)), t.after);
72
69
  };
73
70
  c();
74
- let l = t(i, {
71
+ let l = r(e, {
75
72
  complete() {
76
- s(), e.complete();
73
+ s(), n.complete();
77
74
  },
78
- error(t) {
79
- s(), e.error(t);
75
+ error(e) {
76
+ s(), n.error(e);
80
77
  },
81
- next(t) {
82
- s(), c(), e.next(t);
78
+ next(e) {
79
+ s(), c(), n.next(e);
83
80
  }
84
81
  }, o);
85
82
  return () => {
@@ -88,6 +85,6 @@ function c(a) {
88
85
  });
89
86
  }
90
87
  //#endregion
91
- export { s as debounce, a as take, o as takeUntil, c as timeout };
88
+ export { c as debounce, o as take, s as takeUntil, l as timeout };
92
89
 
93
90
  //# sourceMappingURL=filtering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.js","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["import type { Operator, Stream, Subscription } from '../types';\n\nimport { link } from '../_link';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport { FluxTimeoutError } from '../errors';\n\nexport type DebounceOptions = {\n for: number;\n};\n\nexport type TimeoutOptions = {\n after: number;\n};\n\nfunction assertDuration(milliseconds: number, name: string): void {\n if (!Number.isFinite(milliseconds) || milliseconds < 0) {\n throw new RangeError(`${name} must be a finite number greater than or equal to zero`);\n }\n}\n\nexport function take<T>(count: number): Operator<T, T> {\n if (!Number.isInteger(count) || count < 0) {\n throw new RangeError('take count must be a non-negative integer');\n }\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (notifier instanceof AbortSignal) {\n if (notifier.aborted) {\n sink.complete();\n\n return;\n }\n\n notifier.addEventListener('abort', complete, { once: true });\n removeNotifier = (): void => notifier.removeEventListener('abort', complete);\n } else {\n notifierSubscription = link(notifier, { error: sink.error, next: complete }, signal);\n }\n\n if (!signal.aborted) {\n sourceSubscription = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n }\n\n return () => {\n removeNotifier();\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n };\n });\n}\n\nexport function debounce<T>(options: DebounceOptions): Operator<T, T> {\n assertDuration(options.for, 'Debounce duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: (() => void) | undefined;\n let pending: T | undefined;\n let hasPending = false;\n\n const flush = (): void => {\n cancel = undefined;\n\n if (!hasPending) return;\n\n hasPending = false;\n sink.next(pending as T);\n };\n\n const subscription = link(\n source,\n {\n complete() {\n cancel?.();\n flush();\n sink.complete();\n },\n error: sink.error,\n next(value) {\n pending = value;\n hasPending = true;\n cancel?.();\n cancel = defaultScheduler.delay(flush, options.for);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(options: TimeoutOptions): Operator<T, T> {\n assertDuration(options.after, 'Timeout duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: () => void;\n\n const start = (): void => {\n cancel = defaultScheduler.delay(() => sink.error(new FluxTimeoutError(options.after)), options.after);\n };\n\n start();\n\n const subscription = link(\n source,\n {\n complete() {\n cancel();\n sink.complete();\n },\n error(reason) {\n cancel();\n sink.error(reason);\n },\n next(value) {\n cancel();\n start();\n sink.next(value);\n },\n },\n signal,\n );\n\n return () => {\n cancel();\n subscription.unsubscribe();\n };\n });\n}\n"],"mappings":";;;;;AAeA,SAAS,EAAe,GAAsB,GAAoB;CAChE,IAAI,CAAC,OAAO,SAAS,CAAY,KAAK,IAAe,GACnD,MAAU,WAAW,GAAG,EAAK,uDAAuD;AAExF;AAEA,SAAgB,EAAQ,GAA+B;CACrD,IAAI,CAAC,OAAO,UAAU,CAAK,KAAK,IAAQ,GACtC,MAAU,WAAW,2CAA2C;CAGlE,QAAQ,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,GAA0C;CAGpE,OAFA,EAAe,EAAQ,KAAK,mBAAmB,IAEvC,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,EAAQ,GAAG;GACpD;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,IAAS,GACT,EAAa,YAAY;EAC3B;CACF,CAAC;AACL;AAEA,SAAgB,EAAW,GAAyC;CAGlE,OAFA,EAAe,EAAQ,OAAO,kBAAkB,IAExC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GAEE,UAAoB;GACxB,IAAS,EAAiB,YAAY,EAAK,MAAM,IAAI,EAAiB,EAAQ,KAAK,CAAC,GAAG,EAAQ,KAAK;EACtG;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';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport { FluxTimeoutError } from '../errors';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type DebounceOptions = {\n for: number;\n};\n\nexport type TimeoutOptions = {\n after: number;\n};\n\nexport function take<T>(count: number): Operator<T, T> {\n assertNonNegativeInteger(count, 'take count');\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (notifier instanceof AbortSignal) {\n if (notifier.aborted) {\n sink.complete();\n\n return;\n }\n\n notifier.addEventListener('abort', complete, { once: true });\n removeNotifier = (): void => notifier.removeEventListener('abort', complete);\n } else {\n notifierSubscription = link(notifier, { error: sink.error, next: complete }, signal);\n }\n\n if (!signal.aborted) {\n sourceSubscription = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n }\n\n return () => {\n removeNotifier();\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n };\n });\n}\n\nexport function debounce<T>(options: DebounceOptions): Operator<T, T> {\n assertDuration(options.for, 'Debounce duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: (() => void) | undefined;\n let pending: T | undefined;\n let hasPending = false;\n\n const flush = (): void => {\n cancel = undefined;\n\n if (!hasPending) return;\n\n hasPending = false;\n sink.next(pending as T);\n };\n\n const subscription = link(\n source,\n {\n complete() {\n cancel?.();\n flush();\n sink.complete();\n },\n error: sink.error,\n next(value) {\n pending = value;\n hasPending = true;\n cancel?.();\n cancel = defaultScheduler.delay(flush, options.for);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(options: TimeoutOptions): Operator<T, T> {\n assertDuration(options.after, 'Timeout duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: () => void;\n\n const start = (): void => {\n cancel = defaultScheduler.delay(() => sink.error(new FluxTimeoutError(options.after)), options.after);\n };\n\n start();\n\n const subscription = link(\n source,\n {\n complete() {\n cancel();\n sink.complete();\n },\n error(reason) {\n cancel();\n sink.error(reason);\n },\n next(value) {\n cancel();\n start();\n sink.next(value);\n },\n },\n signal,\n );\n\n return () => {\n cancel();\n subscription.unsubscribe();\n };\n });\n}\n"],"mappings":";;;;;;AAeA,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,GAA0C;CAGpE,OAFA,EAAe,EAAQ,KAAK,mBAAmB,IAEvC,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,EAAQ,GAAG;GACpD;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,IAAS,GACT,EAAa,YAAY;EAC3B;CACF,CAAC;AACL;AAEA,SAAgB,EAAW,GAAyC;CAGlE,OAFA,EAAe,EAAQ,OAAO,kBAAkB,IAExC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GAEE,UAAoB;GACxB,IAAS,EAAiB,YAAY,EAAK,MAAM,IAAI,EAAiB,EAAQ,KAAK,CAAC,GAAG,EAAQ,KAAK;EACtG;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,2 +1,2 @@
1
- const e=require("../core.cjs"),t=require("../_link.cjs"),n=require("../_safe.cjs");function r(r){return i=>e.stream((e,a)=>t.link(i,{complete:e.complete,error:e.error,next(t){n.tryCall(()=>e.next(r(t)),e.error)}},a).unsubscribe)}function i(r){return i=>e.stream((e,a)=>t.link(i,{complete:e.complete,error:e.error,next(t){n.tryCall(()=>{r(t)&&e.next(t)},e.error)}},a).unsubscribe)}function a(r,i){return a=>e.stream((e,o)=>{let s=i;return t.link(a,{complete:e.complete,error:e.error,next(t){n.tryCall(()=>{s=r(s,t),e.next(s)},e.error)}},o).unsubscribe})}function o(r){return i=>e.stream((e,a)=>{let o=!1,s,c=()=>{o&&!s&&e.complete()},l=t.link(i,{complete(){o=!0,c()},error:e.error,next(i){s?.unsubscribe(),s=void 0,n.tryCall(()=>{let n=t.link(r(i),{complete(){s=void 0,c()},error:e.error,next:e.next},a);s=n.closed?void 0:n},e.error)}},a);return()=>{l.unsubscribe(),s?.unsubscribe()}})}function s(r){return i=>e.stream((e,a)=>{let o=!1,s=new Set,c=()=>{o&&s.size===0&&e.complete()},l=t.link(i,{complete(){o=!0,c()},error:e.error,next(i){n.tryCall(()=>{let n={};n.current=t.link(r(i),{complete(){n.current&&s.delete(n.current),c()},error:e.error,next:e.next},a),n.current.closed||s.add(n.current)},e.error)}},a);return()=>{l.unsubscribe();for(let e of s)e.unsubscribe()}})}function c(r,i){if(!Number.isInteger(i.capacity)||i.capacity<1)throw RangeError(`concatMap capacity must be a positive integer`);return a=>e.stream((e,o)=>{let s=[],c=!1,l,u={},d=()=>{if(l||s.length===0){c&&!l&&s.length===0&&e.complete();return}let i=s.shift();n.tryCall(()=>{let n=t.link(r(i),{complete(){l=void 0,d()},error:e.error,next:e.next},o);l=n.closed?void 0:n,l||d()},e.error)};return u.current=t.link(a,{complete(){c=!0,d()},error:e.error,next(t){if(s.length===i.capacity){u.current?.unsubscribe(),e.error(RangeError(`concatMap buffer capacity exceeded`));return}s.push(t),d()}},o),()=>{u.current?.unsubscribe(),l?.unsubscribe(),s.length=0}})}exports.concatMap=c,exports.filter=i,exports.map=r,exports.mergeMap=s,exports.scan=a,exports.switchMap=o;
1
+ const e=require("../_numeric.cjs"),t=require("../core.cjs"),n=require("../_link.cjs"),r=require("../_safe.cjs");function i(e){return i=>t.stream((t,a)=>n.link(i,{complete:t.complete,error:t.error,next(n){r.tryCall(()=>t.next(e(n)),t.error)}},a).unsubscribe)}function a(e){return i=>t.stream((t,a)=>n.link(i,{complete:t.complete,error:t.error,next(n){r.tryCall(()=>{e(n)&&t.next(n)},t.error)}},a).unsubscribe)}function o(e,i){return a=>t.stream((t,o)=>{let s=i;return n.link(a,{complete:t.complete,error:t.error,next(n){r.tryCall(()=>{s=e(s,n),t.next(s)},t.error)}},o).unsubscribe})}function s(e){return i=>t.stream((t,a)=>{let o=!1,s,c=()=>{o&&!s&&t.complete()},l=n.link(i,{complete(){o=!0,c()},error:t.error,next(i){s?.unsubscribe(),s=void 0,r.tryCall(()=>{let r=n.link(e(i),{complete(){s=void 0,c()},error:t.error,next:t.next},a);s=r.closed?void 0:r},t.error)}},a);return()=>{l.unsubscribe(),s?.unsubscribe()}})}function c(e){return i=>t.stream((t,a)=>{let o=!1,s=new Set,c=()=>{o&&s.size===0&&t.complete()},l=n.link(i,{complete(){o=!0,c()},error:t.error,next(i){r.tryCall(()=>{let r={};r.current=n.link(e(i),{complete(){r.current&&s.delete(r.current),c()},error:t.error,next:t.next},a),r.current.closed||s.add(r.current)},t.error)}},a);return()=>{l.unsubscribe();for(let e of s)e.unsubscribe()}})}function l(i,a){return e.assertPositiveInteger(a.capacity,`concatMap capacity`),e=>t.stream((t,o)=>{let s=[],c=!1,l,u={},d=()=>{if(l||s.length===0){c&&!l&&s.length===0&&t.complete();return}let e=s.shift();r.tryCall(()=>{let r=n.link(i(e),{complete(){l=void 0,d()},error:t.error,next:t.next},o);l=r.closed?void 0:r,l||d()},t.error)};return u.current=n.link(e,{complete(){c=!0,d()},error:t.error,next(e){if(s.length===a.capacity){u.current?.unsubscribe(),t.error(RangeError(`concatMap buffer capacity exceeded`));return}s.push(e),d()}},o),()=>{u.current?.unsubscribe(),l?.unsubscribe(),s.length=0}})}exports.concatMap=l,exports.filter=a,exports.map=i,exports.mergeMap=c,exports.scan=o,exports.switchMap=s;
2
2
  //# sourceMappingURL=transformation.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformation.cjs","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import type { Operator, Stream, Subscription } from '../types';\n\nimport { link } from '../_link';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\n\nexport type ConcatMapOptions = {\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n const inners = new Set<Subscription>();\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n };\n });\n}\n\nexport function concatMap<A, B>(project: (value: A) => Stream<B>, options: ConcatMapOptions): Operator<A, B> {\n if (!Number.isInteger(options.capacity) || options.capacity < 1) {\n throw new RangeError('concatMap capacity must be a positive integer');\n }\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n let outerComplete = false;\n let inner: Subscription | undefined;\n const outerRef: { current?: Subscription } = {};\n\n const next = (): void => {\n if (inner || queue.length === 0) {\n if (outerComplete && !inner && queue.length === 0) sink.complete();\n\n return;\n }\n\n const value = queue.shift()!;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n next();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n\n if (!inner) next();\n }, sink.error);\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n next();\n },\n error: sink.error,\n next(value) {\n if (queue.length === options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new RangeError('concatMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n next();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n inner?.unsubscribe();\n queue.length = 0;\n };\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"transformation.cjs","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import { link } from '../_link';\nimport { assertPositiveInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type ConcatMapOptions = {\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n const inners = new Set<Subscription>();\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n };\n });\n}\n\nexport function concatMap<A, B>(project: (value: A) => Stream<B>, options: ConcatMapOptions): Operator<A, B> {\n assertPositiveInteger(options.capacity, 'concatMap capacity');\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n let outerComplete = false;\n let inner: Subscription | undefined;\n const outerRef: { current?: Subscription } = {};\n\n const next = (): void => {\n if (inner || queue.length === 0) {\n if (outerComplete && !inner && queue.length === 0) sink.complete();\n\n return;\n }\n\n const value = queue.shift()!;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n next();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n\n if (!inner) next();\n }, sink.error);\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n next();\n },\n error: sink.error,\n next(value) {\n if (queue.length === options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new RangeError('concatMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n next();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n inner?.unsubscribe();\n queue.length = 0;\n };\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../../src/operators/transformation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAM/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgBlE;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAkB1E;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAoBzF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgDhF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgD/E;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAsE3G"}
1
+ {"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../../src/operators/transformation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgBlE;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAkB1E;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAoBzF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgDhF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgD/E;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAoE3G"}
@@ -1,61 +1,62 @@
1
- import { stream as e } from "../core.js";
2
- import { link as t } from "../_link.js";
3
- import { tryCall as n } from "../_safe.js";
1
+ import { assertPositiveInteger as e } from "../_numeric.js";
2
+ import { stream as t } from "../core.js";
3
+ import { link as n } from "../_link.js";
4
+ import { tryCall as r } from "../_safe.js";
4
5
  //#region src/operators/transformation.ts
5
- function r(r) {
6
- return (i) => e((e, a) => t(i, {
7
- complete: e.complete,
8
- error: e.error,
9
- next(t) {
10
- n(() => e.next(r(t)), e.error);
6
+ function i(e) {
7
+ return (i) => t((t, a) => n(i, {
8
+ complete: t.complete,
9
+ error: t.error,
10
+ next(n) {
11
+ r(() => t.next(e(n)), t.error);
11
12
  }
12
13
  }, a).unsubscribe);
13
14
  }
14
- function i(r) {
15
- return (i) => e((e, a) => t(i, {
16
- complete: e.complete,
17
- error: e.error,
18
- next(t) {
19
- n(() => {
20
- r(t) && e.next(t);
21
- }, e.error);
15
+ function a(e) {
16
+ return (i) => t((t, a) => n(i, {
17
+ complete: t.complete,
18
+ error: t.error,
19
+ next(n) {
20
+ r(() => {
21
+ e(n) && t.next(n);
22
+ }, t.error);
22
23
  }
23
24
  }, a).unsubscribe);
24
25
  }
25
- function a(r, i) {
26
- return (a) => e((e, o) => {
26
+ function o(e, i) {
27
+ return (a) => t((t, o) => {
27
28
  let s = i;
28
- return t(a, {
29
- complete: e.complete,
30
- error: e.error,
31
- next(t) {
32
- n(() => {
33
- s = r(s, t), e.next(s);
34
- }, e.error);
29
+ return n(a, {
30
+ complete: t.complete,
31
+ error: t.error,
32
+ next(n) {
33
+ r(() => {
34
+ s = e(s, n), t.next(s);
35
+ }, t.error);
35
36
  }
36
37
  }, o).unsubscribe;
37
38
  });
38
39
  }
39
- function o(r) {
40
- return (i) => e((e, a) => {
40
+ function s(e) {
41
+ return (i) => t((t, a) => {
41
42
  let o = !1, s, c = () => {
42
- o && !s && e.complete();
43
- }, l = t(i, {
43
+ o && !s && t.complete();
44
+ }, l = n(i, {
44
45
  complete() {
45
46
  o = !0, c();
46
47
  },
47
- error: e.error,
48
+ error: t.error,
48
49
  next(i) {
49
- s?.unsubscribe(), s = void 0, n(() => {
50
- let n = t(r(i), {
50
+ s?.unsubscribe(), s = void 0, r(() => {
51
+ let r = n(e(i), {
51
52
  complete() {
52
53
  s = void 0, c();
53
54
  },
54
- error: e.error,
55
- next: e.next
55
+ error: t.error,
56
+ next: t.next
56
57
  }, a);
57
- s = n.closed ? void 0 : n;
58
- }, e.error);
58
+ s = r.closed ? void 0 : r;
59
+ }, t.error);
59
60
  }
60
61
  }, a);
61
62
  return () => {
@@ -63,26 +64,26 @@ function o(r) {
63
64
  };
64
65
  });
65
66
  }
66
- function s(r) {
67
- return (i) => e((e, a) => {
67
+ function c(e) {
68
+ return (i) => t((t, a) => {
68
69
  let o = !1, s = /* @__PURE__ */ new Set(), c = () => {
69
- o && s.size === 0 && e.complete();
70
- }, l = t(i, {
70
+ o && s.size === 0 && t.complete();
71
+ }, l = n(i, {
71
72
  complete() {
72
73
  o = !0, c();
73
74
  },
74
- error: e.error,
75
+ error: t.error,
75
76
  next(i) {
76
- n(() => {
77
- let n = {};
78
- n.current = t(r(i), {
77
+ r(() => {
78
+ let r = {};
79
+ r.current = n(e(i), {
79
80
  complete() {
80
- n.current && s.delete(n.current), c();
81
+ r.current && s.delete(r.current), c();
81
82
  },
82
- error: e.error,
83
- next: e.next
84
- }, a), n.current.closed || s.add(n.current);
85
- }, e.error);
83
+ error: t.error,
84
+ next: t.next
85
+ }, a), r.current.closed || s.add(r.current);
86
+ }, t.error);
86
87
  }
87
88
  }, a);
88
89
  return () => {
@@ -91,37 +92,36 @@ function s(r) {
91
92
  };
92
93
  });
93
94
  }
94
- function c(r, i) {
95
- if (!Number.isInteger(i.capacity) || i.capacity < 1) throw RangeError("concatMap capacity must be a positive integer");
96
- return (a) => e((e, o) => {
95
+ function l(i, a) {
96
+ return e(a.capacity, "concatMap capacity"), (e) => t((t, o) => {
97
97
  let s = [], c = !1, l, u = {}, d = () => {
98
98
  if (l || s.length === 0) {
99
- c && !l && s.length === 0 && e.complete();
99
+ c && !l && s.length === 0 && t.complete();
100
100
  return;
101
101
  }
102
- let i = s.shift();
103
- n(() => {
104
- let n = t(r(i), {
102
+ let e = s.shift();
103
+ r(() => {
104
+ let r = n(i(e), {
105
105
  complete() {
106
106
  l = void 0, d();
107
107
  },
108
- error: e.error,
109
- next: e.next
108
+ error: t.error,
109
+ next: t.next
110
110
  }, o);
111
- l = n.closed ? void 0 : n, l || d();
112
- }, e.error);
111
+ l = r.closed ? void 0 : r, l || d();
112
+ }, t.error);
113
113
  };
114
- return u.current = t(a, {
114
+ return u.current = n(e, {
115
115
  complete() {
116
116
  c = !0, d();
117
117
  },
118
- error: e.error,
119
- next(t) {
120
- if (s.length === i.capacity) {
121
- u.current?.unsubscribe(), e.error(/* @__PURE__ */ RangeError("concatMap buffer capacity exceeded"));
118
+ error: t.error,
119
+ next(e) {
120
+ if (s.length === a.capacity) {
121
+ u.current?.unsubscribe(), t.error(/* @__PURE__ */ RangeError("concatMap buffer capacity exceeded"));
122
122
  return;
123
123
  }
124
- s.push(t), d();
124
+ s.push(e), d();
125
125
  }
126
126
  }, o), () => {
127
127
  u.current?.unsubscribe(), l?.unsubscribe(), s.length = 0;
@@ -129,6 +129,6 @@ function c(r, i) {
129
129
  });
130
130
  }
131
131
  //#endregion
132
- export { c as concatMap, i as filter, r as map, s as mergeMap, a as scan, o as switchMap };
132
+ export { l as concatMap, a as filter, i as map, c as mergeMap, o as scan, s as switchMap };
133
133
 
134
134
  //# sourceMappingURL=transformation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformation.js","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import type { Operator, Stream, Subscription } from '../types';\n\nimport { link } from '../_link';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\n\nexport type ConcatMapOptions = {\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n const inners = new Set<Subscription>();\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n };\n });\n}\n\nexport function concatMap<A, B>(project: (value: A) => Stream<B>, options: ConcatMapOptions): Operator<A, B> {\n if (!Number.isInteger(options.capacity) || options.capacity < 1) {\n throw new RangeError('concatMap capacity must be a positive integer');\n }\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n let outerComplete = false;\n let inner: Subscription | undefined;\n const outerRef: { current?: Subscription } = {};\n\n const next = (): void => {\n if (inner || queue.length === 0) {\n if (outerComplete && !inner && queue.length === 0) sink.complete();\n\n return;\n }\n\n const value = queue.shift()!;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n next();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n\n if (!inner) next();\n }, sink.error);\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n next();\n },\n error: sink.error,\n next(value) {\n if (queue.length === options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new RangeError('concatMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n next();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n inner?.unsubscribe();\n queue.length = 0;\n };\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"transformation.js","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import { link } from '../_link';\nimport { assertPositiveInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type ConcatMapOptions = {\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n const inners = new Set<Subscription>();\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n };\n });\n}\n\nexport function concatMap<A, B>(project: (value: A) => Stream<B>, options: ConcatMapOptions): Operator<A, B> {\n assertPositiveInteger(options.capacity, 'concatMap capacity');\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n let outerComplete = false;\n let inner: Subscription | undefined;\n const outerRef: { current?: Subscription } = {};\n\n const next = (): void => {\n if (inner || queue.length === 0) {\n if (outerComplete && !inner && queue.length === 0) sink.complete();\n\n return;\n }\n\n const value = queue.shift()!;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n next();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n\n if (!inner) next();\n }, sink.error);\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n next();\n },\n error: sink.error,\n next(value) {\n if (queue.length === options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new RangeError('concatMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n next();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n inner?.unsubscribe();\n queue.length = 0;\n };\n });\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("../core.cjs"),t=require("../_link.cjs"),n=require("../_safe.cjs"),r=require("../_scheduler.cjs");function i(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function a(i){if(!Number.isInteger(i.attempts)||i.attempts<0)throw RangeError(`retry attempts must be a non-negative integer`);return a=>e.stream((e,o)=>{let s=0,c,l,u=()=>{if(o.aborted)return;let d=t.link(a,{complete:e.complete,error(t){if(s===i.attempts){e.error(t);return}let a=s++,c;if(n.tryCall(()=>{c=typeof i.delay==`function`?i.delay(a):i.delay},e.error),!o.aborted){if(c!==void 0&&(!Number.isFinite(c)||c<0)){e.error(RangeError(`retry delay must be a finite number greater than or equal to zero`));return}c===void 0||c===0?queueMicrotask(u):l=r.defaultScheduler.delay(u,c)}},next:e.next},o);d.closed||(c=d)};return u(),()=>{l?.(),c?.unsubscribe()}})}function o(e,n){return new Promise((r,a)=>{let o=new AbortController,s=()=>{o.abort(),a(i())};if(n?.signal?.aborted){s();return}n?.signal?.addEventListener(`abort`,s,{once:!0}),t.link(e,{error(e){n?.signal?.removeEventListener(`abort`,s),a(e)},next(e){n?.signal?.removeEventListener(`abort`,s),o.abort(),r(e)}},o.signal)})}function s(e,n){return new Promise((r,a)=>{let o=()=>a(i()),s;if(n?.signal?.aborted){o();return}n?.signal?.addEventListener(`abort`,o,{once:!0}),t.link(e,{complete(){n?.signal?.removeEventListener(`abort`,o),r(s)},error(e){n?.signal?.removeEventListener(`abort`,o),a(e)},next(e){s=e}},n?.signal??new AbortController().signal)})}function c(e,n){if(!Number.isInteger(n.maxItems)||n.maxItems<0)throw RangeError(`toArray maxItems must be a non-negative integer`);return new Promise((r,a)=>{let o=new AbortController,s=[],c=()=>{o.abort(),a(i())};if(n.signal?.aborted){c();return}n.signal?.addEventListener(`abort`,c,{once:!0}),t.link(e,{complete(){n.signal?.removeEventListener(`abort`,c),r(s)},error(e){n.signal?.removeEventListener(`abort`,c),a(e)},next(e){if(s.length===n.maxItems){n.signal?.removeEventListener(`abort`,c),o.abort(),a(RangeError(`toArray maxItems exceeded`));return}s.push(e)}},o.signal)})}exports.first=o,exports.last=s,exports.retry=a,exports.toArray=c;
1
+ const e=require("../_numeric.cjs"),t=require("../core.cjs"),n=require("../_link.cjs"),r=require("../_safe.cjs"),i=require("../_scheduler.cjs");function a(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function o(a){return e.assertNonNegativeInteger(a.attempts,`retry attempts`),e=>t.stream((t,o)=>{let s=0,c,l,u=()=>{if(o.aborted)return;let d=n.link(e,{complete:t.complete,error(e){if(s===a.attempts){t.error(e);return}let n=s++,c;if(r.tryCall(()=>{c=typeof a.delay==`function`?a.delay(n):a.delay},t.error),!o.aborted){if(c!==void 0&&(!Number.isFinite(c)||c<0)){t.error(RangeError(`retry delay must be a finite number greater than or equal to zero`));return}c===void 0||c===0?queueMicrotask(u):l=i.defaultScheduler.delay(u,c)}},next:t.next},o);d.closed||(c=d)};return u(),()=>{l?.(),c?.unsubscribe()}})}function s(e,t){return new Promise((r,i)=>{let o=new AbortController,s=()=>{o.abort(),i(a())};if(t?.signal?.aborted){s();return}t?.signal?.addEventListener(`abort`,s,{once:!0}),n.link(e,{error(e){t?.signal?.removeEventListener(`abort`,s),i(e)},next(e){t?.signal?.removeEventListener(`abort`,s),o.abort(),r(e)}},o.signal)})}function c(e,t){return new Promise((r,i)=>{let o=()=>i(a()),s;if(t?.signal?.aborted){o();return}t?.signal?.addEventListener(`abort`,o,{once:!0}),n.link(e,{complete(){t?.signal?.removeEventListener(`abort`,o),r(s)},error(e){t?.signal?.removeEventListener(`abort`,o),i(e)},next(e){s=e}},t?.signal??new AbortController().signal)})}function l(t,r){return e.assertNonNegativeInteger(r.maxItems,`toArray maxItems`),new Promise((e,i)=>{let o=new AbortController,s=[],c=()=>{o.abort(),i(a())};if(r.signal?.aborted){c();return}r.signal?.addEventListener(`abort`,c,{once:!0}),n.link(t,{complete(){r.signal?.removeEventListener(`abort`,c),e(s)},error(e){r.signal?.removeEventListener(`abort`,c),i(e)},next(e){if(s.length===r.maxItems){r.signal?.removeEventListener(`abort`,c),o.abort(),i(RangeError(`toArray maxItems exceeded`));return}s.push(e)}},o.signal)})}exports.first=s,exports.last=c,exports.retry=o,exports.toArray=l;
2
2
  //# sourceMappingURL=utility.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utility.cjs","names":[],"sources":["../../src/operators/utility.ts"],"sourcesContent":["import type { Operator, Stream, Subscription } from '../types';\n\nimport { link } from '../_link';\nimport { tryCall } from '../_safe';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\n\nexport type RetryOptions = {\n attempts: number;\n delay?: number | ((attempt: number) => number);\n};\n\nexport type ToArrayOptions = {\n maxItems: number;\n signal?: AbortSignal;\n};\n\nexport type ValueOptions = {\n signal?: AbortSignal;\n};\n\nfunction abortError(): DOMException {\n return new DOMException('Stream consumption aborted', 'AbortError');\n}\n\nexport function retry<T>(options: RetryOptions): Operator<T, T> {\n if (!Number.isInteger(options.attempts) || options.attempts < 0) {\n throw new RangeError('retry attempts must be a non-negative integer');\n }\n\n return (source) =>\n stream((sink, signal) => {\n let attempts = 0;\n let current: Subscription | undefined;\n let cancelDelay: (() => void) | undefined;\n\n const start = (): void => {\n if (signal.aborted) return;\n\n const subscription = link(\n source,\n {\n complete: sink.complete,\n error(reason) {\n if (attempts === options.attempts) {\n sink.error(reason);\n\n return;\n }\n\n const attempt = attempts++;\n let delay: number | undefined;\n\n tryCall(() => {\n delay = typeof options.delay === 'function' ? options.delay(attempt) : options.delay;\n }, sink.error);\n\n if (signal.aborted) return;\n\n if (delay !== undefined && (!Number.isFinite(delay) || delay < 0)) {\n sink.error(new RangeError('retry delay must be a finite number greater than or equal to zero'));\n\n return;\n }\n\n if (delay === undefined || delay === 0) {\n queueMicrotask(start);\n } else {\n cancelDelay = defaultScheduler.delay(start, delay);\n }\n },\n next: sink.next,\n },\n signal,\n );\n\n if (!subscription.closed) current = subscription;\n };\n\n start();\n\n return () => {\n cancelDelay?.();\n current?.unsubscribe();\n };\n });\n}\n\nexport function first<T>(source: Stream<T>, options?: ValueOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n options?.signal?.removeEventListener('abort', abort);\n controller.abort();\n resolve(value);\n },\n },\n controller.signal,\n );\n });\n}\n\nexport function last<T>(source: Stream<T>, options?: ValueOptions): Promise<T | undefined> {\n return new Promise<T | undefined>((resolve, reject) => {\n const abort = (): void => reject(abortError());\n let latest: T | undefined;\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options?.signal?.removeEventListener('abort', abort);\n resolve(latest);\n },\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n latest = value;\n },\n },\n options?.signal ?? new AbortController().signal,\n );\n });\n}\n\nexport function toArray<T>(source: Stream<T>, options: ToArrayOptions): Promise<T[]> {\n if (!Number.isInteger(options.maxItems) || options.maxItems < 0) {\n throw new RangeError('toArray maxItems must be a non-negative integer');\n }\n\n return new Promise<T[]>((resolve, reject) => {\n const controller = new AbortController();\n const values: T[] = [];\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options.signal?.aborted) {\n abort();\n\n return;\n }\n\n options.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options.signal?.removeEventListener('abort', abort);\n resolve(values);\n },\n error(reason) {\n options.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n if (values.length === options.maxItems) {\n options.signal?.removeEventListener('abort', abort);\n controller.abort();\n reject(new RangeError('toArray maxItems exceeded'));\n\n return;\n }\n\n values.push(value);\n },\n },\n controller.signal,\n );\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utility.cjs","names":[],"sources":["../../src/operators/utility.ts"],"sourcesContent":["import { link } from '../_link';\nimport { assertNonNegativeInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type RetryOptions = {\n attempts: number;\n delay?: number | ((attempt: number) => number);\n};\n\nexport type ToArrayOptions = {\n maxItems: number;\n signal?: AbortSignal;\n};\n\nexport type ValueOptions = {\n signal?: AbortSignal;\n};\n\nfunction abortError(): DOMException {\n return new DOMException('Stream consumption aborted', 'AbortError');\n}\n\nexport function retry<T>(options: RetryOptions): Operator<T, T> {\n assertNonNegativeInteger(options.attempts, 'retry attempts');\n\n return (source) =>\n stream((sink, signal) => {\n let attempts = 0;\n let current: Subscription | undefined;\n let cancelDelay: (() => void) | undefined;\n\n const start = (): void => {\n if (signal.aborted) return;\n\n const subscription = link(\n source,\n {\n complete: sink.complete,\n error(reason) {\n if (attempts === options.attempts) {\n sink.error(reason);\n\n return;\n }\n\n const attempt = attempts++;\n let delay: number | undefined;\n\n tryCall(() => {\n delay = typeof options.delay === 'function' ? options.delay(attempt) : options.delay;\n }, sink.error);\n\n if (signal.aborted) return;\n\n if (delay !== undefined && (!Number.isFinite(delay) || delay < 0)) {\n sink.error(new RangeError('retry delay must be a finite number greater than or equal to zero'));\n\n return;\n }\n\n if (delay === undefined || delay === 0) {\n queueMicrotask(start);\n } else {\n cancelDelay = defaultScheduler.delay(start, delay);\n }\n },\n next: sink.next,\n },\n signal,\n );\n\n if (!subscription.closed) current = subscription;\n };\n\n start();\n\n return () => {\n cancelDelay?.();\n current?.unsubscribe();\n };\n });\n}\n\nexport function first<T>(source: Stream<T>, options?: ValueOptions): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n options?.signal?.removeEventListener('abort', abort);\n controller.abort();\n resolve(value);\n },\n },\n controller.signal,\n );\n });\n}\n\nexport function last<T>(source: Stream<T>, options?: ValueOptions): Promise<T | undefined> {\n return new Promise<T | undefined>((resolve, reject) => {\n const abort = (): void => reject(abortError());\n let latest: T | undefined;\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options?.signal?.removeEventListener('abort', abort);\n resolve(latest);\n },\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n latest = value;\n },\n },\n options?.signal ?? new AbortController().signal,\n );\n });\n}\n\nexport function toArray<T>(source: Stream<T>, options: ToArrayOptions): Promise<T[]> {\n assertNonNegativeInteger(options.maxItems, 'toArray maxItems');\n\n return new Promise<T[]>((resolve, reject) => {\n const controller = new AbortController();\n const values: T[] = [];\n const abort = (): void => {\n controller.abort();\n reject(abortError());\n };\n\n if (options.signal?.aborted) {\n abort();\n\n return;\n }\n\n options.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options.signal?.removeEventListener('abort', abort);\n resolve(values);\n },\n error(reason) {\n options.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n if (values.length === options.maxItems) {\n options.signal?.removeEventListener('abort', abort);\n controller.abort();\n reject(new RangeError('toArray maxItems exceeded'));\n\n return;\n }\n\n values.push(value);\n },\n },\n controller.signal,\n );\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/operators/utility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAO/D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAMF,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA6D9D;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CA+B9E;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CA8BzF;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CA8CnF"}
1
+ {"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/operators/utility.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAE/D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAMF,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA2D9D;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CA+B9E;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CA8BzF;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CA4CnF"}