From 05432cb2a96abf4c34230f372dcc65676c4b2fca Mon Sep 17 00:00:00 2001 From: Dave Longley Date: Thu, 22 May 2025 18:02:24 -0400 Subject: [PATCH] Use `lru-cache@11`. --- CHANGELOG.md | 5 +++++ lib/config.js | 4 ++-- lib/index.js | 25 +++++++++++++++++++------ package.json | 2 +- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fdb760..c1278bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # bedrock-ssm-mongodb ChangeLog +## 13.1.0 - 2025-05-dd + +### Changed +- Use `lru-cache@11`. + ## 13.0.0 - 2025-03-07 ### Changed diff --git a/lib/config.js b/lib/config.js index 80e0cbc..fd257f5 100644 --- a/lib/config.js +++ b/lib/config.js @@ -5,8 +5,8 @@ import {config} from '@bedrock/core'; const cfg = config['ssm-mongodb'] = {}; cfg.keyRecordCache = { - maxSize: 100, - maxAge: 5000 + max: 100, + ttl: 5000 }; // used to encrypt key secrets that are stored in key records diff --git a/lib/index.js b/lib/index.js index f5de96c..f2639b0 100644 --- a/lib/index.js +++ b/lib/index.js @@ -10,7 +10,7 @@ import * as brPackageManager from '@bedrock/package-manager'; import * as database from '@bedrock/mongodb'; import {getKeyOp, splitKeyId} from './helpers.js'; import assert from 'assert-plus'; -import LRU from 'lru-cache'; +import {LRUCache as LRU} from 'lru-cache'; import {parseTemplate} from 'url-template'; const {util: {BedrockError}} = bedrock; @@ -31,10 +31,23 @@ import './aeskw.js'; bedrock.events.on('bedrock.init', async () => { const cfg = bedrock.config['ssm-mongodb']; - KEY_RECORD_CACHE = new LRU({ - max: cfg.keyRecordCache.maxSize, - maxAge: cfg.keyRecordCache.maxAge - }); + let cacheConfig = cfg.keyRecordCache; + + // coerce `maxSize` w/o `sizeCalculation` to `max` + if(cacheConfig.maxSize !== undefined && + cacheConfig.sizeCalculation === undefined) { + cacheConfig = {...cacheConfig, max: cacheConfig.maxSize}; + delete cacheConfig.maxSize; + } + + // coerce `maxAge` to `ttl` in `cacheConfig` + if(cacheConfig.maxAge !== undefined) { + cacheConfig = {...cacheConfig, ttl: cacheConfig.maxAge}; + delete cacheConfig.maxAge; + } + + KEY_RECORD_CACHE = new LRU(cacheConfig); + return brPackageManager.register({ alias: 'ssm-v1', packageName: '@bedrock/ssm-mongodb', @@ -329,7 +342,7 @@ async function _getKeyRecord({id}) { try { record = await promise; } catch(e) { - KEY_RECORD_CACHE.del(id); + KEY_RECORD_CACHE.delete(id); throw e; } diff --git a/package.json b/package.json index 0930167..47da8dc 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "base58-universal": "^2.0.0", "base64url-universal": "^2.0.0", "jose": "^5.9.6", - "lru-cache": "^6.0.0", + "lru-cache": "^11.1.0", "url-template": "^3.1.1" }, "peerDependencies": {