Skip to content

Commit 1197bec

Browse files
authored
Merge pull request #73 from Cimpress-MCP/mh/ConnectToRedisInStorageCreate
Release 7.0.4
2 parents 09c9351 + cd99b92 commit 1197bec

File tree

3 files changed

+249
-123
lines changed

3 files changed

+249
-123
lines changed

package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lambda-essentials-ts",
3-
"version": "7.0.3",
3+
"version": "7.0.4",
44
"description": "A selection of the finest modules supporting authorization, API routing, error handling, logging and sending HTTP requests.",
55
"main": "lib/index.js",
66
"private": false,
@@ -28,12 +28,12 @@
2828
"dependencies": {
2929
"@aws-sdk/client-kms": "^3.930.0",
3030
"@aws-sdk/client-secrets-manager": "^3.930.0",
31-
"@types/node": "^24.10.1",
31+
"@types/node": "^25.0.3",
3232
"axios": "1.13.2",
33-
"axios-cache-interceptor": "^1.8.3",
33+
"axios-cache-interceptor": "1.11.2",
3434
"fast-safe-stringify": "~2.1.1",
3535
"is-error": "~2.2.2",
36-
"jsonwebtoken": "9.0.2",
36+
"jsonwebtoken": "9.0.3",
3737
"md5": "~2.3.0",
3838
"openapi-factory": "5.4.60",
3939
"retry-axios": "~3.2.1",
@@ -42,17 +42,17 @@
4242
"devDependencies": {
4343
"@types/jest": "^29.5.14",
4444
"@types/newrelic": "^9.14.8",
45-
"redis": "^5.9.0",
4645
"axios-mock-adapter": "^2.1.0",
4746
"eslint": "^8.57.1",
48-
"eslint-config-cimpress-atsquad": "^2.2.0-beta",
47+
"eslint-config-cimpress-atsquad": "^2.2.3",
4948
"husky": "^9.1.7",
5049
"jest": "^29.7.0",
5150
"lint-staged": "^15.5.2",
5251
"prettier": "^2.8.8",
53-
"ts-jest": "^29.4.5",
52+
"ts-jest": "^29.4.6",
5453
"ts-node": "^10.9.2",
55-
"typescript": "^5.9.3"
54+
"typescript": "^5.9.3",
55+
"redis": "^5.10.0"
5656
},
5757
"eslintConfig": {
5858
"extends": "cimpress-atsquad"

src/httpClient/redisStorage.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,32 @@
11
import { buildStorage, canStale } from 'axios-cache-interceptor';
22
import type { StorageValue } from 'axios-cache-interceptor';
3-
// eslint-disable-next-line import/no-extraneous-dependencies
4-
import { createClient } from 'redis';
53

64
const KEY_PREFIX = 'axios-cache-';
75

86
const MIN_TTL = 60000;
97

10-
export default function createRedisStorage(client: ReturnType<typeof createClient>) {
8+
export default function createRedisStorage(redisEndpoint: string) {
9+
// eslint-disable-next-line import/no-extraneous-dependencies
10+
const redis = require('redis');
11+
12+
const client = redis.createClient({ url: redisEndpoint });
13+
1114
// source https://axios-cache-interceptor.js.org/guide/storages#node-redis-storage
1215
return buildStorage({
1316
async find(key) {
17+
if (!client.isReady) {
18+
await client.connect();
19+
}
1420
const result = await client.get(`${KEY_PREFIX}${key}`);
1521
return result ? (JSON.parse(result) as StorageValue) : undefined;
1622
},
1723

1824
// eslint-disable-next-line complexity
1925
async set(key, value, req) {
26+
if (!client.isReady) {
27+
await client.connect();
28+
}
29+
2030
await client.set(`${KEY_PREFIX}${key}`, JSON.stringify(value), {
2131
PXAT:
2232
// We don't want to keep indefinitely values in the storage if
@@ -35,6 +45,9 @@ export default function createRedisStorage(client: ReturnType<typeof createClien
3545
},
3646

3747
async remove(key) {
48+
if (!client.isReady) {
49+
await client.connect();
50+
}
3851
await client.del(`${KEY_PREFIX}${key}`);
3952
},
4053
});

0 commit comments

Comments
 (0)