@vielzeug/flux 26.11.12 → 26.11.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_iterator.cjs +1 -1
- package/dist/_iterator.cjs.map +1 -1
- package/dist/_iterator.d.ts.map +1 -1
- package/dist/_iterator.js +4 -1
- package/dist/_iterator.js.map +1 -1
- package/dist/async.cjs +1 -1
- package/dist/async.cjs.map +1 -1
- package/dist/channel.cjs +1 -1
- package/dist/channel.cjs.map +1 -1
- package/dist/channel.js +9 -9
- package/dist/channel.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 +121 -123
- package/dist/flux.js.map +1 -1
- package/dist/operators/creation.cjs +1 -1
- package/dist/operators/creation.cjs.map +1 -1
- package/dist/operators/creation.d.ts.map +1 -1
- package/dist/operators/creation.js +22 -23
- package/dist/operators/creation.js.map +1 -1
- package/dist/operators/filtering.cjs +1 -1
- package/dist/operators/filtering.cjs.map +1 -1
- package/dist/operators/filtering.d.ts.map +1 -1
- package/dist/operators/filtering.js +25 -23
- 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 +8 -2
- package/dist/operators/transformation.d.ts.map +1 -1
- package/dist/operators/transformation.js +24 -19
- package/dist/operators/transformation.js.map +1 -1
- package/dist/operators/utility.cjs +1 -1
- package/dist/operators/utility.cjs.map +1 -1
- package/dist/operators/utility.d.ts.map +1 -1
- package/dist/operators/utility.js +48 -51
- package/dist/operators/utility.js.map +1 -1
- package/package.json +2 -14
- package/dist/_dev.d.ts +0 -2
- package/dist/_dev.d.ts.map +0 -1
- package/dist/_scheduler.cjs +0 -2
- package/dist/_scheduler.cjs.map +0 -1
- package/dist/_scheduler.d.ts +0 -6
- package/dist/_scheduler.d.ts.map +0 -1
- package/dist/_scheduler.js +0 -14
- package/dist/_scheduler.js.map +0 -1
- package/dist/subjects.d.ts +0 -2
- package/dist/subjects.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.js","names":["assertNonNegativeInteger","options","stream","attempts","current","
|
|
1
|
+
{"version":3,"file":"utility.js","names":["assertNonNegativeInteger","options","stream","attempts","current","delayId","signal","subscription","link","source","sink","reason","attempt","delay","tryCall","controller","reject","abortError","detach","resolve","FluxEmptyError","value","emitted","latest","values","FluxCapacityError"],"sources":["../../src/operators/utility.ts"],"sourcesContent":["import { abortError } from '@vielzeug/arsenal';\n\nimport { link } from '../_link.js';\nimport { assertDuration, assertNonNegativeInteger } from '../_numeric.js';\nimport { tryCall } from '../_safe.js';\nimport { stream } from '../core.js';\nimport { FluxCapacityError, FluxEmptyError } from '../errors.js';\nimport type { Operator, Stream, Subscription } from '../types.js';\n\nexport type RetryOptions = {\n times: number;\n delay?: number | ((attempt: number) => number);\n};\n\nexport type ToArrayOptions = {\n maxItems: number;\n signal?: AbortSignal;\n};\n\nexport type ValueOptions<T> = {\n signal?: AbortSignal;\n /** Resolved when the source completes empty instead of rejecting with `FluxEmptyError`. */\n defaultValue?: T;\n};\n\nexport function retry<T>(options: RetryOptions): Operator<T, T> {\n assertNonNegativeInteger(options.times, 'retry times');\n\n return (source) =>\n stream((sink, signal) => {\n let attempts = 0;\n let current: Subscription | undefined;\n let delayId: ReturnType<typeof setTimeout> | undefined;\n\n const start = (): void => {\n if (signal.aborted) return;\n\n const subscription = link(\n source,\n {\n complete: sink.complete,\n error(reason) {\n if (attempts === options.times) {\n sink.error(reason);\n\n return;\n }\n\n const attempt = attempts++;\n let delay: number | undefined;\n\n tryCall(() => {\n delay = typeof options.delay === 'function' ? options.delay(attempt) : options.delay;\n }, sink.error);\n\n if (signal.aborted) return;\n\n if (delay !== undefined) {\n try {\n assertDuration(delay, 'Retry delay');\n } catch (reason) {\n sink.error(reason);\n return;\n }\n }\n\n if (delay === undefined || delay === 0) {\n queueMicrotask(start);\n } else {\n delayId = setTimeout(start, delay);\n }\n },\n next: sink.next,\n },\n signal,\n );\n\n if (!subscription.closed) current = subscription;\n };\n\n start();\n\n return () => {\n if (delayId !== undefined) clearTimeout(delayId);\n current?.unsubscribe();\n };\n });\n}\n\n/**\n * Wire an external AbortSignal into a terminal consumer promise. Returns the\n * detach function every terminal callback must call, or `null` when the signal\n * was already aborted (the promise has rejected by then).\n */\nfunction watchSignal(\n signal: AbortSignal | undefined,\n controller: AbortController,\n reject: (reason: unknown) => void,\n): (() => void) | null {\n if (!signal) return () => {};\n\n const abort = (): void => {\n controller.abort();\n reject(abortError(signal, 'Stream consumption aborted'));\n };\n\n if (signal.aborted) {\n abort();\n\n return null;\n }\n\n signal.addEventListener('abort', abort, { once: true });\n\n return () => signal.removeEventListener('abort', abort);\n}\n\nexport function first<T>(source: Stream<T>, options?: ValueOptions<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const detach = watchSignal(options?.signal, controller, reject);\n if (!detach) return;\n\n link(\n source,\n {\n complete() {\n detach();\n\n if ('defaultValue' in (options ?? {})) resolve(options!.defaultValue as T);\n else reject(new FluxEmptyError());\n },\n error(reason) {\n detach();\n reject(reason);\n },\n next(value) {\n detach();\n controller.abort();\n resolve(value);\n },\n },\n controller.signal,\n );\n });\n}\n\nexport function last<T>(source: Stream<T>, options?: ValueOptions<T>): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const controller = new AbortController();\n const detach = watchSignal(options?.signal, controller, reject);\n if (!detach) return;\n\n let emitted = false;\n let latest: T | undefined;\n\n link(\n source,\n {\n complete() {\n detach();\n\n if (emitted) resolve(latest as T);\n else if ('defaultValue' in (options ?? {})) resolve(options!.defaultValue as T);\n else reject(new FluxEmptyError());\n },\n error(reason) {\n detach();\n reject(reason);\n },\n next(value) {\n emitted = true;\n latest = value;\n },\n },\n controller.signal,\n );\n });\n}\n\nexport function toArray<T>(source: Stream<T>, options: ToArrayOptions): Promise<T[]> {\n assertNonNegativeInteger(options.maxItems, 'toArray maxItems');\n\n return new Promise<T[]>((resolve, reject) => {\n const controller = new AbortController();\n const values: T[] = [];\n const detach = watchSignal(options.signal, controller, reject);\n if (!detach) return;\n\n link(\n source,\n {\n complete() {\n detach();\n resolve(values);\n },\n error(reason) {\n detach();\n reject(reason);\n },\n next(value) {\n if (values.length === options.maxItems) {\n detach();\n controller.abort();\n reject(new FluxCapacityError(options.maxItems, 'toArray maxItems exceeded'));\n\n return;\n }\n\n values.push(value);\n },\n },\n controller.signal,\n );\n });\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vielzeug/flux",
|
|
3
|
-
"version": "26.11.
|
|
3
|
+
"version": "26.11.13",
|
|
4
4
|
"description": "Minimal push streams with explicit ownership, bounded buffering, and structural bridges",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,18 +23,6 @@
|
|
|
23
23
|
"import": "./dist/index.js",
|
|
24
24
|
"require": "./dist/index.cjs",
|
|
25
25
|
"types": "./dist/index.d.ts"
|
|
26
|
-
},
|
|
27
|
-
"./async": {
|
|
28
|
-
"import": "./dist/async.js",
|
|
29
|
-
"require": "./dist/async.cjs",
|
|
30
|
-
"types": "./dist/async.d.ts"
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"typesVersions": {
|
|
34
|
-
"*": {
|
|
35
|
-
"async": [
|
|
36
|
-
"dist/async.d.ts"
|
|
37
|
-
]
|
|
38
26
|
}
|
|
39
27
|
},
|
|
40
28
|
"sideEffects": false,
|
|
@@ -54,7 +42,7 @@
|
|
|
54
42
|
"verify:exports": "bun scripts/verify-exports.mjs && bun scripts/verify-package-exports.mjs"
|
|
55
43
|
},
|
|
56
44
|
"dependencies": {
|
|
57
|
-
"@vielzeug/arsenal": "26.11.
|
|
45
|
+
"@vielzeug/arsenal": "26.11.13"
|
|
58
46
|
},
|
|
59
47
|
"devDependencies": {
|
|
60
48
|
"@types/node": "^26.6.6",
|
package/dist/_dev.d.ts
DELETED
package/dist/_dev.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_dev.d.ts","sourceRoot":"","sources":["../src/_dev.ts"],"names":[],"mappings":""}
|
package/dist/_scheduler.cjs
DELETED
package/dist/_scheduler.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_scheduler.cjs","names":["defaultScheduler","id","callback","milliseconds"],"sources":["../src/_scheduler.ts"],"sourcesContent":["export type Scheduler = {\n delay(callback: () => void, milliseconds: number): () => void;\n repeat(callback: () => void, milliseconds: number): () => void;\n};\n\nexport const defaultScheduler: Scheduler = {\n delay(callback, milliseconds) {\n const id = setTimeout(callback, milliseconds);\n\n return () => clearTimeout(id);\n },\n repeat(callback, milliseconds) {\n const id = setInterval(callback, milliseconds);\n\n return () => clearInterval(id);\n },\n};\n"],"mappings":"AAKA,IAAaA,EAA8B,CACzC,MAAM,EAAU,EAAc,CAC5B,IAAMC,EAAK,WAAWC,EAAUC,CAAY,EAE5C,UAAa,aAAaF,CAAE,CAC9B,EACA,OAAO,EAAU,EAAc,CAC7B,IAAMA,EAAK,YAAYC,EAAUC,CAAY,EAE7C,UAAa,cAAcF,CAAE,CAC/B,CACF,E"}
|
package/dist/_scheduler.d.ts
DELETED
package/dist/_scheduler.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_scheduler.d.ts","sourceRoot":"","sources":["../src/_scheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC9D,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAW9B,CAAC"}
|
package/dist/_scheduler.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// src/_scheduler.ts
|
|
2
|
-
var e = {
|
|
3
|
-
delay(e, t) {
|
|
4
|
-
let n = setTimeout(e, t);
|
|
5
|
-
return () => clearTimeout(n);
|
|
6
|
-
},
|
|
7
|
-
repeat(e, t) {
|
|
8
|
-
let n = setInterval(e, t);
|
|
9
|
-
return () => clearInterval(n);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
export { e as defaultScheduler };
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=_scheduler.js.map
|
package/dist/_scheduler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_scheduler.js","names":["defaultScheduler","id","callback","milliseconds"],"sources":["../src/_scheduler.ts"],"sourcesContent":["export type Scheduler = {\n delay(callback: () => void, milliseconds: number): () => void;\n repeat(callback: () => void, milliseconds: number): () => void;\n};\n\nexport const defaultScheduler: Scheduler = {\n delay(callback, milliseconds) {\n const id = setTimeout(callback, milliseconds);\n\n return () => clearTimeout(id);\n },\n repeat(callback, milliseconds) {\n const id = setInterval(callback, milliseconds);\n\n return () => clearInterval(id);\n },\n};\n"],"mappings":";AAKA,IAAaA,IAA8B;CACzC,MAAM,GAAU,GAAc;EAC5B,IAAMC,IAAK,WAAWC,GAAUC,CAAY;EAE5C,aAAa,aAAaF,CAAE;CAC9B;CACA,OAAO,GAAU,GAAc;EAC7B,IAAMA,IAAK,YAAYC,GAAUC,CAAY;EAE7C,aAAa,cAAcF,CAAE;CAC/B;AACF"}
|
package/dist/subjects.d.ts
DELETED
package/dist/subjects.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subjects.d.ts","sourceRoot":"","sources":["../src/subjects.ts"],"names":[],"mappings":""}
|