@vielzeug/flux 26.10.14 → 26.10.16

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 (63) hide show
  1. package/dist/_iterator.cjs +1 -1
  2. package/dist/_iterator.cjs.map +1 -1
  3. package/dist/_iterator.js +68 -1
  4. package/dist/_iterator.js.map +1 -1
  5. package/dist/_link.cjs.map +1 -1
  6. package/dist/_link.js +7 -1
  7. package/dist/_link.js.map +1 -1
  8. package/dist/_numeric.cjs.map +1 -1
  9. package/dist/_numeric.js +13 -1
  10. package/dist/_numeric.js.map +1 -1
  11. package/dist/_safe.cjs.map +1 -1
  12. package/dist/_safe.js +11 -1
  13. package/dist/_safe.js.map +1 -1
  14. package/dist/_scheduler.cjs.map +1 -1
  15. package/dist/_scheduler.js +14 -1
  16. package/dist/_scheduler.js.map +1 -1
  17. package/dist/_subscription.cjs +1 -1
  18. package/dist/_subscription.cjs.map +1 -1
  19. package/dist/_subscription.js +72 -1
  20. package/dist/_subscription.js.map +1 -1
  21. package/dist/async.cjs.map +1 -1
  22. package/dist/async.js +10 -1
  23. package/dist/async.js.map +1 -1
  24. package/dist/channel.cjs +1 -1
  25. package/dist/channel.cjs.map +1 -1
  26. package/dist/channel.js +53 -1
  27. package/dist/channel.js.map +1 -1
  28. package/dist/core.cjs.map +1 -1
  29. package/dist/core.js +46 -1
  30. package/dist/core.js.map +1 -1
  31. package/dist/errors.cjs.map +1 -1
  32. package/dist/errors.js +23 -1
  33. package/dist/errors.js.map +1 -1
  34. package/dist/flux.cjs +1 -1
  35. package/dist/flux.cjs.map +1 -1
  36. package/dist/flux.iife.js +1 -1
  37. package/dist/flux.iife.js.map +1 -1
  38. package/dist/flux.js +754 -1
  39. package/dist/flux.js.map +1 -1
  40. package/dist/index.js +11 -1
  41. package/dist/operators/combination.cjs +1 -1
  42. package/dist/operators/combination.cjs.map +1 -1
  43. package/dist/operators/combination.js +86 -1
  44. package/dist/operators/combination.js.map +1 -1
  45. package/dist/operators/creation.cjs +1 -1
  46. package/dist/operators/creation.cjs.map +1 -1
  47. package/dist/operators/creation.js +85 -1
  48. package/dist/operators/creation.js.map +1 -1
  49. package/dist/operators/filtering.cjs.map +1 -1
  50. package/dist/operators/filtering.js +92 -1
  51. package/dist/operators/filtering.js.map +1 -1
  52. package/dist/operators/transformation.cjs +1 -1
  53. package/dist/operators/transformation.cjs.map +1 -1
  54. package/dist/operators/transformation.js +119 -1
  55. package/dist/operators/transformation.js.map +1 -1
  56. package/dist/operators/utility.cjs +1 -1
  57. package/dist/operators/utility.cjs.map +1 -1
  58. package/dist/operators/utility.js +103 -1
  59. package/dist/operators/utility.js.map +1 -1
  60. package/dist/pipe.cjs.map +1 -1
  61. package/dist/pipe.js +7 -1
  62. package/dist/pipe.js.map +1 -1
  63. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"utility.cjs","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 times: 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.times, 'retry times');\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.times) {\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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"}
