@vielzeug/flux 2.0.4 → 2.1.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 (56) 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 +2 -4
  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/adapters/courier.cjs +1 -1
  13. package/dist/adapters/courier.cjs.map +1 -1
  14. package/dist/adapters/courier.d.ts +0 -5
  15. package/dist/adapters/courier.d.ts.map +1 -1
  16. package/dist/adapters/courier.js +1 -22
  17. package/dist/adapters/courier.js.map +1 -1
  18. package/dist/courier.cjs +1 -1
  19. package/dist/courier.d.ts +1 -1
  20. package/dist/courier.d.ts.map +1 -1
  21. package/dist/courier.js +2 -2
  22. package/dist/errors.cjs +1 -1
  23. package/dist/errors.cjs.map +1 -1
  24. package/dist/errors.d.ts +0 -1
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +1 -4
  27. package/dist/errors.js.map +1 -1
  28. package/dist/flux.cjs +1 -1
  29. package/dist/flux.cjs.map +1 -1
  30. package/dist/flux.iife.js +1 -1
  31. package/dist/flux.iife.js.map +1 -1
  32. package/dist/flux.js +1 -1
  33. package/dist/flux.js.map +1 -1
  34. package/dist/operators/creation.cjs +1 -1
  35. package/dist/operators/creation.cjs.map +1 -1
  36. package/dist/operators/creation.d.ts.map +1 -1
  37. package/dist/operators/creation.js +40 -42
  38. package/dist/operators/creation.js.map +1 -1
  39. package/dist/operators/filtering.cjs +1 -1
  40. package/dist/operators/filtering.cjs.map +1 -1
  41. package/dist/operators/filtering.d.ts.map +1 -1
  42. package/dist/operators/filtering.js +44 -47
  43. package/dist/operators/filtering.js.map +1 -1
  44. package/dist/operators/transformation.cjs +1 -1
  45. package/dist/operators/transformation.cjs.map +1 -1
  46. package/dist/operators/transformation.d.ts.map +1 -1
  47. package/dist/operators/transformation.js +68 -68
  48. package/dist/operators/transformation.js.map +1 -1
  49. package/dist/operators/utility.cjs +1 -1
  50. package/dist/operators/utility.cjs.map +1 -1
  51. package/dist/operators/utility.d.ts.map +1 -1
  52. package/dist/operators/utility.js +45 -46
  53. package/dist/operators/utility.js.map +1 -1
  54. package/dist/subject.cjs +1 -1
  55. package/dist/subject.js +9 -9
  56. package/package.json +8 -3
@@ -1,35 +1,35 @@
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
- import { defaultScheduler as r } from "../_scheduler.js";
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";
5
6
  //#region src/operators/utility.ts
