@vielzeug/flux 2.4.0 → 26.10.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/README.md +12 -22
- package/dist/_iterator.cjs +1 -1
- package/dist/_iterator.cjs.map +1 -1
- package/dist/_iterator.d.ts +1 -1
- package/dist/_iterator.d.ts.map +1 -1
- package/dist/_iterator.js +1 -72
- package/dist/_iterator.js.map +1 -1
- package/dist/_link.cjs +1 -1
- package/dist/_link.cjs.map +1 -1
- package/dist/_link.d.ts +1 -1
- package/dist/_link.d.ts.map +1 -1
- package/dist/_link.js +1 -7
- package/dist/_link.js.map +1 -1
- package/dist/_numeric.cjs +1 -1
- package/dist/_numeric.cjs.map +1 -1
- package/dist/_numeric.js +1 -13
- package/dist/_numeric.js.map +1 -1
- package/dist/_safe.cjs +1 -1
- package/dist/_safe.cjs.map +1 -1
- package/dist/_safe.js +1 -11
- package/dist/_safe.js.map +1 -1
- package/dist/_scheduler.js +1 -14
- package/dist/_scheduler.js.map +1 -1
- package/dist/_subscription.cjs +1 -1
- package/dist/_subscription.cjs.map +1 -1
- package/dist/_subscription.d.ts +1 -1
- package/dist/_subscription.d.ts.map +1 -1
- package/dist/_subscription.js +1 -79
- package/dist/_subscription.js.map +1 -1
- package/dist/async.cjs +1 -1
- package/dist/async.cjs.map +1 -1
- package/dist/async.d.ts +1 -1
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +1 -10
- package/dist/async.js.map +1 -1
- package/dist/channel.cjs +1 -1
- package/dist/channel.cjs.map +1 -1
- package/dist/channel.d.ts +1 -1
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +1 -54
- package/dist/channel.js.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +8 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -17
- package/dist/core.js.map +1 -1
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +1 -23
- 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/index.cjs +1 -1
- package/dist/index.d.ts +15 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -10
- package/dist/operators/combination.cjs +1 -1
- package/dist/operators/combination.cjs.map +1 -1
- package/dist/operators/combination.d.ts +1 -1
- package/dist/operators/combination.d.ts.map +1 -1
- package/dist/operators/combination.js +1 -76
- package/dist/operators/combination.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 +1 -1
- package/dist/operators/creation.d.ts.map +1 -1
- package/dist/operators/creation.js +1 -83
- 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 +1 -1
- package/dist/operators/filtering.d.ts.map +1 -1
- package/dist/operators/filtering.js +1 -89
- 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 +1 -1
- package/dist/operators/transformation.d.ts.map +1 -1
- package/dist/operators/transformation.js +1 -123
- 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 +6 -6
- package/dist/operators/utility.d.ts.map +1 -1
- package/dist/operators/utility.js +1 -115
- package/dist/operators/utility.js.map +1 -1
- package/dist/pipe.cjs +1 -1
- package/dist/pipe.cjs.map +1 -1
- package/dist/pipe.d.ts +1 -1
- package/dist/pipe.d.ts.map +1 -1
- package/dist/pipe.js +1 -7
- package/dist/pipe.js.map +1 -1
- package/dist/subjects.d.ts +1 -2
- package/dist/subjects.d.ts.map +1 -1
- package/package.json +10 -70
- package/dist/adapters/courier.cjs +0 -2
- package/dist/adapters/courier.cjs.map +0 -1
- package/dist/adapters/courier.d.ts +0 -4
- package/dist/adapters/courier.d.ts.map +0 -1
- package/dist/adapters/courier.js +0 -12
- package/dist/adapters/courier.js.map +0 -1
- package/dist/adapters/herald.cjs +0 -2
- package/dist/adapters/herald.cjs.map +0 -1
- package/dist/adapters/herald.d.ts +0 -5
- package/dist/adapters/herald.d.ts.map +0 -1
- package/dist/adapters/herald.js +0 -22
- package/dist/adapters/herald.js.map +0 -1
- package/dist/adapters/pulse.cjs +0 -2
- package/dist/adapters/pulse.cjs.map +0 -1
- package/dist/adapters/pulse.d.ts +0 -5
- package/dist/adapters/pulse.d.ts.map +0 -1
- package/dist/adapters/pulse.js +0 -18
- package/dist/adapters/pulse.js.map +0 -1
- package/dist/adapters/ripple.cjs +0 -2
- package/dist/adapters/ripple.cjs.map +0 -1
- package/dist/adapters/ripple.d.ts +0 -19
- package/dist/adapters/ripple.d.ts.map +0 -1
- package/dist/adapters/ripple.js +0 -46
- package/dist/adapters/ripple.js.map +0 -1
- package/dist/courier.cjs +0 -1
- package/dist/courier.d.ts +0 -2
- package/dist/courier.d.ts.map +0 -1
- package/dist/courier.js +0 -2
- package/dist/herald.cjs +0 -1
- package/dist/herald.d.ts +0 -2
- package/dist/herald.d.ts.map +0 -1
- package/dist/herald.js +0 -2
- package/dist/pulse.cjs +0 -1
- package/dist/pulse.d.ts +0 -2
- package/dist/pulse.d.ts.map +0 -1
- package/dist/pulse.js +0 -2
- package/dist/ripple.cjs +0 -1
- package/dist/ripple.d.ts +0 -3
- package/dist/ripple.d.ts.map +0 -1
- package/dist/ripple.js +0 -2
- package/dist/subjects.cjs +0 -1
- package/dist/subjects.js +0 -2
|
@@ -1,84 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { stream as t } from "../core.js";
|
|
3
|
-
import { defaultScheduler as n } from "../_scheduler.js";
|
|
4
|
-
//#region src/operators/creation.ts
|
|
5
|
-
function r(...e) {
|
|
6
|
-
return t((t) => {
|
|
7
|
-
for (let n of e) t.next(n);
|
|
8
|
-
t.complete();
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
function i(e) {
|
|
12
|
-
return Symbol.asyncIterator in Object(e) ? t((t, n) => {
|
|
13
|
-
let r = e[Symbol.asyncIterator]();
|
|
14
|
-
return (async () => {
|
|
15
|
-
try {
|
|
16
|
-
for (; !n.aborted;) {
|
|
17
|
-
let e = await r.next();
|
|
18
|
-
if (e.done) {
|
|
19
|
-
t.complete();
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
t.next(e.value);
|
|
23
|
-
}
|
|
24
|
-
} catch (e) {
|
|
25
|
-
n.aborted || t.error(e);
|
|
26
|
-
}
|
|
27
|
-
})(), () => {
|
|
28
|
-
r.return?.();
|
|
29
|
-
};
|
|
30
|
-
}) : typeof e.then == "function" ? t((t, n) => {
|
|
31
|
-
e.then((e) => {
|
|
32
|
-
n.aborted || (t.next(e), t.complete());
|
|
33
|
-
}, (e) => {
|
|
34
|
-
n.aborted || t.error(e);
|
|
35
|
-
});
|
|
36
|
-
}) : t((t, n) => {
|
|
37
|
-
let r = e[Symbol.iterator]();
|
|
38
|
-
try {
|
|
39
|
-
for (; !n.aborted;) {
|
|
40
|
-
let e = r.next();
|
|
41
|
-
if (e.done) {
|
|
42
|
-
t.complete();
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
t.next(e.value);
|
|
46
|
-
}
|
|
47
|
-
} catch (e) {
|
|
48
|
-
t.error(e);
|
|
49
|
-
}
|
|
50
|
-
return () => {
|
|
51
|
-
r.return?.();
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
function a(e, n) {
|
|
56
|
-
return t((t) => {
|
|
57
|
-
let r = (e) => t.next(e);
|
|
58
|
-
return e.addEventListener(n, r), () => e.removeEventListener(n, r);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
function o(r) {
|
|
62
|
-
return e(r, "Interval duration"), t((e) => {
|
|
63
|
-
let t = 0;
|
|
64
|
-
return n.repeat(() => e.next(t++), r);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
function s(r) {
|
|
68
|
-
return e(r.delay, "Timer delay"), r.interval !== void 0 && e(r.interval, "Timer interval"), t((e) => {
|
|
69
|
-
let t = 0, i, a = n.delay(() => {
|
|
70
|
-
if (e.next(t++), r.interval === void 0) {
|
|
71
|
-
e.complete();
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
i = n.repeat(() => e.next(t++), r.interval);
|
|
75
|
-
}, r.delay);
|
|
76
|
-
return () => {
|
|
77
|
-
a(), i?.();
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
//#endregion
|
|
82
|
-
export { i as from, a as fromEvent, o as interval, r as of, s as timer };
|
|
83
|
-
|
|
1
|
+
import{assertDuration as e}from"../_numeric.js";import{reportUnhandledError as t}from"../_subscription.js";import{stream as n}from"../core.js";import{defaultScheduler as r}from"../_scheduler.js";function of(...e){return n(t=>{for(let n of e)t.next(n);t.complete()})}function from(e){return Symbol.asyncIterator in Object(e)?n((n,r)=>{let i=e[Symbol.asyncIterator]();return(async()=>{try{for(;!r.aborted;){let e=await i.next();if(e.done){n.complete();return}n.next(e.value)}}catch(e){r.aborted||n.error(e)}})(),()=>{try{let e=i.return?.();e&&e.catch(t)}catch(e){t(e)}}}):typeof e.then==`function`?n((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):n((t,n)=>{let r=e[Symbol.iterator]();try{for(;!n.aborted;){let e=r.next();if(e.done){t.complete();return}t.next(e.value)}}catch(e){t.error(e)}return()=>{r.return?.()}})}function fromEvent(e,t){return n(n=>{let listener=e=>n.next(e);return e.addEventListener(t,listener),()=>e.removeEventListener(t,listener)})}function interval(t){return e(t,`Interval duration`),n(e=>{let n=0;return r.repeat(()=>e.next(n++),t)})}function timer(t){return e(t.delay,`Timer delay`),t.interval!==void 0&&e(t.interval,`Timer interval`),n(e=>{let n=0,i,a=r.delay(()=>{if(e.next(n++),t.interval===void 0){e.complete();return}i=r.repeat(()=>e.next(n++),t.interval)},t.delay);return()=>{a(),i?.()}})}export{from,fromEvent,interval,of,timer};
|
|
84
2
|
//# sourceMappingURL=creation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creation.js","names":[],"sources":["../../src/operators/creation.ts"],"sourcesContent":["import { assertDuration } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\n\nexport type TimerOptions = {\n delay: number;\n interval?: number;\n};\n\nexport function of<T>(...values: T[]): Stream<T> {\n return stream((sink) => {\n for (const value of values) sink.next(value);\n sink.complete();\n });\n}\n\nexport function from<T>(source: AsyncIterable<T> | Iterable<T> | Promise<T>): Stream<T> {\n if (Symbol.asyncIterator in Object(source)) {\n return stream((sink, signal) => {\n const iterator = (source as AsyncIterable<T>)[Symbol.asyncIterator]();\n\n void (async () => {\n try {\n while (!signal.aborted) {\n const result = await iterator.next();\n\n if (result.done) {\n sink.complete();\n\n return;\n }\n\n sink.next(result.value);\n }\n } catch (reason) {\n if (!signal.aborted) sink.error(reason);\n }\n })();\n\n return () => {\n
|
|
1
|
+
{"version":3,"file":"creation.js","names":[],"sources":["../../src/operators/creation.ts"],"sourcesContent":["import { assertDuration } from '../_numeric.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { reportUnhandledError } from '../_subscription.js';\nimport { stream } from '../core.js';\nimport type { Stream } from '../types.js';\n\nexport type TimerOptions = {\n delay: number;\n interval?: number;\n};\n\nexport function of<T>(...values: T[]): Stream<T> {\n return stream((sink) => {\n for (const value of values) sink.next(value);\n sink.complete();\n });\n}\n\nexport function from<T>(source: AsyncIterable<T> | Iterable<T> | Promise<T>): Stream<T> {\n if (Symbol.asyncIterator in Object(source)) {\n return stream((sink, signal) => {\n const iterator = (source as AsyncIterable<T>)[Symbol.asyncIterator]();\n\n void (async () => {\n try {\n while (!signal.aborted) {\n const result = await iterator.next();\n\n if (result.done) {\n sink.complete();\n\n return;\n }\n\n sink.next(result.value);\n }\n } catch (reason) {\n if (!signal.aborted) sink.error(reason);\n }\n })();\n\n return () => {\n try {\n const returned = iterator.return?.();\n if (returned) void returned.catch(reportUnhandledError);\n } catch (reason) {\n reportUnhandledError(reason);\n }\n };\n });\n }\n\n if (typeof (source as Promise<T>).then === 'function') {\n return stream((sink, signal) => {\n void (source as Promise<T>).then(\n (value) => {\n if (!signal.aborted) {\n sink.next(value);\n sink.complete();\n }\n },\n (reason: unknown) => {\n if (!signal.aborted) sink.error(reason);\n },\n );\n });\n }\n\n return stream((sink, signal) => {\n const iterator = (source as Iterable<T>)[Symbol.iterator]();\n\n try {\n while (!signal.aborted) {\n const result = iterator.next();\n\n if (result.done) {\n sink.complete();\n\n return;\n }\n\n sink.next(result.value);\n }\n } catch (reason) {\n sink.error(reason);\n }\n\n return () => {\n iterator.return?.();\n };\n });\n}\n\nexport function fromEvent<T = Event>(\n target: {\n addEventListener(type: string, listener: (event: T) => void): void;\n removeEventListener(type: string, listener: (event: T) => void): void;\n },\n type: string,\n): Stream<T> {\n return stream((sink) => {\n const listener = (event: T): void => sink.next(event);\n\n target.addEventListener(type, listener);\n\n return () => target.removeEventListener(type, listener);\n });\n}\n\nexport function interval(every: number): Stream<number> {\n assertDuration(every, 'Interval duration');\n\n return stream((sink) => {\n let index = 0;\n\n return defaultScheduler.repeat(() => sink.next(index++), every);\n });\n}\n\nexport function timer(options: TimerOptions): Stream<number> {\n assertDuration(options.delay, 'Timer delay');\n\n if (options.interval !== undefined) assertDuration(options.interval, 'Timer interval');\n\n return stream((sink) => {\n let index = 0;\n let cancelInterval: (() => void) | undefined;\n const cancelDelay = defaultScheduler.delay(() => {\n sink.next(index++);\n\n if (options.interval === undefined) {\n sink.complete();\n\n return;\n }\n\n cancelInterval = defaultScheduler.repeat(() => sink.next(index++), options.interval);\n }, options.delay);\n\n return () => {\n cancelDelay();\n cancelInterval?.();\n };\n });\n}\n"],"mappings":"mMAWA,SAAgB,GAAM,GAAG,EAAwB,CAC/C,OAAO,EAAQ,GAAS,CACtB,IAAK,IAAM,KAAS,EAAQ,EAAK,KAAK,CAAK,EAC3C,EAAK,SAAS,CAChB,CAAC,CACH,CAEA,SAAgB,KAAQ,EAAgE,CAkDtF,OAjDI,OAAO,iBAAiB,OAAO,CAAM,EAChC,GAAQ,EAAM,IAAW,CAC9B,IAAM,EAAY,EAA4B,OAAO,cAAc,CAAC,EAoBpE,OAlBM,SAAY,CAChB,GAAI,CACF,KAAO,CAAC,EAAO,SAAS,CACtB,IAAM,EAAS,MAAM,EAAS,KAAK,EAEnC,GAAI,EAAO,KAAM,CACf,EAAK,SAAS,EAEd,MACF,CAEA,EAAK,KAAK,EAAO,KAAK,CACxB,CACF,OAAS,EAAQ,CACV,EAAO,SAAS,EAAK,MAAM,CAAM,CACxC,CACF,EAAA,CAAG,MAEU,CACX,GAAI,CACF,IAAM,EAAW,EAAS,SAAS,EAC/B,GAAU,EAAc,MAAM,CAAoB,CACxD,OAAS,EAAQ,CACf,EAAqB,CAAM,CAC7B,CACF,CACF,CAAC,EAGC,OAAQ,EAAsB,MAAS,WAClC,GAAQ,EAAM,IAAW,CAC9B,EAA4B,KACzB,GAAU,CACJ,EAAO,UACV,EAAK,KAAK,CAAK,EACf,EAAK,SAAS,EAElB,EACC,GAAoB,CACd,EAAO,SAAS,EAAK,MAAM,CAAM,CACxC,CACF,CACF,CAAC,EAGI,GAAQ,EAAM,IAAW,CAC9B,IAAM,EAAY,EAAuB,OAAO,SAAS,CAAC,EAE1D,GAAI,CACF,KAAO,CAAC,EAAO,SAAS,CACtB,IAAM,EAAS,EAAS,KAAK,EAE7B,GAAI,EAAO,KAAM,CACf,EAAK,SAAS,EAEd,MACF,CAEA,EAAK,KAAK,EAAO,KAAK,CACxB,CACF,OAAS,EAAQ,CACf,EAAK,MAAM,CAAM,CACnB,CAEA,UAAa,CACX,EAAS,SAAS,CACpB,CACF,CAAC,CACH,CAEA,SAAgB,UACd,EAIA,EACW,CACX,OAAO,EAAQ,GAAS,CACtB,IAAM,SAAY,GAAmB,EAAK,KAAK,CAAK,EAIpD,OAFA,EAAO,iBAAiB,EAAM,QAAQ,MAEzB,EAAO,oBAAoB,EAAM,QAAQ,CACxD,CAAC,CACH,CAEA,SAAgB,SAAS,EAA+B,CAGtD,OAFA,EAAe,EAAO,mBAAmB,EAElC,EAAQ,GAAS,CACtB,IAAI,EAAQ,EAEZ,OAAO,EAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,CAAK,CAChE,CAAC,CACH,CAEA,SAAgB,MAAM,EAAuC,CAK3D,OAJA,EAAe,EAAQ,MAAO,aAAa,EAEvC,EAAQ,WAAa,IAAA,IAAW,EAAe,EAAQ,SAAU,gBAAgB,EAE9E,EAAQ,GAAS,CACtB,IAAI,EAAQ,EACR,EACE,EAAc,EAAiB,UAAY,CAG/C,GAFA,EAAK,KAAK,GAAO,EAEb,EAAQ,WAAa,IAAA,GAAW,CAClC,EAAK,SAAS,EAEd,MACF,CAEA,EAAiB,EAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,EAAQ,QAAQ,CACrF,EAAG,EAAQ,KAAK,EAEhB,UAAa,CACX,EAAY,EACZ,IAAiB,CACnB,CACF,CAAC,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_numeric.cjs"),t=require("../
|
|
1
|
+
const e=require("../_numeric.cjs"),t=require("../errors.cjs"),n=require("../core.cjs"),r=require("../_link.cjs"),i=require("../_scheduler.cjs");function take(t){return e.assertNonNegativeInteger(t,`take count`),e=>n.stream((n,i)=>{if(t===0){n.complete();return}let a=0,o={};return o.current=r.link(e,{complete:n.complete,error:n.error,next(e){n.next(e),a++,a===t&&(n.complete(),o.current?.unsubscribe())}},i),()=>o.current?.unsubscribe()})}function isAbortSignal(e){return typeof e.aborted==`boolean`&&typeof e.addEventListener==`function`&&typeof e.removeEventListener==`function`}function takeUntil(e){return t=>n.stream((n,i)=>{let a,o,removeNotifier=()=>{},complete=()=>{a?.unsubscribe(),o?.unsubscribe(),n.complete()};if(isAbortSignal(e)){if(e.aborted){n.complete();return}e.addEventListener(`abort`,complete,{once:!0}),removeNotifier=()=>e.removeEventListener(`abort`,complete)}else o=r.link(e,{error:n.error,next:complete},i);return i.aborted||(a=r.link(t,{complete:n.complete,error:n.error,next:n.next},i)),()=>{removeNotifier(),a?.unsubscribe(),o?.unsubscribe()}})}function debounce(t){return e.assertDuration(t,`Debounce duration`),e=>n.stream((n,a)=>{let o,s,c=!1,flush=()=>{o=void 0,c&&(c=!1,n.next(s))},l=r.link(e,{complete(){o?.(),flush(),n.complete()},error:n.error,next(e){s=e,c=!0,o?.(),o=i.defaultScheduler.delay(flush,t)}},a);return()=>{o?.(),l.unsubscribe()}})}function timeout(a){return e.assertDuration(a,`Timeout duration`),e=>n.stream((n,o)=>{let s,start=()=>{s=i.defaultScheduler.delay(()=>n.error(new t.FluxTimeoutError(a)),a)};start();let c=r.link(e,{complete(){s(),n.complete()},error(e){s(),n.error(e)},next(e){s(),start(),n.next(e)}},o);return()=>{s(),c.unsubscribe()}})}exports.debounce=debounce,exports.take=take,exports.takeUntil=takeUntil,exports.timeout=timeout;
|
|
2
2
|
//# sourceMappingURL=filtering.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.cjs","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["import { link } from '../_link';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport { FluxTimeoutError } from '../errors';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport function take<T>(count: number): Operator<T, T> {\n assertNonNegativeInteger(count, 'take count');\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (notifier
|
|
1
|
+
{"version":3,"file":"filtering.cjs","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { stream } from '../core.js';\nimport { FluxTimeoutError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\n\nexport function take<T>(count: number): Operator<T, T> {\n assertNonNegativeInteger(count, 'take count');\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nfunction isAbortSignal(value: AbortSignal | Stream<unknown>): value is AbortSignal {\n return (\n typeof (value as AbortSignal).aborted === 'boolean' &&\n typeof (value as AbortSignal).addEventListener === 'function' &&\n typeof (value as AbortSignal).removeEventListener === 'function'\n );\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (isAbortSignal(notifier)) {\n if (notifier.aborted) {\n sink.complete();\n\n return;\n }\n\n notifier.addEventListener('abort', complete, { once: true });\n removeNotifier = (): void => notifier.removeEventListener('abort', complete);\n } else {\n notifierSubscription = link(notifier, { error: sink.error, next: complete }, signal);\n }\n\n if (!signal.aborted) {\n sourceSubscription = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n }\n\n return () => {\n removeNotifier();\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n };\n });\n}\n\nexport function debounce<T>(duration: number): Operator<T, T> {\n assertDuration(duration, 'Debounce duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: (() => void) | undefined;\n let pending: T | undefined;\n let hasPending = false;\n\n const flush = (): void => {\n cancel = undefined;\n\n if (!hasPending) return;\n\n hasPending = false;\n sink.next(pending as T);\n };\n\n const subscription = link(\n source,\n {\n complete() {\n cancel?.();\n flush();\n sink.complete();\n },\n error: sink.error,\n next(value) {\n pending = value;\n hasPending = true;\n cancel?.();\n cancel = defaultScheduler.delay(flush, duration);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(duration: number): Operator<T, T> {\n assertDuration(duration, 'Timeout duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: () => void;\n\n const start = (): void => {\n cancel = defaultScheduler.delay(() => sink.error(new FluxTimeoutError(duration)), duration);\n };\n\n start();\n\n const subscription = link(\n source,\n {\n complete() {\n cancel();\n sink.complete();\n },\n error(reason) {\n cancel();\n sink.error(reason);\n },\n next(value) {\n cancel();\n start();\n sink.next(value);\n },\n },\n signal,\n );\n\n return () => {\n cancel();\n subscription.unsubscribe();\n };\n });\n}\n"],"mappings":"gJAOA,SAAgB,KAAQ,EAA+B,CAGrD,OAFA,EAAA,yBAAyB,EAAO,YAAY,EAEpC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,GAAI,IAAU,EAAG,CACf,EAAK,SAAS,EAEd,MACF,CAEA,IAAI,EAAO,EACL,EAA8C,CAAC,EAoBrD,MAlBA,GAAgB,QAAU,EAAA,KACxB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAK,KAAK,CAAK,EACf,IAEI,IAAS,IACX,EAAK,SAAS,EACd,EAAgB,SAAS,YAAY,EAEzC,CACF,EACA,CACF,MAEa,EAAgB,SAAS,YAAY,CACpD,CAAC,CACL,CAEA,SAAS,cAAc,EAA4D,CACjF,OACE,OAAQ,EAAsB,SAAY,WAC1C,OAAQ,EAAsB,kBAAqB,YACnD,OAAQ,EAAsB,qBAAwB,UAE1D,CAEA,SAAgB,UAAa,EAAyD,CACpF,MAAQ,IACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,mBAA6B,CAAC,EAE5B,aAAuB,CAC3B,GAAoB,YAAY,EAChC,GAAsB,YAAY,EAClC,EAAK,SAAS,CAChB,EAEA,GAAI,cAAc,CAAQ,EAAG,CAC3B,GAAI,EAAS,QAAS,CACpB,EAAK,SAAS,EAEd,MACF,CAEA,EAAS,iBAAiB,QAAS,SAAU,CAAE,KAAM,EAAK,CAAC,EAC3D,mBAA6B,EAAS,oBAAoB,QAAS,QAAQ,CAC7E,KACE,GAAuB,EAAA,KAAK,EAAU,CAAE,MAAO,EAAK,MAAO,KAAM,QAAS,EAAG,CAAM,EAerF,OAZK,EAAO,UACV,EAAqB,EAAA,KACnB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,OAGW,CACX,eAAe,EACf,GAAoB,YAAY,EAChC,GAAsB,YAAY,CACpC,CACF,CAAC,CACL,CAEA,SAAgB,SAAY,EAAkC,CAG5D,OAFA,EAAA,eAAe,EAAU,mBAAmB,EAEpC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,EAAa,GAEX,UAAoB,CACxB,EAAS,IAAA,GAEJ,IAEL,EAAa,GACb,EAAK,KAAK,CAAY,EACxB,EAEM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,IAAS,EACT,MAAM,EACN,EAAK,SAAS,CAChB,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAU,EACV,EAAa,GACb,IAAS,EACT,EAAS,EAAA,iBAAiB,MAAM,MAAO,CAAQ,CACjD,CACF,EACA,CACF,EAEA,UAAa,CACX,IAAS,EACT,EAAa,YAAY,CAC3B,CACF,CAAC,CACL,CAEA,SAAgB,QAAW,EAAkC,CAG3D,OAFA,EAAA,eAAe,EAAU,kBAAkB,EAEnC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EAEE,UAAoB,CACxB,EAAS,EAAA,iBAAiB,UAAY,EAAK,MAAM,IAAI,EAAA,iBAAiB,CAAQ,CAAC,EAAG,CAAQ,CAC5F,EAEA,MAAM,EAEN,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,EAAO,EACP,EAAK,SAAS,CAChB,EACA,MAAM,EAAQ,CACZ,EAAO,EACP,EAAK,MAAM,CAAM,CACnB,EACA,KAAK,EAAO,CACV,EAAO,EACP,MAAM,EACN,EAAK,KAAK,CAAK,CACjB,CACF,EACA,CACF,EAEA,UAAa,CACX,EAAO,EACP,EAAa,YAAY,CAC3B,CACF,CAAC,CACL"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Operator, Stream } from '../types';
|
|
1
|
+
import type { Operator, Stream } from '../types.js';
|
|
2
2
|
export declare function take<T>(count: number): Operator<T, T>;
|
|
3
3
|
export declare function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T>;
|
|
4
4
|
export declare function debounce<T>(duration: number): Operator<T, T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../src/operators/filtering.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../src/operators/filtering.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAElE,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAkCrD;AAUD,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA4CpF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA0C5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAsC3D"}
|
|
@@ -1,90 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { stream as n } from "../core.js";
|
|
3
|
-
import { link as r } from "../_link.js";
|
|
4
|
-
import { FluxTimeoutError as i } from "../errors.js";
|
|
5
|
-
import { defaultScheduler as a } from "../_scheduler.js";
|
|
6
|
-
//#region src/operators/filtering.ts
|
|
7
|
-
function o(e) {
|
|
8
|
-
return t(e, "take count"), (t) => n((n, i) => {
|
|
9
|
-
if (e === 0) {
|
|
10
|
-
n.complete();
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
let a = 0, o = {};
|
|
14
|
-
return o.current = r(t, {
|
|
15
|
-
complete: n.complete,
|
|
16
|
-
error: n.error,
|
|
17
|
-
next(t) {
|
|
18
|
-
n.next(t), a++, a === e && (n.complete(), o.current?.unsubscribe());
|
|
19
|
-
}
|
|
20
|
-
}, i), () => o.current?.unsubscribe();
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
function s(e) {
|
|
24
|
-
return (t) => n((n, i) => {
|
|
25
|
-
let a, o, s = () => {}, c = () => {
|
|
26
|
-
a?.unsubscribe(), o?.unsubscribe(), n.complete();
|
|
27
|
-
};
|
|
28
|
-
if (e instanceof AbortSignal) {
|
|
29
|
-
if (e.aborted) {
|
|
30
|
-
n.complete();
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
e.addEventListener("abort", c, { once: !0 }), s = () => e.removeEventListener("abort", c);
|
|
34
|
-
} else o = r(e, {
|
|
35
|
-
error: n.error,
|
|
36
|
-
next: c
|
|
37
|
-
}, i);
|
|
38
|
-
return i.aborted || (a = r(t, {
|
|
39
|
-
complete: n.complete,
|
|
40
|
-
error: n.error,
|
|
41
|
-
next: n.next
|
|
42
|
-
}, i)), () => {
|
|
43
|
-
s(), a?.unsubscribe(), o?.unsubscribe();
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function c(t) {
|
|
48
|
-
return e(t, "Debounce duration"), (e) => n((n, i) => {
|
|
49
|
-
let o, s, c = !1, l = () => {
|
|
50
|
-
o = void 0, c && (c = !1, n.next(s));
|
|
51
|
-
}, u = r(e, {
|
|
52
|
-
complete() {
|
|
53
|
-
o?.(), l(), n.complete();
|
|
54
|
-
},
|
|
55
|
-
error: n.error,
|
|
56
|
-
next(e) {
|
|
57
|
-
s = e, c = !0, o?.(), o = a.delay(l, t);
|
|
58
|
-
}
|
|
59
|
-
}, i);
|
|
60
|
-
return () => {
|
|
61
|
-
o?.(), u.unsubscribe();
|
|
62
|
-
};
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
function l(t) {
|
|
66
|
-
return e(t, "Timeout duration"), (e) => n((n, o) => {
|
|
67
|
-
let s, c = () => {
|
|
68
|
-
s = a.delay(() => n.error(new i(t)), t);
|
|
69
|
-
};
|
|
70
|
-
c();
|
|
71
|
-
let l = r(e, {
|
|
72
|
-
complete() {
|
|
73
|
-
s(), n.complete();
|
|
74
|
-
},
|
|
75
|
-
error(e) {
|
|
76
|
-
s(), n.error(e);
|
|
77
|
-
},
|
|
78
|
-
next(e) {
|
|
79
|
-
s(), c(), n.next(e);
|
|
80
|
-
}
|
|
81
|
-
}, o);
|
|
82
|
-
return () => {
|
|
83
|
-
s(), l.unsubscribe();
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
//#endregion
|
|
88
|
-
export { c as debounce, o as take, s as takeUntil, l as timeout };
|
|
89
|
-
|
|
1
|
+
import{assertDuration as e,assertNonNegativeInteger as t}from"../_numeric.js";import{FluxTimeoutError as n}from"../errors.js";import{stream as r}from"../core.js";import{link as i}from"../_link.js";import{defaultScheduler as a}from"../_scheduler.js";function take(e){return t(e,`take count`),t=>r((n,r)=>{if(e===0){n.complete();return}let a=0,o={};return o.current=i(t,{complete:n.complete,error:n.error,next(t){n.next(t),a++,a===e&&(n.complete(),o.current?.unsubscribe())}},r),()=>o.current?.unsubscribe()})}function isAbortSignal(e){return typeof e.aborted==`boolean`&&typeof e.addEventListener==`function`&&typeof e.removeEventListener==`function`}function takeUntil(e){return t=>r((n,r)=>{let a,o,removeNotifier=()=>{},complete=()=>{a?.unsubscribe(),o?.unsubscribe(),n.complete()};if(isAbortSignal(e)){if(e.aborted){n.complete();return}e.addEventListener(`abort`,complete,{once:!0}),removeNotifier=()=>e.removeEventListener(`abort`,complete)}else o=i(e,{error:n.error,next:complete},r);return r.aborted||(a=i(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{removeNotifier(),a?.unsubscribe(),o?.unsubscribe()}})}function debounce(t){return e(t,`Debounce duration`),e=>r((n,r)=>{let o,s,c=!1,flush=()=>{o=void 0,c&&(c=!1,n.next(s))},l=i(e,{complete(){o?.(),flush(),n.complete()},error:n.error,next(e){s=e,c=!0,o?.(),o=a.delay(flush,t)}},r);return()=>{o?.(),l.unsubscribe()}})}function timeout(t){return e(t,`Timeout duration`),e=>r((r,o)=>{let s,start=()=>{s=a.delay(()=>r.error(new n(t)),t)};start();let c=i(e,{complete(){s(),r.complete()},error(e){s(),r.error(e)},next(e){s(),start(),r.next(e)}},o);return()=>{s(),c.unsubscribe()}})}export{debounce,take,takeUntil,timeout};
|
|
90
2
|
//# sourceMappingURL=filtering.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.js","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["import { link } from '../_link';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric';\nimport { defaultScheduler } from '../_scheduler';\nimport { stream } from '../core';\nimport { FluxTimeoutError } from '../errors';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport function take<T>(count: number): Operator<T, T> {\n assertNonNegativeInteger(count, 'take count');\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (notifier
|
|
1
|
+
{"version":3,"file":"filtering.js","names":[],"sources":["../../src/operators/filtering.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric.js';\nimport { defaultScheduler } from '../_scheduler.js';\nimport { stream } from '../core.js';\nimport { FluxTimeoutError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\n\nexport function take<T>(count: number): Operator<T, T> {\n assertNonNegativeInteger(count, 'take count');\n\n return (source) =>\n stream((sink, signal) => {\n if (count === 0) {\n sink.complete();\n\n return;\n }\n\n let seen = 0;\n const subscriptionRef: { current?: Subscription } = {};\n\n subscriptionRef.current = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n sink.next(value);\n seen++;\n\n if (seen === count) {\n sink.complete();\n subscriptionRef.current?.unsubscribe();\n }\n },\n },\n signal,\n );\n\n return () => subscriptionRef.current?.unsubscribe();\n });\n}\n\nfunction isAbortSignal(value: AbortSignal | Stream<unknown>): value is AbortSignal {\n return (\n typeof (value as AbortSignal).aborted === 'boolean' &&\n typeof (value as AbortSignal).addEventListener === 'function' &&\n typeof (value as AbortSignal).removeEventListener === 'function'\n );\n}\n\nexport function takeUntil<T>(notifier: AbortSignal | Stream<unknown>): Operator<T, T> {\n return (source) =>\n stream((sink, signal) => {\n let sourceSubscription: Subscription | undefined;\n let notifierSubscription: Subscription | undefined;\n let removeNotifier = (): void => {};\n\n const complete = (): void => {\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n sink.complete();\n };\n\n if (isAbortSignal(notifier)) {\n if (notifier.aborted) {\n sink.complete();\n\n return;\n }\n\n notifier.addEventListener('abort', complete, { once: true });\n removeNotifier = (): void => notifier.removeEventListener('abort', complete);\n } else {\n notifierSubscription = link(notifier, { error: sink.error, next: complete }, signal);\n }\n\n if (!signal.aborted) {\n sourceSubscription = link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n }\n\n return () => {\n removeNotifier();\n sourceSubscription?.unsubscribe();\n notifierSubscription?.unsubscribe();\n };\n });\n}\n\nexport function debounce<T>(duration: number): Operator<T, T> {\n assertDuration(duration, 'Debounce duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: (() => void) | undefined;\n let pending: T | undefined;\n let hasPending = false;\n\n const flush = (): void => {\n cancel = undefined;\n\n if (!hasPending) return;\n\n hasPending = false;\n sink.next(pending as T);\n };\n\n const subscription = link(\n source,\n {\n complete() {\n cancel?.();\n flush();\n sink.complete();\n },\n error: sink.error,\n next(value) {\n pending = value;\n hasPending = true;\n cancel?.();\n cancel = defaultScheduler.delay(flush, duration);\n },\n },\n signal,\n );\n\n return () => {\n cancel?.();\n subscription.unsubscribe();\n };\n });\n}\n\nexport function timeout<T>(duration: number): Operator<T, T> {\n assertDuration(duration, 'Timeout duration');\n\n return (source) =>\n stream((sink, signal) => {\n let cancel: () => void;\n\n const start = (): void => {\n cancel = defaultScheduler.delay(() => sink.error(new FluxTimeoutError(duration)), duration);\n };\n\n start();\n\n const subscription = link(\n source,\n {\n complete() {\n cancel();\n sink.complete();\n },\n error(reason) {\n cancel();\n sink.error(reason);\n },\n next(value) {\n cancel();\n start();\n sink.next(value);\n },\n },\n signal,\n );\n\n return () => {\n cancel();\n subscription.unsubscribe();\n };\n });\n}\n"],"mappings":"yPAOA,SAAgB,KAAQ,EAA+B,CAGrD,OAFA,EAAyB,EAAO,YAAY,EAEpC,GACN,GAAQ,EAAM,IAAW,CACvB,GAAI,IAAU,EAAG,CACf,EAAK,SAAS,EAEd,MACF,CAEA,IAAI,EAAO,EACL,EAA8C,CAAC,EAoBrD,MAlBA,GAAgB,QAAU,EACxB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAK,KAAK,CAAK,EACf,IAEI,IAAS,IACX,EAAK,SAAS,EACd,EAAgB,SAAS,YAAY,EAEzC,CACF,EACA,CACF,MAEa,EAAgB,SAAS,YAAY,CACpD,CAAC,CACL,CAEA,SAAS,cAAc,EAA4D,CACjF,OACE,OAAQ,EAAsB,SAAY,WAC1C,OAAQ,EAAsB,kBAAqB,YACnD,OAAQ,EAAsB,qBAAwB,UAE1D,CAEA,SAAgB,UAAa,EAAyD,CACpF,MAAQ,IACN,GAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,mBAA6B,CAAC,EAE5B,aAAuB,CAC3B,GAAoB,YAAY,EAChC,GAAsB,YAAY,EAClC,EAAK,SAAS,CAChB,EAEA,GAAI,cAAc,CAAQ,EAAG,CAC3B,GAAI,EAAS,QAAS,CACpB,EAAK,SAAS,EAEd,MACF,CAEA,EAAS,iBAAiB,QAAS,SAAU,CAAE,KAAM,EAAK,CAAC,EAC3D,mBAA6B,EAAS,oBAAoB,QAAS,QAAQ,CAC7E,KACE,GAAuB,EAAK,EAAU,CAAE,MAAO,EAAK,MAAO,KAAM,QAAS,EAAG,CAAM,EAerF,OAZK,EAAO,UACV,EAAqB,EACnB,EACA,CACE,SAAU,EAAK,SACf,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,OAGW,CACX,eAAe,EACf,GAAoB,YAAY,EAChC,GAAsB,YAAY,CACpC,CACF,CAAC,CACL,CAEA,SAAgB,SAAY,EAAkC,CAG5D,OAFA,EAAe,EAAU,mBAAmB,EAEpC,GACN,GAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,EAAa,GAEX,UAAoB,CACxB,EAAS,IAAA,GAEJ,IAEL,EAAa,GACb,EAAK,KAAK,CAAY,EACxB,EAEM,EAAe,EACnB,EACA,CACE,UAAW,CACT,IAAS,EACT,MAAM,EACN,EAAK,SAAS,CAChB,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAU,EACV,EAAa,GACb,IAAS,EACT,EAAS,EAAiB,MAAM,MAAO,CAAQ,CACjD,CACF,EACA,CACF,EAEA,UAAa,CACX,IAAS,EACT,EAAa,YAAY,CAC3B,CACF,CAAC,CACL,CAEA,SAAgB,QAAW,EAAkC,CAG3D,OAFA,EAAe,EAAU,kBAAkB,EAEnC,GACN,GAAQ,EAAM,IAAW,CACvB,IAAI,EAEE,UAAoB,CACxB,EAAS,EAAiB,UAAY,EAAK,MAAM,IAAI,EAAiB,CAAQ,CAAC,EAAG,CAAQ,CAC5F,EAEA,MAAM,EAEN,IAAM,EAAe,EACnB,EACA,CACE,UAAW,CACT,EAAO,EACP,EAAK,SAAS,CAChB,EACA,MAAM,EAAQ,CACZ,EAAO,EACP,EAAK,MAAM,CAAM,CACnB,EACA,KAAK,EAAO,CACV,EAAO,EACP,MAAM,EACN,EAAK,KAAK,CAAK,CACjB,CACF,EACA,CACF,EAEA,UAAa,CACX,EAAO,EACP,EAAa,YAAY,CAC3B,CACF,CAAC,CACL"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_numeric.cjs"),t=require("../
|
|
1
|
+
const e=require("../_numeric.cjs"),t=require("../errors.cjs"),n=require("../core.cjs"),r=require("../_link.cjs"),i=require("../_safe.cjs");function map(e){return t=>n.stream((n,a)=>r.link(t,{complete:n.complete,error:n.error,next(t){i.tryCall(()=>n.next(e(t)),n.error)}},a).unsubscribe)}function filter(e){return t=>n.stream((n,a)=>r.link(t,{complete:n.complete,error:n.error,next(t){i.tryCall(()=>{e(t)&&n.next(t)},n.error)}},a).unsubscribe)}function scan(e,t){return a=>n.stream((n,o)=>{let s=t;return r.link(a,{complete:n.complete,error:n.error,next(t){i.tryCall(()=>{s=e(s,t),n.next(s)},n.error)}},o).unsubscribe})}function switchMap(e){return t=>n.stream((n,a)=>{let o=!1,s,finish=()=>{o&&!s&&n.complete()},c=r.link(t,{complete(){o=!0,finish()},error:n.error,next(t){s?.unsubscribe(),s=void 0,i.tryCall(()=>{let i=r.link(e(t),{complete(){s=void 0,finish()},error:n.error,next:n.next},a);s=i.closed?void 0:i},n.error)}},a);return()=>{c.unsubscribe(),s?.unsubscribe()}})}function flatten(a,o){let s=o.concurrency===1/0;return s||(e.assertPositiveInteger(o.concurrency,`mergeMap concurrency`),e.assertPositiveInteger(o.capacity,`mergeMap capacity`)),e=>n.stream((n,c)=>{let l=[],u=new Set,d=!1,f={},finish=()=>{d&&u.size===0&&l.length===0&&n.complete()},startInner=e=>{i.tryCall(()=>{let t={};t.current=r.link(a(e),{complete(){t.current&&u.delete(t.current),drain()},error:n.error,next:n.next},c),t.current.closed?drain():u.add(t.current)},n.error)},drain=()=>{if(!c.aborted){for(;l.length>0&&(s||u.size<o.concurrency);){let e=l.shift();startInner(e)}finish()}};return f.current=r.link(e,{complete(){d=!0,finish()},error:n.error,next(e){if(!s&&l.length>=o.capacity){f.current?.unsubscribe(),n.error(new t.FluxCapacityError(o.capacity,`mergeMap buffer capacity exceeded`));return}l.push(e),drain()}},c),()=>{f.current?.unsubscribe();for(let e of u)e.unsubscribe();l.length=0}})}function mergeMap(e,t){return flatten(e,t)}function concatMap(e,t){return flatten(e,{capacity:t.capacity,concurrency:1})}exports.concatMap=concatMap,exports.filter=filter,exports.map=map,exports.mergeMap=mergeMap,exports.scan=scan,exports.switchMap=switchMap;
|
|
2
2
|
//# sourceMappingURL=transformation.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformation.cjs","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import { link } from '../_link';\nimport { assertPositiveInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport { FluxCapacityError } from '../errors';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type FlattenOptions = {\n /** Maximum concurrently active inner subscriptions. Use `Infinity` for unbounded concurrency. */\n concurrency: number;\n /** Maximum queued outer values waiting for an inner subscription slot. Required when `concurrency` is finite. */\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nfunction flatten<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n const unbounded = options.concurrency === Infinity;\n\n if (!unbounded) {\n assertPositiveInteger(options.concurrency, 'mergeMap concurrency');\n assertPositiveInteger(options.capacity, 'mergeMap capacity');\n }\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n const inners = new Set<Subscription>();\n let outerComplete = false;\n const outerRef: { current?: Subscription } = {};\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0 && queue.length === 0) sink.complete();\n };\n\n const startInner = (value: A): void => {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n drain();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n else drain();\n }, sink.error);\n };\n\n const drain = (): void => {\n if (signal.aborted) return;\n\n while (queue.length > 0 && (unbounded || inners.size < options.concurrency)) {\n const value = queue.shift()!;\n\n startInner(value);\n }\n\n finish();\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n if (!unbounded && queue.length >= options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new FluxCapacityError(options.capacity, 'mergeMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n drain();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n queue.length = 0;\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n return flatten(project, options);\n}\n\nexport function concatMap<A, B>(\n project: (value: A) => Stream<B>,\n options: Omit<FlattenOptions, 'concurrency'>,\n): Operator<A, B> {\n return flatten(project, { capacity: options.capacity, concurrency: 1 });\n}\n"],"mappings":"2IAcA,SAAgB,
|
|
1
|
+
{"version":3,"file":"transformation.cjs","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { assertPositiveInteger } from '../_numeric.js';\nimport { tryCall } from '../_safe.js';\nimport { stream } from '../core.js';\nimport { FluxCapacityError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\n\nexport type FlattenOptions = {\n /** Maximum concurrently active inner subscriptions. Use `Infinity` for unbounded concurrency. */\n concurrency: number;\n /** Maximum queued outer values waiting for an inner subscription slot. Required when `concurrency` is finite. */\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nfunction flatten<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n const unbounded = options.concurrency === Infinity;\n\n if (!unbounded) {\n assertPositiveInteger(options.concurrency, 'mergeMap concurrency');\n assertPositiveInteger(options.capacity, 'mergeMap capacity');\n }\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n const inners = new Set<Subscription>();\n let outerComplete = false;\n const outerRef: { current?: Subscription } = {};\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0 && queue.length === 0) sink.complete();\n };\n\n const startInner = (value: A): void => {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n drain();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n else drain();\n }, sink.error);\n };\n\n const drain = (): void => {\n if (signal.aborted) return;\n\n while (queue.length > 0 && (unbounded || inners.size < options.concurrency)) {\n const value = queue.shift()!;\n\n startInner(value);\n }\n\n finish();\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n if (!unbounded && queue.length >= options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new FluxCapacityError(options.capacity, 'mergeMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n drain();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n queue.length = 0;\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n return flatten(project, options);\n}\n\nexport function concatMap<A, B>(\n project: (value: A) => Stream<B>,\n options: Omit<FlattenOptions, 'concurrency'>,\n): Operator<A, B> {\n return flatten(project, { capacity: options.capacity, concurrency: 1 });\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../../src/operators/transformation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"transformation.d.ts","sourceRoot":"","sources":["../../src/operators/transformation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG;IAC3B,iGAAiG;IACjG,WAAW,EAAE,MAAM,CAAC;IACpB,iHAAiH;IACjH,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgBlE;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAkB1E;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAoBzF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgDhF;AAuFD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAExG;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAChC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,GAC3C,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAEhB"}
|
|
@@ -1,124 +1,2 @@
|
|
|
1
|
-
import
|
|
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 { FluxCapacityError as i } from "../errors.js";
|
|
6
|
-
//#region src/operators/transformation.ts
|
|
7
|
-
function a(e) {
|
|
8
|
-
return (i) => t((t, a) => n(i, {
|
|
9
|
-
complete: t.complete,
|
|
10
|
-
error: t.error,
|
|
11
|
-
next(n) {
|
|
12
|
-
r(() => t.next(e(n)), t.error);
|
|
13
|
-
}
|
|
14
|
-
}, a).unsubscribe);
|
|
15
|
-
}
|
|
16
|
-
function o(e) {
|
|
17
|
-
return (i) => t((t, a) => n(i, {
|
|
18
|
-
complete: t.complete,
|
|
19
|
-
error: t.error,
|
|
20
|
-
next(n) {
|
|
21
|
-
r(() => {
|
|
22
|
-
e(n) && t.next(n);
|
|
23
|
-
}, t.error);
|
|
24
|
-
}
|
|
25
|
-
}, a).unsubscribe);
|
|
26
|
-
}
|
|
27
|
-
function s(e, i) {
|
|
28
|
-
return (a) => t((t, o) => {
|
|
29
|
-
let s = i;
|
|
30
|
-
return n(a, {
|
|
31
|
-
complete: t.complete,
|
|
32
|
-
error: t.error,
|
|
33
|
-
next(n) {
|
|
34
|
-
r(() => {
|
|
35
|
-
s = e(s, n), t.next(s);
|
|
36
|
-
}, t.error);
|
|
37
|
-
}
|
|
38
|
-
}, o).unsubscribe;
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
function c(e) {
|
|
42
|
-
return (i) => t((t, a) => {
|
|
43
|
-
let o = !1, s, c = () => {
|
|
44
|
-
o && !s && t.complete();
|
|
45
|
-
}, l = n(i, {
|
|
46
|
-
complete() {
|
|
47
|
-
o = !0, c();
|
|
48
|
-
},
|
|
49
|
-
error: t.error,
|
|
50
|
-
next(i) {
|
|
51
|
-
s?.unsubscribe(), s = void 0, r(() => {
|
|
52
|
-
let r = n(e(i), {
|
|
53
|
-
complete() {
|
|
54
|
-
s = void 0, c();
|
|
55
|
-
},
|
|
56
|
-
error: t.error,
|
|
57
|
-
next: t.next
|
|
58
|
-
}, a);
|
|
59
|
-
s = r.closed ? void 0 : r;
|
|
60
|
-
}, t.error);
|
|
61
|
-
}
|
|
62
|
-
}, a);
|
|
63
|
-
return () => {
|
|
64
|
-
l.unsubscribe(), s?.unsubscribe();
|
|
65
|
-
};
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
function l(a, o) {
|
|
69
|
-
let s = o.concurrency === Infinity;
|
|
70
|
-
return s || (e(o.concurrency, "mergeMap concurrency"), e(o.capacity, "mergeMap capacity")), (e) => t((t, c) => {
|
|
71
|
-
let l = [], u = /* @__PURE__ */ new Set(), d = !1, f = {}, p = () => {
|
|
72
|
-
d && u.size === 0 && l.length === 0 && t.complete();
|
|
73
|
-
}, m = (e) => {
|
|
74
|
-
r(() => {
|
|
75
|
-
let r = {};
|
|
76
|
-
r.current = n(a(e), {
|
|
77
|
-
complete() {
|
|
78
|
-
r.current && u.delete(r.current), h();
|
|
79
|
-
},
|
|
80
|
-
error: t.error,
|
|
81
|
-
next: t.next
|
|
82
|
-
}, c), r.current.closed ? h() : u.add(r.current);
|
|
83
|
-
}, t.error);
|
|
84
|
-
}, h = () => {
|
|
85
|
-
if (!c.aborted) {
|
|
86
|
-
for (; l.length > 0 && (s || u.size < o.concurrency);) {
|
|
87
|
-
let e = l.shift();
|
|
88
|
-
m(e);
|
|
89
|
-
}
|
|
90
|
-
p();
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
return f.current = n(e, {
|
|
94
|
-
complete() {
|
|
95
|
-
d = !0, p();
|
|
96
|
-
},
|
|
97
|
-
error: t.error,
|
|
98
|
-
next(e) {
|
|
99
|
-
if (!s && l.length >= o.capacity) {
|
|
100
|
-
f.current?.unsubscribe(), t.error(new i(o.capacity, "mergeMap buffer capacity exceeded"));
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
l.push(e), h();
|
|
104
|
-
}
|
|
105
|
-
}, c), () => {
|
|
106
|
-
f.current?.unsubscribe();
|
|
107
|
-
for (let e of u) e.unsubscribe();
|
|
108
|
-
l.length = 0;
|
|
109
|
-
};
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
function u(e, t) {
|
|
113
|
-
return l(e, t);
|
|
114
|
-
}
|
|
115
|
-
function d(e, t) {
|
|
116
|
-
return l(e, {
|
|
117
|
-
capacity: t.capacity,
|
|
118
|
-
concurrency: 1
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
//#endregion
|
|
122
|
-
export { d as concatMap, o as filter, a as map, u as mergeMap, s as scan, c as switchMap };
|
|
123
|
-
|
|
1
|
+
import{assertPositiveInteger as e}from"../_numeric.js";import{FluxCapacityError as t}from"../errors.js";import{stream as n}from"../core.js";import{link as r}from"../_link.js";import{tryCall as i}from"../_safe.js";function map(e){return t=>n((n,a)=>r(t,{complete:n.complete,error:n.error,next(t){i(()=>n.next(e(t)),n.error)}},a).unsubscribe)}function filter(e){return t=>n((n,a)=>r(t,{complete:n.complete,error:n.error,next(t){i(()=>{e(t)&&n.next(t)},n.error)}},a).unsubscribe)}function scan(e,t){return a=>n((n,o)=>{let s=t;return r(a,{complete:n.complete,error:n.error,next(t){i(()=>{s=e(s,t),n.next(s)},n.error)}},o).unsubscribe})}function switchMap(e){return t=>n((n,a)=>{let o=!1,s,finish=()=>{o&&!s&&n.complete()},c=r(t,{complete(){o=!0,finish()},error:n.error,next(t){s?.unsubscribe(),s=void 0,i(()=>{let i=r(e(t),{complete(){s=void 0,finish()},error:n.error,next:n.next},a);s=i.closed?void 0:i},n.error)}},a);return()=>{c.unsubscribe(),s?.unsubscribe()}})}function flatten(a,o){let s=o.concurrency===1/0;return s||(e(o.concurrency,`mergeMap concurrency`),e(o.capacity,`mergeMap capacity`)),e=>n((n,c)=>{let l=[],u=new Set,d=!1,f={},finish=()=>{d&&u.size===0&&l.length===0&&n.complete()},startInner=e=>{i(()=>{let t={};t.current=r(a(e),{complete(){t.current&&u.delete(t.current),drain()},error:n.error,next:n.next},c),t.current.closed?drain():u.add(t.current)},n.error)},drain=()=>{if(!c.aborted){for(;l.length>0&&(s||u.size<o.concurrency);){let e=l.shift();startInner(e)}finish()}};return f.current=r(e,{complete(){d=!0,finish()},error:n.error,next(e){if(!s&&l.length>=o.capacity){f.current?.unsubscribe(),n.error(new t(o.capacity,`mergeMap buffer capacity exceeded`));return}l.push(e),drain()}},c),()=>{f.current?.unsubscribe();for(let e of u)e.unsubscribe();l.length=0}})}function mergeMap(e,t){return flatten(e,t)}function concatMap(e,t){return flatten(e,{capacity:t.capacity,concurrency:1})}export{concatMap,filter,map,mergeMap,scan,switchMap};
|
|
124
2
|
//# sourceMappingURL=transformation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformation.js","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import { link } from '../_link';\nimport { assertPositiveInteger } from '../_numeric';\nimport { tryCall } from '../_safe';\nimport { stream } from '../core';\nimport { FluxCapacityError } from '../errors';\nimport type { Operator, Stream, Subscription } from '../types';\n\nexport type FlattenOptions = {\n /** Maximum concurrently active inner subscriptions. Use `Infinity` for unbounded concurrency. */\n concurrency: number;\n /** Maximum queued outer values waiting for an inner subscription slot. Required when `concurrency` is finite. */\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nfunction flatten<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n const unbounded = options.concurrency === Infinity;\n\n if (!unbounded) {\n assertPositiveInteger(options.concurrency, 'mergeMap concurrency');\n assertPositiveInteger(options.capacity, 'mergeMap capacity');\n }\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n const inners = new Set<Subscription>();\n let outerComplete = false;\n const outerRef: { current?: Subscription } = {};\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0 && queue.length === 0) sink.complete();\n };\n\n const startInner = (value: A): void => {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n drain();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n else drain();\n }, sink.error);\n };\n\n const drain = (): void => {\n if (signal.aborted) return;\n\n while (queue.length > 0 && (unbounded || inners.size < options.concurrency)) {\n const value = queue.shift()!;\n\n startInner(value);\n }\n\n finish();\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n if (!unbounded && queue.length >= options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new FluxCapacityError(options.capacity, 'mergeMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n drain();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n queue.length = 0;\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n return flatten(project, options);\n}\n\nexport function concatMap<A, B>(\n project: (value: A) => Stream<B>,\n options: Omit<FlattenOptions, 'concurrency'>,\n): Operator<A, B> {\n return flatten(project, { capacity: options.capacity, concurrency: 1 });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"transformation.js","names":[],"sources":["../../src/operators/transformation.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { assertPositiveInteger } from '../_numeric.js';\nimport { tryCall } from '../_safe.js';\nimport { stream } from '../core.js';\nimport { FluxCapacityError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\n\nexport type FlattenOptions = {\n /** Maximum concurrently active inner subscriptions. Use `Infinity` for unbounded concurrency. */\n concurrency: number;\n /** Maximum queued outer values waiting for an inner subscription slot. Required when `concurrency` is finite. */\n capacity: number;\n};\n\nexport function map<A, B>(project: (value: A) => B): Operator<A, B> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => sink.next(project(value)), sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function filter<T>(predicate: (value: T) => boolean): Operator<T, T> {\n return (source) =>\n stream(\n (sink, signal) =>\n link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n if (predicate(value)) sink.next(value);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe,\n );\n}\n\nexport function scan<T, A>(reducer: (state: A, value: T) => A, initial: A): Operator<T, A> {\n return (source) =>\n stream((sink, signal) => {\n let state = initial;\n\n return link(\n source,\n {\n complete: sink.complete,\n error: sink.error,\n next(value) {\n tryCall(() => {\n state = reducer(state, value);\n sink.next(state);\n }, sink.error);\n },\n },\n signal,\n ).unsubscribe;\n });\n}\n\nexport function switchMap<A, B>(project: (value: A) => Stream<B>): Operator<A, B> {\n return (source) =>\n stream((sink, signal) => {\n let outerComplete = false;\n let inner: Subscription | undefined;\n\n const finish = (): void => {\n if (outerComplete && !inner) sink.complete();\n };\n\n const outer = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n inner?.unsubscribe();\n inner = undefined;\n\n tryCall(() => {\n const subscription = link(\n project(value),\n {\n complete() {\n inner = undefined;\n finish();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n inner = subscription.closed ? undefined : subscription;\n }, sink.error);\n },\n },\n signal,\n );\n\n return () => {\n outer.unsubscribe();\n inner?.unsubscribe();\n };\n });\n}\n\nfunction flatten<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n const unbounded = options.concurrency === Infinity;\n\n if (!unbounded) {\n assertPositiveInteger(options.concurrency, 'mergeMap concurrency');\n assertPositiveInteger(options.capacity, 'mergeMap capacity');\n }\n\n return (source) =>\n stream((sink, signal) => {\n const queue: A[] = [];\n const inners = new Set<Subscription>();\n let outerComplete = false;\n const outerRef: { current?: Subscription } = {};\n\n const finish = (): void => {\n if (outerComplete && inners.size === 0 && queue.length === 0) sink.complete();\n };\n\n const startInner = (value: A): void => {\n tryCall(() => {\n const innerRef: { current?: Subscription } = {};\n\n innerRef.current = link(\n project(value),\n {\n complete() {\n if (innerRef.current) inners.delete(innerRef.current);\n\n drain();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n if (!innerRef.current.closed) inners.add(innerRef.current);\n else drain();\n }, sink.error);\n };\n\n const drain = (): void => {\n if (signal.aborted) return;\n\n while (queue.length > 0 && (unbounded || inners.size < options.concurrency)) {\n const value = queue.shift()!;\n\n startInner(value);\n }\n\n finish();\n };\n\n outerRef.current = link(\n source,\n {\n complete() {\n outerComplete = true;\n finish();\n },\n error: sink.error,\n next(value) {\n if (!unbounded && queue.length >= options.capacity) {\n outerRef.current?.unsubscribe();\n sink.error(new FluxCapacityError(options.capacity, 'mergeMap buffer capacity exceeded'));\n\n return;\n }\n\n queue.push(value);\n drain();\n },\n },\n signal,\n );\n\n return () => {\n outerRef.current?.unsubscribe();\n for (const inner of inners) inner.unsubscribe();\n queue.length = 0;\n };\n });\n}\n\nexport function mergeMap<A, B>(project: (value: A) => Stream<B>, options: FlattenOptions): Operator<A, B> {\n return flatten(project, options);\n}\n\nexport function concatMap<A, B>(\n project: (value: A) => Stream<B>,\n options: Omit<FlattenOptions, 'concurrency'>,\n): Operator<A, B> {\n return flatten(project, { capacity: options.capacity, concurrency: 1 });\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_numeric.cjs"),t=require("../
|
|
1
|
+
const e=require("../_numeric.cjs"),t=require("../errors.cjs"),n=require("../core.cjs"),r=require("../_link.cjs"),i=require("../_scheduler.cjs"),a=require("../_safe.cjs");let o=require("@vielzeug/arsenal");function retry(t){return e.assertNonNegativeInteger(t.times,`retry times`),o=>n.stream((n,s)=>{let c=0,l,u,start=()=>{if(s.aborted)return;let d=r.link(o,{complete:n.complete,error(r){if(c===t.times){n.error(r);return}let o=c++,l;if(a.tryCall(()=>{l=typeof t.delay==`function`?t.delay(o):t.delay},n.error),!s.aborted){if(l!==void 0)try{e.assertDuration(l,`Retry delay`)}catch(e){n.error(e);return}l===void 0||l===0?queueMicrotask(start):u=i.defaultScheduler.delay(start,l)}},next:n.next},s);d.closed||(l=d)};return start(),()=>{u?.(),l?.unsubscribe()}})}function first(e,n){return new Promise((i,a)=>{let s=new AbortController,abort=()=>{s.abort(),a((0,o.abortError)(n?.signal,`Stream consumption aborted`))};if(n?.signal?.aborted){abort();return}n?.signal?.addEventListener(`abort`,abort,{once:!0}),r.link(e,{complete(){n?.signal?.removeEventListener(`abort`,abort),`defaultValue`in(n??{})?i(n.defaultValue):a(new t.FluxEmptyError)},error(e){n?.signal?.removeEventListener(`abort`,abort),a(e)},next(e){n?.signal?.removeEventListener(`abort`,abort),s.abort(),i(e)}},s.signal)})}function last(e,n){return new Promise((i,a)=>{let s=new AbortController,abort=()=>{s.abort(),a((0,o.abortError)(n?.signal,`Stream consumption aborted`))};if(n?.signal?.aborted){abort();return}let c=!1,l;n?.signal?.addEventListener(`abort`,abort,{once:!0}),r.link(e,{complete(){n?.signal?.removeEventListener(`abort`,abort),c?i(l):`defaultValue`in(n??{})?i(n.defaultValue):a(new t.FluxEmptyError)},error(e){n?.signal?.removeEventListener(`abort`,abort),a(e)},next(e){c=!0,l=e}},s.signal)})}function toArray(n,i){return e.assertNonNegativeInteger(i.maxItems,`toArray maxItems`),new Promise((e,a)=>{let s=new AbortController,c=[],abort=()=>{s.abort(),a((0,o.abortError)(i?.signal,`Stream consumption aborted`))};if(i.signal?.aborted){abort();return}i.signal?.addEventListener(`abort`,abort,{once:!0}),r.link(n,{complete(){i.signal?.removeEventListener(`abort`,abort),e(c)},error(e){i.signal?.removeEventListener(`abort`,abort),a(e)},next(e){if(c.length===i.maxItems){i.signal?.removeEventListener(`abort`,abort),s.abort(),a(new t.FluxCapacityError(i.maxItems,`toArray maxItems exceeded`));return}c.push(e)}},s.signal)})}exports.first=first,exports.last=last,exports.retry=retry,exports.toArray=toArray;
|
|
2
2
|
//# sourceMappingURL=utility.cjs.map
|