@daiso-tech/core 0.28.0 → 0.29.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 (28) hide show
  1. package/README.md +8 -2
  2. package/dist/cache/implementations/derivables/cache/cache.d.ts +5 -0
  3. package/dist/cache/implementations/derivables/cache/cache.js +7 -0
  4. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  5. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +37 -1
  6. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js +37 -1
  7. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  8. package/dist/event-bus/contracts/event-bus.contract.d.ts +5 -0
  9. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +1 -0
  10. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +28 -4
  11. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  12. package/dist/event-bus/implementations/derivables/event-bus/listener-store.d.ts +2 -2
  13. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js +9 -7
  14. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js.map +1 -1
  15. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +453 -4
  16. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  17. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +9 -0
  18. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +13 -4
  19. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  20. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +2 -0
  21. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +8 -2
  22. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
  23. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +5 -0
  24. package/dist/lock/implementations/derivables/lock-provider/lock.js +7 -0
  25. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  26. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +1 -0
  27. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  28. package/package.json +85 -25
@@ -120,7 +120,7 @@ export function eventBusTestSuite(settings) {
120
120
  await eventBusA.removeListener(AddEvent, listener);
121
121
  });
122
122
  });
123
- describe("Should be null when listener removed and event is triggered", () => {
123
+ describe("Should be null when listener is removed and event is triggered", () => {
124
124
  test("Object literal listener", async () => {
125
125
  const listener = {
126
126
  result: null,
@@ -320,7 +320,7 @@ export function eventBusTestSuite(settings) {
320
320
  await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
321
321
  });
322
322
  });
323
- describe("Should be null when listener removed and event is triggered", () => {
323
+ describe("Should be null when listener is removed and event is triggered", () => {
324
324
  test("Object literal listener", async () => {
325
325
  const listener = {
326
326
  resultA: null,
@@ -496,7 +496,7 @@ export function eventBusTestSuite(settings) {
496
496
  await unsubscribe();
497
497
  });
498
498
  });
499
- describe("Should be null when listener removed and event is triggered", () => {
499
+ describe("Should be null when listener is removed by unsubscribe and event is triggered", () => {
500
500
  test("Object literal listener", async () => {
501
501
  const listener = {
502
502
  result: null,
@@ -548,6 +548,58 @@ export function eventBusTestSuite(settings) {
548
548
  expect(result).toBeNull();
549
549
  });
550
550
  });
551
+ describe("Should be null when listener is removed by removeListener and event is triggered", () => {
552
+ test("Object literal listener", async () => {
553
+ const listener = {
554
+ result: null,
555
+ invoke(event) {
556
+ this.result = event;
557
+ },
558
+ };
559
+ await eventBusA.subscribe(AddEvent, listener);
560
+ await eventBusA.removeListener(AddEvent, listener);
561
+ const event = new AddEvent({
562
+ a: 1,
563
+ b: 2,
564
+ });
565
+ await eventBusA.dispatch(event);
566
+ await LazyPromise.delay(TTL);
567
+ expect(listener.result).toBeNull();
568
+ });
569
+ test("Class instance listener", async () => {
570
+ class Listener {
571
+ result = null;
572
+ invoke(event) {
573
+ this.result = event;
574
+ }
575
+ }
576
+ const listener = new Listener();
577
+ await eventBusA.subscribe(AddEvent, listener);
578
+ await eventBusA.removeListener(AddEvent, listener);
579
+ const event = new AddEvent({
580
+ a: 1,
581
+ b: 2,
582
+ });
583
+ await eventBusA.dispatch(event);
584
+ await LazyPromise.delay(TTL);
585
+ expect(listener.result).toBeNull();
586
+ });
587
+ test("Function listener", async () => {
588
+ let result = null;
589
+ const listener = (event) => {
590
+ result = event;
591
+ };
592
+ await eventBusA.subscribe(AddEvent, listener);
593
+ await eventBusA.removeListener(AddEvent, listener);
594
+ const event = new AddEvent({
595
+ a: 1,
596
+ b: 2,
597
+ });
598
+ await eventBusA.dispatch(event);
599
+ await LazyPromise.delay(TTL);
600
+ expect(result).toBeNull();
601
+ });
602
+ });
551
603
  });
552
604
  describe("method: subscribeMany, dispatchMany", () => {
553
605
  describe("Should be null when listener is added and event is not triggered", () => {
@@ -696,7 +748,7 @@ export function eventBusTestSuite(settings) {
696
748
  await unsubscribe();
697
749
  });
698
750
  });
699
- describe("Should be null when listener removed and event is triggered", () => {
751
+ describe("Should be null when listener is removed by unsubscribe and event is triggered", () => {
700
752
  test("Object literal listener", async () => {
701
753
  const listener = {
702
754
  resultA: null,
@@ -781,6 +833,332 @@ export function eventBusTestSuite(settings) {
781
833
  expect(resultB).toBeNull();
782
834
  });
783
835
  });
836
+ describe("Should be null when listener is removed by removeListener and event is triggered", () => {
837
+ test("Object literal listener", async () => {
838
+ const listener = {
839
+ resultA: null,
840
+ resultB: null,
841
+ invoke(event) {
842
+ if (event instanceof AddEvent) {
843
+ this.resultA = event;
844
+ }
845
+ if (event instanceof SubEvent) {
846
+ this.resultB = event;
847
+ }
848
+ },
849
+ };
850
+ await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
851
+ await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
852
+ const addEvent = new AddEvent({
853
+ a: 1,
854
+ b: 2,
855
+ });
856
+ const subEvent = new SubEvent({
857
+ c: 1,
858
+ d: 2,
859
+ });
860
+ await eventBusA.dispatchMany([addEvent, subEvent]);
861
+ await LazyPromise.delay(TTL);
862
+ expect(listener.resultA).toBeNull();
863
+ expect(listener.resultB).toBeNull();
864
+ });
865
+ test("Class instance listener", async () => {
866
+ class Listener {
867
+ resultA = null;
868
+ resultB = null;
869
+ invoke(event) {
870
+ if (event instanceof AddEvent) {
871
+ this.resultA = event;
872
+ }
873
+ if (event instanceof SubEvent) {
874
+ this.resultB = event;
875
+ }
876
+ }
877
+ }
878
+ const listener = new Listener();
879
+ await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
880
+ await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
881
+ const addEvent = new AddEvent({
882
+ a: 1,
883
+ b: 2,
884
+ });
885
+ const subEvent = new SubEvent({
886
+ c: 1,
887
+ d: 2,
888
+ });
889
+ await eventBusA.dispatchMany([addEvent, subEvent]);
890
+ await LazyPromise.delay(TTL);
891
+ expect(listener.resultA).toBeNull();
892
+ expect(listener.resultB).toBeNull();
893
+ });
894
+ test("Function listener", async () => {
895
+ let resultA = null;
896
+ let resultB = null;
897
+ const listener = (event) => {
898
+ if (event instanceof AddEvent) {
899
+ resultA = event;
900
+ }
901
+ if (event instanceof SubEvent) {
902
+ resultB = event;
903
+ }
904
+ };
905
+ await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
906
+ await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
907
+ const addEvent = new AddEvent({
908
+ a: 1,
909
+ b: 2,
910
+ });
911
+ const subEvent = new SubEvent({
912
+ c: 1,
913
+ d: 2,
914
+ });
915
+ await eventBusA.dispatchMany([addEvent, subEvent]);
916
+ await LazyPromise.delay(TTL);
917
+ expect(resultA).toBeNull();
918
+ expect(resultB).toBeNull();
919
+ });
920
+ });
921
+ });
922
+ describe("method: subscribeOnce", () => {
923
+ describe("Should be null when listener added and event is not triggered", () => {
924
+ test("Object literal listener", async () => {
925
+ const listener = {
926
+ result: null,
927
+ invoke(event) {
928
+ this.result = event;
929
+ },
930
+ };
931
+ await eventBusA.subscribeOnce(AddEvent, listener);
932
+ expect(listener.result).toBeNull();
933
+ });
934
+ test("Class instance listener", async () => {
935
+ class Listener {
936
+ result = null;
937
+ invoke(event) {
938
+ this.result = event;
939
+ }
940
+ }
941
+ const listener = new Listener();
942
+ await eventBusA.subscribeOnce(AddEvent, listener);
943
+ expect(listener.result).toBeNull();
944
+ });
945
+ test("Function listener", async () => {
946
+ let result = null;
947
+ const listener = (event) => {
948
+ result = event;
949
+ };
950
+ await eventBusA.subscribeOnce(AddEvent, listener);
951
+ expect(result).toBeNull();
952
+ });
953
+ });
954
+ describe("Should be AddEvent when listener added and event is triggered", () => {
955
+ test("Object literal listener", async () => {
956
+ const listener = {
957
+ result: null,
958
+ invoke(event) {
959
+ this.result = event;
960
+ },
961
+ };
962
+ await eventBusA.subscribeOnce(AddEvent, listener);
963
+ const event = new AddEvent({
964
+ a: 1,
965
+ b: 2,
966
+ });
967
+ await eventBusA.dispatch(event);
968
+ await LazyPromise.delay(TTL);
969
+ expect(listener.result).toEqual(event);
970
+ expect(listener.result).toBeInstanceOf(AddEvent);
971
+ });
972
+ test("Class instance listener", async () => {
973
+ class Listener {
974
+ result = null;
975
+ invoke(event) {
976
+ this.result = event;
977
+ }
978
+ }
979
+ const listener = new Listener();
980
+ await eventBusA.subscribeOnce(AddEvent, listener);
981
+ const event = new AddEvent({
982
+ a: 1,
983
+ b: 2,
984
+ });
985
+ await eventBusA.dispatch(event);
986
+ await LazyPromise.delay(TTL);
987
+ expect(listener.result).toEqual(event);
988
+ expect(listener.result).toBeInstanceOf(AddEvent);
989
+ });
990
+ test("Function listener", async () => {
991
+ let result = null;
992
+ const listener = (event) => {
993
+ result = event;
994
+ };
995
+ await eventBusA.subscribeOnce(AddEvent, listener);
996
+ const event = new AddEvent({
997
+ a: 1,
998
+ b: 2,
999
+ });
1000
+ await eventBusA.dispatch(event);
1001
+ await LazyPromise.delay(TTL);
1002
+ expect(result).toEqual(event);
1003
+ expect(result).toBeInstanceOf(AddEvent);
1004
+ });
1005
+ });
1006
+ describe("Should only listen for event once", () => {
1007
+ test("Object literal listener", async () => {
1008
+ const listener = {
1009
+ i: 0,
1010
+ invoke(_event) {
1011
+ this.i++;
1012
+ },
1013
+ };
1014
+ await eventBusA.subscribeOnce(AddEvent, listener);
1015
+ const event = new AddEvent({
1016
+ a: 1,
1017
+ b: 2,
1018
+ });
1019
+ await eventBusA.dispatch(event);
1020
+ await eventBusA.dispatch(event);
1021
+ await LazyPromise.delay(TTL);
1022
+ expect(listener.i).toBe(1);
1023
+ });
1024
+ test("Class instance listener", async () => {
1025
+ class Listener {
1026
+ i = 0;
1027
+ invoke(_event) {
1028
+ this.i++;
1029
+ }
1030
+ }
1031
+ const listener = new Listener();
1032
+ await eventBusA.subscribeOnce(AddEvent, listener);
1033
+ const event = new AddEvent({
1034
+ a: 1,
1035
+ b: 2,
1036
+ });
1037
+ await eventBusA.dispatch(event);
1038
+ await eventBusA.dispatch(event);
1039
+ await LazyPromise.delay(TTL);
1040
+ expect(listener.i).toBe(1);
1041
+ });
1042
+ test("Function listener", async () => {
1043
+ let i = 0;
1044
+ const listener = () => {
1045
+ i++;
1046
+ };
1047
+ await eventBusA.subscribeOnce(AddEvent, listener);
1048
+ const event = new AddEvent({
1049
+ a: 1,
1050
+ b: 2,
1051
+ });
1052
+ await eventBusA.dispatch(event);
1053
+ await eventBusA.dispatch(event);
1054
+ await LazyPromise.delay(TTL);
1055
+ expect(i).toBe(1);
1056
+ });
1057
+ });
1058
+ describe("Should be null when listener is removed by unsubscribe function and event is triggered", () => {
1059
+ test("Object literal listener", async () => {
1060
+ const listener = {
1061
+ result: null,
1062
+ invoke(event) {
1063
+ this.result = event;
1064
+ },
1065
+ };
1066
+ const unsubscribe = await eventBusA.subscribeOnce(AddEvent, listener);
1067
+ await unsubscribe();
1068
+ const event = new AddEvent({
1069
+ a: 1,
1070
+ b: 2,
1071
+ });
1072
+ await eventBusA.dispatch(event);
1073
+ await LazyPromise.delay(TTL);
1074
+ expect(listener.result).toBeNull();
1075
+ });
1076
+ test("Class instance listener", async () => {
1077
+ class Listener {
1078
+ result = null;
1079
+ invoke(event) {
1080
+ this.result = event;
1081
+ }
1082
+ }
1083
+ const listener = new Listener();
1084
+ const unsubscribe = await eventBusA.subscribeOnce(AddEvent, listener);
1085
+ await unsubscribe();
1086
+ const event = new AddEvent({
1087
+ a: 1,
1088
+ b: 2,
1089
+ });
1090
+ await eventBusA.dispatch(event);
1091
+ await LazyPromise.delay(TTL);
1092
+ expect(listener.result).toBeNull();
1093
+ });
1094
+ test("Function listener", async () => {
1095
+ let result = null;
1096
+ const listener = (event) => {
1097
+ result = event;
1098
+ };
1099
+ const unsubscribe = await eventBusA.subscribeOnce(AddEvent, listener);
1100
+ await unsubscribe();
1101
+ const event = new AddEvent({
1102
+ a: 1,
1103
+ b: 2,
1104
+ });
1105
+ await eventBusA.dispatch(event);
1106
+ await LazyPromise.delay(TTL);
1107
+ expect(result).toBeNull();
1108
+ });
1109
+ });
1110
+ describe("Should be null when listener is removed by removeListener method and event is triggered", () => {
1111
+ test("Object literal listener", async () => {
1112
+ const listener = {
1113
+ result: null,
1114
+ invoke(event) {
1115
+ this.result = event;
1116
+ },
1117
+ };
1118
+ await eventBusA.subscribeOnce(AddEvent, listener);
1119
+ await eventBusA.removeListener(AddEvent, listener);
1120
+ const event = new AddEvent({
1121
+ a: 1,
1122
+ b: 2,
1123
+ });
1124
+ await eventBusA.dispatch(event);
1125
+ await LazyPromise.delay(TTL);
1126
+ expect(listener.result).toBeNull();
1127
+ });
1128
+ test("Class instance listener", async () => {
1129
+ class Listener {
1130
+ result = null;
1131
+ invoke(event) {
1132
+ this.result = event;
1133
+ }
1134
+ }
1135
+ const listener = new Listener();
1136
+ await eventBusA.subscribeOnce(AddEvent, listener);
1137
+ await eventBusA.removeListener(AddEvent, listener);
1138
+ const event = new AddEvent({
1139
+ a: 1,
1140
+ b: 2,
1141
+ });
1142
+ await eventBusA.dispatch(event);
1143
+ await LazyPromise.delay(TTL);
1144
+ expect(listener.result).toBeNull();
1145
+ });
1146
+ test("Function listener", async () => {
1147
+ let result = null;
1148
+ const listener = (event) => {
1149
+ result = event;
1150
+ };
1151
+ await eventBusA.subscribeOnce(AddEvent, listener);
1152
+ await eventBusA.removeListener(AddEvent, listener);
1153
+ const event = new AddEvent({
1154
+ a: 1,
1155
+ b: 2,
1156
+ });
1157
+ await eventBusA.dispatch(event);
1158
+ await LazyPromise.delay(TTL);
1159
+ expect(result).toBeNull();
1160
+ });
1161
+ });
784
1162
  });
785
1163
  describe("method: listenOnce", () => {
786
1164
  describe("Should be null when listener added and event is not triggered", () => {
@@ -918,6 +1296,58 @@ export function eventBusTestSuite(settings) {
918
1296
  expect(i).toBe(1);
919
1297
  });
920
1298
  });
1299
+ describe("Should be null when listener is removed and event is triggered", () => {
1300
+ test("Object literal listener", async () => {
1301
+ const listener = {
1302
+ result: null,
1303
+ invoke(event) {
1304
+ this.result = event;
1305
+ },
1306
+ };
1307
+ await eventBusA.listenOnce(AddEvent, listener);
1308
+ await eventBusA.removeListener(AddEvent, listener);
1309
+ const event = new AddEvent({
1310
+ a: 1,
1311
+ b: 2,
1312
+ });
1313
+ await eventBusA.dispatch(event);
1314
+ await LazyPromise.delay(TTL);
1315
+ expect(listener.result).toBeNull();
1316
+ });
1317
+ test("Class instance listener", async () => {
1318
+ class Listener {
1319
+ result = null;
1320
+ invoke(event) {
1321
+ this.result = event;
1322
+ }
1323
+ }
1324
+ const listener = new Listener();
1325
+ await eventBusA.listenOnce(AddEvent, listener);
1326
+ await eventBusA.removeListener(AddEvent, listener);
1327
+ const event = new AddEvent({
1328
+ a: 1,
1329
+ b: 2,
1330
+ });
1331
+ await eventBusA.dispatch(event);
1332
+ await LazyPromise.delay(TTL);
1333
+ expect(listener.result).toBeNull();
1334
+ });
1335
+ test("Function listener", async () => {
1336
+ let result = null;
1337
+ const listener = (event) => {
1338
+ result = event;
1339
+ };
1340
+ await eventBusA.listenOnce(AddEvent, listener);
1341
+ await eventBusA.removeListener(AddEvent, listener);
1342
+ const event = new AddEvent({
1343
+ a: 1,
1344
+ b: 2,
1345
+ });
1346
+ await eventBusA.dispatch(event);
1347
+ await LazyPromise.delay(TTL);
1348
+ expect(result).toBeNull();
1349
+ });
1350
+ });
921
1351
  });
922
1352
  describe("method: asPromise", () => {
923
1353
  test("Should be null when listener added and event is not triggered", () => {
@@ -1072,6 +1502,25 @@ export function eventBusTestSuite(settings) {
1072
1502
  expect(result_a).toBeInstanceOf(AddEvent);
1073
1503
  expect(result_b).toBeNull();
1074
1504
  });
1505
+ test("method: subscribeOnce", async () => {
1506
+ let result_a = null;
1507
+ await eventBusA.subscribeOnce(AddEvent, (event) => {
1508
+ result_a = event;
1509
+ });
1510
+ let result_b = null;
1511
+ await eventBusB.subscribeOnce(AddEvent, (event) => {
1512
+ result_b = event;
1513
+ });
1514
+ const event = new AddEvent({
1515
+ a: 1,
1516
+ b: 2,
1517
+ });
1518
+ await eventBusA.dispatch(event);
1519
+ await LazyPromise.delay(TTL);
1520
+ expect(result_a).toEqual(event);
1521
+ expect(result_a).toBeInstanceOf(AddEvent);
1522
+ expect(result_b).toBeNull();
1523
+ });
1075
1524
  test("method: listenOnce", async () => {
1076
1525
  let result_a = null;
1077
1526
  await eventBusA.listenOnce(AddEvent, (event) => {