@kuindji/reactive 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +985 -0
  2. package/dist/action.d.ts +49 -0
  3. package/dist/action.js +77 -0
  4. package/dist/actionBus.d.ts +43 -0
  5. package/dist/actionBus.js +81 -0
  6. package/dist/actionMap.d.ts +23 -0
  7. package/dist/actionMap.js +26 -0
  8. package/dist/event.d.ts +143 -0
  9. package/dist/event.js +538 -0
  10. package/dist/eventBus.d.ts +115 -0
  11. package/dist/eventBus.js +508 -0
  12. package/dist/index.d.ts +5 -0
  13. package/dist/index.js +21 -0
  14. package/dist/lib/asyncCall.d.ts +1 -0
  15. package/dist/lib/asyncCall.js +17 -0
  16. package/dist/lib/listenerSorter.d.ts +5 -0
  17. package/dist/lib/listenerSorter.js +13 -0
  18. package/dist/lib/tagsIntersect.d.ts +1 -0
  19. package/dist/lib/tagsIntersect.js +11 -0
  20. package/dist/lib/types.d.ts +49 -0
  21. package/dist/lib/types.js +37 -0
  22. package/dist/react/ErrorBoundary.d.ts +10 -0
  23. package/dist/react/ErrorBoundary.js +25 -0
  24. package/dist/react/useAction.d.ts +21 -0
  25. package/dist/react/useAction.js +66 -0
  26. package/dist/react/useActionBus.d.ts +38 -0
  27. package/dist/react/useActionBus.js +44 -0
  28. package/dist/react/useActionMap.d.ts +23 -0
  29. package/dist/react/useActionMap.js +25 -0
  30. package/dist/react/useEvent.d.ts +47 -0
  31. package/dist/react/useEvent.js +66 -0
  32. package/dist/react/useEventBus.d.ts +117 -0
  33. package/dist/react/useEventBus.js +66 -0
  34. package/dist/react/useListenToAction.d.ts +3 -0
  35. package/dist/react/useListenToAction.js +38 -0
  36. package/dist/react/useListenToEvent.d.ts +4 -0
  37. package/dist/react/useListenToEvent.js +34 -0
  38. package/dist/react/useListenToEventBus.d.ts +5 -0
  39. package/dist/react/useListenToEventBus.js +37 -0
  40. package/dist/react/useStore.d.ts +51 -0
  41. package/dist/react/useStore.js +30 -0
  42. package/dist/react/useStoreState.d.ts +3 -0
  43. package/dist/react/useStoreState.js +32 -0
  44. package/dist/react.d.ts +10 -0
  45. package/dist/react.js +26 -0
  46. package/dist/store.d.ts +54 -0
  47. package/dist/store.js +193 -0
  48. package/package.json +70 -0
  49. package/src/index.ts +5 -0
