@procedures/client 0.6.0 → 0.8.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/CHANGELOG.md +66 -0
- package/README.md +63 -7
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/http/client/transport.d.ts +5 -0
- package/dist/adapters/http/client/transport.d.ts.map +1 -1
- package/dist/adapters/http/client/transport.js +10 -4
- package/dist/adapters/http/client/transport.js.map +1 -1
- package/dist/adapters/http/server/ndjson.d.ts +73 -0
- package/dist/adapters/http/server/ndjson.d.ts.map +1 -0
- package/dist/adapters/http/server/ndjson.js +228 -0
- package/dist/adapters/http/server/ndjson.js.map +1 -0
- package/dist/adapters/http/server/transport.d.ts +15 -4
- package/dist/adapters/http/server/transport.d.ts.map +1 -1
- package/dist/adapters/http/server/transport.js +29 -69
- package/dist/adapters/http/server/transport.js.map +1 -1
- package/dist/adapters/http/server/types.d.ts +15 -0
- package/dist/adapters/http/server/types.d.ts.map +1 -1
- package/dist/adapters/sequence.d.ts +14 -0
- package/dist/adapters/sequence.d.ts.map +1 -1
- package/dist/adapters/sequence.js +16 -0
- package/dist/adapters/sequence.js.map +1 -1
- package/dist/adapters/websocket/client/transport.d.ts +7 -3
- package/dist/adapters/websocket/client/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/client/transport.js +9 -3
- package/dist/adapters/websocket/client/transport.js.map +1 -1
- package/dist/adapters/websocket/server/transport.d.ts +10 -0
- package/dist/adapters/websocket/server/transport.d.ts.map +1 -1
- package/dist/adapters/websocket/server/transport.js +22 -2
- package/dist/adapters/websocket/server/transport.js.map +1 -1
- package/dist/browser.d.ts +5 -5
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -3
- package/dist/browser.js.map +1 -1
- package/dist/client/errors/registry.d.ts.map +1 -1
- package/dist/client/errors/registry.js +1 -0
- package/dist/client/errors/registry.js.map +1 -1
- package/dist/client/middleware/retry.d.ts +4 -0
- package/dist/client/middleware/retry.d.ts.map +1 -1
- package/dist/client/middleware/retry.js +86 -78
- package/dist/client/middleware/retry.js.map +1 -1
- package/dist/events/bus.d.ts +32 -14
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/bus.js +119 -65
- package/dist/events/bus.js.map +1 -1
- package/dist/events/index.d.ts +3 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/events/publisher.d.ts.map +1 -1
- package/dist/events/publisher.js +20 -6
- package/dist/events/publisher.js.map +1 -1
- package/dist/events/remote.d.ts +80 -18
- package/dist/events/remote.d.ts.map +1 -1
- package/dist/events/remote.js +448 -58
- package/dist/events/remote.js.map +1 -1
- package/dist/events/types.d.ts +13 -2
- package/dist/events/types.d.ts.map +1 -1
- package/dist/node.d.ts +6 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +5 -0
- package/dist/node.js.map +1 -1
- package/dist/procedures/caller.d.ts +33 -0
- package/dist/procedures/caller.d.ts.map +1 -0
- package/dist/procedures/caller.js +27 -0
- package/dist/procedures/caller.js.map +1 -0
- package/dist/procedures/collection/index.d.ts +2 -2
- package/dist/procedures/collection/index.d.ts.map +1 -1
- package/dist/procedures/collection/index.js +1 -1
- package/dist/procedures/collection/index.js.map +1 -1
- package/dist/procedures/collection/procedures.d.ts.map +1 -1
- package/dist/procedures/collection/procedures.js +21 -1
- package/dist/procedures/collection/procedures.js.map +1 -1
- package/dist/procedures/collection/schemas.d.ts +9 -0
- package/dist/procedures/collection/schemas.d.ts.map +1 -1
- package/dist/procedures/collection/schemas.js +28 -0
- package/dist/procedures/collection/schemas.js.map +1 -1
- package/dist/procedures/collection/storage.d.ts +6 -0
- package/dist/procedures/collection/storage.d.ts.map +1 -1
- package/dist/procedures/index.d.ts +3 -1
- package/dist/procedures/index.d.ts.map +1 -1
- package/dist/procedures/index.js +2 -0
- package/dist/procedures/index.js.map +1 -1
- package/dist/procedures/invoke.d.ts.map +1 -1
- package/dist/procedures/invoke.js +3 -0
- package/dist/procedures/invoke.js.map +1 -1
- package/dist/procedures/types.d.ts +50 -0
- package/dist/procedures/types.d.ts.map +1 -1
- package/dist/procedures/types.js.map +1 -1
- package/dist/protocol.d.ts +1 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +1 -0
- package/dist/protocol.js.map +1 -1
- package/dist/server/procedure-server.d.ts +41 -5
- package/dist/server/procedure-server.d.ts.map +1 -1
- package/dist/server/procedure-server.js +94 -9
- package/dist/server/procedure-server.js.map +1 -1
- package/dist/timers.d.ts +9 -0
- package/dist/timers.d.ts.map +1 -1
- package/dist/timers.js +6 -1
- package/dist/timers.js.map +1 -1
- package/package.json +1 -1
- package/src/adapters/http/client/transport.ts +10 -4
- package/src/adapters/http/server/ndjson.ts +259 -0
- package/src/adapters/http/server/transport.ts +31 -69
- package/src/adapters/http/server/types.ts +17 -0
- package/src/adapters/sequence.ts +18 -0
- package/src/adapters/websocket/client/transport.ts +9 -3
- package/src/adapters/websocket/server/transport.ts +23 -2
- package/src/browser.ts +9 -2
- package/src/client/errors/registry.ts +1 -0
- package/src/client/middleware/retry.ts +89 -78
- package/src/events/bus.ts +141 -73
- package/src/events/index.ts +3 -0
- package/src/events/publisher.ts +23 -6
- package/src/events/remote.ts +575 -73
- package/src/events/types.ts +15 -2
- package/src/node.ts +6 -0
- package/src/procedures/caller.ts +45 -0
- package/src/procedures/collection/index.ts +3 -0
- package/src/procedures/collection/procedures.ts +22 -0
- package/src/procedures/collection/schemas.ts +37 -0
- package/src/procedures/collection/storage.ts +6 -0
- package/src/procedures/index.ts +4 -0
- package/src/procedures/invoke.ts +2 -0
- package/src/procedures/types.ts +53 -0
- package/src/protocol.ts +3 -1
- package/src/server/procedure-server.ts +111 -11
- package/src/timers.ts +15 -1
package/dist/events/bus.d.ts
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Central pub/sub system for streaming coordination.
|
|
5
5
|
*/
|
|
6
|
-
import type { EventBus, TypedEventBus, ChannelMap, EventHandler, Unsubscribe, EventBusOptions, EventWaitOptions } from "./types.js";
|
|
6
|
+
import type { EventBus, TypedEventBus, ChannelMap, EventHandler, Unsubscribe, EventBusOptions, EventListenOptions, EventWaitOptions } from "./types.js";
|
|
7
|
+
import { type Clock } from "../clock.js";
|
|
8
|
+
import { type Duration } from "../duration.js";
|
|
7
9
|
/**
|
|
8
10
|
* Default event bus implementation.
|
|
9
11
|
* Supports pub/sub messaging with async iteration.
|
|
@@ -11,8 +13,11 @@ import type { EventBus, TypedEventBus, ChannelMap, EventHandler, Unsubscribe, Ev
|
|
|
11
13
|
export declare class DefaultEventBus implements EventBus {
|
|
12
14
|
private readonly subscribers;
|
|
13
15
|
private readonly buffer;
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
+
/**
|
|
17
|
+
* For each channel, the functions that `clear()` runs: the `onClear` of each handler of `on()`
|
|
18
|
+
* that has one. Each open stream has one too, so `clear()` ends it.
|
|
19
|
+
*/
|
|
20
|
+
private readonly clearHandlers;
|
|
16
21
|
private readonly options;
|
|
17
22
|
constructor(options?: EventBusOptions);
|
|
18
23
|
/**
|
|
@@ -20,9 +25,12 @@ export declare class DefaultEventBus implements EventBus {
|
|
|
20
25
|
*/
|
|
21
26
|
emit<T>(channel: string, data: T): void;
|
|
22
27
|
/**
|
|
23
|
-
* Subscribe to events on a channel.
|
|
28
|
+
* Subscribe to events on a channel. The `onClear` of the options runs one time when `clear()`
|
|
29
|
+
* or `clearAll()` removes the handler, not at an unsubscribe.
|
|
24
30
|
*/
|
|
25
|
-
on<T>(channel: string, handler: EventHandler<T
|
|
31
|
+
on<T>(channel: string, handler: EventHandler<T>, options?: EventListenOptions): Unsubscribe;
|
|
32
|
+
/** This function runs the clear handlers of the channels, after it removed them from the bus. */
|
|
33
|
+
private runClearHandlers;
|
|
26
34
|
/**
|
|
27
35
|
* Subscribe to a single event on a channel. On a buffered channel, the first buffered event
|
|
28
36
|
* resolves the promise. When the signal aborts first, the promise rejects with an `AbortError`.
|
|
@@ -46,11 +54,13 @@ export declare class DefaultEventBus implements EventBus {
|
|
|
46
54
|
*/
|
|
47
55
|
channels(): string[];
|
|
48
56
|
/**
|
|
49
|
-
* Remove all subscribers from a channel.
|
|
57
|
+
* Remove all subscribers from a channel. The `onClear` of each removed handler runs, and each
|
|
58
|
+
* stream of the channel ends.
|
|
50
59
|
*/
|
|
51
60
|
clear(channel: string): void;
|
|
52
61
|
/**
|
|
53
|
-
* Remove all subscribers from all channels.
|
|
62
|
+
* Remove all subscribers from all channels. The `onClear` of each removed handler runs, and
|
|
63
|
+
* each stream ends.
|
|
54
64
|
*/
|
|
55
65
|
clearAll(): void;
|
|
56
66
|
}
|
|
@@ -128,7 +138,7 @@ export declare function withEventBusSignal(bus: EventBus, signal: AbortSignal):
|
|
|
128
138
|
*/
|
|
129
139
|
export declare function createChannelPrefix(bus: EventBus, prefix: string): {
|
|
130
140
|
emit<T>(channel: string, data: T): void;
|
|
131
|
-
on<T>(channel: string, handler: EventHandler<T
|
|
141
|
+
on<T>(channel: string, handler: EventHandler<T>, options?: EventListenOptions): Unsubscribe;
|
|
132
142
|
once<T>(channel: string, options?: EventWaitOptions): Promise<T>;
|
|
133
143
|
stream<T>(channel: string, options?: EventWaitOptions): AsyncIterable<T>;
|
|
134
144
|
};
|
|
@@ -170,24 +180,32 @@ export declare function filterChannel<T>(bus: EventBus, source: string, target:
|
|
|
170
180
|
* @returns Unsubscribe function
|
|
171
181
|
*/
|
|
172
182
|
export declare function mapChannel<TIn, TOut>(bus: EventBus, source: string, target: string, transform: (data: TIn) => TOut): Unsubscribe;
|
|
183
|
+
/** Options of `debounceChannel()` and `throttleChannel()`. */
|
|
184
|
+
export interface ChannelTimingOptions {
|
|
185
|
+
/** The clock of the timers. The default is the clock of the platform. A test gives a fake clock. */
|
|
186
|
+
clock?: Clock;
|
|
187
|
+
}
|
|
173
188
|
/**
|
|
174
|
-
*
|
|
189
|
+
* This function sends the last event of `source` to `target` after `delay` without a new event
|
|
190
|
+
* (a debounce). The delay is a `Duration`, such as `ms(300)`. A plain number throws a `TypeError`.
|
|
175
191
|
*
|
|
176
192
|
* @param bus - Event bus
|
|
177
193
|
* @param source - Source channel
|
|
178
194
|
* @param target - Target channel
|
|
179
|
-
* @param delay -
|
|
195
|
+
* @param delay - The time without an event before the send
|
|
180
196
|
* @returns Unsubscribe function
|
|
181
197
|
*/
|
|
182
|
-
export declare function debounceChannel<T>(bus: EventBus, source: string, target: string, delay:
|
|
198
|
+
export declare function debounceChannel<T>(bus: EventBus, source: string, target: string, delay: Duration, options?: ChannelTimingOptions): Unsubscribe;
|
|
183
199
|
/**
|
|
184
|
-
*
|
|
200
|
+
* This function sends an event of `source` to `target` at most one time in each `interval` (a
|
|
201
|
+
* throttle). It drops the events between. The interval is a `Duration`, such as `seconds(1)`. A
|
|
202
|
+
* plain number throws a `TypeError`.
|
|
185
203
|
*
|
|
186
204
|
* @param bus - Event bus
|
|
187
205
|
* @param source - Source channel
|
|
188
206
|
* @param target - Target channel
|
|
189
|
-
* @param interval -
|
|
207
|
+
* @param interval - The shortest time between two sends
|
|
190
208
|
* @returns Unsubscribe function
|
|
191
209
|
*/
|
|
192
|
-
export declare function throttleChannel<T>(bus: EventBus, source: string, target: string, interval:
|
|
210
|
+
export declare function throttleChannel<T>(bus: EventBus, source: string, target: string, interval: Duration, options?: ChannelTimingOptions): Unsubscribe;
|
|
193
211
|
//# sourceMappingURL=bus.d.ts.map
|
package/dist/events/bus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"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"}
|
package/dist/events/bus.js
CHANGED
|
@@ -3,12 +3,23 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Central pub/sub system for streaming coordination.
|
|
5
5
|
*/
|
|
6
|
+
import { realClock } from "../clock.js";
|
|
7
|
+
import { toMs } from "../duration.js";
|
|
6
8
|
/** The error of a wait that its signal ended. */
|
|
7
9
|
function abortedError(channel) {
|
|
8
10
|
const error = new Error(`The wait on channel "${channel}" was aborted`);
|
|
9
11
|
error.name = "AbortError";
|
|
10
12
|
return error;
|
|
11
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* The error of a wait that `clear()` ended. Its name is `AbortError`, so code that ignores a
|
|
16
|
+
* cancelled wait ignores this one too.
|
|
17
|
+
*/
|
|
18
|
+
function clearedError(channel) {
|
|
19
|
+
const error = new Error(`The wait on channel "${channel}" ended, because clear() removed the channel`);
|
|
20
|
+
error.name = "AbortError";
|
|
21
|
+
return error;
|
|
22
|
+
}
|
|
12
23
|
// =============================================================================
|
|
13
24
|
// Event Bus Implementation
|
|
14
25
|
// =============================================================================
|
|
@@ -19,8 +30,11 @@ function abortedError(channel) {
|
|
|
19
30
|
export class DefaultEventBus {
|
|
20
31
|
subscribers = new Map();
|
|
21
32
|
buffer = new Map();
|
|
22
|
-
/**
|
|
23
|
-
|
|
33
|
+
/**
|
|
34
|
+
* For each channel, the functions that `clear()` runs: the `onClear` of each handler of `on()`
|
|
35
|
+
* that has one. Each open stream has one too, so `clear()` ends it.
|
|
36
|
+
*/
|
|
37
|
+
clearHandlers = new Map();
|
|
24
38
|
options;
|
|
25
39
|
constructor(options = {}) {
|
|
26
40
|
this.options = {
|
|
@@ -66,9 +80,10 @@ export class DefaultEventBus {
|
|
|
66
80
|
}
|
|
67
81
|
}
|
|
68
82
|
/**
|
|
69
|
-
* Subscribe to events on a channel.
|
|
83
|
+
* Subscribe to events on a channel. The `onClear` of the options runs one time when `clear()`
|
|
84
|
+
* or `clearAll()` removes the handler, not at an unsubscribe.
|
|
70
85
|
*/
|
|
71
|
-
on(channel, handler) {
|
|
86
|
+
on(channel, handler, options = {}) {
|
|
72
87
|
if (this.options.debug) {
|
|
73
88
|
console.log(`[EventBus] subscribe "${channel}"`);
|
|
74
89
|
}
|
|
@@ -78,6 +93,31 @@ export class DefaultEventBus {
|
|
|
78
93
|
this.subscribers.set(channel, channelSubs);
|
|
79
94
|
}
|
|
80
95
|
channelSubs.add(handler);
|
|
96
|
+
// The unsubscribe function works once, and removes only the set it added to. (Before, a
|
|
97
|
+
// repeated call of an old unsubscribe removed the set of a newer subscriber: deep dive CORE-15.)
|
|
98
|
+
// A clear() also ends the handler: then its unsubscribe does nothing.
|
|
99
|
+
let subscribed = true;
|
|
100
|
+
const { onClear } = options;
|
|
101
|
+
let cleared;
|
|
102
|
+
if (onClear) {
|
|
103
|
+
cleared = () => {
|
|
104
|
+
if (!subscribed)
|
|
105
|
+
return;
|
|
106
|
+
subscribed = false;
|
|
107
|
+
try {
|
|
108
|
+
onClear();
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
this.options.onError(error instanceof Error ? error : new Error(String(error)), channel);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
let handlers = this.clearHandlers.get(channel);
|
|
115
|
+
if (!handlers) {
|
|
116
|
+
handlers = new Set();
|
|
117
|
+
this.clearHandlers.set(channel, handlers);
|
|
118
|
+
}
|
|
119
|
+
handlers.add(cleared);
|
|
120
|
+
}
|
|
81
121
|
// Replay buffered events if any
|
|
82
122
|
const buffered = this.buffer.get(channel);
|
|
83
123
|
if (buffered && buffered.length > 0) {
|
|
@@ -93,9 +133,6 @@ export class DefaultEventBus {
|
|
|
93
133
|
}
|
|
94
134
|
}
|
|
95
135
|
}
|
|
96
|
-
// The unsubscribe function works once, and removes only the set it added to. (Before, a
|
|
97
|
-
// repeated call of an old unsubscribe removed the set of a newer subscriber: deep dive CORE-15.)
|
|
98
|
-
let subscribed = true;
|
|
99
136
|
return () => {
|
|
100
137
|
if (!subscribed)
|
|
101
138
|
return;
|
|
@@ -108,8 +145,23 @@ export class DefaultEventBus {
|
|
|
108
145
|
if (channelSubs.size === 0 && this.subscribers.get(channel) === channelSubs) {
|
|
109
146
|
this.subscribers.delete(channel);
|
|
110
147
|
}
|
|
148
|
+
if (cleared) {
|
|
149
|
+
const handlers = this.clearHandlers.get(channel);
|
|
150
|
+
if (handlers?.delete(cleared) && handlers.size === 0)
|
|
151
|
+
this.clearHandlers.delete(channel);
|
|
152
|
+
}
|
|
111
153
|
};
|
|
112
154
|
}
|
|
155
|
+
/** This function runs the clear handlers of the channels, after it removed them from the bus. */
|
|
156
|
+
runClearHandlers(channels) {
|
|
157
|
+
const handlers = [];
|
|
158
|
+
for (const channel of channels) {
|
|
159
|
+
handlers.push(...(this.clearHandlers.get(channel) ?? []));
|
|
160
|
+
this.clearHandlers.delete(channel);
|
|
161
|
+
}
|
|
162
|
+
for (const cleared of handlers)
|
|
163
|
+
cleared();
|
|
164
|
+
}
|
|
113
165
|
/**
|
|
114
166
|
* Subscribe to a single event on a channel. On a buffered channel, the first buffered event
|
|
115
167
|
* resolves the promise. When the signal aborts first, the promise rejects with an `AbortError`.
|
|
@@ -131,7 +183,8 @@ export class DefaultEventBus {
|
|
|
131
183
|
reject(abortedError(channel));
|
|
132
184
|
};
|
|
133
185
|
// on() can replay a buffered event before it returns: the handler must not need
|
|
134
|
-
// `unsubscribe` yet (before, it threw a ReferenceError, and the promise never settled)
|
|
186
|
+
// `unsubscribe` yet (before, it threw a ReferenceError, and the promise never settled).
|
|
187
|
+
// clear() rejects the wait: before, the promise never settled.
|
|
135
188
|
unsubscribe = this.on(channel, (data) => {
|
|
136
189
|
if (settled)
|
|
137
190
|
return;
|
|
@@ -139,6 +192,14 @@ export class DefaultEventBus {
|
|
|
139
192
|
unsubscribe?.();
|
|
140
193
|
signal?.removeEventListener("abort", onAbort);
|
|
141
194
|
resolve(data);
|
|
195
|
+
}, {
|
|
196
|
+
onClear: () => {
|
|
197
|
+
if (settled)
|
|
198
|
+
return;
|
|
199
|
+
settled = true;
|
|
200
|
+
signal?.removeEventListener("abort", onAbort);
|
|
201
|
+
reject(clearedError(channel));
|
|
202
|
+
},
|
|
142
203
|
});
|
|
143
204
|
if (settled) {
|
|
144
205
|
unsubscribe();
|
|
@@ -159,23 +220,7 @@ export class DefaultEventBus {
|
|
|
159
220
|
const queue = [];
|
|
160
221
|
let resolve = null;
|
|
161
222
|
let done = signal?.aborted ?? false;
|
|
162
|
-
|
|
163
|
-
const unsubscribe = done
|
|
164
|
-
? () => { }
|
|
165
|
-
: self.on(channel, (data) => {
|
|
166
|
-
if (done)
|
|
167
|
-
return;
|
|
168
|
-
if (resolve) {
|
|
169
|
-
// Someone is waiting, resolve immediately
|
|
170
|
-
const r = resolve;
|
|
171
|
-
resolve = null;
|
|
172
|
-
r({ value: data, done: false });
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
// Queue for later
|
|
176
|
-
queue.push(data);
|
|
177
|
-
}
|
|
178
|
-
});
|
|
223
|
+
let unsubscribe = () => { };
|
|
179
224
|
// End the stream: no more events, and a waiting reader gets `done`
|
|
180
225
|
const end = () => {
|
|
181
226
|
if (done)
|
|
@@ -183,19 +228,27 @@ export class DefaultEventBus {
|
|
|
183
228
|
done = true;
|
|
184
229
|
unsubscribe();
|
|
185
230
|
signal?.removeEventListener("abort", end);
|
|
186
|
-
self.streamEnders.get(channel)?.delete(end);
|
|
187
231
|
const r = resolve;
|
|
188
232
|
resolve = null;
|
|
189
233
|
r?.({ value: undefined, done: true });
|
|
190
234
|
};
|
|
235
|
+
// Subscribe to channel. A clear() of the channel ends the stream.
|
|
191
236
|
if (!done) {
|
|
237
|
+
unsubscribe = self.on(channel, (data) => {
|
|
238
|
+
if (done)
|
|
239
|
+
return;
|
|
240
|
+
if (resolve) {
|
|
241
|
+
// Someone is waiting, resolve immediately
|
|
242
|
+
const r = resolve;
|
|
243
|
+
resolve = null;
|
|
244
|
+
r({ value: data, done: false });
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
// Queue for later
|
|
248
|
+
queue.push(data);
|
|
249
|
+
}
|
|
250
|
+
}, { onClear: end });
|
|
192
251
|
signal?.addEventListener("abort", end, { once: true });
|
|
193
|
-
let enders = self.streamEnders.get(channel);
|
|
194
|
-
if (!enders) {
|
|
195
|
-
enders = new Set();
|
|
196
|
-
self.streamEnders.set(channel, enders);
|
|
197
|
-
}
|
|
198
|
-
enders.add(end);
|
|
199
252
|
}
|
|
200
253
|
return {
|
|
201
254
|
async next() {
|
|
@@ -244,7 +297,8 @@ export class DefaultEventBus {
|
|
|
244
297
|
return Array.from(this.subscribers.keys());
|
|
245
298
|
}
|
|
246
299
|
/**
|
|
247
|
-
* Remove all subscribers from a channel.
|
|
300
|
+
* Remove all subscribers from a channel. The `onClear` of each removed handler runs, and each
|
|
301
|
+
* stream of the channel ends.
|
|
248
302
|
*/
|
|
249
303
|
clear(channel) {
|
|
250
304
|
if (this.options.debug) {
|
|
@@ -252,13 +306,13 @@ export class DefaultEventBus {
|
|
|
252
306
|
}
|
|
253
307
|
this.subscribers.delete(channel);
|
|
254
308
|
this.buffer.delete(channel);
|
|
255
|
-
// The streams of the channel end: before, their readers waited forever (deep dive CORE-15)
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
this.streamEnders.delete(channel);
|
|
309
|
+
// The streams of the channel end: before, their readers waited forever (deep dive CORE-15).
|
|
310
|
+
// The remote subscriptions end with notice too (EVENTS.md).
|
|
311
|
+
this.runClearHandlers([channel]);
|
|
259
312
|
}
|
|
260
313
|
/**
|
|
261
|
-
* Remove all subscribers from all channels.
|
|
314
|
+
* Remove all subscribers from all channels. The `onClear` of each removed handler runs, and
|
|
315
|
+
* each stream ends.
|
|
262
316
|
*/
|
|
263
317
|
clearAll() {
|
|
264
318
|
if (this.options.debug) {
|
|
@@ -266,11 +320,7 @@ export class DefaultEventBus {
|
|
|
266
320
|
}
|
|
267
321
|
this.subscribers.clear();
|
|
268
322
|
this.buffer.clear();
|
|
269
|
-
|
|
270
|
-
for (const end of [...enders])
|
|
271
|
-
end();
|
|
272
|
-
}
|
|
273
|
-
this.streamEnders.clear();
|
|
323
|
+
this.runClearHandlers([...this.clearHandlers.keys()]);
|
|
274
324
|
}
|
|
275
325
|
}
|
|
276
326
|
// =============================================================================
|
|
@@ -357,7 +407,7 @@ export function withEventBusSignal(bus, signal) {
|
|
|
357
407
|
const waitOptions = (options) => ({ signal: options?.signal ?? signal });
|
|
358
408
|
return {
|
|
359
409
|
emit: (channel, data) => bus.emit(channel, data),
|
|
360
|
-
on: (channel, handler) => bus.on(channel, handler),
|
|
410
|
+
on: (channel, handler, options) => bus.on(channel, handler, options),
|
|
361
411
|
once: (channel, options) => bus.once(channel, waitOptions(options)),
|
|
362
412
|
stream: (channel, options) => bus.stream(channel, waitOptions(options)),
|
|
363
413
|
subscriberCount: (channel) => bus.subscriberCount(channel),
|
|
@@ -390,8 +440,8 @@ export function createChannelPrefix(bus, prefix) {
|
|
|
390
440
|
emit(channel, data) {
|
|
391
441
|
bus.emit(prefixed(channel), data);
|
|
392
442
|
},
|
|
393
|
-
on(channel, handler) {
|
|
394
|
-
return bus.on(prefixed(channel), handler);
|
|
443
|
+
on(channel, handler, options) {
|
|
444
|
+
return bus.on(prefixed(channel), handler, options);
|
|
395
445
|
},
|
|
396
446
|
once(channel, options) {
|
|
397
447
|
return bus.once(prefixed(channel), options);
|
|
@@ -459,50 +509,54 @@ export function mapChannel(bus, source, target, transform) {
|
|
|
459
509
|
});
|
|
460
510
|
}
|
|
461
511
|
/**
|
|
462
|
-
*
|
|
512
|
+
* This function sends the last event of `source` to `target` after `delay` without a new event
|
|
513
|
+
* (a debounce). The delay is a `Duration`, such as `ms(300)`. A plain number throws a `TypeError`.
|
|
463
514
|
*
|
|
464
515
|
* @param bus - Event bus
|
|
465
516
|
* @param source - Source channel
|
|
466
517
|
* @param target - Target channel
|
|
467
|
-
* @param delay -
|
|
518
|
+
* @param delay - The time without an event before the send
|
|
468
519
|
* @returns Unsubscribe function
|
|
469
520
|
*/
|
|
470
|
-
export function debounceChannel(bus, source, target, delay) {
|
|
471
|
-
|
|
521
|
+
export function debounceChannel(bus, source, target, delay, options = {}) {
|
|
522
|
+
const delayMs = toMs(delay, "debounceChannel delay");
|
|
523
|
+
const clock = options.clock ?? realClock;
|
|
524
|
+
let cancel = null;
|
|
472
525
|
let lastData;
|
|
473
526
|
const unsub = bus.on(source, (data) => {
|
|
474
527
|
lastData = data;
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
timer = setTimeout(() => {
|
|
528
|
+
cancel?.();
|
|
529
|
+
cancel = clock.after(delayMs, () => {
|
|
530
|
+
cancel = null;
|
|
479
531
|
if (lastData !== undefined) {
|
|
480
532
|
bus.emit(target, lastData);
|
|
481
533
|
}
|
|
482
|
-
|
|
483
|
-
}, delay);
|
|
534
|
+
});
|
|
484
535
|
});
|
|
485
536
|
return () => {
|
|
486
537
|
unsub();
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
}
|
|
538
|
+
cancel?.();
|
|
539
|
+
cancel = null;
|
|
490
540
|
};
|
|
491
541
|
}
|
|
492
542
|
/**
|
|
493
|
-
*
|
|
543
|
+
* This function sends an event of `source` to `target` at most one time in each `interval` (a
|
|
544
|
+
* throttle). It drops the events between. The interval is a `Duration`, such as `seconds(1)`. A
|
|
545
|
+
* plain number throws a `TypeError`.
|
|
494
546
|
*
|
|
495
547
|
* @param bus - Event bus
|
|
496
548
|
* @param source - Source channel
|
|
497
549
|
* @param target - Target channel
|
|
498
|
-
* @param interval -
|
|
550
|
+
* @param interval - The shortest time between two sends
|
|
499
551
|
* @returns Unsubscribe function
|
|
500
552
|
*/
|
|
501
|
-
export function throttleChannel(bus, source, target, interval) {
|
|
502
|
-
|
|
553
|
+
export function throttleChannel(bus, source, target, interval, options = {}) {
|
|
554
|
+
const intervalMs = toMs(interval, "throttleChannel interval");
|
|
555
|
+
const clock = options.clock ?? realClock;
|
|
556
|
+
let lastEmit;
|
|
503
557
|
return bus.on(source, (data) => {
|
|
504
|
-
const now =
|
|
505
|
-
if (now - lastEmit >=
|
|
558
|
+
const now = clock.now();
|
|
559
|
+
if (lastEmit === undefined || now - lastEmit >= intervalMs) {
|
|
506
560
|
lastEmit = now;
|
|
507
561
|
bus.emit(target, data);
|
|
508
562
|
}
|
package/dist/events/bus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"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"}
|
package/dist/events/index.d.ts
CHANGED
|
@@ -27,12 +27,13 @@
|
|
|
27
27
|
* }
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
export type { Event, EventHandler, Unsubscribe, EventBus, TypedEventBus, ChannelMap, SystemChannels, ProcedureChannels, DefaultChannels, EventBusOptions, EventWaitOptions, } from "./types.js";
|
|
30
|
+
export type { Event, EventHandler, Unsubscribe, EventBus, TypedEventBus, ChannelMap, SystemChannels, ProcedureChannels, DefaultChannels, EventBusOptions, EventListenOptions, EventWaitOptions, } from "./types.js";
|
|
31
31
|
export { DefaultEventBus } from "./bus.js";
|
|
32
32
|
export { createEventBus, createTypedEventBus, getGlobalEventBus, resetGlobalEventBus, withEventBusSignal, } from "./bus.js";
|
|
33
33
|
export { EventPublisher, topicMatcher, MAX_SUBSCRIPTION_TOPICS, MAX_TOPIC_LENGTH } from "./publisher.js";
|
|
34
34
|
export type { EventPublisherOptions, TopicRule, TopicCall } from "./publisher.js";
|
|
35
35
|
export { EVENTS_SUBSCRIBE_PATH, SubscriptionError, remoteEvents, subscribeRemote } from "./remote.js";
|
|
36
|
-
export type { EventItem, EventTransport, RemoteEvent, RemoteEventHandler, RemoteEventsOptions, SubscribeInput, SubscribeOptions, Subscription, SubscriptionHooks, } from "./remote.js";
|
|
36
|
+
export type { EventItem, EventTransport, RemoteEvent, RemoteEventHandler, RemoteEventsOptions, ResubscribeBackoff, SubscribeInput, SubscribeOptions, Subscription, SubscriptionHooks, } from "./remote.js";
|
|
37
37
|
export { createChannelPrefix, forwardChannel, mergeChannels, filterChannel, mapChannel, debounceChannel, throttleChannel, } from "./bus.js";
|
|
38
|
+
export type { ChannelTimingOptions } from "./bus.js";
|
|
38
39
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,YAAY,EACV,KAAK,EACL,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzG,YAAY,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtG,YAAY,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,YAAY,EACV,KAAK,EACL,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzG,YAAY,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtG,YAAY,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/events/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAkBH,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,oBAAoB;AACpB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAElB,4FAA4F;AAC5F,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEzG,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AActG,YAAY;AACZ,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/events/publisher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAIxD,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAEzE,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,yFAAyF;IACzF,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,iGAAiG;IACjG,MAAM,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAClE;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAWxE;
|
|
1
|
+
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/events/publisher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAIxD,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAEzE,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,yFAAyF;IACzF,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,mGAAmG;IACnG,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,iGAAiG;IACjG,MAAM,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAClE;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAWxE;AA4KD;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,gGAAgG;IAChG,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IAErD,YAAY,OAAO,EAAE,qBAAqB,EAgBzC;IAED,2FAA2F;IAC3F,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAEvC;IAED,wCAAwC;IACxC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACH,GAAG,IAAI,IAAI,CAEV;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS;CAiBlB"}
|
package/dist/events/publisher.js
CHANGED
|
@@ -53,6 +53,13 @@ class TopicNotFoundError extends Error {
|
|
|
53
53
|
function stoppedError() {
|
|
54
54
|
return Object.assign(new Error("The publisher of the events stops"), { code: "UNAVAILABLE", retryable: true });
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* The error that ends a subscription when `clear()` or `clearAll()` of the bus removes the
|
|
58
|
+
* listener of one of its topics. The subscriber does not resubscribe: the host removed the topic.
|
|
59
|
+
*/
|
|
60
|
+
function clearedError(topic) {
|
|
61
|
+
return Object.assign(new Error(`The host cleared the topic "${topic}", so the subscription ends`), { code: "TOPIC_CLEARED", retryable: false });
|
|
62
|
+
}
|
|
56
63
|
const topicSchema = z.string().min(1).max(MAX_TOPIC_LENGTH);
|
|
57
64
|
const subscribeInput = z.object({
|
|
58
65
|
topics: z.array(topicSchema).min(1).max(MAX_SUBSCRIPTION_TOPICS).describe("The topics of the subscription"),
|
|
@@ -73,7 +80,8 @@ const eventItemSchema = z.discriminatedUnion("type", [
|
|
|
73
80
|
/**
|
|
74
81
|
* One subscription: the listeners on the bus and the queue of its events. It is the async
|
|
75
82
|
* iterator of the stream of the call. `return()`, the abort of the signal of the call and
|
|
76
|
-
* `fail()` remove the listeners.
|
|
83
|
+
* `fail()` remove the listeners. When `clear()` of the bus removes a listener, the subscription
|
|
84
|
+
* gives the events of its queue, and then it ends with `TOPIC_CLEARED`.
|
|
77
85
|
*/
|
|
78
86
|
class TopicSubscription {
|
|
79
87
|
buffer;
|
|
@@ -92,7 +100,8 @@ class TopicSubscription {
|
|
|
92
100
|
this.signal = signal;
|
|
93
101
|
this.onClose = onClose;
|
|
94
102
|
this.confirmation = { type: "subscribed", topics };
|
|
95
|
-
|
|
103
|
+
// Before, clear() removed the listeners, and the subscriber saw no end (EVENTS.md)
|
|
104
|
+
this.unsubscribes = topics.map((topic) => bus.on(topic, (data) => this.push(topic, data), { onClear: () => this.fail(clearedError(topic), { keepQueue: true }) }));
|
|
96
105
|
signal?.addEventListener("abort", this.onAbort, { once: true });
|
|
97
106
|
}
|
|
98
107
|
/** This function closes a subscription whose call aborted before it started. */
|
|
@@ -155,15 +164,20 @@ class TopicSubscription {
|
|
|
155
164
|
[Symbol.asyncIterator]() {
|
|
156
165
|
return this;
|
|
157
166
|
}
|
|
158
|
-
/**
|
|
159
|
-
|
|
167
|
+
/**
|
|
168
|
+
* This function ends the subscription with an error: the reader gets it at its next item. With
|
|
169
|
+
* `keepQueue`, the reader first gets the confirmation and the events of the queue.
|
|
170
|
+
*/
|
|
171
|
+
fail(error, options = {}) {
|
|
160
172
|
if (this.closed)
|
|
161
173
|
return;
|
|
162
174
|
const waiter = this.waiter;
|
|
163
175
|
this.waiter = undefined;
|
|
164
176
|
this.release();
|
|
165
|
-
|
|
166
|
-
|
|
177
|
+
if (!options.keepQueue) {
|
|
178
|
+
this.queue.length = 0;
|
|
179
|
+
this.confirmation = undefined;
|
|
180
|
+
}
|
|
167
181
|
if (waiter)
|
|
168
182
|
waiter.reject(error);
|
|
169
183
|
else
|