@daiso-tech/core 0.20.0 → 0.21.1

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 (121) hide show
  1. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js +13 -7
  2. package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  3. package/dist/cjs/cache/contracts/cache.errors.js +13 -0
  4. package/dist/cjs/cache/contracts/cache.errors.js.map +1 -1
  5. package/dist/cjs/cache/contracts/cache.events.js +17 -130
  6. package/dist/cjs/cache/contracts/cache.events.js.map +1 -1
  7. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js +0 -19
  8. package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  9. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js +671 -0
  10. package/dist/cjs/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  11. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +0 -20
  12. package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  13. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +0 -3
  14. package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  15. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +0 -4
  16. package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  17. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +0 -23
  18. package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  19. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +0 -3
  20. package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  21. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +0 -5
  22. package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  23. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +0 -3
  24. package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  25. package/dist/cjs/cache/implementations/derivables/cache/cache-settings.js +0 -18
  26. package/dist/cjs/cache/implementations/derivables/cache/cache-settings.js.map +1 -1
  27. package/dist/cjs/cache/implementations/derivables/cache/cache.js +4 -69
  28. package/dist/cjs/cache/implementations/derivables/cache/cache.js.map +1 -1
  29. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory.js +17 -13
  30. package/dist/cjs/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  31. package/dist/cjs/event-bus/contracts/_shared.js +3 -2
  32. package/dist/cjs/event-bus/contracts/_shared.js.map +1 -1
  33. package/dist/cjs/event-bus/contracts/event-bus.errors.js +14 -0
  34. package/dist/cjs/event-bus/contracts/event-bus.errors.js.map +1 -1
  35. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +1 -12
  36. package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  37. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js +2 -24
  38. package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  39. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus-settings.js +0 -12
  40. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus-settings.js.map +1 -1
  41. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus.js +1 -29
  42. package/dist/cjs/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  43. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +17 -15
  44. package/dist/cjs/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  45. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js +3 -0
  46. package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js.map +1 -1
  47. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js +15 -0
  48. package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  49. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +13 -7
  50. package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  51. package/dist/esm/cache/contracts/cache.errors.js +12 -0
  52. package/dist/esm/cache/contracts/cache.errors.js.map +1 -1
  53. package/dist/esm/cache/contracts/cache.events.js +15 -129
  54. package/dist/esm/cache/contracts/cache.events.js.map +1 -1
  55. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js +0 -19
  56. package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
  57. package/dist/esm/cache/implementations/_shared/cache.test-suite.js +672 -1
  58. package/dist/esm/cache/implementations/_shared/cache.test-suite.js.map +1 -1
  59. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +0 -20
  60. package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
  61. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +0 -3
  62. package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  63. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +0 -4
  64. package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  65. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +0 -23
  66. package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  67. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +0 -3
  68. package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  69. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +0 -5
  70. package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  71. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +0 -3
  72. package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  73. package/dist/esm/cache/implementations/derivables/cache/cache-settings.js +0 -18
  74. package/dist/esm/cache/implementations/derivables/cache/cache-settings.js.map +1 -1
  75. package/dist/esm/cache/implementations/derivables/cache/cache.js +5 -70
  76. package/dist/esm/cache/implementations/derivables/cache/cache.js.map +1 -1
  77. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory.js +17 -13
  78. package/dist/esm/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  79. package/dist/esm/event-bus/contracts/_shared.js +3 -2
  80. package/dist/esm/event-bus/contracts/_shared.js.map +1 -1
  81. package/dist/esm/event-bus/contracts/event-bus.errors.js +13 -0
  82. package/dist/esm/event-bus/contracts/event-bus.errors.js.map +1 -1
  83. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +1 -12
  84. package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
  85. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js +2 -24
  86. package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
  87. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus-settings.js +0 -12
  88. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus-settings.js.map +1 -1
  89. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus.js +2 -30
  90. package/dist/esm/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  91. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +14 -12
  92. package/dist/esm/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  93. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js +3 -0
  94. package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js.map +1 -1
  95. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js +15 -0
  96. package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js.map +1 -1
  97. package/dist/types/cache/contracts/cache-adapter.contract.d.ts +0 -4
  98. package/dist/types/cache/contracts/cache.errors.d.ts +7 -2
  99. package/dist/types/cache/contracts/cache.events.d.ts +22 -93
  100. package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +6 -10
  101. package/dist/types/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +0 -1
  102. package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +0 -1
  103. package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +0 -1
  104. package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +0 -1
  105. package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +0 -1
  106. package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +0 -1
  107. package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +0 -1
  108. package/dist/types/cache/implementations/derivables/cache/cache-settings.d.ts +2 -29
  109. package/dist/types/cache/implementations/derivables/cache/cache.d.ts +5 -33
  110. package/dist/types/cache/implementations/derivables/cache-factory/cache-factory-settings.d.ts +1 -1
  111. package/dist/types/cache/implementations/derivables/cache-factory/cache-factory.d.ts +4 -5
  112. package/dist/types/event-bus/contracts/_shared.d.ts +3 -4
  113. package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +4 -23
  114. package/dist/types/event-bus/contracts/event-bus.errors.d.ts +7 -2
  115. package/dist/types/event-bus/implementations/derivables/event-bus/event-bus-settings.d.ts +1 -19
  116. package/dist/types/event-bus/implementations/derivables/event-bus/event-bus.d.ts +16 -14
  117. package/dist/types/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +30 -5
  118. package/dist/types/serde/contracts/flexible-serde.contract.d.ts +3 -2
  119. package/dist/types/serde/implementations/no-op-serde/no-op-serde.d.ts +2 -1
  120. package/dist/types/serde/implementations/super-json-serde/super-json-serde.d.ts +2 -1
  121. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { KeyNotFoundCacheError, TypeCacheError, } from "../../../cache/contracts/_module";