1
+ {"version":3,"file":"utility.cjs","names":["stream","link","defaultScheduler","abortError","FluxEmptyError","FluxCapacityError","require__numeric","require_errors","require_core","require__link","require__scheduler","require__safe","_vielzeug_arsenal","options","attempts","current","cancelDelay","signal","subscription","source","sink","reason","attempt","delay","controller","reject","resolve","value","emitted","latest","values"],"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 times: 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.times, 'retry times');\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.times) {\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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"}
@@ -1,2 +1,104 @@
1
- import{assertDuration as e,assertNonNegativeInteger as t}from"../_numeric.js";import{FluxCapacityError as n,FluxEmptyError as r}from"../errors.js";import{stream as i}from"../core.js";import{link as a}from"../_link.js";import{defaultScheduler as o}from"../_scheduler.js";import{tryCall as s}from"../_safe.js";import{abortError as c}from"@vielzeug/arsenal";function retry(n){return t(n.times,`retry times`),t=>i((r,i)=>{let c=0,l,u,start=()=>{if(i.aborted)return;let d=a(t,{complete:r.complete,error(t){if(c===n.times){r.error(t);return}let a=c++,l;if(s(()=>{l=typeof n.delay==`function`?n.delay(a):n.delay},r.error),!i.aborted){if(l!==void 0)try{e(l,`Retry delay`)}catch(e){r.error(e);return}l===void 0||l===0?queueMicrotask(start):u=o.delay(start,l)}},next:r.next},i);d.closed||(l=d)};return start(),()=>{u?.(),l?.unsubscribe()}})}function first(e,t){return new Promise((n,i)=>{let o=new AbortController,abort=()=>{o.abort(),i(c(t?.signal,`Stream consumption aborted`))};if(t?.signal?.aborted){abort();return}t?.signal?.addEventListener(`abort`,abort,{once:!0}),a(e,{complete(){t?.signal?.removeEventListener(`abort`,abort),`defaultValue`in(t??{})?n(t.defaultValue):i(new r)},error(e){t?.signal?.removeEventListener(`abort`,abort),i(e)},next(e){t?.signal?.removeEventListener(`abort`,abort),o.abort(),n(e)}},o.signal)})}function last(e,t){return new Promise((n,i)=>{let o=new AbortController,abort=()=>{o.abort(),i(c(t?.signal,`Stream consumption aborted`))};if(t?.signal?.aborted){abort();return}let s=!1,l;t?.signal?.addEventListener(`abort`,abort,{once:!0}),a(e,{complete(){t?.signal?.removeEventListener(`abort`,abort),s?n(l):`defaultValue`in(t??{})?n(t.defaultValue):i(new r)},error(e){t?.signal?.removeEventListener(`abort`,abort),i(e)},next(e){s=!0,l=e}},o.signal)})}function toArray(e,r){return t(r.maxItems,`toArray maxItems`),new Promise((t,i)=>{let o=new AbortController,s=[],abort=()=>{o.abort(),i(c(r?.signal,`Stream consumption aborted`))};if(r.signal?.aborted){abort();return}r.signal?.addEventListener(`abort`,abort,{once:!0}),a(e,{complete(){r.signal?.removeEventListener(`abort`,abort),t(s)},error(e){r.signal?.removeEventListener(`abort`,abort),i(e)},next(e){if(s.length===r.maxItems){r.signal?.removeEventListener(`abort`,abort),o.abort(),i(new n(r.maxItems,`toArray maxItems exceeded`));return}s.push(e)}},o.signal)})}export{first,last,retry,toArray};
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";
8
+ //#region src/operators/utility.ts
9
+ function retry(n) {
10
+ return t(n.times, "retry times"), (t) => i((r, i) => {
11
+ let c = 0, l, u, start = () => {
12
+ if (i.aborted) return;
13
+ let d = a(t, {
14
+ complete: r.complete,
15
+ error(t) {
16
+ if (c === n.times) {
17
+ r.error(t);
18
+ return;
19
+ }
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);
28
+ return;
29
+ }
30
+ l === void 0 || l === 0 ? queueMicrotask(start) : u = o.delay(start, l);
31
+ }
32
+ },
33
+ next: r.next
34
+ }, i);
35
+ d.closed || (l = d);
36
+ };
37
+ return start(), () => {
38
+ u?.(), l?.unsubscribe();
39
+ };
40
+ });
41
+ }
42
+ function first(e, t) {
43
+ return new Promise((n, i) => {
44
+ let o = new AbortController(), abort = () => {
45
+ o.abort(), i(c(t?.signal, "Stream consumption aborted"));
46
+ };
47
+ t?.signal?.aborted ? abort() : (t?.signal?.addEventListener("abort", abort, { once: !0 }), a(e, {
48
+ complete() {
49
+ t?.signal?.removeEventListener("abort", abort), "defaultValue" in (t ?? {}) ? n(t.defaultValue) : i(new r());
50
+ },
51
+ error(e) {
52
+ t?.signal?.removeEventListener("abort", abort), i(e);
53
+ },
54
+ next(e) {
55
+ t?.signal?.removeEventListener("abort", abort), o.abort(), n(e);
56
+ }
57
+ }, o.signal));
58
+ });
59
+ }
60
+ function last(e, t) {
61
+ return new Promise((n, i) => {
62
+ let o = new AbortController(), abort = () => {
63
+ o.abort(), i(c(t?.signal, "Stream consumption aborted"));
64
+ };
65
+ if (t?.signal?.aborted) {
66
+ abort();
67
+ return;
68
+ }
69
+ let s = !1, l;
70
+ t?.signal?.addEventListener("abort", abort, { once: !0 }), a(e, {
71
+ complete() {
72
+ t?.signal?.removeEventListener("abort", abort), s ? n(l) : "defaultValue" in (t ?? {}) ? n(t.defaultValue) : i(new r());
73
+ },
74
+ error(e) {
75
+ t?.signal?.removeEventListener("abort", abort), i(e);
76
+ },
77
+ next(e) {
78
+ s = !0, l = e;
79
+ }
80
+ }, o.signal);
81
+ });
82
+ }
83
+ function toArray(e, r) {
84
+ return t(r.maxItems, "toArray maxItems"), new Promise((t, i) => {
85
+ let o = new AbortController(), s = [], abort = () => {
86
+ o.abort(), i(c(r?.signal, "Stream consumption aborted"));
87
+ };
88
+ r.signal?.aborted ? abort() : (r.signal?.addEventListener("abort", abort, { once: !0 }), a(e, {
89
+ complete() {
90
+ r.signal?.removeEventListener("abort", abort), t(s);
91
+ },
92
+ error(e) {
93
+ r.signal?.removeEventListener("abort", abort), i(e);
94
+ },
95
+ next(e) {
96
+ s.length === r.maxItems ? (r.signal?.removeEventListener("abort", abort), o.abort(), i(new n(r.maxItems, "toArray maxItems exceeded"))) : s.push(e);
97
+ }
98
+ }, o.signal));
99
+ });
100
+ }
101
+ //#endregion
102
+ export { first, last, retry, toArray };
103
+
2
104
  //# sourceMappingURL=utility.js.map
