mvc-common-toolkit 1.43.10 → 1.44.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 (210) hide show
  1. package/dist/src/constants.d.ts +59 -0
  2. package/dist/src/constants.js +69 -0
  3. package/dist/src/constants.js.map +1 -0
  4. package/dist/src/gateways/alibaba-cloud-gateway.d.ts +30 -0
  5. package/dist/src/gateways/alibaba-cloud-gateway.js +120 -0
  6. package/dist/src/gateways/alibaba-cloud-gateway.js.map +1 -0
  7. package/dist/src/gateways/http-audit-gateway.d.ts +20 -0
  8. package/dist/src/gateways/http-audit-gateway.js +76 -0
  9. package/dist/src/gateways/http-audit-gateway.js.map +1 -0
  10. package/dist/src/gateways/index.d.ts +5 -0
  11. package/dist/src/gateways/index.js +22 -0
  12. package/dist/src/gateways/index.js.map +1 -0
  13. package/dist/src/gateways/internal-auth-gateway.d.ts +8 -0
  14. package/dist/src/gateways/internal-auth-gateway.js +40 -0
  15. package/dist/src/gateways/internal-auth-gateway.js.map +1 -0
  16. package/dist/src/gateways/stdout-audit-gateway.d.ts +7 -0
  17. package/dist/src/gateways/stdout-audit-gateway.js +25 -0
  18. package/dist/src/gateways/stdout-audit-gateway.js.map +1 -0
  19. package/dist/src/gateways/webhook-audit-gateway.d.ts +14 -0
  20. package/dist/src/gateways/webhook-audit-gateway.js +27 -0
  21. package/dist/src/gateways/webhook-audit-gateway.js.map +1 -0
  22. package/dist/src/interfaces.d.ts +218 -0
  23. package/dist/src/interfaces.js +3 -0
  24. package/dist/src/interfaces.js.map +1 -0
  25. package/dist/src/models/audit-log.d.ts +77 -0
  26. package/dist/src/models/audit-log.js +92 -0
  27. package/dist/src/models/audit-log.js.map +1 -0
  28. package/dist/src/models/index.d.ts +1 -0
  29. package/dist/src/models/index.js +18 -0
  30. package/dist/src/models/index.js.map +1 -0
  31. package/dist/src/pkg/array-helper.d.ts +1 -0
  32. package/dist/src/pkg/array-helper.js +12 -0
  33. package/dist/src/pkg/array-helper.js.map +1 -0
  34. package/dist/src/pkg/bcrypt-helper.d.ts +2 -0
  35. package/dist/src/pkg/bcrypt-helper.js +36 -0
  36. package/dist/src/pkg/bcrypt-helper.js.map +1 -0
  37. package/dist/src/pkg/crypto-helper.d.ts +2 -0
  38. package/dist/src/pkg/crypto-helper.js +16 -0
  39. package/dist/src/pkg/crypto-helper.js.map +1 -0
  40. package/dist/src/pkg/encryption-helper.d.ts +18 -0
  41. package/dist/src/pkg/encryption-helper.js +89 -0
  42. package/dist/src/pkg/encryption-helper.js.map +1 -0
  43. package/dist/src/pkg/encryption-helper.spec.d.ts +1 -0
  44. package/dist/src/pkg/encryption-helper.spec.js +238 -0
  45. package/dist/src/pkg/encryption-helper.spec.js.map +1 -0
  46. package/dist/src/pkg/filter-helper.d.ts +2 -0
  47. package/dist/src/pkg/filter-helper.js +102 -0
  48. package/dist/src/pkg/filter-helper.js.map +1 -0
  49. package/dist/src/pkg/filter-helper.spec.d.ts +1 -0
  50. package/dist/src/pkg/filter-helper.spec.js +94 -0
  51. package/dist/src/pkg/filter-helper.spec.js.map +1 -0
  52. package/dist/src/pkg/geoip-helper.d.ts +2 -0
  53. package/dist/src/pkg/geoip-helper.js +32 -0
  54. package/dist/src/pkg/geoip-helper.js.map +1 -0
  55. package/dist/src/pkg/hash-helper.d.ts +1 -0
  56. package/dist/src/pkg/hash-helper.js +37 -0
  57. package/dist/src/pkg/hash-helper.js.map +1 -0
  58. package/dist/src/pkg/http-request-utils.d.ts +4 -0
  59. package/dist/src/pkg/http-request-utils.js +55 -0
  60. package/dist/src/pkg/http-request-utils.js.map +1 -0
  61. package/dist/src/pkg/index.d.ts +19 -0
  62. package/dist/src/pkg/index.js +46 -0
  63. package/dist/src/pkg/index.js.map +1 -0
  64. package/dist/src/pkg/key-helper.d.ts +2 -0
  65. package/dist/src/pkg/key-helper.js +20 -0
  66. package/dist/src/pkg/key-helper.js.map +1 -0
  67. package/dist/src/pkg/logger.d.ts +9 -0
  68. package/dist/src/pkg/logger.js +23 -0
  69. package/dist/src/pkg/logger.js.map +1 -0
  70. package/dist/src/pkg/object-helper.d.ts +2 -0
  71. package/dist/src/pkg/object-helper.js +37 -0
  72. package/dist/src/pkg/object-helper.js.map +1 -0
  73. package/dist/src/pkg/paginated-cache-registry.d.ts +8 -0
  74. package/dist/src/pkg/paginated-cache-registry.js +23 -0
  75. package/dist/src/pkg/paginated-cache-registry.js.map +1 -0
  76. package/dist/src/pkg/query-helper.d.ts +3 -0
  77. package/dist/src/pkg/query-helper.js +60 -0
  78. package/dist/src/pkg/query-helper.js.map +1 -0
  79. package/dist/src/pkg/referral-tree-utils.d.ts +33 -0
  80. package/dist/src/pkg/referral-tree-utils.js +71 -0
  81. package/dist/src/pkg/referral-tree-utils.js.map +1 -0
  82. package/dist/src/pkg/scripts/index.d.ts +1 -0
  83. package/dist/src/pkg/scripts/index.js +28 -0
  84. package/dist/src/pkg/scripts/index.js.map +1 -0
  85. package/dist/src/pkg/scripts/lua.d.ts +10 -0
  86. package/dist/src/pkg/scripts/lua.js +109 -0
  87. package/dist/src/pkg/scripts/lua.js.map +1 -0
  88. package/dist/src/pkg/sort-helper.d.ts +3 -0
  89. package/dist/src/pkg/sort-helper.js +18 -0
  90. package/dist/src/pkg/sort-helper.js.map +1 -0
  91. package/dist/src/pkg/string-utils.d.ts +10 -0
  92. package/dist/src/pkg/string-utils.js +79 -0
  93. package/dist/src/pkg/string-utils.js.map +1 -0
  94. package/dist/src/pkg/task-helper.d.ts +2 -0
  95. package/dist/src/pkg/task-helper.js +30 -0
  96. package/dist/src/pkg/task-helper.js.map +1 -0
  97. package/dist/src/pkg/trading-pair-helper.d.ts +9 -0
  98. package/dist/src/pkg/trading-pair-helper.js +44 -0
  99. package/dist/src/pkg/trading-pair-helper.js.map +1 -0
  100. package/dist/src/pkg/trading-pair-helper.spec.d.ts +1 -0
  101. package/dist/src/pkg/trading-pair-helper.spec.js +132 -0
  102. package/dist/src/pkg/trading-pair-helper.spec.js.map +1 -0
  103. package/dist/src/pkg/workflow/delayed-task-registry.d.ts +10 -0
  104. package/dist/src/pkg/workflow/delayed-task-registry.js +67 -0
  105. package/dist/src/pkg/workflow/delayed-task-registry.js.map +1 -0
  106. package/dist/src/pkg/workflow/delayed-task.d.ts +18 -0
  107. package/dist/src/pkg/workflow/delayed-task.js +95 -0
  108. package/dist/src/pkg/workflow/delayed-task.js.map +1 -0
  109. package/dist/src/pkg/workflow/index.d.ts +5 -0
  110. package/dist/src/pkg/workflow/index.js +22 -0
  111. package/dist/src/pkg/workflow/index.js.map +1 -0
  112. package/dist/src/pkg/workflow/processing-milestone.d.ts +18 -0
  113. package/dist/src/pkg/workflow/processing-milestone.js +39 -0
  114. package/dist/src/pkg/workflow/processing-milestone.js.map +1 -0
  115. package/dist/src/pkg/workflow/retry-task.d.ts +24 -0
  116. package/dist/src/pkg/workflow/retry-task.js +89 -0
  117. package/dist/src/pkg/workflow/retry-task.js.map +1 -0
  118. package/dist/src/pkg/workflow/retry-task.spec.d.ts +1 -0
  119. package/dist/src/pkg/workflow/retry-task.spec.js +145 -0
  120. package/dist/src/pkg/workflow/retry-task.spec.js.map +1 -0
  121. package/dist/src/pkg/workflow/sync-taskqueue.d.ts +32 -0
  122. package/dist/src/pkg/workflow/sync-taskqueue.js +108 -0
  123. package/dist/src/pkg/workflow/sync-taskqueue.js.map +1 -0
  124. package/dist/src/pkg/worksheet.utils.d.ts +27 -0
  125. package/dist/src/pkg/worksheet.utils.js +116 -0
  126. package/dist/src/pkg/worksheet.utils.js.map +1 -0
  127. package/dist/src/services/audit-service.d.ts +7 -0
  128. package/dist/src/services/audit-service.js +32 -0
  129. package/dist/src/services/audit-service.js.map +1 -0
  130. package/dist/src/services/excel.service.d.ts +25 -0
  131. package/dist/src/services/excel.service.js +95 -0
  132. package/dist/src/services/excel.service.js.map +1 -0
  133. package/dist/src/services/http-service.d.ts +7 -0
  134. package/dist/src/services/http-service.js +67 -0
  135. package/dist/src/services/http-service.js.map +1 -0
  136. package/dist/src/services/index.d.ts +8 -0
  137. package/dist/src/services/index.js +25 -0
  138. package/dist/src/services/index.js.map +1 -0
  139. package/dist/src/services/kafka-service.d.ts +15 -0
  140. package/dist/src/services/kafka-service.js +68 -0
  141. package/dist/src/services/kafka-service.js.map +1 -0
  142. package/dist/src/services/mailer-service.d.ts +15 -0
  143. package/dist/src/services/mailer-service.js +44 -0
  144. package/dist/src/services/mailer-service.js.map +1 -0
  145. package/dist/src/services/paginated-cache.d.ts +16 -0
  146. package/dist/src/services/paginated-cache.js +115 -0
  147. package/dist/src/services/paginated-cache.js.map +1 -0
  148. package/dist/src/services/paginated-cache.spec.d.ts +1 -0
  149. package/dist/src/services/paginated-cache.spec.js +284 -0
  150. package/dist/src/services/paginated-cache.spec.js.map +1 -0
  151. package/dist/src/services/redis-service.d.ts +33 -0
  152. package/dist/src/services/redis-service.js +230 -0
  153. package/dist/src/services/redis-service.js.map +1 -0
  154. package/dist/src/services/security-service.d.ts +11 -0
  155. package/dist/src/services/security-service.js +68 -0
  156. package/dist/src/services/security-service.js.map +1 -0
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +1 -1
  159. package/src/constants.ts +66 -0
  160. package/src/gateways/alibaba-cloud-gateway.ts +127 -0
  161. package/src/gateways/http-audit-gateway.ts +104 -0
  162. package/src/gateways/index.ts +5 -0
  163. package/src/gateways/internal-auth-gateway.ts +42 -0
  164. package/src/gateways/stdout-audit-gateway.ts +23 -0
  165. package/src/gateways/webhook-audit-gateway.ts +33 -0
  166. package/src/interfaces.ts +304 -0
  167. package/src/models/audit-log.ts +126 -0
  168. package/src/models/index.ts +1 -0
  169. package/src/pkg/array-helper.ts +7 -0
  170. package/src/pkg/bcrypt-helper.ts +9 -0
  171. package/src/pkg/crypto-helper.ts +18 -0
  172. package/src/pkg/encryption-helper.spec.ts +423 -0
  173. package/src/pkg/encryption-helper.ts +155 -0
  174. package/src/pkg/filter-helper.spec.ts +105 -0
  175. package/src/pkg/filter-helper.ts +139 -0
  176. package/src/pkg/geoip-helper.ts +5 -0
  177. package/src/pkg/hash-helper.ts +12 -0
  178. package/src/pkg/http-request-utils.ts +75 -0
  179. package/src/pkg/index.ts +19 -0
  180. package/src/pkg/key-helper.ts +20 -0
  181. package/src/pkg/logger.ts +23 -0
  182. package/src/pkg/object-helper.ts +42 -0
  183. package/src/pkg/paginated-cache-registry.ts +25 -0
  184. package/src/pkg/query-helper.ts +79 -0
  185. package/src/pkg/referral-tree-utils.ts +165 -0
  186. package/src/pkg/scripts/index.ts +1 -0
  187. package/src/pkg/scripts/lua.ts +112 -0
  188. package/src/pkg/sort-helper.ts +19 -0
  189. package/src/pkg/string-utils.ts +104 -0
  190. package/src/pkg/task-helper.ts +25 -0
  191. package/src/pkg/trading-pair-helper.spec.ts +146 -0
  192. package/src/pkg/trading-pair-helper.ts +78 -0
  193. package/src/pkg/workflow/delayed-task-registry.ts +54 -0
  194. package/src/pkg/workflow/delayed-task.ts +106 -0
  195. package/src/pkg/workflow/index.ts +5 -0
  196. package/src/pkg/workflow/processing-milestone.ts +54 -0
  197. package/src/pkg/workflow/retry-task.spec.ts +194 -0
  198. package/src/pkg/workflow/retry-task.ts +119 -0
  199. package/src/pkg/workflow/sync-taskqueue.ts +118 -0
  200. package/src/pkg/worksheet.utils.ts +178 -0
  201. package/src/services/audit-service.ts +22 -0
  202. package/src/services/excel.service.ts +103 -0
  203. package/src/services/http-service.ts +71 -0
  204. package/src/services/index.ts +8 -0
  205. package/src/services/kafka-service.ts +81 -0
  206. package/src/services/mailer-service.ts +43 -0
  207. package/src/services/paginated-cache.spec.ts +519 -0
  208. package/src/services/paginated-cache.ts +122 -0
  209. package/src/services/redis-service.ts +238 -0
  210. package/src/services/security-service.ts +80 -0
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const chai_1 = require("chai");
13
+ const paginated_cache_1 = require("./paginated-cache");
14
+ const hash_helper_1 = require("../pkg/hash-helper");
15
+ class FakeCacheService {
16
+ constructor() {
17
+ this._cache = {};
18
+ }
19
+ reset() {
20
+ this._cache = {};
21
+ }
22
+ get(key) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ return this._cache[key];
25
+ });
26
+ }
27
+ set(key, value, ttlInSecs) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ this._cache[key] = value;
30
+ });
31
+ }
32
+ incrBy(key, increment) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ if (this._cache[key] === undefined) {
35
+ this._cache[key] = 0;
36
+ }
37
+ if (typeof this._cache[key] !== "number") {
38
+ throw new Error(`Value for key ${key} is not a number`);
39
+ }
40
+ this._cache[key] += increment;
41
+ return this._cache[key];
42
+ });
43
+ }
44
+ getNumber(key) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const value = this._cache[key];
47
+ if (value === undefined) {
48
+ return null;
49
+ }
50
+ return typeof value === "number" ? value : Number(value);
51
+ });
52
+ }
53
+ }
54
+ var cacheService = new FakeCacheService();
55
+ const paginatedDataCache = new paginated_cache_1.PaginatedDataCache("users", cacheService);
56
+ describe("paginated cache", () => {
57
+ beforeEach(() => {
58
+ cacheService.reset();
59
+ });
60
+ it("should generate cache key correctly", () => {
61
+ const filter = { country: "vietnam", age: 30 };
62
+ const limit = 10;
63
+ const offset = 100;
64
+ const cacheKey = paginatedDataCache.generateCacheKey(filter, limit, offset);
65
+ const filterHash = (0, hash_helper_1.generateHashFromJSON)(filter);
66
+ const expectedKey = `paginated-cache:users:version:_version:filter:${filterHash}:limit:${limit}:offset:${offset}`;
67
+ (0, chai_1.expect)(cacheKey).to.equal(expectedKey, "Cache key should match expected format");
68
+ });
69
+ it("should set and get cached paginated data successfully", () => __awaiter(void 0, void 0, void 0, function* () {
70
+ const filter = { country: "vietnam", age: 30 };
71
+ const limit = 10;
72
+ const offset = 100;
73
+ const data = {
74
+ rows: [{ id: 1, name: "Andy" }],
75
+ total: 1,
76
+ limit,
77
+ offset,
78
+ };
79
+ const cacheKey = paginatedDataCache.generateCacheKey(filter, limit, offset);
80
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset, data);
81
+ const currentVersion = yield paginatedDataCache.getCurrentVersion();
82
+ (0, chai_1.expect)(currentVersion).to.equal(1, "Initial version should be 1");
83
+ const cachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
84
+ const newVersion = yield paginatedDataCache.getCurrentVersion();
85
+ (0, chai_1.expect)(newVersion).to.equal(1, "Version should still be 1");
86
+ (0, chai_1.expect)(cachedData).to.deep.equal(data, "Cached data should match set data");
87
+ }));
88
+ it("should override existing cache with new data", () => __awaiter(void 0, void 0, void 0, function* () {
89
+ const filter = { country: "vietnam", age: 30 };
90
+ const limit = 10;
91
+ const offset = 100;
92
+ const data1 = {
93
+ rows: [{ id: 1, name: "Andy" }],
94
+ total: 1,
95
+ limit,
96
+ offset,
97
+ };
98
+ const data2 = {
99
+ rows: [{ id: 2, name: "Bob" }],
100
+ total: 1,
101
+ limit,
102
+ offset,
103
+ };
104
+ const cacheKey = paginatedDataCache.generateCacheKey(filter, limit, offset);
105
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset, data1);
106
+ const initialVersion = yield paginatedDataCache.getCurrentVersion();
107
+ (0, chai_1.expect)(initialVersion).to.equal(1, "Initial version should be 1");
108
+ const cachedData1 = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
109
+ (0, chai_1.expect)(cachedData1).to.deep.equal(data1, "Initial cached data should match");
110
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset, data2);
111
+ const newVersion = yield paginatedDataCache.getCurrentVersion();
112
+ (0, chai_1.expect)(newVersion).to.equal(1, "Version should still be 1 after override");
113
+ const cachedData2 = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
114
+ (0, chai_1.expect)(cachedData2).to.deep.equal(data2, "Cached data should match new data after override");
115
+ }));
116
+ it("should invalidate old cache when increment new version", () => __awaiter(void 0, void 0, void 0, function* () {
117
+ const filter = { country: "vietnam", age: 30 };
118
+ const filter2 = { country: "usa", age: 25 };
119
+ const limit = 10;
120
+ const offset = 100;
121
+ const cacheKey = paginatedDataCache.generateCacheKey(filter, limit, offset);
122
+ const data1 = {
123
+ rows: [{ id: 1, name: "Andy" }],
124
+ total: 1,
125
+ limit,
126
+ offset,
127
+ };
128
+ const data2 = {
129
+ rows: [{ id: 2, name: "Bob" }],
130
+ total: 1,
131
+ limit,
132
+ offset,
133
+ };
134
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset, data1);
135
+ yield paginatedDataCache.setCachedPaginatedData(filter2, limit, offset, data2);
136
+ const initialVersion = yield paginatedDataCache.getCurrentVersion();
137
+ (0, chai_1.expect)(initialVersion).to.equal(1, "Initial version should be 1");
138
+ const cachedData1 = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
139
+ (0, chai_1.expect)(cachedData1).to.deep.equal(data1, "Initial cached data should match");
140
+ const cachedData2 = yield paginatedDataCache.getCachedPaginatedData(filter2, limit, offset);
141
+ (0, chai_1.expect)(cachedData2).to.deep.equal(data2, "Initial cached data2 should match");
142
+ const newVersion = yield paginatedDataCache.incrementCacheVersion();
143
+ (0, chai_1.expect)(newVersion).to.equal(2, "Version should be incremented to 2");
144
+ const oldData1 = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
145
+ const oldData2 = yield paginatedDataCache.getCachedPaginatedData(filter2, limit, offset);
146
+ (0, chai_1.expect)(oldData1).to.be.null;
147
+ (0, chai_1.expect)(oldData2).to.be.null;
148
+ }));
149
+ it("should give different result for different filters", () => __awaiter(void 0, void 0, void 0, function* () {
150
+ const filter1 = { country: "vietnam", age: 30 };
151
+ const filter2 = { country: "usa", age: 25 };
152
+ const limit = 10;
153
+ const offset = 100;
154
+ const cacheKey1 = paginatedDataCache.generateCacheKey(filter1, limit, offset);
155
+ const cacheKey2 = paginatedDataCache.generateCacheKey(filter2, limit, offset);
156
+ const data1 = {
157
+ rows: [{ id: 1, name: "Andy" }],
158
+ total: 1,
159
+ limit,
160
+ offset,
161
+ };
162
+ const data2 = {
163
+ rows: [{ id: 2, name: "Bob" }],
164
+ total: 1,
165
+ limit,
166
+ offset,
167
+ };
168
+ yield paginatedDataCache.setCachedPaginatedData(filter1, limit, offset, data1);
169
+ yield paginatedDataCache.setCachedPaginatedData(filter2, limit, offset, data2);
170
+ const currentVersion = yield paginatedDataCache.getCurrentVersion();
171
+ (0, chai_1.expect)(currentVersion).to.equal(1, "Filter2 version should be 1");
172
+ const cachedData1 = yield paginatedDataCache.getCachedPaginatedData(filter1, limit, offset);
173
+ const cachedData2 = yield paginatedDataCache.getCachedPaginatedData(filter2, limit, offset);
174
+ (0, chai_1.expect)(cachedData1).to.deep.equal(data1, "Cached data for filter1 should match");
175
+ (0, chai_1.expect)(cachedData2).to.deep.equal(data2, "Cached data for filter2 should match");
176
+ }));
177
+ it("should paginate data correctly", () => __awaiter(void 0, void 0, void 0, function* () {
178
+ const data = [
179
+ { id: 1, name: "Andy" },
180
+ { id: 2, name: "Bob" },
181
+ { id: 3, name: "Charlie" },
182
+ { id: 4, name: "David" },
183
+ { id: 5, name: "Eve" },
184
+ ];
185
+ const filter = { country: "vietnam", age: 30 };
186
+ const limit = 2;
187
+ const offset = 0;
188
+ const data1 = {
189
+ rows: data.slice(0, limit),
190
+ total: data.length,
191
+ limit,
192
+ offset,
193
+ };
194
+ const data2 = {
195
+ rows: data.slice(limit, limit * 2),
196
+ total: data.length,
197
+ limit,
198
+ offset: limit,
199
+ };
200
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset, data1);
201
+ const currentVersion = yield paginatedDataCache.getCurrentVersion();
202
+ (0, chai_1.expect)(currentVersion).to.equal(1, "Initial version should be 1");
203
+ const cachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
204
+ (0, chai_1.expect)(cachedData).to.deep.equal(data1, "Cached paginated data should match expected data");
205
+ (0, chai_1.expect)(cachedData.rows.length).to.equal(limit, "Number of rows should match limit");
206
+ const nextPage = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset + limit);
207
+ (0, chai_1.expect)(nextPage).to.be.null;
208
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset + limit, data2);
209
+ const nextVersion = yield paginatedDataCache.getCurrentVersion();
210
+ (0, chai_1.expect)(nextVersion).to.equal(1, "Next page version should be 1");
211
+ const nextCachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset + limit);
212
+ (0, chai_1.expect)(nextCachedData).to.deep.equal(data2, "Next page cached data should match expected data");
213
+ yield paginatedDataCache.incrementCacheVersion();
214
+ const oldCachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
215
+ (0, chai_1.expect)(oldCachedData).to.be.null;
216
+ const oldNextCachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset + limit);
217
+ (0, chai_1.expect)(oldNextCachedData).to.be.null;
218
+ const newData = [
219
+ { id: 1, name: "Andy" },
220
+ { id: 2, name: "Bob" },
221
+ { id: 3, name: "Charlie" },
222
+ { id: 4, name: "David" },
223
+ { id: 5, name: "Eve" },
224
+ { id: 6, name: "Frank" },
225
+ { id: 7, name: "Grace" },
226
+ { id: 8, name: "Hank" },
227
+ { id: 9, name: "Ivy" },
228
+ { id: 10, name: "Jack" },
229
+ ];
230
+ const newData1 = {
231
+ rows: newData.slice(0, limit),
232
+ total: newData.length,
233
+ limit,
234
+ offset,
235
+ };
236
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset, newData1);
237
+ const newCurrentVersion = yield paginatedDataCache.getCurrentVersion();
238
+ (0, chai_1.expect)(newCurrentVersion).to.equal(2, "New version should be 2");
239
+ const newCachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
240
+ (0, chai_1.expect)(newCachedData).to.deep.equal(newData1, "New cached paginated data should match expected data");
241
+ }));
242
+ it("should gives null if next page data is not set", () => __awaiter(void 0, void 0, void 0, function* () {
243
+ const filter = { country: "vietnam", age: 30 };
244
+ const limit = 2;
245
+ const offset = 0;
246
+ const data = [
247
+ { id: 1, name: "Andy" },
248
+ { id: 2, name: "Bob" },
249
+ { id: 3, name: "Charlie" },
250
+ { id: 4, name: "David" },
251
+ { id: 5, name: "Eve" },
252
+ ];
253
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset, {
254
+ rows: data.slice(0, limit),
255
+ total: data.length,
256
+ limit,
257
+ offset,
258
+ });
259
+ const cachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
260
+ (0, chai_1.expect)(cachedData).to.not.be.null;
261
+ (0, chai_1.expect)(cachedData.rows.length).to.equal(limit, "Should return correct number of rows");
262
+ (0, chai_1.expect)(cachedData.rows[0].name).to.equal("Andy", "First row should be Andy");
263
+ const nextPageData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset + limit);
264
+ (0, chai_1.expect)(nextPageData).to.be.null;
265
+ yield paginatedDataCache.setCachedPaginatedData(filter, limit, offset + limit, {
266
+ rows: data.slice(limit, limit * 2),
267
+ total: data.length,
268
+ limit,
269
+ offset: limit,
270
+ });
271
+ const nextCachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset + limit);
272
+ (0, chai_1.expect)(nextCachedData).to.not.be.null;
273
+ (0, chai_1.expect)(nextCachedData.rows.length).to.equal(limit, "Next page should return correct number of rows");
274
+ (0, chai_1.expect)(nextCachedData.rows[0].name).to.equal("Charlie", "First row of next page should be Charlie");
275
+ const version = yield paginatedDataCache.getCurrentVersion();
276
+ (0, chai_1.expect)(version).to.equal(1, "Next page version should be 1");
277
+ yield paginatedDataCache.incrementCacheVersion();
278
+ const oldCachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset);
279
+ (0, chai_1.expect)(oldCachedData).to.be.null;
280
+ const oldNextCachedData = yield paginatedDataCache.getCachedPaginatedData(filter, limit, offset + limit);
281
+ (0, chai_1.expect)(oldNextCachedData).to.be.null;
282
+ }));
283
+ });
284
+ //# sourceMappingURL=paginated-cache.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginated-cache.spec.js","sourceRoot":"","sources":["../../../src/services/paginated-cache.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,uDAAuD;AACvD,oDAA0D;AAG1D,MAAM,gBAAgB;IAAtB;QACY,WAAM,GAAwB,EAAE,CAAC;IAkC7C,CAAC;IAhCQ,KAAK;QACV,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAEY,GAAG,CAAC,GAAW;;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;KAAA;IAEY,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,SAAkB;;YAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAE3B,CAAC;KAAA;IAEY,MAAM,CAAC,GAAW,EAAE,SAAiB;;YAChD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACtB;YACD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBACxC,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,CAAC;aACzD;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;KAAA;IAEY,SAAS,CAAC,GAAW;;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAO,IAAI,CAAC;aACb;YAED,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;KAAA;CACF;AAED,IAAI,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAC1C,MAAM,kBAAkB,GAAG,IAAI,oCAAkB,CAAC,OAAO,EAAE,YAAmB,CAAC,CAAC;AAEhF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,CAAC;QAEnB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,IAAA,kCAAoB,EAAC,MAAM,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,iDAAiD,UAAU,UAAU,KAAK,WAAW,MAAM,EAAE,CAAC;QAElH,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CACvB,WAAW,EACX,wCAAwC,CACzC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;QACrE,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/B,KAAK,EAAE,CAAC;YACR,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,IAAI,CACL,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACpE,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAChE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAEhE,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAC;IAC9E,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;QAC5D,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/B,KAAK,EAAE,CAAC;YACR,KAAK;YACL,MAAM;SACP,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC9B,KAAK,EAAE,CAAC;YACR,KAAK;YACL,MAAM;SACP,CAAC;QACF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QACF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACpE,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACjE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC/B,KAAK,EACL,kCAAkC,CACnC,CAAC;QACF,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAChE,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,0CAA0C,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACjE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC/B,KAAK,EACL,kDAAkD,CACnD,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAS,EAAE;QACtE,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/B,KAAK,EAAE,CAAC;YACR,KAAK;YACL,MAAM;SACP,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC9B,KAAK,EAAE,CAAC;YACR,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QACF,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACpE,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAElE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACjE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC/B,KAAK,EACL,kCAAkC,CACnC,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACjE,OAAO,EACP,KAAK,EACL,MAAM,CACP,CAAC;QAEF,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC/B,KAAK,EACL,mCAAmC,CACpC,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAEpE,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAC9D,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAC9D,OAAO,EACP,KAAK,EACL,MAAM,CACP,CAAC;QAEF,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5B,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAS,EAAE;QAClE,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,CAAC;QAEnB,MAAM,SAAS,GAAG,kBAAkB,CAAC,gBAAgB,CACnD,OAAO,EACP,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,SAAS,GAAG,kBAAkB,CAAC,gBAAgB,CACnD,OAAO,EACP,KAAK,EACL,MAAM,CACP,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/B,KAAK,EAAE,CAAC;YACR,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC9B,KAAK,EAAE,CAAC;YACR,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QAEF,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACpE,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAElE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACjE,OAAO,EACP,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACjE,OAAO,EACP,KAAK,EACL,MAAM,CACP,CAAC;QAEF,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC/B,KAAK,EACL,sCAAsC,CACvC,CAAC;QACF,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC/B,KAAK,EACL,sCAAsC,CACvC,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAS,EAAE;QAC9C,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;YACtB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;SACvB,CAAC;QAEF,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,CAAC,CAAC;QAEjB,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK;YACL,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,CACN,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACpE,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAChE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QAEF,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC9B,KAAK,EACL,kDAAkD,CACnD,CAAC;QACF,IAAA,aAAM,EAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CACrC,KAAK,EACL,mCAAmC,CACpC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAC9D,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,CACf,CAAC;QACF,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAE5B,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,EACd,KAAK,CACN,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAEjE,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;QAEjE,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACpE,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,CACf,CAAC;QACF,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAClC,KAAK,EACL,kDAAkD,CACnD,CAAC;QAEF,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACnE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEjC,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACvE,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,CACf,CAAC;QACF,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAErC,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;YACtB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;YACtB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;YACtB,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,CACT,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACvE,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAEjE,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACnE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACjC,QAAQ,EACR,sDAAsD,CACvD,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;QAC9D,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,CAAC,CAAC;QAEjB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;YACtB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;YACxB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;SACvB,CAAC;QAEF,MAAM,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YACrE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAChE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;QAClC,IAAA,aAAM,EAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CACrC,KAAK,EACL,sCAAsC,CACvC,CAAC;QACF,IAAA,aAAM,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CACtC,MAAM,EACN,0BAA0B,CAC3B,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAClE,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,CACf,CAAC;QACF,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEhC,MAAM,kBAAkB,CAAC,sBAAsB,CAC7C,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,EACd;YACE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK;YACL,MAAM,EAAE,KAAK;SACd,CACF,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACpE,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,CACf,CAAC;QACF,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;QACtC,IAAA,aAAM,EAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CACzC,KAAK,EACL,gDAAgD,CACjD,CAAC;QACF,IAAA,aAAM,EAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1C,SAAS,EACT,0CAA0C,CAC3C,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAC7D,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;QAE7D,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACnE,MAAM,EACN,KAAK,EACL,MAAM,CACP,CAAC;QACF,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjC,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACvE,MAAM,EACN,KAAK,EACL,MAAM,GAAG,KAAK,CACf,CAAC;QACF,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACvC,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import * as ioredis from "ioredis";
3
+ import { CacheScriptEvaluator, CacheService, DeleteByPatternOptions, HashCacheService, ListCacheService, LuaCall, SetCacheOption } from "../interfaces";
4
+ export declare class RedisService implements CacheService, HashCacheService, ListCacheService, CacheScriptEvaluator {
5
+ protected _redis: ioredis.Redis;
6
+ constructor(config: ioredis.RedisOptions);
7
+ get(key: string): Promise<any>;
8
+ getNumber(key: string): Promise<number | null>;
9
+ deleteByPattern(deletePattern: string, options?: DeleteByPatternOptions): Promise<void>;
10
+ del(...keys: string[]): Promise<void>;
11
+ multiEval(calls: LuaCall[]): Promise<any[]>;
12
+ eval(script: string, numberOfKeys: number, ...args: any[]): Promise<unknown>;
13
+ hset(key: string, field: string, value: any): Promise<void>;
14
+ lpush(key: string, value: any): Promise<void>;
15
+ lrem(key: string, count: string | number, element: string | Buffer | number): Promise<number>;
16
+ rpush(key: string, value: any): Promise<void>;
17
+ lset(key: string, index: number, value: any): Promise<void>;
18
+ lrange(key: string, start: number, end: number): Promise<string[]>;
19
+ lindex(key: string, index: number): Promise<string>;
20
+ llen(key: string): Promise<number>;
21
+ hget(key: string, field: string): Promise<string>;
22
+ hincrby(key: string, field: string, value?: number): Promise<number>;
23
+ hincrbyfloat(key: string, field: string, value?: number): Promise<string>;
24
+ hkeys(key: string): Promise<string[]>;
25
+ ttl(key: string): Promise<number>;
26
+ hlen(key: string): Promise<number>;
27
+ set(key: string, value: any, option?: SetCacheOption): Promise<any>;
28
+ incrBy(key: string, value?: number): Promise<number>;
29
+ protected convertToNumber(value: any): number;
30
+ expire(key: string, ttl: number): Promise<number>;
31
+ incrByFloat(key: string, value: number): Promise<number>;
32
+ decrBy(key: string, value?: number): Promise<any>;
33
+ }
@@ -0,0 +1,230 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.RedisService = void 0;
36
+ const ioredis = __importStar(require("ioredis"));
37
+ const constants_1 = require("../constants");
38
+ class RedisService {
39
+ constructor(config) {
40
+ this._redis = new ioredis.Redis(config);
41
+ }
42
+ get(key) {
43
+ return this._redis.get(key);
44
+ }
45
+ getNumber(key) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const result = yield this._redis.get(key);
48
+ if (result === null) {
49
+ return null;
50
+ }
51
+ return this.convertToNumber(result);
52
+ });
53
+ }
54
+ deleteByPattern(deletePattern, options) {
55
+ var _a;
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ let cursor = "0";
58
+ const prefix = this._redis.options.keyPrefix;
59
+ let scanPattern = deletePattern;
60
+ if ((_a = options === null || options === void 0 ? void 0 : options.includePrefixInScanPattern) !== null && _a !== void 0 ? _a : true) {
61
+ scanPattern = prefix + deletePattern;
62
+ }
63
+ do {
64
+ const [nextCursor, keys] = yield this._redis.scan(cursor, "MATCH", scanPattern, "COUNT", 100);
65
+ cursor = nextCursor;
66
+ if (keys.length > 0) {
67
+ const dupPrefixRemovedKeys = prefix
68
+ ? keys.map((k) => (k.startsWith(prefix) ? k.slice(prefix.length) : k))
69
+ : keys;
70
+ if (typeof this._redis.unlink === "function") {
71
+ yield this._redis.unlink(...dupPrefixRemovedKeys);
72
+ }
73
+ else {
74
+ yield this._redis.del(...dupPrefixRemovedKeys);
75
+ }
76
+ }
77
+ } while (cursor !== "0");
78
+ });
79
+ }
80
+ del(...keys) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ yield this._redis.del(...keys);
83
+ });
84
+ }
85
+ multiEval(calls) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ const multi = this._redis.multi();
88
+ for (const [script, numberOfKeys, ...params] of calls) {
89
+ if (numberOfKeys !== params.slice(0, numberOfKeys).length) {
90
+ throw new Error(`numberOfKeys (${numberOfKeys}) does not match key count in params`);
91
+ }
92
+ multi.eval(script, numberOfKeys, ...params);
93
+ }
94
+ const execResult = yield multi.exec();
95
+ for (const [err] of execResult) {
96
+ if (err)
97
+ throw err;
98
+ }
99
+ return execResult.map(([, value]) => value);
100
+ });
101
+ }
102
+ eval(script, numberOfKeys, ...args) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ return this._redis.eval(script, numberOfKeys, ...args);
105
+ });
106
+ }
107
+ hset(key, field, value) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ yield this._redis.hset(key, {
110
+ [field]: value,
111
+ });
112
+ });
113
+ }
114
+ lpush(key, value) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ yield this._redis.lpush(key, value);
117
+ });
118
+ }
119
+ lrem(key, count, element) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ return this._redis.lrem(key, count, element);
122
+ });
123
+ }
124
+ rpush(key, value) {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ yield this._redis.rpush(key, value);
127
+ });
128
+ }
129
+ lset(key, index, value) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ yield this._redis.lset(key, index, value);
132
+ });
133
+ }
134
+ lrange(key, start, end) {
135
+ return __awaiter(this, void 0, void 0, function* () {
136
+ return this._redis.lrange(key, start, end);
137
+ });
138
+ }
139
+ lindex(key, index) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ return this._redis.lindex(key, index);
142
+ });
143
+ }
144
+ llen(key) {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ return this._redis.llen(key);
147
+ });
148
+ }
149
+ hget(key, field) {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ return this._redis.hget(key, field);
152
+ });
153
+ }
154
+ hincrby(key, field, value = 1) {
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ return this._redis.hincrby(key, field, value);
157
+ });
158
+ }
159
+ hincrbyfloat(key, field, value = 1) {
160
+ return __awaiter(this, void 0, void 0, function* () {
161
+ return this._redis.hincrbyfloat(key, field, value);
162
+ });
163
+ }
164
+ hkeys(key) {
165
+ return __awaiter(this, void 0, void 0, function* () {
166
+ return this._redis.hkeys(key);
167
+ });
168
+ }
169
+ ttl(key) {
170
+ return __awaiter(this, void 0, void 0, function* () {
171
+ return this._redis.ttl(key);
172
+ });
173
+ }
174
+ hlen(key) {
175
+ return __awaiter(this, void 0, void 0, function* () {
176
+ return this._redis.hlen(key);
177
+ });
178
+ }
179
+ set(key, value, option) {
180
+ if (!option) {
181
+ return this._redis.set(key, value);
182
+ }
183
+ switch (option.policy) {
184
+ case constants_1.SET_CACHE_POLICY.WITH_TTL:
185
+ return this._redis.set(key, value, "EX", option.value);
186
+ case constants_1.SET_CACHE_POLICY.KEEP_TTL:
187
+ return this._redis.set(key, value, "KEEPTTL");
188
+ case constants_1.SET_CACHE_POLICY.IF_EXISTS:
189
+ return option.value
190
+ ? this._redis.set(key, value, "EX", option.value, "XX")
191
+ : this._redis.set(key, value, "XX");
192
+ case constants_1.SET_CACHE_POLICY.IF_NOT_EXISTS:
193
+ return option.value
194
+ ? this._redis.set(key, value, "EX", option.value, "NX")
195
+ : this._redis.set(key, value, "NX");
196
+ default:
197
+ throw new Error("policy not supported");
198
+ }
199
+ }
200
+ incrBy(key, value = 1) {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ const result = yield this._redis.incrby(key, value);
203
+ return this.convertToNumber(result);
204
+ });
205
+ }
206
+ convertToNumber(value) {
207
+ const number = parseFloat(value);
208
+ if (isNaN(number)) {
209
+ throw new Error(`Value "${value}" is not a valid number.`);
210
+ }
211
+ return number;
212
+ }
213
+ expire(key, ttl) {
214
+ return this._redis.expire(key, ttl);
215
+ }
216
+ incrByFloat(key, value) {
217
+ return __awaiter(this, void 0, void 0, function* () {
218
+ const result = yield this._redis.incrbyfloat(key, value);
219
+ return this.convertToNumber(result);
220
+ });
221
+ }
222
+ decrBy(key, value = 1) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ const result = yield this._redis.decrby(key, value);
225
+ return this.convertToNumber(result);
226
+ });
227
+ }
228
+ }
229
+ exports.RedisService = RedisService;
230
+ //# sourceMappingURL=redis-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-service.js","sourceRoot":"","sources":["../../../src/services/redis-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CRUDService, CacheService, LockResult, OperationResult } from "../interfaces";
2
+ export declare class SecurityService {
3
+ protected cacheService: CacheService;
4
+ protected userService: CRUDService;
5
+ constructor(cacheService: CacheService, userService: CRUDService);
6
+ static LIMIT_TO_LOCK_USER: number;
7
+ static genLockUserCacheKey(userId: number): string;
8
+ addFailureCount(userId: number, cacheKey?: string): Promise<number>;
9
+ clearFailureCount(userId: number, cacheKey?: string): Promise<void>;
10
+ shouldLockUser(userId: number, cacheKey?: string): Promise<OperationResult<LockResult>>;
11
+ }