@@ -0,0 +1,508 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEventBus = createEventBus;
4
+ const event_1 = require("./event");
5
+ const types_1 = require("./lib/types");
6
+ function proxyReturnTypeToTriggerReturnType(proxyType) {
7
+ switch (proxyType) {
8
+ case types_1.ProxyType.TRIGGER:
9
+ return { returnType: null, resolve: false };
10
+ case types_1.ProxyType.RAW:
11
+ return { returnType: types_1.TriggerReturnType.RAW, resolve: false };
12
+ case types_1.ProxyType.ALL:
13
+ return { returnType: types_1.TriggerReturnType.ALL, resolve: false };
14
+ case types_1.ProxyType.CONCAT:
15
+ return { returnType: types_1.TriggerReturnType.CONCAT, resolve: false };
16
+ case types_1.ProxyType.MERGE:
17
+ return { returnType: types_1.TriggerReturnType.MERGE, resolve: false };
18
+ case types_1.ProxyType.LAST:
19
+ return { returnType: types_1.TriggerReturnType.LAST, resolve: false };
20
+ case types_1.ProxyType.PIPE:
21
+ return { returnType: types_1.TriggerReturnType.PIPE, resolve: false };
22
+ case types_1.ProxyType.FIRST:
23
+ return { returnType: types_1.TriggerReturnType.FIRST, resolve: false };
24
+ case types_1.ProxyType.UNTIL_TRUE:
25
+ return { returnType: types_1.TriggerReturnType.UNTIL_TRUE, resolve: false };
26
+ case types_1.ProxyType.UNTIL_FALSE:
27
+ return {
28
+ returnType: types_1.TriggerReturnType.UNTIL_FALSE,
29
+ resolve: false,
30
+ };
31
+ case types_1.ProxyType.FIRST_NON_EMPTY:
32
+ return {
33
+ returnType: types_1.TriggerReturnType.FIRST_NON_EMPTY,
34
+ resolve: false,
35
+ };
36
+ case types_1.ProxyType.RESOLVE_ALL:
37
+ return {
38
+ returnType: types_1.TriggerReturnType.ALL,
39
+ resolve: true,
40
+ };
41
+ case types_1.ProxyType.RESOLVE_MERGE:
42
+ return {
43
+ returnType: types_1.TriggerReturnType.MERGE,
44
+ resolve: true,
45
+ };
46
+ case types_1.ProxyType.RESOLVE_CONCAT:
47
+ return {
48
+ returnType: types_1.TriggerReturnType.CONCAT,
49
+ resolve: true,
50
+ };
51
+ case types_1.ProxyType.RESOLVE_FIRST:
52
+ return {
53
+ returnType: types_1.TriggerReturnType.FIRST,
54
+ resolve: true,
55
+ };
56
+ case types_1.ProxyType.RESOLVE_FIRST_NON_EMPTY:
57
+ return {
58
+ returnType: types_1.TriggerReturnType.FIRST_NON_EMPTY,
59
+ resolve: true,
60
+ };
61
+ case types_1.ProxyType.RESOLVE_LAST:
62
+ return {
63
+ returnType: types_1.TriggerReturnType.LAST,
64
+ resolve: true,
65
+ };
66
+ case types_1.ProxyType.RESOLVE_PIPE:
67
+ return {
68
+ returnType: types_1.TriggerReturnType.PIPE,
69
+ resolve: true,
70
+ };
71
+ default:
72
+ return { returnType: null, resolve: false };
73
+ }
74
+ }
75
+ function createEventBus(eventBusOptions) {
76
+ const events = new Map();
77
+ let currentTagsFilter = null;
78
+ let interceptor = null;
79
+ const proxyListeners = [];
80
+ const eventSources = [];
81
+ const asterisk = (0, event_1.createEvent)();
82
+ const errorEvent = (0, event_1.createEvent)();
83
+ const _getProxyListener = ({ remoteEventName, localEventName, returnType, resolve, localEventNamePrefix, }) => {
84
+ let listener = proxyListeners.find((listener) => listener.returnType === returnType
85
+ && listener.resolve === resolve
86
+ && listener.localEventName === localEventName
87
+ && listener.remoteEventName === remoteEventName
88
+ && listener.localEventNamePrefix === localEventNamePrefix);
89
+ if (!listener) {
90
+ listener = {
91
+ localEventName,
92
+ remoteEventName,
93
+ localEventNamePrefix,
94
+ returnType,
95
+ resolve,
96
+ listener: remoteEventName === "*"
97
+ ? (eventName, args) => {
98
+ const name = localEventName
99
+ ? localEventName
100
+ : localEventNamePrefix
101
+ ? `${localEventNamePrefix}${eventName}`
102
+ : eventName;
103
+ return _trigger(name,
104
+ // @ts-expect-error
105
+ args, returnType, resolve);
106
+ }
107
+ : (...args) => {
108
+ const name = localEventName
109
+ ? localEventName
110
+ : localEventNamePrefix
111
+ ? `${localEventNamePrefix}${remoteEventName}`
112
+ : remoteEventName;
113
+ return _trigger(name,
114
+ // @ts-expect-error
115
+ args, returnType, resolve);
116
+ },
117
+ };
118
+ proxyListeners.push(listener);
119
+ }
120
+ return listener;
121
+ };
122
+ const add = (name, options) => {
123
+ if (!events.has(name)) {
124
+ events.set(name, (0, event_1.createEvent)(options));
125
+ }
126
+ };
127
+ const _getOrAddEvent = (name) => {
128
+ var _a;
129
+ if (!events.has(name)) {
130
+ events.set(name, (0, event_1.createEvent)((_a = eventBusOptions === null || eventBusOptions === void 0 ? void 0 : eventBusOptions.eventOptions) === null || _a === void 0 ? void 0 : _a[name]));
131
+ }
132
+ return events.get(name);
133
+ };
134
+ const intercept = (fn) => {
135
+ interceptor = fn;
136
+ };
137
+ const stopIntercepting = () => {
138
+ interceptor = null;
139
+ };
140
+ const get = (name) => {
141
+ return _getOrAddEvent(name);
142
+ };
143
+ const on = (name, handler, options) => {
144
+ const e = _getOrAddEvent(name);
145
+ eventSources.forEach((evs) => {
146
+ name;
147
+ if (evs.eventSource.accepts === false
148
+ || (typeof evs.eventSource.accepts === "function"
149
+ && !evs.eventSource.accepts(name))) {
150
+ return;
151
+ }
152
+ if (evs.subscribed.indexOf(name) === -1) {
153
+ const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType || types_1.ProxyType.TRIGGER);
154
+ const listener = _getProxyListener({
155
+ localEventName: null,
156
+ remoteEventName: name,
157
+ returnType,
158
+ resolve,
159
+ localEventNamePrefix: null,
160
+ });
161
+ evs.eventSource.on(name, listener.listener, evs.eventSource, options);
162
+ evs.subscribed.push(name);
163
+ }
164
+ });
165
+ return e.addListener(handler, options);
166
+ };
167
+ const once = (name, handler, options) => {
168
+ options = options || {};
169
+ options.limit = 1;
170
+ return on(name, handler, options);
171
+ };
172
+ const promise = (name, options) => {
173
+ const e = _getOrAddEvent(name);
174
+ return e.promise(options);
175
+ };
176
+ const un = (name, handler, context, tag) => {
177
+ const e = events.get(name);
178
+ if (e) {
179
+ e.removeListener(handler, context, tag);
180
+ }
181
+ if (eventSources.length > 0) {
182
+ const isEmpty = !e.hasListener();
183
+ eventSources.forEach((evs) => {
184
+ const inx = evs.subscribed.indexOf(name);
185
+ if (inx !== -1) {
186
+ evs.subscribed.splice(inx, 1);
187
+ if (isEmpty) {
188
+ const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType || types_1.ProxyType.TRIGGER);
189
+ const listener = _getProxyListener({
190
+ localEventName: null,
191
+ remoteEventName: name,
192
+ returnType,
193
+ resolve,
194
+ localEventNamePrefix: null,
195
+ });
196
+ evs.eventSource.un(name, listener.listener, evs.eventSource, tag);
197
+ }
198
+ }
199
+ });
200
+ }
201
+ };
202
+ const _trigger = (name, args, returnType, resolve) => {
203
+ if (name === "*") {
204
+ return;
205
+ }
206
+ if (interceptor) {
207
+ const result = interceptor(name, args, currentTagsFilter, returnType || null);
208
+ if (result === false) {
209
+ return;
210
+ }
211
+ }
212
+ const e = _getOrAddEvent(name);
213
+ const runner = () => {
214
+ let result;
215
+ switch (returnType) {
216
+ case types_1.TriggerReturnType.RAW:
217
+ result = e.raw(...args);
218
+ break;
219
+ case types_1.TriggerReturnType.ALL:
220
+ result = resolve ? e.resolveAll(...args) : e.all(...args);
221
+ break;
222
+ case types_1.TriggerReturnType.CONCAT:
223
+ result = resolve
224
+ ? e.resolveConcat(...args)
225
+ : e.concat(...args);
226
+ break;
227
+ case types_1.TriggerReturnType.MERGE:
228
+ result = resolve
229
+ ? e.resolveMerge(...args)
230
+ : e.merge(...args);
231
+ break;
232
+ case types_1.TriggerReturnType.LAST:
233
+ result = resolve ? e.resolveLast(...args) : e.last(...args);
234
+ break;
235
+ case types_1.TriggerReturnType.PIPE:
236
+ result = resolve ? e.resolvePipe(...args) : e.pipe(...args);
237
+ break;
238
+ case types_1.TriggerReturnType.FIRST:
239
+ result = resolve
240
+ ? e.resolveFirst(...args)
241
+ : e.first(...args);
242
+ break;
243
+ case types_1.TriggerReturnType.UNTIL_TRUE:
244
+ result = e.untilTrue(...args);
245
+ break;
246
+ case types_1.TriggerReturnType.UNTIL_FALSE:
247
+ result = e.untilFalse(...args);
248
+ break;
249
+ case types_1.TriggerReturnType.FIRST_NON_EMPTY:
250
+ result = resolve
251
+ ? e.resolveFirstNonEmpty(...args)
252
+ : e.firstNonEmpty(...args);
253
+ break;
254
+ default:
255
+ e.trigger(...args);
256
+ }
257
+ return result;
258
+ };
259
+ try {
260
+ let result;
261
+ if (currentTagsFilter) {
262
+ result = e.withTags(currentTagsFilter, runner);
263
+ }
264
+ else {
265
+ result = runner();
266
+ }
267
+ asterisk.trigger(name, args, currentTagsFilter);
268
+ return result;
269
+ }
270
+ catch (error) {
271
+ errorEvent.trigger({
272
+ name,
273
+ error: error instanceof Error
274
+ ? error
275
+ : new Error(String(error)),
276
+ args,
277
+ type: "event",
278
+ });
279
+ if (errorEvent.hasListener()) {
280
+ return undefined;
281
+ }
282
+ throw error;
283
+ }
284
+ };
285
+ const trigger = (name, ...args) => {
286
+ return _trigger(name, args, null, false);
287
+ };
288
+ const first = (name, ...args) => {
289
+ const e = _getOrAddEvent(name);
290
+ return _trigger(name, args, types_1.TriggerReturnType.FIRST, false);
291
+ };
292
+ const resolveFirst = (name, ...args) => {
293
+ const e = _getOrAddEvent(name);
294
+ return _trigger(name, args, types_1.TriggerReturnType.FIRST, true);
295
+ };
296
+ const all = (name, ...args) => {
297
+ const e = _getOrAddEvent(name);
298
+ return _trigger(name, args, types_1.TriggerReturnType.ALL, false);
299
+ };
300
+ const resolveAll = (name, ...args) => {
301
+ const e = _getOrAddEvent(name);
302
+ return _trigger(name, args, types_1.TriggerReturnType.ALL, true);
303
+ };
304
+ const last = (name, ...args) => {
305
+ const e = _getOrAddEvent(name);
306
+ return _trigger(name, args, types_1.TriggerReturnType.LAST, false);
307
+ };
308
+ const resolveLast = (name, ...args) => {
309
+ const e = _getOrAddEvent(name);
310
+ return _trigger(name, args, types_1.TriggerReturnType.LAST, true);
311
+ };
312
+ const merge = (name, ...args) => {
313
+ const e = _getOrAddEvent(name);
314
+ return _trigger(name, args, types_1.TriggerReturnType.MERGE, false);
315
+ };
316
+ const resolveMerge = (name, ...args) => {
317
+ const e = _getOrAddEvent(name);
318
+ return _trigger(name, args, types_1.TriggerReturnType.MERGE, true);
319
+ };
320
+ const concat = (name, ...args) => {
321
+ const e = _getOrAddEvent(name);
322
+ return _trigger(name, args, types_1.TriggerReturnType.CONCAT, false);
323
+ };
324
+ const resolveConcat = (name, ...args) => {
325
+ const e = _getOrAddEvent(name);
326
+ return _trigger(name, args, types_1.TriggerReturnType.CONCAT, true);
327
+ };
328
+ const firstNonEmpty = (name, ...args) => {
329
+ const e = _getOrAddEvent(name);
330
+ return _trigger(name, args, types_1.TriggerReturnType.FIRST_NON_EMPTY, false);
331
+ };
332
+ const resolveFirstNonEmpty = (name, ...args) => {
333
+ const e = _getOrAddEvent(name);
334
+ return _trigger(name, args, types_1.TriggerReturnType.FIRST_NON_EMPTY, true);
335
+ };
336
+ const untilTrue = (name, ...args) => {
337
+ const e = _getOrAddEvent(name);
338
+ return _trigger(name, args, types_1.TriggerReturnType.UNTIL_TRUE, false);
339
+ };
340
+ const untilFalse = (name, ...args) => {
341
+ const e = _getOrAddEvent(name);
342
+ return _trigger(name, args, types_1.TriggerReturnType.UNTIL_FALSE, false);
343
+ };
344
+ const pipe = (name, ...args) => {
345
+ const e = _getOrAddEvent(name);
346
+ return _trigger(name, args, types_1.TriggerReturnType.PIPE, false);
347
+ };
348
+ const resolvePipe = (name, ...args) => {
349
+ const e = _getOrAddEvent(name);
350
+ return _trigger(name, args, types_1.TriggerReturnType.PIPE, true);
351
+ };
352
+ const raw = (name, ...args) => {
353
+ const e = _getOrAddEvent(name);
354
+ return _trigger(name, args, types_1.TriggerReturnType.RAW, false);
355
+ };
356
+ const withTags = (tags, callback) => {
357
+ currentTagsFilter = tags;
358
+ const result = callback();
359
+ currentTagsFilter = null;
360
+ return result;
361
+ };
362
+ const reset = () => {
363
+ if (eventSources.length > 0) {
364
+ eventSources.forEach((evs) => {
365
+ removeEventSource(evs.eventSource);
366
+ });
367
+ }
368
+ events.clear();
369
+ interceptor = null;
370
+ currentTagsFilter = null;
371
+ asterisk.reset();
372
+ proxyListeners.length = 0;
373
+ eventSources.length = 0;
374
+ };
375
+ const suspendAll = (withQueue = false) => {
376
+ for (const name in events) {
377
+ events.get(name).suspend(withQueue);
378
+ }
379
+ };
380
+ const resumeAll = () => {
381
+ for (const name in events) {
382
+ events.get(name).resume();
383
+ }
384
+ };
385
+ const relay = ({ eventSource, remoteEventName, localEventName, proxyType, localEventNamePrefix, }) => {
386
+ const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(proxyType || types_1.ProxyType.TRIGGER);
387
+ const listener = _getProxyListener({
388
+ localEventName: localEventName || null,
389
+ remoteEventName,
390
+ returnType,
391
+ resolve,
392
+ localEventNamePrefix: localEventNamePrefix || null,
393
+ });
394
+ if (remoteEventName === "*") {
395
+ eventSource.addAllEventsListener(listener.listener);
396
+ }
397
+ else {
398
+ eventSource.on(remoteEventName, listener.listener);
399
+ }
400
+ };
401
+ const unrelay = ({ eventSource, remoteEventName, localEventName, proxyType, localEventNamePrefix, }) => {
402
+ const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(proxyType || types_1.ProxyType.TRIGGER);
403
+ const listener = _getProxyListener({
404
+ localEventName: localEventName || null,
405
+ remoteEventName,
406
+ returnType,
407
+ resolve,
408
+ localEventNamePrefix: localEventNamePrefix || null,
409
+ });
410
+ if (listener) {
411
+ if (remoteEventName === "*") {
412
+ eventSource.removeAllEventsListener(listener.listener);
413
+ }
414
+ else {
415
+ eventSource.un(remoteEventName, listener.listener);
416
+ }
417
+ }
418
+ };
419
+ const addEventSource = (eventSource) => {
420
+ if (eventSources.find((evs) => evs.eventSource.name === eventSource.name)) {
421
+ return;
422
+ }
423
+ eventSources.push({
424
+ eventSource,
425
+ subscribed: [],
426
+ });
427
+ };
428
+ const removeEventSource = (eventSource) => {
429
+ const inx = eventSources.findIndex((evs) => typeof eventSource === "string"
430
+ || typeof eventSource === "symbol"
431
+ ? evs.eventSource.name === eventSource
432
+ : evs.eventSource.name === eventSource.name);
433
+ if (inx !== -1) {
434
+ const evs = eventSources[inx];
435
+ evs.subscribed.forEach((name) => {
436
+ const { returnType, resolve } = proxyReturnTypeToTriggerReturnType(evs.eventSource.proxyType || types_1.ProxyType.TRIGGER);
437
+ const listener = _getProxyListener({
438
+ localEventName: null,
439
+ remoteEventName: name,
440
+ returnType,
441
+ resolve,
442
+ localEventNamePrefix: null,
443
+ });
444
+ evs.eventSource.un(name, listener.listener, evs.eventSource);
445
+ });
446
+ eventSources.splice(inx, 1);
447
+ }
448
+ };
449
+ const api = {
450
+ addListener: on,
451
+ /** @alias addListener */
452
+ on,
453
+ /** @alias addListener */
454
+ listen: on,
455
+ /** @alias addListener */
456
+ subscribe: on,
457
+ once,
458
+ promise,
459
+ removeListener: un,
460
+ /** @alias removeListener */
461
+ un,
462
+ /** @alias removeListener */
463
+ off: un,
464
+ /** @alias removeListener */
465
+ remove: un,
466
+ /** @alias removeListener */
467
+ unsubscribe: un,
468
+ trigger,
469
+ /** @alias trigger */
470
+ emit: trigger,
471
+ /** @alias trigger */
472
+ dispatch: trigger,
473
+ get,
474
+ add,
475
+ first,
476
+ resolveFirst,
477
+ all,
478
+ resolveAll,
479
+ last,
480
+ resolveLast,
481
+ merge,
482
+ resolveMerge,
483
+ concat,
484
+ resolveConcat,
485
+ firstNonEmpty,
486
+ resolveFirstNonEmpty,
487
+ untilTrue,
488
+ untilFalse,
489
+ pipe,
490
+ resolvePipe,
491
+ raw,
492
+ withTags,
493
+ intercept,
494
+ stopIntercepting,
495
+ reset,
496
+ suspendAll,
497
+ resumeAll,
498
+ relay,
499
+ unrelay,
500
+ addEventSource,
501
+ removeEventSource,
502
+ addAllEventsListener: asterisk.addListener,
503
+ removeAllEventsListener: asterisk.removeListener,
504
+ addErrorListener: errorEvent.addListener,
505
+ removeErrorListener: errorEvent.removeListener,
506
+ };
507
+ return api;
508
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./action";
2
+ export * from "./event";
3
+ export * from "./eventBus";
4
+ export * from "./lib/types";
5
+ export * from "./store";
package/dist/index.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
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("./event"), exports);
19
+ __exportStar(require("./eventBus"), exports);
20
+ __exportStar(require("./lib/types"), exports);
21
+ __exportStar(require("./store"), exports);
@@ -0,0 +1 @@
1
+ export default function asyncCall<P extends readonly any[] = readonly any[], R = any>(fn: (...args: P) => R, context?: object | null, args?: P, timeout?: number): Promise<R>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = asyncCall;
4
+ function asyncCall(fn, context, args, timeout) {
5
+ return new Promise((resolve, reject) => {
6
+ const newArgs = [...(args || [])];
7
+ // const newArgs = [ ...(args || []) ];
8
+ setTimeout(() => {
9
+ try {
10
+ resolve(fn.apply(context, newArgs));
11
+ }
12
+ catch (err) {
13
+ reject(err);
14
+ }
15
+ }, timeout || 0);
16
+ });
17
+ }
@@ -0,0 +1,5 @@
1
+ export default function listenerSorter<L extends {
2
+ alwaysFirst: boolean;
3
+ alwaysLast: boolean;
4
+ index: number;
5
+ }>(l1: L, l2: L): -1 | 0 | 1;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = listenerSorter;
4
+ function listenerSorter(l1, l2) {
5
+ 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
+ if (f1 === 1 || f2 === 1) {
7
+ return f1 === f2 ? 0 : f1 > f2 ? -1 : 1;
8
+ }
9
+ if (ls1 === 1 || ls2 === 1) {
10
+ return ls1 === ls2 ? 0 : ls1 < ls2 ? -1 : 1;
11
+ }
12
+ return l1.index === l2.index ? 0 : l1.index < l2.index ? -1 : 1;
13
+ }
@@ -0,0 +1 @@
1
+ export default function tagsIntersect(t1: string[], t2: string[]): boolean;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = tagsIntersect;
4
+ function tagsIntersect(t1, t2) {
5
+ for (const tag of t1) {
6
+ if (t2.indexOf(tag) !== -1) {
7
+ return true;
8
+ }
9
+ }
10
+ return false;
11
+ }
@@ -0,0 +1,49 @@
1
+ export type MapKey = string;
2
+ export type BaseHandler = (...args: any[]) => any;
3
+ export type Simplify<T> = {
4
+ [KeyType in keyof T]: T[KeyType];
5
+ } & {};
6
+ export type ApiType<TypeDefinition, Api extends object> = Simplify<Api> & {
7
+ __type: TypeDefinition;
8
+ };
9
+ export type KeyOf<T> = MapKey & keyof T;
10
+ export declare enum TriggerReturnType {
11
+ RAW = "raw",
12
+ ALL = "all",
13
+ CONCAT = "concat",
14
+ MERGE = "merge",
15
+ LAST = "last",
16
+ PIPE = "pipe",
17
+ FIRST = "first",
18
+ UNTIL_TRUE = "true",
19
+ UNTIL_FALSE = "false",
20
+ FIRST_NON_EMPTY = "nonempty"
21
+ }
22
+ export declare enum ProxyType {
23
+ TRIGGER = "trigger",
24
+ RAW = "raw",
25
+ ALL = "all",
26
+ CONCAT = "concat",
27
+ MERGE = "merge",
28
+ LAST = "last",
29
+ PIPE = "pipe",
30
+ FIRST = "first",
31
+ UNTIL_TRUE = "untilTrue",
32
+ UNTIL_FALSE = "untilFalse",
33
+ FIRST_NON_EMPTY = "firstNonEmpty",
34
+ RESOLVE_ALL = "resolveAll",
35
+ RESOLVE_MERGE = "resolveMerge",
36
+ RESOLVE_CONCAT = "resolveConcat",
37
+ RESOLVE_FIRST = "resolveFirst",
38
+ RESOLVE_FIRST_NON_EMPTY = "resolveFirstNonEmpty",
39
+ RESOLVE_LAST = "resolveLast",
40
+ RESOLVE_PIPE = "resolvePipe"
41
+ }
42
+ export type ReturnableProxyType = ProxyType.RESOLVE_ALL | ProxyType.RESOLVE_MERGE | ProxyType.RESOLVE_CONCAT | ProxyType.RESOLVE_FIRST | ProxyType.RESOLVE_LAST | ProxyType.RESOLVE_FIRST_NON_EMPTY | ProxyType.RESOLVE_PIPE | ProxyType.ALL | ProxyType.MERGE | ProxyType.FIRST | ProxyType.LAST | ProxyType.CONCAT | ProxyType.PIPE | ProxyType.RAW;
43
+ export type ErrorResponse<Arguments extends any[] = any[]> = {
44
+ error: Error;
45
+ args: Arguments;
46
+ name?: MapKey;
47
+ type: "action" | "event" | "store-change" | "store-pipe" | "store-control";
48
+ };
49
+ export type ErrorListenerSignature<Arguments extends any[] = any[]> = (errorResponse: ErrorResponse<Arguments>) => void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProxyType = exports.TriggerReturnType = void 0;
4
+ var TriggerReturnType;
5
+ (function (TriggerReturnType) {
6
+ TriggerReturnType["RAW"] = "raw";
7
+ TriggerReturnType["ALL"] = "all";
8
+ TriggerReturnType["CONCAT"] = "concat";
9
+ TriggerReturnType["MERGE"] = "merge";
10
+ TriggerReturnType["LAST"] = "last";
11
+ TriggerReturnType["PIPE"] = "pipe";
12
+ TriggerReturnType["FIRST"] = "first";
13
+ TriggerReturnType["UNTIL_TRUE"] = "true";
14
+ TriggerReturnType["UNTIL_FALSE"] = "false";
15
+ TriggerReturnType["FIRST_NON_EMPTY"] = "nonempty";
16
+ })(TriggerReturnType || (exports.TriggerReturnType = TriggerReturnType = {}));
17
+ var ProxyType;
18
+ (function (ProxyType) {
19
+ ProxyType["TRIGGER"] = "trigger";
20
+ ProxyType["RAW"] = "raw";
21
+ ProxyType["ALL"] = "all";
22
+ ProxyType["CONCAT"] = "concat";
23
+ ProxyType["MERGE"] = "merge";
24
+ ProxyType["LAST"] = "last";
25
+ ProxyType["PIPE"] = "pipe";
26
+ ProxyType["FIRST"] = "first";
27
+ ProxyType["UNTIL_TRUE"] = "untilTrue";
28
+ ProxyType["UNTIL_FALSE"] = "untilFalse";
29
+ ProxyType["FIRST_NON_EMPTY"] = "firstNonEmpty";
30
+ ProxyType["RESOLVE_ALL"] = "resolveAll";
31
+ ProxyType["RESOLVE_MERGE"] = "resolveMerge";
32
+ ProxyType["RESOLVE_CONCAT"] = "resolveConcat";
33
+ ProxyType["RESOLVE_FIRST"] = "resolveFirst";
34
+ ProxyType["RESOLVE_FIRST_NON_EMPTY"] = "resolveFirstNonEmpty";
35
+ ProxyType["RESOLVE_LAST"] = "resolveLast";
36
+ ProxyType["RESOLVE_PIPE"] = "resolvePipe";
37
+ })(ProxyType || (exports.ProxyType = ProxyType = {}));