@geekmidas/cache 0.0.7 → 0.2.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.
- package/dist/{chunk-DWy1uDak.cjs → chunk-CUT6urMc.cjs} +0 -9
- package/dist/expo.cjs +4 -3
- package/dist/expo.cjs.map +1 -0
- package/dist/expo.d.cts +8 -5
- package/dist/expo.d.cts.map +1 -0
- package/dist/expo.d.mts +8 -5
- package/dist/expo.d.mts.map +1 -0
- package/dist/expo.mjs +3 -2
- package/dist/expo.mjs.map +1 -0
- package/dist/{index-B6eF5Yxi.d.cts → index-BSYYdwRm.d.cts} +8 -5
- package/dist/index-BSYYdwRm.d.cts.map +1 -0
- package/dist/{index-Bv61mxVT.d.mts → index-Dx96gr-9.d.mts} +8 -5
- package/dist/index-Dx96gr-9.d.mts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/memory.cjs +35 -3
- package/dist/memory.cjs.map +1 -0
- package/dist/memory.d.cts +8 -5
- package/dist/memory.d.cts.map +1 -0
- package/dist/memory.d.mts +8 -5
- package/dist/memory.d.mts.map +1 -0
- package/dist/memory.mjs +34 -3
- package/dist/memory.mjs.map +1 -0
- package/dist/{src-DVpoP03o.mjs → src-CrE4Nl5T.mjs} +2 -1
- package/dist/src-CrE4Nl5T.mjs.map +1 -0
- package/dist/{src-C7d6HaTp.cjs → src-zfYb7mdS.cjs} +3 -2
- package/dist/src-zfYb7mdS.cjs.map +1 -0
- package/dist/upstash.cjs +32 -2
- package/dist/upstash.cjs.map +1 -0
- package/dist/upstash.d.cts +8 -5
- package/dist/upstash.d.cts.map +1 -0
- package/dist/upstash.d.mts +8 -5
- package/dist/upstash.d.mts.map +1 -0
- package/dist/upstash.mjs +31 -2
- package/dist/upstash.mjs.map +1 -0
- package/package.json +6 -2
- package/src/__benchmarks__/memory.bench.ts +51 -0
- package/src/__tests__/cache.spec.ts +138 -105
- package/src/__tests__/integration.spec.ts +277 -268
- package/src/__tests__/memory.spec.ts +129 -129
- package/src/__tests__/upstash.spec.ts +209 -180
- package/src/expo.ts +45 -46
- package/src/index.ts +37 -36
- package/src/memory.ts +28 -27
- package/src/upstash.ts +28 -28
- package/tsconfig.json +9 -0
- package/tsdown.config.ts +1 -1
- package/dist/__tests__/cache.spec.cjs +0 -77
- package/dist/__tests__/cache.spec.d.cts +0 -1
- package/dist/__tests__/cache.spec.d.mts +0 -1
- package/dist/__tests__/cache.spec.mjs +0 -77
- package/dist/__tests__/integration.spec.cjs +0 -235
- package/dist/__tests__/integration.spec.d.cts +0 -1
- package/dist/__tests__/integration.spec.d.mts +0 -1
- package/dist/__tests__/integration.spec.mjs +0 -235
- package/dist/__tests__/memory.spec.cjs +0 -126
- package/dist/__tests__/memory.spec.d.cts +0 -1
- package/dist/__tests__/memory.spec.d.mts +0 -1
- package/dist/__tests__/memory.spec.mjs +0 -126
- package/dist/__tests__/upstash.spec.cjs +0 -201
- package/dist/__tests__/upstash.spec.d.cts +0 -1
- package/dist/__tests__/upstash.spec.d.mts +0 -1
- package/dist/__tests__/upstash.spec.mjs +0 -201
- package/dist/magic-string.es-CBih0MJw.mjs +0 -1014
- package/dist/magic-string.es-KiPEzMtt.cjs +0 -1015
- package/dist/memory-Csy6J-Ak.cjs +0 -39
- package/dist/memory-QDTnSEX5.mjs +0 -33
- package/dist/upstash-CXy_duOa.mjs +0 -31
- package/dist/upstash-u8Hs4sZG.cjs +0 -37
- package/dist/vi.bdSIJ99Y-B-qkABPq.cjs +0 -14955
- package/dist/vi.bdSIJ99Y-CB5havZF.mjs +0 -14951
|
@@ -2,133 +2,133 @@ import { beforeEach, describe, expect, it } from 'vitest';
|
|
|
2
2
|
import { InMemoryCache } from '../memory';
|
|
3
3
|
|
|
4
4
|
describe('InMemoryCache', () => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
5
|
+
let cache: InMemoryCache;
|
|
6
|
+
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
cache = new InMemoryCache();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
describe('get', () => {
|
|
12
|
+
it('should return undefined for non-existent key', async () => {
|
|
13
|
+
const result = await cache.get('non-existent');
|
|
14
|
+
expect(result).toBeUndefined();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('should return value for existing key', async () => {
|
|
18
|
+
await cache.set('test-key', 'test-value');
|
|
19
|
+
const result = await cache.get('test-key');
|
|
20
|
+
expect(result).toBe('test-value');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('should handle different data types', async () => {
|
|
24
|
+
const objectValue = { id: 1, name: 'test' };
|
|
25
|
+
const arrayValue = [1, 2, 3];
|
|
26
|
+
const numberValue = 42;
|
|
27
|
+
const booleanValue = true;
|
|
28
|
+
|
|
29
|
+
await cache.set('object', objectValue);
|
|
30
|
+
await cache.set('array', arrayValue);
|
|
31
|
+
await cache.set('number', numberValue);
|
|
32
|
+
await cache.set('boolean', booleanValue);
|
|
33
|
+
|
|
34
|
+
expect(await cache.get('object')).toEqual(objectValue);
|
|
35
|
+
expect(await cache.get('array')).toEqual(arrayValue);
|
|
36
|
+
expect(await cache.get('number')).toBe(numberValue);
|
|
37
|
+
expect(await cache.get('boolean')).toBe(booleanValue);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe('set', () => {
|
|
42
|
+
it('should store string value', async () => {
|
|
43
|
+
await cache.set('string-key', 'string-value');
|
|
44
|
+
const result = await cache.get('string-key');
|
|
45
|
+
expect(result).toBe('string-value');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('should store object value', async () => {
|
|
49
|
+
const value = { id: 1, data: 'test' };
|
|
50
|
+
await cache.set('object-key', value);
|
|
51
|
+
const result = await cache.get('object-key');
|
|
52
|
+
expect(result).toEqual(value);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('should overwrite existing value', async () => {
|
|
56
|
+
await cache.set('key', 'initial-value');
|
|
57
|
+
await cache.set('key', 'updated-value');
|
|
58
|
+
const result = await cache.get('key');
|
|
59
|
+
expect(result).toBe('updated-value');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('should handle null values', async () => {
|
|
63
|
+
await cache.set('null-key', null);
|
|
64
|
+
const result = await cache.get('null-key');
|
|
65
|
+
expect(result).toBeNull();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
describe('delete', () => {
|
|
70
|
+
it('should remove existing key', async () => {
|
|
71
|
+
await cache.set('to-delete', 'value');
|
|
72
|
+
await cache.delete('to-delete');
|
|
73
|
+
const result = await cache.get('to-delete');
|
|
74
|
+
expect(result).toBeUndefined();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('should not throw error for non-existent key', async () => {
|
|
78
|
+
await expect(cache.delete('non-existent')).resolves.not.toThrow();
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('should only delete specified key', async () => {
|
|
82
|
+
await cache.set('key1', 'value1');
|
|
83
|
+
await cache.set('key2', 'value2');
|
|
84
|
+
await cache.delete('key1');
|
|
85
|
+
|
|
86
|
+
expect(await cache.get('key1')).toBeUndefined();
|
|
87
|
+
expect(await cache.get('key2')).toBe('value2');
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
describe('multiple operations', () => {
|
|
92
|
+
it('should handle multiple keys independently', async () => {
|
|
93
|
+
await cache.set('key1', 'value1');
|
|
94
|
+
await cache.set('key2', 'value2');
|
|
95
|
+
await cache.set('key3', 'value3');
|
|
96
|
+
|
|
97
|
+
expect(await cache.get('key1')).toBe('value1');
|
|
98
|
+
expect(await cache.get('key2')).toBe('value2');
|
|
99
|
+
expect(await cache.get('key3')).toBe('value3');
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('should maintain data integrity across operations', async () => {
|
|
103
|
+
const data = { count: 0 };
|
|
104
|
+
await cache.set('counter', data);
|
|
105
|
+
|
|
106
|
+
const retrieved = await cache.get('counter');
|
|
107
|
+
retrieved.count = 5;
|
|
108
|
+
|
|
109
|
+
const original = await cache.get('counter');
|
|
110
|
+
expect(original.count).toBe(5); // Reference equality in memory
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
describe('edge cases', () => {
|
|
115
|
+
it('should handle empty string as key', async () => {
|
|
116
|
+
await cache.set('', 'empty-key-value');
|
|
117
|
+
const result = await cache.get('');
|
|
118
|
+
expect(result).toBe('empty-key-value');
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('should handle special characters in keys', async () => {
|
|
122
|
+
const specialKey = 'key!@#$%^&*()_+{}|:"<>?[]\\;\',./?`~';
|
|
123
|
+
await cache.set(specialKey, 'special-value');
|
|
124
|
+
const result = await cache.get(specialKey);
|
|
125
|
+
expect(result).toBe('special-value');
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('should handle undefined values', async () => {
|
|
129
|
+
await cache.set('undefined-key', undefined);
|
|
130
|
+
const result = await cache.get('undefined-key');
|
|
131
|
+
expect(result).toBeUndefined();
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
134
|
});
|