6
- function i() {
7
+ function a() {
7
8
  return new DOMException("Stream consumption aborted", "AbortError");
8
9
  }
9
- function a(i) {
10
- if (!Number.isInteger(i.attempts) || i.attempts < 0) throw RangeError("retry attempts must be a non-negative integer");
11
- return (a) => e((e, o) => {
10
+ function o(a) {
11
+ return e(a.attempts, "retry attempts"), (e) => t((t, o) => {
12
12
  let s = 0, c, l, u = () => {
13
13
  if (o.aborted) return;
14
- let d = t(a, {
15
- complete: e.complete,
16
- error(t) {
17
- if (s === i.attempts) {
18
- e.error(t);
14
+ let d = n(e, {
15
+ complete: t.complete,
16
+ error(e) {
17
+ if (s === a.attempts) {
18
+ t.error(e);
19
19
  return;
20
20
  }
21
- let a = s++, c;
22
- if (n(() => {
23
- c = typeof i.delay == "function" ? i.delay(a) : i.delay;
24
- }, e.error), !o.aborted) {
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
25
  if (c !== void 0 && (!Number.isFinite(c) || c < 0)) {
26
- e.error(/* @__PURE__ */ RangeError("retry delay must be a finite number greater than or equal to zero"));
26
+ t.error(/* @__PURE__ */ RangeError("retry delay must be a finite number greater than or equal to zero"));
27
27
  return;
28
28
  }
29
- c === void 0 || c === 0 ? queueMicrotask(u) : l = r.delay(u, c);
29
+ c === void 0 || c === 0 ? queueMicrotask(u) : l = i.delay(u, c);
30
30
  }
31
31
  },
32
- next: e.next
32
+ next: t.next
33
33
  }, o);
34
34
  d.closed || (c = d);
35
35
  };
@@ -38,65 +38,64 @@ function a(i) {
38
38
  };
39
39
  });
40
40
  }
41
- function o(e, n) {
42
- return new Promise((r, a) => {
41
+ function s(e, t) {
42
+ return new Promise((r, i) => {
43
43
  let o = new AbortController(), s = () => {
44
- o.abort(), a(i());
44
+ o.abort(), i(a());
45
45
  };
46
- if (n?.signal?.aborted) {
46
+ if (t?.signal?.aborted) {
47
47
  s();
48
48
  return;
49
49
  }
50
- n?.signal?.addEventListener("abort", s, { once: !0 }), t(e, {
50
+ t?.signal?.addEventListener("abort", s, { once: !0 }), n(e, {
51
51
  error(e) {
52
- n?.signal?.removeEventListener("abort", s), a(e);
52
+ t?.signal?.removeEventListener("abort", s), i(e);
53
53
  },
54
54
  next(e) {
55
- n?.signal?.removeEventListener("abort", s), o.abort(), r(e);
55
+ t?.signal?.removeEventListener("abort", s), o.abort(), r(e);
56
56
  }
57
57
  }, o.signal);
58
58
  });
59
59
  }
60
- function s(e, n) {
61
- return new Promise((r, a) => {
62
- let o = () => a(i()), s;
63
- if (n?.signal?.aborted) {
60
+ function c(e, t) {
61
+ return new Promise((r, i) => {
62
+ let o = () => i(a()), s;
63
+ if (t?.signal?.aborted) {
64
64
  o();
65
65
  return;
66
66
  }
67
- n?.signal?.addEventListener("abort", o, { once: !0 }), t(e, {
67
+ t?.signal?.addEventListener("abort", o, { once: !0 }), n(e, {
68
68
  complete() {
69
- n?.signal?.removeEventListener("abort", o), r(s);
69
+ t?.signal?.removeEventListener("abort", o), r(s);
70
70
  },
71
71
  error(e) {
72
- n?.signal?.removeEventListener("abort", o), a(e);
72
+ t?.signal?.removeEventListener("abort", o), i(e);
73
73
  },
74
74
  next(e) {
75
75
  s = e;
76
76
  }
77
- }, n?.signal ?? new AbortController().signal);
77
+ }, t?.signal ?? new AbortController().signal);
78
78
  });
79
79
  }
80
- function c(e, n) {
81
- if (!Number.isInteger(n.maxItems) || n.maxItems < 0) throw RangeError("toArray maxItems must be a non-negative integer");
82
- return new Promise((r, a) => {
80
+ function l(t, r) {
81
+ return e(r.maxItems, "toArray maxItems"), new Promise((e, i) => {
83
82
  let o = new AbortController(), s = [], c = () => {
84
- o.abort(), a(i());
83
+ o.abort(), i(a());
85
84
  };
86
- if (n.signal?.aborted) {
85
+ if (r.signal?.aborted) {
87
86
  c();
88
87
  return;
89
88
  }
90
- n.signal?.addEventListener("abort", c, { once: !0 }), t(e, {
89
+ r.signal?.addEventListener("abort", c, { once: !0 }), n(t, {
91
90
  complete() {
92
- n.signal?.removeEventListener("abort", c), r(s);
91
+ r.signal?.removeEventListener("abort", c), e(s);
93
92
  },
94
93
  error(e) {
95
- n.signal?.removeEventListener("abort", c), a(e);
94
+ r.signal?.removeEventListener("abort", c), i(e);
96
95
  },
97
96
  next(e) {
98
- if (s.length === n.maxItems) {
99
- n.signal?.removeEventListener("abort", c), o.abort(), a(/* @__PURE__ */ RangeError("toArray maxItems exceeded"));
97
+ if (s.length === r.maxItems) {
98
+ r.signal?.removeEventListener("abort", c), o.abort(), i(/* @__PURE__ */ RangeError("toArray maxItems exceeded"));
100
99
  return;
101
100
  }
102
101
  s.push(e);
@@ -105,6 +104,6 @@ function c(e, n) {
105
104
  });
106
105
  }
107
106
  //#endregion
108
- export { o as first, s as last, a as retry, c as toArray };
107
+ export { s as first, c as last, o as retry, l as toArray };
109
108
 
110
109
  //# sourceMappingURL=utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utility.js","names":[],"sources":["../../src/operators/utility.ts"],"sourcesContent":["import { link } from '../_link';\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 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.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":";;;;;;AAqBA,SAAS,IAA2B;CAClC,OAAO,IAAI,aAAa,8BAA8B,YAAY;AACpE;AAEA,SAAgB,EAAS,GAAuC;CAG9D,OAFA,EAAyB,EAAQ,UAAU,gBAAgB,IAEnD,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,IAAW,GACX,GACA,GAEE,UAAoB;GACxB,IAAI,EAAO,SAAS;GAEpB,IAAM,IAAe,EACnB,GACA;IACE,UAAU,EAAK;IACf,MAAM,GAAQ;KACZ,IAAI,MAAa,EAAQ,UAAU;MACjC,EAAK,MAAM,CAAM;MAEjB;KACF;KAEA,IAAM,IAAU,KACZ;KAEJ,YAAc;MACZ,IAAQ,OAAO,EAAQ,SAAU,aAAa,EAAQ,MAAM,CAAO,IAAI,EAAQ;KACjF,GAAG,EAAK,KAAK,GAET,GAAO,SAEX;UAAI,MAAU,KAAA,MAAc,CAAC,OAAO,SAAS,CAAK,KAAK,IAAQ,IAAI;OACjE,EAAK,MAAM,gBAAI,WAAW,mEAAmE,CAAC;OAE9F;MACF;MAEA,AAAI,MAAU,KAAA,KAAa,MAAU,IACnC,eAAe,CAAK,IAEpB,IAAc,EAAiB,MAAM,GAAO,CAAK;KALnD;IAOF;IACA,MAAM,EAAK;GACb,GACA,CACF;GAEA,AAAK,EAAa,WAAQ,IAAU;EACtC;EAIA,OAFA,EAAM,SAEO;GAEX,AADA,IAAc,GACd,GAAS,YAAY;EACvB;CACF,CAAC;AACL;AAEA,SAAgB,EAAS,GAAmB,GAAoC;CAC9E,OAAO,IAAI,SAAY,GAAS,MAAW;EACzC,IAAM,IAAa,IAAI,gBAAgB,GACjC,UAAoB;GAExB,AADA,EAAW,MAAM,GACjB,EAAO,EAAW,CAAC;EACrB;EAEA,IAAI,GAAS,QAAQ,SAAS;GAC5B,EAAM;GAEN;EACF;EAGA,AADA,GAAS,QAAQ,iBAAiB,SAAS,GAAO,EAAE,MAAM,GAAK,CAAC,GAChE,EACE,GACA;GACE,MAAM,GAAQ;IAEZ,AADA,GAAS,QAAQ,oBAAoB,SAAS,CAAK,GACnD,EAAO,CAAM;GACf;GACA,KAAK,GAAO;IAGV,AAFA,GAAS,QAAQ,oBAAoB,SAAS,CAAK,GACnD,EAAW,MAAM,GACjB,EAAQ,CAAK;GACf;EACF,GACA,EAAW,MACb;CACF,CAAC;AACH;AAEA,SAAgB,EAAQ,GAAmB,GAAgD;CACzF,OAAO,IAAI,SAAwB,GAAS,MAAW;EACrD,IAAM,UAAoB,EAAO,EAAW,CAAC,GACzC;EAEJ,IAAI,GAAS,QAAQ,SAAS;GAC5B,EAAM;GAEN;EACF;EAGA,AADA,GAAS,QAAQ,iBAAiB,SAAS,GAAO,EAAE,MAAM,GAAK,CAAC,GAChE,EACE,GACA;GACE,WAAW;IAET,AADA,GAAS,QAAQ,oBAAoB,SAAS,CAAK,GACnD,EAAQ,CAAM;GAChB;GACA,MAAM,GAAQ;IAEZ,AADA,GAAS,QAAQ,oBAAoB,SAAS,CAAK,GACnD,EAAO,CAAM;GACf;GACA,KAAK,GAAO;IACV,IAAS;GACX;EACF,GACA,GAAS,UAAU,IAAI,gBAAgB,CAAC,CAAC,MAC3C;CACF,CAAC;AACH;AAEA,SAAgB,EAAW,GAAmB,GAAuC;CAGnF,OAFA,EAAyB,EAAQ,UAAU,kBAAkB,GAEtD,IAAI,SAAc,GAAS,MAAW;EAC3C,IAAM,IAAa,IAAI,gBAAgB,GACjC,IAAc,CAAC,GACf,UAAoB;GAExB,AADA,EAAW,MAAM,GACjB,EAAO,EAAW,CAAC;EACrB;EAEA,IAAI,EAAQ,QAAQ,SAAS;GAC3B,EAAM;GAEN;EACF;EAGA,AADA,EAAQ,QAAQ,iBAAiB,SAAS,GAAO,EAAE,MAAM,GAAK,CAAC,GAC/D,EACE,GACA;GACE,WAAW;IAET,AADA,EAAQ,QAAQ,oBAAoB,SAAS,CAAK,GAClD,EAAQ,CAAM;GAChB;GACA,MAAM,GAAQ;IAEZ,AADA,EAAQ,QAAQ,oBAAoB,SAAS,CAAK,GAClD,EAAO,CAAM;GACf;GACA,KAAK,GAAO;IACV,IAAI,EAAO,WAAW,EAAQ,UAAU;KAGtC,AAFA,EAAQ,QAAQ,oBAAoB,SAAS,CAAK,GAClD,EAAW,MAAM,GACjB,EAAO,gBAAI,WAAW,2BAA2B,CAAC;KAElD;IACF;IAEA,EAAO,KAAK,CAAK;GACnB;EACF,GACA,EAAW,MACb;CACF,CAAC;AACH"}
package/dist/subject.cjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=require("./core.cjs"),t=require("./_numeric.cjs");function n(e){let n=e.replay??+(`initial`in e);return t.assertNonNegativeInteger(n,`Channel replay`),n}function r(t={}){let r=n(t),i=new AbortController,a=new Set,o=[];`initial`in t&&r>0&&o.push(t.initial);let s=e.stream(e=>{for(let t of o)e.next(t);if(i.signal.aborted){e.complete();return}return a.add(e),()=>a.delete(e)}),c=()=>{if(!i.signal.aborted){i.abort();for(let e of[...a])e.complete();a.clear()}};return{get disposalSignal(){return i.signal},dispose:c,get disposed(){return i.signal.aborted},send(e){if(!i.signal.aborted){r>0&&(o.length===r&&o.shift(),o.push(e));for(let t of[...a])t.next(e)}},stream:s,[Symbol.dispose]:c}}exports.createChannel=r;
1
+ const e=require("./_numeric.cjs"),t=require("./core.cjs");function n(t){let n=t.replay??+(`initial`in t);return e.assertNonNegativeInteger(n,`Channel replay`),n}function r(e={}){let r=n(e),i=new AbortController,a=new Set,o=[];`initial`in e&&r>0&&o.push(e.initial);let s=t.stream(e=>{for(let t of o)e.next(t);if(i.signal.aborted){e.complete();return}return a.add(e),()=>a.delete(e)}),c=()=>{if(!i.signal.aborted){i.abort();for(let e of[...a])e.complete();a.clear()}};return{get disposalSignal(){return i.signal},dispose:c,get disposed(){return i.signal.aborted},send(e){if(!i.signal.aborted){r>0&&(o.length===r&&o.shift(),o.push(e));for(let t of[...a])t.next(e)}},stream:s,[Symbol.dispose]:c}}exports.createChannel=r;
2
2
  //# sourceMappingURL=subject.cjs.map
package/dist/subject.js CHANGED
@@ -1,14 +1,14 @@
1
- import { stream as e } from "./core.js";
2
- import { assertNonNegativeInteger as t } from "./_numeric.js";
1
+ import { assertNonNegativeInteger as e } from "./_numeric.js";
2
+ import { stream as t } from "./core.js";
3
3
  //#region src/subject.ts
4
- function n(e) {
5
- let n = e.replay ?? +("initial" in e);
6
- return t(n, "Channel replay"), n;
4
+ function n(t) {
5
+ let n = t.replay ?? +("initial" in t);
6
+ return e(n, "Channel replay"), n;
7
7
  }
8
- function r(t = {}) {
9
- let r = n(t), i = new AbortController(), a = /* @__PURE__ */ new Set(), o = [];
10
- "initial" in t && r > 0 && o.push(t.initial);
11
- let s = e((e) => {
8
+ function r(e = {}) {
9
+ let r = n(e), i = new AbortController(), a = /* @__PURE__ */ new Set(), o = [];
10
+ "initial" in e && r > 0 && o.push(e.initial);
11
+ let s = t((e) => {
12
12
  for (let t of o) e.next(t);
13
13
  if (i.signal.aborted) {
14
14
  e.complete();
package/package.json CHANGED
@@ -1,7 +1,12 @@
1
1
  {
2
2
  "name": "@vielzeug/flux",
3
- "version": "2.0.4",
3
+ "version": "2.1.0",
4
4
  "description": "Minimal push streams with explicit ownership, buffering, and ecosystem adapters",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/helmuthdu/vielzeug",
8
+ "directory": "packages/flux"
9
+ },
5
10
  "type": "module",
6
11
  "engines": {
7
12
  "node": ">=22"
@@ -86,7 +91,7 @@
86
91
  "verify:exports": "node scripts/verify-exports.mjs && node scripts/verify-package-exports.mjs"
87
92
  },
88
93
  "peerDependencies": {
89
- "@vielzeug/courier": "2.0.1",
94
+ "@vielzeug/courier": "2.1.0",
90
95
  "@vielzeug/herald": "2.0.0",
91
96
  "@vielzeug/pulse": "2.1.2",
92
97
  "@vielzeug/ripple": "2.2.0"
@@ -107,7 +112,7 @@
107
112
  },
108
113
  "devDependencies": {
109
114
  "@types/node": "^26.2.0",
110
- "@vielzeug/courier": "2.0.1",
115
+ "@vielzeug/courier": "2.1.0",
111
116
  "@vielzeug/herald": "2.0.0",
112
117
  "@vielzeug/pulse": "2.1.2",
113
118
  "@vielzeug/ripple": "2.2.0",