1
+ import { KeyNotFoundCacheError, KeyNotFoundCacheEvent, KeyFoundCacheEvent, TypeCacheError, KeyAddedCacheEvent, KeyUpdatedCacheEvent, KeyRemovedCacheEvent, KeysClearedCacheEvent, KeyIncrementedCacheEvent, KeyDecrementedCacheEvent, } from "../../../cache/contracts/_module";
2
2
  import { TimeSpan } from "../../../utilities/_module";
3
3
  import { delay } from "../../../async/_module";
4
4
  export function cacheTestSuite(settings) {
@@ -802,6 +802,587 @@ export function cacheTestSuite(settings) {
802
802
  });
803
803
  });
804
804
  });
805
+ describe("Event tests:", () => {
806
+ const delayTime = TimeSpan.fromMilliseconds(50);
807
+ describe("method: exists", () => {
808
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
809
+ let event_ = null;
810
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
811
+ event_ = event;
812
+ });
813
+ await cacheA.exists("a");
814
+ await delay(delayTime);
815
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
816
+ expect(event_?.fields.key).toBe("a");
817
+ await unsubscribe();
818
+ });
819
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
820
+ let event_ = null;
821
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
822
+ event_ = event;
823
+ });
824
+ await cacheA.add("a", 1);
825
+ await cacheA.exists("a");
826
+ await delay(delayTime);
827
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
828
+ expect(event_?.fields.key).toBe("a");
829
+ expect(event_?.fields.value).toBe(1);
830
+ await unsubscribe();
831
+ });
832
+ });
833
+ describe("method: existsMany", () => {
834
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
835
+ let event_ = null;
836
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
837
+ event_ = event;
838
+ });
839
+ await cacheA.existsMany(["a"]);
840
+ await delay(delayTime);
841
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
842
+ expect(event_?.fields.key).toBe("a");
843
+ await unsubscribe();
844
+ });
845
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
846
+ let event_ = null;
847
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
848
+ event_ = event;
849
+ });
850
+ await cacheA.add("a", 1);
851
+ await cacheA.existsMany(["a"]);
852
+ await delay(delayTime);
853
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
854
+ expect(event_?.fields.key).toBe("a");
855
+ expect(event_?.fields.value).toBe(1);
856
+ await unsubscribe();
857
+ });
858
+ });
859
+ describe("method: missing", () => {
860
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
861
+ let event_ = null;
862
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
863
+ event_ = event;
864
+ });
865
+ await cacheA.missing("a");
866
+ await delay(delayTime);
867
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
868
+ expect(event_?.fields.key).toBe("a");
869
+ await unsubscribe();
870
+ });
871
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
872
+ let event_ = null;
873
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
874
+ event_ = event;
875
+ });
876
+ await cacheA.add("a", 1);
877
+ await cacheA.missing("a");
878
+ await delay(delayTime);
879
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
880
+ expect(event_?.fields.key).toBe("a");
881
+ expect(event_?.fields.value).toBe(1);
882
+ await unsubscribe();
883
+ });
884
+ });
885
+ describe("method: missingMany", () => {
886
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
887
+ let event_ = null;
888
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
889
+ event_ = event;
890
+ });
891
+ await cacheA.missingMany(["a"]);
892
+ await delay(delayTime);
893
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
894
+ expect(event_?.fields.key).toBe("a");
895
+ await unsubscribe();
896
+ });
897
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
898
+ let event_ = null;
899
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
900
+ event_ = event;
901
+ });
902
+ await cacheA.add("a", 1);
903
+ await cacheA.missingMany(["a"]);
904
+ await delay(delayTime);
905
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
906
+ expect(event_?.fields.key).toBe("a");
907
+ expect(event_?.fields.value).toBe(1);
908
+ await unsubscribe();
909
+ });
910
+ });
911
+ describe("method: get", () => {
912
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
913
+ let event_ = null;
914
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
915
+ event_ = event;
916
+ });
917
+ await cacheA.get("a");
918
+ await delay(delayTime);
919
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
920
+ expect(event_?.fields.key).toBe("a");
921
+ await unsubscribe();
922
+ });
923
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
924
+ let event_ = null;
925
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
926
+ event_ = event;
927
+ });
928
+ await cacheA.add("a", 1);
929
+ await cacheA.get("a");
930
+ await delay(delayTime);
931
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
932
+ expect(event_?.fields.key).toBe("a");
933
+ expect(event_?.fields.value).toBe(1);
934
+ await unsubscribe();
935
+ });
936
+ });
937
+ describe("method: getMany", () => {
938
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
939
+ let event_ = null;
940
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
941
+ event_ = event;
942
+ });
943
+ await cacheA.getMany(["a"]);
944
+ await delay(delayTime);
945
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
946
+ expect(event_?.fields.key).toBe("a");
947
+ await unsubscribe();
948
+ });
949
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
950
+ let event_ = null;
951
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
952
+ event_ = event;
953
+ });
954
+ await cacheA.add("a", 1);
955
+ await cacheA.getMany(["a"]);
956
+ await delay(delayTime);
957
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
958
+ expect(event_?.fields.key).toBe("a");
959
+ expect(event_?.fields.value).toBe(1);
960
+ await unsubscribe();
961
+ });
962
+ });
963
+ describe("method: getOr", () => {
964
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
965
+ let event_ = null;
966
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
967
+ event_ = event;
968
+ });
969
+ await cacheA.getOr("a", 1);
970
+ await delay(delayTime);
971
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
972
+ expect(event_?.fields.key).toBe("a");
973
+ await unsubscribe();
974
+ });
975
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
976
+ let event_ = null;
977
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
978
+ event_ = event;
979
+ });
980
+ await cacheA.add("a", 1);
981
+ await cacheA.getOr("a", 1);
982
+ await delay(delayTime);
983
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
984
+ expect(event_?.fields.key).toBe("a");
985
+ expect(event_?.fields.value).toBe(1);
986
+ await unsubscribe();
987
+ });
988
+ });
989
+ describe("method: getOrMany", () => {
990
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
991
+ let event_ = null;
992
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
993
+ event_ = event;
994
+ });
995
+ await cacheA.getOrMany({ a: 1 });
996
+ await delay(delayTime);
997
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
998
+ expect(event_?.fields.key).toBe("a");
999
+ await unsubscribe();
1000
+ });
1001
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1002
+ let event_ = null;
1003
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1004
+ event_ = event;
1005
+ });
1006
+ await cacheA.add("a", 1);
1007
+ await cacheA.getOrMany({ a: 1 });
1008
+ await delay(delayTime);
1009
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1010
+ expect(event_?.fields.key).toBe("a");
1011
+ expect(event_?.fields.value).toBe(1);
1012
+ await unsubscribe();
1013
+ });
1014
+ });
1015
+ describe("method: getOrFail", () => {
1016
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1017
+ let event_ = null;
1018
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1019
+ event_ = event;
1020
+ });
1021
+ try {
1022
+ await cacheA.getOrFail("a");
1023
+ }
1024
+ catch {
1025
+ }
1026
+ await delay(delayTime);
1027
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1028
+ expect(event_?.fields.key).toBe("a");
1029
+ await unsubscribe();
1030
+ });
1031
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1032
+ let event_ = null;
1033
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1034
+ event_ = event;
1035
+ });
1036
+ await cacheA.add("a", 1);
1037
+ await cacheA.getOrFail("a");
1038
+ await delay(delayTime);
1039
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1040
+ expect(event_?.fields.key).toBe("a");
1041
+ expect(event_?.fields.value).toBe(1);
1042
+ await unsubscribe();
1043
+ });
1044
+ });
1045
+ describe("method: add", () => {
1046
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1047
+ let event_ = null;
1048
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1049
+ event_ = event;
1050
+ });
1051
+ const ttl = TimeSpan.fromMilliseconds(20);
1052
+ await cacheA.add("a", 1, ttl);
1053
+ await delay(delayTime);
1054
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1055
+ expect(event_?.fields.key).toBe("a");
1056
+ expect(event_?.fields.value).toBe(1);
1057
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1058
+ await unsubscribe();
1059
+ });
1060
+ });
1061
+ describe("method: addMany", () => {
1062
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1063
+ let event_ = null;
1064
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1065
+ event_ = event;
1066
+ });
1067
+ const ttl = TimeSpan.fromMilliseconds(20);
1068
+ await cacheA.addMany({ a: { value: 1, ttl } });
1069
+ await delay(delayTime);
1070
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1071
+ expect(event_?.fields.key).toBe("a");
1072
+ expect(event_?.fields.value).toBe(1);
1073
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1074
+ await unsubscribe();
1075
+ });
1076
+ });
1077
+ describe("method: update", () => {
1078
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1079
+ let event_ = null;
1080
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1081
+ event_ = event;
1082
+ });
1083
+ await cacheA.add("a", 1);
1084
+ await cacheA.update("a", 2);
1085
+ await delay(delayTime);
1086
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1087
+ expect(event_?.fields.key).toBe("a");
1088
+ expect(event_?.fields.value).toBe(2);
1089
+ await unsubscribe();
1090
+ });
1091
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1092
+ let event_ = null;
1093
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1094
+ event_ = event;
1095
+ });
1096
+ await cacheA.update("a", 2);
1097
+ await delay(delayTime);
1098
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1099
+ expect(event_?.fields.key).toBe("a");
1100
+ await unsubscribe();
1101
+ });
1102
+ });
1103
+ describe("method: updateMany", () => {
1104
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1105
+ let event_ = null;
1106
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1107
+ event_ = event;
1108
+ });
1109
+ await cacheA.add("a", 1);
1110
+ await cacheA.updateMany({ a: 2 });
1111
+ await delay(delayTime);
1112
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1113
+ expect(event_?.fields.key).toBe("a");
1114
+ expect(event_?.fields.value).toBe(2);
1115
+ await unsubscribe();
1116
+ });
1117
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1118
+ let event_ = null;
1119
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1120
+ event_ = event;
1121
+ });
1122
+ await cacheA.updateMany({ a: 2 });
1123
+ await delay(delayTime);
1124
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1125
+ expect(event_?.fields.key).toBe("a");
1126
+ await unsubscribe();
1127
+ });
1128
+ });
1129
+ describe("method: put", () => {
1130
+ test("Should dispatch KeyAddedCacheEvent when key doesnt exists", async () => {
1131
+ let event_ = null;
1132
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1133
+ event_ = event;
1134
+ });
1135
+ const ttl = TimeSpan.fromMilliseconds(20);
1136
+ await cacheA.put("a", 1, ttl);
1137
+ await delay(delayTime);
1138
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1139
+ expect(event_?.fields.key).toBe("a");
1140
+ expect(event_?.fields.value).toBe(1);
1141
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1142
+ await unsubscribe();
1143
+ });
1144
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1145
+ let event_ = null;
1146
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1147
+ event_ = event;
1148
+ });
1149
+ await cacheA.put("a", 1);
1150
+ await cacheA.put("a", 2);
1151
+ await delay(delayTime);
1152
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1153
+ expect(event_?.fields.key).toBe("a");
1154
+ expect(event_?.fields.value).toBe(2);
1155
+ await unsubscribe();
1156
+ });
1157
+ });
1158
+ describe("method: putMany", () => {
1159
+ test("Should dispatch KeyAddedCacheEvent when key exists", async () => {
1160
+ let event_ = null;
1161
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1162
+ event_ = event;
1163
+ });
1164
+ const ttl = TimeSpan.fromMilliseconds(20);
1165
+ await cacheA.putMany({ a: { value: 1, ttl } });
1166
+ await delay(delayTime);
1167
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1168
+ expect(event_?.fields.key).toBe("a");
1169
+ expect(event_?.fields.value).toBe(1);
1170
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1171
+ await unsubscribe();
1172
+ });
1173
+ test("Should dispatch KeyUpdatedCacheEvent when key exists", async () => {
1174
+ let event_ = null;
1175
+ const unsubscribe = await cacheA.subscribe(KeyUpdatedCacheEvent, (event) => {
1176
+ event_ = event;
1177
+ });
1178
+ const ttl = TimeSpan.fromMilliseconds(20);
1179
+ await cacheA.putMany({ a: { value: 1, ttl } });
1180
+ await cacheA.putMany({ a: { value: 2, ttl } });
1181
+ await delay(delayTime);
1182
+ expect(event_).toBeInstanceOf(KeyUpdatedCacheEvent);
1183
+ expect(event_?.fields.key).toBe("a");
1184
+ expect(event_?.fields.value).toBe(2);
1185
+ await unsubscribe();
1186
+ });
1187
+ });
1188
+ describe("method: remove", () => {
1189
+ test("Should dispatch KeyRemovedCacheEvent when key exists", async () => {
1190
+ let event_ = null;
1191
+ const unsubscribe = await cacheA.subscribe(KeyRemovedCacheEvent, (event) => {
1192
+ event_ = event;
1193
+ });
1194
+ await cacheA.add("a", 1);
1195
+ await cacheA.remove("a");
1196
+ await delay(delayTime);
1197
+ expect(event_).toBeInstanceOf(KeyRemovedCacheEvent);
1198
+ expect(event_?.fields.key).toBe("a");
1199
+ await unsubscribe();
1200
+ });
1201
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1202
+ let event_ = null;
1203
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1204
+ event_ = event;
1205
+ });
1206
+ await cacheA.remove("a");
1207
+ await delay(delayTime);
1208
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1209
+ expect(event_?.fields.key).toBe("a");
1210
+ await unsubscribe();
1211
+ });
1212
+ });
1213
+ describe("method: removeMany", () => {
1214
+ test("Should dispatch KeyRemovedCacheEvent when key doesnt exists", async () => {
1215
+ let event_ = null;
1216
+ const unsubscribe = await cacheA.subscribe(KeyRemovedCacheEvent, (event) => {
1217
+ event_ = event;
1218
+ });
1219
+ await cacheA.add("a", 1);
1220
+ await cacheA.removeMany(["a"]);
1221
+ await delay(delayTime);
1222
+ expect(event_).toBeInstanceOf(KeyRemovedCacheEvent);
1223
+ expect(event_?.fields.key).toBe("a");
1224
+ await unsubscribe();
1225
+ });
1226
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1227
+ let event_ = null;
1228
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1229
+ event_ = event;
1230
+ });
1231
+ await cacheA.removeMany(["a"]);
1232
+ await delay(delayTime);
1233
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1234
+ expect(event_?.fields.key).toBe("a");
1235
+ await unsubscribe();
1236
+ });
1237
+ });
1238
+ describe("method: getAndRemove", () => {
1239
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1240
+ let event_ = null;
1241
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1242
+ event_ = event;
1243
+ });
1244
+ await cacheA.getAndRemove("a");
1245
+ await delay(delayTime);
1246
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1247
+ expect(event_?.fields.key).toBe("a");
1248
+ await unsubscribe();
1249
+ });
1250
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1251
+ let event_ = null;
1252
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1253
+ event_ = event;
1254
+ });
1255
+ await cacheA.add("a", 1);
1256
+ await cacheA.getAndRemove("a");
1257
+ await delay(delayTime);
1258
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1259
+ expect(event_?.fields.key).toBe("a");
1260
+ expect(event_?.fields.value).toBe(1);
1261
+ await unsubscribe();
1262
+ });
1263
+ test("Should dispatch KeyRemovedCacheEvent when key exists", async () => {
1264
+ let event_ = null;
1265
+ const unsubscribe = await cacheA.subscribe(KeyRemovedCacheEvent, (event) => {
1266
+ event_ = event;
1267
+ });
1268
+ await cacheA.add("a", 1);
1269
+ await cacheA.getAndRemove("a");
1270
+ await delay(delayTime);
1271
+ expect(event_).toBeInstanceOf(KeyRemovedCacheEvent);
1272
+ expect(event_?.fields.key).toBe("a");
1273
+ await unsubscribe();
1274
+ });
1275
+ });
1276
+ describe("method: getOrAdd", () => {
1277
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1278
+ let event_ = null;
1279
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1280
+ event_ = event;
1281
+ });
1282
+ await cacheA.getOrAdd("a", 1);
1283
+ await delay(delayTime);
1284
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1285
+ expect(event_?.fields.key).toBe("a");
1286
+ await unsubscribe();
1287
+ });
1288
+ test("Should dispatch KeyFoundCacheEvent when key exists", async () => {
1289
+ let event_ = null;
1290
+ const unsubscribe = await cacheA.subscribe(KeyFoundCacheEvent, (event) => {
1291
+ event_ = event;
1292
+ });
1293
+ await cacheA.add("a", 1);
1294
+ await cacheA.getOrAdd("a", 1);
1295
+ await delay(delayTime);
1296
+ expect(event_).toBeInstanceOf(KeyFoundCacheEvent);
1297
+ expect(event_?.fields.key).toBe("a");
1298
+ expect(event_?.fields.value).toBe(1);
1299
+ await unsubscribe();
1300
+ });
1301
+ test("Should dispatch KeyAddedCacheEvent when key exists", async () => {
1302
+ let event_ = null;
1303
+ const unsubscribe = await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1304
+ event_ = event;
1305
+ });
1306
+ const ttl = TimeSpan.fromMilliseconds(50);
1307
+ await cacheA.getOrAdd("a", 1, ttl);
1308
+ await delay(delayTime);
1309
+ expect(event_).toBeInstanceOf(KeyAddedCacheEvent);
1310
+ expect(event_?.fields.key).toBe("a");
1311
+ expect(event_?.fields.value).toBe(1);
1312
+ expect(event_?.fields.ttl?.toMilliseconds()).toBe(ttl.toMilliseconds());
1313
+ await unsubscribe();
1314
+ });
1315
+ });
1316
+ describe("method: increment", () => {
1317
+ test("Should dispatch KeyIncrementedCacheEvent when key exists", async () => {
1318
+ let event_ = null;
1319
+ const unsubscribe = await cacheA.subscribe(KeyIncrementedCacheEvent, (event) => {
1320
+ event_ = event;
1321
+ });
1322
+ await cacheA.add("a", 1);
1323
+ await cacheA.increment("a", 1);
1324
+ await delay(delayTime);
1325
+ expect(event_).toBeInstanceOf(KeyIncrementedCacheEvent);
1326
+ expect(event_?.fields.key).toBe("a");
1327
+ expect(event_?.fields.value).toBe(1);
1328
+ await unsubscribe();
1329
+ });
1330
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1331
+ let event_ = null;
1332
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1333
+ event_ = event;
1334
+ });
1335
+ await cacheA.increment("a", 1);
1336
+ await delay(delayTime);
1337
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1338
+ expect(event_?.fields.key).toBe("a");
1339
+ await unsubscribe();
1340
+ });
1341
+ });
1342
+ describe("method: decrement", () => {
1343
+ test("Should dispatch KeyDecrementedCacheEvent when key exists", async () => {
1344
+ let event_ = null;
1345
+ const unsubscribe = await cacheA.subscribe(KeyDecrementedCacheEvent, (event) => {
1346
+ event_ = event;
1347
+ });
1348
+ await cacheA.add("a", 1);
1349
+ await cacheA.decrement("a", 1);
1350
+ await delay(delayTime);
1351
+ expect(event_).toBeInstanceOf(KeyDecrementedCacheEvent);
1352
+ expect(event_?.fields.key).toBe("a");
1353
+ expect(event_?.fields.value).toBe(1);
1354
+ await unsubscribe();
1355
+ });
1356
+ test("Should dispatch KeyNotFoundCacheEvent when key doesnt exists", async () => {
1357
+ let event_ = null;
1358
+ const unsubscribe = await cacheA.subscribe(KeyNotFoundCacheEvent, (event) => {
1359
+ event_ = event;
1360
+ });
1361
+ await cacheA.decrement("a", 1);
1362
+ await delay(delayTime);
1363
+ expect(event_).toBeInstanceOf(KeyNotFoundCacheEvent);
1364
+ expect(event_?.fields.key).toBe("a");
1365
+ await unsubscribe();
1366
+ });
1367
+ });
1368
+ describe("method: clear", () => {
1369
+ test("Should dispatch KeysClearedCacheEvent when key doesnt exists", async () => {
1370
+ let event_ = null;
1371
+ const unsubscribe = await cacheA.subscribe(KeysClearedCacheEvent, (event) => {
1372
+ event_ = event;
1373
+ });
1374
+ await cacheA.addMany({
1375
+ a: { value: 1 },
1376
+ b: { value: 2 },
1377
+ c: { value: 3 },
1378
+ });
1379
+ await cacheA.clear();
1380
+ await delay(delayTime);
1381
+ expect(event_).toBeInstanceOf(KeysClearedCacheEvent);
1382
+ await unsubscribe();
1383
+ });
1384
+ });
1385
+ });
805
1386
  describe("Group tests:", () => {
806
1387
  test("method: exists", async () => {
807
1388
  await cacheA.put("a", 1);
@@ -1023,6 +1604,96 @@ export function cacheTestSuite(settings) {
1023
1604
  b: 2,
1024
1605
  });
1025
1606
  });
1607
+ test("method: addListener / dispatch", async () => {
1608
+ let result_a = null;
1609
+ await cacheA.addListener(KeyAddedCacheEvent, (event) => {
1610
+ result_a = event;
1611
+ });
1612
+ let result_b = null;
1613
+ await cacheB.addListener(KeyAddedCacheEvent, (event) => {
1614
+ result_b = event;
1615
+ });
1616
+ await cacheA.add("a", 1);
1617
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1618
+ expect(result_b).toBeNull();
1619
+ });
1620
+ test("method: addListenerMany / dispatch", async () => {
1621
+ let result_a = null;
1622
+ await cacheA.addListenerMany([KeyAddedCacheEvent], (event) => {
1623
+ result_a = event;
1624
+ });
1625
+ let result_b = null;
1626
+ await cacheB.addListenerMany([KeyAddedCacheEvent], (event) => {
1627
+ result_b = event;
1628
+ });
1629
+ await cacheA.add("a", 1);
1630
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1631
+ expect(result_b).toBeNull();
1632
+ });
1633
+ test("method: removeListener / addListener / dispatch", async () => {
1634
+ let result_a = null;
1635
+ await cacheA.addListener(KeyAddedCacheEvent, (event) => {
1636
+ result_a = event;
1637
+ });
1638
+ let result_b = null;
1639
+ const listenerB = (event) => {
1640
+ result_b = event;
1641
+ };
1642
+ await cacheB.addListener(KeyAddedCacheEvent, listenerB);
1643
+ await cacheB.removeListener(KeyAddedCacheEvent, listenerB);
1644
+ await cacheA.add("a", 1);
1645
+ await cacheB.add("a", 1);
1646
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1647
+ expect(result_b).toBeNull();
1648
+ });
1649
+ test("method: removeListenerMany / addListener / dispatch", async () => {
1650
+ let result_a = null;
1651
+ await cacheA.addListener(KeyAddedCacheEvent, (event) => {
1652
+ result_a = event;
1653
+ });
1654
+ let result_b = null;
1655
+ const listenerB = (event) => {
1656
+ result_b = event;
1657
+ };
1658
+ await cacheB.addListener(KeyAddedCacheEvent, listenerB);
1659
+ await cacheB.removeListenerMany([KeyAddedCacheEvent], listenerB);
1660
+ await cacheA.add("a", 1);
1661
+ await cacheB.add("a", 1);
1662
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1663
+ expect(result_b).toBeNull();
1664
+ });
1665
+ test("method: subscribe / dispatch", async () => {
1666
+ let result_a = null;
1667
+ await cacheA.subscribe(KeyAddedCacheEvent, (event) => {
1668
+ result_a = event;
1669
+ });
1670
+ let result_b = null;
1671
+ const listenerB = (event) => {
1672
+ result_b = event;
1673
+ };
1674
+ const unsubscribe = await cacheB.subscribe(KeyAddedCacheEvent, listenerB);
1675
+ await unsubscribe();
1676
+ await cacheA.add("a", 1);
1677
+ await cacheB.add("a", 1);
1678
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1679
+ expect(result_b).toBeNull();
1680
+ });
1681
+ test("method: subscribeMany / dispatch", async () => {
1682
+ let result_a = null;
1683
+ await cacheA.subscribeMany([KeyAddedCacheEvent], (event) => {
1684
+ result_a = event;
1685
+ });
1686
+ let result_b = null;
1687
+ const listenerB = (event) => {
1688
+ result_b = event;
1689
+ };
1690
+ const unsubscribe = await cacheB.subscribeMany([KeyAddedCacheEvent], listenerB);
1691
+ await unsubscribe();
1692
+ await cacheA.add("a", 1);
1693
+ await cacheB.add("a", 1);
1694
+ expect(result_a).toBeInstanceOf(KeyAddedCacheEvent);
1695
+ expect(result_b).toBeNull();
1696
+ });
1026
1697
  });
1027
1698
  }
1028
1699
  //# sourceMappingURL=cache.test-suite.js.map