@vielzeug/flux 2.3.3 → 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 (134) hide show
  1. package/README.md +13 -23
  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 +1 -1
  17. package/dist/_subscription.cjs.map +1 -1
  18. package/dist/_subscription.d.ts +1 -1
  19. package/dist/_subscription.d.ts.map +1 -1
  20. package/dist/_subscription.js +1 -1
  21. package/dist/_subscription.js.map +1 -1
  22. package/dist/async.cjs.map +1 -1
  23. package/dist/async.d.ts +1 -1
  24. package/dist/async.d.ts.map +1 -1
  25. package/dist/async.js.map +1 -1
  26. package/dist/channel.cjs +1 -1
  27. package/dist/channel.cjs.map +1 -1
  28. package/dist/channel.d.ts +1 -1
  29. package/dist/channel.d.ts.map +1 -1
  30. package/dist/channel.js +14 -6
  31. package/dist/channel.js.map +1 -1
  32. package/dist/core.cjs +1 -1
  33. package/dist/core.cjs.map +1 -1
  34. package/dist/core.d.ts +8 -1
  35. package/dist/core.d.ts.map +1 -1
  36. package/dist/core.js +30 -1
  37. package/dist/core.js.map +1 -1
  38. package/dist/errors.cjs +1 -1
  39. package/dist/errors.cjs.map +1 -1
  40. package/dist/errors.d.ts +14 -0
  41. package/dist/errors.d.ts.map +1 -1
  42. package/dist/errors.js +15 -2
  43. package/dist/errors.js.map +1 -1
  44. package/dist/flux.cjs +1 -1
  45. package/dist/flux.cjs.map +1 -1
  46. package/dist/flux.iife.js +1 -1
  47. package/dist/flux.iife.js.map +1 -1
  48. package/dist/flux.js +1 -1
  49. package/dist/flux.js.map +1 -1
  50. package/dist/index.cjs +1 -1
  51. package/dist/index.d.ts +13 -14
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +10 -10
  54. package/dist/operators/combination.cjs +1 -1
  55. package/dist/operators/combination.cjs.map +1 -1
  56. package/dist/operators/combination.d.ts +1 -1
  57. package/dist/operators/combination.d.ts.map +1 -1
  58. package/dist/operators/combination.js +28 -13
  59. package/dist/operators/combination.js.map +1 -1
  60. package/dist/operators/creation.cjs +1 -1
  61. package/dist/operators/creation.cjs.map +1 -1
  62. package/dist/operators/creation.d.ts +2 -5
  63. package/dist/operators/creation.d.ts.map +1 -1
  64. package/dist/operators/creation.js +36 -30
  65. package/dist/operators/creation.js.map +1 -1
  66. package/dist/operators/filtering.cjs +1 -1
  67. package/dist/operators/filtering.cjs.map +1 -1
  68. package/dist/operators/filtering.d.ts +3 -9
  69. package/dist/operators/filtering.d.ts.map +1 -1
  70. package/dist/operators/filtering.js +32 -29
  71. package/dist/operators/filtering.js.map +1 -1
  72. package/dist/operators/transformation.cjs +1 -1
  73. package/dist/operators/transformation.cjs.map +1 -1
  74. package/dist/operators/transformation.d.ts +7 -4
  75. package/dist/operators/transformation.d.ts.map +1 -1
  76. package/dist/operators/transformation.js +82 -92
  77. package/dist/operators/transformation.js.map +1 -1
  78. package/dist/operators/utility.cjs +1 -1
  79. package/dist/operators/utility.cjs.map +1 -1
  80. package/dist/operators/utility.d.ts +6 -4
  81. package/dist/operators/utility.d.ts.map +1 -1
  82. package/dist/operators/utility.js +60 -53
  83. package/dist/operators/utility.js.map +1 -1
  84. package/dist/pipe.cjs.map +1 -1
  85. package/dist/pipe.d.ts +1 -1
  86. package/dist/pipe.d.ts.map +1 -1
  87. package/dist/pipe.js.map +1 -1
  88. package/dist/subjects.d.ts +2 -2
  89. package/dist/subjects.d.ts.map +1 -1
  90. package/package.json +10 -62
  91. package/dist/_dev.cjs +0 -2
  92. package/dist/_dev.cjs.map +0 -1
  93. package/dist/_dev.js +0 -6
  94. package/dist/_dev.js.map +0 -1
  95. package/dist/adapters/courier.cjs +0 -2
  96. package/dist/adapters/courier.cjs.map +0 -1
  97. package/dist/adapters/courier.d.ts +0 -31
  98. package/dist/adapters/courier.d.ts.map +0 -1
  99. package/dist/adapters/courier.js +0 -12
  100. package/dist/adapters/courier.js.map +0 -1
  101. package/dist/adapters/herald.cjs +0 -2
  102. package/dist/adapters/herald.cjs.map +0 -1
  103. package/dist/adapters/herald.d.ts +0 -5
  104. package/dist/adapters/herald.d.ts.map +0 -1
  105. package/dist/adapters/herald.js +0 -22
  106. package/dist/adapters/herald.js.map +0 -1
  107. package/dist/adapters/pulse.cjs +0 -2
  108. package/dist/adapters/pulse.cjs.map +0 -1
  109. package/dist/adapters/pulse.d.ts +0 -5
  110. package/dist/adapters/pulse.d.ts.map +0 -1
  111. package/dist/adapters/pulse.js +0 -18
  112. package/dist/adapters/pulse.js.map +0 -1
  113. package/dist/adapters/ripple.cjs +0 -2
  114. package/dist/adapters/ripple.cjs.map +0 -1
  115. package/dist/adapters/ripple.d.ts +0 -19
  116. package/dist/adapters/ripple.d.ts.map +0 -1
  117. package/dist/adapters/ripple.js +0 -43
  118. package/dist/adapters/ripple.js.map +0 -1
  119. package/dist/courier.cjs +0 -1
  120. package/dist/courier.d.ts +0 -2
  121. package/dist/courier.d.ts.map +0 -1
  122. package/dist/courier.js +0 -2
  123. package/dist/herald.cjs +0 -1
  124. package/dist/herald.d.ts +0 -2
  125. package/dist/herald.d.ts.map +0 -1
  126. package/dist/herald.js +0 -2
  127. package/dist/pulse.cjs +0 -1
  128. package/dist/pulse.d.ts +0 -2
  129. package/dist/pulse.d.ts.map +0 -1
  130. package/dist/pulse.js +0 -2
  131. package/dist/ripple.cjs +0 -1
  132. package/dist/ripple.d.ts +0 -3
  133. package/dist/ripple.d.ts.map +0 -1
  134. package/dist/ripple.js +0 -2
