@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.
- package/dist/_iterator.cjs +1 -1
- package/dist/_iterator.cjs.map +1 -1
- package/dist/_iterator.d.ts.map +1 -1
- package/dist/_iterator.js +2 -4
- package/dist/_iterator.js.map +1 -1
- package/dist/_numeric.cjs +1 -1
- package/dist/_numeric.cjs.map +1 -1
- package/dist/_numeric.d.ts +1 -0
- package/dist/_numeric.d.ts.map +1 -1
- package/dist/_numeric.js +7 -1
- package/dist/_numeric.js.map +1 -1
- package/dist/adapters/courier.cjs +1 -1
- package/dist/adapters/courier.cjs.map +1 -1
- package/dist/adapters/courier.d.ts +0 -5
- package/dist/adapters/courier.d.ts.map +1 -1
- package/dist/adapters/courier.js +1 -22
- package/dist/adapters/courier.js.map +1 -1
- package/dist/courier.cjs +1 -1
- package/dist/courier.d.ts +1 -1
- package/dist/courier.d.ts.map +1 -1
- package/dist/courier.js +2 -2
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +0 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -4
- package/dist/errors.js.map +1 -1
- package/dist/flux.cjs +1 -1
- package/dist/flux.cjs.map +1 -1
- package/dist/flux.iife.js +1 -1
- package/dist/flux.iife.js.map +1 -1
- package/dist/flux.js +1 -1
- package/dist/flux.js.map +1 -1
- package/dist/operators/creation.cjs +1 -1
- package/dist/operators/creation.cjs.map +1 -1
- package/dist/operators/creation.d.ts.map +1 -1
- package/dist/operators/creation.js +40 -42
- package/dist/operators/creation.js.map +1 -1
- package/dist/operators/filtering.cjs +1 -1
- package/dist/operators/filtering.cjs.map +1 -1
- package/dist/operators/filtering.d.ts.map +1 -1
- package/dist/operators/filtering.js +44 -47
- package/dist/operators/filtering.js.map +1 -1
- package/dist/operators/transformation.cjs +1 -1
- package/dist/operators/transformation.cjs.map +1 -1
- package/dist/operators/transformation.d.ts.map +1 -1
- package/dist/operators/transformation.js +68 -68
- package/dist/operators/transformation.js.map +1 -1
- package/dist/operators/utility.cjs +1 -1
- package/dist/operators/utility.cjs.map +1 -1
- package/dist/operators/utility.d.ts.map +1 -1
- package/dist/operators/utility.js +45 -46
- package/dist/operators/utility.js.map +1 -1
- package/dist/subject.cjs +1 -1
- package/dist/subject.js +9 -9
- package/package.json +8 -3
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
|
|
7
|
+
function a() {
|
|
7
8
|
return new DOMException("Stream consumption aborted", "AbortError");
|
|
8
9
|
}
|
|
9
|
-
function a
|
|
10
|
-
|
|
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 =
|
|
15
|
-
complete:
|
|
16
|
-
error(
|
|
17
|
-
if (s ===
|
|
18
|
-
|
|
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
|
|
22
|
-
if (
|
|
23
|
-
c = typeof
|
|
24
|
-
},
|
|
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
|
-
|
|
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 =
|
|
29
|
+
c === void 0 || c === 0 ? queueMicrotask(u) : l = i.delay(u, c);
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
|
-
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
|
|
42
|
-
return new Promise((r,
|
|
41
|
+
function s(e, t) {
|
|
42
|
+
return new Promise((r, i) => {
|
|
43
43
|
let o = new AbortController(), s = () => {
|
|
44
|
-
o.abort(), a(
|
|
44
|
+
o.abort(), i(a());
|
|
45
45
|
};
|
|
46
|
-
if (
|
|
46
|
+
if (t?.signal?.aborted) {
|
|
47
47
|
s();
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
t?.signal?.addEventListener("abort", s, { once: !0 }), n(e, {
|
|
51
51
|
error(e) {
|
|
52
|
-
|
|
52
|
+
t?.signal?.removeEventListener("abort", s), i(e);
|
|
53
53
|
},
|
|
54
54
|
next(e) {
|
|
55
|
-
|
|
55
|
+
t?.signal?.removeEventListener("abort", s), o.abort(), r(e);
|
|
56
56
|
}
|
|
57
57
|
}, o.signal);
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
-
function
|
|
61
|
-
return new Promise((r,
|
|
62
|
-
let o = () => a(
|
|
63
|
-
if (
|
|
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
|
-
|
|
67
|
+
t?.signal?.addEventListener("abort", o, { once: !0 }), n(e, {
|
|
68
68
|
complete() {
|
|
69
|
-
|
|
69
|
+
t?.signal?.removeEventListener("abort", o), r(s);
|
|
70
70
|
},
|
|
71
71
|
error(e) {
|
|
72
|
-
|
|
72
|
+
t?.signal?.removeEventListener("abort", o), i(e);
|
|
73
73
|
},
|
|
74
74
|
next(e) {
|
|
75
75
|
s = e;
|
|
76
76
|
}
|
|
77
|
-
},
|
|
77
|
+
}, t?.signal ?? new AbortController().signal);
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
|
-
function
|
|
81
|
-
|
|
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(
|
|
83
|
+
o.abort(), i(a());
|
|
85
84
|
};
|
|
86
|
-
if (
|
|
85
|
+
if (r.signal?.aborted) {
|
|
87
86
|
c();
|
|
88
87
|
return;
|
|
89
88
|
}
|
|
90
|
-
|
|
89
|
+
r.signal?.addEventListener("abort", c, { once: !0 }), n(t, {
|
|
91
90
|
complete() {
|
|
92
|
-
|
|
91
|
+
r.signal?.removeEventListener("abort", c), e(s);
|
|
93
92
|
},
|
|
94
93
|
error(e) {
|
|
95
|
-
|
|
94
|
+
r.signal?.removeEventListener("abort", c), i(e);
|
|
96
95
|
},
|
|
97
96
|
next(e) {
|
|
98
|
-
if (s.length ===
|
|
99
|
-
|
|
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 {
|
|
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
|
|
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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"}
|
package/dist/subject.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./
|
|
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 {
|
|
2
|
-
import {
|
|
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(
|
|
5
|
-
let n =
|
|
6
|
-
return
|
|
4
|
+
function n(t) {
|
|
5
|
+
let n = t.replay ?? +("initial" in t);
|
|
6
|
+
return e(n, "Channel replay"), n;
|
|
7
7
|
}
|
|
8
|
-
function r(
|
|
9
|
-
let r = n(
|
|
10
|
-
"initial" in
|
|
11
|
-
let s =
|
|
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
|
|
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
|
|
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
|
|
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",
|