@b9g/cache-redis 0.1.3 → 0.1.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.
Files changed (3) hide show
  1. package/package.json +7 -10
  2. package/src/index.js +31 -13
  3. package/src/index.cjs +0 -18814
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@b9g/cache-redis",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Redis cache adapter for Shovel cache system",
5
5
  "keywords": [
6
6
  "cache",
@@ -17,13 +17,14 @@
17
17
  "directory": "packages/cache-redis"
18
18
  },
19
19
  "dependencies": {
20
+ "@logtape/logtape": "^1.2.0",
20
21
  "redis": "^4.6.10"
21
22
  },
22
23
  "devDependencies": {
23
- "@b9g/libuild": "^0.1.11"
24
+ "@b9g/libuild": "^0.1.18"
24
25
  },
25
26
  "peerDependencies": {
26
- "@b9g/cache": "^0.1.4"
27
+ "@b9g/cache": "^0.1.5"
27
28
  },
28
29
  "type": "module",
29
30
  "types": "src/index.d.ts",
@@ -31,23 +32,19 @@
31
32
  "README.md",
32
33
  "src/"
33
34
  ],
34
- "main": "src/index.cjs",
35
35
  "module": "src/index.js",
36
36
  "exports": {
37
37
  ".": {
38
38
  "types": "./src/index.d.ts",
39
- "import": "./src/index.js",
40
- "require": "./src/index.cjs"
39
+ "import": "./src/index.js"
41
40
  },
42
41
  "./index": {
43
42
  "types": "./src/index.d.ts",
44
- "import": "./src/index.js",
45
- "require": "./src/index.cjs"
43
+ "import": "./src/index.js"
46
44
  },
47
45
  "./index.js": {
48
46
  "types": "./src/index.d.ts",
49
- "import": "./src/index.js",
50
- "require": "./src/index.cjs"
47
+ "import": "./src/index.js"
51
48
  },
52
49
  "./package.json": "./package.json"
53
50
  }
package/src/index.js CHANGED
@@ -3,7 +3,22 @@
3
3
  import { Cache, generateCacheKey } from "@b9g/cache";
4
4
  import { createClient } from "redis";
5
5
  import { getLogger } from "@logtape/logtape";
6
- var logger = getLogger(["cache-redis"]);
6
+ var logger = getLogger(["platform"]);
7
+ function uint8ArrayToBase64(bytes) {
8
+ let binary = "";
9
+ for (let i = 0; i < bytes.length; i++) {
10
+ binary += String.fromCharCode(bytes[i]);
11
+ }
12
+ return btoa(binary);
13
+ }
14
+ function base64ToUint8Array(base64) {
15
+ const binary = atob(base64);
16
+ const bytes = new Uint8Array(binary.length);
17
+ for (let i = 0; i < binary.length; i++) {
18
+ bytes[i] = binary.charCodeAt(i);
19
+ }
20
+ return bytes;
21
+ }
7
22
  var RedisCache = class extends Cache {
8
23
  #client;
9
24
  #prefix;
@@ -18,7 +33,7 @@ var RedisCache = class extends Cache {
18
33
  this.#maxEntrySize = options.maxEntrySize || 10 * 1024 * 1024;
19
34
  this.#connected = false;
20
35
  this.#client.on("error", (err) => {
21
- logger.error("Redis error", { error: err });
36
+ logger.error("Redis error: {error}", { error: err });
22
37
  });
23
38
  this.#client.on("connect", () => {
24
39
  logger.info("Connected to Redis", { cache: name });
@@ -63,7 +78,7 @@ var RedisCache = class extends Cache {
63
78
  status: response.status,
64
79
  statusText: response.statusText,
65
80
  headers,
66
- body: btoa(String.fromCharCode(...new Uint8Array(body))),
81
+ body: uint8ArrayToBase64(new Uint8Array(body)),
67
82
  cachedAt: Date.now(),
68
83
  TTL: this.#defaultTTL
69
84
  };
@@ -72,7 +87,7 @@ var RedisCache = class extends Cache {
72
87
  * Deserialize cache entry to Response
73
88
  */
74
89
  #deserializeResponse(entry) {
75
- const body = Uint8Array.from(atob(entry.body), (c) => c.charCodeAt(0));
90
+ const body = base64ToUint8Array(entry.body);
76
91
  return new Response(body, {
77
92
  status: entry.status,
78
93
  statusText: entry.statusText,
@@ -100,7 +115,7 @@ var RedisCache = class extends Cache {
100
115
  }
101
116
  return this.#deserializeResponse(entry);
102
117
  } catch (error) {
103
- logger.error("Failed to match", { error });
118
+ logger.error("Failed to match: {error}", { error });
104
119
  return void 0;
105
120
  }
106
121
  }
@@ -119,7 +134,7 @@ var RedisCache = class extends Cache {
119
134
  await this.#client.set(key, serialized);
120
135
  }
121
136
  } catch (error) {
122
- logger.error("Failed to put", { error });
137
+ logger.error("Failed to put: {error}", { error });
123
138
  throw error;
124
139
  }
125
140
  }
@@ -133,7 +148,7 @@ var RedisCache = class extends Cache {
133
148
  const result = await this.#client.del(key);
134
149
  return result > 0;
135
150
  } catch (error) {
136
- logger.error("Failed to delete", { error });
151
+ logger.error("Failed to delete: {error}", { error });
137
152
  return false;
138
153
  }
139
154
  }
@@ -164,12 +179,14 @@ var RedisCache = class extends Cache {
164
179
  if (method && url) {
165
180
  requests.push(new Request(url, { method }));
166
181
  }
167
- } catch {
182
+ } catch (err) {
183
+ if (!(err instanceof TypeError))
184
+ throw err;
168
185
  }
169
186
  }
170
187
  return requests;
171
188
  } catch (error) {
172
- logger.error("Failed to get keys", { error });
189
+ logger.error("Failed to get keys: {error}", { error });
173
190
  return [];
174
191
  }
175
192
  }
@@ -192,7 +209,8 @@ var RedisCache = class extends Cache {
192
209
  if (value) {
193
210
  totalSize += new TextEncoder().encode(value).length;
194
211
  }
195
- } catch {
212
+ } catch (err) {
213
+ logger.debug("Error reading key {key}: {error}", { key, error: err });
196
214
  }
197
215
  }
198
216
  return {
@@ -204,7 +222,7 @@ var RedisCache = class extends Cache {
204
222
  maxEntrySize: this.#maxEntrySize
205
223
  };
206
224
  } catch (error) {
207
- logger.error("Failed to get stats", { error });
225
+ logger.error("Failed to get stats: {error}", { error });
208
226
  return {
209
227
  connected: false,
210
228
  keyCount: 0,
@@ -225,11 +243,11 @@ var RedisCache = class extends Cache {
225
243
  await this.#client.quit();
226
244
  logger.info("Redis connection closed", { prefix: this.#prefix });
227
245
  } catch (error) {
228
- logger.error("Error closing Redis connection", { error });
246
+ logger.error("Error closing Redis connection: {error}", { error });
229
247
  try {
230
248
  await this.#client.disconnect();
231
249
  } catch (disconnectError) {
232
- logger.error("Error forcing Redis disconnect", {
250
+ logger.error("Error forcing Redis disconnect: {error}", {
233
251
  error: disconnectError
234
252
  });
235
253
  }