@@ -1,101 +1,108 @@
1
- import { assertNonNegativeInteger 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";
5
- import { defaultScheduler as i } from "../_scheduler.js";
1
+ import { assertDuration as e, assertNonNegativeInteger as t } from "../_numeric.js";
2
+ import { FluxCapacityError as n, FluxEmptyError as r } from "../errors.js";
3
+ import { stream as i } from "../core.js";
4
+ import { link as a } from "../_link.js";
5
+ import { defaultScheduler as o } from "../_scheduler.js";
6
+ import { tryCall as s } from "../_safe.js";
7
+ import { abortError as c } from "@vielzeug/arsenal";
6
8
  //#region src/operators/utility.ts
7
- function a() {
8
- return new DOMException("Stream consumption aborted", "AbortError");
9
- }
10
- function o(a) {
11
- return e(a.attempts, "retry attempts"), (e) => t((t, o) => {
12
- let s = 0, c, l, u = () => {
13
- if (o.aborted) return;
14
- let d = n(e, {
15
- complete: t.complete,
16
- error(e) {
17
- if (s === a.attempts) {
18
- t.error(e);
9
+ function l(n) {
10
+ return t(n.attempts, "retry attempts"), (t) => i((r, i) => {
11
+ let c = 0, l, u, d = () => {
12
+ if (i.aborted) return;
13
+ let f = a(t, {
14
+ complete: r.complete,
15
+ error(t) {
16
+ if (c === n.attempts) {
17
+ r.error(t);
19
18
  return;
20
19
  }
21
- let n = s++, c;
22
- if (r(() => {
23
- c = typeof a.delay == "function" ? a.delay(n) : a.delay;
24
- }, t.error), !o.aborted) {
25
- if (c !== void 0 && (!Number.isFinite(c) || c < 0)) {
26
- t.error(/* @__PURE__ */ RangeError("retry delay must be a finite number greater than or equal to zero"));
20
+ let a = c++, l;
21
+ if (s(() => {
22
+ l = typeof n.delay == "function" ? n.delay(a) : n.delay;
23
+ }, r.error), !i.aborted) {
24
+ if (l !== void 0) try {
25
+ e(l, "Retry delay");
26
+ } catch (e) {
27
+ r.error(e);
27
28
  return;
28
29
  }
29
- c === void 0 || c === 0 ? queueMicrotask(u) : l = i.delay(u, c);
30
+ l === void 0 || l === 0 ? queueMicrotask(d) : u = o.delay(d, l);
30
31
  }
31
32
  },
32
- next: t.next
33
- }, o);
34
- d.closed || (c = d);
33
+ next: r.next
34
+ }, i);
35
+ f.closed || (l = f);
35
36
  };
36
- return u(), () => {
37
- l?.(), c?.unsubscribe();
37
+ return d(), () => {
38
+ u?.(), l?.unsubscribe();
38
39
  };
39
40
  });
40
41
  }
41
- function s(e, t) {
42
- return new Promise((r, i) => {
42
+ function u(e, t) {
43
+ return new Promise((n, i) => {
43
44
  let o = new AbortController(), s = () => {
44
- o.abort(), i(a());
45
+ o.abort(), i(c(t?.signal, "Stream consumption aborted"));
45
46
  };
46
47
  if (t?.signal?.aborted) {
47
48
  s();
48
49
  return;
49
50
  }
50
- t?.signal?.addEventListener("abort", s, { once: !0 }), n(e, {
51
+ t?.signal?.addEventListener("abort", s, { once: !0 }), a(e, {
52
+ complete() {
53
+ t?.signal?.removeEventListener("abort", s), "defaultValue" in (t ?? {}) ? n(t.defaultValue) : i(new r());
54
+ },
51
55
  error(e) {
52
56
  t?.signal?.removeEventListener("abort", s), i(e);
53
57
  },
54
58
  next(e) {
55
- t?.signal?.removeEventListener("abort", s), o.abort(), r(e);
59
+ t?.signal?.removeEventListener("abort", s), o.abort(), n(e);
56
60
  }
57
61
  }, o.signal);
58
62
  });
59
63
  }
60
- function c(e, t) {
61
- return new Promise((r, i) => {
62
- let o = () => i(a()), s;
64
+ function d(e, t) {
65
+ return new Promise((n, i) => {
66
+ let o = new AbortController(), s = () => {
67
+ o.abort(), i(c(t?.signal, "Stream consumption aborted"));
68
+ };
63
69
  if (t?.signal?.aborted) {
64
- o();
70
+ s();
65
71
  return;
66
72
  }
67
- t?.signal?.addEventListener("abort", o, { once: !0 }), n(e, {
73
+ let l = !1, u;
74
+ t?.signal?.addEventListener("abort", s, { once: !0 }), a(e, {
68
75
  complete() {
69
- t?.signal?.removeEventListener("abort", o), r(s);
76
+ t?.signal?.removeEventListener("abort", s), l ? n(u) : "defaultValue" in (t ?? {}) ? n(t.defaultValue) : i(new r());
70
77
  },
71
78
  error(e) {
72
- t?.signal?.removeEventListener("abort", o), i(e);
79
+ t?.signal?.removeEventListener("abort", s), i(e);
73
80
  },
74
81
  next(e) {
75
- s = e;
82
+ l = !0, u = e;
76
83
  }
77
- }, t?.signal ?? new AbortController().signal);
84
+ }, o.signal);
78
85
  });
79
86
  }
80
- function l(t, r) {
81
- return e(r.maxItems, "toArray maxItems"), new Promise((e, i) => {
82
- let o = new AbortController(), s = [], c = () => {
83
- o.abort(), i(a());
87
+ function f(e, r) {
88
+ return t(r.maxItems, "toArray maxItems"), new Promise((t, i) => {
89
+ let o = new AbortController(), s = [], l = () => {
90
+ o.abort(), i(c(r?.signal, "Stream consumption aborted"));
84
91
  };
85
92
  if (r.signal?.aborted) {
86
- c();
93
+ l();
87
94
  return;
88
95
  }
89
- r.signal?.addEventListener("abort", c, { once: !0 }), n(t, {
96
+ r.signal?.addEventListener("abort", l, { once: !0 }), a(e, {
90
97
  complete() {
91
- r.signal?.removeEventListener("abort", c), e(s);
98
+ r.signal?.removeEventListener("abort", l), t(s);
92
99
  },
93
100
  error(e) {
94
- r.signal?.removeEventListener("abort", c), i(e);
101
+ r.signal?.removeEventListener("abort", l), i(e);
95
102
  },
96
103
  next(e) {
97
104
  if (s.length === r.maxItems) {
98
- r.signal?.removeEventListener("abort", c), o.abort(), i(/* @__PURE__ */ RangeError("toArray maxItems exceeded"));
105
+ r.signal?.removeEventListener("abort", l), o.abort(), i(new n(r.maxItems, "toArray maxItems exceeded"));
99
106
  return;
100
107
  }
101
108
  s.push(e);
@@ -104,6 +111,6 @@ function l(t, r) {
104
111
  });
105
112
  }
106
113
  //#endregion
107
- export { s as first, c as last, o as retry, l as toArray };
114
+ export { u as first, d as last, l as retry, f as toArray };
108
115
 
109
116
  //# sourceMappingURL=utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utility.js","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
+ {"version":3,"file":"utility.js","names":[],"sources":["../../src/operators/utility.ts"],"sourcesContent":["import { abortError } from '@vielzeug/arsenal';\n\nimport { link } from '../_link.js';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric.js';\nimport { tryCall } from '../_safe.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { stream } from '../core.js';\nimport { FluxCapacityError, FluxEmptyError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\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<T> = {\n signal?: AbortSignal;\n /** Resolved when the source completes empty instead of rejecting with `FluxEmptyError`. */\n defaultValue?: T;\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) {\n try {\n assertDuration(delay, 'Retry delay');\n } catch (reason) {\n sink.error(reason);\n return;\n }\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<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const abort = (): void => {\n controller.abort();\n reject(abortError(options?.signal, 'Stream consumption aborted'));\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\n if ('defaultValue' in (options ?? {})) resolve(options!.defaultValue as T);\n else reject(new FluxEmptyError());\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<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const abort = (): void => {\n controller.abort();\n reject(abortError(options?.signal, 'Stream consumption aborted'));\n };\n\n if (options?.signal?.aborted) {\n abort();\n\n return;\n }\n\n let emitted = false;\n let latest: T | undefined;\n\n options?.signal?.addEventListener('abort', abort, { once: true });\n link(\n source,\n {\n complete() {\n options?.signal?.removeEventListener('abort', abort);\n\n if (emitted) resolve(latest as T);\n else if ('defaultValue' in (options ?? {})) resolve(options!.defaultValue as T);\n else reject(new FluxEmptyError());\n },\n error(reason) {\n options?.signal?.removeEventListener('abort', abort);\n reject(reason);\n },\n next(value) {\n emitted = true;\n latest = value;\n },\n },\n controller.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(options?.signal, 'Stream consumption aborted'));\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 FluxCapacityError(options.maxItems, '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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"}
package/dist/pipe.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.cjs","names":[],"sources":["../src/pipe.ts"],"sourcesContent":["import type { Operator, PipedStream, Stream, ValidPipe } from './types';\n\n/** Standalone composition preserves contextual types for inline generic operators. */\nexport function pipe<Input>(source: Stream<Input>): Stream<Input>;\nexport function pipe<Input, A>(source: Stream<Input>, operator1: Operator<Input, A>): Stream<A>;\nexport function pipe<Input, A, B>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<Input, A, B, C>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<Input, A, B, C, D>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<Input, A, B, C, D, E>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<Input, A, B, C, D, E, F>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<Input, A, B, C, D, E, F, G>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<Input, A, B, C, D, E, F, G, H>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n): Stream<I>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I, J>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n operator10: Operator<I, J>,\n): Stream<J>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators> {\n return operators.reduce(\n (current: Stream<unknown>, operator: Operator) => operator(current),\n source as Stream<unknown>,\n ) as PipedStream<Input, Operators>;\n}\n"],"mappings":"AA0FA,SAAgB,EACd,EACA,GAAG,EAC4B,CAC/B,OAAO,EAAU,QACd,EAA0B,IAAuB,EAAS,CAAO,EAClE,CACF,CACF"}
1
+ {"version":3,"file":"pipe.cjs","names":[],"sources":["../src/pipe.ts"],"sourcesContent":["import type { Operator, PipedStream, Stream, ValidPipe } from './types.js';\n\n/** Standalone composition preserves contextual types for inline generic operators. */\nexport function pipe<Input>(source: Stream<Input>): Stream<Input>;\nexport function pipe<Input, A>(source: Stream<Input>, operator1: Operator<Input, A>): Stream<A>;\nexport function pipe<Input, A, B>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<Input, A, B, C>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<Input, A, B, C, D>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<Input, A, B, C, D, E>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<Input, A, B, C, D, E, F>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<Input, A, B, C, D, E, F, G>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<Input, A, B, C, D, E, F, G, H>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n): Stream<I>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I, J>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n operator10: Operator<I, J>,\n): Stream<J>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators> {\n return operators.reduce(\n (current: Stream<unknown>, operator: Operator) => operator(current),\n source as Stream<unknown>,\n ) as PipedStream<Input, Operators>;\n}\n"],"mappings":"AA0FA,SAAgB,EACd,EACA,GAAG,EAC4B,CAC/B,OAAO,EAAU,QACd,EAA0B,IAAuB,EAAS,CAAO,EAClE,CACF,CACF"}
package/dist/pipe.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Operator, PipedStream, Stream, ValidPipe } from './types';
1
+ import type { Operator, PipedStream, Stream, ValidPipe } from './types.js';
2
2
  /** Standalone composition preserves contextual types for inline generic operators. */
3
3
  export declare function pipe<Input>(source: Stream<Input>): Stream<Input>;
4
4
  export declare function pipe<Input, A>(source: Stream<Input>, operator1: Operator<Input, A>): Stream<A>;
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
package/dist/pipe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.js","names":[],"sources":["../src/pipe.ts"],"sourcesContent":["import type { Operator, PipedStream, Stream, ValidPipe } from './types';\n\n/** Standalone composition preserves contextual types for inline generic operators. */\nexport function pipe<Input>(source: Stream<Input>): Stream<Input>;\nexport function pipe<Input, A>(source: Stream<Input>, operator1: Operator<Input, A>): Stream<A>;\nexport function pipe<Input, A, B>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<Input, A, B, C>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<Input, A, B, C, D>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<Input, A, B, C, D, E>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<Input, A, B, C, D, E, F>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<Input, A, B, C, D, E, F, G>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<Input, A, B, C, D, E, F, G, H>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n): Stream<I>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I, J>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n operator10: Operator<I, J>,\n): Stream<J>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators> {\n return operators.reduce(\n (current: Stream<unknown>, operator: Operator) => operator(current),\n source as Stream<unknown>,\n ) as PipedStream<Input, Operators>;\n}\n"],"mappings":";AA0FA,SAAgB,EACd,GACA,GAAG,GAC4B;CAC/B,OAAO,EAAU,QACd,GAA0B,MAAuB,EAAS,CAAO,GAClE,CACF;AACF"}
1
+ {"version":3,"file":"pipe.js","names":[],"sources":["../src/pipe.ts"],"sourcesContent":["import type { Operator, PipedStream, Stream, ValidPipe } from './types.js';\n\n/** Standalone composition preserves contextual types for inline generic operators. */\nexport function pipe<Input>(source: Stream<Input>): Stream<Input>;\nexport function pipe<Input, A>(source: Stream<Input>, operator1: Operator<Input, A>): Stream<A>;\nexport function pipe<Input, A, B>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<Input, A, B, C>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<Input, A, B, C, D>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<Input, A, B, C, D, E>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<Input, A, B, C, D, E, F>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<Input, A, B, C, D, E, F, G>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<Input, A, B, C, D, E, F, G, H>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n): Stream<I>;\nexport function pipe<Input, A, B, C, D, E, F, G, H, I, J>(\n source: Stream<Input>,\n operator1: Operator<Input, A>,\n operator2: Operator<A, B>,\n operator3: Operator<B, C>,\n operator4: Operator<C, D>,\n operator5: Operator<D, E>,\n operator6: Operator<E, F>,\n operator7: Operator<F, G>,\n operator8: Operator<G, H>,\n operator9: Operator<H, I>,\n operator10: Operator<I, J>,\n): Stream<J>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators>;\nexport function pipe<Input, const Operators extends readonly unknown[]>(\n source: Stream<Input>,\n ...operators: Operators & ValidPipe<Input, Operators>\n): PipedStream<Input, Operators> {\n return operators.reduce(\n (current: Stream<unknown>, operator: Operator) => operator(current),\n source as Stream<unknown>,\n ) as PipedStream<Input, Operators>;\n}\n"],"mappings":";AA0FA,SAAgB,EACd,GACA,GAAG,GAC4B;CAC/B,OAAO,EAAU,QACd,GAA0B,MAAuB,EAAS,CAAO,GAClE,CACF;AACF"}
@@ -1,3 +1,3 @@
1
- export type { Channel, ChannelOptions } from './channel';
2
- export { createChannel } from './channel';
1
+ export type { Channel, ChannelOptions } from './channel.js';
2
+ export { createChannel } from './channel.js';
3
3
  //# sourceMappingURL=subjects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subjects.d.ts","sourceRoot":"","sources":["../src/subjects.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"subjects.d.ts","sourceRoot":"","sources":["../src/subjects.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vielzeug/flux",
3
- "version": "2.3.3",
4
- "description": "Minimal push streams with explicit ownership, buffering, and ecosystem adapters",
3
+ "version": "3.0.0",
4
+ "description": "Minimal push streams with explicit ownership, bounded buffering, and structural bridges",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/helmuthdu/vielzeug",
@@ -28,26 +28,6 @@
28
28
  "require": "./dist/async.cjs",
29
29
  "types": "./dist/async.d.ts"
30
30
  },
31
- "./courier": {
32
- "import": "./dist/courier.js",
33
- "require": "./dist/courier.cjs",
34
- "types": "./dist/courier.d.ts"
35
- },
36
- "./herald": {
37
- "import": "./dist/herald.js",
38
- "require": "./dist/herald.cjs",
39
- "types": "./dist/herald.d.ts"
40
- },
41
- "./pulse": {
42
- "import": "./dist/pulse.js",
43
- "require": "./dist/pulse.cjs",
44
- "types": "./dist/pulse.d.ts"
45
- },
46
- "./ripple": {
47
- "import": "./dist/ripple.js",
48
- "require": "./dist/ripple.cjs",
49
- "types": "./dist/ripple.d.ts"
50
- },
51
31
  "./subjects": {
52
32
  "import": "./dist/subjects.js",
53
33
  "require": "./dist/subjects.cjs",
@@ -59,18 +39,6 @@
59
39
  "async": [
60
40
  "dist/async.d.ts"
61
41
  ],
62
- "courier": [
63
- "dist/courier.d.ts"
64
- ],
65
- "herald": [
66
- "dist/herald.d.ts"
67
- ],
68
- "pulse": [
69
- "dist/pulse.d.ts"
70
- ],
71
- "ripple": [
72
- "dist/ripple.d.ts"
73
- ],
74
42
  "subjects": [
75
43
  "dist/subjects.d.ts"
76
44
  ]
@@ -82,43 +50,23 @@
82
50
  "registry": "https://registry.npmjs.org/"
83
51
  },
84
52
  "scripts": {
85
- "build": "vite build && pnpm run build:bundle && pnpm run build:types && pnpm run verify:exports",
53
+ "build": "vite build && pnpm --silent run build:bundle && pnpm --silent run build:types && pnpm --silent run test:types && pnpm --silent run verify:exports",
86
54
  "build:bundle": "vite build --config vite.bundle.config.ts",
87
55
  "build:types": "tsc -p tsconfig.declarations.json",
88
56
  "fix": "biome check --write src",
89
57
  "lint": "biome ci src",
90
- "prepublishOnly": "pnpm run build",
58
+ "prepublishOnly": "pnpm --silent run build",
91
59
  "test": "vitest",
60
+ "test:types": "tsc -p tsconfig.type-tests.json",
92
61
  "verify:exports": "node scripts/verify-exports.mjs && node scripts/verify-package-exports.mjs"
93
62
  },
94
- "peerDependencies": {
95
- "@vielzeug/courier": "2.3.0",
96
- "@vielzeug/herald": "2.2.0",
97
- "@vielzeug/pulse": "2.3.0",
98
- "@vielzeug/ripple": "2.2.4"
99
- },
100
- "peerDependenciesMeta": {
101
- "@vielzeug/courier": {
102
- "optional": true
103
- },
104
- "@vielzeug/herald": {
105
- "optional": true
106
- },
107
- "@vielzeug/pulse": {
108
- "optional": true
109
- },
110
- "@vielzeug/ripple": {
111
- "optional": true
112
- }
63
+ "dependencies": {
64
+ "@vielzeug/arsenal": "3.0.0"
113
65
  },
114
66
  "devDependencies": {
115
- "@types/node": "^26.2.0",
116
- "@vielzeug/courier": "2.3.0",
117
- "@vielzeug/herald": "2.2.0",
118
- "@vielzeug/pulse": "2.3.0",
119
- "@vielzeug/ripple": "2.2.4",
67
+ "@types/node": "^26.4.1",
120
68
  "typescript": "^6.0.3",
121
- "vite": "^8.2.1",
122
- "vitest": "^4.1.10"
69
+ "vite": "^8.2.2",
70
+ "vitest": "^5.0.0"
123
71
  }
124
72
  }
package/dist/_dev.cjs DELETED
@@ -1,2 +0,0 @@
1
- function e(e,...t){}exports.error=e;
2
- //# sourceMappingURL=_dev.cjs.map
package/dist/_dev.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"_dev.cjs","names":[],"sources":["../src/_dev.ts"],"sourcesContent":["/**\n * Set to `true` by the Vite `define` config in production builds so that all\n * dev-only `warn()` / `error()` calls are eliminated by the bundler.\n * When running tests or without a bundler the flag is absent and warnings fire.\n */\nconst isDev = !(globalThis as { __FLUX_PROD__?: boolean }).__FLUX_PROD__;\n\n/** @internal @security Messages may include user data. */\nexport function warn(msg: string): void {\n if (isDev) console.warn(`[@vielzeug/flux] ${msg}`);\n}\n\n/** @internal @security Messages and args may include user data. */\nexport function error(msg: string, ...args: unknown[]): void {\n if (isDev) console.error(`[@vielzeug/flux] ${msg}`, ...args);\n}\n"],"mappings":"AAaA,SAAgB,EAAM,EAAa,GAAG,EAAuB,CAE7D"}
package/dist/_dev.js DELETED
@@ -1,6 +0,0 @@
1
- //#region src/_dev.ts
2
- function e(e, ...t) {}
3
- //#endregion
4
- export { e as error };
5
-
6
- //# sourceMappingURL=_dev.js.map
package/dist/_dev.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"_dev.js","names":[],"sources":["../src/_dev.ts"],"sourcesContent":["/**\n * Set to `true` by the Vite `define` config in production builds so that all\n * dev-only `warn()` / `error()` calls are eliminated by the bundler.\n * When running tests or without a bundler the flag is absent and warnings fire.\n */\nconst isDev = !(globalThis as { __FLUX_PROD__?: boolean }).__FLUX_PROD__;\n\n/** @internal @security Messages may include user data. */\nexport function warn(msg: string): void {\n if (isDev) console.warn(`[@vielzeug/flux] ${msg}`);\n}\n\n/** @internal @security Messages and args may include user data. */\nexport function error(msg: string, ...args: unknown[]): void {\n if (isDev) console.error(`[@vielzeug/flux] ${msg}`, ...args);\n}\n"],"mappings":";AAaA,SAAgB,EAAM,GAAa,GAAG,GAAuB,CAE7D"}
@@ -1,2 +0,0 @@
1
- const e=require("../core.cjs");function t(t,n){return e.stream(e=>{let r=()=>t.getSnapshot(n.key);return e.next(r()),t.subscribe(n.key,()=>e.next(r()))})}exports.fromQuery=t;
2
- //# sourceMappingURL=courier.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"courier.cjs","names":[],"sources":["../../src/adapters/courier.ts"],"sourcesContent":["import { stream } from '../core';\nimport type { Stream } from '../types';\n\ntype QueryCache = {\n getSnapshot<T>(key: readonly unknown[]): T | null;\n subscribe(key: readonly unknown[], onStoreChange: () => void): () => void;\n};\n\ntype QueryDefinition = {\n fetch: (...args: never[]) => Promise<unknown>;\n key: readonly unknown[];\n};\n\ntype QuerySnapshot<T> =\n | {\n readonly data: undefined;\n readonly error: null;\n readonly isFetching: boolean;\n readonly status: 'loading';\n readonly updatedAt: undefined;\n }\n | {\n readonly data: T;\n readonly error: null;\n readonly isFetching: boolean;\n readonly status: 'success';\n readonly updatedAt: number;\n }\n | {\n readonly data: T | undefined;\n readonly error: Error;\n readonly isFetching: false;\n readonly status: 'error';\n readonly updatedAt: number;\n };\n\nexport function fromQuery<T extends QueryDefinition>(\n cache: QueryCache,\n definition: T,\n): Stream<QuerySnapshot<Awaited<ReturnType<T['fetch']>>> | null> {\n return stream((sink) => {\n const snapshot = () => cache.getSnapshot<QuerySnapshot<Awaited<ReturnType<T['fetch']>>>>(definition.key);\n\n sink.next(snapshot());\n\n return cache.subscribe(definition.key, () => sink.next(snapshot()));\n });\n}\n"],"mappings":"+BAoCA,SAAgB,EACd,EACA,EAC+D,CAC/D,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAM,MAAiB,EAAM,YAA4D,EAAW,GAAG,EAIvG,OAFA,EAAK,KAAK,EAAS,CAAC,EAEb,EAAM,UAAU,EAAW,QAAW,EAAK,KAAK,EAAS,CAAC,CAAC,CACpE,CAAC,CACH"}
@@ -1,31 +0,0 @@
1
- import type { Stream } from '../types';
2
- type QueryCache = {
3
- getSnapshot<T>(key: readonly unknown[]): T | null;
4
- subscribe(key: readonly unknown[], onStoreChange: () => void): () => void;
5
- };
6
- type QueryDefinition = {
7
- fetch: (...args: never[]) => Promise<unknown>;
8
- key: readonly unknown[];
9
- };
10
- type QuerySnapshot<T> = {
11
- readonly data: undefined;
12
- readonly error: null;
13
- readonly isFetching: boolean;
14
- readonly status: 'loading';
15
- readonly updatedAt: undefined;
16
- } | {
17
- readonly data: T;
18
- readonly error: null;
19
- readonly isFetching: boolean;
20
- readonly status: 'success';
21
- readonly updatedAt: number;
22
- } | {
23
- readonly data: T | undefined;
24
- readonly error: Error;
25
- readonly isFetching: false;
26
- readonly status: 'error';
27
- readonly updatedAt: number;
28
- };
29
- export declare function fromQuery<T extends QueryDefinition>(cache: QueryCache, definition: T): Stream<QuerySnapshot<Awaited<ReturnType<T['fetch']>>> | null>;
30
- export {};
31
- //# sourceMappingURL=courier.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"courier.d.ts","sourceRoot":"","sources":["../../src/adapters/courier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,KAAK,UAAU,GAAG;IAChB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAClD,SAAS,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3E,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,IAChB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEN,wBAAgB,SAAS,CAAC,CAAC,SAAS,eAAe,EACjD,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,CAAC,GACZ,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAQ/D"}
@@ -1,12 +0,0 @@
1
- import { stream as e } from "../core.js";
2
- //#region src/adapters/courier.ts
3
- function t(t, n) {
4
- return e((e) => {
5
- let r = () => t.getSnapshot(n.key);
6
- return e.next(r()), t.subscribe(n.key, () => e.next(r()));
7
- });
8
- }
9
- //#endregion
10
- export { t as fromQuery };
11
-
12
- //# sourceMappingURL=courier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"courier.js","names":[],"sources":["../../src/adapters/courier.ts"],"sourcesContent":["import { stream } from '../core';\nimport type { Stream } from '../types';\n\ntype QueryCache = {\n getSnapshot<T>(key: readonly unknown[]): T | null;\n subscribe(key: readonly unknown[], onStoreChange: () => void): () => void;\n};\n\ntype QueryDefinition = {\n fetch: (...args: never[]) => Promise<unknown>;\n key: readonly unknown[];\n};\n\ntype QuerySnapshot<T> =\n | {\n readonly data: undefined;\n readonly error: null;\n readonly isFetching: boolean;\n readonly status: 'loading';\n readonly updatedAt: undefined;\n }\n | {\n readonly data: T;\n readonly error: null;\n readonly isFetching: boolean;\n readonly status: 'success';\n readonly updatedAt: number;\n }\n | {\n readonly data: T | undefined;\n readonly error: Error;\n readonly isFetching: false;\n readonly status: 'error';\n readonly updatedAt: number;\n };\n\nexport function fromQuery<T extends QueryDefinition>(\n cache: QueryCache,\n definition: T,\n): Stream<QuerySnapshot<Awaited<ReturnType<T['fetch']>>> | null> {\n return stream((sink) => {\n const snapshot = () => cache.getSnapshot<QuerySnapshot<Awaited<ReturnType<T['fetch']>>>>(definition.key);\n\n sink.next(snapshot());\n\n return cache.subscribe(definition.key, () => sink.next(snapshot()));\n });\n}\n"],"mappings":";;AAoCA,SAAgB,EACd,GACA,GAC+D;CAC/D,OAAO,GAAQ,MAAS;EACtB,IAAM,UAAiB,EAAM,YAA4D,EAAW,GAAG;EAIvG,OAFA,EAAK,KAAK,EAAS,CAAC,GAEb,EAAM,UAAU,EAAW,WAAW,EAAK,KAAK,EAAS,CAAC,CAAC;CACpE,CAAC;AACH"}
@@ -1,2 +0,0 @@
1
- const e=require("../core.cjs"),t=require("../_link.cjs"),n=require("../_safe.cjs");function r(t,n){return e.stream(e=>t.on(n,t=>e.next(t)))}function i(r,i){return a=>e.stream((e,o)=>t.link(a,{complete:e.complete,error:e.error,next(t){n.tryCall(()=>{r.emit(i,...t===void 0?[]:[t]),e.next(t)},e.error)}},o).unsubscribe)}exports.fromBus=r,exports.toBus=i;
2
- //# sourceMappingURL=herald.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"herald.cjs","names":[],"sources":["../../src/adapters/herald.ts"],"sourcesContent":["import type { Bus, EventKey, EventMap } from '@vielzeug/herald';\nimport { link } from '../_link';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport type { Operator, Stream } from '../types';\n\nexport function fromBus<T extends EventMap, K extends EventKey<T>>(bus: Bus<T>, event: K): Stream<T[K]> {\n return stream((sink) => bus.on(event, (payload) => sink.next(payload)));\n}\n\nexport function toBus<T extends EventMap, K extends EventKey<T>>(bus: Bus<T>, event: K): Operator<T[K], T[K]> {\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 bus.emit(event, ...((value === undefined ? [] : [value]) as T[K] extends void ? [] : [T[K]]));\n sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n"],"mappings":"mFAMA,SAAgB,EAAmD,EAAa,EAAwB,CACtG,OAAO,EAAA,OAAQ,GAAS,EAAI,GAAG,EAAQ,GAAY,EAAK,KAAK,CAAO,CAAC,CAAC,CACxE,CAEA,SAAgB,EAAiD,EAAa,EAAgC,CAC5G,MAAQ,IACN,EAAA,QACG,EAAM,IACL,EAAA,KACE,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAA,YAAc,CACZ,EAAI,KAAK,EAAO,GAAK,IAAU,IAAA,GAAY,CAAC,EAAI,CAAC,CAAK,CAAsC,EAC5F,EAAK,KAAK,CAAK,CACjB,EAAG,EAAK,KAAK,CACf,CACF,EACA,CACF,CAAC,CAAC,WACN,CACJ"}
@@ -1,5 +0,0 @@
1
- import type { Bus, EventKey, EventMap } from '@vielzeug/herald';
2
- import type { Operator, Stream } from '../types';
3
- export declare function fromBus<T extends EventMap, K extends EventKey<T>>(bus: Bus<T>, event: K): Stream<T[K]>;
4
- export declare function toBus<T extends EventMap, K extends EventKey<T>>(bus: Bus<T>, event: K): Operator<T[K], T[K]>;
5
- //# sourceMappingURL=herald.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"herald.d.ts","sourceRoot":"","sources":["../../src/adapters/herald.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEjD,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAEtG;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAmB5G"}
@@ -1,22 +0,0 @@
1
- import { stream as e } from "../core.js";
2
- import { link as t } from "../_link.js";
3
- import { tryCall as n } from "../_safe.js";
4
- //#region src/adapters/herald.ts
5
- function r(t, n) {
6
- return e((e) => t.on(n, (t) => e.next(t)));
7
- }
8
- function i(r, i) {
9
- return (a) => e((e, o) => t(a, {
10
- complete: e.complete,
11
- error: e.error,
12
- next(t) {
13
- n(() => {
14
- r.emit(i, ...t === void 0 ? [] : [t]), e.next(t);
15
- }, e.error);
16
- }
17
- }, o).unsubscribe);
18
- }
19
- //#endregion
20
- export { r as fromBus, i as toBus };
21
-
22
- //# sourceMappingURL=herald.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"herald.js","names":[],"sources":["../../src/adapters/herald.ts"],"sourcesContent":["import type { Bus, EventKey, EventMap } from '@vielzeug/herald';\nimport { link } from '../_link';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport type { Operator, Stream } from '../types';\n\nexport function fromBus<T extends EventMap, K extends EventKey<T>>(bus: Bus<T>, event: K): Stream<T[K]> {\n return stream((sink) => bus.on(event, (payload) => sink.next(payload)));\n}\n\nexport function toBus<T extends EventMap, K extends EventKey<T>>(bus: Bus<T>, event: K): Operator<T[K], T[K]> {\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 bus.emit(event, ...((value === undefined ? [] : [value]) as T[K] extends void ? [] : [T[K]]));\n sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n"],"mappings":";;;;AAMA,SAAgB,EAAmD,GAAa,GAAwB;CACtG,OAAO,GAAQ,MAAS,EAAI,GAAG,IAAQ,MAAY,EAAK,KAAK,CAAO,CAAC,CAAC;AACxE;AAEA,SAAgB,EAAiD,GAAa,GAAgC;CAC5G,QAAQ,MACN,GACG,GAAM,MACL,EACE,GACA;EACE,UAAU,EAAK;EACf,OAAO,EAAK;EACZ,KAAK,GAAO;GACV,QAAc;IAEZ,AADA,EAAI,KAAK,GAAO,GAAK,MAAU,KAAA,IAAY,CAAC,IAAI,CAAC,CAAK,CAAsC,GAC5F,EAAK,KAAK,CAAK;GACjB,GAAG,EAAK,KAAK;EACf;CACF,GACA,CACF,CAAC,CAAC,WACN;AACJ"}
@@ -1,2 +0,0 @@
1
- const e=require("../core.cjs");function t(t,n){return e.stream(e=>t.on(n,t=>e.next(t)))}function n(t){return e.stream(e=>{e.next(t.presence.value);let n=t.onJoin(()=>e.next(t.presence.value)),r=t.onLeave(()=>e.next(t.presence.value));return()=>{n(),r()}})}exports.fromPulse=t,exports.fromRoomPresence=n;
2
- //# sourceMappingURL=pulse.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pulse.cjs","names":[],"sources":["../../src/adapters/pulse.ts"],"sourcesContent":["import type { EventKey, PresenceRoomScope, Pulse, PulseSchema, ServerEvents } from '@vielzeug/pulse';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\n\nexport function fromPulse<S extends PulseSchema, K extends EventKey<ServerEvents<S>>>(\n pulse: Pulse<S>,\n event: K,\n): Stream<ServerEvents<S>[K]> {\n return stream((sink) => pulse.on(event, (payload) => sink.next(payload)));\n}\n\nexport function fromRoomPresence<T>(room: PresenceRoomScope<T>): Stream<ReadonlyMap<string, T>> {\n return stream((sink) => {\n sink.next(room.presence.value);\n\n const stopJoin = room.onJoin(() => sink.next(room.presence.value));\n const stopLeave = room.onLeave(() => sink.next(room.presence.value));\n\n return () => {\n stopJoin();\n stopLeave();\n };\n });\n}\n"],"mappings":"+BAIA,SAAgB,EACd,EACA,EAC4B,CAC5B,OAAO,EAAA,OAAQ,GAAS,EAAM,GAAG,EAAQ,GAAY,EAAK,KAAK,CAAO,CAAC,CAAC,CAC1E,CAEA,SAAgB,EAAoB,EAA4D,CAC9F,OAAO,EAAA,OAAQ,GAAS,CACtB,EAAK,KAAK,EAAK,SAAS,KAAK,EAE7B,IAAM,EAAW,EAAK,WAAa,EAAK,KAAK,EAAK,SAAS,KAAK,CAAC,EAC3D,EAAY,EAAK,YAAc,EAAK,KAAK,EAAK,SAAS,KAAK,CAAC,EAEnE,UAAa,CACX,EAAS,EACT,EAAU,CACZ,CACF,CAAC,CACH"}
@@ -1,5 +0,0 @@
1
- import type { EventKey, PresenceRoomScope, Pulse, PulseSchema, ServerEvents } from '@vielzeug/pulse';
2
- import type { Stream } from '../types';
3
- export declare function fromPulse<S extends PulseSchema, K extends EventKey<ServerEvents<S>>>(pulse: Pulse<S>, event: K): Stream<ServerEvents<S>[K]>;
4
- export declare function fromRoomPresence<T>(room: PresenceRoomScope<T>): Stream<ReadonlyMap<string, T>>;
5
- //# sourceMappingURL=pulse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pulse.d.ts","sourceRoot":"","sources":["../../src/adapters/pulse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAClF,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,CAAC,GACP,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAE5B;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAY9F"}
@@ -1,18 +0,0 @@
1
- import { stream as e } from "../core.js";
2
- //#region src/adapters/pulse.ts
3
- function t(t, n) {
4
- return e((e) => t.on(n, (t) => e.next(t)));
5
- }
6
- function n(t) {
7
- return e((e) => {
8
- e.next(t.presence.value);
9
- let n = t.onJoin(() => e.next(t.presence.value)), r = t.onLeave(() => e.next(t.presence.value));
10
- return () => {
11
- n(), r();
12
- };
13
- });
14
- }
15
- //#endregion
16
- export { t as fromPulse, n as fromRoomPresence };
17
-
18
- //# sourceMappingURL=pulse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pulse.js","names":[],"sources":["../../src/adapters/pulse.ts"],"sourcesContent":["import type { EventKey, PresenceRoomScope, Pulse, PulseSchema, ServerEvents } from '@vielzeug/pulse';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\n\nexport function fromPulse<S extends PulseSchema, K extends EventKey<ServerEvents<S>>>(\n pulse: Pulse<S>,\n event: K,\n): Stream<ServerEvents<S>[K]> {\n return stream((sink) => pulse.on(event, (payload) => sink.next(payload)));\n}\n\nexport function fromRoomPresence<T>(room: PresenceRoomScope<T>): Stream<ReadonlyMap<string, T>> {\n return stream((sink) => {\n sink.next(room.presence.value);\n\n const stopJoin = room.onJoin(() => sink.next(room.presence.value));\n const stopLeave = room.onLeave(() => sink.next(room.presence.value));\n\n return () => {\n stopJoin();\n stopLeave();\n };\n });\n}\n"],"mappings":";;AAIA,SAAgB,EACd,GACA,GAC4B;CAC5B,OAAO,GAAQ,MAAS,EAAM,GAAG,IAAQ,MAAY,EAAK,KAAK,CAAO,CAAC,CAAC;AAC1E;AAEA,SAAgB,EAAoB,GAA4D;CAC9F,OAAO,GAAQ,MAAS;EACtB,EAAK,KAAK,EAAK,SAAS,KAAK;EAE7B,IAAM,IAAW,EAAK,aAAa,EAAK,KAAK,EAAK,SAAS,KAAK,CAAC,GAC3D,IAAY,EAAK,cAAc,EAAK,KAAK,EAAK,SAAS,KAAK,CAAC;EAEnE,aAAa;GAEX,AADA,EAAS,GACT,EAAU;EACZ;CACF,CAAC;AACH"}
@@ -1,2 +0,0 @@
1
- const e=require("../core.cjs");require("../_dev.cjs");let t=require("@vielzeug/ripple");function n(t){return e.stream(e=>(e.next(t.value),t.subscribe(()=>e.next(t.value))))}function r(e,n){let r=(0,t.signal)(n.initial),i=new AbortController,a={},o=()=>{i.signal.aborted||(i.abort(),n.signal?.removeEventListener(`abort`,o),a.current?.unsubscribe())};return n.signal?.aborted&&i.abort(),a.current=e.subscribe({complete:o,error(e){if(n.onError)try{n.onError(e)}catch{}o()},next(e){r.value=e}},{signal:i.signal}),i.signal.aborted||n.signal?.addEventListener(`abort`,o,{once:!0}),{get disposalSignal(){return i.signal},dispose:o,get disposed(){return i.signal.aborted},get signal(){return r},[Symbol.dispose]:o,get value(){return r.value}}}exports.fromSignal=n,exports.toSignal=r;
2
- //# sourceMappingURL=ripple.cjs.map