@geekmidas/cache 0.0.4 → 0.0.6

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 (45) hide show
  1. package/dist/__tests__/cache.spec.cjs +32 -32
  2. package/dist/__tests__/cache.spec.mjs +19 -18
  3. package/dist/__tests__/integration.spec.cjs +46 -46
  4. package/dist/__tests__/integration.spec.mjs +27 -26
  5. package/dist/__tests__/memory.spec.cjs +46 -46
  6. package/dist/__tests__/memory.spec.mjs +24 -23
  7. package/dist/__tests__/upstash.spec.cjs +50 -51
  8. package/dist/__tests__/upstash.spec.mjs +23 -23
  9. package/dist/{chunk-CUT6urMc.cjs → chunk-DWy1uDak.cjs} +9 -0
  10. package/dist/expo.cjs +36 -0
  11. package/dist/expo.d.cts +12 -0
  12. package/dist/expo.d.mts +12 -0
  13. package/dist/expo.mjs +35 -0
  14. package/dist/{index-BPnJ3lrS.d.mts → index-B6eF5Yxi.d.cts} +9 -1
  15. package/dist/{index-q3xYn8_0.d.cts → index-Bv61mxVT.d.mts} +9 -1
  16. package/dist/index.cjs +3 -0
  17. package/dist/index.d.cts +2 -2
  18. package/dist/index.d.mts +2 -2
  19. package/dist/index.mjs +3 -0
  20. package/dist/magic-string.es-CBih0MJw.mjs +1014 -0
  21. package/dist/magic-string.es-KiPEzMtt.cjs +1015 -0
  22. package/dist/memory-Csy6J-Ak.cjs +39 -0
  23. package/dist/memory-QDTnSEX5.mjs +33 -0
  24. package/dist/memory.cjs +2 -1
  25. package/dist/memory.d.cts +4 -2
  26. package/dist/memory.d.mts +4 -2
  27. package/dist/memory.mjs +2 -1
  28. package/dist/src-C7d6HaTp.cjs +19 -0
  29. package/dist/src-DVpoP03o.mjs +13 -0
  30. package/dist/{upstash-CTY-M8vR.mjs → upstash-CXy_duOa.mjs} +5 -0
  31. package/dist/{upstash-0RolGx7m.cjs → upstash-u8Hs4sZG.cjs} +6 -1
  32. package/dist/upstash.cjs +1 -1
  33. package/dist/upstash.d.cts +2 -1
  34. package/dist/upstash.d.mts +2 -1
  35. package/dist/upstash.mjs +1 -1
  36. package/dist/vi.bdSIJ99Y-B-qkABPq.cjs +14955 -0
  37. package/dist/vi.bdSIJ99Y-CB5havZF.mjs +14951 -0
  38. package/package.json +11 -3
  39. package/src/expo.ts +51 -0
  40. package/src/index.ts +25 -0
  41. package/src/memory.ts +22 -2
  42. package/src/upstash.ts +10 -0
  43. package/tsdown.config.ts +5 -0
  44. package/dist/memory-NQi0XmZ2.mjs +0 -16
  45. package/dist/memory-n6Iosq6J.cjs +0 -22
@@ -1,5 +1,5 @@
1
- import { UpstashCache } from "../upstash-CTY-M8vR.mjs";
2
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
1
+ import { afterEach, beforeEach, describe, globalExpect, it } from "../vi.bdSIJ99Y-CB5havZF.mjs";
2
+ import { UpstashCache } from "../upstash-CXy_duOa.mjs";
3
3
 
4
4
  //#region src/__tests__/upstash.spec.ts
5
5
  describe("UpstashCache", () => {
@@ -24,7 +24,7 @@ describe("UpstashCache", () => {
24
24
  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
- expect(result).toBeUndefined();
27
+ globalExpect(result).toBeUndefined();
28
28
  });
29
29
  it("should parse and return JSON value", async () => {
30
30
  const key = getTestKey("object");
@@ -34,28 +34,28 @@ describe("UpstashCache", () => {
34
34
  };
35
35
  await cache.set(key, testValue);
36
36
  const result = await cache.get(key);
37
- expect(result).toEqual(testValue);
37
+ globalExpect(result).toEqual(testValue);
38
38
  });
39
39
  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
- expect(result).toBe(testValue);
44
+ globalExpect(result).toBe(testValue);
45
45
  });
46
46
  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
- expect(result).toBe(testValue);
51
+ globalExpect(result).toBe(testValue);
52
52
  });
