@geekmidas/cache 0.0.3 → 0.0.5
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.
- package/README.md +512 -0
- package/dist/__tests__/cache.spec.cjs +30 -30
- package/dist/__tests__/cache.spec.d.cts +1 -0
- package/dist/__tests__/cache.spec.d.mts +1 -0
- package/dist/__tests__/cache.spec.mjs +1 -1
- package/dist/__tests__/integration.spec.cjs +44 -44
- package/dist/__tests__/integration.spec.d.cts +1 -0
- package/dist/__tests__/integration.spec.d.mts +1 -0
- package/dist/__tests__/integration.spec.mjs +1 -1
- package/dist/__tests__/memory.spec.cjs +44 -44
- package/dist/__tests__/memory.spec.d.cts +1 -0
- package/dist/__tests__/memory.spec.d.mts +1 -0
- package/dist/__tests__/memory.spec.mjs +1 -1
- package/dist/__tests__/upstash.spec.cjs +50 -50
- package/dist/__tests__/upstash.spec.d.cts +1 -0
- package/dist/__tests__/upstash.spec.d.mts +1 -0
- package/dist/__tests__/upstash.spec.mjs +1 -1
- package/dist/{chunk-CUT6urMc.cjs → chunk-DWy1uDak.cjs} +9 -0
- package/dist/expo.cjs +36 -0
- package/dist/expo.d.cts +12 -0
- package/dist/expo.d.mts +12 -0
- package/dist/expo.mjs +35 -0
- package/dist/index-CVen_7Cc.d.mts +25 -0
- package/dist/index-q3xYn8_0.d.cts +25 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.mts +2 -0
- package/dist/memory.d.cts +11 -0
- package/dist/memory.d.mts +11 -0
- package/dist/{upstash-0RolGx7m.cjs → upstash-DiFDpOHy.cjs} +1 -1
- package/dist/upstash.cjs +1 -1
- package/dist/upstash.d.cts +12 -0
- package/dist/upstash.d.mts +12 -0
- package/dist/{vi.DgezovHB-McgltIC5.mjs → vi.bdSIJ99Y-CKSnd2bq.cjs} +3294 -1418
- package/dist/{vi.DgezovHB-NqP74KGR.cjs → vi.bdSIJ99Y-DffpE2Zw.mjs} +3255 -1408
- package/package.json +17 -9
- package/src/expo.ts +53 -0
- package/tsdown.config.ts +5 -0
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
const require_memory = require('../memory-n6Iosq6J.cjs');
|
|
2
|
-
const
|
|
2
|
+
const require_vi_bdSIJ99Y = require('../vi.bdSIJ99Y-CKSnd2bq.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/__tests__/integration.spec.ts
|
|
5
|
-
|
|
5
|
+
require_vi_bdSIJ99Y.describe("Cache Integration Tests", () => {
|
|
6
6
|
let memoryCache;
|
|
7
|
-
|
|
7
|
+
require_vi_bdSIJ99Y.beforeEach(() => {
|
|
8
8
|
memoryCache = new require_memory.InMemoryCache();
|
|
9
9
|
});
|
|
10
|
-
|
|
10
|
+
require_vi_bdSIJ99Y.describe("cross-cache behavior consistency", () => {
|
|
11
11
|
const testCases = [{
|
|
12
12
|
name: "InMemoryCache",
|
|
13
13
|
cache: () => new require_memory.InMemoryCache()
|
|
14
14
|
}];
|
|
15
15
|
testCases.forEach(({ name, cache }) => {
|
|
16
|
-
|
|
16
|
+
require_vi_bdSIJ99Y.describe(name, () => {
|
|
17
17
|
let cacheInstance;
|
|
18
|
-
|
|
18
|
+
require_vi_bdSIJ99Y.beforeEach(() => {
|
|
19
19
|
cacheInstance = cache();
|
|
20
20
|
});
|
|
21
|
-
|
|
21
|
+
require_vi_bdSIJ99Y.it("should handle basic CRUD operations", async () => {
|
|
22
22
|
await cacheInstance.set("user:1", {
|
|
23
23
|
id: 1,
|
|
24
24
|
name: "John"
|
|
25
25
|
});
|
|
26
26
|
const user = await cacheInstance.get("user:1");
|
|
27
|
-
|
|
27
|
+
require_vi_bdSIJ99Y.globalExpect(user).toEqual({
|
|
28
28
|
id: 1,
|
|
29
29
|
name: "John"
|
|
30
30
|
});
|
|
@@ -33,15 +33,15 @@ require_vi_DgezovHB.describe("Cache Integration Tests", () => {
|
|
|
33
33
|
name: "Jane"
|
|
34
34
|
});
|
|
35
35
|
const updatedUser = await cacheInstance.get("user:1");
|
|
36
|
-
|
|
36
|
+
require_vi_bdSIJ99Y.globalExpect(updatedUser).toEqual({
|
|
37
37
|
id: 1,
|
|
38
38
|
name: "Jane"
|
|
39
39
|
});
|
|
40
40
|
await cacheInstance.delete("user:1");
|
|
41
41
|
const deletedUser = await cacheInstance.get("user:1");
|
|
42
|
-
|
|
42
|
+
require_vi_bdSIJ99Y.globalExpect(deletedUser).toBeUndefined();
|
|
43
43
|
});
|
|
44
|
-
|
|
44
|
+
require_vi_bdSIJ99Y.it("should handle concurrent operations", async () => {
|
|
45
45
|
const operations = [
|
|
46
46
|
cacheInstance.set("key1", "value1"),
|
|
47
47
|
cacheInstance.set("key2", "value2"),
|
|
@@ -53,13 +53,13 @@ require_vi_DgezovHB.describe("Cache Integration Tests", () => {
|
|
|
53
53
|
cacheInstance.get("key2"),
|
|
54
54
|
cacheInstance.get("key3")
|
|
55
55
|
]);
|
|
56
|
-
|
|
56
|
+
require_vi_bdSIJ99Y.globalExpect(results).toEqual([
|
|
57
57
|
"value1",
|
|
58
58
|
"value2",
|
|
59
59
|
"value3"
|
|
60
60
|
]);
|
|
61
61
|
});
|
|
62
|
-
|
|
62
|
+
require_vi_bdSIJ99Y.it("should handle data type preservation", async () => {
|
|
63
63
|
const testData = {
|
|
64
64
|
string: "hello",
|
|
65
65
|
number: 42,
|
|
@@ -74,31 +74,31 @@ require_vi_DgezovHB.describe("Cache Integration Tests", () => {
|
|
|
74
74
|
};
|
|
75
75
|
await Promise.all(Object.entries(testData).map(([key, value]) => cacheInstance.set(key, value)));
|
|
76
76
|
const results = await Promise.all(Object.keys(testData).map((key) => cacheInstance.get(key)));
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
require_vi_bdSIJ99Y.globalExpect(results[0]).toBe("hello");
|
|
78
|
+
require_vi_bdSIJ99Y.globalExpect(results[1]).toBe(42);
|
|
79
|
+
require_vi_bdSIJ99Y.globalExpect(results[2]).toBe(true);
|
|
80
|
+
require_vi_bdSIJ99Y.globalExpect(results[3]).toEqual({ nested: true });
|
|
81
|
+
require_vi_bdSIJ99Y.globalExpect(results[4]).toEqual([
|
|
82
82
|
1,
|
|
83
83
|
2,
|
|
84
84
|
3
|
|
85
85
|
]);
|
|
86
|
-
|
|
86
|
+
require_vi_bdSIJ99Y.globalExpect(results[5]).toBeNull();
|
|
87
87
|
});
|
|
88
|
-
|
|
88
|
+
require_vi_bdSIJ99Y.it("should handle key isolation", async () => {
|
|
89
89
|
await cacheInstance.set("user:1", "User One");
|
|
90
90
|
await cacheInstance.set("user:2", "User Two");
|
|
91
91
|
await cacheInstance.set("session:1", "Session One");
|
|
92
92
|
await cacheInstance.delete("user:1");
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
require_vi_bdSIJ99Y.globalExpect(await cacheInstance.get("user:1")).toBeUndefined();
|
|
94
|
+
require_vi_bdSIJ99Y.globalExpect(await cacheInstance.get("user:2")).toBe("User Two");
|
|
95
|
+
require_vi_bdSIJ99Y.globalExpect(await cacheInstance.get("session:1")).toBe("Session One");
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
99
|
});
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
require_vi_bdSIJ99Y.describe("cache migration scenarios", () => {
|
|
101
|
+
require_vi_bdSIJ99Y.it("should support migrating data between cache implementations", async () => {
|
|
102
102
|
const sourceCache = new require_memory.InMemoryCache();
|
|
103
103
|
const targetCache = new require_memory.InMemoryCache();
|
|
104
104
|
const testData = {
|
|
@@ -123,12 +123,12 @@ require_vi_DgezovHB.describe("Cache Integration Tests", () => {
|
|
|
123
123
|
}
|
|
124
124
|
for (const [key, expectedValue] of Object.entries(testData)) {
|
|
125
125
|
const migratedValue = await targetCache.get(key);
|
|
126
|
-
|
|
126
|
+
require_vi_bdSIJ99Y.globalExpect(migratedValue).toEqual(expectedValue);
|
|
127
127
|
}
|
|
128
128
|
});
|
|
129
129
|
});
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
require_vi_bdSIJ99Y.describe("cache abstraction patterns", () => {
|
|
131
|
+
require_vi_bdSIJ99Y.it("should support cache factory pattern", async () => {
|
|
132
132
|
const createCache = (type) => {
|
|
133
133
|
switch (type) {
|
|
134
134
|
case "memory": return new require_memory.InMemoryCache();
|
|
@@ -142,13 +142,13 @@ require_vi_DgezovHB.describe("Cache Integration Tests", () => {
|
|
|
142
142
|
name: "John"
|
|
143
143
|
});
|
|
144
144
|
await sessionCache.set("session:abc", "active");
|
|
145
|
-
|
|
145
|
+
require_vi_bdSIJ99Y.globalExpect(await userCache.get("user:1")).toEqual({
|
|
146
146
|
id: 1,
|
|
147
147
|
name: "John"
|
|
148
148
|
});
|
|
149
|
-
|
|
149
|
+
require_vi_bdSIJ99Y.globalExpect(await sessionCache.get("session:abc")).toBe("active");
|
|
150
150
|
});
|
|
151
|
-
|
|
151
|
+
require_vi_bdSIJ99Y.it("should support cache wrapper pattern", async () => {
|
|
152
152
|
class LoggingCache {
|
|
153
153
|
logs = [];
|
|
154
154
|
constructor(underlying) {
|
|
@@ -176,28 +176,28 @@ require_vi_DgezovHB.describe("Cache Integration Tests", () => {
|
|
|
176
176
|
await loggingCache.get("test");
|
|
177
177
|
await loggingCache.delete("test");
|
|
178
178
|
const logs = loggingCache.getLogs();
|
|
179
|
-
|
|
179
|
+
require_vi_bdSIJ99Y.globalExpect(logs).toEqual([
|
|
180
180
|
"SET test",
|
|
181
181
|
"GET test",
|
|
182
182
|
"DELETE test"
|
|
183
183
|
]);
|
|
184
184
|
});
|
|
185
185
|
});
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
require_vi_bdSIJ99Y.describe("performance and stress tests", () => {
|
|
187
|
+
require_vi_bdSIJ99Y.it("should handle large number of operations", async () => {
|
|
188
188
|
const cache = new require_memory.InMemoryCache();
|
|
189
189
|
const operationCount = 1e3;
|
|
190
190
|
const insertPromises = Array.from({ length: operationCount }, (_, i) => cache.set(`key:${i}`, i));
|
|
191
191
|
await Promise.all(insertPromises);
|
|
192
192
|
const readPromises = Array.from({ length: operationCount }, (_, i) => cache.get(`key:${i}`));
|
|
193
193
|
const results = await Promise.all(readPromises);
|
|
194
|
-
for (let i = 0; i < operationCount; i++)
|
|
194
|
+
for (let i = 0; i < operationCount; i++) require_vi_bdSIJ99Y.globalExpect(results[i]).toBe(i);
|
|
195
195
|
const deletePromises = Array.from({ length: operationCount }, (_, i) => cache.delete(`key:${i}`));
|
|
196
196
|
await Promise.all(deletePromises);
|
|
197
197
|
const postDeleteRead = await cache.get("key:0");
|
|
198
|
-
|
|
198
|
+
require_vi_bdSIJ99Y.globalExpect(postDeleteRead).toBeUndefined();
|
|
199
199
|
});
|
|
200
|
-
|
|
200
|
+
require_vi_bdSIJ99Y.it("should handle large objects efficiently", async () => {
|
|
201
201
|
const cache = new require_memory.InMemoryCache();
|
|
202
202
|
const largeObject = {
|
|
203
203
|
id: 1,
|
|
@@ -214,19 +214,19 @@ require_vi_DgezovHB.describe("Cache Integration Tests", () => {
|
|
|
214
214
|
await cache.set("large-object", largeObject);
|
|
215
215
|
const result = await cache.get("large-object");
|
|
216
216
|
const endTime = Date.now();
|
|
217
|
-
|
|
218
|
-
|
|
217
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(largeObject);
|
|
218
|
+
require_vi_bdSIJ99Y.globalExpect(endTime - startTime).toBeLessThan(100);
|
|
219
219
|
});
|
|
220
220
|
});
|
|
221
|
-
|
|
222
|
-
|
|
221
|
+
require_vi_bdSIJ99Y.describe("error scenarios", () => {
|
|
222
|
+
require_vi_bdSIJ99Y.it("should handle operations after errors gracefully", async () => {
|
|
223
223
|
const cache = new require_memory.InMemoryCache();
|
|
224
224
|
await cache.set("valid-key", "valid-value");
|
|
225
|
-
|
|
225
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("valid-key")).toBe("valid-value");
|
|
226
226
|
await cache.set("another-key", "another-value");
|
|
227
|
-
|
|
227
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("another-key")).toBe("another-value");
|
|
228
228
|
await cache.delete("valid-key");
|
|
229
|
-
|
|
229
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("valid-key")).toBeUndefined();
|
|
230
230
|
});
|
|
231
231
|
});
|
|
232
232
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { beforeEach, describe, globalExpect, it } from "../vi.
|
|
1
|
+
import { beforeEach, describe, globalExpect, it } from "../vi.bdSIJ99Y-DffpE2Zw.mjs";
|
|
2
2
|
import { InMemoryCache } from "../memory-YteQXj7m.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/__tests__/integration.spec.ts
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
const require_memory = require('../memory-n6Iosq6J.cjs');
|
|
2
|
-
const
|
|
2
|
+
const require_vi_bdSIJ99Y = require('../vi.bdSIJ99Y-CKSnd2bq.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/__tests__/memory.spec.ts
|
|
5
|
-
|
|
5
|
+
require_vi_bdSIJ99Y.describe("InMemoryCache", () => {
|
|
6
6
|
let cache;
|
|
7
|
-
|
|
7
|
+
require_vi_bdSIJ99Y.beforeEach(() => {
|
|
8
8
|
cache = new require_memory.InMemoryCache();
|
|
9
9
|
});
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
require_vi_bdSIJ99Y.describe("get", () => {
|
|
11
|
+
require_vi_bdSIJ99Y.it("should return undefined for non-existent key", async () => {
|
|
12
12
|
const result = await cache.get("non-existent");
|
|
13
|
-
|
|
13
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeUndefined();
|
|
14
14
|
});
|
|
15
|
-
|
|
15
|
+
require_vi_bdSIJ99Y.it("should return value for existing key", async () => {
|
|
16
16
|
await cache.set("test-key", "test-value");
|
|
17
17
|
const result = await cache.get("test-key");
|
|
18
|
-
|
|
18
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe("test-value");
|
|
19
19
|
});
|
|
20
|
-
|
|
20
|
+
require_vi_bdSIJ99Y.it("should handle different data types", async () => {
|
|
21
21
|
const objectValue = {
|
|
22
22
|
id: 1,
|
|
23
23
|
name: "test"
|
|
@@ -33,91 +33,91 @@ require_vi_DgezovHB.describe("InMemoryCache", () => {
|
|
|
33
33
|
await cache.set("array", arrayValue);
|
|
34
34
|
await cache.set("number", numberValue);
|
|
35
35
|
await cache.set("boolean", booleanValue);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("object")).toEqual(objectValue);
|
|
37
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("array")).toEqual(arrayValue);
|
|
38
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("number")).toBe(numberValue);
|
|
39
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("boolean")).toBe(booleanValue);
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
require_vi_bdSIJ99Y.describe("set", () => {
|
|
43
|
+
require_vi_bdSIJ99Y.it("should store string value", async () => {
|
|
44
44
|
await cache.set("string-key", "string-value");
|
|
45
45
|
const result = await cache.get("string-key");
|
|
46
|
-
|
|
46
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe("string-value");
|
|
47
47
|
});
|
|
48
|
-
|
|
48
|
+
require_vi_bdSIJ99Y.it("should store object value", async () => {
|
|
49
49
|
const value = {
|
|
50
50
|
id: 1,
|
|
51
51
|
data: "test"
|
|
52
52
|
};
|
|
53
53
|
await cache.set("object-key", value);
|
|
54
54
|
const result = await cache.get("object-key");
|
|
55
|
-
|
|
55
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(value);
|
|
56
56
|
});
|
|
57
|
-
|
|
57
|
+
require_vi_bdSIJ99Y.it("should overwrite existing value", async () => {
|
|
58
58
|
await cache.set("key", "initial-value");
|
|
59
59
|
await cache.set("key", "updated-value");
|
|
60
60
|
const result = await cache.get("key");
|
|
61
|
-
|
|
61
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe("updated-value");
|
|
62
62
|
});
|
|
63
|
-
|
|
63
|
+
require_vi_bdSIJ99Y.it("should handle null values", async () => {
|
|
64
64
|
await cache.set("null-key", null);
|
|
65
65
|
const result = await cache.get("null-key");
|
|
66
|
-
|
|
66
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeNull();
|
|
67
67
|
});
|
|
68
68
|
});
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
require_vi_bdSIJ99Y.describe("delete", () => {
|
|
70
|
+
require_vi_bdSIJ99Y.it("should remove existing key", async () => {
|
|
71
71
|
await cache.set("to-delete", "value");
|
|
72
72
|
await cache.delete("to-delete");
|
|
73
73
|
const result = await cache.get("to-delete");
|
|
74
|
-
|
|
74
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeUndefined();
|
|
75
75
|
});
|
|
76
|
-
|
|
77
|
-
await
|
|
76
|
+
require_vi_bdSIJ99Y.it("should not throw error for non-existent key", async () => {
|
|
77
|
+
await require_vi_bdSIJ99Y.globalExpect(cache.delete("non-existent")).resolves.not.toThrow();
|
|
78
78
|
});
|
|
79
|
-
|
|
79
|
+
require_vi_bdSIJ99Y.it("should only delete specified key", async () => {
|
|
80
80
|
await cache.set("key1", "value1");
|
|
81
81
|
await cache.set("key2", "value2");
|
|
82
82
|
await cache.delete("key1");
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("key1")).toBeUndefined();
|
|
84
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("key2")).toBe("value2");
|
|
85
85
|
});
|
|
86
86
|
});
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
require_vi_bdSIJ99Y.describe("multiple operations", () => {
|
|
88
|
+
require_vi_bdSIJ99Y.it("should handle multiple keys independently", async () => {
|
|
89
89
|
await cache.set("key1", "value1");
|
|
90
90
|
await cache.set("key2", "value2");
|
|
91
91
|
await cache.set("key3", "value3");
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("key1")).toBe("value1");
|
|
93
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("key2")).toBe("value2");
|
|
94
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get("key3")).toBe("value3");
|
|
95
95
|
});
|
|
96
|
-
|
|
96
|
+
require_vi_bdSIJ99Y.it("should maintain data integrity across operations", async () => {
|
|
97
97
|
const data = { count: 0 };
|
|
98
98
|
await cache.set("counter", data);
|
|
99
99
|
const retrieved = await cache.get("counter");
|
|
100
100
|
retrieved.count = 5;
|
|
101
101
|
const original = await cache.get("counter");
|
|
102
|
-
|
|
102
|
+
require_vi_bdSIJ99Y.globalExpect(original.count).toBe(5);
|
|
103
103
|
});
|
|
104
104
|
});
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
require_vi_bdSIJ99Y.describe("edge cases", () => {
|
|
106
|
+
require_vi_bdSIJ99Y.it("should handle empty string as key", async () => {
|
|
107
107
|
await cache.set("", "empty-key-value");
|
|
108
108
|
const result = await cache.get("");
|
|
109
|
-
|
|
109
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe("empty-key-value");
|
|
110
110
|
});
|
|
111
|
-
|
|
111
|
+
require_vi_bdSIJ99Y.it("should handle special characters in keys", async () => {
|
|
112
112
|
const specialKey = "key!@#$%^&*()_+{}|:\"<>?[]\\;',./?`~";
|
|
113
113
|
await cache.set(specialKey, "special-value");
|
|
114
114
|
const result = await cache.get(specialKey);
|
|
115
|
-
|
|
115
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe("special-value");
|
|
116
116
|
});
|
|
117
|
-
|
|
117
|
+
require_vi_bdSIJ99Y.it("should handle undefined values", async () => {
|
|
118
118
|
await cache.set("undefined-key", void 0);
|
|
119
119
|
const result = await cache.get("undefined-key");
|
|
120
|
-
|
|
120
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeUndefined();
|
|
121
121
|
});
|
|
122
122
|
});
|
|
123
123
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { beforeEach, describe, globalExpect, it } from "../vi.
|
|
1
|
+
import { beforeEach, describe, globalExpect, it } from "../vi.bdSIJ99Y-DffpE2Zw.mjs";
|
|
2
2
|
import { InMemoryCache } from "../memory-YteQXj7m.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/__tests__/memory.spec.ts
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
const require_upstash = require('../upstash-
|
|
2
|
-
const
|
|
1
|
+
const require_upstash = require('../upstash-DiFDpOHy.cjs');
|
|
2
|
+
const require_vi_bdSIJ99Y = require('../vi.bdSIJ99Y-CKSnd2bq.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/__tests__/upstash.spec.ts
|
|
5
|
-
|
|
5
|
+
require_vi_bdSIJ99Y.describe("UpstashCache", () => {
|
|
6
6
|
let cache;
|
|
7
7
|
const testKeyPrefix = `test:${Date.now()}:`;
|
|
8
8
|
let testKeys = [];
|
|
9
|
-
|
|
9
|
+
require_vi_bdSIJ99Y.beforeEach(() => {
|
|
10
10
|
cache = new require_upstash.UpstashCache("http://localhost:8079", "example_token");
|
|
11
11
|
testKeys = [];
|
|
12
12
|
});
|
|
13
|
-
|
|
13
|
+
require_vi_bdSIJ99Y.afterEach(async () => {
|
|
14
14
|
for (const key of testKeys) try {
|
|
15
15
|
await cache.delete(key);
|
|
16
16
|
} catch (error) {}
|
|
@@ -20,13 +20,13 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
20
20
|
testKeys.push(key);
|
|
21
21
|
return key;
|
|
22
22
|
};
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
require_vi_bdSIJ99Y.describe("get", () => {
|
|
24
|
+
require_vi_bdSIJ99Y.it("should return undefined for non-existent key", async () => {
|
|
25
25
|
const key = getTestKey("non-existent");
|
|
26
26
|
const result = await cache.get(key);
|
|
27
|
-
|
|
27
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeUndefined();
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
require_vi_bdSIJ99Y.it("should parse and return JSON value", async () => {
|
|
30
30
|
const key = getTestKey("object");
|
|
31
31
|
const testValue = {
|
|
32
32
|
id: 1,
|
|
@@ -34,30 +34,30 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
34
34
|
};
|
|
35
35
|
await cache.set(key, testValue);
|
|
36
36
|
const result = await cache.get(key);
|
|
37
|
-
|
|
37
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(testValue);
|
|
38
38
|
});
|
|
39
|
-
|
|
39
|
+
require_vi_bdSIJ99Y.it("should handle string values", async () => {
|
|
40
40
|
const key = getTestKey("string");
|
|
41
41
|
const testValue = "simple string";
|
|
42
42
|
await cache.set(key, testValue);
|
|
43
43
|
const result = await cache.get(key);
|
|
44
|
-
|
|
44
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe(testValue);
|
|
45
45
|
});
|
|
46
|
-
|
|
46
|
+
require_vi_bdSIJ99Y.it("should handle number values", async () => {
|
|
47
47
|
const key = getTestKey("number");
|
|
48
48
|
const testValue = 42;
|
|
49
49
|
await cache.set(key, testValue);
|
|
50
50
|
const result = await cache.get(key);
|
|
51
|
-
|
|
51
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe(testValue);
|
|
52
52
|
});
|
|
53
|
-
|
|
53
|
+
require_vi_bdSIJ99Y.it("should handle boolean values", async () => {
|
|
54
54
|
const key = getTestKey("boolean");
|
|
55
55
|
const testValue = true;
|
|
56
56
|
await cache.set(key, testValue);
|
|
57
57
|
const result = await cache.get(key);
|
|
58
|
-
|
|
58
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe(testValue);
|
|
59
59
|
});
|
|
60
|
-
|
|
60
|
+
require_vi_bdSIJ99Y.it("should handle array values", async () => {
|
|
61
61
|
const key = getTestKey("array");
|
|
62
62
|
const testArray = [
|
|
63
63
|
1,
|
|
@@ -67,17 +67,17 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
67
67
|
];
|
|
68
68
|
await cache.set(key, testArray);
|
|
69
69
|
const result = await cache.get(key);
|
|
70
|
-
|
|
70
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(testArray);
|
|
71
71
|
});
|
|
72
|
-
|
|
72
|
+
require_vi_bdSIJ99Y.it("should handle null values as undefined", async () => {
|
|
73
73
|
const key = getTestKey("null");
|
|
74
74
|
await cache.set(key, null);
|
|
75
75
|
const result = await cache.get(key);
|
|
76
|
-
|
|
76
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeUndefined();
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
require_vi_bdSIJ99Y.describe("set", () => {
|
|
80
|
+
require_vi_bdSIJ99Y.it("should store and retrieve object value", async () => {
|
|
81
81
|
const key = getTestKey("set-object");
|
|
82
82
|
const testValue = {
|
|
83
83
|
id: 1,
|
|
@@ -85,30 +85,30 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
85
85
|
};
|
|
86
86
|
await cache.set(key, testValue);
|
|
87
87
|
const result = await cache.get(key);
|
|
88
|
-
|
|
88
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(testValue);
|
|
89
89
|
});
|
|
90
|
-
|
|
90
|
+
require_vi_bdSIJ99Y.it("should store and retrieve string values", async () => {
|
|
91
91
|
const key = getTestKey("set-string");
|
|
92
92
|
const testValue = "test string";
|
|
93
93
|
await cache.set(key, testValue);
|
|
94
94
|
const result = await cache.get(key);
|
|
95
|
-
|
|
95
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe(testValue);
|
|
96
96
|
});
|
|
97
|
-
|
|
97
|
+
require_vi_bdSIJ99Y.it("should store and retrieve number values", async () => {
|
|
98
98
|
const key = getTestKey("set-number");
|
|
99
99
|
const testValue = 42;
|
|
100
100
|
await cache.set(key, testValue);
|
|
101
101
|
const result = await cache.get(key);
|
|
102
|
-
|
|
102
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe(testValue);
|
|
103
103
|
});
|
|
104
|
-
|
|
104
|
+
require_vi_bdSIJ99Y.it("should store and retrieve boolean values", async () => {
|
|
105
105
|
const key = getTestKey("set-boolean");
|
|
106
106
|
const testValue = true;
|
|
107
107
|
await cache.set(key, testValue);
|
|
108
108
|
const result = await cache.get(key);
|
|
109
|
-
|
|
109
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe(testValue);
|
|
110
110
|
});
|
|
111
|
-
|
|
111
|
+
require_vi_bdSIJ99Y.it("should store and retrieve array values", async () => {
|
|
112
112
|
const key = getTestKey("set-array");
|
|
113
113
|
const testArray = [
|
|
114
114
|
1,
|
|
@@ -117,46 +117,46 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
117
117
|
];
|
|
118
118
|
await cache.set(key, testArray);
|
|
119
119
|
const result = await cache.get(key);
|
|
120
|
-
|
|
120
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(testArray);
|
|
121
121
|
});
|
|
122
|
-
|
|
122
|
+
require_vi_bdSIJ99Y.it("should not store and retrieve null values", async () => {
|
|
123
123
|
const key = getTestKey("set-null");
|
|
124
124
|
await cache.set(key, null);
|
|
125
125
|
const result = await cache.get(key);
|
|
126
|
-
|
|
126
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeUndefined();
|
|
127
127
|
});
|
|
128
|
-
|
|
128
|
+
require_vi_bdSIJ99Y.it("should overwrite existing values", async () => {
|
|
129
129
|
const key = getTestKey("overwrite");
|
|
130
130
|
await cache.set(key, "initial");
|
|
131
131
|
await cache.set(key, "updated");
|
|
132
132
|
const result = await cache.get(key);
|
|
133
|
-
|
|
133
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBe("updated");
|
|
134
134
|
});
|
|
135
135
|
});
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
require_vi_bdSIJ99Y.describe("delete", () => {
|
|
137
|
+
require_vi_bdSIJ99Y.it("should delete existing key", async () => {
|
|
138
138
|
const key = getTestKey("delete-test");
|
|
139
139
|
await cache.set(key, "value-to-delete");
|
|
140
140
|
await cache.delete(key);
|
|
141
141
|
const result = await cache.get(key);
|
|
142
|
-
|
|
142
|
+
require_vi_bdSIJ99Y.globalExpect(result).toBeUndefined();
|
|
143
143
|
});
|
|
144
|
-
|
|
144
|
+
require_vi_bdSIJ99Y.it("should handle deletion of non-existent key", async () => {
|
|
145
145
|
const key = getTestKey("non-existent-delete");
|
|
146
|
-
await
|
|
146
|
+
await require_vi_bdSIJ99Y.globalExpect(cache.delete(key)).resolves.not.toThrow();
|
|
147
147
|
});
|
|
148
|
-
|
|
148
|
+
require_vi_bdSIJ99Y.it("should only delete specified key", async () => {
|
|
149
149
|
const key1 = getTestKey("delete-key1");
|
|
150
150
|
const key2 = getTestKey("delete-key2");
|
|
151
151
|
await cache.set(key1, "value1");
|
|
152
152
|
await cache.set(key2, "value2");
|
|
153
153
|
await cache.delete(key1);
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get(key1)).toBeUndefined();
|
|
155
|
+
require_vi_bdSIJ99Y.globalExpect(await cache.get(key2)).toBe("value2");
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
require_vi_bdSIJ99Y.describe("integration scenarios", () => {
|
|
159
|
+
require_vi_bdSIJ99Y.it("should handle round-trip operations", async () => {
|
|
160
160
|
const key = getTestKey("user-session");
|
|
161
161
|
const testData = {
|
|
162
162
|
user: {
|
|
@@ -168,9 +168,9 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
168
168
|
};
|
|
169
169
|
await cache.set(key, testData);
|
|
170
170
|
const result = await cache.get(key);
|
|
171
|
-
|
|
171
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(testData);
|
|
172
172
|
});
|
|
173
|
-
|
|
173
|
+
require_vi_bdSIJ99Y.it("should handle complex nested objects", async () => {
|
|
174
174
|
const key = getTestKey("complex");
|
|
175
175
|
const complexObject = { level1: { level2: { level3: {
|
|
176
176
|
data: "deep nested value",
|
|
@@ -178,9 +178,9 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
178
178
|
} } } };
|
|
179
179
|
await cache.set(key, complexObject);
|
|
180
180
|
const result = await cache.get(key);
|
|
181
|
-
|
|
181
|
+
require_vi_bdSIJ99Y.globalExpect(result).toEqual(complexObject);
|
|
182
182
|
});
|
|
183
|
-
|
|
183
|
+
require_vi_bdSIJ99Y.it("should handle concurrent operations", async () => {
|
|
184
184
|
const keys = [
|
|
185
185
|
"concurrent1",
|
|
186
186
|
"concurrent2",
|
|
@@ -193,7 +193,7 @@ require_vi_DgezovHB.describe("UpstashCache", () => {
|
|
|
193
193
|
];
|
|
194
194
|
await Promise.all(keys.map((key, i) => cache.set(key, values[i])));
|
|
195
195
|
const results = await Promise.all(keys.map((key) => cache.get(key)));
|
|
196
|
-
|
|
196
|
+
require_vi_bdSIJ99Y.globalExpect(results).toEqual(values);
|
|
197
197
|
});
|
|
198
198
|
});
|
|
199
199
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|