@@ -1 +1 @@
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 times: 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.times, 'retry times');\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.times) {\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":"mWA0BA,SAAgB,MAAS,EAAuC,CAG9D,OAFA,EAAyB,EAAQ,MAAO,aAAa,EAE7C,GACN,GAAQ,EAAM,IAAW,CACvB,IAAI,EAAW,EACX,EACA,EAEE,UAAoB,CACxB,GAAI,EAAO,QAAS,OAEpB,IAAM,EAAe,EACnB,EACA,CACE,SAAU,EAAK,SACf,MAAM,EAAQ,CACZ,GAAI,IAAa,EAAQ,MAAO,CAC9B,EAAK,MAAM,CAAM,EAEjB,MACF,CAEA,IAAM,EAAU,IACZ,EAEJ,SAAc,CACZ,EAAQ,OAAO,EAAQ,OAAU,WAAa,EAAQ,MAAM,CAAO,EAAI,EAAQ,KACjF,EAAG,EAAK,KAAK,EAET,GAAO,QAEX,IAAI,IAAU,IAAA,GACZ,GAAI,CACF,EAAe,EAAO,aAAa,CACrC,OAAS,EAAQ,CACf,EAAK,MAAM,CAAM,EACjB,MACF,CAGE,IAAU,IAAA,IAAa,IAAU,EACnC,eAAe,KAAK,EAEpB,EAAc,EAAiB,MAAM,MAAO,CAAK,CANjD,CAQJ,EACA,KAAM,EAAK,IACb,EACA,CACF,EAEK,EAAa,SAAQ,EAAU,EACtC,EAIA,OAFA,MAAM,MAEO,CACX,IAAc,EACd,GAAS,YAAY,CACvB,CACF,CAAC,CACL,CAEA,SAAgB,MAAS,EAAmB,EAAuC,CACjF,OAAO,IAAI,SAAY,EAAS,IAAW,CACzC,IAAM,EAAa,IAAI,gBACjB,UAAoB,CACxB,EAAW,MAAM,EACjB,EAAO,EAAW,GAAS,OAAQ,4BAA4B,CAAC,CAClE,EAEA,GAAI,GAAS,QAAQ,QAAS,CAC5B,MAAM,EAEN,MACF,CAEA,GAAS,QAAQ,iBAAiB,QAAS,MAAO,CAAE,KAAM,EAAK,CAAC,EAChE,EACE,EACA,CACE,UAAW,CACT,GAAS,QAAQ,oBAAoB,QAAS,KAAK,EAE/C,iBAAmB,GAAW,CAAC,GAAI,EAAQ,EAAS,YAAiB,EACpE,EAAO,IAAI,CAAgB,CAClC,EACA,MAAM,EAAQ,CACZ,GAAS,QAAQ,oBAAoB,QAAS,KAAK,EACnD,EAAO,CAAM,CACf,EACA,KAAK,EAAO,CACV,GAAS,QAAQ,oBAAoB,QAAS,KAAK,EACnD,EAAW,MAAM,EACjB,EAAQ,CAAK,CACf,CACF,EACA,EAAW,MACb,CACF,CAAC,CACH,CAEA,SAAgB,KAAQ,EAAmB,EAAuC,CAChF,OAAO,IAAI,SAAY,EAAS,IAAW,CACzC,IAAM,EAAa,IAAI,gBACjB,UAAoB,CACxB,EAAW,MAAM,EACjB,EAAO,EAAW,GAAS,OAAQ,4BAA4B,CAAC,CAClE,EAEA,GAAI,GAAS,QAAQ,QAAS,CAC5B,MAAM,EAEN,MACF,CAEA,IAAI,EAAU,GACV,EAEJ,GAAS,QAAQ,iBAAiB,QAAS,MAAO,CAAE,KAAM,EAAK,CAAC,EAChE,EACE,EACA,CACE,UAAW,CACT,GAAS,QAAQ,oBAAoB,QAAS,KAAK,EAE/C,EAAS,EAAQ,CAAW,EACvB,iBAAmB,GAAW,CAAC,GAAI,EAAQ,EAAS,YAAiB,EACzE,EAAO,IAAI,CAAgB,CAClC,EACA,MAAM,EAAQ,CACZ,GAAS,QAAQ,oBAAoB,QAAS,KAAK,EACnD,EAAO,CAAM,CACf,EACA,KAAK,EAAO,CACV,EAAU,GACV,EAAS,CACX,CACF,EACA,EAAW,MACb,CACF,CAAC,CACH,CAEA,SAAgB,QAAW,EAAmB,EAAuC,CAGnF,OAFA,EAAyB,EAAQ,SAAU,kBAAkB,EAEtD,IAAI,SAAc,EAAS,IAAW,CAC3C,IAAM,EAAa,IAAI,gBACjB,EAAc,CAAC,EACf,UAAoB,CACxB,EAAW,MAAM,EACjB,EAAO,EAAW,GAAS,OAAQ,4BAA4B,CAAC,CAClE,EAEA,GAAI,EAAQ,QAAQ,QAAS,CAC3B,MAAM,EAEN,MACF,CAEA,EAAQ,QAAQ,iBAAiB,QAAS,MAAO,CAAE,KAAM,EAAK,CAAC,EAC/D,EACE,EACA,CACE,UAAW,CACT,EAAQ,QAAQ,oBAAoB,QAAS,KAAK,EAClD,EAAQ,CAAM,CAChB,EACA,MAAM,EAAQ,CACZ,EAAQ,QAAQ,oBAAoB,QAAS,KAAK,EAClD,EAAO,CAAM,CACf,EACA,KAAK,EAAO,CACV,GAAI,EAAO,SAAW,EAAQ,SAAU,CACtC,EAAQ,QAAQ,oBAAoB,QAAS,KAAK,EAClD,EAAW,MAAM,EACjB,EAAO,IAAI,EAAkB,EAAQ,SAAU,2BAA2B,CAAC,EAE3E,MACF,CAEA,EAAO,KAAK,CAAK,CACnB,CACF,EACA,EAAW,MACb,CACF,CAAC,CACH"}
1
+ {"version":3,"file":"utility.js","names":["assertNonNegativeInteger","options","stream","attempts","current","cancelDelay","signal","subscription","link","source","sink","reason","attempt","delay","tryCall","defaultScheduler","controller","reject","abortError","resolve","FluxEmptyError","value","emitted","latest","values","FluxCapacityError"],"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 times: 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.times, 'retry times');\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.times) {\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.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,KACd,EACA,GAAG,EAC4B,CAC/B,OAAO,EAAU,QACd,EAA0B,IAAuB,EAAS,CAAO,EAClE,CACF,CACF"}
1
+ {"version":3,"file":"pipe.cjs","names":["operators","operator","current","source"],"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,KACd,EACA,GAAGA,EAC4B,CAC/B,OAAOA,EAAU,QACd,EAA0B,IAAuBC,EAASC,CAAO,EAClEC,CACF,CACF,C"}
package/dist/pipe.js CHANGED
@@ -1,2 +1,8 @@
1
- function pipe(e,...t){return t.reduce((e,t)=>t(e),e)}export{pipe};
1
+ //#region src/pipe.ts
2
+ function pipe(e, ...t) {
3
+ return t.reduce((e, t) => t(e), e);
4
+ }
5
+ //#endregion
6
+ export { pipe };
7
+
2
8
  //# sourceMappingURL=pipe.js.map
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.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,KACd,EACA,GAAG,EAC4B,CAC/B,OAAO,EAAU,QACd,EAA0B,IAAuB,EAAS,CAAO,EAClE,CACF,CACF"}
1
+ {"version":3,"file":"pipe.js","names":["operators","operator","current","source"],"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,KACd,GACA,GAAGA,GAC4B;CAC/B,OAAOA,EAAU,QACd,GAA0B,MAAuBC,EAASC,CAAO,GAClEC,CACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vielzeug/flux",
3
- "version": "26.10.14",
3
+ "version": "26.10.16",
4
4
  "description": "Minimal push streams with explicit ownership, bounded buffering, and structural bridges",
5
5
  "repository": {
6
6
  "type": "git",
@@ -53,12 +53,12 @@
53
53
  "verify:exports": "node scripts/verify-exports.mjs && node scripts/verify-package-exports.mjs"
54
54
  },
55
55
  "dependencies": {
56
- "@vielzeug/arsenal": "26.10.14"
56
+ "@vielzeug/arsenal": "26.10.16"
57
57
  },
58
58
  "devDependencies": {
59
- "@types/node": "^26.6.2",
59
+ "@types/node": "^26.6.5",
60
60
  "typescript": "^6.0.3",
61
- "vite": "^8.3.0",
62
- "vitest": "^5.0.1"
61
+ "vite": "^8.3.4",
62
+ "vitest": "^5.0.5"
63
63
  }
64
64
  }