53
53
  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
- expect(result).toBe(testValue);
58
+ globalExpect(result).toBe(testValue);
59
59
  });
60
60
  it("should handle array values", async () => {
61
61
  const key = getTestKey("array");
@@ -67,13 +67,13 @@ describe("UpstashCache", () => {
67
67
  ];
68
68
  await cache.set(key, testArray);
69
69
  const result = await cache.get(key);
70
- expect(result).toEqual(testArray);
70
+ globalExpect(result).toEqual(testArray);
71
71
  });
72
72
  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
- expect(result).toBeUndefined();
76
+ globalExpect(result).toBeUndefined();
77
77
  });
78
78
  });
79
79
  describe("set", () => {
@@ -85,28 +85,28 @@ describe("UpstashCache", () => {
85
85
  };
86
86
  await cache.set(key, testValue);
87
87
  const result = await cache.get(key);
88
- expect(result).toEqual(testValue);
88
+ globalExpect(result).toEqual(testValue);
89
89
  });
90
90
  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
- expect(result).toBe(testValue);
95
+ globalExpect(result).toBe(testValue);
96
96
  });
97
97
  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
- expect(result).toBe(testValue);
102
+ globalExpect(result).toBe(testValue);
103
103
  });
104
104
  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
- expect(result).toBe(testValue);
109
+ globalExpect(result).toBe(testValue);
110
110
  });
111
111
  it("should store and retrieve array values", async () => {
112
112
  const key = getTestKey("set-array");
@@ -117,20 +117,20 @@ describe("UpstashCache", () => {
117
117
  ];
118
118
  await cache.set(key, testArray);
119
119
  const result = await cache.get(key);
120
- expect(result).toEqual(testArray);
120
+ globalExpect(result).toEqual(testArray);
121
121
  });
122
122
  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
- expect(result).toBeUndefined();
126
+ globalExpect(result).toBeUndefined();
127
127
  });
128
128
  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
- expect(result).toBe("updated");
133
+ globalExpect(result).toBe("updated");
134
134
  });
135
135
  });
136
136
  describe("delete", () => {
@@ -139,11 +139,11 @@ describe("UpstashCache", () => {
139
139
  await cache.set(key, "value-to-delete");
140
140
  await cache.delete(key);
141
141
  const result = await cache.get(key);
142
- expect(result).toBeUndefined();
142
+ globalExpect(result).toBeUndefined();
143
143
  });
144
144
  it("should handle deletion of non-existent key", async () => {
145
145
  const key = getTestKey("non-existent-delete");
146
- await expect(cache.delete(key)).resolves.not.toThrow();
146
+ await globalExpect(cache.delete(key)).resolves.not.toThrow();
147
147
  });
148
148
  it("should only delete specified key", async () => {
149
149
  const key1 = getTestKey("delete-key1");
@@ -151,8 +151,8 @@ describe("UpstashCache", () => {
151
151
  await cache.set(key1, "value1");
152
152
  await cache.set(key2, "value2");
153
153
  await cache.delete(key1);
154
- expect(await cache.get(key1)).toBeUndefined();
155
- expect(await cache.get(key2)).toBe("value2");
154
+ globalExpect(await cache.get(key1)).toBeUndefined();
155
+ globalExpect(await cache.get(key2)).toBe("value2");
156
156
  });
157
157
  });
158
158
  describe("integration scenarios", () => {
@@ -168,7 +168,7 @@ describe("UpstashCache", () => {
168
168
  };
169
169
  await cache.set(key, testData);
170
170
  const result = await cache.get(key);
171
- expect(result).toEqual(testData);
171
+ globalExpect(result).toEqual(testData);
172
172
  });
173
173
  it("should handle complex nested objects", async () => {
174
174
  const key = getTestKey("complex");
@@ -178,7 +178,7 @@ describe("UpstashCache", () => {
178
178
  } } } };
179
179
  await cache.set(key, complexObject);
180
180
  const result = await cache.get(key);
181
- expect(result).toEqual(complexObject);
181
+ globalExpect(result).toEqual(complexObject);
182
182
  });
183
183
  it("should handle concurrent operations", async () => {
184
184
  const keys = [
@@ -193,7 +193,7 @@ 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
- expect(results).toEqual(values);
196
+ globalExpect(results).toEqual(values);
197
197
  });
198
198
  });
