@daiso-tech/core 0.39.0 → 0.40.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 (63) hide show
  1. package/dist/cache/contracts/cache-adapter.contract.d.ts +9 -9
  2. package/dist/cache/contracts/database-cache-adapter.contract.d.ts +10 -10
  3. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +9 -9
  4. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  5. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  6. package/dist/event-bus/contracts/event-bus-adapter.contract.d.ts +3 -3
  7. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +3 -3
  8. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +1 -0
  9. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +26 -26
  10. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  11. package/dist/event-bus/implementations/derivables/event-bus/listener-store.d.ts +11 -4
  12. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js +17 -12
  13. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js.map +1 -1
  14. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +17 -20
  15. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js.map +1 -1
  16. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +159 -752
  17. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  18. package/dist/lock/contracts/database-lock-adapter.contract.d.ts +52 -14
  19. package/dist/lock/contracts/lock-adapter.contract.d.ts +29 -8
  20. package/dist/lock/contracts/lock-adapter.contract.js +10 -1
  21. package/dist/lock/contracts/lock-adapter.contract.js.map +1 -1
  22. package/dist/lock/contracts/lock.contract.d.ts +17 -12
  23. package/dist/lock/contracts/lock.errors.d.ts +10 -0
  24. package/dist/lock/contracts/lock.errors.js +12 -0
  25. package/dist/lock/contracts/lock.errors.js.map +1 -1
  26. package/dist/lock/contracts/lock.events.d.ts +12 -0
  27. package/dist/lock/contracts/lock.events.js +1 -0
  28. package/dist/lock/contracts/lock.events.js.map +1 -1
  29. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +24 -6
  30. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +126 -31
  31. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
  32. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +20 -7
  33. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +59 -35
  34. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -1
  35. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +9 -9
  36. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +150 -78
  37. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
  38. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.d.ts +5 -5
  39. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js +3 -2
  40. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js.map +1 -1
  41. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +5 -5
  42. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +44 -22
  43. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -1
  44. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.d.ts +3 -3
  45. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js +42 -10
  46. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -1
  47. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js +7 -5
  48. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js.map +1 -1
  49. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  50. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +1 -1
  51. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +3 -2
  52. package/dist/lock/implementations/derivables/lock-provider/lock.js +60 -41
  53. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  54. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js +184 -166
  55. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js.map +1 -1
  56. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js +240 -41
  57. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js.map +1 -1
  58. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +2700 -1510
  59. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  60. package/dist/utilities/contracts/deinitizable.contract.d.ts +1 -1
  61. package/dist/utilities/contracts/initizable.contract.d.ts +1 -1
  62. package/dist/utilities/contracts/prunable.contract.d.ts +1 -1
  63. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  * @module Lock
3
3
  */
4
4
  import {} from "vitest";
5
- import {} from "../../../lock/contracts/_module-exports.js";
5
+ import { LOCK_REFRESH_RESULT, } from "../../../lock/contracts/_module-exports.js";
6
6
  import {} from "../../../utilities/_module-exports.js";
7
7
  import { TimeSpan } from "../../../utilities/_module-exports.js";
8
8
  import { LazyPromise } from "../../../async/_module-exports.js";
@@ -48,103 +48,302 @@ import { LazyPromise } from "../../../async/_module-exports.js";
48
48
  */
