@kuindji/reactive 1.0.23 → 1.1.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 +34 -11
- package/dist/action.d.ts +12 -10
- package/dist/action.js +23 -16
- package/dist/actionBus.d.ts +8 -4
- package/dist/actionBus.js +37 -8
- package/dist/actionMap.d.ts +21 -19
- package/dist/actionMap.js +12 -9
- package/dist/event.d.ts +3 -2
- package/dist/event.js +160 -109
- package/dist/eventBus.d.ts +5 -3
- package/dist/eventBus.js +158 -104
- package/dist/index.d.ts +7 -7
- package/dist/index.js +7 -23
- package/dist/lib/actionMapInternal.d.ts +8 -0
- package/dist/lib/actionMapInternal.js +8 -0
- package/dist/lib/asyncCall.js +1 -4
- package/dist/lib/isPromiseLike.d.ts +1 -0
- package/dist/lib/isPromiseLike.js +5 -0
- package/dist/lib/listenerSorter.js +1 -4
- package/dist/lib/normalizeEventOptions.d.ts +13 -0
- package/dist/lib/normalizeEventOptions.js +21 -0
- package/dist/lib/tagsIntersect.js +1 -4
- package/dist/lib/types.js +4 -7
- package/dist/react/ErrorBoundary.d.ts +1 -1
- package/dist/react/ErrorBoundary.js +10 -13
- package/dist/react/listenerOptionsEqual.d.ts +27 -0
- package/dist/react/listenerOptionsEqual.js +121 -0
- package/dist/react/useAction.d.ts +3 -3
- package/dist/react/useAction.js +25 -25
- package/dist/react/useActionBus.d.ts +4 -4
- package/dist/react/useActionBus.js +41 -14
- package/dist/react/useActionMap.d.ts +4 -4
- package/dist/react/useActionMap.js +46 -16
- package/dist/react/useEvent.d.ts +2 -2
- package/dist/react/useEvent.js +30 -17
- package/dist/react/useEventBus.d.ts +2 -2
- package/dist/react/useEventBus.js +27 -26
- package/dist/react/useListenToAction.d.ts +1 -1
- package/dist/react/useListenToAction.js +24 -48
- package/dist/react/useListenToActionBus.d.ts +3 -3
- package/dist/react/useListenToActionBus.js +22 -19
- package/dist/react/useListenToEvent.d.ts +2 -2
- package/dist/react/useListenToEvent.js +13 -14
- package/dist/react/useListenToEventBus.d.ts +3 -3
- package/dist/react/useListenToEventBus.js +14 -15
- package/dist/react/useListenToStoreChanges.d.ts +3 -3
- package/dist/react/useListenToStoreChanges.js +12 -13
- package/dist/react/useReconciledListener.d.ts +33 -0
- package/dist/react/useReconciledListener.js +44 -0
- package/dist/react/useStore.d.ts +2 -2
- package/dist/react/useStore.js +72 -23
- package/dist/react/useStoreState.d.ts +2 -2
- package/dist/react/useStoreState.js +16 -26
- package/dist/react.d.ts +13 -13
- package/dist/react.js +13 -29
- package/dist/store.d.ts +9 -8
- package/dist/store.js +116 -53
- package/package.json +13 -3
package/dist/eventBus.js
CHANGED
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const types_1 = require("./lib/types");
|
|
1
|
+
import { createEvent } from "./event.js";
|
|
2
|
+
import isPromiseLike from "./lib/isPromiseLike.js";
|
|
3
|
+
import { normalizeEventOptions } from "./lib/normalizeEventOptions.js";
|
|
4
|
+
import { ProxyType, TriggerReturnType, } from "./lib/types.js";
|
|
6
5
|
function proxyReturnTypeToTriggerReturnType(proxyType) {
|
|
7
6
|
switch (proxyType) {
|
|
8
|
-
case
|
|
7
|
+
case ProxyType.TRIGGER:
|
|
9
8
|
return { returnType: null, resolve: false };
|
|
10
|
-
case
|
|
11
|
-
return { returnType:
|
|
12
|
-
case
|
|
13
|
-
return { returnType:
|
|
14
|
-
case
|
|
15
|
-
return { returnType:
|
|
16
|
-
case
|
|
17
|
-
return { returnType:
|
|
18
|
-
case
|
|
19
|
-
return { returnType:
|
|
20
|
-
case
|
|
21
|
-
return { returnType:
|
|
22
|
-
case
|
|
23
|
-
return { returnType:
|
|
24
|
-
case
|
|
25
|
-
return { returnType:
|
|
26
|
-
case
|
|
9
|
+
case ProxyType.RAW:
|
|
10
|
+
return { returnType: TriggerReturnType.RAW, resolve: false };
|
|
11
|
+
case ProxyType.ALL:
|
|
12
|
+
return { returnType: TriggerReturnType.ALL, resolve: false };
|
|
13
|
+
case ProxyType.CONCAT:
|
|
14
|
+
return { returnType: TriggerReturnType.CONCAT, resolve: false };
|
|
15
|
+
case ProxyType.MERGE:
|
|
16
|
+
return { returnType: TriggerReturnType.MERGE, resolve: false };
|
|
17
|
+
case ProxyType.LAST:
|
|
18
|
+
return { returnType: TriggerReturnType.LAST, resolve: false };
|
|
19
|
+
case ProxyType.PIPE:
|
|
20
|
+
return { returnType: TriggerReturnType.PIPE, resolve: false };
|
|
21
|
+
case ProxyType.FIRST:
|
|
22
|
+
return { returnType: TriggerReturnType.FIRST, resolve: false };
|
|
23
|
+
case ProxyType.UNTIL_TRUE:
|
|
24
|
+
return { returnType: TriggerReturnType.UNTIL_TRUE, resolve: false };
|
|
25
|
+
case ProxyType.UNTIL_FALSE:
|
|
27
26
|
return {
|
|
28
|
-
returnType:
|
|
27
|
+
returnType: TriggerReturnType.UNTIL_FALSE,
|
|
29
28
|
resolve: false,
|
|
30
29
|
};
|
|
31
|
-
case
|
|
30
|
+
case ProxyType.FIRST_NON_EMPTY:
|
|
32
31
|
return {
|
|
33
|
-
returnType:
|
|
32
|
+
returnType: TriggerReturnType.FIRST_NON_EMPTY,
|
|
34
33
|
resolve: false,
|
|
35
34
|
};
|
|
36
|
-
case
|
|
35
|
+
case ProxyType.RESOLVE_ALL:
|
|
37
36
|
return {
|
|
38
|
-
returnType:
|
|
37
|
+
returnType: TriggerReturnType.ALL,
|
|
39
38
|
resolve: true,
|
|
40
39
|
};
|
|
41
|
-
case
|
|
40
|
+
case ProxyType.RESOLVE_MERGE:
|
|
42
41
|
return {
|
|
43
|
-
returnType:
|
|
42
|
+
returnType: TriggerReturnType.MERGE,
|
|
44
43
|
resolve: true,
|
|
45
44
|
};
|
|
46
|
-
case
|
|
45
|
+
case ProxyType.RESOLVE_CONCAT:
|
|
47
46
|
return {
|
|
48
|
-
returnType:
|
|
47
|
+
returnType: TriggerReturnType.CONCAT,
|
|
49
48
|
resolve: true,
|
|
50
49
|
};
|
|
51
|
-
case
|
|
50
|
+
case ProxyType.RESOLVE_FIRST:
|
|
52
51
|
return {
|
|
53
|
-
returnType:
|
|
52
|
+
returnType: TriggerReturnType.FIRST,
|
|
54
53
|
resolve: true,
|
|
55
54
|
};
|
|
56
|
-
case
|
|
55
|
+
case ProxyType.RESOLVE_FIRST_NON_EMPTY:
|
|
57
56
|
return {
|
|
58
|
-
returnType:
|
|
57
|
+
returnType: TriggerReturnType.FIRST_NON_EMPTY,
|
|
59
58
|
resolve: true,
|
|
60
59
|
};
|
|
61
|
-
case
|
|
60
|
+
case ProxyType.RESOLVE_LAST:
|
|
62
61
|
return {
|
|
63
|
-
returnType:
|
|
62
|
+
returnType: TriggerReturnType.LAST,
|
|
64
63
|
resolve: true,
|
|
65
64
|
};
|
|
66
|
-
case
|
|
65
|
+
case ProxyType.RESOLVE_PIPE:
|
|
67
66
|
return {
|
|
68
|
-
returnType:
|
|
67
|
+
returnType: TriggerReturnType.PIPE,
|
|
69
68
|
resolve: true,
|
|
70
69
|
};
|
|
71
70
|
default:
|
|
72
71
|
return { returnType: null, resolve: false };
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
|
-
function createEventBus(eventBusOptions) {
|
|
74
|
+
export function createEventBus(eventBusOptions) {
|
|
76
75
|
const events = new Map();
|
|
76
|
+
let currentEventBusOptions = eventBusOptions;
|
|
77
77
|
let currentTagsFilter = null;
|
|
78
78
|
let interceptor = null;
|
|
79
79
|
const proxyListeners = [];
|
|
80
80
|
const eventSources = [];
|
|
81
|
-
const asterisk =
|
|
82
|
-
const errorEvent =
|
|
81
|
+
const asterisk = createEvent();
|
|
82
|
+
const errorEvent = createEvent();
|
|
83
83
|
const _getProxyListener = ({ remoteEventName, localEventName, returnType, resolve, localEventNamePrefix, }) => {
|
|
84
84
|
let listener = proxyListeners.find((listener) => listener.returnType === returnType
|
|
85
85
|
&& listener.resolve === resolve
|
|
@@ -132,16 +132,37 @@ function createEventBus(eventBusOptions) {
|
|
|
132
132
|
};
|
|
133
133
|
const add = (name, options) => {
|
|
134
134
|
if (!events.has(name)) {
|
|
135
|
-
events.set(name,
|
|
135
|
+
events.set(name, createEvent(options));
|
|
136
136
|
}
|
|
137
137
|
};
|
|
138
138
|
const _getOrAddEvent = (name) => {
|
|
139
139
|
var _a;
|
|
140
140
|
if (!events.has(name)) {
|
|
141
|
-
events.set(name,
|
|
141
|
+
events.set(name, createEvent((_a = currentEventBusOptions === null || currentEventBusOptions === void 0 ? void 0 : currentEventBusOptions.eventOptions) === null || _a === void 0 ? void 0 : _a[name]));
|
|
142
142
|
}
|
|
143
143
|
return events.get(name);
|
|
144
144
|
};
|
|
145
|
+
// Parameter is intentionally map-independent (like `add`) so that the
|
|
146
|
+
// method type is identical across instantiations and a typed bus stays
|
|
147
|
+
// assignable to BaseEventBus (which the React listener hooks rely on).
|
|
148
|
+
const setOptions = (options) => {
|
|
149
|
+
currentEventBusOptions = options;
|
|
150
|
+
const eventOptions = options === null || options === void 0 ? void 0 : options.eventOptions;
|
|
151
|
+
if (!eventOptions) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
// Apply present entries to already-created events. Removed entries are
|
|
155
|
+
// intentionally left as-is (the bus can change an event's options but
|
|
156
|
+
// does not un-set them).
|
|
157
|
+
Object.keys(eventOptions).forEach((name) => {
|
|
158
|
+
const e = events.get(name);
|
|
159
|
+
if (e) {
|
|
160
|
+
// Normalize so fields removed from a present entry reset to
|
|
161
|
+
// their defaults (event.setOptions merges, it does not reset).
|
|
162
|
+
e.setOptions(normalizeEventOptions(eventOptions[name]));
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
};
|
|
145
166
|
const intercept = (fn) => {
|
|
146
167
|
interceptor = fn;
|
|
147
168
|
};
|
|
@@ -163,7 +184,7 @@ function createEventBus(eventBusOptions) {
|
|
|
163
184
|
return;
|
|
164
185
|
}
|
|
165
186
|
if (evs.subscribed.indexOf(name) === -1) {
|
|
166
|
-
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType ||
|
|
187
|
+
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType || ProxyType.TRIGGER);
|
|
167
188
|
const listener = _getProxyListener({
|
|
168
189
|
localEventName: null,
|
|
169
190
|
remoteEventName: name,
|
|
@@ -171,7 +192,7 @@ function createEventBus(eventBusOptions) {
|
|
|
171
192
|
resolve,
|
|
172
193
|
localEventNamePrefix: null,
|
|
173
194
|
});
|
|
174
|
-
evs.eventSource.on(name, listener.listener, evs.eventSource
|
|
195
|
+
evs.eventSource.on(name, listener.listener, evs.eventSource);
|
|
175
196
|
evs.subscribed.push(name);
|
|
176
197
|
}
|
|
177
198
|
});
|
|
@@ -195,23 +216,28 @@ function createEventBus(eventBusOptions) {
|
|
|
195
216
|
const isEmpty = !e.hasListener();
|
|
196
217
|
eventSources.forEach((evs) => {
|
|
197
218
|
const inx = evs.subscribed.indexOf(name);
|
|
198
|
-
if (inx !== -1) {
|
|
219
|
+
if (inx !== -1 && isEmpty) {
|
|
199
220
|
evs.subscribed.splice(inx, 1);
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
evs.eventSource.un(name, listener.listener, evs.eventSource, tag);
|
|
210
|
-
}
|
|
221
|
+
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType || ProxyType.TRIGGER);
|
|
222
|
+
const listener = _getProxyListener({
|
|
223
|
+
localEventName: null,
|
|
224
|
+
remoteEventName: name,
|
|
225
|
+
returnType,
|
|
226
|
+
resolve,
|
|
227
|
+
localEventNamePrefix: null,
|
|
228
|
+
});
|
|
229
|
+
evs.eventSource.un(name, listener.listener, evs.eventSource, tag);
|
|
211
230
|
}
|
|
212
231
|
});
|
|
213
232
|
}
|
|
214
233
|
};
|
|
234
|
+
const updateListenerOptions = (name, handler, context, nextOptions) => {
|
|
235
|
+
const e = events.get(name);
|
|
236
|
+
if (!e) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
return e.updateListenerOptions(handler, context !== null && context !== void 0 ? context : null, nextOptions);
|
|
240
|
+
};
|
|
215
241
|
const _trigger = (name, args, returnType, resolve) => {
|
|
216
242
|
if (name === "*") {
|
|
217
243
|
return;
|
|
@@ -223,43 +249,57 @@ function createEventBus(eventBusOptions) {
|
|
|
223
249
|
}
|
|
224
250
|
}
|
|
225
251
|
const e = _getOrAddEvent(name);
|
|
252
|
+
const handleError = (error) => {
|
|
253
|
+
errorEvent.trigger({
|
|
254
|
+
name,
|
|
255
|
+
error: error instanceof Error
|
|
256
|
+
? error
|
|
257
|
+
: new Error(String(error)),
|
|
258
|
+
args,
|
|
259
|
+
type: "event",
|
|
260
|
+
});
|
|
261
|
+
if (errorEvent.hasListener()) {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
throw error;
|
|
265
|
+
};
|
|
226
266
|
const runner = () => {
|
|
227
267
|
let result;
|
|
228
268
|
switch (returnType) {
|
|
229
|
-
case
|
|
269
|
+
case TriggerReturnType.RAW:
|
|
230
270
|
result = e.raw(...args);
|
|
231
271
|
break;
|
|
232
|
-
case
|
|
272
|
+
case TriggerReturnType.ALL:
|
|
233
273
|
result = resolve ? e.resolveAll(...args) : e.all(...args);
|
|
234
274
|
break;
|
|
235
|
-
case
|
|
275
|
+
case TriggerReturnType.CONCAT:
|
|
236
276
|
result = resolve
|
|
237
277
|
? e.resolveConcat(...args)
|
|
238
278
|
: e.concat(...args);
|
|
239
279
|
break;
|
|
240
|
-
case
|
|
280
|
+
case TriggerReturnType.MERGE:
|
|
241
281
|
result = resolve
|
|
242
282
|
? e.resolveMerge(...args)
|
|
243
283
|
: e.merge(...args);
|
|
244
284
|
break;
|
|
245
|
-
case
|
|
285
|
+
case TriggerReturnType.LAST:
|
|
246
286
|
result = resolve ? e.resolveLast(...args) : e.last(...args);
|
|
247
287
|
break;
|
|
248
|
-
case
|
|
288
|
+
case TriggerReturnType.PIPE:
|
|
249
289
|
result = resolve ? e.resolvePipe(...args) : e.pipe(...args);
|
|
250
290
|
break;
|
|
251
|
-
case
|
|
291
|
+
case TriggerReturnType.FIRST:
|
|
252
292
|
result = resolve
|
|
253
293
|
? e.resolveFirst(...args)
|
|
254
294
|
: e.first(...args);
|
|
255
295
|
break;
|
|
256
|
-
case
|
|
296
|
+
case TriggerReturnType.UNTIL_TRUE:
|
|
257
297
|
result = e.untilTrue(...args);
|
|
258
298
|
break;
|
|
259
|
-
case
|
|
299
|
+
case TriggerReturnType.UNTIL_FALSE:
|
|
260
300
|
result = e.untilFalse(...args);
|
|
261
301
|
break;
|
|
262
|
-
case
|
|
302
|
+
case TriggerReturnType.FIRST_NON_EMPTY:
|
|
263
303
|
result = resolve
|
|
264
304
|
? e.resolveFirstNonEmpty(...args)
|
|
265
305
|
: e.firstNonEmpty(...args);
|
|
@@ -279,89 +319,82 @@ function createEventBus(eventBusOptions) {
|
|
|
279
319
|
result = runner();
|
|
280
320
|
}
|
|
281
321
|
asterisk.trigger(name, args, currentTagsFilter);
|
|
322
|
+
if (isPromiseLike(result)) {
|
|
323
|
+
return Promise.resolve(result).catch(handleError);
|
|
324
|
+
}
|
|
282
325
|
return result;
|
|
283
326
|
}
|
|
284
327
|
catch (error) {
|
|
285
|
-
|
|
286
|
-
name,
|
|
287
|
-
error: error instanceof Error
|
|
288
|
-
? error
|
|
289
|
-
: new Error(String(error)),
|
|
290
|
-
args,
|
|
291
|
-
type: "event",
|
|
292
|
-
});
|
|
293
|
-
if (errorEvent.hasListener()) {
|
|
294
|
-
return undefined;
|
|
295
|
-
}
|
|
296
|
-
throw error;
|
|
328
|
+
return handleError(error);
|
|
297
329
|
}
|
|
298
330
|
};
|
|
299
331
|
const trigger = (name, ...args) => {
|
|
300
332
|
return _trigger(name, args, null, false);
|
|
301
333
|
};
|
|
302
334
|
const first = (name, ...args) => {
|
|
303
|
-
return _trigger(name, args,
|
|
335
|
+
return _trigger(name, args, TriggerReturnType.FIRST, false);
|
|
304
336
|
};
|
|
305
337
|
const resolveFirst = (name, ...args) => {
|
|
306
|
-
return _trigger(name, args,
|
|
338
|
+
return _trigger(name, args, TriggerReturnType.FIRST, true);
|
|
307
339
|
};
|
|
308
340
|
const all = (name, ...args) => {
|
|
309
|
-
return _trigger(name, args,
|
|
341
|
+
return _trigger(name, args, TriggerReturnType.ALL, false);
|
|
310
342
|
};
|
|
311
343
|
const resolveAll = (name, ...args) => {
|
|
312
|
-
return _trigger(name, args,
|
|
344
|
+
return _trigger(name, args, TriggerReturnType.ALL, true);
|
|
313
345
|
};
|
|
314
346
|
const last = (name, ...args) => {
|
|
315
|
-
return _trigger(name, args,
|
|
347
|
+
return _trigger(name, args, TriggerReturnType.LAST, false);
|
|
316
348
|
};
|
|
317
349
|
const resolveLast = (name, ...args) => {
|
|
318
|
-
return _trigger(name, args,
|
|
350
|
+
return _trigger(name, args, TriggerReturnType.LAST, true);
|
|
319
351
|
};
|
|
320
352
|
const merge = (name, ...args) => {
|
|
321
|
-
return _trigger(name, args,
|
|
353
|
+
return _trigger(name, args, TriggerReturnType.MERGE, false);
|
|
322
354
|
};
|
|
323
355
|
const resolveMerge = (name, ...args) => {
|
|
324
|
-
return _trigger(name, args,
|
|
356
|
+
return _trigger(name, args, TriggerReturnType.MERGE, true);
|
|
325
357
|
};
|
|
326
358
|
const concat = (name, ...args) => {
|
|
327
|
-
return _trigger(name, args,
|
|
359
|
+
return _trigger(name, args, TriggerReturnType.CONCAT, false);
|
|
328
360
|
};
|
|
329
361
|
const resolveConcat = (name, ...args) => {
|
|
330
|
-
return _trigger(name, args,
|
|
362
|
+
return _trigger(name, args, TriggerReturnType.CONCAT, true);
|
|
331
363
|
};
|
|
332
364
|
const firstNonEmpty = (name, ...args) => {
|
|
333
|
-
return _trigger(name, args,
|
|
365
|
+
return _trigger(name, args, TriggerReturnType.FIRST_NON_EMPTY, false);
|
|
334
366
|
};
|
|
335
367
|
const resolveFirstNonEmpty = (name, ...args) => {
|
|
336
|
-
return _trigger(name, args,
|
|
368
|
+
return _trigger(name, args, TriggerReturnType.FIRST_NON_EMPTY, true);
|
|
337
369
|
};
|
|
338
370
|
const untilTrue = (name, ...args) => {
|
|
339
|
-
return _trigger(name, args,
|
|
371
|
+
return _trigger(name, args, TriggerReturnType.UNTIL_TRUE, false);
|
|
340
372
|
};
|
|
341
373
|
const untilFalse = (name, ...args) => {
|
|
342
|
-
return _trigger(name, args,
|
|
374
|
+
return _trigger(name, args, TriggerReturnType.UNTIL_FALSE, false);
|
|
343
375
|
};
|
|
344
376
|
const pipe = (name, ...args) => {
|
|
345
|
-
return _trigger(name, args,
|
|
377
|
+
return _trigger(name, args, TriggerReturnType.PIPE, false);
|
|
346
378
|
};
|
|
347
379
|
const resolvePipe = (name, ...args) => {
|
|
348
|
-
return _trigger(name, args,
|
|
380
|
+
return _trigger(name, args, TriggerReturnType.PIPE, true);
|
|
349
381
|
};
|
|
350
382
|
const raw = (name, ...args) => {
|
|
351
|
-
return _trigger(name, args,
|
|
383
|
+
return _trigger(name, args, TriggerReturnType.RAW, false);
|
|
352
384
|
};
|
|
353
385
|
const withTags = (tags, callback) => {
|
|
386
|
+
const prevTagsFilter = currentTagsFilter;
|
|
354
387
|
currentTagsFilter = tags;
|
|
355
388
|
try {
|
|
356
389
|
return callback();
|
|
357
390
|
}
|
|
358
391
|
finally {
|
|
359
|
-
currentTagsFilter =
|
|
392
|
+
currentTagsFilter = prevTagsFilter;
|
|
360
393
|
}
|
|
361
394
|
};
|
|
362
395
|
const reset = () => {
|
|
363
396
|
if (eventSources.length > 0) {
|
|
364
|
-
eventSources.forEach((evs) => {
|
|
397
|
+
eventSources.slice().forEach((evs) => {
|
|
365
398
|
removeEventSource(evs.eventSource);
|
|
366
399
|
});
|
|
367
400
|
}
|
|
@@ -383,7 +416,7 @@ function createEventBus(eventBusOptions) {
|
|
|
383
416
|
});
|
|
384
417
|
};
|
|
385
418
|
const relay = ({ eventSource, remoteEventName, localEventName, proxyType, localEventNamePrefix, }) => {
|
|
386
|
-
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(proxyType ||
|
|
419
|
+
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(proxyType || ProxyType.TRIGGER);
|
|
387
420
|
const listener = _getProxyListener({
|
|
388
421
|
localEventName: localEventName || null,
|
|
389
422
|
remoteEventName,
|
|
@@ -399,7 +432,7 @@ function createEventBus(eventBusOptions) {
|
|
|
399
432
|
}
|
|
400
433
|
};
|
|
401
434
|
const unrelay = ({ eventSource, remoteEventName, localEventName, proxyType, localEventNamePrefix, }) => {
|
|
402
|
-
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(proxyType ||
|
|
435
|
+
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(proxyType || ProxyType.TRIGGER);
|
|
403
436
|
const listener = _getProxyListener({
|
|
404
437
|
localEventName: localEventName || null,
|
|
405
438
|
remoteEventName,
|
|
@@ -420,9 +453,28 @@ function createEventBus(eventBusOptions) {
|
|
|
420
453
|
if (eventSources.find((evs) => evs.eventSource.name === eventSource.name)) {
|
|
421
454
|
return;
|
|
422
455
|
}
|
|
423
|
-
|
|
456
|
+
const eventSourceData = {
|
|
424
457
|
eventSource,
|
|
425
458
|
subscribed: [],
|
|
459
|
+
};
|
|
460
|
+
eventSources.push(eventSourceData);
|
|
461
|
+
events.forEach((event, name) => {
|
|
462
|
+
if (!event.hasListener()
|
|
463
|
+
|| eventSource.accepts === false
|
|
464
|
+
|| (typeof eventSource.accepts === "function"
|
|
465
|
+
&& !eventSource.accepts(name))) {
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(eventSource.proxyType || ProxyType.TRIGGER);
|
|
469
|
+
const listener = _getProxyListener({
|
|
470
|
+
localEventName: null,
|
|
471
|
+
remoteEventName: name,
|
|
472
|
+
returnType,
|
|
473
|
+
resolve,
|
|
474
|
+
localEventNamePrefix: null,
|
|
475
|
+
});
|
|
476
|
+
eventSource.on(name, listener.listener, eventSource);
|
|
477
|
+
eventSourceData.subscribed.push(name);
|
|
426
478
|
});
|
|
427
479
|
};
|
|
428
480
|
const removeEventSource = (eventSource) => {
|
|
@@ -433,7 +485,7 @@ function createEventBus(eventBusOptions) {
|
|
|
433
485
|
if (inx !== -1) {
|
|
434
486
|
const evs = eventSources[inx];
|
|
435
487
|
evs.subscribed.forEach((subscribedName) => {
|
|
436
|
-
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType ||
|
|
488
|
+
const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType || ProxyType.TRIGGER);
|
|
437
489
|
const listener = _getProxyListener({
|
|
438
490
|
localEventName: null,
|
|
439
491
|
remoteEventName: subscribedName,
|
|
@@ -465,6 +517,7 @@ function createEventBus(eventBusOptions) {
|
|
|
465
517
|
remove: un,
|
|
466
518
|
/** @alias removeListener */
|
|
467
519
|
unsubscribe: un,
|
|
520
|
+
updateListenerOptions,
|
|
468
521
|
trigger,
|
|
469
522
|
/** @alias trigger */
|
|
470
523
|
emit: trigger,
|
|
@@ -472,6 +525,7 @@ function createEventBus(eventBusOptions) {
|
|
|
472
525
|
dispatch: trigger,
|
|
473
526
|
get,
|
|
474
527
|
add,
|
|
528
|
+
setOptions,
|
|
475
529
|
first,
|
|
476
530
|
resolveFirst,
|
|
477
531
|
all,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from "./action";
|
|
2
|
-
export * from "./actionBus";
|
|
3
|
-
export * from "./actionMap";
|
|
4
|
-
export * from "./event";
|
|
5
|
-
export * from "./eventBus";
|
|
6
|
-
export * from "./lib/types";
|
|
7
|
-
export * from "./store";
|
|
1
|
+
export * from "./action.js";
|
|
2
|
+
export * from "./actionBus.js";
|
|
3
|
+
export * from "./actionMap.js";
|
|
4
|
+
export * from "./event.js";
|
|
5
|
+
export * from "./eventBus.js";
|
|
6
|
+
export * from "./lib/types.js";
|
|
7
|
+
export * from "./store.js";
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./action"), exports);
|
|
18
|
-
__exportStar(require("./actionBus"), exports);
|
|
19
|
-
__exportStar(require("./actionMap"), exports);
|
|
20
|
-
__exportStar(require("./event"), exports);
|
|
21
|
-
__exportStar(require("./eventBus"), exports);
|
|
22
|
-
__exportStar(require("./lib/types"), exports);
|
|
23
|
-
__exportStar(require("./store"), exports);
|
|
1
|
+
export * from "./action.js";
|
|
2
|
+
export * from "./actionBus.js";
|
|
3
|
+
export * from "./actionMap.js";
|
|
4
|
+
export * from "./event.js";
|
|
5
|
+
export * from "./eventBus.js";
|
|
6
|
+
export * from "./lib/types.js";
|
|
7
|
+
export * from "./store.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal-only symbol used to expose an in-place setter for an action map's
|
|
3
|
+
* forwarded error listeners. Lives under src/lib (which is not re-exported by
|
|
4
|
+
* the package root in index.ts) so it does not become part of the public API
|
|
5
|
+
* surface. Imported by createActionMap (to attach the setter) and by
|
|
6
|
+
* useActionMap (to call it during reconciliation).
|
|
7
|
+
*/
|
|
8
|
+
export declare const ActionMapSetErrorListeners: unique symbol;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal-only symbol used to expose an in-place setter for an action map's
|
|
3
|
+
* forwarded error listeners. Lives under src/lib (which is not re-exported by
|
|
4
|
+
* the package root in index.ts) so it does not become part of the public API
|
|
5
|
+
* surface. Imported by createActionMap (to attach the setter) and by
|
|
6
|
+
* useActionMap (to call it during reconciliation).
|
|
7
|
+
*/
|
|
8
|
+
export const ActionMapSetErrorListeners = Symbol("actionMapSetErrorListeners");
|
package/dist/lib/asyncCall.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = asyncCall;
|
|
4
|
-
function asyncCall(fn, context, args, timeout) {
|
|
1
|
+
export default function asyncCall(fn, context, args, timeout) {
|
|
5
2
|
return new Promise((resolve, reject) => {
|
|
6
3
|
const newArgs = [...(args || [])];
|
|
7
4
|
setTimeout(() => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function isPromiseLike<T = unknown>(value: unknown): value is PromiseLike<T>;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = listenerSorter;
|
|
4
|
-
function listenerSorter(l1, l2) {
|
|
1
|
+
export default function listenerSorter(l1, l2) {
|
|
5
2
|
const f1 = l1.alwaysFirst === true ? 1 : 0, f2 = l2.alwaysFirst === true ? 1 : 0, ls1 = l1.alwaysLast === true ? 1 : 0, ls2 = l2.alwaysLast === true ? 1 : 0;
|
|
6
3
|
if (f1 === 1 || f2 === 1) {
|
|
7
4
|
return f1 === f2 ? 0 : f1 > f2 ? -1 : 1;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EventOptions } from "../event.js";
|
|
2
|
+
import type { BaseHandler } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Produces a complete {@link EventOptions} object with every field set to the
|
|
5
|
+
* provided value or its createEvent default. Used by the reconciliation paths
|
|
6
|
+
* (useEvent and eventBus.setOptions) so that applying options via the
|
|
7
|
+
* merge-based event.setOptions also resets fields that were removed across
|
|
8
|
+
* renders, instead of leaving stale values from a previous render.
|
|
9
|
+
*
|
|
10
|
+
* Internal-only: this module lives under src/lib (not re-exported by the
|
|
11
|
+
* package root) and is not part of the public API surface.
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeEventOptions(options?: EventOptions<BaseHandler> | null): EventOptions<BaseHandler>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Produces a complete {@link EventOptions} object with every field set to the
|
|
3
|
+
* provided value or its createEvent default. Used by the reconciliation paths
|
|
4
|
+
* (useEvent and eventBus.setOptions) so that applying options via the
|
|
5
|
+
* merge-based event.setOptions also resets fields that were removed across
|
|
6
|
+
* renders, instead of leaving stale values from a previous render.
|
|
7
|
+
*
|
|
8
|
+
* Internal-only: this module lives under src/lib (not re-exported by the
|
|
9
|
+
* package root) and is not part of the public API surface.
|
|
10
|
+
*/
|
|
11
|
+
export function normalizeEventOptions(options) {
|
|
12
|
+
var _a, _b, _c, _d, _e, _f;
|
|
13
|
+
return {
|
|
14
|
+
async: (_a = options === null || options === void 0 ? void 0 : options.async) !== null && _a !== void 0 ? _a : null,
|
|
15
|
+
limit: (_b = options === null || options === void 0 ? void 0 : options.limit) !== null && _b !== void 0 ? _b : null,
|
|
16
|
+
autoTrigger: (_c = options === null || options === void 0 ? void 0 : options.autoTrigger) !== null && _c !== void 0 ? _c : null,
|
|
17
|
+
filter: (_d = options === null || options === void 0 ? void 0 : options.filter) !== null && _d !== void 0 ? _d : null,
|
|
18
|
+
filterContext: (_e = options === null || options === void 0 ? void 0 : options.filterContext) !== null && _e !== void 0 ? _e : null,
|
|
19
|
+
maxListeners: (_f = options === null || options === void 0 ? void 0 : options.maxListeners) !== null && _f !== void 0 ? _f : 0,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = tagsIntersect;
|
|
4
|
-
function tagsIntersect(t1, t2) {
|
|
1
|
+
export default function tagsIntersect(t1, t2) {
|
|
5
2
|
for (const tag of t1) {
|
|
6
3
|
if (t2.indexOf(tag) !== -1) {
|
|
7
4
|
return true;
|
package/dist/lib/types.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProxyType = exports.TriggerReturnType = void 0;
|
|
4
|
-
var TriggerReturnType;
|
|
1
|
+
export var TriggerReturnType;
|
|
5
2
|
(function (TriggerReturnType) {
|
|
6
3
|
TriggerReturnType["RAW"] = "raw";
|
|
7
4
|
TriggerReturnType["ALL"] = "all";
|
|
@@ -13,8 +10,8 @@ var TriggerReturnType;
|
|
|
13
10
|
TriggerReturnType["UNTIL_TRUE"] = "true";
|
|
14
11
|
TriggerReturnType["UNTIL_FALSE"] = "false";
|
|
15
12
|
TriggerReturnType["FIRST_NON_EMPTY"] = "nonempty";
|
|
16
|
-
})(TriggerReturnType || (
|
|
17
|
-
var ProxyType;
|
|
13
|
+
})(TriggerReturnType || (TriggerReturnType = {}));
|
|
14
|
+
export var ProxyType;
|
|
18
15
|
(function (ProxyType) {
|
|
19
16
|
ProxyType["TRIGGER"] = "trigger";
|
|
20
17
|
ProxyType["RAW"] = "raw";
|
|
@@ -34,4 +31,4 @@ var ProxyType;
|
|
|
34
31
|
ProxyType["RESOLVE_FIRST_NON_EMPTY"] = "resolveFirstNonEmpty";
|
|
35
32
|
ProxyType["RESOLVE_LAST"] = "resolveLast";
|
|
36
33
|
ProxyType["RESOLVE_PIPE"] = "resolvePipe";
|
|
37
|
-
})(ProxyType || (
|
|
34
|
+
})(ProxyType || (ProxyType = {}));
|