@vielzeug/flux 2.4.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +35 -31
- package/dist/_iterator.js.map +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.map +1 -1
- package/dist/_numeric.cjs +1 -1
- package/dist/_numeric.cjs.map +1 -1
- package/dist/_numeric.js +1 -1
- package/dist/_numeric.js.map +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.map +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.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 -1
- 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 +30 -1
- package/dist/core.js.map +1 -1
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +5 -1
- 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 +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -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 +28 -13
- 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 +36 -30
- 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 +31 -28
- 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 +50 -50
- 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 +5 -5
- package/dist/operators/utility.d.ts.map +1 -1
- package/dist/operators/utility.js +57 -57
- package/dist/operators/utility.js.map +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.map +1 -1
- package/dist/subjects.d.ts +2 -2
- package/dist/subjects.d.ts.map +1 -1
- package/package.json +10 -62
- 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/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export { toAsyncIterable } from './async';
|
|
2
|
-
export { stream } from './core';
|
|
3
|
-
export { FluxCapacityError, FluxEmptyError, FluxError, FluxTimeoutError } from './errors';
|
|
4
|
-
export { combineLatest, concat, merge } from './operators/combination';
|
|
5
|
-
export type { TimerOptions } from './operators/creation';
|
|
6
|
-
export { from, fromEvent, interval, of, timer } from './operators/creation';
|
|
7
|
-
export { debounce, take, takeUntil, timeout } from './operators/filtering';
|
|
8
|
-
export type { FlattenOptions } from './operators/transformation';
|
|
9
|
-
export { concatMap, filter, map, mergeMap, scan, switchMap } from './operators/transformation';
|
|
10
|
-
export type { RetryOptions, ToArrayOptions, ValueOptions } from './operators/utility';
|
|
11
|
-
export { first, last, retry, toArray } from './operators/utility';
|
|
12
|
-
export { pipe } from './pipe';
|
|
13
|
-
export type { AsyncIterableOptions, Observer, Operator, OverflowPolicy, Producer, Sink, Stream, SubscribeOptions, Subscription, Teardown, } from './types';
|
|
1
|
+
export { toAsyncIterable } from './async.js';
|
|
2
|
+
export { fromStore, fromSubscribe, stream } from './core.js';
|
|
3
|
+
export { FluxCapacityError, FluxEmptyError, FluxError, FluxTimeoutError } from './errors.js';
|
|
4
|
+
export { combineLatest, concat, merge } from './operators/combination.js';
|
|
5
|
+
export type { TimerOptions } from './operators/creation.js';
|
|
6
|
+
export { from, fromEvent, interval, of, timer } from './operators/creation.js';
|
|
7
|
+
export { debounce, take, takeUntil, timeout } from './operators/filtering.js';
|
|
8
|
+
export type { FlattenOptions } from './operators/transformation.js';
|
|
9
|
+
export { concatMap, filter, map, mergeMap, scan, switchMap } from './operators/transformation.js';
|
|
10
|
+
export type { RetryOptions, ToArrayOptions, ValueOptions } from './operators/utility.js';
|
|
11
|
+
export { first, last, retry, toArray } from './operators/utility.js';
|
|
12
|
+
export { pipe } from './pipe.js';
|
|
13
|
+
export type { AsyncIterableOptions, Observer, Operator, OverflowPolicy, Producer, Sink, Stream, SubscribeOptions, Subscription, Teardown, } from './types.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAClG,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,QAAQ,GACT,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { combineLatest as
|
|
5
|
-
import { from as
|
|
6
|
-
import { debounce as
|
|
7
|
-
import { concatMap as
|
|
8
|
-
import { first as
|
|
9
|
-
import { pipe as
|
|
10
|
-
export {
|
|
1
|
+
import { FluxCapacityError as e, FluxEmptyError as t, FluxError as n, FluxTimeoutError as r } from "./errors.js";
|
|
2
|
+
import { toAsyncIterable as i } from "./async.js";
|
|
3
|
+
import { fromStore as a, fromSubscribe as o, stream as s } from "./core.js";
|
|
4
|
+
import { combineLatest as c, concat as l, merge as u } from "./operators/combination.js";
|
|
5
|
+
import { from as d, fromEvent as f, interval as p, of as m, timer as h } from "./operators/creation.js";
|
|
6
|
+
import { debounce as g, take as _, takeUntil as v, timeout as y } from "./operators/filtering.js";
|
|
7
|
+
import { concatMap as b, filter as x, map as S, mergeMap as C, scan as w, switchMap as T } from "./operators/transformation.js";
|
|
8
|
+
import { first as E, last as D, retry as O, toArray as k } from "./operators/utility.js";
|
|
9
|
+
import { pipe as A } from "./pipe.js";
|
|
10
|
+
export { e as FluxCapacityError, t as FluxEmptyError, n as FluxError, r as FluxTimeoutError, c as combineLatest, l as concat, b as concatMap, g as debounce, x as filter, E as first, d as from, f as fromEvent, a as fromStore, o as fromSubscribe, p as interval, D as last, S as map, u as merge, C as mergeMap, m as of, A as pipe, O as retry, w as scan, s as stream, T as switchMap, _ as take, v as takeUntil, y as timeout, h as timer, k as toArray, i as toAsyncIterable };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../core.cjs"),t=require("../_link.cjs");function n(...n){return e.stream((e,r)=>{if(n.length===0){e.complete();return}let i=0,a=[];for(let o of n){let s=t.link(o,{complete(){i++,i===n.length&&e.complete()},error:e.error,next:e.next},r);if(a.push(s),r.aborted)break}return()=>a.forEach(e=>{e.unsubscribe()})})}function r(...n){return e.stream((e,r)=>{let i
|
|
1
|
+
const e=require("../core.cjs"),t=require("../_link.cjs");function n(...n){return e.stream((e,r)=>{if(n.length===0){e.complete();return}let i=0,a=[];for(let o of n){let s=t.link(o,{complete(){i++,i===n.length&&e.complete()},error:e.error,next:e.next},r);if(a.push(s),r.aborted)break}return()=>a.forEach(e=>{e.unsubscribe()})})}function r(...n){return e.stream((e,r)=>{let i=!1,a,o=0,s=!1,c=()=>{if(!r.aborted){if(i){s=!0;return}i=!0;try{do{s=!1;let i=n[o++];if(!i){e.complete();return}let l=t.link(i,{complete(){a=void 0,c()},error:e.error,next:e.next},r);a=l.closed?void 0:l}while(s&&!r.aborted)}finally{i=!1}}};return c(),()=>a?.unsubscribe()})}function i(...n){return e.stream((e,r)=>{if(n.length===0){e.complete();return}let i=Array(n.length),a=Array(n.length).fill(!1),o=[],s=0;for(let[c,l]of n.entries()){if(r.aborted)break;let u=t.link(l,{complete(){if(!a[c]){e.complete();return}s++,s===n.length&&e.complete()},error:e.error,next(t){i[c]=t,a[c]=!0,a.every(Boolean)&&e.next([...i])}},r);o.push(u)}return()=>o.forEach(e=>{e.unsubscribe()})})}exports.combineLatest=i,exports.concat=r,exports.merge=n;
|
|
2
2
|
//# sourceMappingURL=combination.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combination.cjs","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["import { link } from '../_link';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\ntype StreamValue<T> = T extends Stream<infer Value> ? Value : never;\ntype StreamValues<T extends readonly Stream<unknown>[]> = { [Key in keyof T]: StreamValue<T[Key]> };\n\nexport function merge<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n let completed = 0;\n const subscriptions: Subscription[] = [];\n\n for (const source of sources) {\n const subscription = link(\n source,\n {\n complete() {\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n subscriptions.push(subscription);\n\n if (signal.aborted) break;\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n\nexport function concat<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n let
|
|
1
|
+
{"version":3,"file":"combination.cjs","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { stream } from '../core.js';\nimport type { Stream, Subscription } from '../types.js';\n\ntype StreamValue<T> = T extends Stream<infer Value> ? Value : never;\ntype StreamValues<T extends readonly Stream<unknown>[]> = { [Key in keyof T]: StreamValue<T[Key]> };\n\nexport function merge<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n let completed = 0;\n const subscriptions: Subscription[] = [];\n\n for (const source of sources) {\n const subscription = link(\n source,\n {\n complete() {\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n subscriptions.push(subscription);\n\n if (signal.aborted) break;\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n\nexport function concat<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n let advancing = false;\n let current: Subscription | undefined;\n let index = 0;\n let requested = false;\n\n const subscribeNext = (): void => {\n if (signal.aborted) return;\n if (advancing) {\n requested = true;\n return;\n }\n\n advancing = true;\n try {\n do {\n requested = false;\n const source = sources[index++];\n\n if (!source) {\n sink.complete();\n return;\n }\n\n const subscription = link(\n source,\n {\n complete() {\n current = undefined;\n subscribeNext();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n current = subscription.closed ? undefined : subscription;\n } while (requested && !signal.aborted);\n } finally {\n advancing = false;\n }\n };\n\n subscribeNext();\n\n return () => current?.unsubscribe();\n });\n}\n\nexport function combineLatest<T extends readonly Stream<unknown>[]>(...sources: T): Stream<StreamValues<T>> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n const values = new Array<unknown>(sources.length);\n const ready = new Array<boolean>(sources.length).fill(false);\n const subscriptions: Subscription[] = [];\n let completed = 0;\n\n for (const [index, source] of sources.entries()) {\n if (signal.aborted) break;\n\n const subscription = link(\n source,\n {\n complete() {\n if (!ready[index]) {\n sink.complete();\n\n return;\n }\n\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next(value) {\n values[index] = value;\n ready[index] = true;\n\n if (ready.every(Boolean)) sink.next([...values] as StreamValues<T>);\n },\n },\n signal,\n );\n\n subscriptions.push(subscription);\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n"],"mappings":"yDAOA,SAAgB,EAAS,GAAG,EAAiC,CAC3D,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAK,SAAS,EAEd,MACF,CAEA,IAAI,EAAY,EACV,EAAgC,CAAC,EAEvC,IAAK,IAAM,KAAU,EAAS,CAC5B,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,IAEI,IAAc,EAAQ,QAAQ,EAAK,SAAS,CAClD,EACA,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,EAIA,GAFA,EAAc,KAAK,CAAY,EAE3B,EAAO,QAAS,KACtB,CAEA,UACE,EAAc,QAAS,GAAiB,CACtC,EAAa,YAAY,CAC3B,CAAC,CACL,CAAC,CACH,CAEA,SAAgB,EAAU,GAAG,EAAiC,CAC5D,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,IAAI,EAAY,GACZ,EACA,EAAQ,EACR,EAAY,GAEV,MAA4B,CAC5B,MAAO,QACX,IAAI,EAAW,CACb,EAAY,GACZ,MACF,CAEA,EAAY,GACZ,GAAI,CACF,EAAG,CACD,EAAY,GACZ,IAAM,EAAS,EAAQ,KAEvB,GAAI,CAAC,EAAQ,CACX,EAAK,SAAS,EACd,MACF,CAEA,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,EAAU,IAAA,GACV,EAAc,CAChB,EACA,MAAO,EAAK,MACZ,KAAM,EAAK,IACb,EACA,CACF,EAEA,EAAU,EAAa,OAAS,IAAA,GAAY,CAC9C,OAAS,GAAa,CAAC,EAAO,QAChC,QAAU,CACR,EAAY,EACd,CA9BA,CA+BF,EAIA,OAFA,EAAc,MAED,GAAS,YAAY,CACpC,CAAC,CACH,CAEA,SAAgB,EAAoD,GAAG,EAAqC,CAC1G,OAAO,EAAA,QAAQ,EAAM,IAAW,CAC9B,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAK,SAAS,EAEd,MACF,CAEA,IAAM,EAAa,MAAe,EAAQ,MAAM,EAC1C,EAAY,MAAe,EAAQ,MAAM,CAAC,CAAC,KAAK,EAAK,EACrD,EAAgC,CAAC,EACnC,EAAY,EAEhB,IAAK,GAAM,CAAC,EAAO,KAAW,EAAQ,QAAQ,EAAG,CAC/C,GAAI,EAAO,QAAS,MAEpB,IAAM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,GAAI,CAAC,EAAM,GAAQ,CACjB,EAAK,SAAS,EAEd,MACF,CAEA,IAEI,IAAc,EAAQ,QAAQ,EAAK,SAAS,CAClD,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAO,GAAS,EAChB,EAAM,GAAS,GAEX,EAAM,MAAM,OAAO,GAAG,EAAK,KAAK,CAAC,GAAG,CAAM,CAAoB,CACpE,CACF,EACA,CACF,EAEA,EAAc,KAAK,CAAY,CACjC,CAEA,UACE,EAAc,QAAS,GAAiB,CACtC,EAAa,YAAY,CAC3B,CAAC,CACL,CAAC,CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combination.d.ts","sourceRoot":"","sources":["../../src/operators/combination.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"combination.d.ts","sourceRoot":"","sources":["../../src/operators/combination.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAExD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AACpE,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAAE,CAAC;AAEpG,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAoC3D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAiD5D;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAiD1G"}
|
|
@@ -25,21 +25,36 @@ function n(...n) {
|
|
|
25
25
|
}
|
|
26
26
|
function r(...n) {
|
|
27
27
|
return e((e, r) => {
|
|
28
|
-
let i =
|
|
29
|
-
if (r.aborted)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
let i = !1, a, o = 0, s = !1, c = () => {
|
|
29
|
+
if (!r.aborted) {
|
|
30
|
+
if (i) {
|
|
31
|
+
s = !0;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
i = !0;
|
|
35
|
+
try {
|
|
36
|
+
do {
|
|
37
|
+
s = !1;
|
|
38
|
+
let i = n[o++];
|
|
39
|
+
if (!i) {
|
|
40
|
+
e.complete();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
let l = t(i, {
|
|
44
|
+
complete() {
|
|
45
|
+
a = void 0, c();
|
|
46
|
+
},
|
|
47
|
+
error: e.error,
|
|
48
|
+
next: e.next
|
|
49
|
+
}, r);
|
|
50
|
+
a = l.closed ? void 0 : l;
|
|
51
|
+
} while (s && !r.aborted);
|
|
52
|
+
} finally {
|
|
53
|
+
i = !1;
|
|
54
|
+
}
|
|
34
55
|
}
|
|
35
|
-
let c = t(s, {
|
|
36
|
-
complete: o,
|
|
37
|
-
error: e.error,
|
|
38
|
-
next: e.next
|
|
39
|
-
}, r);
|
|
40
|
-
a = c.closed ? void 0 : c;
|
|
41
56
|
};
|
|
42
|
-
return
|
|
57
|
+
return c(), () => a?.unsubscribe();
|
|
43
58
|
});
|
|
44
59
|
}
|
|
45
60
|
function i(...n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combination.js","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["import { link } from '../_link';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\ntype StreamValue<T> = T extends Stream<infer Value> ? Value : never;\ntype StreamValues<T extends readonly Stream<unknown>[]> = { [Key in keyof T]: StreamValue<T[Key]> };\n\nexport function merge<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n let completed = 0;\n const subscriptions: Subscription[] = [];\n\n for (const source of sources) {\n const subscription = link(\n source,\n {\n complete() {\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n subscriptions.push(subscription);\n\n if (signal.aborted) break;\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n\nexport function concat<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n let
|
|
1
|
+
{"version":3,"file":"combination.js","names":[],"sources":["../../src/operators/combination.ts"],"sourcesContent":["import { link } from '../_link.js';\nimport { stream } from '../core.js';\nimport type { Stream, Subscription } from '../types.js';\n\ntype StreamValue<T> = T extends Stream<infer Value> ? Value : never;\ntype StreamValues<T extends readonly Stream<unknown>[]> = { [Key in keyof T]: StreamValue<T[Key]> };\n\nexport function merge<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n let completed = 0;\n const subscriptions: Subscription[] = [];\n\n for (const source of sources) {\n const subscription = link(\n source,\n {\n complete() {\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n subscriptions.push(subscription);\n\n if (signal.aborted) break;\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n\nexport function concat<T>(...sources: Stream<T>[]): Stream<T> {\n return stream((sink, signal) => {\n let advancing = false;\n let current: Subscription | undefined;\n let index = 0;\n let requested = false;\n\n const subscribeNext = (): void => {\n if (signal.aborted) return;\n if (advancing) {\n requested = true;\n return;\n }\n\n advancing = true;\n try {\n do {\n requested = false;\n const source = sources[index++];\n\n if (!source) {\n sink.complete();\n return;\n }\n\n const subscription = link(\n source,\n {\n complete() {\n current = undefined;\n subscribeNext();\n },\n error: sink.error,\n next: sink.next,\n },\n signal,\n );\n\n current = subscription.closed ? undefined : subscription;\n } while (requested && !signal.aborted);\n } finally {\n advancing = false;\n }\n };\n\n subscribeNext();\n\n return () => current?.unsubscribe();\n });\n}\n\nexport function combineLatest<T extends readonly Stream<unknown>[]>(...sources: T): Stream<StreamValues<T>> {\n return stream((sink, signal) => {\n if (sources.length === 0) {\n sink.complete();\n\n return;\n }\n\n const values = new Array<unknown>(sources.length);\n const ready = new Array<boolean>(sources.length).fill(false);\n const subscriptions: Subscription[] = [];\n let completed = 0;\n\n for (const [index, source] of sources.entries()) {\n if (signal.aborted) break;\n\n const subscription = link(\n source,\n {\n complete() {\n if (!ready[index]) {\n sink.complete();\n\n return;\n }\n\n completed++;\n\n if (completed === sources.length) sink.complete();\n },\n error: sink.error,\n next(value) {\n values[index] = value;\n ready[index] = true;\n\n if (ready.every(Boolean)) sink.next([...values] as StreamValues<T>);\n },\n },\n signal,\n );\n\n subscriptions.push(subscription);\n }\n\n return () =>\n subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n });\n}\n"],"mappings":";;;AAOA,SAAgB,EAAS,GAAG,GAAiC;CAC3D,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,EAAQ,WAAW,GAAG;GACxB,EAAK,SAAS;GAEd;EACF;EAEA,IAAI,IAAY,GACV,IAAgC,CAAC;EAEvC,KAAK,IAAM,KAAU,GAAS;GAC5B,IAAM,IAAe,EACnB,GACA;IACE,WAAW;KAGT,AAFA,KAEI,MAAc,EAAQ,UAAQ,EAAK,SAAS;IAClD;IACA,OAAO,EAAK;IACZ,MAAM,EAAK;GACb,GACA,CACF;GAIA,IAFA,EAAc,KAAK,CAAY,GAE3B,EAAO,SAAS;EACtB;EAEA,aACE,EAAc,SAAS,MAAiB;GACtC,EAAa,YAAY;EAC3B,CAAC;CACL,CAAC;AACH;AAEA,SAAgB,EAAU,GAAG,GAAiC;CAC5D,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,IAAY,IACZ,GACA,IAAQ,GACR,IAAY,IAEV,UAA4B;GAC5B,OAAO,SACX;QAAI,GAAW;KACb,IAAY;KACZ;IACF;IAEA,IAAY;IACZ,IAAI;KACF,GAAG;MACD,IAAY;MACZ,IAAM,IAAS,EAAQ;MAEvB,IAAI,CAAC,GAAQ;OACX,EAAK,SAAS;OACd;MACF;MAEA,IAAM,IAAe,EACnB,GACA;OACE,WAAW;QAET,AADA,IAAU,KAAA,GACV,EAAc;OAChB;OACA,OAAO,EAAK;OACZ,MAAM,EAAK;MACb,GACA,CACF;MAEA,IAAU,EAAa,SAAS,KAAA,IAAY;KAC9C,SAAS,KAAa,CAAC,EAAO;IAChC,UAAU;KACR,IAAY;IACd;GA9BA;EA+BF;EAIA,OAFA,EAAc,SAED,GAAS,YAAY;CACpC,CAAC;AACH;AAEA,SAAgB,EAAoD,GAAG,GAAqC;CAC1G,OAAO,GAAQ,GAAM,MAAW;EAC9B,IAAI,EAAQ,WAAW,GAAG;GACxB,EAAK,SAAS;GAEd;EACF;EAEA,IAAM,IAAa,MAAe,EAAQ,MAAM,GAC1C,IAAY,MAAe,EAAQ,MAAM,CAAC,CAAC,KAAK,EAAK,GACrD,IAAgC,CAAC,GACnC,IAAY;EAEhB,KAAK,IAAM,CAAC,GAAO,MAAW,EAAQ,QAAQ,GAAG;GAC/C,IAAI,EAAO,SAAS;GAEpB,IAAM,IAAe,EACnB,GACA;IACE,WAAW;KACT,IAAI,CAAC,EAAM,IAAQ;MACjB,EAAK,SAAS;MAEd;KACF;KAIA,AAFA,KAEI,MAAc,EAAQ,UAAQ,EAAK,SAAS;IAClD;IACA,OAAO,EAAK;IACZ,KAAK,GAAO;KAIV,AAHA,EAAO,KAAS,GAChB,EAAM,KAAS,IAEX,EAAM,MAAM,OAAO,KAAG,EAAK,KAAK,CAAC,GAAG,CAAM,CAAoB;IACpE;GACF,GACA,CACF;GAEA,EAAc,KAAK,CAAY;EACjC;EAEA,aACE,EAAc,SAAS,MAAiB;GACtC,EAAa,YAAY;EAC3B,CAAC;CACL,CAAC;AACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../_numeric.cjs"),t=require("../
|
|
1
|
+
const e=require("../_numeric.cjs"),t=require("../_subscription.cjs"),n=require("../core.cjs"),r=require("../_scheduler.cjs");function i(...e){return n.stream(t=>{for(let n of e)t.next(n);t.complete()})}function a(e){return Symbol.asyncIterator in Object(e)?n.stream((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.reportUnhandledError)}catch(e){t.reportUnhandledError(e)}}}):typeof e.then==`function`?n.stream((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):n.stream((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 o(e,t){return n.stream(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function s(t){return e.assertDuration(t,`Interval duration`),n.stream(e=>{let n=0;return r.defaultScheduler.repeat(()=>e.next(n++),t)})}function c(t){return e.assertDuration(t.delay,`Timer delay`),t.interval!==void 0&&e.assertDuration(t.interval,`Timer interval`),n.stream(e=>{let n=0,i,a=r.defaultScheduler.delay(()=>{if(e.next(n++),t.interval===void 0){e.complete();return}i=r.defaultScheduler.repeat(()=>e.next(n++),t.interval)},t.delay);return()=>{a(),i?.()}})}exports.from=a,exports.fromEvent=o,exports.interval=s,exports.of=i,exports.timer=c;
|
|
2
2
|
//# sourceMappingURL=creation.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creation.cjs","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.cjs","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":"6HAWA,SAAgB,EAAM,GAAG,EAAwB,CAC/C,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAK,IAAM,KAAS,EAAQ,EAAK,KAAK,CAAK,EAC3C,EAAK,SAAS,CAChB,CAAC,CACH,CAEA,SAAgB,EAAQ,EAAgE,CAkDtF,OAjDI,OAAO,iBAAiB,OAAO,CAAM,EAChC,EAAA,QAAQ,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,EAAA,oBAAoB,CACxD,OAAS,EAAQ,CACf,EAAA,qBAAqB,CAAM,CAC7B,CACF,CACF,CAAC,EAGC,OAAQ,EAAsB,MAAS,WAClC,EAAA,QAAQ,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,EAAA,QAAQ,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,EACd,EAIA,EACW,CACX,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAM,EAAY,GAAmB,EAAK,KAAK,CAAK,EAIpD,OAFA,EAAO,iBAAiB,EAAM,CAAQ,MAEzB,EAAO,oBAAoB,EAAM,CAAQ,CACxD,CAAC,CACH,CAEA,SAAgB,EAAS,EAA+B,CAGtD,OAFA,EAAA,eAAe,EAAO,mBAAmB,EAElC,EAAA,OAAQ,GAAS,CACtB,IAAI,EAAQ,EAEZ,OAAO,EAAA,iBAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,CAAK,CAChE,CAAC,CACH,CAEA,SAAgB,EAAM,EAAuC,CAK3D,OAJA,EAAA,eAAe,EAAQ,MAAO,aAAa,EAEvC,EAAQ,WAAa,IAAA,IAAW,EAAA,eAAe,EAAQ,SAAU,gBAAgB,EAE9E,EAAA,OAAQ,GAAS,CACtB,IAAI,EAAQ,EACR,EACE,EAAc,EAAA,iBAAiB,UAAY,CAG/C,GAFA,EAAK,KAAK,GAAO,EAEb,EAAQ,WAAa,IAAA,GAAW,CAClC,EAAK,SAAS,EAEd,MACF,CAEA,EAAiB,EAAA,iBAAiB,WAAa,EAAK,KAAK,GAAO,EAAG,EAAQ,QAAQ,CACrF,EAAG,EAAQ,KAAK,EAEhB,UAAa,CACX,EAAY,EACZ,IAAiB,CACnB,CACF,CAAC,CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../src/operators/creation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"creation.d.ts","sourceRoot":"","sources":["../../src/operators/creation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAK/C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAyEtF;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,KAAK,EACjC,MAAM,EAAE;IACN,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;CACvE,EACD,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,CAAC,CAAC,CAQX;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAQtD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAyB3D"}
|
|
@@ -1,39 +1,45 @@
|
|
|
1
1
|
import { assertDuration as e } from "../_numeric.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { reportUnhandledError as t } from "../_subscription.js";
|
|
3
|
+
import { stream as n } from "../core.js";
|
|
4
|
+
import { defaultScheduler as r } from "../_scheduler.js";
|
|
4
5
|
//#region src/operators/creation.ts
|
|
5
|
-
function
|
|
6
|
-
return
|
|
6
|
+
function i(...e) {
|
|
7
|
+
return n((t) => {
|
|
7
8
|
for (let n of e) t.next(n);
|
|
8
9
|
t.complete();
|
|
9
10
|
});
|
|
10
11
|
}
|
|
11
|
-
function
|
|
12
|
-
return Symbol.asyncIterator in Object(e) ?
|
|
13
|
-
let
|
|
12
|
+
function a(e) {
|
|
13
|
+
return Symbol.asyncIterator in Object(e) ? n((n, r) => {
|
|
14
|
+
let i = e[Symbol.asyncIterator]();
|
|
14
15
|
return (async () => {
|
|
15
16
|
try {
|
|
16
|
-
for (; !
|
|
17
|
-
let e = await
|
|
17
|
+
for (; !r.aborted;) {
|
|
18
|
+
let e = await i.next();
|
|
18
19
|
if (e.done) {
|
|
19
|
-
|
|
20
|
+
n.complete();
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
+
n.next(e.value);
|
|
23
24
|
}
|
|
24
25
|
} catch (e) {
|
|
25
|
-
|
|
26
|
+
r.aborted || n.error(e);
|
|
26
27
|
}
|
|
27
28
|
})(), () => {
|
|
28
|
-
|
|
29
|
+
try {
|
|
30
|
+
let e = i.return?.();
|
|
31
|
+
e && e.catch(t);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
t(e);
|
|
34
|
+
}
|
|
29
35
|
};
|
|
30
|
-
}) : typeof e.then == "function" ?
|
|
36
|
+
}) : typeof e.then == "function" ? n((t, n) => {
|
|
31
37
|
e.then((e) => {
|
|
32
38
|
n.aborted || (t.next(e), t.complete());
|
|
33
39
|
}, (e) => {
|
|
34
40
|
n.aborted || t.error(e);
|
|
35
41
|
});
|
|
36
|
-
}) :
|
|
42
|
+
}) : n((t, n) => {
|
|
37
43
|
let r = e[Symbol.iterator]();
|
|
38
44
|
try {
|
|
39
45
|
for (; !n.aborted;) {
|
|
@@ -52,33 +58,33 @@ function i(e) {
|
|
|
52
58
|
};
|
|
53
59
|
});
|
|
54
60
|
}
|
|
55
|
-
function
|
|
56
|
-
return
|
|
57
|
-
let r = (e) =>
|
|
58
|
-
return e.addEventListener(
|
|
61
|
+
function o(e, t) {
|
|
62
|
+
return n((n) => {
|
|
63
|
+
let r = (e) => n.next(e);
|
|
64
|
+
return e.addEventListener(t, r), () => e.removeEventListener(t, r);
|
|
59
65
|
});
|
|
60
66
|
}
|
|
61
|
-
function
|
|
62
|
-
return e(
|
|
63
|
-
let
|
|
64
|
-
return
|
|
67
|
+
function s(t) {
|
|
68
|
+
return e(t, "Interval duration"), n((e) => {
|
|
69
|
+
let n = 0;
|
|
70
|
+
return r.repeat(() => e.next(n++), t);
|
|
65
71
|
});
|
|
66
72
|
}
|
|
67
|
-
function
|
|
68
|
-
return e(
|
|
69
|
-
let
|
|
70
|
-
if (e.next(
|
|
73
|
+
function c(t) {
|
|
74
|
+
return e(t.delay, "Timer delay"), t.interval !== void 0 && e(t.interval, "Timer interval"), n((e) => {
|
|
75
|
+
let n = 0, i, a = r.delay(() => {
|
|
76
|
+
if (e.next(n++), t.interval === void 0) {
|
|
71
77
|
e.complete();
|
|
72
78
|
return;
|
|
73
79
|
}
|
|
74
|
-
i =
|
|
75
|
-
},
|
|
80
|
+
i = r.repeat(() => e.next(n++), t.interval);
|
|
81
|
+
}, t.delay);
|
|
76
82
|
return () => {
|
|
77
83
|
a(), i?.();
|
|
78
84
|
};
|
|
79
85
|
});
|
|
80
86
|
}
|
|
81
87
|
//#endregion
|
|
82
|
-
export {
|
|
88
|
+
export { a as from, o as fromEvent, s as interval, i as of, c as timer };
|
|
83
89
|
|
|
84
90
|
//# 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":";;;;;AAWA,SAAgB,EAAM,GAAG,GAAwB;CAC/C,OAAO,GAAQ,MAAS;EACtB,KAAK,IAAM,KAAS,GAAQ,EAAK,KAAK,CAAK;EAC3C,EAAK,SAAS;CAChB,CAAC;AACH;AAEA,SAAgB,EAAQ,GAAgE;CAkDtF,OAjDI,OAAO,iBAAiB,OAAO,CAAM,IAChC,GAAQ,GAAM,MAAW;EAC9B,IAAM,IAAY,EAA4B,OAAO,cAAc,CAAC;EAoBpE,QAlBM,YAAY;GAChB,IAAI;IACF,OAAO,CAAC,EAAO,UAAS;KACtB,IAAM,IAAS,MAAM,EAAS,KAAK;KAEnC,IAAI,EAAO,MAAM;MACf,EAAK,SAAS;MAEd;KACF;KAEA,EAAK,KAAK,EAAO,KAAK;IACxB;GACF,SAAS,GAAQ;IACf,AAAK,EAAO,WAAS,EAAK,MAAM,CAAM;GACxC;EACF,EAAA,CAAG,SAEU;GACX,IAAI;IACF,IAAM,IAAW,EAAS,SAAS;IACnC,AAAI,KAAU,EAAc,MAAM,CAAoB;GACxD,SAAS,GAAQ;IACf,EAAqB,CAAM;GAC7B;EACF;CACF,CAAC,IAGC,OAAQ,EAAsB,QAAS,aAClC,GAAQ,GAAM,MAAW;EAC9B,EAA4B,MACzB,MAAU;GACT,AAAK,EAAO,YACV,EAAK,KAAK,CAAK,GACf,EAAK,SAAS;EAElB,IACC,MAAoB;GACnB,AAAK,EAAO,WAAS,EAAK,MAAM,CAAM;EACxC,CACF;CACF,CAAC,IAGI,GAAQ,GAAM,MAAW;EAC9B,IAAM,IAAY,EAAuB,OAAO,SAAS,CAAC;EAE1D,IAAI;GACF,OAAO,CAAC,EAAO,UAAS;IACtB,IAAM,IAAS,EAAS,KAAK;IAE7B,IAAI,EAAO,MAAM;KACf,EAAK,SAAS;KAEd;IACF;IAEA,EAAK,KAAK,EAAO,KAAK;GACxB;EACF,SAAS,GAAQ;GACf,EAAK,MAAM,CAAM;EACnB;EAEA,aAAa;GACX,EAAS,SAAS;EACpB;CACF,CAAC;AACH;AAEA,SAAgB,EACd,GAIA,GACW;CACX,OAAO,GAAQ,MAAS;EACtB,IAAM,KAAY,MAAmB,EAAK,KAAK,CAAK;EAIpD,OAFA,EAAO,iBAAiB,GAAM,CAAQ,SAEzB,EAAO,oBAAoB,GAAM,CAAQ;CACxD,CAAC;AACH;AAEA,SAAgB,EAAS,GAA+B;CAGtD,OAFA,EAAe,GAAO,mBAAmB,GAElC,GAAQ,MAAS;EACtB,IAAI,IAAQ;EAEZ,OAAO,EAAiB,aAAa,EAAK,KAAK,GAAO,GAAG,CAAK;CAChE,CAAC;AACH;AAEA,SAAgB,EAAM,GAAuC;CAK3D,OAJA,EAAe,EAAQ,OAAO,aAAa,GAEvC,EAAQ,aAAa,KAAA,KAAW,EAAe,EAAQ,UAAU,gBAAgB,GAE9E,GAAQ,MAAS;EACtB,IAAI,IAAQ,GACR,GACE,IAAc,EAAiB,YAAY;GAG/C,IAFA,EAAK,KAAK,GAAO,GAEb,EAAQ,aAAa,KAAA,GAAW;IAClC,EAAK,SAAS;IAEd;GACF;GAEA,IAAiB,EAAiB,aAAa,EAAK,KAAK,GAAO,GAAG,EAAQ,QAAQ;EACrF,GAAG,EAAQ,KAAK;EAEhB,aAAa;GAEX,AADA,EAAY,GACZ,IAAiB;EACnB;CACF,CAAC;AACH"}
|
|
@@ -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 a(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 o(e){return typeof e.aborted==`boolean`&&typeof e.addEventListener==`function`&&typeof e.removeEventListener==`function`}function s(e){return t=>n.stream((n,i)=>{let a,s,c=()=>{},l=()=>{a?.unsubscribe(),s?.unsubscribe(),n.complete()};if(o(e)){if(e.aborted){n.complete();return}e.addEventListener(`abort`,l,{once:!0}),c=()=>e.removeEventListener(`abort`,l)}else s=r.link(e,{error:n.error,next:l},i);return i.aborted||(a=r.link(t,{complete:n.complete,error:n.error,next:n.next},i)),()=>{c(),a?.unsubscribe(),s?.unsubscribe()}})}function c(t){return e.assertDuration(t,`Debounce duration`),e=>n.stream((n,a)=>{let o,s,c=!1,l=()=>{o=void 0,c&&(c=!1,n.next(s))},u=r.link(e,{complete(){o?.(),l(),n.complete()},error:n.error,next(e){s=e,c=!0,o?.(),o=i.defaultScheduler.delay(l,t)}},a);return()=>{o?.(),u.unsubscribe()}})}function l(a){return e.assertDuration(a,`Timeout duration`),e=>n.stream((n,o)=>{let s,c=()=>{s=i.defaultScheduler.delay(()=>n.error(new t.FluxTimeoutError(a)),a)};c();let l=r.link(e,{complete(){s(),n.complete()},error(e){s(),n.error(e)},next(e){s(),c(),n.next(e)}},o);return()=>{s(),l.unsubscribe()}})}exports.debounce=c,exports.take=a,exports.takeUntil=s,exports.timeout=l;
|
|
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,EAAQ,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,EAAc,EAA4D,CACjF,OACE,OAAQ,EAAsB,SAAY,WAC1C,OAAQ,EAAsB,kBAAqB,YACnD,OAAQ,EAAsB,qBAAwB,UAE1D,CAEA,SAAgB,EAAa,EAAyD,CACpF,MAAQ,IACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,MAA6B,CAAC,EAE5B,MAAuB,CAC3B,GAAoB,YAAY,EAChC,GAAsB,YAAY,EAClC,EAAK,SAAS,CAChB,EAEA,GAAI,EAAc,CAAQ,EAAG,CAC3B,GAAI,EAAS,QAAS,CACpB,EAAK,SAAS,EAEd,MACF,CAEA,EAAS,iBAAiB,QAAS,EAAU,CAAE,KAAM,EAAK,CAAC,EAC3D,MAA6B,EAAS,oBAAoB,QAAS,CAAQ,CAC7E,KACE,GAAuB,EAAA,KAAK,EAAU,CAAE,MAAO,EAAK,MAAO,KAAM,CAAS,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,EAAY,EAAkC,CAG5D,OAFA,EAAA,eAAe,EAAU,mBAAmB,EAEpC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EACA,EACA,EAAa,GAEX,MAAoB,CACxB,EAAS,IAAA,GAEJ,IAEL,EAAa,GACb,EAAK,KAAK,CAAY,EACxB,EAEM,EAAe,EAAA,KACnB,EACA,CACE,UAAW,CACT,IAAS,EACT,EAAM,EACN,EAAK,SAAS,CAChB,EACA,MAAO,EAAK,MACZ,KAAK,EAAO,CACV,EAAU,EACV,EAAa,GACb,IAAS,EACT,EAAS,EAAA,iBAAiB,MAAM,EAAO,CAAQ,CACjD,CACF,EACA,CACF,EAEA,UAAa,CACX,IAAS,EACT,EAAa,YAAY,CAC3B,CACF,CAAC,CACL,CAEA,SAAgB,EAAW,EAAkC,CAG3D,OAFA,EAAA,eAAe,EAAU,kBAAkB,EAEnC,GACN,EAAA,QAAQ,EAAM,IAAW,CACvB,IAAI,EAEE,MAAoB,CACxB,EAAS,EAAA,iBAAiB,UAAY,EAAK,MAAM,IAAI,EAAA,iBAAiB,CAAQ,CAAC,EAAG,CAAQ,CAC5F,EAEA,EAAM,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,EAAM,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,54 +1,57 @@
|
|
|
1
1
|
import { assertDuration as e, assertNonNegativeInteger as t } from "../_numeric.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { FluxTimeoutError as n } from "../errors.js";
|
|
3
|
+
import { stream as r } from "../core.js";
|
|
4
|
+
import { link as i } from "../_link.js";
|
|
5
5
|
import { defaultScheduler as a } from "../_scheduler.js";
|
|
6
6
|
//#region src/operators/filtering.ts
|
|
7
7
|
function o(e) {
|
|
8
|
-
return t(e, "take count"), (t) =>
|
|
8
|
+
return t(e, "take count"), (t) => r((n, r) => {
|
|
9
9
|
if (e === 0) {
|
|
10
10
|
n.complete();
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
13
|
let a = 0, o = {};
|
|
14
|
-
return o.current =
|
|
14
|
+
return o.current = i(t, {
|
|
15
15
|
complete: n.complete,
|
|
16
16
|
error: n.error,
|
|
17
17
|
next(t) {
|
|
18
18
|
n.next(t), a++, a === e && (n.complete(), o.current?.unsubscribe());
|
|
19
19
|
}
|
|
20
|
-
},
|
|
20
|
+
}, r), () => o.current?.unsubscribe();
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
function s(e) {
|
|
24
|
-
return
|
|
25
|
-
|
|
24
|
+
return typeof e.aborted == "boolean" && typeof e.addEventListener == "function" && typeof e.removeEventListener == "function";
|
|
25
|
+
}
|
|
26
|
+
function c(e) {
|
|
27
|
+
return (t) => r((n, r) => {
|
|
28
|
+
let a, o, c = () => {}, l = () => {
|
|
26
29
|
a?.unsubscribe(), o?.unsubscribe(), n.complete();
|
|
27
30
|
};
|
|
28
|
-
if (e
|
|
31
|
+
if (s(e)) {
|
|
29
32
|
if (e.aborted) {
|
|
30
33
|
n.complete();
|
|
31
34
|
return;
|
|
32
35
|
}
|
|
33
|
-
e.addEventListener("abort",
|
|
34
|
-
} else o =
|
|
36
|
+
e.addEventListener("abort", l, { once: !0 }), c = () => e.removeEventListener("abort", l);
|
|
37
|
+
} else o = i(e, {
|
|
35
38
|
error: n.error,
|
|
36
|
-
next:
|
|
37
|
-
},
|
|
38
|
-
return
|
|
39
|
+
next: l
|
|
40
|
+
}, r);
|
|
41
|
+
return r.aborted || (a = i(t, {
|
|
39
42
|
complete: n.complete,
|
|
40
43
|
error: n.error,
|
|
41
44
|
next: n.next
|
|
42
|
-
},
|
|
43
|
-
|
|
45
|
+
}, r)), () => {
|
|
46
|
+
c(), a?.unsubscribe(), o?.unsubscribe();
|
|
44
47
|
};
|
|
45
48
|
});
|
|
46
49
|
}
|
|
47
|
-
function
|
|
48
|
-
return e(t, "Debounce duration"), (e) =>
|
|
50
|
+
function l(t) {
|
|
51
|
+
return e(t, "Debounce duration"), (e) => r((n, r) => {
|
|
49
52
|
let o, s, c = !1, l = () => {
|
|
50
53
|
o = void 0, c && (c = !1, n.next(s));
|
|
51
|
-
}, u =
|
|
54
|
+
}, u = i(e, {
|
|
52
55
|
complete() {
|
|
53
56
|
o?.(), l(), n.complete();
|
|
54
57
|
},
|
|
@@ -56,27 +59,27 @@ function c(t) {
|
|
|
56
59
|
next(e) {
|
|
57
60
|
s = e, c = !0, o?.(), o = a.delay(l, t);
|
|
58
61
|
}
|
|
59
|
-
},
|
|
62
|
+
}, r);
|
|
60
63
|
return () => {
|
|
61
64
|
o?.(), u.unsubscribe();
|
|
62
65
|
};
|
|
63
66
|
});
|
|
64
67
|
}
|
|
65
|
-
function
|
|
66
|
-
return e(t, "Timeout duration"), (e) =>
|
|
68
|
+
function u(t) {
|
|
69
|
+
return e(t, "Timeout duration"), (e) => r((r, o) => {
|
|
67
70
|
let s, c = () => {
|
|
68
|
-
s = a.delay(() =>
|
|
71
|
+
s = a.delay(() => r.error(new n(t)), t);
|
|
69
72
|
};
|
|
70
73
|
c();
|
|
71
|
-
let l =
|
|
74
|
+
let l = i(e, {
|
|
72
75
|
complete() {
|
|
73
|
-
s(),
|
|
76
|
+
s(), r.complete();
|
|
74
77
|
},
|
|
75
78
|
error(e) {
|
|
76
|
-
s(),
|
|
79
|
+
s(), r.error(e);
|
|
77
80
|
},
|
|
78
81
|
next(e) {
|
|
79
|
-
s(), c(),
|
|
82
|
+
s(), c(), r.next(e);
|
|
80
83
|
}
|
|
81
84
|
}, o);
|
|
82
85
|
return () => {
|
|
@@ -85,6 +88,6 @@ function l(t) {
|
|
|
85
88
|
});
|
|
86
89
|
}
|
|
87
90
|
//#endregion
|
|
88
|
-
export {
|
|
91
|
+
export { l as debounce, o as take, c as takeUntil, u as timeout };
|
|
89
92
|
|
|
90
93
|
//# 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":";;;;;;AAOA,SAAgB,EAAQ,GAA+B;CAGrD,OAFA,EAAyB,GAAO,YAAY,IAEpC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,MAAU,GAAG;GACf,EAAK,SAAS;GAEd;EACF;EAEA,IAAI,IAAO,GACL,IAA8C,CAAC;EAoBrD,OAlBA,EAAgB,UAAU,EACxB,GACA;GACE,UAAU,EAAK;GACf,OAAO,EAAK;GACZ,KAAK,GAAO;IAIV,AAHA,EAAK,KAAK,CAAK,GACf,KAEI,MAAS,MACX,EAAK,SAAS,GACd,EAAgB,SAAS,YAAY;GAEzC;EACF,GACA,CACF,SAEa,EAAgB,SAAS,YAAY;CACpD,CAAC;AACL;AAEA,SAAS,EAAc,GAA4D;CACjF,OACE,OAAQ,EAAsB,WAAY,aAC1C,OAAQ,EAAsB,oBAAqB,cACnD,OAAQ,EAAsB,uBAAwB;AAE1D;AAEA,SAAgB,EAAa,GAAyD;CACpF,QAAQ,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GACA,GACA,UAA6B,CAAC,GAE5B,UAAuB;GAG3B,AAFA,GAAoB,YAAY,GAChC,GAAsB,YAAY,GAClC,EAAK,SAAS;EAChB;EAEA,IAAI,EAAc,CAAQ,GAAG;GAC3B,IAAI,EAAS,SAAS;IACpB,EAAK,SAAS;IAEd;GACF;GAGA,AADA,EAAS,iBAAiB,SAAS,GAAU,EAAE,MAAM,GAAK,CAAC,GAC3D,UAA6B,EAAS,oBAAoB,SAAS,CAAQ;EAC7E,OACE,IAAuB,EAAK,GAAU;GAAE,OAAO,EAAK;GAAO,MAAM;EAAS,GAAG,CAAM;EAerF,OAZK,EAAO,YACV,IAAqB,EACnB,GACA;GACE,UAAU,EAAK;GACf,OAAO,EAAK;GACZ,MAAM,EAAK;EACb,GACA,CACF,UAGW;GAGX,AAFA,EAAe,GACf,GAAoB,YAAY,GAChC,GAAsB,YAAY;EACpC;CACF,CAAC;AACL;AAEA,SAAgB,EAAY,GAAkC;CAG5D,OAFA,EAAe,GAAU,mBAAmB,IAEpC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GACA,GACA,IAAa,IAEX,UAAoB;GACxB,IAAS,KAAA,GAEJ,MAEL,IAAa,IACb,EAAK,KAAK,CAAY;EACxB,GAEM,IAAe,EACnB,GACA;GACE,WAAW;IAGT,AAFA,IAAS,GACT,EAAM,GACN,EAAK,SAAS;GAChB;GACA,OAAO,EAAK;GACZ,KAAK,GAAO;IAIV,AAHA,IAAU,GACV,IAAa,IACb,IAAS,GACT,IAAS,EAAiB,MAAM,GAAO,CAAQ;GACjD;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,IAAS,GACT,EAAa,YAAY;EAC3B;CACF,CAAC;AACL;AAEA,SAAgB,EAAW,GAAkC;CAG3D,OAFA,EAAe,GAAU,kBAAkB,IAEnC,MACN,GAAQ,GAAM,MAAW;EACvB,IAAI,GAEE,UAAoB;GACxB,IAAS,EAAiB,YAAY,EAAK,MAAM,IAAI,EAAiB,CAAQ,CAAC,GAAG,CAAQ;EAC5F;EAEA,EAAM;EAEN,IAAM,IAAe,EACnB,GACA;GACE,WAAW;IAET,AADA,EAAO,GACP,EAAK,SAAS;GAChB;GACA,MAAM,GAAQ;IAEZ,AADA,EAAO,GACP,EAAK,MAAM,CAAM;GACnB;GACA,KAAK,GAAO;IAGV,AAFA,EAAO,GACP,EAAM,GACN,EAAK,KAAK,CAAK;GACjB;EACF,GACA,CACF;EAEA,aAAa;GAEX,AADA,EAAO,GACP,EAAa,YAAY;EAC3B;CACF,CAAC;AACL"}
|