49
49
  export function lockAdapterTestSuite(settings) {
50
50
  const { expect, test, createAdapter, describe, beforeEach } = settings;
51
- let lockAdapterA;
51
+ let adapter;
52
52
  beforeEach(async () => {
53
- lockAdapterA = await createAdapter();
53
+ adapter = await createAdapter();
54
54
  });
55
- const ttl = TimeSpan.fromMilliseconds(50);
55
+ async function delay(time) {
56
+ await LazyPromise.delay(time.addMilliseconds(10));
57
+ }
56
58
  describe("method: acquire", () => {
57
- test("Should return true when key is not acquired", async () => {
59
+ test("Should return true when key doesnt exists", async () => {
58
60
  const key = "a";
59
61
  const owner = "b";
60
- const result = await lockAdapterA.acquire(key, owner, null);
62
+ const ttl = null;
63
+ const result = await adapter.acquire(key, owner, ttl);
61
64
  expect(result).toBe(true);
62
65
  });
63
66
  test("Should return true when key is expired", async () => {
64
67
  const key = "a";
65
68
  const owner = "b";
66
- await lockAdapterA.acquire(key, owner, ttl);
67
- await LazyPromise.delay(ttl);
68
- const result = await lockAdapterA.acquire(key, owner, null);
69
+ const ttl = TimeSpan.fromMilliseconds(50);
70
+ await adapter.acquire(key, owner, ttl);
71
+ await delay(ttl);
72
+ const result = await adapter.acquire(key, owner, null);
69
73
  expect(result).toBe(true);
70
74
  });
71
- test("Should return false when key is already acquired by same owner", async () => {
75
+ test("Should return false when key is unexpireable and acquired by same owner", async () => {
72
76
  const key = "a";
73
77
  const owner = "b";
74
- await lockAdapterA.acquire(key, owner, null);
75
- const result = await lockAdapterA.acquire(key, owner, null);
78
+ const ttl = null;
79
+ await adapter.acquire(key, owner, ttl);
80
+ const result = await adapter.acquire(key, owner, ttl);
76
81
  expect(result).toBe(false);
77
82
  });
78
- test("Should return false when key is already acquired by different owner", async () => {
83
+ test("Should return false when key is unexpired and acquired by same owner", async () => {
84
+ const key = "a";
85
+ const owner = "b";
86
+ const ttl = TimeSpan.fromMilliseconds(50);
87
+ await adapter.acquire(key, owner, ttl);
88
+ const result = await adapter.acquire(key, owner, ttl);
89
+ expect(result).toBe(false);
90
+ });
91
+ test("Should return false when key is unexpireable and acquired by different owner", async () => {
79
92
  const key = "a";
80
93
  const owner1 = "b";
81
- await lockAdapterA.acquire(key, owner1, null);
94
+ const ttl = null;
95
+ await adapter.acquire(key, owner1, ttl);
82
96
  const owner2 = "c";
83
- const result = await lockAdapterA.acquire(key, owner2, null);
97
+ const result = await adapter.acquire(key, owner2, ttl);
84
98
  expect(result).toBe(false);
85
99
  });
86
- test("Should return false when key is already acquired and not expired", async () => {
100
+ test("Should return false when key is unexpired and acquired by different owner", async () => {
87
101
  const key = "a";
88
- const owner = "b";
89
- await lockAdapterA.acquire(key, owner, ttl);
90
- await LazyPromise.delay(ttl.divide(2));
91
- const result = await lockAdapterA.acquire(key, owner, null);
102
+ const owner1 = "b";
103
+ const ttl = TimeSpan.fromMilliseconds(50);
104
+ await adapter.acquire(key, owner1, ttl);
105
+ const owner2 = "c";
106
+ const result = await adapter.acquire(key, owner2, ttl);
92
107
  expect(result).toBe(false);
93
108
  });
94
109
  });
95
110
  describe("method: release", () => {
96
- test("Should return true when key is released by same owner", async () => {
111
+ test("Should return false when key doesnt exists", async () => {
112
+ const key = "a";
113
+ const owner = "b";
114
+ const result = await adapter.release(key, owner);
115
+ expect(result).toBe(false);
116
+ });
117
+ test("Should return false when key is unexpireable and released by different owner", async () => {
118
+ const key = "a";
119
+ const owner1 = "b";
120
+ const ttl = null;
121
+ await adapter.acquire(key, owner1, ttl);
122
+ const owner2 = "c";
123
+ const result = await adapter.release(key, owner2);
124
+ expect(result).toBe(false);
125
+ });
126
+ test("Should return false when key is unexpired and released by different owner", async () => {
127
+ const key = "a";
128
+ const owner1 = "b";
129
+ const ttl = TimeSpan.fromMilliseconds(50);
130
+ await adapter.acquire(key, owner1, ttl);
131
+ const owner2 = "c";
132
+ const result = await adapter.release(key, owner2);
133
+ expect(result).toBe(false);
134
+ });
135
+ test("Should return false when key is expired and released by different owner", async () => {
136
+ const key = "a";
137
+ const owner1 = "b";
138
+ const ttl = TimeSpan.fromMilliseconds(50);
139
+ await adapter.acquire(key, owner1, ttl);
140
+ const owner2 = "c";
141
+ const result = await adapter.release(key, owner2);
142
+ await delay(ttl);
143
+ expect(result).toBe(false);
144
+ });
145
+ test("Should return false when key is expired and released by same owner", async () => {
97
146
  const key = "a";
98
147
  const owner = "b";
99
- await lockAdapterA.acquire(key, owner, null);
100
- const result = await lockAdapterA.release(key, owner);
148
+ const ttl = TimeSpan.fromMilliseconds(50);
149
+ await adapter.acquire(key, owner, ttl);
150
+ await delay(ttl);
151
+ const result = await adapter.release(key, owner);
152
+ expect(result).toBe(false);
153
+ });
154
+ test("Should return true when key is unexpireable and released by same owner", async () => {
155
+ const key = "a";
156
+ const owner = "b";
157
+ const ttl = null;
158
+ await adapter.acquire(key, owner, ttl);
159
+ const result = await adapter.release(key, owner);
101
160
  expect(result).toBe(true);
102
161
  });
103
- test("Should return false when key is tried to be released by different owner", async () => {
162
+ test("Should return true when key is unexpired and released by same owner", async () => {
163
+ const key = "a";
164
+ const owner = "b";
165
+ const ttl = TimeSpan.fromMilliseconds(50);
166
+ await adapter.acquire(key, owner, ttl);
167
+ const result = await adapter.release(key, owner);
168
+ expect(result).toBe(true);
169
+ });
170
+ test("Should not be reacquirable when key is unexpireable and released by different owner", async () => {
171
+ const key = "a";
172
+ const owner1 = "b";
173
+ const ttl = null;
174
+ await adapter.acquire(key, owner1, ttl);
175
+ const owner2 = "c";
176
+ await adapter.release(key, owner2);
177
+ const result = await adapter.acquire(key, owner2, ttl);
178
+ expect(result).toBe(false);
179
+ });
180
+ test("Should not be reacquirable when key is unexpired and released by different owner", async () => {
104
181
  const key = "a";
105
182
  const owner1 = "b";
106
- await lockAdapterA.acquire(key, owner1, null);
183
+ const ttl = TimeSpan.fromMilliseconds(50);
184
+ await adapter.acquire(key, owner1, ttl);
107
185
  const owner2 = "c";
108
- const result = await lockAdapterA.release(key, owner2);
186
+ await adapter.release(key, owner2);
187
+ const result = await adapter.acquire(key, owner2, ttl);
109
188
  expect(result).toBe(false);
110
189
  });
111
- test("Should be reacquirable by new owner after release", async () => {
190
+ test("Should be reacquirable when key is unexpireable and released by same owner", async () => {
191
+ const key = "a";
192
+ const owner1 = "b";
193
+ const ttl = null;
194
+ await adapter.acquire(key, owner1, ttl);
195
+ await adapter.release(key, owner1);
196
+ const owner2 = "c";
197
+ const result = await adapter.acquire(key, owner2, ttl);
198
+ expect(result).toBe(true);
199
+ });
200
+ test("Should be reacquirable when key is unexpired and released by same owner", async () => {
112
201
  const key = "a";
113
202
  const owner1 = "b";
114
- await lockAdapterA.acquire(key, owner1, null);
115
- await lockAdapterA.release(key, owner1);
203
+ const ttl = TimeSpan.fromMilliseconds(50);
204
+ await adapter.acquire(key, owner1, ttl);
205
+ await adapter.release(key, owner1);
116
206
  const owner2 = "c";
117
- const result = await lockAdapterA.acquire(key, owner2, null);
207
+ const result = await adapter.acquire(key, owner2, ttl);
118
208
  expect(result).toBe(true);
119
209
  });
120
210
  });
121
211
  describe("method: forceRelease", () => {
122
- test("Should be reacquirable by new owner after release", async () => {
212
+ test("Should return false when key doesnt exists", async () => {
213
+ const key = "a";
214
+ const result = await adapter.forceRelease(key);
215
+ expect(result).toBe(false);
216
+ });
217
+ test("Should return false when key is expired", async () => {
218
+ const key = "a";
219
+ const owner = "b";
220
+ const ttl = TimeSpan.fromMilliseconds(50);
221
+ await adapter.acquire(key, owner, ttl);
222
+ await delay(ttl);
223
+ const result = await adapter.forceRelease(key);
224
+ expect(result).toBe(false);
225
+ });
226
+ test("Should return true when key is uenxpired", async () => {
227
+ const key = "a";
228
+ const owner = "b";
229
+ const ttl = TimeSpan.fromMilliseconds(50);
230
+ await adapter.acquire(key, owner, ttl);
231
+ const result = await adapter.forceRelease(key);
232
+ expect(result).toBe(true);
233
+ });
234
+ test("Should return true when key is unexpireable", async () => {
235
+ const key = "a";
236
+ const owner = "b";
237
+ const ttl = null;
238
+ await adapter.acquire(key, owner, ttl);
239
+ const result = await adapter.forceRelease(key);
240
+ expect(result).toBe(true);
241
+ });
242
+ test("Should be reacquirable when force released", async () => {
123
243
  const key = "a";
124
244
  const owner1 = "b";
125
- await lockAdapterA.acquire(key, owner1, null);
126
- await lockAdapterA.forceRelease(key);
245
+ const ttl = null;
246
+ await adapter.acquire(key, owner1, ttl);
247
+ await adapter.forceRelease(key);
127
248
  const owner2 = "c";
128
- const result = await lockAdapterA.acquire(key, owner2, null);
249
+ const result = await adapter.acquire(key, owner2, ttl);
129
250
  expect(result).toBe(true);
130
251
  });
131
252
  });
132
253
  describe("method: refresh", () => {
133
- test("Should return true when extended by same owner", async () => {
254
+ test("Should return LOCK_REFRESH.UNOWNED_REFRESH when key doesnt exists", async () => {
134
255
  const key = "a";
135
256
  const owner = "b";
136
- await lockAdapterA.acquire(key, owner, ttl);
137
- const result = await lockAdapterA.refresh(key, owner, ttl.multiply(2));
138
- expect(result).toBe(true);
257
+ const newTtl = TimeSpan.fromMinutes(1);
258
+ const result = await adapter.refresh(key, owner, newTtl);
259
+ expect(result).toBe(LOCK_REFRESH_RESULT.UNOWNED_REFRESH);
260
+ });
261
+ test("Should return LOCK_REFRESH.UNOWNED_REFRESH when key is unexpireable and refreshed by different owner", async () => {
262
+ const key = "a";
263
+ const owner1 = "b";
264
+ const ttl = null;
265
+ await adapter.acquire(key, owner1, ttl);
266
+ const newTtl = TimeSpan.fromMinutes(1);
267
+ const owner2 = "c";
268
+ const result = await adapter.refresh(key, owner2, newTtl);
269
+ expect(result).toBe(LOCK_REFRESH_RESULT.UNOWNED_REFRESH);
270
+ });
271
+ test("Should return LOCK_REFRESH.UNOWNED_REFRESH when key is unexpired and refreshed by different owner", async () => {
272
+ const key = "a";
273
+ const owner1 = "b";
274
+ const ttl = TimeSpan.fromMilliseconds(50);
275
+ await adapter.acquire(key, owner1, ttl);
276
+ const newTtl = TimeSpan.fromMinutes(1);
277
+ const owner2 = "c";
278
+ const result = await adapter.refresh(key, owner2, newTtl);
279
+ expect(result).toBe(LOCK_REFRESH_RESULT.UNOWNED_REFRESH);
139
280
  });
140
- test("Should return false when extended by different owner", async () => {
281
+ test("Should return LOCK_REFRESH.UNOWNED_REFRESH when key is expired and refreshed by different owner", async () => {
141
282
  const key = "a";
142
283
  const owner1 = "b";
143
- await lockAdapterA.acquire(key, owner1, ttl);
284
+ const ttl = TimeSpan.fromMilliseconds(50);
285
+ await adapter.acquire(key, owner1, ttl);
286
+ await delay(ttl);
287
+ const newTtl = TimeSpan.fromMinutes(1);
144
288
  const owner2 = "c";
145
- const result = await lockAdapterA.refresh(key, owner2, ttl.multiply(2));
289
+ const result = await adapter.refresh(key, owner2, newTtl);
290
+ expect(result).toBe(LOCK_REFRESH_RESULT.UNOWNED_REFRESH);
291
+ });
292
+ test("Should return LOCK_REFRESH.UNOWNED_REFRESH when key is expired and refreshed by same owner", async () => {
293
+ const key = "a";
294
+ const owner = "b";
295
+ const ttl = TimeSpan.fromMilliseconds(50);
296
+ await adapter.acquire(key, owner, ttl);
297
+ await delay(ttl);
298
+ const newTtl = TimeSpan.fromMinutes(1);
299
+ const result = await adapter.refresh(key, owner, newTtl);
300
+ expect(result).toBe(LOCK_REFRESH_RESULT.UNOWNED_REFRESH);
301
+ });
302
+ test("Should return LOCK_REFRESH.UNEXPIRABLE_KEY when key is unexpireable and refreshed by same owner", async () => {
303
+ const key = "a";
304
+ const owner = "b";
305
+ const ttl = null;
306
+ await adapter.acquire(key, owner, ttl);
307
+ const newTtl = TimeSpan.fromMinutes(1);
308
+ const result = await adapter.refresh(key, owner, newTtl);
309
+ expect(result).toBe(LOCK_REFRESH_RESULT.UNEXPIRABLE_KEY);
310
+ });
311
+ test("Should return LOCK_REFRESH.REFRESHED when key is unexpired and refreshed by same owner", async () => {
312
+ const key = "a";
313
+ const owner = "b";
314
+ const ttl = TimeSpan.fromMilliseconds(50);
315
+ await adapter.acquire(key, owner, ttl);
316
+ const newTtl = TimeSpan.fromMinutes(1);
317
+ const result = await adapter.refresh(key, owner, newTtl);
318
+ expect(result).toBe(LOCK_REFRESH_RESULT.REFRESHED);
319
+ });
320
+ test("Should not update expiration when key is unexpireable and refreshed by same owner", async () => {
321
+ const key = "a";
322
+ const owner1 = "b";
323
+ const ttl = null;
324
+ await adapter.acquire(key, owner1, ttl);
325
+ const newTtl = TimeSpan.fromMilliseconds(50);
326
+ await adapter.refresh(key, owner1, newTtl);
327
+ await delay(newTtl);
328
+ const owner2 = "b";
329
+ const result = await adapter.acquire(key, owner2, ttl);
146
330
  expect(result).toBe(false);
147
331
  });
332
+ test("Should update expiration when key is unexpired and refreshed by same owner", async () => {
333
+ const key = "a";
334
+ const owner1 = "b";
335
+ const ttl = TimeSpan.fromMilliseconds(50);
336
+ await adapter.acquire(key, owner1, ttl);
337
+ const newTtl = TimeSpan.fromMilliseconds(100);
338
+ await adapter.refresh(key, owner1, newTtl);
339
+ await delay(newTtl.divide(2));
340
+ const owner2 = "c";
341
+ const result1 = await adapter.acquire(key, owner2, ttl);
342
+ expect(result1).toBe(false);
343
+ await delay(newTtl.divide(2));
344
+ const result2 = await adapter.acquire(key, owner2, ttl);
345
+ expect(result2).toBe(true);
346
+ });
148
347
  });
149
348
  }
150
349
  //# sourceMappingURL=lock-adapter.test-suite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lock-adapter.test-suite.js","sourceRoot":"","sources":["../../../../src/lock/implementations/test-utilities/lock-adapter.test-suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock-adapter.test-suite.js","sourceRoot":"","sources":["../../../../src/lock/implementations/test-utilities/lock-adapter.test-suite.ts"],"names":[],"mappings":"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"}