@kuindji/reactive 1.0.23 → 1.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action.js +5 -8
- package/dist/actionBus.js +5 -8
- package/dist/actionMap.js +3 -6
- package/dist/event.js +52 -55
- package/dist/eventBus.js +74 -77
- package/dist/index.js +7 -23
- package/dist/lib/asyncCall.js +1 -4
- package/dist/lib/listenerSorter.js +1 -4
- package/dist/lib/tagsIntersect.js +1 -4
- package/dist/lib/types.js +4 -7
- package/dist/react/ErrorBoundary.js +10 -13
- package/dist/react/useAction.js +18 -21
- package/dist/react/useActionBus.js +11 -14
- package/dist/react/useActionMap.js +9 -12
- package/dist/react/useEvent.js +14 -17
- package/dist/react/useEventBus.js +16 -19
- package/dist/react/useListenToAction.js +11 -14
- package/dist/react/useListenToActionBus.js +8 -11
- package/dist/react/useListenToEvent.js +6 -9
- package/dist/react/useListenToEventBus.js +6 -9
- package/dist/react/useListenToStoreChanges.js +5 -8
- package/dist/react/useStore.js +5 -8
- package/dist/react/useStoreState.js +9 -12
- package/dist/react.js +13 -29
- package/dist/store.js +30 -34
- package/package.json +1 -1
package/dist/action.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,13 +7,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
const { trigger, addListener, removeAllListeners, removeListener, promise, } =
|
|
16
|
-
const { all: triggerBeforeAction, addListener: addBeforeActionListener, removeAllListeners: removeAllBeforeActionListeners, removeListener: removeBeforeActionListener, promise: beforeActionPromise, } = (0, event_1.createEvent)();
|
|
17
|
-
const { trigger: triggerError, addListener: addErrorListener, removeAllListeners: removeAllErrorListeners, removeListener: removeErrorListener, promise: errorPromise, hasListener: hasErrorListeners, } = (0, event_1.createEvent)();
|
|
10
|
+
import { createEvent } from "./event";
|
|
11
|
+
export function createAction(action) {
|
|
12
|
+
const { trigger, addListener, removeAllListeners, removeListener, promise, } = createEvent();
|
|
13
|
+
const { all: triggerBeforeAction, addListener: addBeforeActionListener, removeAllListeners: removeAllBeforeActionListeners, removeListener: removeBeforeActionListener, promise: beforeActionPromise, } = createEvent();
|
|
14
|
+
const { trigger: triggerError, addListener: addErrorListener, removeAllListeners: removeAllErrorListeners, removeListener: removeErrorListener, promise: errorPromise, hasListener: hasErrorListeners, } = createEvent();
|
|
18
15
|
const invoke = (...args) => __awaiter(this, void 0, void 0, function* () {
|
|
19
16
|
try {
|
|
20
17
|
const beforeResults = triggerBeforeAction(...args);
|
package/dist/actionBus.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const action_1 = require("./action");
|
|
5
|
-
const event_1 = require("./event");
|
|
6
|
-
function createActionBus(initialActions = {}, errorListener) {
|
|
1
|
+
import { createAction } from "./action";
|
|
2
|
+
import { createEvent } from "./event";
|
|
3
|
+
export function createActionBus(initialActions = {}, errorListener) {
|
|
7
4
|
const actions = new Map();
|
|
8
|
-
const errorEvent =
|
|
5
|
+
const errorEvent = createEvent();
|
|
9
6
|
if (errorListener) {
|
|
10
7
|
errorEvent.addListener(errorListener);
|
|
11
8
|
}
|
|
12
9
|
const add = (name, action) => {
|
|
13
10
|
if (!actions.has(name)) {
|
|
14
|
-
const a =
|
|
11
|
+
const a = createAction(action);
|
|
15
12
|
a.addErrorListener(({ error, args }) => {
|
|
16
13
|
errorEvent.emit({ name, error, args, type: "action" });
|
|
17
14
|
});
|
package/dist/actionMap.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.createActionMap = createActionMap;
|
|
4
|
-
const action_1 = require("./action");
|
|
5
|
-
function createActionMap(actions, onAnyError) {
|
|
1
|
+
import { createAction } from "./action";
|
|
2
|
+
export function createActionMap(actions, onAnyError) {
|
|
6
3
|
const errorListenersMap = {};
|
|
7
4
|
for (const key in actions) {
|
|
8
5
|
errorListenersMap[key] = (errorResponse) => {
|
|
@@ -18,7 +15,7 @@ function createActionMap(actions, onAnyError) {
|
|
|
18
15
|
}
|
|
19
16
|
const map = {};
|
|
20
17
|
for (const key in actions) {
|
|
21
|
-
const action =
|
|
18
|
+
const action = createAction(actions[key]);
|
|
22
19
|
action.addErrorListener(errorListenersMap[key]);
|
|
23
20
|
map[key] = action;
|
|
24
21
|
}
|
package/dist/event.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const tagsIntersect_1 = require("./lib/tagsIntersect");
|
|
7
|
-
const types_1 = require("./lib/types");
|
|
8
|
-
function createEvent(eventOptions = {}) {
|
|
1
|
+
import asyncCall from "./lib/asyncCall";
|
|
2
|
+
import listenerSorter from "./lib/listenerSorter";
|
|
3
|
+
import tagsIntersect from "./lib/tagsIntersect";
|
|
4
|
+
import { TriggerReturnType } from "./lib/types";
|
|
5
|
+
export function createEvent(eventOptions = {}) {
|
|
9
6
|
let listeners = [];
|
|
10
7
|
const errorListeners = [];
|
|
11
8
|
let queue = [];
|
|
@@ -41,7 +38,7 @@ function createEvent(eventOptions = {}) {
|
|
|
41
38
|
listeners.forEach((l, inx) => {
|
|
42
39
|
l.index = inx;
|
|
43
40
|
});
|
|
44
|
-
listeners.sort((l1, l2) => (
|
|
41
|
+
listeners.sort((l1, l2) => listenerSorter(l1, l2));
|
|
45
42
|
}
|
|
46
43
|
if ((listenerOptions === null || listenerOptions === void 0 ? void 0 : listenerOptions.alwaysFirst) === true
|
|
47
44
|
|| (listenerOptions === null || listenerOptions === void 0 ? void 0 : listenerOptions.alwaysLast) === true) {
|
|
@@ -174,7 +171,7 @@ function createEvent(eventOptions = {}) {
|
|
|
174
171
|
}
|
|
175
172
|
try {
|
|
176
173
|
const result = isAsync !== false
|
|
177
|
-
? (
|
|
174
|
+
? asyncCall(listener.handler, listener.context, args, isAsync)
|
|
178
175
|
: listener.handler.bind(listener.context)(...args);
|
|
179
176
|
if (resolve !== null) {
|
|
180
177
|
if (result instanceof Promise) {
|
|
@@ -216,22 +213,22 @@ function createEvent(eventOptions = {}) {
|
|
|
216
213
|
}
|
|
217
214
|
};
|
|
218
215
|
const _listenerCallWPrev = (listener, args, prevValue, returnType) => {
|
|
219
|
-
if (returnType ===
|
|
216
|
+
if (returnType === TriggerReturnType.PIPE) {
|
|
220
217
|
args[0] = prevValue;
|
|
221
218
|
// since we don't user listener's arg transformer,
|
|
222
219
|
// we don't need to prepare args
|
|
223
220
|
// args = _prepareListenerArgs(args);
|
|
224
221
|
return _listenerCall(listener, args);
|
|
225
222
|
}
|
|
226
|
-
else if (returnType ===
|
|
223
|
+
else if (returnType === TriggerReturnType.UNTIL_TRUE
|
|
227
224
|
&& prevValue === true) {
|
|
228
225
|
return true;
|
|
229
226
|
}
|
|
230
|
-
else if (returnType ===
|
|
227
|
+
else if (returnType === TriggerReturnType.UNTIL_FALSE
|
|
231
228
|
&& prevValue === false) {
|
|
232
229
|
return false;
|
|
233
230
|
}
|
|
234
|
-
else if (returnType ===
|
|
231
|
+
else if (returnType === TriggerReturnType.FIRST_NON_EMPTY
|
|
235
232
|
&& prevValue !== null
|
|
236
233
|
&& prevValue !== undefined) {
|
|
237
234
|
return prevValue;
|
|
@@ -256,24 +253,24 @@ function createEvent(eventOptions = {}) {
|
|
|
256
253
|
// in pipe mode if there is no listeners,
|
|
257
254
|
// we just return piped value
|
|
258
255
|
if (listeners.length === 0) {
|
|
259
|
-
if (returnType ===
|
|
256
|
+
if (returnType === TriggerReturnType.PIPE) {
|
|
260
257
|
return args.length > 0 ? args[0] : undefined;
|
|
261
258
|
}
|
|
262
|
-
else if (returnType ===
|
|
263
|
-
|| returnType ===
|
|
264
|
-
|| returnType ===
|
|
259
|
+
else if (returnType === TriggerReturnType.ALL
|
|
260
|
+
|| returnType === TriggerReturnType.CONCAT
|
|
261
|
+
|| returnType === TriggerReturnType.RAW) {
|
|
265
262
|
return [];
|
|
266
263
|
}
|
|
267
|
-
else if (returnType ===
|
|
264
|
+
else if (returnType === TriggerReturnType.MERGE) {
|
|
268
265
|
return {};
|
|
269
266
|
}
|
|
270
267
|
return;
|
|
271
268
|
}
|
|
272
269
|
const listenersQueue = listeners.slice();
|
|
273
|
-
const isConsequent = returnType ===
|
|
274
|
-
|| returnType ===
|
|
275
|
-
|| returnType ===
|
|
276
|
-
|| returnType ===
|
|
270
|
+
const isConsequent = returnType === TriggerReturnType.PIPE
|
|
271
|
+
|| returnType === TriggerReturnType.UNTIL_TRUE
|
|
272
|
+
|| returnType === TriggerReturnType.UNTIL_FALSE
|
|
273
|
+
|| returnType === TriggerReturnType.FIRST_NON_EMPTY;
|
|
277
274
|
let listener;
|
|
278
275
|
let listenerResult;
|
|
279
276
|
const results = [];
|
|
@@ -289,12 +286,12 @@ function createEvent(eventOptions = {}) {
|
|
|
289
286
|
}
|
|
290
287
|
if (tags
|
|
291
288
|
&& tags.length > 0
|
|
292
|
-
&& (!listener.tags || !(
|
|
289
|
+
&& (!listener.tags || !tagsIntersect(tags, listener.tags))) {
|
|
293
290
|
continue;
|
|
294
291
|
}
|
|
295
292
|
if (currentTagsFilter !== null
|
|
296
293
|
&& currentTagsFilter.length > 0
|
|
297
|
-
&& !(
|
|
294
|
+
&& !tagsIntersect(currentTagsFilter, listener.tags)) {
|
|
298
295
|
continue;
|
|
299
296
|
}
|
|
300
297
|
listener.count++;
|
|
@@ -326,24 +323,24 @@ function createEvent(eventOptions = {}) {
|
|
|
326
323
|
if (listener.called === listener.limit) {
|
|
327
324
|
removeListener(listener.handler, listener.context);
|
|
328
325
|
}
|
|
329
|
-
if (returnType ===
|
|
326
|
+
if (returnType === TriggerReturnType.FIRST) {
|
|
330
327
|
return listenerResult;
|
|
331
328
|
}
|
|
332
329
|
if (isConsequent) {
|
|
333
330
|
switch (returnType) {
|
|
334
|
-
case
|
|
331
|
+
case TriggerReturnType.UNTIL_TRUE: {
|
|
335
332
|
if (listenerResult === true) {
|
|
336
333
|
return true;
|
|
337
334
|
}
|
|
338
335
|
break;
|
|
339
336
|
}
|
|
340
|
-
case
|
|
337
|
+
case TriggerReturnType.UNTIL_FALSE: {
|
|
341
338
|
if (listenerResult === false) {
|
|
342
339
|
return false;
|
|
343
340
|
}
|
|
344
341
|
break;
|
|
345
342
|
}
|
|
346
|
-
case
|
|
343
|
+
case TriggerReturnType.FIRST_NON_EMPTY: {
|
|
347
344
|
if (!hasPromises
|
|
348
345
|
&& !(listenerResult instanceof Promise)
|
|
349
346
|
&& listenerResult !== null
|
|
@@ -360,7 +357,7 @@ function createEvent(eventOptions = {}) {
|
|
|
360
357
|
results.push(listenerResult);
|
|
361
358
|
}
|
|
362
359
|
switch (returnType) {
|
|
363
|
-
case
|
|
360
|
+
case TriggerReturnType.RAW: {
|
|
364
361
|
return results;
|
|
365
362
|
}
|
|
366
363
|
case undefined:
|
|
@@ -370,36 +367,36 @@ function createEvent(eventOptions = {}) {
|
|
|
370
367
|
}
|
|
371
368
|
return;
|
|
372
369
|
}
|
|
373
|
-
case
|
|
370
|
+
case TriggerReturnType.ALL: {
|
|
374
371
|
return hasPromises
|
|
375
372
|
? Promise.all(results)
|
|
376
373
|
: results;
|
|
377
374
|
}
|
|
378
|
-
case
|
|
375
|
+
case TriggerReturnType.CONCAT: {
|
|
379
376
|
return hasPromises
|
|
380
377
|
? Promise.all(results).then((r) => r.flat())
|
|
381
378
|
: results.flat();
|
|
382
379
|
}
|
|
383
|
-
case
|
|
380
|
+
case TriggerReturnType.MERGE: {
|
|
384
381
|
return hasPromises
|
|
385
382
|
? Promise.all(results).then((r) => Object.assign({}, ...r))
|
|
386
383
|
: Object.assign({}, ...results);
|
|
387
384
|
}
|
|
388
|
-
case
|
|
385
|
+
case TriggerReturnType.LAST: {
|
|
389
386
|
return results.pop();
|
|
390
387
|
}
|
|
391
|
-
case
|
|
388
|
+
case TriggerReturnType.UNTIL_TRUE: {
|
|
392
389
|
return;
|
|
393
390
|
}
|
|
394
|
-
case
|
|
391
|
+
case TriggerReturnType.UNTIL_FALSE: {
|
|
395
392
|
return;
|
|
396
393
|
}
|
|
397
|
-
case
|
|
394
|
+
case TriggerReturnType.FIRST_NON_EMPTY: {
|
|
398
395
|
return hasPromises
|
|
399
396
|
? Promise.all(results).then((r) => r.find((item) => item !== undefined && item !== null))
|
|
400
397
|
: results.find((item) => item !== undefined && item !== null);
|
|
401
398
|
}
|
|
402
|
-
case
|
|
399
|
+
case TriggerReturnType.PIPE: {
|
|
403
400
|
return results[results.length - 1];
|
|
404
401
|
}
|
|
405
402
|
}
|
|
@@ -429,83 +426,83 @@ function createEvent(eventOptions = {}) {
|
|
|
429
426
|
});
|
|
430
427
|
};
|
|
431
428
|
const first = (...args) => {
|
|
432
|
-
return _trigger(args,
|
|
429
|
+
return _trigger(args, TriggerReturnType.FIRST);
|
|
433
430
|
};
|
|
434
431
|
const resolveFirst = (...args) => {
|
|
435
|
-
const response = _trigger(args,
|
|
432
|
+
const response = _trigger(args, TriggerReturnType.FIRST);
|
|
436
433
|
if (response instanceof Promise) {
|
|
437
434
|
return response;
|
|
438
435
|
}
|
|
439
436
|
return Promise.resolve(response);
|
|
440
437
|
};
|
|
441
438
|
const all = (...args) => {
|
|
442
|
-
return _trigger(args,
|
|
439
|
+
return _trigger(args, TriggerReturnType.ALL);
|
|
443
440
|
};
|
|
444
441
|
const resolveAll = (...args) => {
|
|
445
|
-
const response = _trigger(args,
|
|
442
|
+
const response = _trigger(args, TriggerReturnType.ALL);
|
|
446
443
|
if (response instanceof Promise) {
|
|
447
444
|
return response;
|
|
448
445
|
}
|
|
449
446
|
return Promise.resolve(response);
|
|
450
447
|
};
|
|
451
448
|
const last = (...args) => {
|
|
452
|
-
return _trigger(args,
|
|
449
|
+
return _trigger(args, TriggerReturnType.LAST);
|
|
453
450
|
};
|
|
454
451
|
const resolveLast = (...args) => {
|
|
455
|
-
const response = _trigger(args,
|
|
452
|
+
const response = _trigger(args, TriggerReturnType.LAST);
|
|
456
453
|
if (response instanceof Promise) {
|
|
457
454
|
return response;
|
|
458
455
|
}
|
|
459
456
|
return Promise.resolve(response);
|
|
460
457
|
};
|
|
461
458
|
const merge = (...args) => {
|
|
462
|
-
return _trigger(args,
|
|
459
|
+
return _trigger(args, TriggerReturnType.MERGE);
|
|
463
460
|
};
|
|
464
461
|
const resolveMerge = (...args) => {
|
|
465
|
-
const response = _trigger(args,
|
|
462
|
+
const response = _trigger(args, TriggerReturnType.MERGE);
|
|
466
463
|
if (response instanceof Promise) {
|
|
467
464
|
return response;
|
|
468
465
|
}
|
|
469
466
|
return Promise.resolve(response);
|
|
470
467
|
};
|
|
471
468
|
const concat = (...args) => {
|
|
472
|
-
return _trigger(args,
|
|
469
|
+
return _trigger(args, TriggerReturnType.CONCAT);
|
|
473
470
|
};
|
|
474
471
|
const resolveConcat = (...args) => {
|
|
475
|
-
const response = _trigger(args,
|
|
472
|
+
const response = _trigger(args, TriggerReturnType.CONCAT);
|
|
476
473
|
if (response instanceof Promise) {
|
|
477
474
|
return response;
|
|
478
475
|
}
|
|
479
476
|
return Promise.resolve(response);
|
|
480
477
|
};
|
|
481
478
|
const firstNonEmpty = (...args) => {
|
|
482
|
-
return _trigger(args,
|
|
479
|
+
return _trigger(args, TriggerReturnType.FIRST_NON_EMPTY);
|
|
483
480
|
};
|
|
484
481
|
const resolveFirstNonEmpty = (...args) => {
|
|
485
|
-
const response = _trigger(args,
|
|
482
|
+
const response = _trigger(args, TriggerReturnType.FIRST_NON_EMPTY);
|
|
486
483
|
if (response instanceof Promise) {
|
|
487
484
|
return response;
|
|
488
485
|
}
|
|
489
486
|
return Promise.resolve(response);
|
|
490
487
|
};
|
|
491
488
|
const untilTrue = (...args) => {
|
|
492
|
-
_trigger(args,
|
|
489
|
+
_trigger(args, TriggerReturnType.UNTIL_TRUE);
|
|
493
490
|
};
|
|
494
491
|
const untilFalse = (...args) => {
|
|
495
|
-
_trigger(args,
|
|
492
|
+
_trigger(args, TriggerReturnType.UNTIL_FALSE);
|
|
496
493
|
};
|
|
497
494
|
const pipe = (...args) => {
|
|
498
|
-
return _trigger(args,
|
|
495
|
+
return _trigger(args, TriggerReturnType.PIPE);
|
|
499
496
|
};
|
|
500
497
|
const resolvePipe = (...args) => {
|
|
501
|
-
const response = _trigger(args,
|
|
498
|
+
const response = _trigger(args, TriggerReturnType.PIPE);
|
|
502
499
|
if (response instanceof Promise) {
|
|
503
500
|
return response;
|
|
504
501
|
}
|
|
505
502
|
return Promise.resolve(response);
|
|
506
503
|
};
|
|
507
504
|
const raw = (...args) => {
|
|
508
|
-
return _trigger(args,
|
|
505
|
+
return _trigger(args, TriggerReturnType.RAW);
|
|
509
506
|
};
|
|
510
507
|
const api = {
|
|
511
508
|
addListener,
|