199
199
  });
@@ -5,6 +5,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __commonJS = (cb, mod) => function() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
8
11
  var __copyProps = (to, from, except, desc) => {
9
12
  if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
13
  key = keys[i];
@@ -22,6 +25,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
25
 
23
26
  //#endregion
24
27
 
28
+ Object.defineProperty(exports, '__commonJS', {
29
+ enumerable: true,
30
+ get: function () {
31
+ return __commonJS;
32
+ }
33
+ });
25
34
  Object.defineProperty(exports, '__toESM', {
26
35
  enumerable: true,
27
36
  get: function () {
package/dist/expo.cjs ADDED
@@ -0,0 +1,36 @@
1
+ const require_chunk = require('./chunk-DWy1uDak.cjs');
2
+ const require_src = require('./src-C7d6HaTp.cjs');
3
+ const date_fns = require_chunk.__toESM(require("date-fns"));
4
+ const expo_secure_store = require_chunk.__toESM(require("expo-secure-store"));
5
+
6
+ //#region src/expo.ts
7
+ var ExpoSecureCache = class ExpoSecureCache {
8
+ static getExpiryKey(key) {
9
+ return `${key}:expiresAt`;
10
+ }
11
+ async ttl(key) {
12
+ const result = await expo_secure_store.getItemAsync(ExpoSecureCache.getExpiryKey(key));
13
+ if (!result) return 0;
14
+ const secondsLeft = require_src.getExpirationInSeconds(result);
15
+ return Math.max(secondsLeft, 0);
16
+ }
17
+ async get(key) {
18
+ const result = await expo_secure_store.getItemAsync(key);
19
+ if (!result) return void 0;
20
+ const expiresAt = await this.ttl(key);
21
+ if (expiresAt === 0) return void 0;
22
+ return JSON.parse(result);
23
+ }
24
+ async set(key, value, ttl = 600) {
25
+ const expiresAt = (0, date_fns.addSeconds)(/* @__PURE__ */ new Date(), ttl).toISOString();
26
+ await expo_secure_store.setItemAsync(key, JSON.stringify(value));
27
+ await expo_secure_store.setItemAsync(ExpoSecureCache.getExpiryKey(key), expiresAt);
28
+ }
29
+ async delete(key) {
30
+ await expo_secure_store.deleteItemAsync(key);
31
+ await expo_secure_store.deleteItemAsync(ExpoSecureCache.getExpiryKey(key));
32
+ }
33
+ };
34
+
35
+ //#endregion
36
+ exports.ExpoSecureCache = ExpoSecureCache;
@@ -0,0 +1,12 @@
1
+ import { Cache } from "./index-B6eF5Yxi.cjs";
2
+
3
+ //#region src/expo.d.ts
4
+ declare class ExpoSecureCache<T> implements Cache<T> {
5
+ static getExpiryKey(key: string): string;
6
+ ttl(key: string): Promise<number>;
7
+ get(key: string): Promise<T | undefined>;
8
+ set(key: string, value: T, ttl?: number): Promise<void>;
9
+ delete(key: string): Promise<void>;
10
+ }
11
+ //#endregion
12
+ export { ExpoSecureCache };
@@ -0,0 +1,12 @@
1
+ import { Cache } from "./index-Bv61mxVT.mjs";
2
+
3
+ //#region src/expo.d.ts
4
+ declare class ExpoSecureCache<T> implements Cache<T> {
5
+ static getExpiryKey(key: string): string;
6
+ ttl(key: string): Promise<number>;
7
+ get(key: string): Promise<T | undefined>;
8
+ set(key: string, value: T, ttl?: number): Promise<void>;
9
+ delete(key: string): Promise<void>;
10
+ }
11
+ //#endregion
12
+ export { ExpoSecureCache };
package/dist/expo.mjs ADDED
@@ -0,0 +1,35 @@
1
+ import { getExpirationInSeconds } from "./src-DVpoP03o.mjs";
2
+ import { addSeconds } from "date-fns";
3
+ import * as SecureStore from "expo-secure-store";
4
+
5
+ //#region src/expo.ts
6
+ var ExpoSecureCache = class ExpoSecureCache {
7
+ static getExpiryKey(key) {
8
+ return `${key}:expiresAt`;
9
+ }
10
+ async ttl(key) {
11
+ const result = await SecureStore.getItemAsync(ExpoSecureCache.getExpiryKey(key));
12
+ if (!result) return 0;
13
+ const secondsLeft = getExpirationInSeconds(result);
14
+ return Math.max(secondsLeft, 0);
15
+ }
16
+ async get(key) {
17
+ const result = await SecureStore.getItemAsync(key);
18
+ if (!result) return void 0;
19
+ const expiresAt = await this.ttl(key);
20
+ if (expiresAt === 0) return void 0;
21
+ return JSON.parse(result);
22
+ }
23
+ async set(key, value, ttl = 600) {
24
+ const expiresAt = addSeconds(/* @__PURE__ */ new Date(), ttl).toISOString();
25
+ await SecureStore.setItemAsync(key, JSON.stringify(value));
26
+ await SecureStore.setItemAsync(ExpoSecureCache.getExpiryKey(key), expiresAt);
27
+ }
28
+ async delete(key) {
29
+ await SecureStore.deleteItemAsync(key);
30
+ await SecureStore.deleteItemAsync(ExpoSecureCache.getExpiryKey(key));
31
+ }
32
+ };
33
+
34
+ //#endregion
35
+ export { ExpoSecureCache };
@@ -1,4 +1,5 @@
1
1
  //#region src/index.d.ts
2
+ declare const getExpirationInSeconds: (expiresAt: string | number | Date | undefined | null) => number;
2
3
  interface Cache<T> {
3
4
  /**
4
5
  * Retrieves a value from the cache.
@@ -20,6 +21,13 @@ interface Cache<T> {
20
21
  * @param key The key to delete from the cache.
21
22
  */
22
23
  delete(key: string): Promise<void>;
24
+ /**
25
+ * Retrieves the time-to-live (TTL) for a cached value.
26
+ *
27
+ * @param key The key to retrieve the TTL for.
28
+ * @returns The TTL in seconds, or undefined if the key does not exist.
29
+ */
30
+ ttl(key: string): Promise<number>;
23
31
  }
24
32
  //#endregion
25
- export { Cache };
33
+ export { Cache, getExpirationInSeconds };
@@ -1,4 +1,5 @@
1
1
  //#region src/index.d.ts
2
+ declare const getExpirationInSeconds: (expiresAt: string | number | Date | undefined | null) => number;
2
3
  interface Cache<T> {
3
4
  /**
4
5
  * Retrieves a value from the cache.
@@ -20,6 +21,13 @@ interface Cache<T> {
20
21
  * @param key The key to delete from the cache.
21
22
  */
22
23
  delete(key: string): Promise<void>;
24
+ /**
25
+ * Retrieves the time-to-live (TTL) for a cached value.
26
+ *
27
+ * @param key The key to retrieve the TTL for.
28
+ * @returns The TTL in seconds, or undefined if the key does not exist.
29
+ */
30
+ ttl(key: string): Promise<number>;
23
31
  }
24
32
  //#endregion
25
- export { Cache };
33
+ export { Cache, getExpirationInSeconds };
package/dist/index.cjs CHANGED
@@ -0,0 +1,3 @@
1
+ const require_src = require('./src-C7d6HaTp.cjs');
2
+
3
+ exports.getExpirationInSeconds = require_src.getExpirationInSeconds;
package/dist/index.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { Cache } from "./index-q3xYn8_0.cjs";
2
- export { Cache };
1
+ import { Cache, getExpirationInSeconds } from "./index-B6eF5Yxi.cjs";
2
+ export { Cache, getExpirationInSeconds };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { Cache } from "./index-BPnJ3lrS.mjs";
2
- export { Cache };
1
+ import { Cache, getExpirationInSeconds } from "./index-Bv61mxVT.mjs";
2
+ export { Cache, getExpirationInSeconds };
package/dist/index.mjs CHANGED
@@ -0,0 +1,3 @@
1
+ import { getExpirationInSeconds } from "./src-DVpoP03o.mjs";
2
+
3
+ export { getExpirationInSeconds };