@vielzeug/flux 2.3.3 → 2.4.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 +1 -1
- package/dist/_subscription.cjs +1 -1
- package/dist/_subscription.cjs.map +1 -1
- package/dist/_subscription.d.ts.map +1 -1
- package/dist/_subscription.js +1 -1
- package/dist/_subscription.js.map +1 -1
- package/dist/adapters/courier.cjs.map +1 -1
- package/dist/adapters/courier.d.ts +2 -29
- package/dist/adapters/courier.d.ts.map +1 -1
- package/dist/adapters/courier.js.map +1 -1
- package/dist/adapters/ripple.cjs +1 -1
- package/dist/adapters/ripple.cjs.map +1 -1
- package/dist/adapters/ripple.js +27 -24
- package/dist/adapters/ripple.js.map +1 -1
- package/dist/channel.cjs +1 -1
- package/dist/channel.cjs.map +1 -1
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +13 -5
- package/dist/channel.js.map +1 -1
- package/dist/errors.cjs +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +10 -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 +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/operators/creation.cjs +1 -1
- package/dist/operators/creation.cjs.map +1 -1
- package/dist/operators/creation.d.ts +1 -4
- package/dist/operators/creation.d.ts.map +1 -1
- package/dist/operators/creation.js +2 -2
- 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 +2 -8
- package/dist/operators/filtering.d.ts.map +1 -1
- package/dist/operators/filtering.js +4 -4
- 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 +6 -3
- package/dist/operators/transformation.d.ts.map +1 -1
- package/dist/operators/transformation.js +42 -52
- 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 +3 -1
- package/dist/operators/utility.d.ts.map +1 -1
- package/dist/operators/utility.js +44 -37
- package/dist/operators/utility.js.map +1 -1
- package/package.json +9 -9
- package/dist/_dev.cjs +0 -2
- package/dist/_dev.cjs.map +0 -1
- package/dist/_dev.js +0 -6
- package/dist/_dev.js.map +0 -1
package/README.md
CHANGED
package/dist/_subscription.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function t(t,n){let r=typeof t==`function`?{next:t}:t,i=new AbortController,a=!1,o,s=()=>{if(!a){a=!0,i.abort(),n?.removeEventListener(`abort`,s);try{o?.()}catch(t){e(t)}}};return n?.aborted?s():n?.addEventListener(`abort`,s,{once:!0}),{add:t=>{if(t){if(a){try{t()}catch(t){e(t)}return}o=t}},signal:i.signal,sink:{complete(){if(!a){try{r.complete?.()}catch(t){e(t)}s()}},error(t){if(!a){if(r.error)try{r.error(t)}catch(t){e(t)}else e(t);s()}},next(t){if(!a)try{r.next(t)}catch(t){s(),e(t)}}},subscription:{get closed(){return a},[Symbol.dispose]:s,unsubscribe:s}}}exports.createSubscription=t;
|
|
1
|
+
function e(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function t(t,n){let r=typeof t==`function`?{next:t}:t,i=new AbortController,a=!1,o,s=()=>{if(!a){a=!0,i.abort(),n?.removeEventListener(`abort`,s);try{o?.()}catch(t){e(t)}}};return n?.aborted?s():n?.addEventListener(`abort`,s,{once:!0}),{add:t=>{if(t){if(a){try{t()}catch(t){e(t)}return}o=t}},signal:i.signal,sink:{complete(){if(!a){try{r.complete?.()}catch(t){e(t)}s()}},error(t){if(!a){if(r.error)try{r.error(t)}catch(t){e(t)}else e(t);s()}},next(t){if(!a)try{r.next(t)}catch(t){s(),e(t)}}},subscription:{get closed(){return a},[Symbol.dispose]:s,unsubscribe:s}}}exports.createSubscription=t,exports.reportUnhandledError=e;
|
|
2
2
|
//# sourceMappingURL=_subscription.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_subscription.cjs","names":[],"sources":["../src/_subscription.ts"],"sourcesContent":["import type { Observer, Sink, Subscription, Teardown } from './types';\n\
|
|
1
|
+
{"version":3,"file":"_subscription.cjs","names":[],"sources":["../src/_subscription.ts"],"sourcesContent":["import type { Observer, Sink, Subscription, Teardown } from './types';\n\n/** @internal Reports an unhandled stream error through the platform's error reporting channel. */\nexport function reportUnhandledError(reason: unknown): void {\n const reportError = (globalThis as { reportError?: (value: unknown) => void }).reportError;\n\n if (reportError) {\n reportError(reason);\n\n return;\n }\n\n queueMicrotask(() => {\n throw reason;\n });\n}\n\nexport function createSubscription<T>(\n observerOrNext: Observer<T> | ((value: T) => void),\n signal?: AbortSignal,\n): { add(teardown: Teardown | undefined): void; signal: AbortSignal; sink: Sink<T>; subscription: Subscription } {\n const observer: Observer<T> = typeof observerOrNext === 'function' ? { next: observerOrNext } : observerOrNext;\n const controller = new AbortController();\n let closed = false;\n let teardown: Teardown | undefined;\n\n const unsubscribe = (): void => {\n if (closed) return;\n\n closed = true;\n controller.abort();\n signal?.removeEventListener('abort', unsubscribe);\n\n try {\n teardown?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n };\n\n const sink: Sink<T> = {\n complete(): void {\n if (closed) return;\n\n try {\n observer.complete?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n error(reason: unknown): void {\n if (closed) return;\n\n if (observer.error) {\n try {\n observer.error(reason);\n } catch (callbackError) {\n reportUnhandledError(callbackError);\n }\n } else {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n next(value: T): void {\n if (closed) return;\n\n try {\n observer.next(value);\n } catch (reason) {\n unsubscribe();\n reportUnhandledError(reason);\n }\n },\n };\n\n const add = (nextTeardown: Teardown | undefined): void => {\n if (!nextTeardown) return;\n\n if (closed) {\n try {\n nextTeardown();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n return;\n }\n\n teardown = nextTeardown;\n };\n\n if (signal?.aborted) {\n unsubscribe();\n } else {\n signal?.addEventListener('abort', unsubscribe, { once: true });\n }\n\n return {\n add,\n signal: controller.signal,\n sink,\n subscription: {\n get closed(): boolean {\n return closed;\n },\n [Symbol.dispose]: unsubscribe,\n unsubscribe,\n },\n };\n}\n"],"mappings":"AAGA,SAAgB,EAAqB,EAAuB,CAC1D,IAAM,EAAe,WAA0D,YAE/E,GAAI,EAAa,CACf,EAAY,CAAM,EAElB,MACF,CAEA,mBAAqB,CACnB,MAAM,CACR,CAAC,CACH,CAEA,SAAgB,EACd,EACA,EAC+G,CAC/G,IAAM,EAAwB,OAAO,GAAmB,WAAa,CAAE,KAAM,CAAe,EAAI,EAC1F,EAAa,IAAI,gBACnB,EAAS,GACT,EAEE,MAA0B,CAC1B,MAIJ,CAFA,EAAS,GACT,EAAW,MAAM,EACjB,GAAQ,oBAAoB,QAAS,CAAW,EAEhD,GAAI,CACF,IAAW,CACb,OAAS,EAAQ,CACf,EAAqB,CAAM,CAC7B,CANgD,CAOlD,EAiEA,OANI,GAAQ,QACV,EAAY,EAEZ,GAAQ,iBAAiB,QAAS,EAAa,CAAE,KAAM,EAAK,CAAC,EAGxD,CACL,IAvBW,GAA6C,CACnD,KAEL,IAAI,EAAQ,CACV,GAAI,CACF,EAAa,CACf,OAAS,EAAQ,CACf,EAAqB,CAAM,CAC7B,CAEA,MACF,CAEA,EAAW,CAFX,CAGF,EAUE,OAAQ,EAAW,OACnB,MAjEA,UAAiB,CACX,MAEJ,IAAI,CACF,EAAS,WAAW,CACtB,OAAS,EAAQ,CACf,EAAqB,CAAM,CAC7B,CAEA,EAAY,CAFZ,CAGF,EAEA,MAAM,EAAuB,CACvB,MAEJ,IAAI,EAAS,MACX,GAAI,CACF,EAAS,MAAM,CAAM,CACvB,OAAS,EAAe,CACtB,EAAqB,CAAa,CACpC,MAEA,EAAqB,CAAM,EAG7B,EAAY,CAHiB,CAI/B,EAEA,KAAK,EAAgB,CACf,MAEJ,GAAI,CACF,EAAS,KAAK,CAAK,CACrB,OAAS,EAAQ,CACf,EAAY,EACZ,EAAqB,CAAM,CAC7B,CACF,CA4BA,EACA,aAAc,CACZ,IAAI,QAAkB,CACpB,OAAO,CACT,GACC,OAAO,SAAU,EAClB,aACF,CACF,CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_subscription.d.ts","sourceRoot":"","sources":["../src/_subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"_subscription.d.ts","sourceRoot":"","sources":["../src/_subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiBtE,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,EAClD,MAAM,CAAC,EAAE,WAAW,GACnB;IAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,CA+F/G"}
|
package/dist/_subscription.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_subscription.js","names":[],"sources":["../src/_subscription.ts"],"sourcesContent":["import type { Observer, Sink, Subscription, Teardown } from './types';\n\
|
|
1
|
+
{"version":3,"file":"_subscription.js","names":[],"sources":["../src/_subscription.ts"],"sourcesContent":["import type { Observer, Sink, Subscription, Teardown } from './types';\n\n/** @internal Reports an unhandled stream error through the platform's error reporting channel. */\nexport function reportUnhandledError(reason: unknown): void {\n const reportError = (globalThis as { reportError?: (value: unknown) => void }).reportError;\n\n if (reportError) {\n reportError(reason);\n\n return;\n }\n\n queueMicrotask(() => {\n throw reason;\n });\n}\n\nexport function createSubscription<T>(\n observerOrNext: Observer<T> | ((value: T) => void),\n signal?: AbortSignal,\n): { add(teardown: Teardown | undefined): void; signal: AbortSignal; sink: Sink<T>; subscription: Subscription } {\n const observer: Observer<T> = typeof observerOrNext === 'function' ? { next: observerOrNext } : observerOrNext;\n const controller = new AbortController();\n let closed = false;\n let teardown: Teardown | undefined;\n\n const unsubscribe = (): void => {\n if (closed) return;\n\n closed = true;\n controller.abort();\n signal?.removeEventListener('abort', unsubscribe);\n\n try {\n teardown?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n };\n\n const sink: Sink<T> = {\n complete(): void {\n if (closed) return;\n\n try {\n observer.complete?.();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n error(reason: unknown): void {\n if (closed) return;\n\n if (observer.error) {\n try {\n observer.error(reason);\n } catch (callbackError) {\n reportUnhandledError(callbackError);\n }\n } else {\n reportUnhandledError(reason);\n }\n\n unsubscribe();\n },\n\n next(value: T): void {\n if (closed) return;\n\n try {\n observer.next(value);\n } catch (reason) {\n unsubscribe();\n reportUnhandledError(reason);\n }\n },\n };\n\n const add = (nextTeardown: Teardown | undefined): void => {\n if (!nextTeardown) return;\n\n if (closed) {\n try {\n nextTeardown();\n } catch (reason) {\n reportUnhandledError(reason);\n }\n\n return;\n }\n\n teardown = nextTeardown;\n };\n\n if (signal?.aborted) {\n unsubscribe();\n } else {\n signal?.addEventListener('abort', unsubscribe, { once: true });\n }\n\n return {\n add,\n signal: controller.signal,\n sink,\n subscription: {\n get closed(): boolean {\n return closed;\n },\n [Symbol.dispose]: unsubscribe,\n unsubscribe,\n },\n };\n}\n"],"mappings":";AAGA,SAAgB,EAAqB,GAAuB;CAC1D,IAAM,IAAe,WAA0D;CAE/E,IAAI,GAAa;EACf,EAAY,CAAM;EAElB;CACF;CAEA,qBAAqB;EACnB,MAAM;CACR,CAAC;AACH;AAEA,SAAgB,EACd,GACA,GAC+G;CAC/G,IAAM,IAAwB,OAAO,KAAmB,aAAa,EAAE,MAAM,EAAe,IAAI,GAC1F,IAAa,IAAI,gBAAgB,GACnC,IAAS,IACT,GAEE,UAA0B;EAC1B,QAIJ;GAFA,IAAS,IACT,EAAW,MAAM,GACjB,GAAQ,oBAAoB,SAAS,CAAW;GAEhD,IAAI;IACF,IAAW;GACb,SAAS,GAAQ;IACf,EAAqB,CAAM;GAC7B;EANgD;CAOlD;CAiEA,OANI,GAAQ,UACV,EAAY,IAEZ,GAAQ,iBAAiB,SAAS,GAAa,EAAE,MAAM,GAAK,CAAC,GAGxD;EACL,MAvBW,MAA6C;GACnD,OAEL;QAAI,GAAQ;KACV,IAAI;MACF,EAAa;KACf,SAAS,GAAQ;MACf,EAAqB,CAAM;KAC7B;KAEA;IACF;IAEA,IAAW;GAFX;EAGF;EAUE,QAAQ,EAAW;EACnB;GAjEA,WAAiB;IACX,QAEJ;SAAI;MACF,EAAS,WAAW;KACtB,SAAS,GAAQ;MACf,EAAqB,CAAM;KAC7B;KAEA,EAAY;IAFZ;GAGF;GAEA,MAAM,GAAuB;IACvB,QAEJ;SAAI,EAAS,OACX,IAAI;MACF,EAAS,MAAM,CAAM;KACvB,SAAS,GAAe;MACtB,EAAqB,CAAa;KACpC;UAEA,EAAqB,CAAM;KAG7B,EAAY;IAHiB;GAI/B;GAEA,KAAK,GAAgB;IACf,QAEJ,IAAI;KACF,EAAS,KAAK,CAAK;IACrB,SAAS,GAAQ;KAEf,AADA,EAAY,GACZ,EAAqB,CAAM;IAC7B;GACF;EA4BA;EACA,cAAc;GACZ,IAAI,SAAkB;IACpB,OAAO;GACT;IACC,OAAO,UAAU;GAClB;EACF;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courier.cjs","names":[],"sources":["../../src/adapters/courier.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"courier.cjs","names":[],"sources":["../../src/adapters/courier.ts"],"sourcesContent":["import type { AsyncState, QueryCache, QueryDefinition } from '@vielzeug/courier';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\n\nexport function fromQuery<T>(cache: QueryCache, definition: QueryDefinition<T>): Stream<AsyncState<T> | null> {\n return stream((sink) => {\n const snapshot = () => cache.getSnapshot<T>(definition.key);\n\n sink.next(snapshot());\n\n return cache.subscribe(definition.key, () => sink.next(snapshot()));\n });\n}\n"],"mappings":"+BAIA,SAAgB,EAAa,EAAmB,EAA8D,CAC5G,OAAO,EAAA,OAAQ,GAAS,CACtB,IAAM,MAAiB,EAAM,YAAe,EAAW,GAAG,EAI1D,OAFA,EAAK,KAAK,EAAS,CAAC,EAEb,EAAM,UAAU,EAAW,QAAW,EAAK,KAAK,EAAS,CAAC,CAAC,CACpE,CAAC,CACH"}
|
|
@@ -1,31 +1,4 @@
|
|
|
1
|
+
import type { AsyncState, QueryCache, QueryDefinition } from '@vielzeug/courier';
|
|
1
2
|
import type { Stream } from '../types';
|
|
2
|
-
|
|
3
|
-
getSnapshot<T>(key: readonly unknown[]): T | null;
|
|
4
|
-
subscribe(key: readonly unknown[], onStoreChange: () => void): () => void;
|
|
5
|
-
};
|
|
6
|
-
type QueryDefinition = {
|
|
7
|
-
fetch: (...args: never[]) => Promise<unknown>;
|
|
8
|
-
key: readonly unknown[];
|
|
9
|
-
};
|
|
10
|
-
type QuerySnapshot<T> = {
|
|
11
|
-
readonly data: undefined;
|
|
12
|
-
readonly error: null;
|
|
13
|
-
readonly isFetching: boolean;
|
|
14
|
-
readonly status: 'loading';
|
|
15
|
-
readonly updatedAt: undefined;
|
|
16
|
-
} | {
|
|
17
|
-
readonly data: T;
|
|
18
|
-
readonly error: null;
|
|
19
|
-
readonly isFetching: boolean;
|
|
20
|
-
readonly status: 'success';
|
|
21
|
-
readonly updatedAt: number;
|
|
22
|
-
} | {
|
|
23
|
-
readonly data: T | undefined;
|
|
24
|
-
readonly error: Error;
|
|
25
|
-
readonly isFetching: false;
|
|
26
|
-
readonly status: 'error';
|
|
27
|
-
readonly updatedAt: number;
|
|
28
|
-
};
|
|
29
|
-
export declare function fromQuery<T extends QueryDefinition>(cache: QueryCache, definition: T): Stream<QuerySnapshot<Awaited<ReturnType<T['fetch']>>> | null>;
|
|
30
|
-
export {};
|
|
3
|
+
export declare function fromQuery<T>(cache: QueryCache, definition: QueryDefinition<T>): Stream<AsyncState<T> | null>;
|
|
31
4
|
//# sourceMappingURL=courier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courier.d.ts","sourceRoot":"","sources":["../../src/adapters/courier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"courier.d.ts","sourceRoot":"","sources":["../../src/adapters/courier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAQ5G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courier.js","names":[],"sources":["../../src/adapters/courier.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"courier.js","names":[],"sources":["../../src/adapters/courier.ts"],"sourcesContent":["import type { AsyncState, QueryCache, QueryDefinition } from '@vielzeug/courier';\nimport { stream } from '../core';\nimport type { Stream } from '../types';\n\nexport function fromQuery<T>(cache: QueryCache, definition: QueryDefinition<T>): Stream<AsyncState<T> | null> {\n return stream((sink) => {\n const snapshot = () => cache.getSnapshot<T>(definition.key);\n\n sink.next(snapshot());\n\n return cache.subscribe(definition.key, () => sink.next(snapshot()));\n });\n}\n"],"mappings":";;AAIA,SAAgB,EAAa,GAAmB,GAA8D;CAC5G,OAAO,GAAQ,MAAS;EACtB,IAAM,UAAiB,EAAM,YAAe,EAAW,GAAG;EAI1D,OAFA,EAAK,KAAK,EAAS,CAAC,GAEb,EAAM,UAAU,EAAW,WAAW,EAAK,KAAK,EAAS,CAAC,CAAC;CACpE,CAAC;AACH"}
|
package/dist/adapters/ripple.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../
|
|
1
|
+
const e=require("../_subscription.cjs"),t=require("../core.cjs");let n=require("@vielzeug/ripple");function r(e){return t.stream(t=>(t.next(e.value),e.subscribe(()=>t.next(e.value))))}function i(t,r){let i=(0,n.signal)(r.initial),a=new AbortController,o={},s=()=>{a.signal.aborted||(a.abort(),r.signal?.removeEventListener(`abort`,s),o.current?.unsubscribe())};return r.signal?.aborted&&a.abort(),o.current=t.subscribe({complete:s,error(t){if(r.onError)try{r.onError(t)}catch(t){e.reportUnhandledError(t)}else e.reportUnhandledError(t);s()},next(e){i.value=e}},{signal:a.signal}),a.signal.aborted||r.signal?.addEventListener(`abort`,s,{once:!0}),{get disposalSignal(){return a.signal},dispose:s,get disposed(){return a.signal.aborted},get signal(){return i},[Symbol.dispose]:s,get value(){return i.value}}}exports.fromSignal=r,exports.toSignal=i;
|
|
2
2
|
//# sourceMappingURL=ripple.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ripple.cjs","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\nimport {
|
|
1
|
+
{"version":3,"file":"ripple.cjs","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\nimport { reportUnhandledError } from '../_subscription';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\nexport type ToSignalOptions<T> = {\n initial: T;\n /** Called when the source stream errors. If omitted, the error is logged via `console.error` (dev-only) and the binding disposes — the signal freezes at its last value. */\n onError?: (reason: unknown) => void;\n signal?: AbortSignal;\n};\n\nexport type SignalBinding<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n readonly signal: Readable<T>;\n readonly value: T;\n};\n\nexport function fromSignal<T>(source: Readable<T>): Stream<T> {\n return stream((sink) => {\n sink.next(source.value);\n\n return source.subscribe(() => sink.next(source.value));\n });\n}\n\nexport function toSignal<T>(source: Stream<T>, options: ToSignalOptions<T>): SignalBinding<T> {\n const target = signal(options.initial);\n const controller = new AbortController();\n const subscriptionRef: { current?: Subscription } = {};\n\n const dispose = (): void => {\n if (controller.signal.aborted) return;\n\n controller.abort();\n options.signal?.removeEventListener('abort', dispose);\n subscriptionRef.current?.unsubscribe();\n };\n\n if (options.signal?.aborted) controller.abort();\n\n subscriptionRef.current = source.subscribe(\n {\n complete: dispose,\n error(reason) {\n if (options.onError) {\n try {\n options.onError(reason);\n } catch (callbackError) {\n reportUnhandledError(callbackError);\n }\n } else {\n reportUnhandledError(reason);\n }\n dispose();\n },\n next(value) {\n target.value = value;\n },\n },\n { signal: controller.signal },\n );\n\n if (!controller.signal.aborted) options.signal?.addEventListener('abort', dispose, { once: true });\n\n return {\n get disposalSignal(): AbortSignal {\n return controller.signal;\n },\n dispose,\n get disposed(): boolean {\n return controller.signal.aborted;\n },\n get signal(): Readable<T> {\n return target;\n },\n [Symbol.dispose]: dispose,\n get value(): T {\n return target.value;\n },\n };\n}\n"],"mappings":"mGAuBA,SAAgB,EAAc,EAAgC,CAC5D,OAAO,EAAA,OAAQ,IACb,EAAK,KAAK,EAAO,KAAK,EAEf,EAAO,cAAgB,EAAK,KAAK,EAAO,KAAK,CAAC,EACtD,CACH,CAEA,SAAgB,EAAY,EAAmB,EAA+C,CAC5F,IAAM,GAAA,EAAS,EAAA,OAAA,CAAO,EAAQ,OAAO,EAC/B,EAAa,IAAI,gBACjB,EAA8C,CAAC,EAE/C,MAAsB,CACtB,EAAW,OAAO,UAEtB,EAAW,MAAM,EACjB,EAAQ,QAAQ,oBAAoB,QAAS,CAAO,EACpD,EAAgB,SAAS,YAAY,EACvC,EA4BA,OA1BI,EAAQ,QAAQ,SAAS,EAAW,MAAM,EAE9C,EAAgB,QAAU,EAAO,UAC/B,CACE,SAAU,EACV,MAAM,EAAQ,CACZ,GAAI,EAAQ,QACV,GAAI,CACF,EAAQ,QAAQ,CAAM,CACxB,OAAS,EAAe,CACtB,EAAA,qBAAqB,CAAa,CACpC,MAEA,EAAA,qBAAqB,CAAM,EAE7B,EAAQ,CACV,EACA,KAAK,EAAO,CACV,EAAO,MAAQ,CACjB,CACF,EACA,CAAE,OAAQ,EAAW,MAAO,CAC9B,EAEK,EAAW,OAAO,SAAS,EAAQ,QAAQ,iBAAiB,QAAS,EAAS,CAAE,KAAM,EAAK,CAAC,EAE1F,CACL,IAAI,gBAA8B,CAChC,OAAO,EAAW,MACpB,EACA,UACA,IAAI,UAAoB,CACtB,OAAO,EAAW,OAAO,OAC3B,EACA,IAAI,QAAsB,CACxB,OAAO,CACT,GACC,OAAO,SAAU,EAClB,IAAI,OAAW,CACb,OAAO,EAAO,KAChB,CACF,CACF"}
|
package/dist/adapters/ripple.js
CHANGED
|
@@ -1,43 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../
|
|
3
|
-
import { signal as
|
|
1
|
+
import { reportUnhandledError as e } from "../_subscription.js";
|
|
2
|
+
import { stream as t } from "../core.js";
|
|
3
|
+
import { signal as n } from "@vielzeug/ripple";
|
|
4
4
|
//#region src/adapters/ripple.ts
|
|
5
|
-
function
|
|
6
|
-
return
|
|
5
|
+
function r(e) {
|
|
6
|
+
return t((t) => (t.next(e.value), e.subscribe(() => t.next(e.value))));
|
|
7
7
|
}
|
|
8
|
-
function
|
|
9
|
-
let
|
|
10
|
-
|
|
8
|
+
function i(t, r) {
|
|
9
|
+
let i = n(r.initial), a = new AbortController(), o = {}, s = () => {
|
|
10
|
+
a.signal.aborted || (a.abort(), r.signal?.removeEventListener("abort", s), o.current?.unsubscribe());
|
|
11
11
|
};
|
|
12
|
-
return
|
|
13
|
-
complete:
|
|
14
|
-
error(
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
} catch {
|
|
18
|
-
|
|
12
|
+
return r.signal?.aborted && a.abort(), o.current = t.subscribe({
|
|
13
|
+
complete: s,
|
|
14
|
+
error(t) {
|
|
15
|
+
if (r.onError) try {
|
|
16
|
+
r.onError(t);
|
|
17
|
+
} catch (t) {
|
|
18
|
+
e(t);
|
|
19
|
+
}
|
|
20
|
+
else e(t);
|
|
21
|
+
s();
|
|
19
22
|
},
|
|
20
23
|
next(e) {
|
|
21
|
-
|
|
24
|
+
i.value = e;
|
|
22
25
|
}
|
|
23
|
-
}, { signal:
|
|
26
|
+
}, { signal: a.signal }), a.signal.aborted || r.signal?.addEventListener("abort", s, { once: !0 }), {
|
|
24
27
|
get disposalSignal() {
|
|
25
|
-
return
|
|
28
|
+
return a.signal;
|
|
26
29
|
},
|
|
27
|
-
dispose:
|
|
30
|
+
dispose: s,
|
|
28
31
|
get disposed() {
|
|
29
|
-
return
|
|
32
|
+
return a.signal.aborted;
|
|
30
33
|
},
|
|
31
34
|
get signal() {
|
|
32
|
-
return
|
|
35
|
+
return i;
|
|
33
36
|
},
|
|
34
|
-
[Symbol.dispose]:
|
|
37
|
+
[Symbol.dispose]: s,
|
|
35
38
|
get value() {
|
|
36
|
-
return
|
|
39
|
+
return i.value;
|
|
37
40
|
}
|
|
38
41
|
};
|
|
39
42
|
}
|
|
40
43
|
//#endregion
|
|
41
|
-
export {
|
|
44
|
+
export { r as fromSignal, i as toSignal };
|
|
42
45
|
|
|
43
46
|
//# sourceMappingURL=ripple.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ripple.js","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\nimport {
|
|
1
|
+
{"version":3,"file":"ripple.js","names":[],"sources":["../../src/adapters/ripple.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nimport { signal } from '@vielzeug/ripple';\nimport { reportUnhandledError } from '../_subscription';\nimport { stream } from '../core';\nimport type { Stream, Subscription } from '../types';\n\nexport type ToSignalOptions<T> = {\n initial: T;\n /** Called when the source stream errors. If omitted, the error is logged via `console.error` (dev-only) and the binding disposes — the signal freezes at its last value. */\n onError?: (reason: unknown) => void;\n signal?: AbortSignal;\n};\n\nexport type SignalBinding<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n readonly signal: Readable<T>;\n readonly value: T;\n};\n\nexport function fromSignal<T>(source: Readable<T>): Stream<T> {\n return stream((sink) => {\n sink.next(source.value);\n\n return source.subscribe(() => sink.next(source.value));\n });\n}\n\nexport function toSignal<T>(source: Stream<T>, options: ToSignalOptions<T>): SignalBinding<T> {\n const target = signal(options.initial);\n const controller = new AbortController();\n const subscriptionRef: { current?: Subscription } = {};\n\n const dispose = (): void => {\n if (controller.signal.aborted) return;\n\n controller.abort();\n options.signal?.removeEventListener('abort', dispose);\n subscriptionRef.current?.unsubscribe();\n };\n\n if (options.signal?.aborted) controller.abort();\n\n subscriptionRef.current = source.subscribe(\n {\n complete: dispose,\n error(reason) {\n if (options.onError) {\n try {\n options.onError(reason);\n } catch (callbackError) {\n reportUnhandledError(callbackError);\n }\n } else {\n reportUnhandledError(reason);\n }\n dispose();\n },\n next(value) {\n target.value = value;\n },\n },\n { signal: controller.signal },\n );\n\n if (!controller.signal.aborted) options.signal?.addEventListener('abort', dispose, { once: true });\n\n return {\n get disposalSignal(): AbortSignal {\n return controller.signal;\n },\n dispose,\n get disposed(): boolean {\n return controller.signal.aborted;\n },\n get signal(): Readable<T> {\n return target;\n },\n [Symbol.dispose]: dispose,\n get value(): T {\n return target.value;\n },\n };\n}\n"],"mappings":";;;;AAuBA,SAAgB,EAAc,GAAgC;CAC5D,OAAO,GAAQ,OACb,EAAK,KAAK,EAAO,KAAK,GAEf,EAAO,gBAAgB,EAAK,KAAK,EAAO,KAAK,CAAC,EACtD;AACH;AAEA,SAAgB,EAAY,GAAmB,GAA+C;CAC5F,IAAM,IAAS,EAAO,EAAQ,OAAO,GAC/B,IAAa,IAAI,gBAAgB,GACjC,IAA8C,CAAC,GAE/C,UAAsB;EACtB,EAAW,OAAO,YAEtB,EAAW,MAAM,GACjB,EAAQ,QAAQ,oBAAoB,SAAS,CAAO,GACpD,EAAgB,SAAS,YAAY;CACvC;CA4BA,OA1BI,EAAQ,QAAQ,WAAS,EAAW,MAAM,GAE9C,EAAgB,UAAU,EAAO,UAC/B;EACE,UAAU;EACV,MAAM,GAAQ;GACZ,IAAI,EAAQ,SACV,IAAI;IACF,EAAQ,QAAQ,CAAM;GACxB,SAAS,GAAe;IACtB,EAAqB,CAAa;GACpC;QAEA,EAAqB,CAAM;GAE7B,EAAQ;EACV;EACA,KAAK,GAAO;GACV,EAAO,QAAQ;EACjB;CACF,GACA,EAAE,QAAQ,EAAW,OAAO,CAC9B,GAEK,EAAW,OAAO,WAAS,EAAQ,QAAQ,iBAAiB,SAAS,GAAS,EAAE,MAAM,GAAK,CAAC,GAE1F;EACL,IAAI,iBAA8B;GAChC,OAAO,EAAW;EACpB;EACA;EACA,IAAI,WAAoB;GACtB,OAAO,EAAW,OAAO;EAC3B;EACA,IAAI,SAAsB;GACxB,OAAO;EACT;GACC,OAAO,UAAU;EAClB,IAAI,QAAW;GACb,OAAO,EAAO;EAChB;CACF;AACF"}
|
package/dist/channel.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./_numeric.cjs"),t=require("./core.cjs");function n(t){let n=`initial`in t,r=t.replay??+!!n;if(e.assertNonNegativeInteger(r,`Channel replay`),n&&r===0)throw RangeError(`Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped`);return r}function r(e={}){let r=n(e),i=new AbortController,a=new Set,o=[];`initial`in e&&r>0&&o.push(e.initial);let s=t.stream(e=>{for(let t of o)e.next(t);
|
|
1
|
+
const e=require("./_numeric.cjs"),t=require("./core.cjs");function n(t){let n=`initial`in t,r=t.replay??+!!n;if(e.assertNonNegativeInteger(r,`Channel replay`),n&&r===0)throw RangeError(`Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped`);return r}function r(e={}){let r=n(e),i=new AbortController,a=new Set,o=[];`initial`in e&&r>0&&o.push(e.initial);let s=t.stream(e=>{if(i.signal.aborted){e.complete();return}for(let t of o)e.next(t);return a.add(e),()=>a.delete(e)}),c=()=>{if(!i.signal.aborted){i.abort();for(let e of[...a])e.complete();a.clear()}},l=!1,u=[],d=()=>{l=!0;try{for(;u.length>0;){let e=u.shift();r>0&&(o.length===r&&o.shift(),o.push(e));for(let t of[...a])t.next(e)}}finally{l=!1}};return{get disposalSignal(){return i.signal},dispose:c,get disposed(){return i.signal.aborted},send(e){i.signal.aborted||(u.push(e),l||d())},stream:s,[Symbol.dispose]:c}}exports.createChannel=r;
|
|
2
2
|
//# sourceMappingURL=channel.cjs.map
|
package/dist/channel.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.cjs","names":[],"sources":["../src/channel.ts"],"sourcesContent":["import { assertNonNegativeInteger } from './_numeric';\nimport { stream } from './core';\nimport type { Sink, Stream } from './types';\n\nexport type ChannelOptions<T> = {\n initial?: T;\n replay?: number;\n};\n\nexport type Channel<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n send(value: T): void;\n readonly stream: Stream<T>;\n};\n\nfunction replayCapacity<T>(options: ChannelOptions<T>): number {\n const hasInitial = 'initial' in options;\n const capacity = options.replay ?? (hasInitial ? 1 : 0);\n\n assertNonNegativeInteger(capacity, 'Channel replay');\n\n if (hasInitial && capacity === 0) {\n throw new RangeError(\n 'Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped',\n );\n }\n\n return capacity;\n}\n\n/** Channels own mutable multicast state; disposal is their only terminal event. */\nexport function createChannel<T>(options: ChannelOptions<T> = {}): Channel<T> {\n const capacity = replayCapacity(options);\n const controller = new AbortController();\n const listeners = new Set<Sink<T>>();\n const replay: T[] = [];\n\n if ('initial' in options && capacity > 0) replay.push(options.initial as T);\n\n const source = stream<T>((sink) => {\n
|
|
1
|
+
{"version":3,"file":"channel.cjs","names":[],"sources":["../src/channel.ts"],"sourcesContent":["import { assertNonNegativeInteger } from './_numeric';\nimport { stream } from './core';\nimport type { Sink, Stream } from './types';\n\nexport type ChannelOptions<T> = {\n initial?: T;\n replay?: number;\n};\n\nexport type Channel<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n send(value: T): void;\n readonly stream: Stream<T>;\n};\n\nfunction replayCapacity<T>(options: ChannelOptions<T>): number {\n const hasInitial = 'initial' in options;\n const capacity = options.replay ?? (hasInitial ? 1 : 0);\n\n assertNonNegativeInteger(capacity, 'Channel replay');\n\n if (hasInitial && capacity === 0) {\n throw new RangeError(\n 'Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped',\n );\n }\n\n return capacity;\n}\n\n/** Channels own mutable multicast state; disposal is their only terminal event. */\nexport function createChannel<T>(options: ChannelOptions<T> = {}): Channel<T> {\n const capacity = replayCapacity(options);\n const controller = new AbortController();\n const listeners = new Set<Sink<T>>();\n const replay: T[] = [];\n\n if ('initial' in options && capacity > 0) replay.push(options.initial as T);\n\n const source = stream<T>((sink) => {\n // Disposed channels complete new subscribers immediately without replaying\n // retained values — a late subscriber never observes stale state.\n if (controller.signal.aborted) {\n sink.complete();\n\n return;\n }\n\n for (const value of replay) sink.next(value);\n\n listeners.add(sink);\n\n return () => listeners.delete(sink);\n });\n\n const dispose = (): void => {\n if (controller.signal.aborted) return;\n\n controller.abort();\n\n for (const listener of [...listeners]) listener.complete();\n\n listeners.clear();\n };\n\n let dispatching = false;\n const pending: T[] = [];\n\n const flush = (): void => {\n dispatching = true;\n\n try {\n while (pending.length > 0) {\n const value = pending.shift()!;\n\n if (capacity > 0) {\n if (replay.length === capacity) replay.shift();\n\n replay.push(value);\n }\n\n for (const listener of [...listeners]) listener.next(value);\n }\n } finally {\n dispatching = false;\n }\n };\n\n return {\n get disposalSignal(): AbortSignal {\n return controller.signal;\n },\n dispose,\n get disposed(): boolean {\n return controller.signal.aborted;\n },\n send(value: T): void {\n if (controller.signal.aborted) return;\n\n pending.push(value);\n\n // Reentrant sends (a listener calling `send` while receiving a previous\n // value) are queued so every listener observes one global FIFO order.\n if (!dispatching) flush();\n },\n stream: source,\n [Symbol.dispose]: dispose,\n };\n}\n"],"mappings":"0DAkBA,SAAS,EAAkB,EAAoC,CAC7D,IAAM,EAAa,YAAa,EAC1B,EAAW,EAAQ,QAAW,KAIpC,GAFA,EAAA,yBAAyB,EAAU,gBAAgB,EAE/C,GAAc,IAAa,EAC7B,MAAU,WACR,sGACF,EAGF,OAAO,CACT,CAGA,SAAgB,EAAiB,EAA6B,CAAC,EAAe,CAC5E,IAAM,EAAW,EAAe,CAAO,EACjC,EAAa,IAAI,gBACjB,EAAY,IAAI,IAChB,EAAc,CAAC,EAEjB,YAAa,GAAW,EAAW,GAAG,EAAO,KAAK,EAAQ,OAAY,EAE1E,IAAM,EAAS,EAAA,OAAW,GAAS,CAGjC,GAAI,EAAW,OAAO,QAAS,CAC7B,EAAK,SAAS,EAEd,MACF,CAEA,IAAK,IAAM,KAAS,EAAQ,EAAK,KAAK,CAAK,EAI3C,OAFA,EAAU,IAAI,CAAI,MAEL,EAAU,OAAO,CAAI,CACpC,CAAC,EAEK,MAAsB,CACtB,MAAW,OAAO,QAEtB,GAAW,MAAM,EAEjB,IAAK,IAAM,IAAY,CAAC,GAAG,CAAS,EAAG,EAAS,SAAS,EAEzD,EAAU,MAAM,CAJC,CAKnB,EAEI,EAAc,GACZ,EAAe,CAAC,EAEhB,MAAoB,CACxB,EAAc,GAEd,GAAI,CACF,KAAO,EAAQ,OAAS,GAAG,CACzB,IAAM,EAAQ,EAAQ,MAAM,EAExB,EAAW,IACT,EAAO,SAAW,GAAU,EAAO,MAAM,EAE7C,EAAO,KAAK,CAAK,GAGnB,IAAK,IAAM,IAAY,CAAC,GAAG,CAAS,EAAG,EAAS,KAAK,CAAK,CAC5D,CACF,QAAU,CACR,EAAc,EAChB,CACF,EAEA,MAAO,CACL,IAAI,gBAA8B,CAChC,OAAO,EAAW,MACpB,EACA,UACA,IAAI,UAAoB,CACtB,OAAO,EAAW,OAAO,OAC3B,EACA,KAAK,EAAgB,CACf,EAAW,OAAO,UAEtB,EAAQ,KAAK,CAAK,EAIb,GAAa,EAAM,EAC1B,EACA,OAAQ,GACP,OAAO,SAAU,CACpB,CACF"}
|
package/dist/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAiBF,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAE,cAAc,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAiBF,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAE,cAAc,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CA6E5E"}
|
package/dist/channel.js
CHANGED
|
@@ -10,11 +10,11 @@ function r(e = {}) {
|
|
|
10
10
|
let r = n(e), i = new AbortController(), a = /* @__PURE__ */ new Set(), o = [];
|
|
11
11
|
"initial" in e && r > 0 && o.push(e.initial);
|
|
12
12
|
let s = t((e) => {
|
|
13
|
-
for (let t of o) e.next(t);
|
|
14
13
|
if (i.signal.aborted) {
|
|
15
14
|
e.complete();
|
|
16
15
|
return;
|
|
17
16
|
}
|
|
17
|
+
for (let t of o) e.next(t);
|
|
18
18
|
return a.add(e), () => a.delete(e);
|
|
19
19
|
}), c = () => {
|
|
20
20
|
if (!i.signal.aborted) {
|
|
@@ -22,6 +22,17 @@ function r(e = {}) {
|
|
|
22
22
|
for (let e of [...a]) e.complete();
|
|
23
23
|
a.clear();
|
|
24
24
|
}
|
|
25
|
+
}, l = !1, u = [], d = () => {
|
|
26
|
+
l = !0;
|
|
27
|
+
try {
|
|
28
|
+
for (; u.length > 0;) {
|
|
29
|
+
let e = u.shift();
|
|
30
|
+
r > 0 && (o.length === r && o.shift(), o.push(e));
|
|
31
|
+
for (let t of [...a]) t.next(e);
|
|
32
|
+
}
|
|
33
|
+
} finally {
|
|
34
|
+
l = !1;
|
|
35
|
+
}
|
|
25
36
|
};
|
|
26
37
|
return {
|
|
27
38
|
get disposalSignal() {
|
|
@@ -32,10 +43,7 @@ function r(e = {}) {
|
|
|
32
43
|
return i.signal.aborted;
|
|
33
44
|
},
|
|
34
45
|
send(e) {
|
|
35
|
-
|
|
36
|
-
r > 0 && (o.length === r && o.shift(), o.push(e));
|
|
37
|
-
for (let t of [...a]) t.next(e);
|
|
38
|
-
}
|
|
46
|
+
i.signal.aborted || (u.push(e), l || d());
|
|
39
47
|
},
|
|
40
48
|
stream: s,
|
|
41
49
|
[Symbol.dispose]: c
|
package/dist/channel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","names":[],"sources":["../src/channel.ts"],"sourcesContent":["import { assertNonNegativeInteger } from './_numeric';\nimport { stream } from './core';\nimport type { Sink, Stream } from './types';\n\nexport type ChannelOptions<T> = {\n initial?: T;\n replay?: number;\n};\n\nexport type Channel<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n send(value: T): void;\n readonly stream: Stream<T>;\n};\n\nfunction replayCapacity<T>(options: ChannelOptions<T>): number {\n const hasInitial = 'initial' in options;\n const capacity = options.replay ?? (hasInitial ? 1 : 0);\n\n assertNonNegativeInteger(capacity, 'Channel replay');\n\n if (hasInitial && capacity === 0) {\n throw new RangeError(\n 'Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped',\n );\n }\n\n return capacity;\n}\n\n/** Channels own mutable multicast state; disposal is their only terminal event. */\nexport function createChannel<T>(options: ChannelOptions<T> = {}): Channel<T> {\n const capacity = replayCapacity(options);\n const controller = new AbortController();\n const listeners = new Set<Sink<T>>();\n const replay: T[] = [];\n\n if ('initial' in options && capacity > 0) replay.push(options.initial as T);\n\n const source = stream<T>((sink) => {\n
|
|
1
|
+
{"version":3,"file":"channel.js","names":[],"sources":["../src/channel.ts"],"sourcesContent":["import { assertNonNegativeInteger } from './_numeric';\nimport { stream } from './core';\nimport type { Sink, Stream } from './types';\n\nexport type ChannelOptions<T> = {\n initial?: T;\n replay?: number;\n};\n\nexport type Channel<T> = {\n [Symbol.dispose](): void;\n readonly disposalSignal: AbortSignal;\n dispose(): void;\n readonly disposed: boolean;\n send(value: T): void;\n readonly stream: Stream<T>;\n};\n\nfunction replayCapacity<T>(options: ChannelOptions<T>): number {\n const hasInitial = 'initial' in options;\n const capacity = options.replay ?? (hasInitial ? 1 : 0);\n\n assertNonNegativeInteger(capacity, 'Channel replay');\n\n if (hasInitial && capacity === 0) {\n throw new RangeError(\n 'Channel replay cannot be 0 when initial is provided — the initial value would be immediately dropped',\n );\n }\n\n return capacity;\n}\n\n/** Channels own mutable multicast state; disposal is their only terminal event. */\nexport function createChannel<T>(options: ChannelOptions<T> = {}): Channel<T> {\n const capacity = replayCapacity(options);\n const controller = new AbortController();\n const listeners = new Set<Sink<T>>();\n const replay: T[] = [];\n\n if ('initial' in options && capacity > 0) replay.push(options.initial as T);\n\n const source = stream<T>((sink) => {\n // Disposed channels complete new subscribers immediately without replaying\n // retained values — a late subscriber never observes stale state.\n if (controller.signal.aborted) {\n sink.complete();\n\n return;\n }\n\n for (const value of replay) sink.next(value);\n\n listeners.add(sink);\n\n return () => listeners.delete(sink);\n });\n\n const dispose = (): void => {\n if (controller.signal.aborted) return;\n\n controller.abort();\n\n for (const listener of [...listeners]) listener.complete();\n\n listeners.clear();\n };\n\n let dispatching = false;\n const pending: T[] = [];\n\n const flush = (): void => {\n dispatching = true;\n\n try {\n while (pending.length > 0) {\n const value = pending.shift()!;\n\n if (capacity > 0) {\n if (replay.length === capacity) replay.shift();\n\n replay.push(value);\n }\n\n for (const listener of [...listeners]) listener.next(value);\n }\n } finally {\n dispatching = false;\n }\n };\n\n return {\n get disposalSignal(): AbortSignal {\n return controller.signal;\n },\n dispose,\n get disposed(): boolean {\n return controller.signal.aborted;\n },\n send(value: T): void {\n if (controller.signal.aborted) return;\n\n pending.push(value);\n\n // Reentrant sends (a listener calling `send` while receiving a previous\n // value) are queued so every listener observes one global FIFO order.\n if (!dispatching) flush();\n },\n stream: source,\n [Symbol.dispose]: dispose,\n };\n}\n"],"mappings":";;;AAkBA,SAAS,EAAkB,GAAoC;CAC7D,IAAM,IAAa,aAAa,GAC1B,IAAW,EAAQ,UAAW;CAIpC,IAFA,EAAyB,GAAU,gBAAgB,GAE/C,KAAc,MAAa,GAC7B,MAAU,WACR,sGACF;CAGF,OAAO;AACT;AAGA,SAAgB,EAAiB,IAA6B,CAAC,GAAe;CAC5E,IAAM,IAAW,EAAe,CAAO,GACjC,IAAa,IAAI,gBAAgB,GACjC,oBAAY,IAAI,IAAa,GAC7B,IAAc,CAAC;CAErB,AAAI,aAAa,KAAW,IAAW,KAAG,EAAO,KAAK,EAAQ,OAAY;CAE1E,IAAM,IAAS,GAAW,MAAS;EAGjC,IAAI,EAAW,OAAO,SAAS;GAC7B,EAAK,SAAS;GAEd;EACF;EAEA,KAAK,IAAM,KAAS,GAAQ,EAAK,KAAK,CAAK;EAI3C,OAFA,EAAU,IAAI,CAAI,SAEL,EAAU,OAAO,CAAI;CACpC,CAAC,GAEK,UAAsB;EACtB,OAAW,OAAO,SAEtB;KAAW,MAAM;GAEjB,KAAK,IAAM,KAAY,CAAC,GAAG,CAAS,GAAG,EAAS,SAAS;GAEzD,EAAU,MAAM;EAJC;CAKnB,GAEI,IAAc,IACZ,IAAe,CAAC,GAEhB,UAAoB;EACxB,IAAc;EAEd,IAAI;GACF,OAAO,EAAQ,SAAS,IAAG;IACzB,IAAM,IAAQ,EAAQ,MAAM;IAE5B,AAAI,IAAW,MACT,EAAO,WAAW,KAAU,EAAO,MAAM,GAE7C,EAAO,KAAK,CAAK;IAGnB,KAAK,IAAM,KAAY,CAAC,GAAG,CAAS,GAAG,EAAS,KAAK,CAAK;GAC5D;EACF,UAAU;GACR,IAAc;EAChB;CACF;CAEA,OAAO;EACL,IAAI,iBAA8B;GAChC,OAAO,EAAW;EACpB;EACA;EACA,IAAI,WAAoB;GACtB,OAAO,EAAW,OAAO;EAC3B;EACA,KAAK,GAAgB;GACf,EAAW,OAAO,YAEtB,EAAQ,KAAK,CAAK,GAIb,KAAa,EAAM;EAC1B;EACA,QAAQ;GACP,OAAO,UAAU;CACpB;AACF"}
|
package/dist/errors.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},t=class extends e{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};exports.FluxError=e,exports.FluxTimeoutError=t;
|
|
1
|
+
var e=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},t=class extends e{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}},n=class extends e{constructor(e=`Stream completed without emitting any value`){super(e)}},r=class extends e{capacity;constructor(e,t){super(t),this.capacity=e}};exports.FluxCapacityError=r,exports.FluxEmptyError=n,exports.FluxError=e,exports.FluxTimeoutError=t;
|
|
2
2
|
//# sourceMappingURL=errors.cjs.map
|
package/dist/errors.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n"],"mappings":"AAAA,IAAa,EAAb,cAA+B,KAAM,CACnC,YAAY,EAAiB,EAAwB,CACnD,MAAM,EAAS,CAAO,EACtB,KAAK,KAAO,WAAW,KACvB,OAAO,eAAe,KAAM,WAAW,SAAS,CAClD,CACF,EAEa,EAAb,cAAsC,CAAU,CAE9C,GAEA,YAAY,EAAY,CACtB,MAAM,iBAAiB,EAAG,GAAG,EAC7B,KAAK,GAAK,CACZ,CACF"}
|
|
1
|
+
{"version":3,"file":"errors.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n\n/** Thrown by `first()` and `last()` when the source completes without emitting any value. */\nexport class FluxEmptyError extends FluxError {\n constructor(message = 'Stream completed without emitting any value') {\n super(message);\n }\n}\n\n/** Thrown when a bounded buffer (`mergeMap`, `concatMap`, `toArray`, async iteration) overflows. */\nexport class FluxCapacityError extends FluxError {\n /** The configured capacity that was exceeded. */\n readonly capacity: number;\n\n constructor(capacity: number, message: string) {\n super(message);\n this.capacity = capacity;\n }\n}\n"],"mappings":"AAAA,IAAa,EAAb,cAA+B,KAAM,CACnC,YAAY,EAAiB,EAAwB,CACnD,MAAM,EAAS,CAAO,EACtB,KAAK,KAAO,WAAW,KACvB,OAAO,eAAe,KAAM,WAAW,SAAS,CAClD,CACF,EAEa,EAAb,cAAsC,CAAU,CAE9C,GAEA,YAAY,EAAY,CACtB,MAAM,iBAAiB,EAAG,GAAG,EAC7B,KAAK,GAAK,CACZ,CACF,EAGa,EAAb,cAAoC,CAAU,CAC5C,YAAY,EAAU,8CAA+C,CACnE,MAAM,CAAO,CACf,CACF,EAGa,EAAb,cAAuC,CAAU,CAE/C,SAEA,YAAY,EAAkB,EAAiB,CAC7C,MAAM,CAAO,EACb,KAAK,SAAW,CAClB,CACF"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -6,4 +6,14 @@ export declare class FluxTimeoutError extends FluxError {
|
|
|
6
6
|
readonly ms: number;
|
|
7
7
|
constructor(ms: number);
|
|
8
8
|
}
|
|
9
|
+
/** Thrown by `first()` and `last()` when the source completes without emitting any value. */
|
|
10
|
+
export declare class FluxEmptyError extends FluxError {
|
|
11
|
+
constructor(message?: string);
|
|
12
|
+
}
|
|
13
|
+
/** Thrown when a bounded buffer (`mergeMap`, `concatMap`, `toArray`, async iteration) overflows. */
|
|
14
|
+
export declare class FluxCapacityError extends FluxError {
|
|
15
|
+
/** The configured capacity that was exceeded. */
|
|
16
|
+
readonly capacity: number;
|
|
17
|
+
constructor(capacity: number, message: string);
|
|
18
|
+
}
|
|
9
19
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKpD;AAED,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAER,EAAE,EAAE,MAAM;CAIvB"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKpD;AAED,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAER,EAAE,EAAE,MAAM;CAIvB;AAED,6FAA6F;AAC7F,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,SAAgD;CAGpE;AAED,oGAAoG;AACpG,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI9C"}
|
package/dist/errors.js
CHANGED
|
@@ -8,8 +8,17 @@ var e = class extends Error {
|
|
|
8
8
|
constructor(e) {
|
|
9
9
|
super(`Timeout after ${e}ms`), this.ms = e;
|
|
10
10
|
}
|
|
11
|
+
}, n = class extends e {
|
|
12
|
+
constructor(e = "Stream completed without emitting any value") {
|
|
13
|
+
super(e);
|
|
14
|
+
}
|
|
15
|
+
}, r = class extends e {
|
|
16
|
+
capacity;
|
|
17
|
+
constructor(e, t) {
|
|
18
|
+
super(t), this.capacity = e;
|
|
19
|
+
}
|
|
11
20
|
};
|
|
12
21
|
//#endregion
|
|
13
|
-
export { e as FluxError, t as FluxTimeoutError };
|
|
22
|
+
export { r as FluxCapacityError, n as FluxEmptyError, e as FluxError, t as FluxTimeoutError };
|
|
14
23
|
|
|
15
24
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n"],"mappings":";AAAA,IAAa,IAAb,cAA+B,MAAM;CACnC,YAAY,GAAiB,GAAwB;EAGnD,AAFA,MAAM,GAAS,CAAO,GACtB,KAAK,OAAO,WAAW,MACvB,OAAO,eAAe,MAAM,WAAW,SAAS;CAClD;AACF,GAEa,IAAb,cAAsC,EAAU;CAE9C;CAEA,YAAY,GAAY;EAEtB,AADA,MAAM,iBAAiB,EAAG,GAAG,GAC7B,KAAK,KAAK;CACZ;AACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export class FluxError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = new.target.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport class FluxTimeoutError extends FluxError {\n /** The timeout duration in milliseconds that was exceeded. */\n readonly ms: number;\n\n constructor(ms: number) {\n super(`Timeout after ${ms}ms`);\n this.ms = ms;\n }\n}\n\n/** Thrown by `first()` and `last()` when the source completes without emitting any value. */\nexport class FluxEmptyError extends FluxError {\n constructor(message = 'Stream completed without emitting any value') {\n super(message);\n }\n}\n\n/** Thrown when a bounded buffer (`mergeMap`, `concatMap`, `toArray`, async iteration) overflows. */\nexport class FluxCapacityError extends FluxError {\n /** The configured capacity that was exceeded. */\n readonly capacity: number;\n\n constructor(capacity: number, message: string) {\n super(message);\n this.capacity = capacity;\n }\n}\n"],"mappings":";AAAA,IAAa,IAAb,cAA+B,MAAM;CACnC,YAAY,GAAiB,GAAwB;EAGnD,AAFA,MAAM,GAAS,CAAO,GACtB,KAAK,OAAO,WAAW,MACvB,OAAO,eAAe,MAAM,WAAW,SAAS;CAClD;AACF,GAEa,IAAb,cAAsC,EAAU;CAE9C;CAEA,YAAY,GAAY;EAEtB,AADA,MAAM,iBAAiB,EAAG,GAAG,GAC7B,KAAK,KAAK;CACZ;AACF,GAGa,IAAb,cAAoC,EAAU;CAC5C,YAAY,IAAU,+CAA+C;EACnE,MAAM,CAAO;CACf;AACF,GAGa,IAAb,cAAuC,EAAU;CAE/C;CAEA,YAAY,GAAkB,GAAiB;EAE7C,AADA,MAAM,CAAO,GACb,KAAK,WAAW;CAClB;AACF"}
|
package/dist/flux.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e,t){if(!Number.isInteger(e)||e<0)throw RangeError(`${t} must be a non-negative integer`)}function t(e,t){if(!Number.isInteger(e)||e<1)throw RangeError(`${t} must be a positive integer`)}function n(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function r(e,n){t(n.capacity,`Async iterable capacity`);let r=new AbortController,i=[],a={kind:`open`,queue:[]},o=()=>n.signal?.removeEventListener(`abort`,u),s=()=>{for(;i.length>0;)i.shift()?.resolve({done:!0,value:void 0})},c=()=>{a.kind===`open`&&(a.kind=`complete`,o(),s())},l=e=>{if(a.kind===`open`)for(a={kind:`error`,queue:a.queue,reason:e},r.abort(),o();i.length>0;)i.shift()?.reject(e)},u=()=>{r.abort(),o(),a={kind:`returned`},s()},d={complete:c,error:l,next(e){if(a.kind!==`open`)return;let t=i.shift();if(t){t.resolve({done:!1,value:e});return}if(a.queue.length<n.capacity){a.queue.push(e);return}n.overflow===`drop-oldest`?(a.queue.shift(),a.queue.push(e)):n.overflow===`error`&&l(RangeError(`Async iterable buffer capacity exceeded`))}};return n.signal?.aborted?u():n.signal?.addEventListener(`abort`,u,{once:!0}),e.subscribe(d,{signal:r.signal}),{next(){return a.kind===`returned`?Promise.resolve({done:!0,value:void 0}):a.queue.length>0?Promise.resolve({done:!1,value:a.queue.shift()}):a.kind===`error`?Promise.reject(a.reason):a.kind===`complete`?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>i.push({reject:t,resolve:e}))},return(){return u(),Promise.resolve({done:!0,value:void 0})},[Symbol.asyncIterator](){return this}}}function i(e,t){return{[Symbol.asyncIterator](){return r(e,t)}}}function a(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function o(e,t){let n=typeof e==`function`?{next:e}:e,r=new AbortController,i=!1,o,s=()=>{if(!i){i=!0,r.abort(),t?.removeEventListener(`abort`,s);try{o?.()}catch(e){a(e)}}};return t?.aborted?s():t?.addEventListener(`abort`,s,{once:!0}),{add:e=>{if(e){if(i){try{e()}catch(e){a(e)}return}o=e}},signal:r.signal,sink:{complete(){if(!i){try{n.complete?.()}catch(e){a(e)}s()}},error(e){if(!i){if(n.error)try{n.error(e)}catch(e){a(e)}else a(e);s()}},next(e){if(!i)try{n.next(e)}catch(e){s(),a(e)}}},subscription:{get closed(){return i},[Symbol.dispose]:s,unsubscribe:s}}}function s(e){return{subscribe(t,n){let r=o(t,n?.signal);if(r.subscription.closed)return r.subscription;try{r.add(e(r.sink,r.signal))}catch(e){r.sink.error(e)}return r.subscription}}}var c=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},l=class extends c{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}};function u(e,t,n){return e.subscribe(t,{signal:n})}function d(...e){return s((t,n)=>{if(e.length===0){t.complete();return}let r=0,i=[];for(let a of e){let o=u(a,{complete(){r++,r===e.length&&t.complete()},error:t.error,next:t.next},n);if(i.push(o),n.aborted)break}return()=>i.forEach(e=>{e.unsubscribe()})})}function f(...e){return s((t,n)=>{let r=0,i,a=()=>{if(n.aborted)return;let o=e[r++];if(!o){t.complete();return}let s=u(o,{complete:a,error:t.error,next:t.next},n);i=s.closed?void 0:s};return a(),()=>i?.unsubscribe()})}function p(...e){return s((t,n)=>{if(e.length===0){t.complete();return}let r=Array(e.length),i=Array(e.length).fill(!1),a=[],o=0;for(let[s,c]of e.entries()){if(n.aborted)break;let l=u(c,{complete(){if(!i[s]){t.complete();return}o++,o===e.length&&t.complete()},error:t.error,next(e){r[s]=e,i[s]=!0,i.every(Boolean)&&t.next([...r])}},n);a.push(l)}return()=>a.forEach(e=>{e.unsubscribe()})})}var m={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}};function h(...e){return s(t=>{for(let n of e)t.next(n);t.complete()})}function g(e){return Symbol.asyncIterator in Object(e)?s((t,n)=>{let r=e[Symbol.asyncIterator]();return(async()=>{try{for(;!n.aborted;){let e=await r.next();if(e.done){t.complete();return}t.next(e.value)}}catch(e){n.aborted||t.error(e)}})(),()=>{r.return?.()}}):typeof e.then==`function`?s((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):s((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 _(e,t){return s(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function v(e){return n(e.every,`Interval duration`),s(t=>{let n=0;return m.repeat(()=>t.next(n++),e.every)})}function y(e){return n(e.delay,`Timer delay`),e.interval!==void 0&&n(e.interval,`Timer interval`),s(t=>{let n=0,r,i=m.delay(()=>{if(t.next(n++),e.interval===void 0){t.complete();return}r=m.repeat(()=>t.next(n++),e.interval)},e.delay);return()=>{i(),r?.()}})}function b(t){return e(t,`take count`),e=>s((n,r)=>{if(t===0){n.complete();return}let i=0,a={};return a.current=u(e,{complete:n.complete,error:n.error,next(e){n.next(e),i++,i===t&&(n.complete(),a.current?.unsubscribe())}},r),()=>a.current?.unsubscribe()})}function x(e){return t=>s((n,r)=>{let i,a,o=()=>{},s=()=>{i?.unsubscribe(),a?.unsubscribe(),n.complete()};if(e instanceof AbortSignal){if(e.aborted){n.complete();return}e.addEventListener(`abort`,s,{once:!0}),o=()=>e.removeEventListener(`abort`,s)}else a=u(e,{error:n.error,next:s},r);return r.aborted||(i=u(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{o(),i?.unsubscribe(),a?.unsubscribe()}})}function S(e){return n(e.for,`Debounce duration`),t=>s((n,r)=>{let i,a,o=!1,s=()=>{i=void 0,o&&(o=!1,n.next(a))},c=u(t,{complete(){i?.(),s(),n.complete()},error:n.error,next(t){a=t,o=!0,i?.(),i=m.delay(s,e.for)}},r);return()=>{i?.(),c.unsubscribe()}})}function C(e){return n(e.after,`Timeout duration`),t=>s((n,r)=>{let i,a=()=>{i=m.delay(()=>n.error(new l(e.after)),e.after)};a();let o=u(t,{complete(){i(),n.complete()},error(e){i(),n.error(e)},next(e){i(),a(),n.next(e)}},r);return()=>{i(),o.unsubscribe()}})}function w(e,t){try{e()}catch(e){t(e)}}function T(e){return t=>s((n,r)=>u(t,{complete:n.complete,error:n.error,next(t){w(()=>n.next(e(t)),n.error)}},r).unsubscribe)}function E(e){return t=>s((n,r)=>u(t,{complete:n.complete,error:n.error,next(t){w(()=>{e(t)&&n.next(t)},n.error)}},r).unsubscribe)}function D(e,t){return n=>s((r,i)=>{let a=t;return u(n,{complete:r.complete,error:r.error,next(t){w(()=>{a=e(a,t),r.next(a)},r.error)}},i).unsubscribe})}function O(e){return t=>s((n,r)=>{let i=!1,a,o=()=>{i&&!a&&n.complete()},s=u(t,{complete(){i=!0,o()},error:n.error,next(t){a?.unsubscribe(),a=void 0,w(()=>{let i=u(e(t),{complete(){a=void 0,o()},error:n.error,next:n.next},r);a=i.closed?void 0:i},n.error)}},r);return()=>{s.unsubscribe(),a?.unsubscribe()}})}function k(e){return t=>s((n,r)=>{let i=!1,a=new Set,o=()=>{i&&a.size===0&&n.complete()},s=u(t,{complete(){i=!0,o()},error:n.error,next(t){w(()=>{let i={};i.current=u(e(t),{complete(){i.current&&a.delete(i.current),o()},error:n.error,next:n.next},r),i.current.closed||a.add(i.current)},n.error)}},r);return()=>{s.unsubscribe();for(let e of a)e.unsubscribe()}})}function A(e,n){return t(n.capacity,`concatMap capacity`),t=>s((r,i)=>{let a=[],o=!1,s,c={},l=()=>{if(s||a.length===0){o&&!s&&a.length===0&&r.complete();return}let t=a.shift();w(()=>{let n=u(e(t),{complete(){s=void 0,l()},error:r.error,next:r.next},i);s=n.closed?void 0:n,s||l()},r.error)};return c.current=u(t,{complete(){o=!0,l()},error:r.error,next(e){if(a.length===n.capacity){c.current?.unsubscribe(),r.error(RangeError(`concatMap buffer capacity exceeded`));return}a.push(e),l()}},i),()=>{c.current?.unsubscribe(),s?.unsubscribe(),a.length=0}})}function j(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function M(t){return e(t.attempts,`retry attempts`),e=>s((n,r)=>{let i=0,a,o,s=()=>{if(r.aborted)return;let c=u(e,{complete:n.complete,error(e){if(i===t.attempts){n.error(e);return}let a=i++,c;if(w(()=>{c=typeof t.delay==`function`?t.delay(a):t.delay},n.error),!r.aborted){if(c!==void 0&&(!Number.isFinite(c)||c<0)){n.error(RangeError(`retry delay must be a finite number greater than or equal to zero`));return}c===void 0||c===0?queueMicrotask(s):o=m.delay(s,c)}},next:n.next},r);c.closed||(a=c)};return s(),()=>{o?.(),a?.unsubscribe()}})}function N(e,t){return new Promise((n,r)=>{let i=new AbortController,a=()=>{i.abort(),r(j())};if(t?.signal?.aborted){a();return}t?.signal?.addEventListener(`abort`,a,{once:!0}),u(e,{error(e){t?.signal?.removeEventListener(`abort`,a),r(e)},next(e){t?.signal?.removeEventListener(`abort`,a),i.abort(),n(e)}},i.signal)})}function P(e,t){return new Promise((n,r)=>{let i=()=>r(j()),a;if(t?.signal?.aborted){i();return}t?.signal?.addEventListener(`abort`,i,{once:!0}),u(e,{complete(){t?.signal?.removeEventListener(`abort`,i),n(a)},error(e){t?.signal?.removeEventListener(`abort`,i),r(e)},next(e){a=e}},t?.signal??new AbortController().signal)})}function F(t,n){return e(n.maxItems,`toArray maxItems`),new Promise((e,r)=>{let i=new AbortController,a=[],o=()=>{i.abort(),r(j())};if(n.signal?.aborted){o();return}n.signal?.addEventListener(`abort`,o,{once:!0}),u(t,{complete(){n.signal?.removeEventListener(`abort`,o),e(a)},error(e){n.signal?.removeEventListener(`abort`,o),r(e)},next(e){if(a.length===n.maxItems){n.signal?.removeEventListener(`abort`,o),i.abort(),r(RangeError(`toArray maxItems exceeded`));return}a.push(e)}},i.signal)})}function I(e,...t){return t.reduce((e,t)=>t(e),e)}exports.FluxError=c,exports.FluxTimeoutError=l,exports.combineLatest=p,exports.concat=f,exports.concatMap=A,exports.debounce=S,exports.filter=E,exports.first=N,exports.from=g,exports.fromEvent=_,exports.interval=v,exports.last=P,exports.map=T,exports.merge=d,exports.mergeMap=k,exports.of=h,exports.pipe=I,exports.retry=M,exports.scan=D,exports.stream=s,exports.switchMap=O,exports.take=b,exports.takeUntil=x,exports.timeout=C,exports.timer=y,exports.toArray=F,exports.toAsyncIterable=i;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e,t){if(!Number.isInteger(e)||e<0)throw RangeError(`${t} must be a non-negative integer`)}function t(e,t){if(!Number.isInteger(e)||e<1)throw RangeError(`${t} must be a positive integer`)}function n(e,t){if(!Number.isFinite(e)||e<0)throw RangeError(`${t} must be a finite number greater than or equal to zero`)}function r(e,n){t(n.capacity,`Async iterable capacity`);let r=new AbortController,i=[],a={kind:`open`,queue:[]},o=()=>n.signal?.removeEventListener(`abort`,u),s=()=>{for(;i.length>0;)i.shift()?.resolve({done:!0,value:void 0})},c=()=>{a.kind===`open`&&(a.kind=`complete`,o(),s())},l=e=>{if(a.kind===`open`)for(a={kind:`error`,queue:a.queue,reason:e},r.abort(),o();i.length>0;)i.shift()?.reject(e)},u=()=>{r.abort(),o(),a={kind:`returned`},s()},d={complete:c,error:l,next(e){if(a.kind!==`open`)return;let t=i.shift();if(t){t.resolve({done:!1,value:e});return}if(a.queue.length<n.capacity){a.queue.push(e);return}n.overflow===`drop-oldest`?(a.queue.shift(),a.queue.push(e)):n.overflow===`error`&&l(RangeError(`Async iterable buffer capacity exceeded`))}};return n.signal?.aborted?u():n.signal?.addEventListener(`abort`,u,{once:!0}),e.subscribe(d,{signal:r.signal}),{next(){return a.kind===`returned`?Promise.resolve({done:!0,value:void 0}):a.queue.length>0?Promise.resolve({done:!1,value:a.queue.shift()}):a.kind===`error`?Promise.reject(a.reason):a.kind===`complete`?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>i.push({reject:t,resolve:e}))},return(){return u(),Promise.resolve({done:!0,value:void 0})},[Symbol.asyncIterator](){return this}}}function i(e,t){return{[Symbol.asyncIterator](){return r(e,t)}}}function a(e){let t=globalThis.reportError;if(t){t(e);return}queueMicrotask(()=>{throw e})}function o(e,t){let n=typeof e==`function`?{next:e}:e,r=new AbortController,i=!1,o,s=()=>{if(!i){i=!0,r.abort(),t?.removeEventListener(`abort`,s);try{o?.()}catch(e){a(e)}}};return t?.aborted?s():t?.addEventListener(`abort`,s,{once:!0}),{add:e=>{if(e){if(i){try{e()}catch(e){a(e)}return}o=e}},signal:r.signal,sink:{complete(){if(!i){try{n.complete?.()}catch(e){a(e)}s()}},error(e){if(!i){if(n.error)try{n.error(e)}catch(e){a(e)}else a(e);s()}},next(e){if(!i)try{n.next(e)}catch(e){s(),a(e)}}},subscription:{get closed(){return i},[Symbol.dispose]:s,unsubscribe:s}}}function s(e){return{subscribe(t,n){let r=o(t,n?.signal);if(r.subscription.closed)return r.subscription;try{r.add(e(r.sink,r.signal))}catch(e){r.sink.error(e)}return r.subscription}}}var c=class extends Error{constructor(e,t){super(e,t),this.name=new.target.name,Object.setPrototypeOf(this,new.target.prototype)}},l=class extends c{ms;constructor(e){super(`Timeout after ${e}ms`),this.ms=e}},u=class extends c{constructor(e=`Stream completed without emitting any value`){super(e)}},d=class extends c{capacity;constructor(e,t){super(t),this.capacity=e}};function f(e,t,n){return e.subscribe(t,{signal:n})}function p(...e){return s((t,n)=>{if(e.length===0){t.complete();return}let r=0,i=[];for(let a of e){let o=f(a,{complete(){r++,r===e.length&&t.complete()},error:t.error,next:t.next},n);if(i.push(o),n.aborted)break}return()=>i.forEach(e=>{e.unsubscribe()})})}function m(...e){return s((t,n)=>{let r=0,i,a=()=>{if(n.aborted)return;let o=e[r++];if(!o){t.complete();return}let s=f(o,{complete:a,error:t.error,next:t.next},n);i=s.closed?void 0:s};return a(),()=>i?.unsubscribe()})}function h(...e){return s((t,n)=>{if(e.length===0){t.complete();return}let r=Array(e.length),i=Array(e.length).fill(!1),a=[],o=0;for(let[s,c]of e.entries()){if(n.aborted)break;let l=f(c,{complete(){if(!i[s]){t.complete();return}o++,o===e.length&&t.complete()},error:t.error,next(e){r[s]=e,i[s]=!0,i.every(Boolean)&&t.next([...r])}},n);a.push(l)}return()=>a.forEach(e=>{e.unsubscribe()})})}var g={delay(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},repeat(e,t){let n=setInterval(e,t);return()=>clearInterval(n)}};function _(...e){return s(t=>{for(let n of e)t.next(n);t.complete()})}function v(e){return Symbol.asyncIterator in Object(e)?s((t,n)=>{let r=e[Symbol.asyncIterator]();return(async()=>{try{for(;!n.aborted;){let e=await r.next();if(e.done){t.complete();return}t.next(e.value)}}catch(e){n.aborted||t.error(e)}})(),()=>{r.return?.()}}):typeof e.then==`function`?s((t,n)=>{e.then(e=>{n.aborted||(t.next(e),t.complete())},e=>{n.aborted||t.error(e)})}):s((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 y(e,t){return s(n=>{let r=e=>n.next(e);return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})}function b(e){return n(e,`Interval duration`),s(t=>{let n=0;return g.repeat(()=>t.next(n++),e)})}function x(e){return n(e.delay,`Timer delay`),e.interval!==void 0&&n(e.interval,`Timer interval`),s(t=>{let n=0,r,i=g.delay(()=>{if(t.next(n++),e.interval===void 0){t.complete();return}r=g.repeat(()=>t.next(n++),e.interval)},e.delay);return()=>{i(),r?.()}})}function S(t){return e(t,`take count`),e=>s((n,r)=>{if(t===0){n.complete();return}let i=0,a={};return a.current=f(e,{complete:n.complete,error:n.error,next(e){n.next(e),i++,i===t&&(n.complete(),a.current?.unsubscribe())}},r),()=>a.current?.unsubscribe()})}function C(e){return t=>s((n,r)=>{let i,a,o=()=>{},s=()=>{i?.unsubscribe(),a?.unsubscribe(),n.complete()};if(e instanceof AbortSignal){if(e.aborted){n.complete();return}e.addEventListener(`abort`,s,{once:!0}),o=()=>e.removeEventListener(`abort`,s)}else a=f(e,{error:n.error,next:s},r);return r.aborted||(i=f(t,{complete:n.complete,error:n.error,next:n.next},r)),()=>{o(),i?.unsubscribe(),a?.unsubscribe()}})}function w(e){return n(e,`Debounce duration`),t=>s((n,r)=>{let i,a,o=!1,s=()=>{i=void 0,o&&(o=!1,n.next(a))},c=f(t,{complete(){i?.(),s(),n.complete()},error:n.error,next(t){a=t,o=!0,i?.(),i=g.delay(s,e)}},r);return()=>{i?.(),c.unsubscribe()}})}function T(e){return n(e,`Timeout duration`),t=>s((n,r)=>{let i,a=()=>{i=g.delay(()=>n.error(new l(e)),e)};a();let o=f(t,{complete(){i(),n.complete()},error(e){i(),n.error(e)},next(e){i(),a(),n.next(e)}},r);return()=>{i(),o.unsubscribe()}})}function E(e,t){try{e()}catch(e){t(e)}}function D(e){return t=>s((n,r)=>f(t,{complete:n.complete,error:n.error,next(t){E(()=>n.next(e(t)),n.error)}},r).unsubscribe)}function O(e){return t=>s((n,r)=>f(t,{complete:n.complete,error:n.error,next(t){E(()=>{e(t)&&n.next(t)},n.error)}},r).unsubscribe)}function k(e,t){return n=>s((r,i)=>{let a=t;return f(n,{complete:r.complete,error:r.error,next(t){E(()=>{a=e(a,t),r.next(a)},r.error)}},i).unsubscribe})}function A(e){return t=>s((n,r)=>{let i=!1,a,o=()=>{i&&!a&&n.complete()},s=f(t,{complete(){i=!0,o()},error:n.error,next(t){a?.unsubscribe(),a=void 0,E(()=>{let i=f(e(t),{complete(){a=void 0,o()},error:n.error,next:n.next},r);a=i.closed?void 0:i},n.error)}},r);return()=>{s.unsubscribe(),a?.unsubscribe()}})}function j(e,n){let r=n.concurrency===1/0;return r||(t(n.concurrency,`mergeMap concurrency`),t(n.capacity,`mergeMap capacity`)),t=>s((i,a)=>{let o=[],s=new Set,c=!1,l={},u=()=>{c&&s.size===0&&o.length===0&&i.complete()},p=t=>{E(()=>{let n={};n.current=f(e(t),{complete(){n.current&&s.delete(n.current),m()},error:i.error,next:i.next},a),n.current.closed?m():s.add(n.current)},i.error)},m=()=>{if(!a.aborted){for(;o.length>0&&(r||s.size<n.concurrency);){let e=o.shift();p(e)}u()}};return l.current=f(t,{complete(){c=!0,u()},error:i.error,next(e){if(!r&&o.length>=n.capacity){l.current?.unsubscribe(),i.error(new d(n.capacity,`mergeMap buffer capacity exceeded`));return}o.push(e),m()}},a),()=>{l.current?.unsubscribe();for(let e of s)e.unsubscribe();o.length=0}})}function M(e,t){return j(e,t)}function N(e,t){return j(e,{capacity:t.capacity,concurrency:1})}function P(){return new DOMException(`Stream consumption aborted`,`AbortError`)}function F(t){return e(t.attempts,`retry attempts`),e=>s((n,r)=>{let i=0,a,o,s=()=>{if(r.aborted)return;let c=f(e,{complete:n.complete,error(e){if(i===t.attempts){n.error(e);return}let a=i++,c;if(E(()=>{c=typeof t.delay==`function`?t.delay(a):t.delay},n.error),!r.aborted){if(c!==void 0&&(!Number.isFinite(c)||c<0)){n.error(RangeError(`retry delay must be a finite number greater than or equal to zero`));return}c===void 0||c===0?queueMicrotask(s):o=g.delay(s,c)}},next:n.next},r);c.closed||(a=c)};return s(),()=>{o?.(),a?.unsubscribe()}})}function I(e,t){return new Promise((n,r)=>{let i=new AbortController,a=()=>{i.abort(),r(P())};if(t?.signal?.aborted){a();return}t?.signal?.addEventListener(`abort`,a,{once:!0}),f(e,{complete(){t?.signal?.removeEventListener(`abort`,a),`defaultValue`in(t??{})?n(t.defaultValue):r(new u)},error(e){t?.signal?.removeEventListener(`abort`,a),r(e)},next(e){t?.signal?.removeEventListener(`abort`,a),i.abort(),n(e)}},i.signal)})}function L(e,t){return new Promise((n,r)=>{let i=new AbortController,a=()=>{i.abort(),r(P())};if(t?.signal?.aborted){a();return}let o=!1,s;t?.signal?.addEventListener(`abort`,a,{once:!0}),f(e,{complete(){t?.signal?.removeEventListener(`abort`,a),o?n(s):`defaultValue`in(t??{})?n(t.defaultValue):r(new u)},error(e){t?.signal?.removeEventListener(`abort`,a),r(e)},next(e){o=!0,s=e}},i.signal)})}function R(t,n){return e(n.maxItems,`toArray maxItems`),new Promise((e,r)=>{let i=new AbortController,a=[],o=()=>{i.abort(),r(P())};if(n.signal?.aborted){o();return}n.signal?.addEventListener(`abort`,o,{once:!0}),f(t,{complete(){n.signal?.removeEventListener(`abort`,o),e(a)},error(e){n.signal?.removeEventListener(`abort`,o),r(e)},next(e){if(a.length===n.maxItems){n.signal?.removeEventListener(`abort`,o),i.abort(),r(new d(n.maxItems,`toArray maxItems exceeded`));return}a.push(e)}},i.signal)})}function z(e,...t){return t.reduce((e,t)=>t(e),e)}exports.FluxCapacityError=d,exports.FluxEmptyError=u,exports.FluxError=c,exports.FluxTimeoutError=l,exports.combineLatest=h,exports.concat=m,exports.concatMap=N,exports.debounce=w,exports.filter=O,exports.first=I,exports.from=v,exports.fromEvent=y,exports.interval=b,exports.last=L,exports.map=D,exports.merge=p,exports.mergeMap=M,exports.of=_,exports.pipe=z,exports.retry=F,exports.scan=k,exports.stream=s,exports.switchMap=A,exports.take=S,exports.takeUntil=C,exports.timeout=T,exports.timer=x,exports.toArray=R,exports.toAsyncIterable=i;
|
|
2
2
|
//# sourceMappingURL=flux.cjs.map
|