From 01772b30c771dfb312995475cb57030bcb945dac Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Thu, 17 Aug 2023 19:03:42 +0700 Subject: [PATCH 1/8] feat: add redis-upstash --- src/drivers/redis-upstash.ts | 96 ++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/drivers/redis-upstash.ts diff --git a/src/drivers/redis-upstash.ts b/src/drivers/redis-upstash.ts new file mode 100644 index 00000000..0e6d380e --- /dev/null +++ b/src/drivers/redis-upstash.ts @@ -0,0 +1,96 @@ +import { defineDriver, joinKeys } from "./utils"; +import Redis, { + Cluster, + ClusterNode, + ClusterOptions, + RedisOptions as _RedisOptions, +} from "ioredis"; + +export interface RedisOptions extends _RedisOptions { + /** + * Optional prefix to use for all keys. Can be used for namespacing. + */ + base?: string; + + /** + * Url to use for connecting to redis. Takes precedence over `host` option. Has the format `redis://:@:` + */ + url?: string; + + /** + * List of redis nodes to use for cluster mode. Takes precedence over `url` and `host` options. + */ + cluster?: ClusterNode[]; + + /** + * Options to use for cluster mode. + */ + clusterOptions?: ClusterOptions; + + /** + * Default TTL for all items in seconds. + */ + ttl?: number; +} + +const DRIVER_NAME = "redis"; + +export default defineDriver((opts: RedisOptions = {}) => { + let redisClient: Redis | Cluster; + const getRedisClient = () => { + if (redisClient) { + return redisClient; + } + if (opts.cluster) { + redisClient = new Redis.Cluster(opts.cluster, opts.clusterOptions); + } else if (opts.url) { + redisClient = new Redis(opts.url, opts); + } else { + redisClient = new Redis(opts); + } + return redisClient; + }; + + const base = (opts.base || "").replace(/:$/, ""); + const p = (...keys: string[]) => joinKeys(base, ...keys); // Prefix a key. Uses base for backwards compatibility + const d = (key: string) => (base ? key.replace(base, "") : key); // Deprefix a key + + return { + name: DRIVER_NAME, + options: opts, + async hasItem(key) { + return Boolean(await getRedisClient().exists(p(key))); + }, + async getItem(key) { + const value = await getRedisClient().get(p(key)); + return value === null ? null : value; + }, + async setItem(key, value, tOptions) { + let ttl = tOptions?.ttl ?? opts.ttl; + if (ttl) { + await getRedisClient().set(p(key), value, "EX", ttl); + } else { + await getRedisClient().set(p(key), value); + } + }, + async removeItem(key) { + await getRedisClient().del(p(key)); + }, + async getKeys(base) { + const keys: string[] = await getRedisClient().keys(p(base, "*")); + return keys.map((key) => d(key)); + }, + async clear(base) { + const keys = await getRedisClient().keys(p(base, "*")); + if (keys.length === 0) { + return; + } + return getRedisClient() + .del(keys) + .then(() => {}); + }, + dispose() { + return getRedisClient().disconnect(); + }, + }; +}); From 3e35a0fa25911775cfe6f16ef7853dfd011c4251 Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Thu, 17 Aug 2023 19:48:44 +0700 Subject: [PATCH 2/8] feat: implement upstash redis driver --- .env.example | 2 + .gitignore | 1 + package.json | 1 + pnpm-lock.yaml | 1238 ++++++++++++++-------------- src/drivers/redis-upstash.ts | 77 +- src/types.ts | 2 +- test/drivers/redis-upstash.test.ts | 17 + 7 files changed, 686 insertions(+), 652 deletions(-) create mode 100644 .env.example create mode 100644 test/drivers/redis-upstash.test.ts diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..da8c4e89 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +UPSTASH_REDIS_REST_URL="" +UPSTASH_REDIS_REST_TOKEN="" diff --git a/.gitignore b/.gitignore index fcfd145b..2a6a0084 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ tmp /test.* __* .vercel +.env diff --git a/package.json b/package.json index 9da02ffe..044d007c 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "@vue/compiler-sfc": "^3.3.4", "azurite": "^3.26.0", "changelogen": "^0.5.5", + "dotenv": "^16.3.1", "eslint": "^8.50.0", "eslint-config-unjs": "^0.2.1", "fake-indexeddb": "^4.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a560a437..30455abb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,10 +60,10 @@ devDependencies: version: 12.16.0 '@capacitor/preferences': specifier: ^5.0.6 - version: 5.0.6(@capacitor/core@5.4.1) + version: 5.0.6(@capacitor/core@5.4.2) '@cloudflare/workers-types': specifier: ^4.20230922.0 - version: 4.20230922.0 + version: 4.20231002.0 '@planetscale/database': specifier: ^1.11.0 version: 1.11.0 @@ -78,7 +78,7 @@ devDependencies: version: 1.1.2 '@types/node': specifier: ^20.7.2 - version: 20.7.2 + version: 20.8.3 '@upstash/redis': specifier: ^1.22.1 version: 1.22.1 @@ -87,7 +87,7 @@ devDependencies: version: 0.2.3 '@vitejs/plugin-vue': specifier: ^4.3.4 - version: 4.3.4(vite@4.4.9)(vue@3.3.4) + version: 4.4.0(vite@4.4.11)(vue@3.3.4) '@vitest/coverage-v8': specifier: ^0.34.6 version: 0.34.6(vitest@0.34.6) @@ -100,12 +100,15 @@ devDependencies: changelogen: specifier: ^0.5.5 version: 0.5.5 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 eslint: specifier: ^8.50.0 - version: 8.50.0 + version: 8.51.0 eslint-config-unjs: specifier: ^0.2.1 - version: 0.2.1(eslint@8.50.0)(typescript@5.2.2) + version: 0.2.1(eslint@8.51.0)(typescript@5.2.2) fake-indexeddb: specifier: ^4.0.2 version: 4.0.2 @@ -129,10 +132,10 @@ devDependencies: version: 6.1.0 mongodb-memory-server: specifier: ^8.15.1 - version: 8.15.1 + version: 8.16.0 msw: specifier: ^1.3.1 - version: 1.3.1(typescript@5.2.2) + version: 1.3.2(typescript@5.2.2) prettier: specifier: ^3.0.3 version: 3.0.3 @@ -147,7 +150,7 @@ devDependencies: version: 2.0.0(typescript@5.2.2) vite: specifier: ^4.4.9 - version: 4.4.9(@types/node@20.7.2) + version: 4.4.11(@types/node@20.8.3) vitest: specifier: ^0.34.6 version: 0.34.6(jsdom@22.1.0) @@ -175,7 +178,7 @@ packages: requiresBuild: true dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.418.0 + '@aws-sdk/types': 3.425.0 tslib: 1.14.1 dev: true optional: true @@ -196,7 +199,7 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.418.0 + '@aws-sdk/types': 3.425.0 '@aws-sdk/util-locate-window': 3.310.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -208,7 +211,7 @@ packages: requiresBuild: true dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.418.0 + '@aws-sdk/types': 3.425.0 tslib: 1.14.1 dev: true optional: true @@ -225,52 +228,52 @@ packages: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 + '@aws-sdk/types': 3.425.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: true optional: true - /@aws-sdk/client-cognito-identity@3.421.0: - resolution: {integrity: sha512-9htG14uDA/2XhU+vRhBcCG8GAOJ29rV53cxlc6I1YRKD6imXdU+X0ZfMPZCkPjEPGT4hHTpO0vR2J7zY8FXfzg==} + /@aws-sdk/client-cognito-identity@3.427.0: + resolution: {integrity: sha512-9brRaNnl6haE7R3R43A5CSNw0k1YtB3xjuArbMg/p6NDUpvRSRgOVNWu2R02Yjh/j2ZuaLOCPLuCipb+PHQPKQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.421.0 - '@aws-sdk/credential-provider-node': 3.421.0 - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-signing': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/region-config-resolver': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.0 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.8 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/client-sts': 3.427.0 + '@aws-sdk/credential-provider-node': 3.427.0 + '@aws-sdk/middleware-host-header': 3.425.0 + '@aws-sdk/middleware-logger': 3.425.0 + '@aws-sdk/middleware-recursion-detection': 3.425.0 + '@aws-sdk/middleware-signing': 3.425.0 + '@aws-sdk/middleware-user-agent': 3.427.0 + '@aws-sdk/region-config-resolver': 3.425.0 + '@aws-sdk/types': 3.425.0 + '@aws-sdk/util-endpoints': 3.427.0 + '@aws-sdk/util-user-agent-browser': 3.425.0 + '@aws-sdk/util-user-agent-node': 3.425.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.2 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.0.11 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.10 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.12 - '@smithy/util-defaults-mode-node': 2.0.14 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.14 + '@smithy/util-defaults-mode-node': 2.0.18 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 transitivePeerDependencies: @@ -278,43 +281,43 @@ packages: dev: true optional: true - /@aws-sdk/client-sso@3.421.0: - resolution: {integrity: sha512-40CmW7K2/FZEn3CbOjbpRYeVjKu6aJQlpRHcAgEJGNoVEAnRA3YNH4H0BN2iWWITfYg3B7sIjMm5VE9fCIK1Ng==} + /@aws-sdk/client-sso@3.427.0: + resolution: {integrity: sha512-sFVFEmsQ1rmgYO1SgrOTxE/MTKpeE4hpOkm1WqhLQK7Ij136vXpjCxjH1JYZiHiUzO1wr9t4ex4dlB5J3VS/Xg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/region-config-resolver': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.0 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.8 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/middleware-host-header': 3.425.0 + '@aws-sdk/middleware-logger': 3.425.0 + '@aws-sdk/middleware-recursion-detection': 3.425.0 + '@aws-sdk/middleware-user-agent': 3.427.0 + '@aws-sdk/region-config-resolver': 3.425.0 + '@aws-sdk/types': 3.425.0 + '@aws-sdk/util-endpoints': 3.427.0 + '@aws-sdk/util-user-agent-browser': 3.425.0 + '@aws-sdk/util-user-agent-node': 3.425.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.2 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.0.11 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.10 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.12 - '@smithy/util-defaults-mode-node': 2.0.14 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.14 + '@smithy/util-defaults-mode-node': 2.0.18 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 transitivePeerDependencies: @@ -322,46 +325,46 @@ packages: dev: true optional: true - /@aws-sdk/client-sts@3.421.0: - resolution: {integrity: sha512-/92NOZMcdkBcvGrINk5B/l+6DGcVzYE4Ab3ME4vcY9y//u2gd0yNn5YYRSzzjVBLvhDP3u6CbTfLX2Bm4qihPw==} + /@aws-sdk/client-sts@3.427.0: + resolution: {integrity: sha512-le2wLJKILyWuRfPz2HbyaNtu5kEki+ojUkTqCU6FPDRrqUvEkaaCBH9Awo/2AtrCfRkiobop8RuTTj6cAnpiJg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/credential-provider-node': 3.421.0 - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-sdk-sts': 3.418.0 - '@aws-sdk/middleware-signing': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/region-config-resolver': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.0 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.8 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/credential-provider-node': 3.427.0 + '@aws-sdk/middleware-host-header': 3.425.0 + '@aws-sdk/middleware-logger': 3.425.0 + '@aws-sdk/middleware-recursion-detection': 3.425.0 + '@aws-sdk/middleware-sdk-sts': 3.425.0 + '@aws-sdk/middleware-signing': 3.425.0 + '@aws-sdk/middleware-user-agent': 3.427.0 + '@aws-sdk/region-config-resolver': 3.425.0 + '@aws-sdk/types': 3.425.0 + '@aws-sdk/util-endpoints': 3.427.0 + '@aws-sdk/util-user-agent-browser': 3.425.0 + '@aws-sdk/util-user-agent-node': 3.425.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.2 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.0.11 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.10 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.12 - '@smithy/util-defaults-mode-node': 2.0.14 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.14 + '@smithy/util-defaults-mode-node': 2.0.18 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 fast-xml-parser: 4.2.5 tslib: 2.6.2 @@ -370,267 +373,283 @@ packages: dev: true optional: true - /@aws-sdk/credential-provider-cognito-identity@3.421.0: - resolution: {integrity: sha512-x+C7nonKomdBAljTAPtqhU6Xzzaqy08PV1vO5Cp/YYMye+uOGQ2+1x7cfaY5uIHZbbNRUhCmUBKGnwsUyTB1cQ==} + /@aws-sdk/credential-provider-cognito-identity@3.427.0: + resolution: {integrity: sha512-BQNzNrMJlBAfXhYNdAUqaVASpT9Aho5swj7glZKxx4Uds1w5Pih2e14JWgnl8XgUWAZ36pchTrV1aA4JT7N8vw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/client-cognito-identity': 3.421.0 - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 + '@aws-sdk/client-cognito-identity': 3.427.0 + '@aws-sdk/types': 3.425.0 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true optional: true - /@aws-sdk/credential-provider-env@3.418.0: - resolution: {integrity: sha512-e74sS+x63EZUBO+HaI8zor886YdtmULzwKdctsZp5/37Xho1CVUNtEC+fYa69nigBD9afoiH33I4JggaHgrekQ==} + /@aws-sdk/credential-provider-env@3.425.0: + resolution: {integrity: sha512-J20etnLvMKXRVi5FK4F8yOCNm2RTaQn5psQTGdDEPWJNGxohcSpzzls8U2KcMyUJ+vItlrThr4qwgpHG3i/N0w==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/credential-provider-ini@3.421.0: - resolution: {integrity: sha512-J5yH/gkpAk6FMeH5F9u5Nr6oG+97tj1kkn5q49g3XMbtWw7GiynadxdtoRBCeIg1C7o2LOQx4B1AnhNhIw1z/g==} + /@aws-sdk/credential-provider-http@3.425.0: + resolution: {integrity: sha512-aP9nkoVWf+OlNMecrUqe4+RuQrX13nucVbty0HTvuwfwJJj0T6ByWZzle+fo1D+5OxvJmtzTflBWt6jUERdHWA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/credential-provider-env': 3.418.0 - '@aws-sdk/credential-provider-process': 3.418.0 - '@aws-sdk/credential-provider-sso': 3.421.0 - '@aws-sdk/credential-provider-web-identity': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/credential-provider-imds': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/fetch-http-handler': 2.2.2 + '@smithy/node-http-handler': 2.1.7 + '@smithy/property-provider': 2.0.12 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 + tslib: 2.6.2 + dev: true + optional: true + + /@aws-sdk/credential-provider-ini@3.427.0: + resolution: {integrity: sha512-NmH1cO/w98CKMltYec3IrJIIco19wRjATFNiw83c+FGXZ+InJwReqBnruxIOmKTx2KDzd6fwU1HOewS7UjaaaQ==} + engines: {node: '>=14.0.0'} + requiresBuild: true + dependencies: + '@aws-sdk/credential-provider-env': 3.425.0 + '@aws-sdk/credential-provider-process': 3.425.0 + '@aws-sdk/credential-provider-sso': 3.427.0 + '@aws-sdk/credential-provider-web-identity': 3.425.0 + '@aws-sdk/types': 3.425.0 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true optional: true - /@aws-sdk/credential-provider-node@3.421.0: - resolution: {integrity: sha512-g1dvdvfDj0u8B/gOsHR3o1arP4O4QE/dFm2IJBYr/eUdKISMUgbQULWtg4zdtAf0Oz4xN0723i7fpXAF1gTnRA==} + /@aws-sdk/credential-provider-node@3.427.0: + resolution: {integrity: sha512-wYYbQ57nKL8OfgRbl8k6uXcdnYml+p3LSSfDUAuUEp1HKlQ8lOXFJ3BdLr5qrk7LhpyppSRnWBmh2c3kWa7ANQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/credential-provider-env': 3.418.0 - '@aws-sdk/credential-provider-ini': 3.421.0 - '@aws-sdk/credential-provider-process': 3.418.0 - '@aws-sdk/credential-provider-sso': 3.421.0 - '@aws-sdk/credential-provider-web-identity': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/credential-provider-imds': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/credential-provider-env': 3.425.0 + '@aws-sdk/credential-provider-ini': 3.427.0 + '@aws-sdk/credential-provider-process': 3.425.0 + '@aws-sdk/credential-provider-sso': 3.427.0 + '@aws-sdk/credential-provider-web-identity': 3.425.0 + '@aws-sdk/types': 3.425.0 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true optional: true - /@aws-sdk/credential-provider-process@3.418.0: - resolution: {integrity: sha512-xPbdm2WKz1oH6pTkrJoUmr3OLuqvvcPYTQX0IIlc31tmDwDWPQjXGGFD/vwZGIZIkKaFpFxVMgAzfFScxox7dw==} + /@aws-sdk/credential-provider-process@3.425.0: + resolution: {integrity: sha512-YY6tkLdvtb1Fgofp3b1UWO+5vwS14LJ/smGmuGpSba0V7gFJRdcrJ9bcb9vVgAGuMdjzRJ+bUKlLLtqXkaykEw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/credential-provider-sso@3.421.0: - resolution: {integrity: sha512-f8T3L5rhImL6T6RTSvbOxaWw9k2fDOT2DZbNjcPz9ITWmwXj2NNbdHGWuRi3dv2HoY/nW2IJdNxnhdhbn6Fc1A==} + /@aws-sdk/credential-provider-sso@3.427.0: + resolution: {integrity: sha512-c+tXyS/i49erHs4bAp6vKNYeYlyQ0VNMBgoco0LCn1rL0REtHbfhWMnqDLF6c2n3yIWDOTrQu0D73Idnpy16eA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/client-sso': 3.421.0 - '@aws-sdk/token-providers': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/client-sso': 3.427.0 + '@aws-sdk/token-providers': 3.427.0 + '@aws-sdk/types': 3.425.0 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true optional: true - /@aws-sdk/credential-provider-web-identity@3.418.0: - resolution: {integrity: sha512-do7ang565n9p3dS1JdsQY01rUfRx8vkxQqz5M8OlcEHBNiCdi2PvSjNwcBdrv/FKkyIxZb0TImOfBSt40hVdxQ==} + /@aws-sdk/credential-provider-web-identity@3.425.0: + resolution: {integrity: sha512-/0R65TgRzL01JU3SzloivWNwdkbIhr06uY/F5pBHf/DynQqaspKNfdHn6AiozgSVDfwRHFjKBTUy6wvf3QFkuA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/credential-providers@3.421.0: - resolution: {integrity: sha512-Mhz3r2N0YlOAhb1ZZYrP76VA1aIlJZw3IAwYwlS+hO4sAwp8iY6wCKiumqplXkVgK+ObLxlS9W/aW+2SAKsB7w==} + /@aws-sdk/credential-providers@3.427.0: + resolution: {integrity: sha512-rKKohSHju462vo+uQnPjcEZPBAfAMgGH6K1XyyCNpuOC0yYLkG87PYpvAQeb8riTrkHPX0dYUHuTHZ6zQgMGjA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/client-cognito-identity': 3.421.0 - '@aws-sdk/client-sso': 3.421.0 - '@aws-sdk/client-sts': 3.421.0 - '@aws-sdk/credential-provider-cognito-identity': 3.421.0 - '@aws-sdk/credential-provider-env': 3.418.0 - '@aws-sdk/credential-provider-ini': 3.421.0 - '@aws-sdk/credential-provider-node': 3.421.0 - '@aws-sdk/credential-provider-process': 3.418.0 - '@aws-sdk/credential-provider-sso': 3.421.0 - '@aws-sdk/credential-provider-web-identity': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/credential-provider-imds': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 + '@aws-sdk/client-cognito-identity': 3.427.0 + '@aws-sdk/client-sso': 3.427.0 + '@aws-sdk/client-sts': 3.427.0 + '@aws-sdk/credential-provider-cognito-identity': 3.427.0 + '@aws-sdk/credential-provider-env': 3.425.0 + '@aws-sdk/credential-provider-http': 3.425.0 + '@aws-sdk/credential-provider-ini': 3.427.0 + '@aws-sdk/credential-provider-node': 3.427.0 + '@aws-sdk/credential-provider-process': 3.425.0 + '@aws-sdk/credential-provider-sso': 3.427.0 + '@aws-sdk/credential-provider-web-identity': 3.425.0 + '@aws-sdk/types': 3.425.0 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true optional: true - /@aws-sdk/middleware-host-header@3.418.0: - resolution: {integrity: sha512-LrMTdzalkPw/1ujLCKPLwCGvPMCmT4P+vOZQRbSEVZPnlZk+Aj++aL/RaHou0jL4kJH3zl8iQepriBt4a7UvXQ==} + /@aws-sdk/middleware-host-header@3.425.0: + resolution: {integrity: sha512-E5Gt41LObQ+cr8QnLthwsH3MtVSNXy1AKJMowDr85h0vzqA/FHUkgHyOGntgozzjXT5M0MaSRYxS0xwTR5D4Ew==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/middleware-logger@3.418.0: - resolution: {integrity: sha512-StKGmyPVfoO/wdNTtKemYwoJsqIl4l7oqarQY7VSf2Mp3mqaa+njLViHsQbirYpyqpgUEusOnuTlH5utxJ1NsQ==} + /@aws-sdk/middleware-logger@3.425.0: + resolution: {integrity: sha512-INE9XWRXx2f4a/r2vOU0tAmgctVp7nEaEasemNtVBYhqbKLZvr9ndLBSgKGgJ8LIcXAoISipaMuFiqIGkFsm7A==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/middleware-recursion-detection@3.418.0: - resolution: {integrity: sha512-kKFrIQglBLUFPbHSDy1+bbe3Na2Kd70JSUC3QLMbUHmqipXN8KeXRfAj7vTv97zXl0WzG0buV++WcNwOm1rFjg==} + /@aws-sdk/middleware-recursion-detection@3.425.0: + resolution: {integrity: sha512-77gnzJ5b91bgD75L/ugpOyerx6lR3oyS4080X1YI58EzdyBMkDrHM4FbMcY2RynETi3lwXCFzLRyZjWXY1mRlw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/middleware-sdk-sts@3.418.0: - resolution: {integrity: sha512-cW8ijrCTP+mgihvcq4+TbhAcE/we5lFl4ydRqvTdtcSnYQAVQADg47rnTScQiFsPFEB3NKq7BGeyTJF9MKolPA==} + /@aws-sdk/middleware-sdk-sts@3.425.0: + resolution: {integrity: sha512-JFojrg76oKAoBknnr9EL5N2aJ1mRCtBqXoZYST58GSx8uYdFQ89qS65VNQ8JviBXzsrCNAn4vDhZ5Ch5E6TxGQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/middleware-signing': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@smithy/types': 2.3.4 + '@aws-sdk/middleware-signing': 3.425.0 + '@aws-sdk/types': 3.425.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/middleware-signing@3.418.0: - resolution: {integrity: sha512-onvs5KoYQE8OlOE740RxWBGtsUyVIgAo0CzRKOQO63ZEYqpL1Os+MS1CGzdNhvQnJgJruE1WW+Ix8fjN30zKPA==} + /@aws-sdk/middleware-signing@3.425.0: + resolution: {integrity: sha512-ZpOfgJHk7ovQ0sSwg3tU4NxFOnz53lJlkJRf7S+wxQALHM0P2MJ6LYBrZaFMVsKiJxNIdZBXD6jclgHg72ZW6Q==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/property-provider': 2.0.11 - '@smithy/protocol-http': 3.0.6 - '@smithy/signature-v4': 2.0.10 - '@smithy/types': 2.3.4 - '@smithy/util-middleware': 2.0.3 + '@aws-sdk/types': 3.425.0 + '@smithy/property-provider': 2.0.12 + '@smithy/protocol-http': 3.0.7 + '@smithy/signature-v4': 2.0.11 + '@smithy/types': 2.3.5 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/middleware-user-agent@3.418.0: - resolution: {integrity: sha512-Jdcztg9Tal9SEAL0dKRrnpKrm6LFlWmAhvuwv0dQ7bNTJxIxyEFbpqdgy7mpQHsLVZgq1Aad/7gT/72c9igyZw==} + /@aws-sdk/middleware-user-agent@3.427.0: + resolution: {integrity: sha512-y9HxYsNvnA3KqDl8w1jHeCwz4P9CuBEtu/G+KYffLeAMBsMZmh4SIkFFCO9wE/dyYg6+yo07rYcnnIfy7WA0bw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@aws-sdk/util-endpoints': 3.427.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/region-config-resolver@3.418.0: - resolution: {integrity: sha512-lJRZ/9TjZU6yLz+mAwxJkcJZ6BmyYoIJVo1p5+BN//EFdEmC8/c0c9gXMRzfISV/mqWSttdtccpAyN4/goHTYA==} + /@aws-sdk/region-config-resolver@3.425.0: + resolution: {integrity: sha512-u7uv/iUOapIJdRgRkO3wnpYsUgV6ponsZJQgVg/8L+n+Vo5PQL5gAcIuAOwcYSKQPFaeK+KbmByI4SyOK203Vw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/types': 2.3.4 + '@smithy/node-config-provider': 2.1.1 + '@smithy/types': 2.3.5 '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.3 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/token-providers@3.418.0: - resolution: {integrity: sha512-9P7Q0VN0hEzTngy3Sz5eya2qEOEf0Q8qf1vB3um0gE6ID6EVAdz/nc/DztfN32MFxk8FeVBrCP5vWdoOzmd72g==} + /@aws-sdk/token-providers@3.427.0: + resolution: {integrity: sha512-4E5E+4p8lJ69PBY400dJXF06LUHYx5lkKzBEsYqWWhoZcoftrvi24ltIhUDoGVLkrLcTHZIWSdFAWSos4hXqeg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/middleware-host-header': 3.418.0 - '@aws-sdk/middleware-logger': 3.418.0 - '@aws-sdk/middleware-recursion-detection': 3.418.0 - '@aws-sdk/middleware-user-agent': 3.418.0 - '@aws-sdk/types': 3.418.0 - '@aws-sdk/util-endpoints': 3.418.0 - '@aws-sdk/util-user-agent-browser': 3.418.0 - '@aws-sdk/util-user-agent-node': 3.418.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.0 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/property-provider': 2.0.11 - '@smithy/protocol-http': 3.0.6 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/smithy-client': 2.1.8 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/middleware-host-header': 3.425.0 + '@aws-sdk/middleware-logger': 3.425.0 + '@aws-sdk/middleware-recursion-detection': 3.425.0 + '@aws-sdk/middleware-user-agent': 3.427.0 + '@aws-sdk/types': 3.425.0 + '@aws-sdk/util-endpoints': 3.427.0 + '@aws-sdk/util-user-agent-browser': 3.425.0 + '@aws-sdk/util-user-agent-node': 3.425.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.2 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.0.11 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/property-provider': 2.0.12 + '@smithy/protocol-http': 3.0.7 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/smithy-client': 2.1.10 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.12 - '@smithy/util-defaults-mode-node': 2.0.14 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.14 + '@smithy/util-defaults-mode-node': 2.0.18 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 transitivePeerDependencies: @@ -638,22 +657,23 @@ packages: dev: true optional: true - /@aws-sdk/types@3.418.0: - resolution: {integrity: sha512-y4PQSH+ulfFLY0+FYkaK4qbIaQI9IJNMO2xsxukW6/aNoApNymN1D2FSi2la8Qbp/iPjNDKsG8suNPm9NtsWXQ==} + /@aws-sdk/types@3.425.0: + resolution: {integrity: sha512-6lqbmorwerN4v+J5dqbHPAsjynI0mkEF+blf+69QTaKKGaxBBVaXgqoqul9RXYcK5MMrrYRbQIMd0zYOoy90kA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/util-endpoints@3.418.0: - resolution: {integrity: sha512-sYSDwRTl7yE7LhHkPzemGzmIXFVHSsi3AQ1KeNEk84eBqxMHHcCc2kqklaBk2roXWe50QDgRMy1ikZUxvtzNHQ==} + /@aws-sdk/util-endpoints@3.427.0: + resolution: {integrity: sha512-rSyiAIFF/EVvity/+LWUqoTMJ0a25RAc9iqx0WZ4tf1UjuEXRRXxZEb+jEZg1bk+pY84gdLdx9z5E+MSJCZxNQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 + '@aws-sdk/types': 3.425.0 + '@smithy/node-config-provider': 2.1.1 tslib: 2.6.2 dev: true optional: true @@ -667,19 +687,19 @@ packages: dev: true optional: true - /@aws-sdk/util-user-agent-browser@3.418.0: - resolution: {integrity: sha512-c4p4mc0VV/jIeNH0lsXzhJ1MpWRLuboGtNEpqE4s1Vl9ck2amv9VdUUZUmHbg+bVxlMgRQ4nmiovA4qIrqGuyg==} + /@aws-sdk/util-user-agent-browser@3.425.0: + resolution: {integrity: sha512-22Y9iMtjGcFjGILR6/xdp1qRezlHVLyXtnpEsbuPTiernRCPk6zfAnK/ATH77r02MUjU057tdxVkd5umUBTn9Q==} requiresBuild: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/types': 2.3.5 bowser: 2.11.0 tslib: 2.6.2 dev: true optional: true - /@aws-sdk/util-user-agent-node@3.418.0: - resolution: {integrity: sha512-BXMskXFtg+dmzSCgmnWOffokxIbPr1lFqa1D9kvM3l3IFRiFGx2IyDg+8MAhq11aPDLvoa/BDuQ0Yqma5izOhg==} + /@aws-sdk/util-user-agent-node@3.425.0: + resolution: {integrity: sha512-SIR4F5uQeeVAi8lv4OgRirtdtNi5zeyogTuQgGi9su8F/WP1N6JqxofcwpUY5f8/oJ2UlXr/tx1f09UHfJJzvA==} engines: {node: '>=14.0.0'} requiresBuild: true peerDependencies: @@ -688,9 +708,9 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/types': 3.418.0 - '@smithy/node-config-provider': 2.0.13 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.425.0 + '@smithy/node-config-provider': 2.1.1 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true @@ -846,7 +866,7 @@ packages: resolution: {integrity: sha512-B1xI79Ur/u+KR69fGTcsMNj8KDjBSqAy0Ys6Byy4Qm1CqoUy7gCT5A7Pej0EBWRskuH6bpCwrAnosfmQEalkcg==} engines: {node: '>=14.0.0'} dependencies: - fast-xml-parser: 4.3.1 + fast-xml-parser: 4.3.2 tslib: 2.6.2 dev: true @@ -1239,22 +1259,22 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@capacitor/core@5.4.1: - resolution: {integrity: sha512-QG9gORuxw2WNcVpLHT1W3LzACOJvFWRuHcz4b9edzxehSELqiSQ4DoGWLp4PuNBBp2oV/fGA4FMNmfZ1jIAAWg==} + /@capacitor/core@5.4.2: + resolution: {integrity: sha512-XbR1vldJFzBWHeoGPpgfNy3Zhjf0NxXdHEaGNANWVBg0ZWG2gwFr1dcRALUUQtbwrEEkCCNiLYg4YiQPRk7SEQ==} dependencies: tslib: 2.6.2 dev: true - /@capacitor/preferences@5.0.6(@capacitor/core@5.4.1): + /@capacitor/preferences@5.0.6(@capacitor/core@5.4.2): resolution: {integrity: sha512-aDe4wGTVSAIue6XXdUFgyz7SGszxK/Ptt/iWTydMpzc1PlZXw1XTTnciM+S+SLLNZFzXlkpXT3wMnh9t0DojUA==} peerDependencies: '@capacitor/core': ^5.0.0 dependencies: - '@capacitor/core': 5.4.1 + '@capacitor/core': 5.4.2 dev: true - /@cloudflare/workers-types@4.20230922.0: - resolution: {integrity: sha512-0N3fg4uv9pS7PXMVYmEmEGs1P1yzMIsqym0sO//o2IjtZhsf7RwOozJtdazDAL0fBIWsl1PRX7BmKe92RV+5qw==} + /@cloudflare/workers-types@4.20231002.0: + resolution: {integrity: sha512-gQMKf3THqAFWH426OXXfVx0gFLXiSiL2fo6mKjQYx4PU74MgmVDFh25NvpAIBK+XN+xXlrImClfYeqErXIT7jA==} dev: true /@colors/colors@1.5.0: @@ -1262,6 +1282,11 @@ packages: engines: {node: '>=0.1.90'} dev: true + /@colors/colors@1.6.0: + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + dev: true + /@dabh/diagnostics@2.0.3: resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} dependencies: @@ -1666,18 +1691,18 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.50.0 + eslint: 8.51.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.9.0: - resolution: {integrity: sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==} + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -1688,7 +1713,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.22.0 + globals: 13.23.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1698,8 +1723,8 @@ packages: - supports-color dev: true - /@eslint/js@8.50.0: - resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1778,7 +1803,6 @@ packages: /@mongodb-js/saslprep@1.1.0: resolution: {integrity: sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==} - requiresBuild: true dependencies: sparse-bitfield: 3.0.3 dev: true @@ -1924,7 +1948,6 @@ packages: dependencies: is-glob: 4.0.3 micromatch: 4.0.5 - napi-wasm: 1.1.0 dev: false bundledDependencies: - napi-wasm @@ -1984,11 +2007,11 @@ packages: engines: {node: '>=16'} dev: true - /@rollup/plugin-alias@5.0.0(rollup@3.29.4): - resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} + /@rollup/plugin-alias@5.0.1(rollup@3.29.4): + resolution: {integrity: sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -1997,16 +2020,16 @@ packages: slash: 4.0.0 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.4): - resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} + /@rollup/plugin-commonjs@25.0.5(rollup@3.29.4): + resolution: {integrity: sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.68.0||^3.0.0 + rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 @@ -2015,29 +2038,29 @@ packages: rollup: 3.29.4 dev: true - /@rollup/plugin-json@6.0.0(rollup@3.29.4): - resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + /@rollup/plugin-json@6.0.1(rollup@3.29.4): + resolution: {integrity: sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) rollup: 3.29.4 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.4): - resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} + /@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4): + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.78.0||^3.0.0 + rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 @@ -2046,25 +2069,25 @@ packages: rollup: 3.29.4 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.29.4): - resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + /@rollup/plugin-replace@5.0.3(rollup@3.29.4): + resolution: {integrity: sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) magic-string: 0.27.0 rollup: 3.29.4 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.4): - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + /@rollup/pluginutils@5.0.5(rollup@3.29.4): + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -2079,82 +2102,82 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@smithy/abort-controller@2.0.10: - resolution: {integrity: sha512-xn7PnFD3m4rQIG00h1lPuDVnC2QMtTFhzRLX3y56KkgFaCysS7vpNevNBgmNUtmJ4eVFc+66Zucwo2KDLdicOg==} + /@smithy/abort-controller@2.0.11: + resolution: {integrity: sha512-MSzE1qR2JNyb7ot3blIOT3O3H0Jn06iNDEgHRaqZUwBgx5EG+VIx24Y21tlKofzYryIOcWpIohLrIIyocD6LMA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/config-resolver@2.0.11: - resolution: {integrity: sha512-q97FnlUmbai1c4JlQJgLVBsvSxgV/7Nvg/JK76E1nRq/U5UM56Eqo3dn2fY7JibqgJLg4LPsGdwtIyqyOk35CQ==} + /@smithy/config-resolver@2.0.14: + resolution: {integrity: sha512-K1K+FuWQoy8j/G7lAmK85o03O89s2Vvh6kMFmzEmiHUoQCRH1rzbDtMnGNiaMHeSeYJ6y79IyTusdRG+LuWwtg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/types': 2.3.4 + '@smithy/node-config-provider': 2.1.1 + '@smithy/types': 2.3.5 '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.3 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: true optional: true - /@smithy/credential-provider-imds@2.0.13: - resolution: {integrity: sha512-/xe3wNoC4j+BeTemH9t2gSKLBfyZmk8LXB2pQm/TOEYi+QhBgT+PSolNDfNAhrR68eggNE17uOimsrnwSkCt4w==} + /@smithy/credential-provider-imds@2.0.16: + resolution: {integrity: sha512-tKa2xF+69TvGxJT+lnJpGrKxUuAZDLYXFhqnPEgnHz+psTpkpcB4QRjHj63+uj83KaeFJdTfW201eLZeRn6FfA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@smithy/node-config-provider': 2.1.1 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 tslib: 2.6.2 dev: true optional: true - /@smithy/eventstream-codec@2.0.10: - resolution: {integrity: sha512-3SSDgX2nIsFwif6m+I4+ar4KDcZX463Noes8ekBgQHitULiWvaDZX8XqPaRQSQ4bl1vbeVXHklJfv66MnVO+lw==} + /@smithy/eventstream-codec@2.0.11: + resolution: {integrity: sha512-BQCTjxhCYRZIfXapa2LmZSaH8QUBGwMZw7XRN83hrdixbLjIcj+o549zjkedFS07Ve2TlvWUI6BTzP+nv7snBA==} requiresBuild: true dependencies: '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-hex-encoding': 2.0.0 tslib: 2.6.2 dev: true optional: true - /@smithy/fetch-http-handler@2.2.0: - resolution: {integrity: sha512-P2808PM0CsEkXj3rnQAi3QyqRbAAi8iuePYUB5GveJ+dVd1WMv03NM+CYCI14IGXt1j/r7jHGvMJHO+Gv+kdMQ==} + /@smithy/fetch-http-handler@2.2.2: + resolution: {integrity: sha512-K7aRtRuaBjzlk+jWWeyfDTLAmRRvmA4fU8eHUXtjsuEDgi3f356ZE32VD2ssxIH13RCLVZbXMt5h7wHzYiSuVA==} requiresBuild: true dependencies: - '@smithy/protocol-http': 3.0.6 - '@smithy/querystring-builder': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/protocol-http': 3.0.7 + '@smithy/querystring-builder': 2.0.11 + '@smithy/types': 2.3.5 '@smithy/util-base64': 2.0.0 tslib: 2.6.2 dev: true optional: true - /@smithy/hash-node@2.0.10: - resolution: {integrity: sha512-jSTf6uzPk/Vf+8aQ7tVXeHfjxe9wRXSCqIZcBymSDTf7/YrVxniBdpyN74iI8ZUOx/Pyagc81OK5FROLaEjbXQ==} + /@smithy/hash-node@2.0.11: + resolution: {integrity: sha512-PbleVugN2tbhl1ZoNWVrZ1oTFFas/Hq+s6zGO8B9bv4w/StTriTKA9W+xZJACOj9X7zwfoTLbscM+avCB1KqOQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-buffer-from': 2.0.0 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: true optional: true - /@smithy/invalid-dependency@2.0.10: - resolution: {integrity: sha512-zw9p/zsmJ2cFcW4KMz3CJoznlbRvEA6HG2mvEaX5eAca5dq4VGI2MwPDTfmteC/GsnURS4ogoMQ0p6aHM2SDVQ==} + /@smithy/invalid-dependency@2.0.11: + resolution: {integrity: sha512-zazq99ujxYv/NOf9zh7xXbNgzoVLsqE0wle8P/1zU/XdhPi/0zohTPKWUzIxjGdqb5hkkwfBkNkl5H+LE0mvgw==} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true @@ -2168,181 +2191,181 @@ packages: dev: true optional: true - /@smithy/middleware-content-length@2.0.12: - resolution: {integrity: sha512-QRhJTo5TjG7oF7np6yY4ZO9GDKFVzU/GtcqUqyEa96bLHE3yZHgNmsolOQ97pfxPHmFhH4vDP//PdpAIN3uI1Q==} + /@smithy/middleware-content-length@2.0.13: + resolution: {integrity: sha512-Md2kxWpaec3bXp1oERFPQPBhOXCkGSAF7uc1E+4rkwjgw3/tqAXRtbjbggu67HJdwaif76As8AV6XxbD1HzqTQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/middleware-endpoint@2.0.10: - resolution: {integrity: sha512-O6m4puZc16xfenotZUHL4bRlMrwf4gTp+0I5l954M5KNd3dOK18P+FA/IIUgnXF/dX6hlCUcJkBp7nAzwrePKA==} + /@smithy/middleware-endpoint@2.0.11: + resolution: {integrity: sha512-mCugsvB15up6fqpzUEpMT4CuJmFkEI+KcozA7QMzYguXCaIilyMKsyxgamwmr+o7lo3QdjN0//XLQ9bWFL129g==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/middleware-serde': 2.0.10 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 - '@smithy/util-middleware': 2.0.3 + '@smithy/middleware-serde': 2.0.11 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: true optional: true - /@smithy/middleware-retry@2.0.13: - resolution: {integrity: sha512-zuOva8xgWC7KYG8rEXyWIcZv2GWszO83DCTU6IKcf/FKu6OBmSE+EYv3EUcCGY+GfiwCX0EyJExC9Lpq9b0w5Q==} + /@smithy/middleware-retry@2.0.16: + resolution: {integrity: sha512-Br5+0yoiMS0ugiOAfJxregzMMGIRCbX4PYo1kDHtLgvkA/d++aHbnHB819m5zOIAMPvPE7AThZgcsoK+WOsUTA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/protocol-http': 3.0.6 - '@smithy/service-error-classification': 2.0.3 - '@smithy/types': 2.3.4 - '@smithy/util-middleware': 2.0.3 - '@smithy/util-retry': 2.0.3 + '@smithy/node-config-provider': 2.1.1 + '@smithy/protocol-http': 3.0.7 + '@smithy/service-error-classification': 2.0.4 + '@smithy/types': 2.3.5 + '@smithy/util-middleware': 2.0.4 + '@smithy/util-retry': 2.0.4 tslib: 2.6.2 uuid: 8.3.2 dev: true optional: true - /@smithy/middleware-serde@2.0.10: - resolution: {integrity: sha512-+A0AFqs768256H/BhVEsBF6HijFbVyAwYRVXY/izJFkTalVWJOp4JA0YdY0dpXQd+AlW0tzs+nMQCE1Ew+DcgQ==} + /@smithy/middleware-serde@2.0.11: + resolution: {integrity: sha512-NuxnjMyf4zQqhwwdh0OTj5RqpnuT6HcH5Xg5GrPijPcKzc2REXVEVK4Yyk8ckj8ez1XSj/bCmJ+oNjmqB02GWA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/middleware-stack@2.0.4: - resolution: {integrity: sha512-MW0KNKfh8ZGLagMZnxcLJWPNXoKqW6XV/st5NnCBmmA2e2JhrUjU0AJ5Ca/yjTyNEKs3xH7AQDwp1YmmpEpmQQ==} + /@smithy/middleware-stack@2.0.5: + resolution: {integrity: sha512-bVQU/rZzBY7CbSxIrDTGZYnBWKtIw+PL/cRc9B7etZk1IKSOe0NvKMJyWllfhfhrTeMF6eleCzOihIQympAvPw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/node-config-provider@2.0.13: - resolution: {integrity: sha512-pPpLqYuJcOq1sj1EGu+DoZK47DUS4gepqSTNgRezmrjnzNlSU2/Dcc9Ebzs+WZ0Z5vXKazuE+k+NksFLo07/AA==} + /@smithy/node-config-provider@2.1.1: + resolution: {integrity: sha512-1lF6s1YWBi1LBu2O30tD3jyTgMtuvk/Z1twzXM4GPYe4dmZix4nNREPJIPOcfFikNU2o0eTYP80+izx5F2jIJA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/node-http-handler@2.1.6: - resolution: {integrity: sha512-NspvD3aCwiUNtoSTcVHz0RZz1tQ/SaRIe1KPF+r0mAdCZ9eWuhIeJT8ZNPYa1ITn7/Lgg64IyFjqPynZ8KnYQw==} + /@smithy/node-http-handler@2.1.7: + resolution: {integrity: sha512-PQIKZXlp3awCDn/xNlCSTFE7aYG/5Tx33M05NfQmWYeB5yV1GZZOSz4dXpwiNJYTXb9jPqjl+ueXXkwtEluFFA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/abort-controller': 2.0.10 - '@smithy/protocol-http': 3.0.6 - '@smithy/querystring-builder': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/abort-controller': 2.0.11 + '@smithy/protocol-http': 3.0.7 + '@smithy/querystring-builder': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/property-provider@2.0.11: - resolution: {integrity: sha512-kzuOadu6XvrnlF1iXofpKXYmo4oe19st9/DE8f5gHNaFepb4eTkR8gD8BSdTnNnv7lxfv6uOwZPg4VS6hemX1w==} + /@smithy/property-provider@2.0.12: + resolution: {integrity: sha512-Un/OvvuQ1Kg8WYtoMCicfsFFuHb/TKL3pCA6ZIo/WvNTJTR94RtoRnL7mY4XkkUAoFMyf6KjcQJ76y1FX7S5rw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/protocol-http@3.0.6: - resolution: {integrity: sha512-F0jAZzwznMmHaggiZgc7YoS08eGpmLvhVktY/Taz6+OAOHfyIqWSDNgFqYR+WHW9z5fp2XvY4mEUrQgYMQ71jw==} + /@smithy/protocol-http@3.0.7: + resolution: {integrity: sha512-HnZW8y+r66ntYueCDbLqKwWcMNWW8o3eVpSrHNluwtBJ/EUWfQHRKSiu6vZZtc6PGfPQWgVfucoCE/C3QufMAA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/querystring-builder@2.0.10: - resolution: {integrity: sha512-uujJGp8jzrrU1UHme8sUKEbawQTcTmUWsh8rbGXYD/lMwNLQ+9jQ9dMDWbbH9Hpoa9RER1BeL/38WzGrbpob2w==} + /@smithy/querystring-builder@2.0.11: + resolution: {integrity: sha512-b4kEbVMxpmfv2VWUITn2otckTi7GlMteZQxi+jlwedoATOGEyrCJPfRcYQJjbCi3fZ2QTfh3PcORvB27+j38Yg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-uri-escape': 2.0.0 tslib: 2.6.2 dev: true optional: true - /@smithy/querystring-parser@2.0.10: - resolution: {integrity: sha512-WSD4EU60Q8scacT5PIpx4Bahn6nWpt+MiYLcBkFt6fOj7AssrNeaNIU2Z0g40ftVmrwLcEOIKGX92ynbVDb3ZA==} + /@smithy/querystring-parser@2.0.11: + resolution: {integrity: sha512-YXe7jhi7s3dQ0Fu9dLoY/gLu6NCyy8tBWJL/v2c9i7/RLpHgKT+uT96/OqZkHizCJ4kr0ZD46tzMjql/o60KLg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/service-error-classification@2.0.3: - resolution: {integrity: sha512-b+m4QCHXb7oKAkM/jHwHrl5gpqhFoMTHF643L0/vAEkegrcUWyh1UjyoHttuHcP5FnHVVy4EtpPtLkEYD+xMFw==} + /@smithy/service-error-classification@2.0.4: + resolution: {integrity: sha512-77506l12I5gxTZqBkx3Wb0RqMG81bMYLaVQ+EqIWFwQDJRs5UFeXogKxSKojCmz1wLUziHZQXm03MBzPQiumQw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 dev: true optional: true - /@smithy/shared-ini-file-loader@2.0.12: - resolution: {integrity: sha512-umi0wc4UBGYullAgYNUVfGLgVpxQyES47cnomTqzCKeKO5oudO4hyDNj+wzrOjqDFwK2nWYGVgS8Y0JgGietrw==} + /@smithy/shared-ini-file-loader@2.2.0: + resolution: {integrity: sha512-xFXqs4vAb5BdkzHSRrTapFoaqS4/3m/CGZzdw46fBjYZ0paYuLAoMY60ICCn1FfGirG+PiJ3eWcqJNe4/SkfyA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/signature-v4@2.0.10: - resolution: {integrity: sha512-S6gcP4IXfO/VMswovrhxPpqvQvMal7ZRjM4NvblHSPpE5aNBYx67UkHFF3kg0hR3tJKqNpBGbxwq0gzpdHKLRA==} + /@smithy/signature-v4@2.0.11: + resolution: {integrity: sha512-EFVU1dT+2s8xi227l1A9O27edT/GNKvyAK6lZnIZ0zhIHq/jSLznvkk15aonGAM1kmhmZBVGpI7Tt0odueZK9A==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/eventstream-codec': 2.0.10 + '@smithy/eventstream-codec': 2.0.11 '@smithy/is-array-buffer': 2.0.0 - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-hex-encoding': 2.0.0 - '@smithy/util-middleware': 2.0.3 + '@smithy/util-middleware': 2.0.4 '@smithy/util-uri-escape': 2.0.0 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: true optional: true - /@smithy/smithy-client@2.1.8: - resolution: {integrity: sha512-Puuc4wuhdTSs8wstkNJ/JtpaFwIh0qDE27zawfRVzzjpXprpT+4wROqO2+NVoZ+6GKv7kz7QgZx6AI5325bSeQ==} + /@smithy/smithy-client@2.1.10: + resolution: {integrity: sha512-2OEmZDiW1Z196QHuQZ5M6cBE8FCSG0H2HADP1G+DY8P3agsvb0YJyfhyKuJbxIQy15tr3eDAK6FOrlbxgKOOew==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/middleware-stack': 2.0.4 - '@smithy/types': 2.3.4 - '@smithy/util-stream': 2.0.13 + '@smithy/middleware-stack': 2.0.5 + '@smithy/types': 2.3.5 + '@smithy/util-stream': 2.0.15 tslib: 2.6.2 dev: true optional: true - /@smithy/types@2.3.4: - resolution: {integrity: sha512-D7xlM9FOMFyFw7YnMXn9dK2KuN6+JhnrZwVt1fWaIu8hCk5CigysweeIT/H/nCo4YV+s8/oqUdLfexbkPZtvqw==} + /@smithy/types@2.3.5: + resolution: {integrity: sha512-ehyDt8M9hehyxrLQGoA1BGPou8Js1Ocoh5M0ngDhJMqbFmNK5N6Xhr9/ZExWkyIW8XcGkiMPq3ZUEE0ScrhbuQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: @@ -2350,12 +2373,12 @@ packages: dev: true optional: true - /@smithy/url-parser@2.0.10: - resolution: {integrity: sha512-4TXQFGjHcqru8aH5VRB4dSnOFKCYNX6SR1Do6fwxZ+ExT2onLsh2W77cHpks7ma26W5jv6rI1u7d0+KX9F0aOw==} + /@smithy/url-parser@2.0.11: + resolution: {integrity: sha512-h89yXMCCF+S5k9XIoKltMIWTYj+FcEkU/IIFZ6RtE222fskOTL4Iak6ZRG+ehSvZDt8yKEcxqheTDq7JvvtK3g==} requiresBuild: true dependencies: - '@smithy/querystring-parser': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/querystring-parser': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true @@ -2406,30 +2429,30 @@ packages: dev: true optional: true - /@smithy/util-defaults-mode-browser@2.0.12: - resolution: {integrity: sha512-BCsFPdNThMS2312/Zj3/TtFsXfO2BwkbDNsoWbdtZ0cAv9cE6vqGKllYXmq2Gj6u+Vv8V3wUgBUicNol6s/7Sg==} + /@smithy/util-defaults-mode-browser@2.0.14: + resolution: {integrity: sha512-NupG7SWUucm3vJrvlpt9jG1XeoPJphjcivgcUUXhDJbUPy4F04LhlTiAhWSzwlCNcF8OJsMvZ/DWbpYD3pselw==} engines: {node: '>= 10.0.0'} requiresBuild: true dependencies: - '@smithy/property-provider': 2.0.11 - '@smithy/smithy-client': 2.1.8 - '@smithy/types': 2.3.4 + '@smithy/property-provider': 2.0.12 + '@smithy/smithy-client': 2.1.10 + '@smithy/types': 2.3.5 bowser: 2.11.0 tslib: 2.6.2 dev: true optional: true - /@smithy/util-defaults-mode-node@2.0.14: - resolution: {integrity: sha512-EtomtYsWDkBGs0fLeF+7N2df+zIqGix+O4llWqQD+97rbo2hk+GBWeZzBkujKrzFeXNUbPkFqfvZPLdoq4S4XQ==} + /@smithy/util-defaults-mode-node@2.0.18: + resolution: {integrity: sha512-+3jMom/b/Cdp21tDnY4vKu249Al+G/P0HbRbct7/aSZDlROzv1tksaYukon6UUv7uoHn+/McqnsvqZHLlqvQ0g==} engines: {node: '>= 10.0.0'} requiresBuild: true dependencies: - '@smithy/config-resolver': 2.0.11 - '@smithy/credential-provider-imds': 2.0.13 - '@smithy/node-config-provider': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/smithy-client': 2.1.8 - '@smithy/types': 2.3.4 + '@smithy/config-resolver': 2.0.14 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/node-config-provider': 2.1.1 + '@smithy/property-provider': 2.0.12 + '@smithy/smithy-client': 2.1.10 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true @@ -2443,35 +2466,35 @@ packages: dev: true optional: true - /@smithy/util-middleware@2.0.3: - resolution: {integrity: sha512-+FOCFYOxd2HO7v/0hkFSETKf7FYQWa08wh/x/4KUeoVBnLR4juw8Qi+TTqZI6E2h5LkzD9uOaxC9lAjrpVzaaA==} + /@smithy/util-middleware@2.0.4: + resolution: {integrity: sha512-Pbu6P4MBwRcjrLgdTR1O4Y3c0sTZn2JdOiJNcgL7EcIStcQodj+6ZTXtbyU/WTEU3MV2NMA10LxFc3AWHZ3+4A==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/util-retry@2.0.3: - resolution: {integrity: sha512-gw+czMnj82i+EaH7NL7XKkfX/ZKrCS2DIWwJFPKs76bMgkhf0y1C94Lybn7f8GkBI9lfIOUdPYtzm19zQOC8sw==} + /@smithy/util-retry@2.0.4: + resolution: {integrity: sha512-b+n1jBBKc77C1E/zfBe1Zo7S9OXGBiGn55N0apfhZHxPUP/fMH5AhFUUcWaJh7NAnah284M5lGkBKuhnr3yK5w==} engines: {node: '>= 14.0.0'} requiresBuild: true dependencies: - '@smithy/service-error-classification': 2.0.3 - '@smithy/types': 2.3.4 + '@smithy/service-error-classification': 2.0.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: true optional: true - /@smithy/util-stream@2.0.13: - resolution: {integrity: sha512-aeua6pN0WMdQtZNRRJ8J+mop57fezLMsApYbk5Q3q11pyHwZypVPuKoelr7K9PMJZcuYk90dQyUsUAd7hTCeRg==} + /@smithy/util-stream@2.0.15: + resolution: {integrity: sha512-A/hkYJPH2N5MCWYvky4tTpQihpYAEzqnUfxDyG3L/yMndy/2sLvxnyQal9Opuj1e9FiKSTeMyjnU9xxZGs0mRw==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/fetch-http-handler': 2.2.0 - '@smithy/node-http-handler': 2.1.6 - '@smithy/types': 2.3.4 + '@smithy/fetch-http-handler': 2.2.2 + '@smithy/node-http-handler': 2.1.7 + '@smithy/types': 2.3.5 '@smithy/util-base64': 2.0.0 '@smithy/util-buffer-from': 2.0.0 '@smithy/util-hex-encoding': 2.0.0 @@ -2547,7 +2570,7 @@ packages: /@types/jsdom@21.1.3: resolution: {integrity: sha512-1zzqSP+iHJYV4lB3lZhNBa012pubABkj9yG/GuXuf6LZH1cSPIJBqFDrm5JX65HHt6VOnNYdTui/0ySerRbMgA==} dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.3 '@types/tough-cookie': 4.0.3 parse5: 7.1.2 dev: true @@ -2571,12 +2594,12 @@ packages: /@types/node-fetch@2.6.6: resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.3 form-data: 4.0.0 dev: true - /@types/node@20.7.2: - resolution: {integrity: sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==} + /@types/node@20.8.3: + resolution: {integrity: sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==} dev: true /@types/normalize-package-data@2.4.2: @@ -2594,7 +2617,7 @@ packages: /@types/set-cookie-parser@2.4.4: resolution: {integrity: sha512-xCfTC/eL/GmvMC24b42qJpYSTdCIBwWcfskDF80ztXtnU6pKXyvuZP2EConb2K9ps0s7gMhCa0P1foy7wiItMA==} dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.3 dev: true /@types/tough-cookie@4.0.3: @@ -2608,7 +2631,7 @@ packages: /@types/tunnel@0.0.3: resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.3 dev: true /@types/validator@13.11.2: @@ -2622,11 +2645,11 @@ packages: /@types/whatwg-url@8.2.2: resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.3 '@types/webidl-conversions': 7.0.1 dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2637,13 +2660,13 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.9.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.2.2) + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -2654,7 +2677,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/parser@5.62.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2668,7 +2691,7 @@ packages: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -2682,7 +2705,7 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@5.62.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2693,9 +2716,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -2728,19 +2751,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.62.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.50.0 + eslint: 8.51.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -2781,14 +2804,14 @@ packages: - encoding dev: true - /@vitejs/plugin-vue@4.3.4(vite@4.4.9)(vue@3.3.4): - resolution: {integrity: sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==} + /@vitejs/plugin-vue@4.4.0(vite@4.4.11)(vue@3.3.4): + resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.7.2) + vite: 4.4.11(@types/node@20.8.3) vue: 3.3.4 dev: true @@ -2803,11 +2826,11 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - magic-string: 0.30.3 + magic-string: 0.30.4 picocolors: 1.0.0 std-env: 3.4.3 test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 + v8-to-istanbul: 9.1.3 vitest: 0.34.6(jsdom@22.1.0) transitivePeerDependencies: - supports-color @@ -2832,7 +2855,7 @@ packages: /@vitest/snapshot@0.34.6: resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.3 + magic-string: 0.30.4 pathe: 1.1.1 pretty-format: 29.7.0 dev: true @@ -2840,7 +2863,7 @@ packages: /@vitest/spy@0.34.6: resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: - tinyspy: 2.1.1 + tinyspy: 2.2.0 dev: true /@vitest/utils@0.34.6: @@ -2877,8 +2900,8 @@ packages: '@vue/reactivity-transform': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.3 - postcss: 8.4.30 + magic-string: 0.30.4 + postcss: 8.4.31 source-map-js: 1.0.2 dev: true @@ -2896,7 +2919,7 @@ packages: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.3 + magic-string: 0.30.4 dev: true /@vue/reactivity@3.3.4: @@ -2991,6 +3014,15 @@ packages: - supports-color dev: true + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -3064,7 +3096,7 @@ packages: dev: true /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} dev: true /array-includes@3.1.7: @@ -3192,7 +3224,7 @@ packages: tslib: 2.6.2 uri-templates: 0.2.0 uuid: 3.4.0 - winston: 3.10.0 + winston: 3.11.0 xml2js: 0.6.2 transitivePeerDependencies: - debug @@ -3308,8 +3340,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001541 - electron-to-chromium: 1.4.535 + caniuse-lite: 1.0.30001546 + electron-to-chromium: 1.4.544 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true @@ -3331,7 +3363,7 @@ packages: dev: true /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} dev: true /buffer@5.7.1: @@ -3377,7 +3409,7 @@ packages: chokidar: 3.5.3 defu: 6.1.2 dotenv: 16.3.1 - giget: 1.1.2 + giget: 1.1.3 jiti: 1.20.0 mlly: 1.4.2 ohash: 1.1.3 @@ -3416,8 +3448,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001541: - resolution: {integrity: sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==} + /caniuse-lite@1.0.30001546: + resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==} dev: true /chai@4.3.10: @@ -3507,8 +3539,8 @@ packages: engines: {node: '>=10'} dev: true - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} dev: true @@ -3626,7 +3658,7 @@ packages: dev: true /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true /consola@3.2.3: @@ -3649,10 +3681,6 @@ packages: resolution: {integrity: sha512-t5yxPyI8h8KPvRwrS/sRrfIpT2gJbmBAY0TFokyUBy3PM44RuFRpZwHdACz+GTSPLRLo3s4qsscOMLjHiXBwzw==} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true @@ -3898,11 +3926,11 @@ packages: dev: true /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: true - /electron-to-chromium@1.4.535: - resolution: {integrity: sha512-4548PpR4S5X5dlvX8NUIw0njH7btQtBoJWcgzpq7n2F9NQ5gMXOPP/6p6iVx6+YT3FVioNhEGa14WJj1k+2SfA==} + /electron-to-chromium@1.4.544: + resolution: {integrity: sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==} dev: true /emoji-regex@8.0.0: @@ -3958,7 +3986,7 @@ packages: get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.3 + has: 1.0.4 has-property-descriptors: 1.0.0 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -4007,14 +4035,14 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 has-tostringtag: 1.0.0 dev: true /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: - has: 1.0.3 + has: 1.0.4 dev: true /es-to-primitive@1.2.1: @@ -4105,16 +4133,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.10.0(eslint@8.50.0): + /eslint-config-prettier@8.10.0(eslint@8.51.0): resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.50.0 + eslint: 8.51.0 dev: true - /eslint-config-standard@17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0): + /eslint-config-standard@17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.51.0): resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -4123,29 +4151,29 @@ packages: eslint-plugin-n: '^15.0.0 || ^16.0.0 ' eslint-plugin-promise: ^6.0.0 dependencies: - eslint: 8.50.0 - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0) - eslint-plugin-n: 16.1.0(eslint@8.50.0) - eslint-plugin-promise: 6.1.1(eslint@8.50.0) + eslint: 8.51.0 + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) + eslint-plugin-n: 16.1.0(eslint@8.51.0) + eslint-plugin-promise: 6.1.1(eslint@8.51.0) dev: true - /eslint-config-unjs@0.2.1(eslint@8.50.0)(typescript@5.2.2): + /eslint-config-unjs@0.2.1(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-h17q+WR86glq8yLFuHfEnAFfbEYqXpJAppXc0e0fQz0gsotJQ14BZVrlvIThE2a+stWyh0VT73gbBPfosl2rVA==} peerDependencies: eslint: '*' typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.2.2) - eslint: 8.50.0 - eslint-config-prettier: 8.10.0(eslint@8.50.0) - eslint-config-standard: 17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.50.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.50.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0) - eslint-plugin-n: 16.1.0(eslint@8.50.0) - eslint-plugin-node: 11.1.0(eslint@8.50.0) - eslint-plugin-promise: 6.1.1(eslint@8.50.0) - eslint-plugin-unicorn: 47.0.0(eslint@8.50.0) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-config-prettier: 8.10.0(eslint@8.51.0) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.51.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) + eslint-plugin-n: 16.1.0(eslint@8.51.0) + eslint-plugin-node: 11.1.0(eslint@8.51.0) + eslint-plugin-promise: 6.1.1(eslint@8.51.0) + eslint-plugin-unicorn: 47.0.0(eslint@8.51.0) typescript: 5.2.2 transitivePeerDependencies: - eslint-import-resolver-node @@ -4163,7 +4191,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.50.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4172,9 +4200,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.50.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0) + eslint: 8.51.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) fast-glob: 3.3.1 get-tsconfig: 4.7.2 is-core-module: 2.13.0 @@ -4186,7 +4214,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -4207,38 +4235,38 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.50.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.50.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.50.0): + /eslint-plugin-es-x@7.2.0(eslint@8.51.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.9.0 - eslint: 8.50.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 + eslint: 8.51.0 dev: true - /eslint-plugin-es@3.0.1(eslint@8.50.0): + /eslint-plugin-es@3.0.1(eslint@8.51.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.50.0 + eslint: 8.51.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -4248,17 +4276,17 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.51.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.50.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0) - has: 1.0.3 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) + has: 1.0.4 is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 @@ -4273,16 +4301,16 @@ packages: - supports-color dev: true - /eslint-plugin-n@16.1.0(eslint@8.50.0): + /eslint-plugin-n@16.1.0(eslint@8.51.0): resolution: {integrity: sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) builtins: 5.0.1 - eslint: 8.50.0 - eslint-plugin-es-x: 7.2.0(eslint@8.50.0) + eslint: 8.51.0 + eslint-plugin-es-x: 7.2.0(eslint@8.51.0) get-tsconfig: 4.7.2 ignore: 5.2.4 is-core-module: 2.13.0 @@ -4291,14 +4319,14 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-node@11.1.0(eslint@8.50.0): + /eslint-plugin-node@11.1.0(eslint@8.51.0): resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 8.50.0 - eslint-plugin-es: 3.0.1(eslint@8.50.0) + eslint: 8.51.0 + eslint-plugin-es: 3.0.1(eslint@8.51.0) eslint-utils: 2.1.0 ignore: 5.2.4 minimatch: 3.1.2 @@ -4306,26 +4334,26 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.50.0): + /eslint-plugin-promise@6.1.1(eslint@8.51.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.50.0 + eslint: 8.51.0 dev: true - /eslint-plugin-unicorn@47.0.0(eslint@8.50.0): + /eslint-plugin-unicorn@47.0.0(eslint@8.51.0): resolution: {integrity: sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.38.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - ci-info: 3.8.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 8.50.0 + eslint: 8.51.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -4373,15 +4401,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.50.0: - resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.9.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.50.0 + '@eslint/js': 8.51.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -4400,7 +4428,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.22.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -4606,8 +4634,8 @@ packages: dev: true optional: true - /fast-xml-parser@4.3.1: - resolution: {integrity: sha512-viVv3xb8D+SiS1W4cv4tva3bni08kAkx0gQnWrykMM8nXPc1FxqZPU00dCEVjkiCg4HoXd2jC4x29Nzg/l2DAA==} + /fast-xml-parser@4.3.2: + resolution: {integrity: sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==} hasBin: true dependencies: strnum: 1.0.5 @@ -4656,7 +4684,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.1.1 dev: true /fill-range@7.0.1: @@ -4705,12 +4733,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.9 - keyv: 4.5.3 + keyv: 4.5.4 rimraf: 3.0.2 dev: true @@ -4846,7 +4874,7 @@ packages: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 - has: 1.0.3 + has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 dev: true @@ -4883,13 +4911,13 @@ packages: resolve-pkg-maps: 1.0.0 dev: true - /giget@1.1.2: - resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} + /giget@1.1.3: + resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} hasBin: true dependencies: colorette: 2.0.20 defu: 6.1.2 - https-proxy-agent: 5.0.1 + https-proxy-agent: 7.0.2 mri: 1.2.0 node-fetch-native: 1.4.0 pathe: 1.1.1 @@ -4942,8 +4970,8 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.22.0: - resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -5048,11 +5076,9 @@ packages: has-symbols: 1.0.3 dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 dev: true /headers-polyfill@3.2.5: @@ -5115,6 +5141,16 @@ packages: - supports-color dev: true + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -5216,7 +5252,7 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 side-channel: 1.0.4 dev: true @@ -5324,7 +5360,7 @@ packages: /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: - has: 1.0.3 + has: 1.0.4 dev: true /is-date-object@1.0.5: @@ -5711,8 +5747,8 @@ packages: safe-buffer: 5.2.1 dev: true - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 dev: true @@ -5890,8 +5926,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.3: - resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} + /magic-string@0.30.4: + resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -5918,17 +5954,16 @@ packages: dev: true /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} dev: true /memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - requiresBuild: true dev: true /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} dev: true /merge-stream@2.0.0: @@ -6085,8 +6120,8 @@ packages: whatwg-url: 11.0.0 dev: true - /mongodb-memory-server-core@8.15.1: - resolution: {integrity: sha512-U6ntro5DvUD71C2juKCzzc2Hul0qLYUpQLiXcXDcvtNDbGMoJgwKScdvptQkzQwUdICeZUfvZo8By7Mc09Umog==} + /mongodb-memory-server-core@8.16.0: + resolution: {integrity: sha512-wyNo8yj6se7KH49hQmRtiwide7DnGINUGa1m84RyX1NU9DkCrTwbOV2VbPgd3+55DZfRup/DebU1M1zEv+3Rng==} engines: {node: '>=12.22.0'} dependencies: async-mutex: 0.3.2 @@ -6109,12 +6144,12 @@ packages: - supports-color dev: true - /mongodb-memory-server@8.15.1: - resolution: {integrity: sha512-nqIbM5oh1s46VV4InhqQdNFu5szx+xi6qT//87beQ10JCZHLG1nZ/SUMsXkKLNn9wvs19OAf5HwI60enK9ZOuA==} + /mongodb-memory-server@8.16.0: + resolution: {integrity: sha512-oaeu2GZWycIysTj18b1gZ6d+CqWeQQZe5f8ml8Z1buaGAn3GcrGdbG5+0fseEO5ANQzcjA92qHhbsImgXeEmIQ==} engines: {node: '>=12.22.0'} requiresBuild: true dependencies: - mongodb-memory-server-core: 8.15.1 + mongodb-memory-server-core: 8.16.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt @@ -6129,7 +6164,7 @@ packages: mongodb-connection-string-url: 2.6.0 socks: 2.7.1 optionalDependencies: - '@aws-sdk/credential-providers': 3.421.0 + '@aws-sdk/credential-providers': 3.427.0 '@mongodb-js/saslprep': 1.1.0 transitivePeerDependencies: - aws-crt @@ -6200,8 +6235,8 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@1.3.1(typescript@5.2.2): - resolution: {integrity: sha512-GhP5lHSTXNlZb9EaKgPRJ01YAnVXwzkvnTzRn4W8fxU2DXuJrRO+Nb6OHdYqB4fCkwSNpIJH9JkON5Y6rHqJMQ==} + /msw@1.3.2(typescript@5.2.2): + resolution: {integrity: sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==} engines: {node: '>=14'} hasBin: true requiresBuild: true @@ -6274,10 +6309,6 @@ packages: hasBin: true dev: true - /napi-wasm@1.1.0: - resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} - dev: false - /native-duplexpair@1.0.0: resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==} dev: true @@ -6672,8 +6703,8 @@ packages: engines: {node: '>=4'} dev: true - /postcss@8.4.30: - resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==} + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -6939,14 +6970,14 @@ packages: glob: 7.2.3 dev: true - /rollup-plugin-dts@6.0.2(rollup@3.29.4)(typescript@5.2.2): - resolution: {integrity: sha512-GYCCy9DyE5csSuUObktJBpjNpW2iLZMabNDIiAqzQWBl7l/WHzjvtAXevf8Lftk8EA920tuxeB/g8dM8MVMR6A==} - engines: {node: '>=v16'} + /rollup-plugin-dts@6.1.0(rollup@3.29.4)(typescript@5.2.2): + resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} + engines: {node: '>=16'} peerDependencies: - rollup: ^3.25 + rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 dependencies: - magic-string: 0.30.3 + magic-string: 0.30.4 rollup: 3.29.4 typescript: 5.2.2 optionalDependencies: @@ -7253,7 +7284,6 @@ packages: /sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - requiresBuild: true dependencies: memory-pager: 1.5.0 dev: true @@ -7262,7 +7292,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.15 + spdx-license-ids: 3.0.16 dev: true /spdx-exceptions@2.3.0: @@ -7273,11 +7303,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.15 + spdx-license-ids: 3.0.16 dev: true - /spdx-license-ids@3.0.15: - resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==} + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} dev: true /sprintf-js@1.1.3: @@ -7513,8 +7543,8 @@ packages: engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} dev: true @@ -7763,12 +7793,12 @@ packages: typescript: optional: true dependencies: - '@rollup/plugin-alias': 5.0.0(rollup@3.29.4) - '@rollup/plugin-commonjs': 25.0.4(rollup@3.29.4) - '@rollup/plugin-json': 6.0.0(rollup@3.29.4) - '@rollup/plugin-node-resolve': 15.2.1(rollup@3.29.4) - '@rollup/plugin-replace': 5.0.2(rollup@3.29.4) - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/plugin-alias': 5.0.1(rollup@3.29.4) + '@rollup/plugin-commonjs': 25.0.5(rollup@3.29.4) + '@rollup/plugin-json': 6.0.1(rollup@3.29.4) + '@rollup/plugin-node-resolve': 15.2.3(rollup@3.29.4) + '@rollup/plugin-replace': 5.0.3(rollup@3.29.4) + '@rollup/pluginutils': 5.0.5(rollup@3.29.4) chalk: 5.3.0 citty: 0.1.4 consola: 3.2.3 @@ -7777,14 +7807,14 @@ packages: globby: 13.2.2 hookable: 5.5.3 jiti: 1.20.0 - magic-string: 0.30.3 + magic-string: 0.30.4 mkdist: 1.3.0(typescript@5.2.2) mlly: 1.4.2 pathe: 1.1.1 pkg-types: 1.0.3 pretty-bytes: 6.1.1 rollup: 3.29.4 - rollup-plugin-dts: 6.0.2(rollup@3.29.4)(typescript@5.2.2) + rollup-plugin-dts: 6.1.0(rollup@3.29.4)(typescript@5.2.2) scule: 1.0.0 typescript: 5.2.2 untyped: 1.4.0 @@ -7902,7 +7932,7 @@ packages: dev: true /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} engines: {node: '>= 0.4.0'} dev: true @@ -7922,13 +7952,13 @@ packages: hasBin: true dev: true - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + /v8-to-istanbul@9.1.3: + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 + convert-source-map: 2.0.0 dev: true /validate-npm-package-license@3.0.4: @@ -7948,7 +7978,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.7.2): + /vite-node@0.34.6(@types/node@20.8.3): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7958,7 +7988,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.7.2) + vite: 4.4.11(@types/node@20.8.3) transitivePeerDependencies: - '@types/node' - less @@ -7970,8 +8000,8 @@ packages: - terser dev: true - /vite@4.4.9(@types/node@20.7.2): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + /vite@4.4.11(@types/node@20.8.3): + resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7998,9 +8028,9 @@ packages: terser: optional: true dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.3 esbuild: 0.18.20 - postcss: 8.4.30 + postcss: 8.4.31 rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 @@ -8039,7 +8069,7 @@ packages: dependencies: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 - '@types/node': 20.7.2 + '@types/node': 20.8.3 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -8052,15 +8082,15 @@ packages: debug: 4.3.4 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.3 + magic-string: 0.30.4 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.7.2) - vite-node: 0.34.6(@types/node@20.7.2) + vite: 4.4.11(@types/node@20.8.3) + vite-node: 0.34.6(@types/node@20.8.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -8215,11 +8245,11 @@ packages: triple-beam: 1.4.1 dev: true - /winston@3.10.0: - resolution: {integrity: sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==} + /winston@3.11.0: + resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} engines: {node: '>= 12.0.0'} dependencies: - '@colors/colors': 1.5.0 + '@colors/colors': 1.6.0 '@dabh/diagnostics': 2.0.3 async: 3.2.4 is-stream: 2.0.1 @@ -8235,7 +8265,7 @@ packages: /wkx@0.5.0: resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==} dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.3 dev: true /wrap-ansi@6.2.0: diff --git a/src/drivers/redis-upstash.ts b/src/drivers/redis-upstash.ts index 0e6d380e..10fa089d 100644 --- a/src/drivers/redis-upstash.ts +++ b/src/drivers/redis-upstash.ts @@ -1,31 +1,16 @@ -import { defineDriver, joinKeys } from "./utils"; -import Redis, { - Cluster, - ClusterNode, - ClusterOptions, - RedisOptions as _RedisOptions, -} from "ioredis"; +import { createError, defineDriver, joinKeys } from "./utils"; +import { Redis, type RedisConfigNodejs } from "@upstash/redis"; -export interface RedisOptions extends _RedisOptions { +export interface RedisOptions extends Partial { /** * Optional prefix to use for all keys. Can be used for namespacing. */ base?: string; /** - * Url to use for connecting to redis. Takes precedence over `host` option. Has the format `redis://:@:` + * Optional flag to customize environment variable prefix (Default is `UPSTASH_REDIS_REST`). */ - url?: string; - - /** - * List of redis nodes to use for cluster mode. Takes precedence over `url` and `host` options. - */ - cluster?: ClusterNode[]; - - /** - * Options to use for cluster mode. - */ - clusterOptions?: ClusterOptions; + envPrefix?: false | string; /** * Default TTL for all items in seconds. @@ -33,28 +18,37 @@ export interface RedisOptions extends _RedisOptions { ttl?: number; } -const DRIVER_NAME = "redis"; +const DRIVER_NAME = "redis-upstash"; +const validate = (option: string | undefined, envOption: string): string => { + if (option) { + return option; + } + const env = process.env[envOption]; + if (env) { + return env; + } + throw createError( + DRIVER_NAME, + `missing required option or environment variable '${envOption}'.` + ); +}; export default defineDriver((opts: RedisOptions = {}) => { - let redisClient: Redis | Cluster; + let redisClient: Redis; + const getRedisClient = () => { if (redisClient) { return redisClient; } - if (opts.cluster) { - redisClient = new Redis.Cluster(opts.cluster, opts.clusterOptions); - } else if (opts.url) { - redisClient = new Redis(opts.url, opts); - } else { - redisClient = new Redis(opts); - } + const envPrefix = opts.envPrefix || "UPSTASH_REDIS_REST"; + const url = validate(opts.url, `${envPrefix}_URL`); + const token = validate(opts.token, `${envPrefix}_TOKEN`); + redisClient = new Redis({ url, token }); return redisClient; }; const base = (opts.base || "").replace(/:$/, ""); - const p = (...keys: string[]) => joinKeys(base, ...keys); // Prefix a key. Uses base for backwards compatibility - const d = (key: string) => (base ? key.replace(base, "") : key); // Deprefix a key - + const p = (...keys: string[]) => joinKeys(base, ...keys); return { name: DRIVER_NAME, options: opts, @@ -62,35 +56,24 @@ export default defineDriver((opts: RedisOptions = {}) => { return Boolean(await getRedisClient().exists(p(key))); }, async getItem(key) { - const value = await getRedisClient().get(p(key)); - return value === null ? null : value; + return getRedisClient().get(p(key)); }, async setItem(key, value, tOptions) { let ttl = tOptions?.ttl ?? opts.ttl; - if (ttl) { - await getRedisClient().set(p(key), value, "EX", ttl); - } else { - await getRedisClient().set(p(key), value); - } + await getRedisClient().set(p(key), value, ttl ? { ex: ttl } : undefined); }, async removeItem(key) { await getRedisClient().del(p(key)); }, async getKeys(base) { - const keys: string[] = await getRedisClient().keys(p(base, "*")); - return keys.map((key) => d(key)); + return getRedisClient().keys(p(base, "*")); }, async clear(base) { const keys = await getRedisClient().keys(p(base, "*")); if (keys.length === 0) { return; } - return getRedisClient() - .del(keys) - .then(() => {}); - }, - dispose() { - return getRedisClient().disconnect(); + await getRedisClient().del(...keys); }, }; }); diff --git a/src/types.ts b/src/types.ts index e33a8da5..14c2d916 100644 --- a/src/types.ts +++ b/src/types.ts @@ -34,7 +34,7 @@ export interface Driver { setItem?: ( key: string, value: string, - opts: TransactionOptions + opts?: TransactionOptions ) => MaybePromise; /** @experimental */ setItems?: ( diff --git a/test/drivers/redis-upstash.test.ts b/test/drivers/redis-upstash.test.ts new file mode 100644 index 00000000..1e49ebf1 --- /dev/null +++ b/test/drivers/redis-upstash.test.ts @@ -0,0 +1,17 @@ +import { describe, it } from "vitest"; +import { testDriver } from "./utils"; +import driver from "../../src/drivers/redis-upstash"; + +import "dotenv/config"; + +// TODO: Similarly to vercel KV, we could create an UnJS test database on the upstash free tier, or mock the client. +const hasEnv = + process.env.UPSTASH_REDIS_REST_URL && process.env.UPSTASH_REDIS_REST_TOKEN; + +describe("drivers: redis-upstash", async () => { + if (hasEnv) { + testDriver({ + driver: driver({}), + }); + } +}); From 0b87c2cf31da957cb44a5cf51d668ed32cf1d0b4 Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Thu, 17 Aug 2023 19:57:43 +0700 Subject: [PATCH 3/8] docs: add upstash docs --- docs/content/6.drivers/redis.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/content/6.drivers/redis.md b/docs/content/6.drivers/redis.md index 26ef55bb..a3e0d688 100644 --- a/docs/content/6.drivers/redis.md +++ b/docs/content/6.drivers/redis.md @@ -58,3 +58,34 @@ See [ioredis](https://github.com/luin/ioredis/blob/master/API.md#new-redisport-h **Transaction options:** - `ttl`: Supported for `setItem(key, value, { ttl: number /* seconds */ })` + +## Upstash Redis + +[Upstash](https://upstash.com/) is a serverless Redis cloud service. The `redis-upstash` driver is a HTTP only driver that can be used in environment where TCP isn't available. + +```ts +import { createStorage } from "unstorage"; +import redisUpstashDriver from "unstorage/drivers/redis-upstash"; + +const storage = createStorage({ + driver: redisUpstashDriver({ + base: "unstorage", + url: "https://your-upstash-db.com", + token: "your-token", + }), +}); +``` + +**Options:** + +- `url`: Url of your upstash redis database. This will default to the value of the `UPSTASH_REDIS_REST_URL` environment variable if not provided. +- `token`: Authorization token. This will default to the value of the `UPSTASH_REDIS_REST_TOKEN` environment variable if not provided. +- `base`: Optional prefix to use for all keys. Can be used for namespacing. Has to be used as hastag prefix for redis cluster mode. +- `envPrefix`: Optional prefix for your environment variables. Defaults to `UPSTASH_REDIS_REST`. +- `ttl`: Default TTL for all items in **seconds**. + +See [upstash driver docs](https://github.com/upstash/upstash-redis) for all available options. + +**Transaction options:** + +- `ttl`: Supported for `setItem(key, value, { ttl: number /* seconds */ })` From 98bff34193776991a09eadcf4a473309fb4c9f00 Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Thu, 17 Aug 2023 20:02:28 +0700 Subject: [PATCH 4/8] docs: fix typos --- docs/content/6.drivers/redis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/6.drivers/redis.md b/docs/content/6.drivers/redis.md index a3e0d688..77434a02 100644 --- a/docs/content/6.drivers/redis.md +++ b/docs/content/6.drivers/redis.md @@ -61,7 +61,7 @@ See [ioredis](https://github.com/luin/ioredis/blob/master/API.md#new-redisport-h ## Upstash Redis -[Upstash](https://upstash.com/) is a serverless Redis cloud service. The `redis-upstash` driver is a HTTP only driver that can be used in environment where TCP isn't available. +The `redis-upstash` driver is an [Upstash](https://upstash.com/) based HTTP only driver that can be used in environments where TCP isn't available. ```ts import { createStorage } from "unstorage"; From 89f5394bc2aa79663d531549d26622ce5a50c8df Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Thu, 17 Aug 2023 20:07:23 +0700 Subject: [PATCH 5/8] test: use skipIf --- test/drivers/redis-upstash.test.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/test/drivers/redis-upstash.test.ts b/test/drivers/redis-upstash.test.ts index 1e49ebf1..294c51f5 100644 --- a/test/drivers/redis-upstash.test.ts +++ b/test/drivers/redis-upstash.test.ts @@ -1,4 +1,4 @@ -import { describe, it } from "vitest"; +import { describe } from "vitest"; import { testDriver } from "./utils"; import driver from "../../src/drivers/redis-upstash"; @@ -8,10 +8,8 @@ import "dotenv/config"; const hasEnv = process.env.UPSTASH_REDIS_REST_URL && process.env.UPSTASH_REDIS_REST_TOKEN; -describe("drivers: redis-upstash", async () => { - if (hasEnv) { - testDriver({ - driver: driver({}), - }); - } +describe.skipIf(!hasEnv)("drivers: redis-upstash", async () => { + testDriver({ + driver: driver({}), + }); }); From 460fe6bdad8a507fba6fa5e0cae63d0dcc264d65 Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Mon, 9 Oct 2023 18:30:52 +0700 Subject: [PATCH 6/8] chore: minor tweaks --- .env.example | 2 -- docs/content/6.drivers/redis.md | 31 -------------------- docs/content/6.drivers/upstash.md | 30 +++++++++++++++++++ package.json | 1 - pnpm-lock.yaml | 8 +++-- src/drivers/upstash-redis.ts | 2 ++ src/drivers/{redis-upstash.ts => upstash.ts} | 6 ++-- src/types.ts | 2 +- test/drivers/redis-upstash.test.ts | 4 +-- 9 files changed, 42 insertions(+), 44 deletions(-) delete mode 100644 .env.example create mode 100644 docs/content/6.drivers/upstash.md create mode 100644 src/drivers/upstash-redis.ts rename src/drivers/{redis-upstash.ts => upstash.ts} (92%) diff --git a/.env.example b/.env.example deleted file mode 100644 index da8c4e89..00000000 --- a/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -UPSTASH_REDIS_REST_URL="" -UPSTASH_REDIS_REST_TOKEN="" diff --git a/docs/content/6.drivers/redis.md b/docs/content/6.drivers/redis.md index 77434a02..26ef55bb 100644 --- a/docs/content/6.drivers/redis.md +++ b/docs/content/6.drivers/redis.md @@ -58,34 +58,3 @@ See [ioredis](https://github.com/luin/ioredis/blob/master/API.md#new-redisport-h **Transaction options:** - `ttl`: Supported for `setItem(key, value, { ttl: number /* seconds */ })` - -## Upstash Redis - -The `redis-upstash` driver is an [Upstash](https://upstash.com/) based HTTP only driver that can be used in environments where TCP isn't available. - -```ts -import { createStorage } from "unstorage"; -import redisUpstashDriver from "unstorage/drivers/redis-upstash"; - -const storage = createStorage({ - driver: redisUpstashDriver({ - base: "unstorage", - url: "https://your-upstash-db.com", - token: "your-token", - }), -}); -``` - -**Options:** - -- `url`: Url of your upstash redis database. This will default to the value of the `UPSTASH_REDIS_REST_URL` environment variable if not provided. -- `token`: Authorization token. This will default to the value of the `UPSTASH_REDIS_REST_TOKEN` environment variable if not provided. -- `base`: Optional prefix to use for all keys. Can be used for namespacing. Has to be used as hastag prefix for redis cluster mode. -- `envPrefix`: Optional prefix for your environment variables. Defaults to `UPSTASH_REDIS_REST`. -- `ttl`: Default TTL for all items in **seconds**. - -See [upstash driver docs](https://github.com/upstash/upstash-redis) for all available options. - -**Transaction options:** - -- `ttl`: Supported for `setItem(key, value, { ttl: number /* seconds */ })` diff --git a/docs/content/6.drivers/upstash.md b/docs/content/6.drivers/upstash.md new file mode 100644 index 00000000..26d80b8f --- /dev/null +++ b/docs/content/6.drivers/upstash.md @@ -0,0 +1,30 @@ +## Upstash Redis + +The `redis-upstash` driver is an [Upstash](https://upstash.com/) based HTTP only driver that can be used in environments where TCP isn't available. + +```ts +import { createStorage } from "unstorage"; +import redisUpstashDriver from "unstorage/drivers/redis-upstash"; + +const storage = createStorage({ + driver: redisUpstashDriver({ + base: "unstorage", + url: "https://your-upstash-db.com", + token: "your-token", + }), +}); +``` + +**Options:** + +- `url`: Url of your upstash redis database. This will default to the value of the `UPSTASH_REDIS_REST_URL` environment variable if not provided. +- `token`: Authorization token. This will default to the value of the `UPSTASH_REDIS_REST_TOKEN` environment variable if not provided. +- `base`: Optional prefix to use for all keys. Can be used for namespacing. Has to be used as hastag prefix for redis cluster mode. +- `envPrefix`: Optional prefix for your environment variables. Defaults to `UPSTASH_REDIS_REST`. +- `ttl`: Default TTL for all items in **seconds**. + +See [upstash driver docs](https://github.com/upstash/upstash-redis) for all available options. + +**Transaction options:** + +- `ttl`: Supported for `setItem(key, value, { ttl: number /* seconds */ })` diff --git a/package.json b/package.json index 044d007c..63f4dfec 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,6 @@ "azurite": "^3.26.0", "changelogen": "^0.5.5", "dotenv": "^16.3.1", - "eslint": "^8.50.0", "eslint-config-unjs": "^0.2.1", "fake-indexeddb": "^4.0.2", "idb-keyval": "^6.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30455abb..df0ad609 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -103,9 +103,6 @@ devDependencies: dotenv: specifier: ^16.3.1 version: 16.3.1 - eslint: - specifier: ^8.50.0 - version: 8.51.0 eslint-config-unjs: specifier: ^0.2.1 version: 0.2.1(eslint@8.51.0)(typescript@5.2.2) @@ -1948,6 +1945,7 @@ packages: dependencies: is-glob: 4.0.3 micromatch: 4.0.5 + napi-wasm: 1.1.0 dev: false bundledDependencies: - napi-wasm @@ -6309,6 +6307,10 @@ packages: hasBin: true dev: true + /napi-wasm@1.1.0: + resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} + dev: false + /native-duplexpair@1.0.0: resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==} dev: true diff --git a/src/drivers/upstash-redis.ts b/src/drivers/upstash-redis.ts new file mode 100644 index 00000000..c2eb6a00 --- /dev/null +++ b/src/drivers/upstash-redis.ts @@ -0,0 +1,2 @@ +import driver from "./upstash"; +export default driver; diff --git a/src/drivers/redis-upstash.ts b/src/drivers/upstash.ts similarity index 92% rename from src/drivers/redis-upstash.ts rename to src/drivers/upstash.ts index 10fa089d..9e2f3e48 100644 --- a/src/drivers/redis-upstash.ts +++ b/src/drivers/upstash.ts @@ -1,7 +1,7 @@ import { createError, defineDriver, joinKeys } from "./utils"; import { Redis, type RedisConfigNodejs } from "@upstash/redis"; -export interface RedisOptions extends Partial { +export interface UpstashRedisOptions extends Partial { /** * Optional prefix to use for all keys. Can be used for namespacing. */ @@ -18,7 +18,7 @@ export interface RedisOptions extends Partial { ttl?: number; } -const DRIVER_NAME = "redis-upstash"; +const DRIVER_NAME = "upstash"; const validate = (option: string | undefined, envOption: string): string => { if (option) { @@ -33,7 +33,7 @@ const validate = (option: string | undefined, envOption: string): string => { `missing required option or environment variable '${envOption}'.` ); }; -export default defineDriver((opts: RedisOptions = {}) => { +export default defineDriver((opts: UpstashRedisOptions = {}) => { let redisClient: Redis; const getRedisClient = () => { diff --git a/src/types.ts b/src/types.ts index 14c2d916..e33a8da5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -34,7 +34,7 @@ export interface Driver { setItem?: ( key: string, value: string, - opts?: TransactionOptions + opts: TransactionOptions ) => MaybePromise; /** @experimental */ setItems?: ( diff --git a/test/drivers/redis-upstash.test.ts b/test/drivers/redis-upstash.test.ts index 294c51f5..aafeb9b6 100644 --- a/test/drivers/redis-upstash.test.ts +++ b/test/drivers/redis-upstash.test.ts @@ -1,8 +1,6 @@ import { describe } from "vitest"; import { testDriver } from "./utils"; -import driver from "../../src/drivers/redis-upstash"; - -import "dotenv/config"; +import driver from "../../src/drivers/upstash-redis"; // TODO: Similarly to vercel KV, we could create an UnJS test database on the upstash free tier, or mock the client. const hasEnv = From 64e37b9d51eef5d35ad5b8ea3e99c8c7d6cff240 Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Mon, 9 Oct 2023 18:33:52 +0700 Subject: [PATCH 7/8] chore: remove dotenv --- package.json | 1 - pnpm-lock.yaml | 3 --- 2 files changed, 4 deletions(-) diff --git a/package.json b/package.json index 63f4dfec..2049512f 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,6 @@ "@vue/compiler-sfc": "^3.3.4", "azurite": "^3.26.0", "changelogen": "^0.5.5", - "dotenv": "^16.3.1", "eslint-config-unjs": "^0.2.1", "fake-indexeddb": "^4.0.2", "idb-keyval": "^6.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df0ad609..154b4186 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -100,9 +100,6 @@ devDependencies: changelogen: specifier: ^0.5.5 version: 0.5.5 - dotenv: - specifier: ^16.3.1 - version: 16.3.1 eslint-config-unjs: specifier: ^0.2.1 version: 0.2.1(eslint@8.51.0)(typescript@5.2.2) From c370cbd2678fa3ebaed6a4ce98e8f96bd5fcdd4b Mon Sep 17 00:00:00 2001 From: Hebilicious Date: Mon, 9 Oct 2023 18:34:39 +0700 Subject: [PATCH 8/8] chore: add back eslint --- package.json | 1 + pnpm-lock.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/package.json b/package.json index 2049512f..9da02ffe 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "@vue/compiler-sfc": "^3.3.4", "azurite": "^3.26.0", "changelogen": "^0.5.5", + "eslint": "^8.50.0", "eslint-config-unjs": "^0.2.1", "fake-indexeddb": "^4.0.2", "idb-keyval": "^6.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 154b4186..aa3ddd09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -100,6 +100,9 @@ devDependencies: changelogen: specifier: ^0.5.5 version: 0.5.5 + eslint: + specifier: ^8.50.0 + version: 8.51.0 eslint-config-unjs: specifier: ^0.2.1 version: 0.2.1(eslint@8.51.0)(typescript@5.2.2)