From caa733fc04f6330678b1e160969fc52e30254d19 Mon Sep 17 00:00:00 2001 From: Jonas Strassel Date: Mon, 3 Oct 2022 19:13:25 +0200 Subject: [PATCH 1/2] feat: elasticsearch storage --- README.md | 1 + .../core/src/storage/storageTestFactory.ts | 6 +- packages/storage-elasticsearch/README.md | 31 ++++ packages/storage-elasticsearch/package.json | 42 +++++ .../src/elastic-storage.test.ts | 80 ++++++++++ packages/storage-elasticsearch/src/index.ts | 54 +++++++ .../storage-elasticsearch/tsconfig-build.json | 8 + packages/storage-elasticsearch/tsconfig.json | 7 + packages/storage-ioredis/package.json | 4 +- packages/storage-memory/package.json | 4 +- packages/storage-node-fs/package.json | 4 +- packages/storage-pg/package.json | 4 +- yarn.lock | 149 +++++++++++++++++- 13 files changed, 380 insertions(+), 14 deletions(-) create mode 100644 packages/storage-elasticsearch/README.md create mode 100644 packages/storage-elasticsearch/package.json create mode 100644 packages/storage-elasticsearch/src/elastic-storage.test.ts create mode 100644 packages/storage-elasticsearch/src/index.ts create mode 100644 packages/storage-elasticsearch/tsconfig-build.json create mode 100644 packages/storage-elasticsearch/tsconfig.json diff --git a/README.md b/README.md index 9f3c61a..123815d 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ _Note: The underlying storage layer must be installed separately._ | [node-fs](https://www.npmjs.com/package/@boredland/node-ts-cache-storage-node-fs)| ```yarn add @boredland/node-ts-cache-storage-node-fs```| | [ioredis](https://www.npmjs.com/package/@boredland/node-ts-cache-storage-ioredis)| ```yarn add @boredland/node-ts-cache-storage-ioredis```| | [postgres](https://www.npmjs.com/package/@boredland/node-ts-cache-storage-pg)| ```yarn add @boredland/node-ts-cache-storage-pg```| +| [elasticsearch](https://www.npmjs.com/package/@boredland/node-ts-cache-storage-elasticsearch)| ```yarn add @boredland/node-ts-cache-storage-elasticsearch```| ## Usage diff --git a/packages/core/src/storage/storageTestFactory.ts b/packages/core/src/storage/storageTestFactory.ts index b5fb20a..e1ceef5 100644 --- a/packages/core/src/storage/storageTestFactory.ts +++ b/packages/core/src/storage/storageTestFactory.ts @@ -26,12 +26,12 @@ export const storageTestFactory = (storage: Storage) => { }); describe("direct usage", () => { - it("should initialize the pg storage correctly", () => { + it("should initialize the storage correctly", () => { expect(cache).not.toBeNull(); expect(cache).not.toBeUndefined(); }); - it("should add and retrieve string values from the pg storage", async () => { + it("should add and retrieve string values from the storage", async () => { await cache.setItem("k1", "test1"); const k1 = await cache.getItem("k1"); expect(k1?.content).toBe("test1"); @@ -41,7 +41,7 @@ export const storageTestFactory = (storage: Storage) => { expect(k2?.content).toBe("test2"); }); - it("should add and retrieve nested values from the pg storage", async () => { + it("should add and retrieve nested values from the storage", async () => { const v1 = { data: { name: "deep1" } }; await cache.setItem("k1", v1); const k1 = await cache.getItem("k1"); diff --git a/packages/storage-elasticsearch/README.md b/packages/storage-elasticsearch/README.md new file mode 100644 index 0000000..6872ff4 --- /dev/null +++ b/packages/storage-elasticsearch/README.md @@ -0,0 +1,31 @@ +# node-ts-cache-storage-elasticsearch + +ElasticSearch storage module for [node-ts-cache](https://www.npmjs.com/package/node-ts-cache). + +This module expects you to bring your own instance of ElasticSearch. + +```bash +yarn add @boredland/node-ts-cache @boredland/node-ts-cache-storage-elasticsearch +``` + +```ts +import { ElasticSearchStorage } from "@boredland/node-ts-cache-storage-elasticsearch" +import { Cache, CacheContainer } from "@boredland/node-ts-cache" +import { Client } from "@elastic/elasticsearch"; + +const client = new Client({ + node: "http://localhost:9200", + Connection: mock.getConnection(), +}); + +const storage = new ElasticSearchStorage(indexName, client); + +const userCache = new CacheContainer(storage) + +class MyService { + @Cache(userCache, { ttl: 60 }) + public async getUsers(): Promise { + return ["Max", "User"] + } +} +``` diff --git a/packages/storage-elasticsearch/package.json b/packages/storage-elasticsearch/package.json new file mode 100644 index 0000000..0c76109 --- /dev/null +++ b/packages/storage-elasticsearch/package.json @@ -0,0 +1,42 @@ +{ + "name": "@boredland/node-ts-cache-storage-elasticsearch", + "description": "ElasticSearch storage module for node-ts-cache", + "version": "5.0.0", + "private": false, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc -p tsconfig-build.json" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/boredland/node-ts-cache.git" + }, + "keywords": [ + "node", + "nodejs", + "cache", + "typescript", + "ts", + "caching", + "cache", + "elastic", + "elasticsearch", + "node-cache", + "ts-cache" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/boredland/node-ts-cache/issues" + }, + "homepage": "https://github.com/boredland/node-ts-cache#readme", + "peerDependencies": { + "@boredland/node-ts-cache": "^6.0.0", + "@elastic/elasticsearch": "^8.4.0" + }, + "devDependencies": { + "@boredland/node-ts-cache": "^6.0.0", + "@elastic/elasticsearch": "^8.4.0", + "@elastic/elasticsearch-mock": "^2.0.0" + } +} diff --git a/packages/storage-elasticsearch/src/elastic-storage.test.ts b/packages/storage-elasticsearch/src/elastic-storage.test.ts new file mode 100644 index 0000000..f69b515 --- /dev/null +++ b/packages/storage-elasticsearch/src/elastic-storage.test.ts @@ -0,0 +1,80 @@ +import { ElasticSearchStorage } from "."; +import { storageTestFactory } from "../../core/src/storage/storageTestFactory"; +import { decoratorTestFactory } from "../../core/src/decorator/decoratorTestFactory"; +import { Client } from "@elastic/elasticsearch"; +import Mock from "@elastic/elasticsearch-mock"; +import type { CachedItem } from "@boredland/node-ts-cache"; + +const mock = new Mock(); +const indexName = "123abcTest"; + +const lastItemFromPath = (path: string) => + decodeURIComponent(path.substring(path.lastIndexOf("/") + 1)); + +let memCache: Record = {}; + +mock.add( + { + method: "GET", + path: `/${indexName}/_doc/:id`, + }, + (params) => { + const key = lastItemFromPath(params.path as string); + const item = memCache[key]; + return { + _index: "my-index-000001", + _id: "0", + _version: 1, + _seq_no: 0, + _primary_term: 1, + found: !!item, + _source: item, + }; + } +); + +mock.add( + { + method: "PUT", + path: `/${indexName}/_doc/:id`, + }, + (params) => { + const key = lastItemFromPath(params.path as string); + memCache[key] = params.body as CachedItem; + return "ok"; + } +); + +mock.add( + { + method: "DELETE", + path: `/${indexName}/_doc/:id`, + }, + async (params) => { + const key = lastItemFromPath(params.path as string); + delete memCache[key]; + return "ok"; + } +); + +mock.add( + { + method: "DELETE", + path: `/${indexName}`, + }, + async () => { + memCache = {}; + return "ok"; + } +); + +describe("elasticsearch-storage", () => { + const client = new Client({ + node: "http://localhost:9200", + Connection: mock.getConnection(), + }); + const storage = new ElasticSearchStorage(indexName, client); + + storageTestFactory(storage); + decoratorTestFactory(storage); +}); diff --git a/packages/storage-elasticsearch/src/index.ts b/packages/storage-elasticsearch/src/index.ts new file mode 100644 index 0000000..8747a93 --- /dev/null +++ b/packages/storage-elasticsearch/src/index.ts @@ -0,0 +1,54 @@ +import type { Client } from "@elastic/elasticsearch"; +import type { CachedItem, Storage } from "@boredland/node-ts-cache"; +import type { GetResponse } from "@elastic/elasticsearch/lib/api/types"; + +export class ElasticSearchStorage implements Storage { + constructor( + private indexName: string, + private elasticsearchInstance: Client + ) {} + + async clear(): Promise { + try { + await this.elasticsearchInstance.indices.delete({ + index: this.indexName, + ignore_unavailable: true, + }); + } catch (e) { + return; + } + } + + async removeItem(key: string): Promise { + await this.elasticsearchInstance.delete({ + index: this.indexName, + id: encodeURIComponent(key), + refresh: "wait_for", + }); + } + + async getItem(key: string): Promise { + let item: GetResponse; + + try { + item = await this.elasticsearchInstance.get({ + index: this.indexName, + id: encodeURIComponent(key), + }); + } catch (e) { + return undefined; + } + + if (!item.found) return undefined; + return item._source; + } + + async setItem(key: string, content: CachedItem): Promise { + await this.elasticsearchInstance.index({ + index: this.indexName, + id: encodeURIComponent(key), + refresh: "wait_for", + body: content, + }); + } +} diff --git a/packages/storage-elasticsearch/tsconfig-build.json b/packages/storage-elasticsearch/tsconfig-build.json new file mode 100644 index 0000000..8ffe603 --- /dev/null +++ b/packages/storage-elasticsearch/tsconfig-build.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "include": ["./src"], + "exclude": ["**/*.test.ts"], + "compilerOptions": { + "sourceMap": false + } +} diff --git a/packages/storage-elasticsearch/tsconfig.json b/packages/storage-elasticsearch/tsconfig.json new file mode 100644 index 0000000..877f26a --- /dev/null +++ b/packages/storage-elasticsearch/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "include": ["./src"], + "compilerOptions": { + "outDir": "./dist" + } +} diff --git a/packages/storage-ioredis/package.json b/packages/storage-ioredis/package.json index 019cd46..8405ff0 100644 --- a/packages/storage-ioredis/package.json +++ b/packages/storage-ioredis/package.json @@ -36,11 +36,11 @@ "devDependencies": { "ioredis": "^5.2.3", "ioredis-mock": "^8", - "@boredland/node-ts-cache": "^5.1.0" + "@boredland/node-ts-cache": "^6.0.0" }, "peerDependencies": { "ioredis": "^5", - "@boredland/node-ts-cache": "^5.1.0" + "@boredland/node-ts-cache": "^6.0.0" }, "dependencies": { "superjson": "1.10.0" diff --git a/packages/storage-memory/package.json b/packages/storage-memory/package.json index f987567..6d75869 100644 --- a/packages/storage-memory/package.json +++ b/packages/storage-memory/package.json @@ -34,9 +34,9 @@ }, "homepage": "https://github.com/boredland/node-ts-cache#readme", "peerDependencies": { - "@boredland/node-ts-cache": "^5.1.0" + "@boredland/node-ts-cache": "^6.0.0" }, "devDependencies": { - "@boredland/node-ts-cache": "^5.1.0" + "@boredland/node-ts-cache": "^6.0.0" } } diff --git a/packages/storage-node-fs/package.json b/packages/storage-node-fs/package.json index 7c409e4..951adc6 100644 --- a/packages/storage-node-fs/package.json +++ b/packages/storage-node-fs/package.json @@ -34,10 +34,10 @@ }, "homepage": "https://github.com/boredland/node-ts-cache#readme", "peerDependencies": { - "@boredland/node-ts-cache": "^5.1.0" + "@boredland/node-ts-cache": "^6.0.0" }, "devDependencies": { - "@boredland/node-ts-cache": "^5.1.0" + "@boredland/node-ts-cache": "^6.0.0" }, "dependencies": { "superjson": "1.10.0" diff --git a/packages/storage-pg/package.json b/packages/storage-pg/package.json index 51ff413..524e112 100644 --- a/packages/storage-pg/package.json +++ b/packages/storage-pg/package.json @@ -31,10 +31,10 @@ }, "homepage": "https://github.com/boredland/node-ts-cache#readme", "peerDependencies": { - "@boredland/node-ts-cache": "^5.1.0" + "@boredland/node-ts-cache": "^6.0.0" }, "devDependencies": { - "@boredland/node-ts-cache": "^5.1.0", + "@boredland/node-ts-cache": "^6.0.0", "pg": "^8.8.0", "pg-mem": "^2.6.3" } diff --git a/yarn.lock b/yarn.lock index 832831d..f137381 100644 --- a/yarn.lock +++ b/yarn.lock @@ -304,6 +304,13 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@boredland/node-ts-cache@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@boredland/node-ts-cache/-/node-ts-cache-6.0.0.tgz#c357b86ea00b8cfb3c677d9d23013eab1b6b5dfc" + integrity sha512-L/VKqfX8l/7h/PwUdwuYo3goCJNjPKnaAwRUWqIJVoQQS+QlAgEbANe5k5RroRZt+7t5R83rjn8OJnrskT8vHQ== + dependencies: + debug "4.3.4" + "@changesets/apply-release-plan@^6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@changesets/apply-release-plan/-/apply-release-plan-6.1.1.tgz#14ec261c11c9b90d110a83b8b96412ddb7303ddf" @@ -510,6 +517,35 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@elastic/elasticsearch-mock@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch-mock/-/elasticsearch-mock-2.0.0.tgz#35110dd3ff13140a7065034f8e20f41445ab001b" + integrity sha512-VACQF7GStt8DetY91aJhXCYog6zXM0Vyb62k592EEt3aB4plrOLot+JvlLMC4URjh2jt9qYfER9hn4AI+ULTSw== + dependencies: + fast-deep-equal "^3.1.3" + find-my-way "^5.2.0" + into-stream "^6.0.0" + +"@elastic/elasticsearch@^8.4.0": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.4.0.tgz#3fe2c7a9c06de261a465e7a8bca5955b93e4a726" + integrity sha512-0QZDBePnb5a+d76zjlMYq96IDf0AOuGP7JHugFUYlYwTC7rZvROuZSpoUsvpUjNH2CzMqWgNLIekIR6EHRMIQA== + dependencies: + "@elastic/transport" "^8.2.0" + tslib "^2.4.0" + +"@elastic/transport@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.2.0.tgz#f292cb79c918a36268dd853431e41f13544814ad" + integrity sha512-H/HmefMNQfLiBSVTmNExu2lYs5EzwipUnQB53WLr17RCTDaQX0oOLHcWpDsbKQSRhDAMPPzp5YZsZMJxuxPh7A== + dependencies: + debug "^4.3.4" + hpagent "^1.0.0" + ms "^2.1.3" + secure-json-parse "^2.4.0" + tslib "^2.4.0" + undici "^5.1.1" + "@eslint/eslintrc@^1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" @@ -1815,6 +1851,11 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -2345,6 +2386,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" + integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2428,6 +2474,15 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-my-way@^5.2.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-5.6.0.tgz#c26e25eb4c3846f5300ac5d486290234e22118d9" + integrity sha512-pFTzbl2u+iSrvVOGtfKenvDmNIhNtEcwbzvRMfx3TGO69fbO5udgTKtAZAaUfIUrHQWLkkWvhNafNz179kaCIw== + dependencies: + fast-decode-uri-component "^1.0.1" + fast-deep-equal "^3.1.3" + safe-regex2 "^2.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -2510,6 +2565,14 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +from2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + fs-extra@9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -2801,6 +2864,11 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hpagent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-1.0.0.tgz#c68f68b3df845687dbdc4896546713ce09cc6bee" + integrity sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -2867,7 +2935,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2891,6 +2959,14 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +into-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-6.0.0.tgz#4bfc1244c0128224e18b8870e85b2de8e66c6702" + integrity sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA== + dependencies: + from2 "^2.3.0" + p-is-promise "^3.0.0" + ioredis-mock@^8: version "8.2.2" resolved "https://registry.yarnpkg.com/ioredis-mock/-/ioredis-mock-8.2.2.tgz#9bae98378a396d3ba748fab604ede1b90c53eadf" @@ -3163,7 +3239,7 @@ is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -isarray@1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -3980,6 +4056,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -4153,6 +4234,11 @@ p-filter@^2.1.0: dependencies: p-map "^2.0.0" +p-is-promise@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" + integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4451,6 +4537,11 @@ pretty-format@^29.0.0, pretty-format@^29.1.2: ansi-styles "^5.0.0" react-is "^18.0.0" +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -4526,6 +4617,19 @@ read-yaml-file@^1.1.0: pify "^4.0.1" strip-bom "^3.0.0" +readable-stream@^2.0.0: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readline-sync@^1.4.9: version "1.4.10" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" @@ -4659,6 +4763,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +ret@~0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" + integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -4678,7 +4787,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@~5.1.1: +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -4692,6 +4801,13 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-regex2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/safe-regex2/-/safe-regex2-2.0.0.tgz#b287524c397c7a2994470367e0185e1916b1f5b9" + integrity sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ== + dependencies: + ret "~0.2.0" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -4704,6 +4820,11 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +secure-json-parse@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.5.0.tgz#f929829df2adc7ccfb53703569894d051493a6ac" + integrity sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w== + "semver@2 || 3 || 4 || 5", semver@^5.4.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -4983,6 +5104,13 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -5173,6 +5301,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -5292,6 +5425,11 @@ unc-path-regex@^0.1.2: resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== +undici@^5.1.1: + version "5.10.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.10.0.tgz#dd9391087a90ccfbd007568db458674232ebf014" + integrity sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -5345,6 +5483,11 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" From ffc70056047ce1001ce39152abcbc9009657949e Mon Sep 17 00:00:00 2001 From: Jonas Strassel Date: Mon, 3 Oct 2022 19:20:46 +0200 Subject: [PATCH 2/2] chore: add changeset --- .changeset/fast-oranges-hunt.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changeset/fast-oranges-hunt.md diff --git a/.changeset/fast-oranges-hunt.md b/.changeset/fast-oranges-hunt.md new file mode 100644 index 0000000..3877219 --- /dev/null +++ b/.changeset/fast-oranges-hunt.md @@ -0,0 +1,10 @@ +--- +"@boredland/node-ts-cache": patch +"@boredland/node-ts-cache-storage-elasticsearch": major +"@boredland/node-ts-cache-storage-ioredis": patch +"@boredland/node-ts-cache-storage-memory": patch +"@boredland/node-ts-cache-storage-node-fs": patch +"@boredland/node-ts-cache-storage-pg": patch +--- + +feat: elasticsearch storage