@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
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * @module Lock
3
3
  */
4
- import { vi, } from "vitest";
4
+ import {} from "vitest";
5
5
  import {} from "../../../lock/contracts/_module-exports.js";
6
- import {} from "../../../utilities/_module-exports.js";
7
6
  import { TimeSpan } from "../../../utilities/_module-exports.js";
8
7
  /**
9
8
  * The `databaseLockAdapterTestSuite` function simplifies the process of testing your custom implementation of {@link IDatabaseLockAdapter | `IDatabaseLockAdapter`} with `vitest`.
@@ -51,201 +50,220 @@ export function databaseLockAdapterTestSuite(settings) {
51
50
  beforeEach(async () => {
52
51
  adapter = await createAdapter();
53
52
  });
54
- const ttl = TimeSpan.fromMilliseconds(50);
55
53
  describe("method: insert", () => {
56
- test("Should insert lock when not existing", async () => {
57
- const key = "a";
58
- const owner = "b";
59
- const expiration = null;
54
+ test("Should insert when key doesnt exists", async () => {
55
+ const key = "key";
56
+ const owner = "a";
57
+ const expiration = new Date("2025");
60
58
  await adapter.insert(key, owner, expiration);
61
- const result = await adapter.find(key);
62
- expect(result).toEqual({
59
+ expect(await adapter.find(key)).toEqual({
63
60
  owner,
64
61
  expiration,
65
62
  });
66
63
  });
67
- test("Should insert lock with expiration when not existing", async () => {
68
- const key = "a";
69
- const owner = "b";
70
- const expiration = ttl.toEndDate();
64
+ test("Should throw error when key already exsists", async () => {
65
+ const key = "key";
66
+ const owner = "a";
67
+ const expiration = new Date("2025");
71
68
  await adapter.insert(key, owner, expiration);
72
- const result = await adapter.find(key);
73
- expect(result).toEqual({
74
- owner,
75
- expiration,
76
- });
77
- });
78
- test("Should throw error when lock already existing", async () => {
79
- const key = "a";
80
- const owner = "b";
81
- const expiration = null;
82
- await adapter.insert(key, owner, expiration);
83
- const result = adapter.insert(key, owner, expiration);
84
- await expect(result).rejects.toBeDefined();
69
+ const promise = adapter.insert(key, owner, expiration);
70
+ await expect(promise).rejects.toBeDefined();
85
71
  });
86
72
  });
87
- describe("method: update", () => {
88
- test("Should return false when lock has no expiration", async () => {
89
- const key = "a";
90
- const owner1 = "b";
91
- const expiration = null;
92
- await adapter.insert(key, owner1, expiration);
93
- const owner2 = "c";
94
- const result = await adapter.update(key, owner2, expiration);
73
+ describe("method: updateIfExpired", () => {
74
+ test("Should return 0 when key doesnt exists", async () => {
75
+ const noneExistingKey = "key";
76
+ const noneExistingOwner = "b";
77
+ const expiration = TimeSpan.fromMinutes(4).toStartDate();
78
+ const result = await adapter.updateIfExpired(noneExistingKey, noneExistingOwner, expiration);
95
79
  expect(result).toBe(0);
96
80
  });
97
- test("Should not update when lock has no expiration", async () => {
98
- const key = "a";
99
- const owner1 = "b";
100
- const expiration = null;
101
- await adapter.insert(key, owner1, expiration);
102
- const owner2 = "c";
103
- await adapter.update(key, owner2, expiration);
104
- const result = await adapter.find(key);
105
- expect(result).toEqual({
106
- owner: owner1,
107
- expiration,
81
+ test("Should number greater than 0 when key is expired", async () => {
82
+ const key = "key";
83
+ const ownerA = "a";
84
+ const expirationA = TimeSpan.fromMinutes(2).toStartDate();
85
+ await adapter.insert(key, ownerA, expirationA);
86
+ const ownerB = "b";
87
+ const expirationB = TimeSpan.fromMinutes(2).toEndDate();
88
+ const result = await adapter.updateIfExpired(key, ownerB, expirationB);
89
+ expect(result).toBeGreaterThan(0);
90
+ });
91
+ test("Should not update expiration when key is unexpired", async () => {
92
+ const key = "key";
93
+ const ownerA = "a";
94
+ const expirationA = TimeSpan.fromMinutes(2).toEndDate();
95
+ await adapter.insert(key, ownerA, expirationA);
96
+ const ownerB = "b";
97
+ const expirationB = TimeSpan.fromMinutes(3).toEndDate();
98
+ await adapter.updateIfExpired(key, ownerB, expirationB);
99
+ const lockData = await adapter.find(key);
100
+ expect(lockData).toEqual({
101
+ owner: ownerA,
102
+ expiration: expirationA,
108
103
  });
109
104
  });
110
- test("Should return false when lock has not expired", async () => {
111
- vi.useFakeTimers();
112
- const key = "a";
113
- const owner1 = "b";
114
- const expiration1 = ttl.toEndDate();
115
- await adapter.insert(key, owner1, expiration1);
116
- vi.advanceTimersByTime(ttl.divide(2).toMilliseconds());
117
- const owner2 = "c";
118
- const expiration2 = ttl.addMilliseconds(25).toEndDate();
119
- const result = await adapter.update(key, owner2, expiration2);
105
+ test("Should return 0 when key is unexpired", async () => {
106
+ const key = "key";
107
+ const ownerA = "a";
108
+ const expirationA = TimeSpan.fromMinutes(2).toEndDate();
109
+ await adapter.insert(key, ownerA, expirationA);
110
+ const ownerB = "b";
111
+ const expirationB = TimeSpan.fromMinutes(3).toEndDate();
112
+ const result = await adapter.updateIfExpired(key, ownerB, expirationB);
120
113
  expect(result).toBe(0);
121
- vi.useRealTimers();
122
- });
123
- test("Should not update when lock has not expired", async () => {
124
- vi.useFakeTimers();
125
- const key = "a";
126
- const owner1 = "b";
127
- const expiration1 = ttl.toEndDate();
128
- await adapter.insert(key, owner1, expiration1);
129
- vi.advanceTimersByTime(ttl.divide(2).toMilliseconds());
130
- const owner2 = "c";
131
- const expiration2 = ttl.addMilliseconds(25).toEndDate();
132
- await adapter.update(key, owner2, expiration2);
133
- const result = await adapter.find(key);
134
- expect(result).toEqual({
135
- owner: owner1,
136
- expiration: expiration1,
137
- });
138
- vi.useRealTimers();
139
- });
140
- test("Should return true when lock has expired", async () => {
141
- vi.useFakeTimers();
142
- const key = "a";
143
- const owner1 = "b";
144
- const expiration1 = ttl.toEndDate();
145
- await adapter.insert(key, owner1, expiration1);
146
- vi.advanceTimersByTime(ttl.addMilliseconds(1).toMilliseconds());
147
- const owner2 = "c";
148
- const expiration2 = ttl.addMilliseconds(25).toEndDate();
149
- const result = await adapter.update(key, owner2, expiration2);
150
- expect(result).toBe(1);
151
- vi.useRealTimers();
152
- });
153
- test("Should update when lock has expired", async () => {
154
- vi.useFakeTimers();
155
- const key = "a";
156
- const owner1 = "b";
157
- const expiration1 = ttl.toEndDate();
158
- await adapter.insert(key, owner1, expiration1);
159
- vi.advanceTimersByTime(ttl.addMilliseconds(1).toMilliseconds());
160
- const owner2 = "c";
161
- const expiration2 = ttl.addMilliseconds(25).toEndDate();
162
- await adapter.update(key, owner2, expiration2);
163
- const result = await adapter.find(key);
164
- expect(result).toEqual({
165
- owner: owner2,
166
- expiration: expiration2,
114
+ });
115
+ test("Should not update expiration when key is uenxpireable", async () => {
116
+ const key = "key";
117
+ const ownerA = "a";
118
+ const expirationA = null;
119
+ await adapter.insert(key, ownerA, expirationA);
120
+ const ownerB = "b";
121
+ const expirationB = TimeSpan.fromMinutes(3).toEndDate();
122
+ await adapter.updateIfExpired(key, ownerB, expirationB);
123
+ const lockData = await adapter.find(key);
124
+ expect(lockData).toEqual({
125
+ owner: ownerA,
126
+ expiration: expirationA,
167
127
  });
168
- vi.useRealTimers();
128
+ });
129
+ test("Should return 0 when key is uenxpireable", async () => {
130
+ const key = "key";
131
+ const ownerA = "a";
132
+ const expirationA = null;
133
+ await adapter.insert(key, ownerA, expirationA);
134
+ const ownerB = "b";
135
+ const expirationB = TimeSpan.fromMinutes(3).toEndDate();
136
+ const result = await adapter.updateIfExpired(key, ownerB, expirationB);
137
+ expect(result).toBe(0);
169
138
  });
170
139
  });
171
140
  describe("method: remove", () => {
172
- test("Should not remove lock when not same owner", async () => {
173
- const key = "a";
174
- const owner1 = "b";
175
- const expiration = null;
176
- await adapter.insert(key, owner1, expiration);
177
- const owner2 = "c";
178
- await adapter.remove(key, owner2);
179
- const result = await adapter.find(key);
180
- expect(result).toEqual({
181
- owner: owner1,
141
+ test("Should remove key", async () => {
142
+ const key = "key";
143
+ const owner = "a";
144
+ const expiration = new Date("2025");
145
+ expiration.setMinutes(expiration.getMinutes() + 2);
146
+ await adapter.insert(key, owner, expiration);
147
+ await adapter.remove(key);
148
+ expect(await adapter.find(key)).toBeNull();
149
+ });
150
+ });
151
+ describe("method: removeIfOwner", () => {
152
+ test("Should return null when key deosnt exists", async () => {
153
+ const noneExsistingKey = "key";
154
+ const noneExsistingOwner = "b";
155
+ const lockExpirationData = await adapter.removeIfOwner(noneExsistingKey, noneExsistingOwner);
156
+ expect(lockExpirationData).toBeNull();
157
+ });
158
+ test("Should return ILockData when key exists and owner match", async () => {
159
+ const key = "key";
160
+ const owner = "a";
161
+ const expiration = new Date("2025");
162
+ await adapter.insert(key, owner, expiration);
163
+ const lockExpirationData = await adapter.removeIfOwner(key, owner);
164
+ expect(lockExpirationData).toEqual({
182
165
  expiration,
166
+ owner,
183
167
  });
184
168
  });
185
- test("Should remove lock when same owner", async () => {
186
- const key = "a";
187
- const owner = "b";
188
- const expiration = null;
169
+ test("Should remove when key exists and owner match", async () => {
170
+ const key = "key";
171
+ const owner = "a";
172
+ const expiration = new Date("2025");
189
173
  await adapter.insert(key, owner, expiration);
190
- await adapter.remove(key, owner);
191
- const result = await adapter.find(key);
192
- expect(result).toBeNull();
174
+ await adapter.removeIfOwner(key, owner);
175
+ expect(await adapter.find(key)).toBeNull();
193
176
  });
194
- test("Should remove lock when given null as owner", async () => {
195
- const key = "a";
196
- const owner = "b";
197
- const expiration = null;
177
+ test("Should return null when key exists and owner doesnt match", async () => {
178
+ const key = "key";
179
+ const owner = "a";
180
+ const expiration = new Date("2025");
198
181
  await adapter.insert(key, owner, expiration);
199
- await adapter.remove(key, null);
200
- const result = await adapter.find(key);
201
- expect(result).toBeNull();
182
+ const noneExsistingOwner = "b";
183
+ const lockExpirationData = await adapter.removeIfOwner(key, noneExsistingOwner);
184
+ expect(lockExpirationData).toBeNull();
185
+ });
186
+ test("Should not remove when key exists and owner doesnt match", async () => {
187
+ const key = "key";
188
+ const owner = "a";
189
+ const expiration = new Date("2025");
190
+ await adapter.insert(key, owner, expiration);
191
+ const noneExsistingOwner = "b";
192
+ await adapter.removeIfOwner(key, noneExsistingOwner);
193
+ expect(await adapter.find(key)).toEqual({
194
+ owner,
195
+ expiration,
196
+ });
202
197
  });
203
198
  });
204
- describe("method: refresh", () => {
205
- test("Should return false when not same owner", async () => {
206
- const key = "a";
207
- const owner1 = "b";
208
- const expiration1 = ttl.toEndDate();
209
- await adapter.insert(key, owner1, expiration1);
210
- const expiration2 = ttl.multiply(2).toEndDate();
211
- const owner2 = "c";
212
- const result = await adapter.refresh(key, owner2, expiration2);
199
+ describe("method: updateExpirationIfOwner", () => {
200
+ test("Should return 0 when key doesnt exists", async () => {
201
+ const newExpiration = new Date("2025");
202
+ const noneExsistingKey = "key";
203
+ const owner = "b";
204
+ const result = await adapter.updateExpirationIfOwner(noneExsistingKey, owner, newExpiration);
213
205
  expect(result).toBe(0);
214
206
  });
215
- test("Should not update lock when not same owner", async () => {
216
- const key = "a";
217
- const owner1 = "b";
218
- const expiration1 = ttl.toEndDate();
219
- await adapter.insert(key, owner1, expiration1);
220
- const expiration2 = ttl.multiply(2).toEndDate();
221
- const owner2 = "c";
222
- await adapter.refresh(key, owner2, expiration2);
223
- const result = await adapter.find(key);
224
- expect(result).toEqual({
225
- owner: owner1,
226
- expiration: expiration1,
207
+ test("should return 0 when when owner doesnt match", async () => {
208
+ const key = "key";
209
+ const ownerA = "a";
210
+ const expiration = new Date("2024");
211
+ await adapter.insert(key, ownerA, expiration);
212
+ const newExpiration = new Date("2025");
213
+ const ownerB = "b";
214
+ const result = await adapter.updateExpirationIfOwner(key, ownerB, newExpiration);
215
+ expect(result).toBe(0);
216
+ });
217
+ test("Should not update expiration when owner doesnt match", async () => {
218
+ const key = "key";
219
+ const ownerA = "a";
220
+ const expiration = new Date("2024");
221
+ await adapter.insert(key, ownerA, expiration);
222
+ const newExpiration = new Date("2025");
223
+ const ownerB = "b";
224
+ await adapter.updateExpirationIfOwner(key, ownerB, newExpiration);
225
+ expect(await adapter.find(key)).toEqual({
226
+ expiration,
227
+ owner: ownerA,
227
228
  });
228
229
  });
229
- test("Should return true when same owner", async () => {
230
- const key = "a";
231
- const owner = "b";
232
- const expiration1 = ttl.toEndDate();
233
- await adapter.insert(key, owner, expiration1);
234
- const expiration2 = ttl.multiply(2).toEndDate();
235
- const result = await adapter.refresh(key, owner, expiration2);
236
- expect(result).toBe(1);
237
- });
238
- test("Should update lock when same owner", async () => {
239
- const key = "a";
240
- const owner = "b";
241
- const expiration1 = ttl.toEndDate();
242
- await adapter.insert(key, owner, expiration1);
243
- const expiration2 = ttl.multiply(2).toEndDate();
244
- await adapter.refresh(key, owner, expiration2);
245
- const result = await adapter.find(key);
246
- expect(result).toEqual({
230
+ test("Should return number greather than 0 when owner match", async () => {
231
+ const key = "key";
232
+ const owner = "a";
233
+ const expiration = new Date("2024");
234
+ await adapter.insert(key, owner, expiration);
235
+ const newExpiration = new Date("2025");
236
+ const result = await adapter.updateExpirationIfOwner(key, owner, newExpiration);
237
+ expect(result).toBeGreaterThan(0);
238
+ });
239
+ test("Should update expiration when owner match", async () => {
240
+ const key = "key";
241
+ const owner = "a";
242
+ const expiration = new Date("2024");
243
+ await adapter.insert(key, owner, expiration);
244
+ const newExpiration = new Date("2025");
245
+ await adapter.updateExpirationIfOwner(key, owner, newExpiration);
246
+ expect(await adapter.find(key)).toEqual({
247
+ expiration: newExpiration,
248
+ owner,
249
+ });
250
+ });
251
+ });
252
+ describe("method: find", () => {
253
+ test("Should return null when key doesnt exists", async () => {
254
+ const noneExsistingKey = "key";
255
+ const lockData = await adapter.find(noneExsistingKey);
256
+ expect(lockData).toBeNull();
257
+ });
258
+ test("Should return ILockData when key exists", async () => {
259
+ const key = "key";
260
+ const owner = "a";
261
+ const expiration = new Date();
262
+ await adapter.insert(key, owner, expiration);
263
+ const lockData = await adapter.find(key);
264
+ expect(lockData).toEqual({
247
265
  owner,
248
- expiration: expiration2,
266
+ expiration,
249
267
  });
250
268
  });
251
269
  });
@@ -1 +1 @@
1
- {"version":3,"file":"database-lock-adapter.test-suite.js","sourceRoot":"","sources":["../../../../src/lock/implementations/test-utilities/database-lock-adapter.test-suite.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAKH,EAAE,GACL,MAAM,QAAQ,CAAC;AAChB,OAAO,EAA6B,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAmB,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAe1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,4BAA4B,CACxC,QAA8C;IAE9C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IACvE,IAAI,OAA6B,CAAC;IAClC,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC;YAExB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK;gBACL,UAAU;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YAEnC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK;gBACL,UAAU;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC;YAExB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC;YACxB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC;YACxB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK,EAAE,MAAM;gBACb,UAAU;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,EAAE,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC/C,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,EAAE,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC/C,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,WAAW;aAC1B,CAAC,CAAC;YACH,EAAE,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,EAAE,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC/C,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YAEhE,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,EAAE,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC/C,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;YAEhE,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,WAAW;aAC1B,CAAC,CAAC;YACH,EAAE,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC;YACxB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAElC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK,EAAE,MAAM;gBACb,UAAU;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC;YACxB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAE7C,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,UAAU,GAAG,IAAI,CAAC;YACxB,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAE7C,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEhC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE/C,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAE/C,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,WAAW;aAC1B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,KAAK;gBACL,UAAU,EAAE,WAAW;aAC1B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"database-lock-adapter.test-suite.js","sourceRoot":"","sources":["../../../../src/lock/implementations/test-utilities/database-lock-adapter.test-suite.ts"],"names":[],"mappings":"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"}