} Users response
+ */
function question(question) {
return new Promise((resolve) => {
rl.question(question, (answer) => {
diff --git a/extra/simple-dns-server.js b/extra/simple-dns-server.js
index 376dbdd0..a6946dcb 100644
--- a/extra/simple-dns-server.js
+++ b/extra/simple-dns-server.js
@@ -135,6 +135,11 @@ server.listen({
udp: 5300
});
+/**
+ * Get human readable request type from request code
+ * @param {number} code Request code to translate
+ * @returns {string} Human readable request type
+ */
function type(code) {
for (let name in Packet.TYPE) {
if (Packet.TYPE[name] === code) {
diff --git a/extra/simple-mqtt-server.js b/extra/simple-mqtt-server.js
index 238d2772..b970a380 100644
--- a/extra/simple-mqtt-server.js
+++ b/extra/simple-mqtt-server.js
@@ -11,6 +11,7 @@ class SimpleMqttServer {
this.port = port;
}
+ /** Start the MQTT server */
start() {
this.server.listen(this.port, () => {
console.log("server started and listening on port ", this.port);
diff --git a/extra/update-version.js b/extra/update-version.js
index d5c2ee5c..246e1c1c 100644
--- a/extra/update-version.js
+++ b/extra/update-version.js
@@ -36,10 +36,8 @@ if (! exists) {
}
/**
- * Updates the version number in package.json and commits it to git.
- * @param {string} version - The new version number
- *
- * Generated by Trelent
+ * Commit updated files
+ * @param {string} version Version to update to
*/
function commit(version) {
let msg = "Update to " + version;
@@ -53,16 +51,19 @@ function commit(version) {
}
}
+/**
+ * Create a tag with the specified version
+ * @param {string} version Tag to create
+ */
function tag(version) {
let res = childProcess.spawnSync("git", [ "tag", version ]);
console.log(res.stdout.toString().trim());
}
/**
- * Checks if a given version is already tagged in the git repository.
- * @param {string} version - The version to check for.
- *
- * Generated by Trelent
+ * Check if a tag exists for the specified version
+ * @param {string} version Version to check
+ * @returns {boolean} Does the tag already exist
*/
function tagExists(version) {
if (! version) {
diff --git a/extra/update-wiki-version.js b/extra/update-wiki-version.js
index 65b7e7b0..f551db41 100644
--- a/extra/update-wiki-version.js
+++ b/extra/update-wiki-version.js
@@ -10,6 +10,10 @@ if (!newVersion) {
updateWiki(newVersion);
+/**
+ * Update the wiki with new version number
+ * @param {string} newVersion Version to update to
+ */
function updateWiki(newVersion) {
const wikiDir = "./tmp/wiki";
const howToUpdateFilename = "./tmp/wiki/🆙-How-to-Update.md";
@@ -39,6 +43,10 @@ function updateWiki(newVersion) {
safeDelete(wikiDir);
}
+/**
+ * Check if a directory exists and then delete it
+ * @param {string} dir Directory to delete
+ */
function safeDelete(dir) {
if (fs.existsSync(dir)) {
fs.rm(dir, {
diff --git a/package-lock.json b/package-lock.json
index 1c194e6b..9da62968 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,15 +1,16 @@
{
"name": "uptime-kuma",
- "version": "1.19.3",
+ "version": "1.19.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "uptime-kuma",
- "version": "1.19.3",
+ "version": "1.19.5",
"license": "MIT",
"dependencies": {
"@grpc/grpc-js": "~1.7.3",
+ "@louislam/ping": "~0.4.2-mod.1",
"@louislam/sqlite3": "15.1.2",
"args-parser": "~1.3.0",
"axios": "~0.27.0",
@@ -39,6 +40,7 @@
"jsonwebtoken": "~9.0.0",
"jwt-decode": "~3.1.2",
"limiter": "~2.1.0",
+ "mongodb": "~4.13.0",
"mqtt": "~4.3.7",
"mssql": "~8.1.4",
"mysql2": "~2.3.3",
@@ -49,11 +51,11 @@
"password-hash": "~1.2.2",
"pg": "~8.8.0",
"pg-connection-string": "~2.5.0",
- "ping": "~0.4.2",
"prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1",
"protobufjs": "~7.1.1",
- "redbean-node": "0.1.4",
+ "redbean-node": "~0.2.0",
+ "redis": "~4.5.1",
"socket.io": "~4.5.3",
"socket.io-client": "~4.5.3",
"socks-proxy-agent": "6.1.1",
@@ -170,6 +172,1072 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@aws-crypto/ie11-detection": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz",
+ "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/sha256-browser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz",
+ "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/ie11-detection": "^2.0.0",
+ "@aws-crypto/sha256-js": "^2.0.0",
+ "@aws-crypto/supports-web-crypto": "^2.0.0",
+ "@aws-crypto/util": "^2.0.0",
+ "@aws-sdk/types": "^3.1.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/sha256-js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz",
+ "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/util": "^2.0.0",
+ "@aws-sdk/types": "^3.1.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz",
+ "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-crypto/util": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz",
+ "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "^3.110.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ },
+ "node_modules/@aws-sdk/abort-controller": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.226.0.tgz",
+ "integrity": "sha512-cJVzr1xxPBd08voknXvR0RLgtZKGKt6WyDpH/BaPCu3rfSqWCDZKzwqe940eqosjmKrxC6pUZNKASIqHOQ8xxQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cognito-identity": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.245.0.tgz",
+ "integrity": "sha512-c5briTS05rAioO5b84bVng9M1KyAXcxJtDHeuoeAAZBuU+Dd0Scg3vyXyAFlGI+TsNyxqHAqqRdAoG4WNxJo/Q==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/client-sts": "3.245.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/credential-provider-node": "3.245.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-signing": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.245.0.tgz",
+ "integrity": "sha512-dxzRwRo55ZNQ4hQigC+cishxLSWlBrbr3iszG0FLviavLDOlnVG5UUxWpOIGvwr8pYiSfM4jnfMxiwYwiCLg1g==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.245.0.tgz",
+ "integrity": "sha512-0pGPA00kEsu2Yq1Ul+OwftHxws5YVllm4iZrPtGnqmXr7wmf6B9lOtrMQF44y7Tfw53po6+bKz08OKTEWkkjUA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.245.0.tgz",
+ "integrity": "sha512-E+7v2sy34TLni/Dmz6bTU20NWvbHYH9sVUHKQ9kHhmFopUWrs4Nt77f85PbuiKJz/irjUh9ppT5q1odJNRKRVQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/credential-provider-node": "3.245.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-sdk-sts": "3.226.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-signing": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "fast-xml-parser": "4.0.11",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.234.0.tgz",
+ "integrity": "sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-config-provider": "3.208.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-cognito-identity": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.245.0.tgz",
+ "integrity": "sha512-DkiPv7Yb9iw3yAzvWUAkXrI23F1+kV8grdXzlSzob5suqv/dVON5pFXK9Siz62WwWsa2FeCEpgEF7RA0mrWLtA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.245.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.226.0.tgz",
+ "integrity": "sha512-sd8uK1ojbXxaZXlthzw/VXZwCPUtU3PjObOfr3Evj7MPIM2IH8h29foOlggx939MdLQGboJf9gKvLlvKDWtJRA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-imds": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.226.0.tgz",
+ "integrity": "sha512-//z/COQm2AjYFI1Lb0wKHTQSrvLFTyuKLFQGPJsKS7DPoxGOCKB7hmYerlbl01IDoCxTdyL//TyyPxbZEOQD5Q==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.245.0.tgz",
+ "integrity": "sha512-1SjfVc5Wg0lLRUvwMrfjGgFkl+zfxn74gnkPr6by1QyMAoTzmeUkalPLAIqd+uHtFom9e3K633BQtX7zVPZ5XQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.226.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/credential-provider-process": "3.226.0",
+ "@aws-sdk/credential-provider-sso": "3.245.0",
+ "@aws-sdk/credential-provider-web-identity": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.245.0.tgz",
+ "integrity": "sha512-Dwv8zmRLTDLeEkGrK/sLNFZSC+ahXZxr07CuID054QKACIdUEvkqYlnalRiTeXngiHGQ54u8wU7f0D32R2oL0g==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.226.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/credential-provider-ini": "3.245.0",
+ "@aws-sdk/credential-provider-process": "3.226.0",
+ "@aws-sdk/credential-provider-sso": "3.245.0",
+ "@aws-sdk/credential-provider-web-identity": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.226.0.tgz",
+ "integrity": "sha512-iUDMdnrTvbvaCFhWwqyXrhvQ9+ojPqPqXhwZtY1X/Qaz+73S9gXBPJHZaZb2Ke0yKE1Ql3bJbKvmmxC/qLQMng==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.245.0.tgz",
+ "integrity": "sha512-txWrJc0WNBhXMi7q+twjx7cs/qzgTfbQ+vbag5idRmdoUeiR8rfLvihCab2NaGg50xhh+TaoUCXrgJp3E/XjYQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.245.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/token-providers": "3.245.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.226.0.tgz",
+ "integrity": "sha512-CCpv847rLB0SFOHz2igvUMFAzeT2fD3YnY4C8jltuJoEkn0ITn1Hlgt13nTJ5BUuvyti2mvyXZHmNzhMIMrIlw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-providers": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.245.0.tgz",
+ "integrity": "sha512-6Uhsxk6MOuWplejhPJf7XDhegHmcZfj8hwnF4mXFJ6u4b2RxWPQCnqPcA0+VoAzIMUqbjqvkSzmVjQelGFtjNg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.245.0",
+ "@aws-sdk/client-sso": "3.245.0",
+ "@aws-sdk/client-sts": "3.245.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.245.0",
+ "@aws-sdk/credential-provider-env": "3.226.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/credential-provider-ini": "3.245.0",
+ "@aws-sdk/credential-provider-node": "3.245.0",
+ "@aws-sdk/credential-provider-process": "3.226.0",
+ "@aws-sdk/credential-provider-sso": "3.245.0",
+ "@aws-sdk/credential-provider-web-identity": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/fetch-http-handler": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.226.0.tgz",
+ "integrity": "sha512-JewZPMNEBXfi1xVnRa7pVtK/zgZD8/lQ/YnD8pq79WuMa2cwyhDtr8oqCoqsPW+WJT5ScXoMtuHxN78l8eKWgg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/querystring-builder": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/hash-node": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.226.0.tgz",
+ "integrity": "sha512-MdlJhJ9/Espwd0+gUXdZRsHuostB2WxEVAszWxobP0FTT9PnicqnfK7ExmW+DUAc0ywxtEbR3e0UND65rlSTVw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-buffer-from": "3.208.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/invalid-dependency": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.226.0.tgz",
+ "integrity": "sha512-QXOYFmap8g9QzRjumcRCIo2GEZkdCwd7ePQW0OABWPhKHzlJ74vvBxywjU3s39EEBEluWXtZ7Iufg6GxZM4ifw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/is-array-buffer": {
+ "version": "3.201.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz",
+ "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-content-length": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.226.0.tgz",
+ "integrity": "sha512-ksUzlHJN2JMuyavjA46a4sctvnrnITqt2tbGGWWrAuXY1mel2j+VbgnmJUiwHKUO6bTFBBeft5Vd1TSOb4JmiA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-endpoint": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.226.0.tgz",
+ "integrity": "sha512-EvLFafjtUxTT0AC9p3aBQu1/fjhWdIeK58jIXaNFONfZ3F8QbEYUPuF/SqZvJM6cWfOO9qwYKkRDbCSTYhprIg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-config-provider": "3.208.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.226.0.tgz",
+ "integrity": "sha512-haVkWVh6BUPwKgWwkL6sDvTkcZWvJjv8AgC8jiQuSl8GLZdzHTB8Qhi3IsfFta9HAuoLjxheWBE5Z/L0UrfhLA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.226.0.tgz",
+ "integrity": "sha512-m9gtLrrYnpN6yckcQ09rV7ExWOLMuq8mMPF/K3DbL/YL0TuILu9i2T1W+JuxSX+K9FMG2HrLAKivE/kMLr55xA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.226.0.tgz",
+ "integrity": "sha512-mwRbdKEUeuNH5TEkyZ5FWxp6bL2UC1WbY+LDv6YjHxmSMKpAoOueEdtU34PqDOLrpXXxIGHDFmjeGeMfktyEcA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-retry": {
+ "version": "3.235.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz",
+ "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/service-error-classification": "3.229.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "tslib": "^2.3.1",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.226.0.tgz",
+ "integrity": "sha512-NN9T/qoSD1kZvAT+VLny3NnlqgylYQcsgV3rvi/8lYzw/G/2s8VS6sm/VTWGGZhx08wZRv20MWzYu3bftcyqUg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-serde": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.226.0.tgz",
+ "integrity": "sha512-nPuOOAkSfx9TxzdKFx0X2bDlinOxGrqD7iof926K/AEflxGD1DBdcaDdjlYlPDW2CVE8LV/rAgbYuLxh/E/1VA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz",
+ "integrity": "sha512-E6HmtPcl+IjYDDzi1xI2HpCbBq2avNWcjvCriMZWuTAtRVpnA6XDDGW5GY85IfS3A8G8vuWqEVPr8JcYUcjfew==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-stack": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.226.0.tgz",
+ "integrity": "sha512-85wF29LvPvpoed60fZGDYLwv1Zpd/cM0C22WSSFPw1SSJeqO4gtFYyCg2squfT3KI6kF43IIkOCJ+L7GtryPug==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz",
+ "integrity": "sha512-N1WnfzCW1Y5yWhVAphf8OPGTe8Df3vmV7/LdsoQfmpkCZgLZeK2o0xITkUQhRj1mbw7yp8tVFLFV3R2lMurdAQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-config-provider": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.226.0.tgz",
+ "integrity": "sha512-B8lQDqiRk7X5izFEUMXmi8CZLOKCTWQJU9HQf3ako+sF0gexo4nHN3jhoRWyLtcgC5S3on/2jxpAcqtm7kuY3w==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-http-handler": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.226.0.tgz",
+ "integrity": "sha512-xQCddnZNMiPmjr3W7HYM+f5ir4VfxgJh37eqZwX6EZmyItFpNNeVzKUgA920ka1VPz/ZUYB+2OFGiX3LCLkkaA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/abort-controller": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/querystring-builder": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/property-provider": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.226.0.tgz",
+ "integrity": "sha512-TsljjG+Sg0LmdgfiAlWohluWKnxB/k8xenjeozZfzOr5bHmNHtdbWv6BtNvD/R83hw7SFXxbJHlD5H4u9p2NFg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/protocol-http": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.226.0.tgz",
+ "integrity": "sha512-zWkVqiTA9RXL6y0hhfZc9bcU4DX2NI6Hw9IhQmSPeM59mdbPjJlY4bLlMr5YxywqO3yQ/ylNoAfrEzrDjlOSRg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/querystring-builder": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz",
+ "integrity": "sha512-LVurypuNeotO4lmirKXRC4NYrZRAyMJXuwO0f2a5ZAUJCjauwYrifKue6yCfU7bls7gut7nfcR6B99WBYpHs3g==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-uri-escape": "3.201.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/querystring-parser": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.226.0.tgz",
+ "integrity": "sha512-FzB+VrQ47KAFxiPt2YXrKZ8AOLZQqGTLCKHzx4bjxGmwgsjV8yIbtJiJhZLMcUQV4LtGeIY9ixIqQhGvnZHE4A==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/service-error-classification": {
+ "version": "3.229.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz",
+ "integrity": "sha512-dnzWWQ0/NoWMUZ5C0DW3dPm0wC1O76Y/SpKbuJzWPkx1EYy6r8p32Ly4D9vUzrKDbRGf48YHIF2kOkBmu21CLg==",
+ "optional": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/shared-ini-file-loader": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.226.0.tgz",
+ "integrity": "sha512-661VQefsARxVyyV2FX9V61V+nNgImk7aN2hYlFKla6BCwZfMng+dEtD0xVGyg1PfRw0qvEv5LQyxMVgHcUSevA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/signature-v4": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.226.0.tgz",
+ "integrity": "sha512-/R5q5agdPd7HJB68XMzpxrNPk158EHUvkFkuRu5Qf3kkkHebEzWEBlWoVpUe6ss4rP9Tqcue6xPuaftEmhjpYw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/is-array-buffer": "3.201.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-hex-encoding": "3.201.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "@aws-sdk/util-uri-escape": "3.201.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz",
+ "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/token-providers": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.245.0.tgz",
+ "integrity": "sha512-m/spXR/vEXGb+zMqRUMQYVMwFZSTdK5RkddYqamYkNhIoLm60EYeRu57JsMMs5djKi8dBRSKiXwVHx0l2rXMjg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-sso-oidc": "3.245.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/types": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.226.0.tgz",
+ "integrity": "sha512-MmmNHrWeO4man7wpOwrAhXlevqtOV9ZLcH4RhnG5LmRce0RFOApx24HoKENfFCcOyCm5LQBlsXCqi0dZWDWU0A==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/url-parser": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz",
+ "integrity": "sha512-p5RLE0QWyP0OcTOLmFcLdVgUcUEzmEfmdrnOxyNzomcYb0p3vUagA5zfa1HVK2azsQJFBv28GfvMnba9bGhObg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/querystring-parser": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/util-base64": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz",
+ "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/util-buffer-from": "3.208.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-body-length-browser": {
+ "version": "3.188.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz",
+ "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/util-body-length-node": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz",
+ "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-buffer-from": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz",
+ "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/is-array-buffer": "3.201.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-config-provider": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz",
+ "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-defaults-mode-browser": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz",
+ "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-defaults-mode-node": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz",
+ "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.245.0.tgz",
+ "integrity": "sha512-UNOFquB1tKx+8RT8n82Zb5tIwDyZHVPBg/m0LB0RsLETjr6krien5ASpqWezsXKIR1hftN9uaxN4bvf2dZrWHg==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-hex-encoding": {
+ "version": "3.201.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz",
+ "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-locate-window": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz",
+ "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-middleware": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.226.0.tgz",
+ "integrity": "sha512-B96CQnwX4gRvQdaQkdUtqvDPkrptV5+va6FVeJOocU/DbSYMAScLxtR3peMS8cnlOT6nL1Eoa42OI9AfZz1VwQ==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-retry": {
+ "version": "3.229.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz",
+ "integrity": "sha512-0zKTqi0P1inD0LzIMuXRIYYQ/8c1lWMg/cfiqUcIAF1TpatlpZuN7umU0ierpBFud7S+zDgg0oemh+Nj8xliJw==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/service-error-classification": "3.229.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-uri-escape": {
+ "version": "3.201.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz",
+ "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.226.0.tgz",
+ "integrity": "sha512-PhBIu2h6sPJPcv2I7ELfFizdl5pNiL4LfxrasMCYXQkJvVnoXztHA1x+CQbXIdtZOIlpjC+6BjDcE0uhnpvfcA==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.226.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.226.0.tgz",
+ "integrity": "sha512-othPc5Dz/pkYkxH+nZPhc1Al0HndQT8zHD4e9h+EZ+8lkd8n+IsnLfTS/mSJWrfiC6UlNRVw55cItstmJyMe/A==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/util-utf8-browser": {
+ "version": "3.188.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz",
+ "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/util-utf8-node": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz",
+ "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/util-buffer-from": "3.208.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/@azure/abort-controller": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
@@ -395,12 +1463,12 @@
}
},
"node_modules/@azure/msal-node": {
- "version": "1.14.5",
- "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz",
- "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==",
+ "version": "1.14.6",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.6.tgz",
+ "integrity": "sha512-em/qqFL5tLMxMPl9vormAs13OgZpmQoJbiQ/GlWr+BA77eCLoL+Ehr5xRHowYo+LFe5b+p+PJVkRvT+mLvOkwA==",
"dependencies": {
- "@azure/msal-common": "^9.0.1",
- "jsonwebtoken": "^8.5.1",
+ "@azure/msal-common": "^9.0.2",
+ "jsonwebtoken": "^9.0.0",
"uuid": "^8.3.0"
},
"engines": {
@@ -408,42 +1476,13 @@
}
},
"node_modules/@azure/msal-node/node_modules/@azure/msal-common": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz",
- "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz",
+ "integrity": "sha512-qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w==",
"engines": {
"node": ">=0.8.0"
}
},
- "node_modules/@azure/msal-node/node_modules/jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "dependencies": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=4",
- "npm": ">=1.4.28"
- }
- },
- "node_modules/@azure/msal-node/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/@babel/code-frame": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
@@ -3162,6 +4201,19 @@
"resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz",
"integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA=="
},
+ "node_modules/@louislam/ping": {
+ "version": "0.4.2-mod.1",
+ "resolved": "https://registry.npmjs.org/@louislam/ping/-/ping-0.4.2-mod.1.tgz",
+ "integrity": "sha512-KkRDo8qcF9kzzR0Hh8Iqz+XNnzKOdobUquP7UyBYrjxAB1jNT3qO0gvAZeDUknF28LXBPSzkiVlf1NG+tb/iyQ==",
+ "dependencies": {
+ "command-exists": "~1.2.9",
+ "q": "1.x",
+ "underscore": "^1.12.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/@louislam/sqlite3": {
"version": "15.1.2",
"resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.2.tgz",
@@ -3443,6 +4495,64 @@
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
},
+ "node_modules/@redis/bloom": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz",
+ "integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/client": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz",
+ "integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==",
+ "dependencies": {
+ "cluster-key-slot": "1.1.1",
+ "generic-pool": "3.9.0",
+ "yallist": "4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@redis/client/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/@redis/graph": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz",
+ "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/json": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz",
+ "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/search": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz",
+ "integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
+ "node_modules/@redis/time-series": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz",
+ "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==",
+ "peerDependencies": {
+ "@redis/client": "^1.0.0"
+ }
+ },
"node_modules/@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -3812,6 +4922,20 @@
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
"dev": true
},
+ "node_modules/@types/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
+ },
+ "node_modules/@types/whatwg-url": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
+ "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/webidl-conversions": "*"
+ }
+ },
"node_modules/@types/yargs": {
"version": "16.0.5",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
@@ -4968,6 +6092,12 @@
"@popperjs/core": "^2.10.2"
}
},
+ "node_modules/bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==",
+ "optional": true
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -5053,6 +6183,17 @@
"node-int64": "^0.4.0"
}
},
+ "node_modules/bson": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
+ "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
+ "dependencies": {
+ "buffer": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -5484,6 +6625,14 @@
"node": ">=6"
}
},
+ "node_modules/cluster-key-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz",
+ "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -5541,8 +6690,7 @@
"node_modules/colorette": {
"version": "2.0.19",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
+ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
},
"node_modules/combine-errors": {
"version": "3.0.3",
@@ -8077,6 +9225,22 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "node_modules/fast-xml-parser": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz",
+ "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==",
+ "optional": true,
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ },
+ "funding": {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ },
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -8513,6 +9677,14 @@
"is-property": "^1.0.2"
}
},
+ "node_modules/generic-pool": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz",
+ "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -8547,7 +9719,6 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true,
"engines": {
"node": ">=8.0.0"
}
@@ -8595,9 +9766,9 @@
}
},
"node_modules/getopts": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz",
- "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA=="
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz",
+ "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA=="
},
"node_modules/getos": {
"version": "3.2.1",
@@ -11954,31 +13125,35 @@
}
},
"node_modules/knex": {
- "version": "0.95.15",
- "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz",
- "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.0.tgz",
+ "integrity": "sha512-i0GWwqYp1Hs2yvc2rlDO6nzzkLhwdyOZKRdsMTB8ZxOs2IXQyL5rBjSbS1krowCh6V65T4X9CJaKtuIfkaPGSA==",
"dependencies": {
- "colorette": "2.0.16",
- "commander": "^7.1.0",
- "debug": "4.3.2",
+ "colorette": "2.0.19",
+ "commander": "^9.1.0",
+ "debug": "4.3.4",
"escalade": "^3.1.1",
"esm": "^3.2.25",
- "getopts": "2.2.5",
+ "get-package-type": "^0.1.0",
+ "getopts": "2.3.0",
"interpret": "^2.2.0",
"lodash": "^4.17.21",
"pg-connection-string": "2.5.0",
- "rechoir": "0.7.0",
+ "rechoir": "^0.8.0",
"resolve-from": "^5.0.0",
- "tarn": "^3.0.1",
+ "tarn": "^3.0.2",
"tildify": "2.0.0"
},
"bin": {
"knex": "bin/cli.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
},
"peerDependenciesMeta": {
+ "better-sqlite3": {
+ "optional": true
+ },
"mysql": {
"optional": true
},
@@ -11999,40 +13174,14 @@
}
}
},
- "node_modules/knex/node_modules/colorette": {
- "version": "2.0.16",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
- "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g=="
- },
"node_modules/knex/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"engines": {
- "node": ">= 10"
+ "node": "^12.20.0 || >=14"
}
},
- "node_modules/knex/node_modules/debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/knex/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
"node_modules/knex/node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -12197,36 +13346,6 @@
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
},
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
- },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -12236,7 +13355,8 @@
"node_modules/lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
},
"node_modules/lodash.truncate": {
"version": "4.4.2",
@@ -12511,6 +13631,12 @@
"node": ">= 0.6"
}
},
+ "node_modules/memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "optional": true
+ },
"node_modules/meow": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
@@ -12743,6 +13869,63 @@
"node": ">=10"
}
},
+ "node_modules/mongodb": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.13.0.tgz",
+ "integrity": "sha512-+taZ/bV8d1pYuHL4U+gSwkhmDrwkWbH1l4aah4YpmpscMwgFBkufIKxgP/G7m87/NUuQzc2Z75ZTI7ZOyqZLbw==",
+ "dependencies": {
+ "bson": "^4.7.0",
+ "mongodb-connection-string-url": "^2.5.4",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">=12.9.0"
+ },
+ "optionalDependencies": {
+ "@aws-sdk/credential-providers": "^3.186.0",
+ "saslprep": "^1.0.3"
+ }
+ },
+ "node_modules/mongodb-connection-string-url": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
+ "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+ "dependencies": {
+ "@types/whatwg-url": "^8.2.1",
+ "whatwg-url": "^11.0.0"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "dependencies": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/mqemitter": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz",
@@ -13840,18 +15023,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/ping": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/ping/-/ping-0.4.2.tgz",
- "integrity": "sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==",
- "dependencies": {
- "q": "1.x",
- "underscore": "^1.12.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/pirates": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
@@ -14579,26 +15750,26 @@
}
},
"node_modules/rechoir": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
- "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"dependencies": {
- "resolve": "^1.9.0"
+ "resolve": "^1.20.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 10.13.0"
}
},
"node_modules/redbean-node": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.1.4.tgz",
- "integrity": "sha512-c1U6wnTeWS0c44tn9hkJWzjGgckLNJ8sN1E2bxnnnQsULOfvEVFLf8dLMjqhyyMrZ1L1mp8UvV4OfhRtH/ZrgQ==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.2.0.tgz",
+ "integrity": "sha512-bHbNgVpkLOn7i/kvfvGDVGzfDgvf20qVRm4EvQV9tD2V2nhcegYUITzAF3XSL2XVirrb5vmWy85vxM44faBnYw==",
"dependencies": {
"@types/node": "^14.18.12",
"await-lock": "^2.1.0",
"dayjs": "^1.11.0",
"glob": "^7.2.0",
- "knex": "^0.95.15",
+ "knex": "^2.4.0",
"lodash": "^4.17.21"
}
},
@@ -14620,6 +15791,19 @@
"node": ">=8"
}
},
+ "node_modules/redis": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz",
+ "integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==",
+ "dependencies": {
+ "@redis/bloom": "1.1.0",
+ "@redis/client": "1.4.2",
+ "@redis/graph": "1.1.0",
+ "@redis/json": "1.0.4",
+ "@redis/search": "1.1.0",
+ "@redis/time-series": "1.0.4"
+ }
+ },
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -15202,6 +16386,18 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "node_modules/saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
+ "optional": true,
+ "dependencies": {
+ "sparse-bitfield": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/sass": {
"version": "1.42.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
@@ -15540,6 +16736,15 @@
"deprecated": "Please use @jridgewell/sourcemap-codec instead",
"dev": true
},
+ "node_modules/sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "optional": true,
+ "dependencies": {
+ "memory-pager": "^1.0.2"
+ }
+ },
"node_modules/spawn-command": {
"version": "0.0.2-1",
"resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
@@ -15839,6 +17044,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
+ "optional": true
+ },
"node_modules/style-search": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
@@ -17703,6 +18914,912 @@
}
}
},
+ "@aws-crypto/ie11-detection": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz",
+ "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==",
+ "optional": true,
+ "requires": {
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ }
+ }
+ },
+ "@aws-crypto/sha256-browser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz",
+ "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==",
+ "optional": true,
+ "requires": {
+ "@aws-crypto/ie11-detection": "^2.0.0",
+ "@aws-crypto/sha256-js": "^2.0.0",
+ "@aws-crypto/supports-web-crypto": "^2.0.0",
+ "@aws-crypto/util": "^2.0.0",
+ "@aws-sdk/types": "^3.1.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ }
+ }
+ },
+ "@aws-crypto/sha256-js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz",
+ "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==",
+ "optional": true,
+ "requires": {
+ "@aws-crypto/util": "^2.0.0",
+ "@aws-sdk/types": "^3.1.0",
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ }
+ }
+ },
+ "@aws-crypto/supports-web-crypto": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz",
+ "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==",
+ "optional": true,
+ "requires": {
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ }
+ }
+ },
+ "@aws-crypto/util": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz",
+ "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "^3.110.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "optional": true
+ }
+ }
+ },
+ "@aws-sdk/abort-controller": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.226.0.tgz",
+ "integrity": "sha512-cJVzr1xxPBd08voknXvR0RLgtZKGKt6WyDpH/BaPCu3rfSqWCDZKzwqe940eqosjmKrxC6pUZNKASIqHOQ8xxQ==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/client-cognito-identity": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.245.0.tgz",
+ "integrity": "sha512-c5briTS05rAioO5b84bVng9M1KyAXcxJtDHeuoeAAZBuU+Dd0Scg3vyXyAFlGI+TsNyxqHAqqRdAoG4WNxJo/Q==",
+ "optional": true,
+ "requires": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/client-sts": "3.245.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/credential-provider-node": "3.245.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-signing": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/client-sso": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.245.0.tgz",
+ "integrity": "sha512-dxzRwRo55ZNQ4hQigC+cishxLSWlBrbr3iszG0FLviavLDOlnVG5UUxWpOIGvwr8pYiSfM4jnfMxiwYwiCLg1g==",
+ "optional": true,
+ "requires": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/client-sso-oidc": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.245.0.tgz",
+ "integrity": "sha512-0pGPA00kEsu2Yq1Ul+OwftHxws5YVllm4iZrPtGnqmXr7wmf6B9lOtrMQF44y7Tfw53po6+bKz08OKTEWkkjUA==",
+ "optional": true,
+ "requires": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/client-sts": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.245.0.tgz",
+ "integrity": "sha512-E+7v2sy34TLni/Dmz6bTU20NWvbHYH9sVUHKQ9kHhmFopUWrs4Nt77f85PbuiKJz/irjUh9ppT5q1odJNRKRVQ==",
+ "optional": true,
+ "requires": {
+ "@aws-crypto/sha256-browser": "2.0.0",
+ "@aws-crypto/sha256-js": "2.0.0",
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/credential-provider-node": "3.245.0",
+ "@aws-sdk/fetch-http-handler": "3.226.0",
+ "@aws-sdk/hash-node": "3.226.0",
+ "@aws-sdk/invalid-dependency": "3.226.0",
+ "@aws-sdk/middleware-content-length": "3.226.0",
+ "@aws-sdk/middleware-endpoint": "3.226.0",
+ "@aws-sdk/middleware-host-header": "3.226.0",
+ "@aws-sdk/middleware-logger": "3.226.0",
+ "@aws-sdk/middleware-recursion-detection": "3.226.0",
+ "@aws-sdk/middleware-retry": "3.235.0",
+ "@aws-sdk/middleware-sdk-sts": "3.226.0",
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/middleware-signing": "3.226.0",
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/middleware-user-agent": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/node-http-handler": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/smithy-client": "3.234.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "@aws-sdk/util-body-length-browser": "3.188.0",
+ "@aws-sdk/util-body-length-node": "3.208.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.234.0",
+ "@aws-sdk/util-defaults-mode-node": "3.234.0",
+ "@aws-sdk/util-endpoints": "3.245.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "@aws-sdk/util-user-agent-browser": "3.226.0",
+ "@aws-sdk/util-user-agent-node": "3.226.0",
+ "@aws-sdk/util-utf8-browser": "3.188.0",
+ "@aws-sdk/util-utf8-node": "3.208.0",
+ "fast-xml-parser": "4.0.11",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/config-resolver": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.234.0.tgz",
+ "integrity": "sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-config-provider": "3.208.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-cognito-identity": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.245.0.tgz",
+ "integrity": "sha512-DkiPv7Yb9iw3yAzvWUAkXrI23F1+kV8grdXzlSzob5suqv/dVON5pFXK9Siz62WwWsa2FeCEpgEF7RA0mrWLtA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/client-cognito-identity": "3.245.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-env": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.226.0.tgz",
+ "integrity": "sha512-sd8uK1ojbXxaZXlthzw/VXZwCPUtU3PjObOfr3Evj7MPIM2IH8h29foOlggx939MdLQGboJf9gKvLlvKDWtJRA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-imds": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.226.0.tgz",
+ "integrity": "sha512-//z/COQm2AjYFI1Lb0wKHTQSrvLFTyuKLFQGPJsKS7DPoxGOCKB7hmYerlbl01IDoCxTdyL//TyyPxbZEOQD5Q==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-ini": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.245.0.tgz",
+ "integrity": "sha512-1SjfVc5Wg0lLRUvwMrfjGgFkl+zfxn74gnkPr6by1QyMAoTzmeUkalPLAIqd+uHtFom9e3K633BQtX7zVPZ5XQ==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/credential-provider-env": "3.226.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/credential-provider-process": "3.226.0",
+ "@aws-sdk/credential-provider-sso": "3.245.0",
+ "@aws-sdk/credential-provider-web-identity": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-node": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.245.0.tgz",
+ "integrity": "sha512-Dwv8zmRLTDLeEkGrK/sLNFZSC+ahXZxr07CuID054QKACIdUEvkqYlnalRiTeXngiHGQ54u8wU7f0D32R2oL0g==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/credential-provider-env": "3.226.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/credential-provider-ini": "3.245.0",
+ "@aws-sdk/credential-provider-process": "3.226.0",
+ "@aws-sdk/credential-provider-sso": "3.245.0",
+ "@aws-sdk/credential-provider-web-identity": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-process": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.226.0.tgz",
+ "integrity": "sha512-iUDMdnrTvbvaCFhWwqyXrhvQ9+ojPqPqXhwZtY1X/Qaz+73S9gXBPJHZaZb2Ke0yKE1Ql3bJbKvmmxC/qLQMng==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-sso": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.245.0.tgz",
+ "integrity": "sha512-txWrJc0WNBhXMi7q+twjx7cs/qzgTfbQ+vbag5idRmdoUeiR8rfLvihCab2NaGg50xhh+TaoUCXrgJp3E/XjYQ==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/client-sso": "3.245.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/token-providers": "3.245.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-provider-web-identity": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.226.0.tgz",
+ "integrity": "sha512-CCpv847rLB0SFOHz2igvUMFAzeT2fD3YnY4C8jltuJoEkn0ITn1Hlgt13nTJ5BUuvyti2mvyXZHmNzhMIMrIlw==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/credential-providers": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.245.0.tgz",
+ "integrity": "sha512-6Uhsxk6MOuWplejhPJf7XDhegHmcZfj8hwnF4mXFJ6u4b2RxWPQCnqPcA0+VoAzIMUqbjqvkSzmVjQelGFtjNg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/client-cognito-identity": "3.245.0",
+ "@aws-sdk/client-sso": "3.245.0",
+ "@aws-sdk/client-sts": "3.245.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.245.0",
+ "@aws-sdk/credential-provider-env": "3.226.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/credential-provider-ini": "3.245.0",
+ "@aws-sdk/credential-provider-node": "3.245.0",
+ "@aws-sdk/credential-provider-process": "3.226.0",
+ "@aws-sdk/credential-provider-sso": "3.245.0",
+ "@aws-sdk/credential-provider-web-identity": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/fetch-http-handler": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.226.0.tgz",
+ "integrity": "sha512-JewZPMNEBXfi1xVnRa7pVtK/zgZD8/lQ/YnD8pq79WuMa2cwyhDtr8oqCoqsPW+WJT5ScXoMtuHxN78l8eKWgg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/querystring-builder": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-base64": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/hash-node": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.226.0.tgz",
+ "integrity": "sha512-MdlJhJ9/Espwd0+gUXdZRsHuostB2WxEVAszWxobP0FTT9PnicqnfK7ExmW+DUAc0ywxtEbR3e0UND65rlSTVw==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-buffer-from": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/invalid-dependency": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.226.0.tgz",
+ "integrity": "sha512-QXOYFmap8g9QzRjumcRCIo2GEZkdCwd7ePQW0OABWPhKHzlJ74vvBxywjU3s39EEBEluWXtZ7Iufg6GxZM4ifw==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/is-array-buffer": {
+ "version": "3.201.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz",
+ "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-content-length": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.226.0.tgz",
+ "integrity": "sha512-ksUzlHJN2JMuyavjA46a4sctvnrnITqt2tbGGWWrAuXY1mel2j+VbgnmJUiwHKUO6bTFBBeft5Vd1TSOb4JmiA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-endpoint": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.226.0.tgz",
+ "integrity": "sha512-EvLFafjtUxTT0AC9p3aBQu1/fjhWdIeK58jIXaNFONfZ3F8QbEYUPuF/SqZvJM6cWfOO9qwYKkRDbCSTYhprIg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/middleware-serde": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/url-parser": "3.226.0",
+ "@aws-sdk/util-config-provider": "3.208.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-host-header": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.226.0.tgz",
+ "integrity": "sha512-haVkWVh6BUPwKgWwkL6sDvTkcZWvJjv8AgC8jiQuSl8GLZdzHTB8Qhi3IsfFta9HAuoLjxheWBE5Z/L0UrfhLA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-logger": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.226.0.tgz",
+ "integrity": "sha512-m9gtLrrYnpN6yckcQ09rV7ExWOLMuq8mMPF/K3DbL/YL0TuILu9i2T1W+JuxSX+K9FMG2HrLAKivE/kMLr55xA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-recursion-detection": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.226.0.tgz",
+ "integrity": "sha512-mwRbdKEUeuNH5TEkyZ5FWxp6bL2UC1WbY+LDv6YjHxmSMKpAoOueEdtU34PqDOLrpXXxIGHDFmjeGeMfktyEcA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-retry": {
+ "version": "3.235.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz",
+ "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/service-error-classification": "3.229.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "@aws-sdk/util-retry": "3.229.0",
+ "tslib": "^2.3.1",
+ "uuid": "^8.3.2"
+ }
+ },
+ "@aws-sdk/middleware-sdk-sts": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.226.0.tgz",
+ "integrity": "sha512-NN9T/qoSD1kZvAT+VLny3NnlqgylYQcsgV3rvi/8lYzw/G/2s8VS6sm/VTWGGZhx08wZRv20MWzYu3bftcyqUg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/middleware-signing": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-serde": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.226.0.tgz",
+ "integrity": "sha512-nPuOOAkSfx9TxzdKFx0X2bDlinOxGrqD7iof926K/AEflxGD1DBdcaDdjlYlPDW2CVE8LV/rAgbYuLxh/E/1VA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-signing": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz",
+ "integrity": "sha512-E6HmtPcl+IjYDDzi1xI2HpCbBq2avNWcjvCriMZWuTAtRVpnA6XDDGW5GY85IfS3A8G8vuWqEVPr8JcYUcjfew==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/signature-v4": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-stack": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.226.0.tgz",
+ "integrity": "sha512-85wF29LvPvpoed60fZGDYLwv1Zpd/cM0C22WSSFPw1SSJeqO4gtFYyCg2squfT3KI6kF43IIkOCJ+L7GtryPug==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/middleware-user-agent": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz",
+ "integrity": "sha512-N1WnfzCW1Y5yWhVAphf8OPGTe8Df3vmV7/LdsoQfmpkCZgLZeK2o0xITkUQhRj1mbw7yp8tVFLFV3R2lMurdAQ==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/node-config-provider": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.226.0.tgz",
+ "integrity": "sha512-B8lQDqiRk7X5izFEUMXmi8CZLOKCTWQJU9HQf3ako+sF0gexo4nHN3jhoRWyLtcgC5S3on/2jxpAcqtm7kuY3w==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/node-http-handler": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.226.0.tgz",
+ "integrity": "sha512-xQCddnZNMiPmjr3W7HYM+f5ir4VfxgJh37eqZwX6EZmyItFpNNeVzKUgA920ka1VPz/ZUYB+2OFGiX3LCLkkaA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/abort-controller": "3.226.0",
+ "@aws-sdk/protocol-http": "3.226.0",
+ "@aws-sdk/querystring-builder": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/property-provider": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.226.0.tgz",
+ "integrity": "sha512-TsljjG+Sg0LmdgfiAlWohluWKnxB/k8xenjeozZfzOr5bHmNHtdbWv6BtNvD/R83hw7SFXxbJHlD5H4u9p2NFg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/protocol-http": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.226.0.tgz",
+ "integrity": "sha512-zWkVqiTA9RXL6y0hhfZc9bcU4DX2NI6Hw9IhQmSPeM59mdbPjJlY4bLlMr5YxywqO3yQ/ylNoAfrEzrDjlOSRg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/querystring-builder": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz",
+ "integrity": "sha512-LVurypuNeotO4lmirKXRC4NYrZRAyMJXuwO0f2a5ZAUJCjauwYrifKue6yCfU7bls7gut7nfcR6B99WBYpHs3g==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-uri-escape": "3.201.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/querystring-parser": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.226.0.tgz",
+ "integrity": "sha512-FzB+VrQ47KAFxiPt2YXrKZ8AOLZQqGTLCKHzx4bjxGmwgsjV8yIbtJiJhZLMcUQV4LtGeIY9ixIqQhGvnZHE4A==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/service-error-classification": {
+ "version": "3.229.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz",
+ "integrity": "sha512-dnzWWQ0/NoWMUZ5C0DW3dPm0wC1O76Y/SpKbuJzWPkx1EYy6r8p32Ly4D9vUzrKDbRGf48YHIF2kOkBmu21CLg==",
+ "optional": true
+ },
+ "@aws-sdk/shared-ini-file-loader": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.226.0.tgz",
+ "integrity": "sha512-661VQefsARxVyyV2FX9V61V+nNgImk7aN2hYlFKla6BCwZfMng+dEtD0xVGyg1PfRw0qvEv5LQyxMVgHcUSevA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/signature-v4": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.226.0.tgz",
+ "integrity": "sha512-/R5q5agdPd7HJB68XMzpxrNPk158EHUvkFkuRu5Qf3kkkHebEzWEBlWoVpUe6ss4rP9Tqcue6xPuaftEmhjpYw==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/is-array-buffer": "3.201.0",
+ "@aws-sdk/types": "3.226.0",
+ "@aws-sdk/util-hex-encoding": "3.201.0",
+ "@aws-sdk/util-middleware": "3.226.0",
+ "@aws-sdk/util-uri-escape": "3.201.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/smithy-client": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz",
+ "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/middleware-stack": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/token-providers": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.245.0.tgz",
+ "integrity": "sha512-m/spXR/vEXGb+zMqRUMQYVMwFZSTdK5RkddYqamYkNhIoLm60EYeRu57JsMMs5djKi8dBRSKiXwVHx0l2rXMjg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/client-sso-oidc": "3.245.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/shared-ini-file-loader": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/types": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.226.0.tgz",
+ "integrity": "sha512-MmmNHrWeO4man7wpOwrAhXlevqtOV9ZLcH4RhnG5LmRce0RFOApx24HoKENfFCcOyCm5LQBlsXCqi0dZWDWU0A==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/url-parser": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz",
+ "integrity": "sha512-p5RLE0QWyP0OcTOLmFcLdVgUcUEzmEfmdrnOxyNzomcYb0p3vUagA5zfa1HVK2azsQJFBv28GfvMnba9bGhObg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/querystring-parser": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-base64": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz",
+ "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/util-buffer-from": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-body-length-browser": {
+ "version": "3.188.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz",
+ "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-body-length-node": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz",
+ "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-buffer-from": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz",
+ "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/is-array-buffer": "3.201.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-config-provider": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz",
+ "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-defaults-mode-browser": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz",
+ "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-defaults-mode-node": {
+ "version": "3.234.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz",
+ "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/config-resolver": "3.234.0",
+ "@aws-sdk/credential-provider-imds": "3.226.0",
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/property-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-endpoints": {
+ "version": "3.245.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.245.0.tgz",
+ "integrity": "sha512-UNOFquB1tKx+8RT8n82Zb5tIwDyZHVPBg/m0LB0RsLETjr6krien5ASpqWezsXKIR1hftN9uaxN4bvf2dZrWHg==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-hex-encoding": {
+ "version": "3.201.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz",
+ "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-locate-window": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz",
+ "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-middleware": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.226.0.tgz",
+ "integrity": "sha512-B96CQnwX4gRvQdaQkdUtqvDPkrptV5+va6FVeJOocU/DbSYMAScLxtR3peMS8cnlOT6nL1Eoa42OI9AfZz1VwQ==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-retry": {
+ "version": "3.229.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz",
+ "integrity": "sha512-0zKTqi0P1inD0LzIMuXRIYYQ/8c1lWMg/cfiqUcIAF1TpatlpZuN7umU0ierpBFud7S+zDgg0oemh+Nj8xliJw==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/service-error-classification": "3.229.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-uri-escape": {
+ "version": "3.201.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz",
+ "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-user-agent-browser": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.226.0.tgz",
+ "integrity": "sha512-PhBIu2h6sPJPcv2I7ELfFizdl5pNiL4LfxrasMCYXQkJvVnoXztHA1x+CQbXIdtZOIlpjC+6BjDcE0uhnpvfcA==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/types": "3.226.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-user-agent-node": {
+ "version": "3.226.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.226.0.tgz",
+ "integrity": "sha512-othPc5Dz/pkYkxH+nZPhc1Al0HndQT8zHD4e9h+EZ+8lkd8n+IsnLfTS/mSJWrfiC6UlNRVw55cItstmJyMe/A==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/node-config-provider": "3.226.0",
+ "@aws-sdk/types": "3.226.0",
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-utf8-browser": {
+ "version": "3.188.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz",
+ "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==",
+ "optional": true,
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-utf8-node": {
+ "version": "3.208.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz",
+ "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==",
+ "optional": true,
+ "requires": {
+ "@aws-sdk/util-buffer-from": "3.208.0",
+ "tslib": "^2.3.1"
+ }
+ },
"@azure/abort-controller": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
@@ -17887,41 +20004,19 @@
"integrity": "sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q=="
},
"@azure/msal-node": {
- "version": "1.14.5",
- "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz",
- "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==",
+ "version": "1.14.6",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.6.tgz",
+ "integrity": "sha512-em/qqFL5tLMxMPl9vormAs13OgZpmQoJbiQ/GlWr+BA77eCLoL+Ehr5xRHowYo+LFe5b+p+PJVkRvT+mLvOkwA==",
"requires": {
- "@azure/msal-common": "^9.0.1",
- "jsonwebtoken": "^8.5.1",
+ "@azure/msal-common": "^9.0.2",
+ "jsonwebtoken": "^9.0.0",
"uuid": "^8.3.0"
},
"dependencies": {
"@azure/msal-common": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz",
- "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ=="
- },
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz",
+ "integrity": "sha512-qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w=="
}
}
},
@@ -19881,6 +21976,16 @@
"resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz",
"integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA=="
},
+ "@louislam/ping": {
+ "version": "0.4.2-mod.1",
+ "resolved": "https://registry.npmjs.org/@louislam/ping/-/ping-0.4.2-mod.1.tgz",
+ "integrity": "sha512-KkRDo8qcF9kzzR0Hh8Iqz+XNnzKOdobUquP7UyBYrjxAB1jNT3qO0gvAZeDUknF28LXBPSzkiVlf1NG+tb/iyQ==",
+ "requires": {
+ "command-exists": "~1.2.9",
+ "q": "1.x",
+ "underscore": "^1.12.0"
+ }
+ },
"@louislam/sqlite3": {
"version": "15.1.2",
"resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.2.tgz",
@@ -20122,6 +22227,48 @@
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
},
+ "@redis/bloom": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz",
+ "integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ=="
+ },
+ "@redis/client": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz",
+ "integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==",
+ "requires": {
+ "cluster-key-slot": "1.1.1",
+ "generic-pool": "3.9.0",
+ "yallist": "4.0.0"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+ },
+ "@redis/graph": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz",
+ "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg=="
+ },
+ "@redis/json": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz",
+ "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw=="
+ },
+ "@redis/search": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz",
+ "integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ=="
+ },
+ "@redis/time-series": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz",
+ "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng=="
+ },
"@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -20479,6 +22626,20 @@
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
"dev": true
},
+ "@types/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
+ },
+ "@types/whatwg-url": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
+ "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
+ "requires": {
+ "@types/node": "*",
+ "@types/webidl-conversions": "*"
+ }
+ },
"@types/yargs": {
"version": "16.0.5",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
@@ -21437,6 +23598,12 @@
"integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"dev": true
},
+ "bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==",
+ "optional": true
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -21500,6 +23667,14 @@
"node-int64": "^0.4.0"
}
},
+ "bson": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
+ "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
+ "requires": {
+ "buffer": "^5.6.0"
+ }
+ },
"buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -21804,6 +23979,11 @@
"is-regexp": "^2.0.0"
}
},
+ "cluster-key-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz",
+ "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw=="
+ },
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -21851,8 +24031,7 @@
"colorette": {
"version": "2.0.19",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
+ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
},
"combine-errors": {
"version": "3.0.3",
@@ -23653,6 +25832,15 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "fast-xml-parser": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz",
+ "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==",
+ "optional": true,
+ "requires": {
+ "strnum": "^1.0.5"
+ }
+ },
"fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -24004,6 +26192,11 @@
"is-property": "^1.0.2"
}
},
+ "generic-pool": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz",
+ "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g=="
+ },
"gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -24028,8 +26221,7 @@
"get-package-type": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "dev": true
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q=="
},
"get-stdin": {
"version": "8.0.0",
@@ -24056,9 +26248,9 @@
}
},
"getopts": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz",
- "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA=="
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz",
+ "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA=="
},
"getos": {
"version": "3.2.1",
@@ -26544,47 +28736,30 @@
"dev": true
},
"knex": {
- "version": "0.95.15",
- "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz",
- "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.0.tgz",
+ "integrity": "sha512-i0GWwqYp1Hs2yvc2rlDO6nzzkLhwdyOZKRdsMTB8ZxOs2IXQyL5rBjSbS1krowCh6V65T4X9CJaKtuIfkaPGSA==",
"requires": {
- "colorette": "2.0.16",
- "commander": "^7.1.0",
- "debug": "4.3.2",
+ "colorette": "2.0.19",
+ "commander": "^9.1.0",
+ "debug": "4.3.4",
"escalade": "^3.1.1",
"esm": "^3.2.25",
- "getopts": "2.2.5",
+ "get-package-type": "^0.1.0",
+ "getopts": "2.3.0",
"interpret": "^2.2.0",
"lodash": "^4.17.21",
"pg-connection-string": "2.5.0",
- "rechoir": "0.7.0",
+ "rechoir": "^0.8.0",
"resolve-from": "^5.0.0",
- "tarn": "^3.0.1",
+ "tarn": "^3.0.2",
"tildify": "2.0.0"
},
"dependencies": {
- "colorette": {
- "version": "2.0.16",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
- "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g=="
- },
"commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
- },
- "debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="
},
"resolve-from": {
"version": "5.0.0",
@@ -26726,36 +28901,6 @@
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
},
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
- },
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
- },
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
- },
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -26765,7 +28910,8 @@
"lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true
},
"lodash.truncate": {
"version": "4.4.2",
@@ -26965,6 +29111,12 @@
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
},
+ "memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "optional": true
+ },
"meow": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
@@ -27134,6 +29286,51 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
},
+ "mongodb": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.13.0.tgz",
+ "integrity": "sha512-+taZ/bV8d1pYuHL4U+gSwkhmDrwkWbH1l4aah4YpmpscMwgFBkufIKxgP/G7m87/NUuQzc2Z75ZTI7ZOyqZLbw==",
+ "requires": {
+ "@aws-sdk/credential-providers": "^3.186.0",
+ "bson": "^4.7.0",
+ "mongodb-connection-string-url": "^2.5.4",
+ "saslprep": "^1.0.3",
+ "socks": "^2.7.1"
+ }
+ },
+ "mongodb-connection-string-url": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
+ "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
+ "requires": {
+ "@types/whatwg-url": "^8.2.1",
+ "whatwg-url": "^11.0.0"
+ },
+ "dependencies": {
+ "tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
+ "requires": {
+ "punycode": "^2.1.1"
+ }
+ },
+ "webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
+ },
+ "whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
+ "requires": {
+ "tr46": "^3.0.0",
+ "webidl-conversions": "^7.0.0"
+ }
+ }
+ }
+ },
"mqemitter": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz",
@@ -27986,15 +30183,6 @@
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true
},
- "ping": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/ping/-/ping-0.4.2.tgz",
- "integrity": "sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==",
- "requires": {
- "q": "1.x",
- "underscore": "^1.12.0"
- }
- },
"pirates": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
@@ -28533,23 +30721,23 @@
}
},
"rechoir": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
- "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"requires": {
- "resolve": "^1.9.0"
+ "resolve": "^1.20.0"
}
},
"redbean-node": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.1.4.tgz",
- "integrity": "sha512-c1U6wnTeWS0c44tn9hkJWzjGgckLNJ8sN1E2bxnnnQsULOfvEVFLf8dLMjqhyyMrZ1L1mp8UvV4OfhRtH/ZrgQ==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.2.0.tgz",
+ "integrity": "sha512-bHbNgVpkLOn7i/kvfvGDVGzfDgvf20qVRm4EvQV9tD2V2nhcegYUITzAF3XSL2XVirrb5vmWy85vxM44faBnYw==",
"requires": {
"@types/node": "^14.18.12",
"await-lock": "^2.1.0",
"dayjs": "^1.11.0",
"glob": "^7.2.0",
- "knex": "^0.95.15",
+ "knex": "^2.4.0",
"lodash": "^4.17.21"
},
"dependencies": {
@@ -28570,6 +30758,19 @@
"strip-indent": "^3.0.0"
}
},
+ "redis": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz",
+ "integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==",
+ "requires": {
+ "@redis/bloom": "1.1.0",
+ "@redis/client": "1.4.2",
+ "@redis/graph": "1.1.0",
+ "@redis/json": "1.0.4",
+ "@redis/search": "1.1.0",
+ "@redis/time-series": "1.0.4"
+ }
+ },
"regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -29001,6 +31202,15 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
+ "optional": true,
+ "requires": {
+ "sparse-bitfield": "^3.0.3"
+ }
+ },
"sass": {
"version": "1.42.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz",
@@ -29273,6 +31483,15 @@
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"dev": true
},
+ "sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "optional": true,
+ "requires": {
+ "memory-pager": "^1.0.2"
+ }
+ },
"spawn-command": {
"version": "0.0.2-1",
"resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
@@ -29507,6 +31726,12 @@
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
+ "strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
+ "optional": true
+ },
"style-search": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
diff --git a/package.json b/package.json
index e51fd30e..9e635d1b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "uptime-kuma",
- "version": "1.19.3",
+ "version": "1.19.6",
"license": "MIT",
"repository": {
"type": "git",
@@ -31,6 +31,7 @@
"build-docker": "npm run build && npm run build-docker-debian && npm run build-docker-alpine",
"build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push",
"build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push",
+ "build-docker-builder-go": "docker buildx build -f docker/builder-go.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:builder-go . --push",
"build-docker-alpine": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:$VERSION-alpine --target release . --push",
"build-docker-debian": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:$VERSION-debian --target release . --push",
"build-docker-nightly": "npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
@@ -38,7 +39,7 @@
"build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
"build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push",
"upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain",
- "setup": "git checkout 1.19.3 && npm ci --production && npm run download-dist",
+ "setup": "git checkout 1.19.6 && npm ci --production && npm run download-dist",
"download-dist": "node extra/download-dist.js",
"mark-as-nightly": "node extra/mark-as-nightly.js",
"reset-password": "node extra/reset-password.js",
@@ -60,11 +61,13 @@
"start-pr-test": "node extra/checkout-pr.js && npm install && npm run dev",
"cy:test": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/ --e2e",
"cy:run": "npx cypress run --browser chrome --headless --config-file ./config/cypress.config.js",
+ "cy:run:unit": "npx cypress run --browser chrome --headless --config-file ./config/cypress.frontend.config.js",
"cypress-open": "concurrently -k -r \"node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/\" \"cypress open --config-file ./config/cypress.config.js\"",
"build-healthcheck-armv7": "cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go"
},
"dependencies": {
"@grpc/grpc-js": "~1.7.3",
+ "@louislam/ping": "~0.4.2-mod.1",
"@louislam/sqlite3": "15.1.2",
"args-parser": "~1.3.0",
"axios": "~0.27.0",
@@ -94,6 +97,7 @@
"jsonwebtoken": "~9.0.0",
"jwt-decode": "~3.1.2",
"limiter": "~2.1.0",
+ "mongodb": "~4.13.0",
"mqtt": "~4.3.7",
"mssql": "~8.1.4",
"mysql2": "~2.3.3",
@@ -104,11 +108,11 @@
"password-hash": "~1.2.2",
"pg": "~8.8.0",
"pg-connection-string": "~2.5.0",
- "ping": "~0.4.2",
"prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1",
"protobufjs": "~7.1.1",
- "redbean-node": "0.1.4",
+ "redbean-node": "~0.2.0",
+ "redis": "~4.5.1",
"socket.io": "~4.5.3",
"socket.io-client": "~4.5.3",
"socks-proxy-agent": "6.1.1",
diff --git a/server/auth.js b/server/auth.js
index 3ce1a604..fd19b0e4 100644
--- a/server/auth.js
+++ b/server/auth.js
@@ -63,6 +63,12 @@ function myAuthorizer(username, password, callback) {
});
}
+/**
+ * Use basic auth if auth is not disabled
+ * @param {express.Request} req Express request object
+ * @param {express.Response} res Express response object
+ * @param {express.NextFunction} next
+ */
exports.basicAuth = async function (req, res, next) {
const middleware = basicAuth({
authorizer: myAuthorizer,
diff --git a/server/cacheable-dns-http-agent.js b/server/cacheable-dns-http-agent.js
index 30136791..cc067f72 100644
--- a/server/cacheable-dns-http-agent.js
+++ b/server/cacheable-dns-http-agent.js
@@ -37,6 +37,10 @@ class CacheableDnsHttpAgent {
this.enable = isEnable;
}
+ /**
+ * Attach cacheable to HTTP agent
+ * @param {http.Agent} agent Agent to install
+ */
static install(agent) {
this.cacheable.install(agent);
}
diff --git a/server/jobs.js b/server/jobs.js
index f9c7f86e..66a27606 100644
--- a/server/jobs.js
+++ b/server/jobs.js
@@ -32,6 +32,7 @@ const initBackgroundJobs = function (args) {
return bree;
};
+/** Stop all background jobs if running */
const stopBackgroundJobs = function () {
if (bree) {
bree.stop();
diff --git a/server/jobs/clear-old-data.js b/server/jobs/clear-old-data.js
index 0ec5ffa5..ed80b0f7 100644
--- a/server/jobs/clear-old-data.js
+++ b/server/jobs/clear-old-data.js
@@ -25,15 +25,20 @@ const DEFAULT_KEEP_PERIOD = 180;
parsedPeriod = DEFAULT_KEEP_PERIOD;
}
- log(`Clearing Data older than ${parsedPeriod} days...`);
+ if (parsedPeriod < 1) {
+ log(`Data deletion has been disabled as period is less than 1. Period is ${parsedPeriod} days.`);
+ } else {
- try {
- await R.exec(
- "DELETE FROM heartbeat WHERE time < DATETIME('now', '-' || ? || ' days') ",
- [ parsedPeriod ]
- );
- } catch (e) {
- log(`Failed to clear old data: ${e.message}`);
+ log(`Clearing Data older than ${parsedPeriod} days...`);
+
+ try {
+ await R.exec(
+ "DELETE FROM heartbeat WHERE time < DATETIME('now', '-' || ? || ' days') ",
+ [ parsedPeriod ]
+ );
+ } catch (e) {
+ log(`Failed to clear old data: ${e.message}`);
+ }
}
exit();
diff --git a/server/model/maintenance.js b/server/model/maintenance.js
index d9be3427..45db63d1 100644
--- a/server/model/maintenance.js
+++ b/server/model/maintenance.js
@@ -112,6 +112,11 @@ class Maintenance extends BeanModel {
return this.toPublicJSON(timezone);
}
+ /**
+ * Get a list of weekdays that the maintenance is active for
+ * Monday=1, Tuesday=2 etc.
+ * @returns {number[]} Array of active weekdays
+ */
getDayOfWeekList() {
log.debug("timeslot", "List: " + this.weekdays);
return JSON.parse(this.weekdays).sort(function (a, b) {
@@ -119,12 +124,20 @@ class Maintenance extends BeanModel {
});
}
+ /**
+ * Get a list of days in month that maintenance is active for
+ * @returns {number[]} Array of active days in month
+ */
getDayOfMonthList() {
return JSON.parse(this.days_of_month).sort(function (a, b) {
return a - b;
});
}
+ /**
+ * Get the start date and time for maintenance
+ * @returns {dayjs.Dayjs} Start date and time
+ */
getStartDateTime() {
let startOfTheDay = dayjs.utc(this.start_date).format("HH:mm");
log.debug("timeslot", "startOfTheDay: " + startOfTheDay);
@@ -137,6 +150,10 @@ class Maintenance extends BeanModel {
return dayjs.utc(this.start_date).add(startTimeSecond, "second");
}
+ /**
+ * Get the duraction of maintenance in seconds
+ * @returns {number} Duration of maintenance
+ */
getDuration() {
let duration = dayjs.utc(this.end_time, "HH:mm").diff(dayjs.utc(this.start_time, "HH:mm"), "second");
// Add 24hours if it is across day
@@ -146,6 +163,12 @@ class Maintenance extends BeanModel {
return duration;
}
+ /**
+ * Convert data from socket to bean
+ * @param {Bean} bean Bean to fill in
+ * @param {Object} obj Data to fill bean with
+ * @returns {Bean} Filled bean
+ */
static jsonToBean(bean, obj) {
if (obj.id) {
bean.id = obj.id;
diff --git a/server/model/maintenance_timeslot.js b/server/model/maintenance_timeslot.js
index 2babe6bc..77643c2c 100644
--- a/server/model/maintenance_timeslot.js
+++ b/server/model/maintenance_timeslot.js
@@ -6,6 +6,11 @@ const { UptimeKumaServer } = require("../uptime-kuma-server");
class MaintenanceTimeslot extends BeanModel {
+ /**
+ * Return an object that ready to parse to JSON for public
+ * Only show necessary data to public
+ * @returns {Object}
+ */
async toPublicJSON() {
const serverTimezoneOffset = UptimeKumaServer.getInstance().getTimezoneOffset();
@@ -21,6 +26,10 @@ class MaintenanceTimeslot extends BeanModel {
return obj;
}
+ /**
+ * Return an object that ready to parse to JSON
+ * @returns {Object}
+ */
async toJSON() {
return await this.toPublicJSON();
}
diff --git a/server/model/monitor.js b/server/model/monitor.js
index f541a62b..62d788a9 100644
--- a/server/model/monitor.js
+++ b/server/model/monitor.js
@@ -3,7 +3,9 @@ const dayjs = require("dayjs");
const axios = require("axios");
const { Prometheus } = require("../prometheus");
const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, TimeLogger, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND } = require("../../src/util");
-const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery } = require("../util-server");
+const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery,
+ redisPingAsync, mongodbPing,
+} = require("../util-server");
const { R } = require("redbean-node");
const { BeanModel } = require("redbean-node/dist/bean-model");
const { Notification } = require("../notification");
@@ -37,7 +39,6 @@ class Monitor extends BeanModel {
id: this.id,
name: this.name,
sendUrl: this.sendUrl,
- maintenance: await Monitor.isUnderMaintenance(this.id),
};
if (this.sendUrl) {
@@ -510,13 +511,17 @@ class Monitor extends BeanModel {
const options = {
url: `/containers/${this.docker_container}/json`,
+ timeout: this.interval * 1000 * 0.8,
headers: {
"Accept": "*/*",
"User-Agent": "Uptime-Kuma/" + version,
},
- httpsAgent: new https.Agent({
+ httpsAgent: CacheableDnsHttpAgent.getHttpsAgent({
maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940)
- rejectUnauthorized: ! this.getIgnoreTls(),
+ rejectUnauthorized: !this.getIgnoreTls(),
+ }),
+ httpAgent: CacheableDnsHttpAgent.getHttpAgent({
+ maxCachedSessions: 0,
}),
};
@@ -597,6 +602,15 @@ class Monitor extends BeanModel {
bean.msg = "";
bean.status = UP;
bean.ping = dayjs().valueOf() - startTime;
+ } else if (this.type === "mongodb") {
+ let startTime = dayjs().valueOf();
+
+ await mongodbPing(this.databaseConnectionString);
+
+ bean.msg = "";
+ bean.status = UP;
+ bean.ping = dayjs().valueOf() - startTime;
+
} else if (this.type === "radius") {
let startTime = dayjs().valueOf();
@@ -633,6 +647,12 @@ class Monitor extends BeanModel {
}
}
bean.ping = dayjs().valueOf() - startTime;
+ } else if (this.type === "redis") {
+ let startTime = dayjs().valueOf();
+
+ bean.msg = await redisPingAsync(this.databaseConnectionString);
+ bean.status = UP;
+ bean.ping = dayjs().valueOf() - startTime;
} else {
bean.msg = "Unknown Monitor Type";
bean.status = PENDING;
@@ -764,6 +784,13 @@ class Monitor extends BeanModel {
}
}
+ /**
+ * Make a request using axios
+ * @param {Object} options Options for Axios
+ * @param {boolean} finalCall Should this be the final call i.e
+ * don't retry on faliure
+ * @returns {Object} Axios response
+ */
async makeAxiosRequest(options, finalCall = false) {
try {
let res;
@@ -1245,6 +1272,7 @@ class Monitor extends BeanModel {
return maintenance.count !== 0;
}
+ /** Make sure monitor interval is between bounds */
validate() {
if (this.interval > MAX_INTERVAL_SECOND) {
throw new Error(`Interval cannot be more than ${MAX_INTERVAL_SECOND} seconds`);
diff --git a/server/notification-providers/promosms.js b/server/notification-providers/promosms.js
index 4f7e8f90..572a2132 100644
--- a/server/notification-providers/promosms.js
+++ b/server/notification-providers/promosms.js
@@ -8,6 +8,14 @@ class PromoSMS extends NotificationProvider {
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
let okMsg = "Sent Successfully.";
+ if (notification.promosmsAllowLongSMS === undefined) {
+ notification.promosmsAllowLongSMS = false;
+ }
+
+ //TODO: Add option for enabling special characters. It will decrese message max length from 160 to 70 chars.
+ //Lets remove non ascii char
+ let cleanMsg = msg.replace(/[^\x00-\x7F]/g, "");
+
try {
let config = {
headers: {
@@ -18,8 +26,9 @@ class PromoSMS extends NotificationProvider {
};
let data = {
"recipients": [ notification.promosmsPhoneNumber ],
- //Lets remove non ascii char
- "text": msg.replace(/[^\x00-\x7F]/g, ""),
+ //Trim message to maximum length of 1 SMS or 4 if we allowed long messages
+ "text": notification.promosmsAllowLongSMS ? cleanMsg.substring(0, 639) : cleanMsg.substring(0, 159),
+ "long-sms": notification.promosmsAllowLongSMS,
"type": Number(notification.promosmsSMSType),
"sender": notification.promosmsSenderName
};
diff --git a/server/notification-providers/pushover.js b/server/notification-providers/pushover.js
index ebcb88c4..e4f0ddb8 100644
--- a/server/notification-providers/pushover.js
+++ b/server/notification-providers/pushover.js
@@ -10,7 +10,7 @@ class Pushover extends NotificationProvider {
let pushoverlink = "https://api.pushover.net/1/messages.json";
let data = {
- "message": "Uptime Kuma Alert\n\nMessage:" + msg,
+ "message": msg,
"user": notification.pushoveruserkey,
"token": notification.pushoverapptoken,
"sound": notification.pushoversounds,
diff --git a/server/notification-providers/serverchan.js b/server/notification-providers/serverchan.js
index fbf99f80..d631c8e6 100644
--- a/server/notification-providers/serverchan.js
+++ b/server/notification-providers/serverchan.js
@@ -21,6 +21,12 @@ class ServerChan extends NotificationProvider {
}
}
+ /**
+ * Get the formatted title for message
+ * @param {?Object} monitorJSON Monitor details (For Up/Down only)
+ * @param {?Object} heartbeatJSON Heartbeat details (For Up/Down only)
+ * @returns {string} Formatted title
+ */
checkStatus(heartbeatJSON, monitorJSON) {
let title = "UptimeKuma Message";
if (heartbeatJSON != null && heartbeatJSON["status"] === UP) {
diff --git a/server/notification-providers/splunk.js b/server/notification-providers/splunk.js
new file mode 100644
index 00000000..2d82dd39
--- /dev/null
+++ b/server/notification-providers/splunk.js
@@ -0,0 +1,113 @@
+const NotificationProvider = require("./notification-provider");
+const axios = require("axios");
+const { UP, DOWN, getMonitorRelativeURL } = require("../../src/util");
+const { setting } = require("../util-server");
+let successMessage = "Sent Successfully.";
+
+class Splunk extends NotificationProvider {
+ name = "Splunk";
+
+ /**
+ * @inheritdoc
+ */
+ async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+ try {
+ if (heartbeatJSON == null) {
+ const title = "Uptime Kuma Alert";
+ const monitor = {
+ type: "ping",
+ url: "Uptime Kuma Test Button",
+ };
+ return this.postNotification(notification, title, msg, monitor, "trigger");
+ }
+
+ if (heartbeatJSON.status === UP) {
+ const title = "Uptime Kuma Monitor ✅ Up";
+ return this.postNotification(notification, title, heartbeatJSON.msg, monitorJSON, "recovery");
+ }
+
+ if (heartbeatJSON.status === DOWN) {
+ const title = "Uptime Kuma Monitor 🔴 Down";
+ return this.postNotification(notification, title, heartbeatJSON.msg, monitorJSON, "trigger");
+ }
+ } catch (error) {
+ this.throwGeneralAxiosError(error);
+ }
+ }
+
+ /**
+ * Check if result is successful, result code should be in range 2xx
+ * @param {Object} result Axios response object
+ * @throws {Error} The status code is not in range 2xx
+ */
+ checkResult(result) {
+ if (result.status == null) {
+ throw new Error("Splunk notification failed with invalid response!");
+ }
+ if (result.status < 200 || result.status >= 300) {
+ throw new Error("Splunk notification failed with status code " + result.status);
+ }
+ }
+
+ /**
+ * Send the message
+ * @param {BeanModel} notification Message title
+ * @param {string} title Message title
+ * @param {string} body Message
+ * @param {Object} monitorInfo Monitor details (For Up/Down only)
+ * @param {?string} eventAction Action event for PagerDuty (trigger, acknowledge, resolve)
+ * @returns {string}
+ */
+ async postNotification(notification, title, body, monitorInfo, eventAction = "trigger") {
+
+ let monitorUrl;
+ if (monitorInfo.type === "port") {
+ monitorUrl = monitorInfo.hostname;
+ if (monitorInfo.port) {
+ monitorUrl += ":" + monitorInfo.port;
+ }
+ } else if (monitorInfo.hostname != null) {
+ monitorUrl = monitorInfo.hostname;
+ } else {
+ monitorUrl = monitorInfo.url;
+ }
+
+ if (eventAction === "recovery") {
+ if (notification.splunkAutoResolve === "0") {
+ return "No action required";
+ }
+ eventAction = notification.splunkAutoResolve;
+ } else {
+ eventAction = notification.splunkSeverity;
+ }
+
+ const options = {
+ method: "POST",
+ url: notification.splunkRestURL,
+ headers: { "Content-Type": "application/json" },
+ data: {
+ message_type: eventAction,
+ state_message: `[${title}] [${monitorUrl}] ${body}`,
+ entity_display_name: "Uptime Kuma Alert: " + monitorInfo.name,
+ routing_key: notification.pagerdutyIntegrationKey,
+ entity_id: "Uptime Kuma/" + monitorInfo.id,
+ }
+ };
+
+ const baseURL = await setting("primaryBaseURL");
+ if (baseURL && monitorInfo) {
+ options.client = "Uptime Kuma";
+ options.client_url = baseURL + getMonitorRelativeURL(monitorInfo.id);
+ }
+
+ let result = await axios.request(options);
+ this.checkResult(result);
+ if (result.statusText != null) {
+ return "Splunk notification succeed: " + result.statusText;
+ }
+
+ return successMessage;
+ }
+}
+
+module.exports = Splunk;
diff --git a/server/notification.js b/server/notification.js
index 1aad704c..fd349123 100644
--- a/server/notification.js
+++ b/server/notification.js
@@ -40,6 +40,7 @@ const Stackfield = require("./notification-providers/stackfield");
const Teams = require("./notification-providers/teams");
const TechulusPush = require("./notification-providers/techulus-push");
const Telegram = require("./notification-providers/telegram");
+const Splunk = require("./notification-providers/splunk");
const Webhook = require("./notification-providers/webhook");
const WeCom = require("./notification-providers/wecom");
const GoAlert = require("./notification-providers/goalert");
@@ -100,6 +101,7 @@ class Notification {
new Teams(),
new TechulusPush(),
new Telegram(),
+ new Splunk(),
new Webhook(),
new WeCom(),
new GoAlert(),
diff --git a/server/prometheus.js b/server/prometheus.js
index 1473ab7a..aeba95f8 100644
--- a/server/prometheus.js
+++ b/server/prometheus.js
@@ -99,6 +99,7 @@ class Prometheus {
}
}
+ /** Remove monitor from prometheus */
remove() {
try {
monitorCertDaysRemaining.remove(this.monitorLabelValues);
diff --git a/server/server.js b/server/server.js
index 26e16c2d..43219695 100644
--- a/server/server.js
+++ b/server/server.js
@@ -942,13 +942,21 @@ let needSetup = false;
try {
checkLogin(socket);
- let bean = await R.findOne("monitor", " id = ? ", [ tag.id ]);
+ let bean = await R.findOne("tag", " id = ? ", [ tag.id ]);
+ if (bean == null) {
+ callback({
+ ok: false,
+ msg: "Tag not found",
+ });
+ return;
+ }
bean.name = tag.name;
bean.color = tag.color;
await R.store(bean);
callback({
ok: true,
+ msg: "Saved",
tag: await bean.toJSON(),
});
diff --git a/server/uptime-cache-list.js b/server/uptime-cache-list.js
index 1347968f..d88a9cbf 100644
--- a/server/uptime-cache-list.js
+++ b/server/uptime-cache-list.js
@@ -6,10 +6,10 @@ class UptimeCacheList {
static list = {};
/**
- *
- * @param monitorID
- * @param duration
- * @return number
+ * Get the uptime for a specific period
+ * @param {number} monitorID
+ * @param {number} duration
+ * @return {number}
*/
static getUptime(monitorID, duration) {
if (UptimeCacheList.list[monitorID] && UptimeCacheList.list[monitorID][duration]) {
@@ -20,6 +20,12 @@ class UptimeCacheList {
}
}
+ /**
+ * Add uptime for specified monitor
+ * @param {number} monitorID
+ * @param {number} duration
+ * @param {number} uptime Uptime to add
+ */
static addUptime(monitorID, duration, uptime) {
log.debug("UptimeCacheList", "addUptime: " + monitorID + " " + duration);
if (!UptimeCacheList.list[monitorID]) {
@@ -28,6 +34,10 @@ class UptimeCacheList {
UptimeCacheList.list[monitorID][duration] = uptime;
}
+ /**
+ * Clear cache for specified monitor
+ * @param {number} monitorID
+ */
static clearCache(monitorID) {
log.debug("UptimeCacheList", "clearCache: " + monitorID);
delete UptimeCacheList.list[monitorID];
diff --git a/server/uptime-kuma-server.js b/server/uptime-kuma-server.js
index 06237562..faffb98b 100644
--- a/server/uptime-kuma-server.js
+++ b/server/uptime-kuma-server.js
@@ -86,6 +86,7 @@ class UptimeKumaServer {
this.io = new Server(this.httpServer);
}
+ /** Initialise app after the database has been set up */
async initAfterDatabaseReady() {
await CacheableDnsHttpAgent.update();
@@ -98,6 +99,11 @@ class UptimeKumaServer {
this.generateMaintenanceTimeslotsInterval = setInterval(this.generateMaintenanceTimeslots, 60 * 1000);
}
+ /**
+ * Send list of monitors to client
+ * @param {Socket} socket
+ * @returns {Object} List of monitors
+ */
async sendMonitorList(socket) {
let list = await this.getMonitorJSONList(socket.userID);
this.io.to(socket.userID).emit("monitorList", list);
@@ -134,6 +140,11 @@ class UptimeKumaServer {
return await this.sendMaintenanceListByUserID(socket.userID);
}
+ /**
+ * Send list of maintenances to user
+ * @param {number} userID
+ * @returns {Object}
+ */
async sendMaintenanceListByUserID(userID) {
let list = await this.getMaintenanceJSONList(userID);
this.io.to(userID).emit("maintenanceList", list);
@@ -185,6 +196,11 @@ class UptimeKumaServer {
errorLogStream.end();
}
+ /**
+ * Get the IP of the client connected to the socket
+ * @param {Socket} socket
+ * @returns {string}
+ */
async getClientIP(socket) {
let clientIP = socket.client.conn.remoteAddress;
@@ -203,6 +219,12 @@ class UptimeKumaServer {
}
}
+ /**
+ * Attempt to get the current server timezone
+ * If this fails, fall back to environment variables and then make a
+ * guess.
+ * @returns {string}
+ */
async getTimezone() {
let timezone = await Settings.get("serverTimezone");
if (timezone) {
@@ -214,16 +236,25 @@ class UptimeKumaServer {
}
}
+ /**
+ * Get the current offset
+ * @returns {string}
+ */
getTimezoneOffset() {
return dayjs().format("Z");
}
+ /**
+ * Set the current server timezone and environment variables
+ * @param {string} timezone
+ */
async setTimezone(timezone) {
await Settings.set("serverTimezone", timezone, "general");
process.env.TZ = timezone;
dayjs.tz.setDefault(timezone);
}
+ /** Load the timeslots for maintenance */
async generateMaintenanceTimeslots() {
let list = await R.find("maintenance_timeslot", " generated_next = 0 AND start_date <= DATETIME('now') ");
@@ -237,6 +268,7 @@ class UptimeKumaServer {
}
+ /** Stop the server */
async stop() {
clearTimeout(this.generateMaintenanceTimeslotsInterval);
}
diff --git a/server/util-server.js b/server/util-server.js
index 4a30017a..4519b083 100644
--- a/server/util-server.js
+++ b/server/util-server.js
@@ -1,5 +1,5 @@
const tcpp = require("tcp-ping");
-const ping = require("ping");
+const ping = require("@louislam/ping");
const { R } = require("redbean-node");
const { log, genSecret } = require("../src/util");
const passwordHash = require("./password-hash");
@@ -14,11 +14,13 @@ const mssql = require("mssql");
const { Client } = require("pg");
const postgresConParse = require("pg-connection-string").parse;
const mysql = require("mysql2");
+const { MongoClient } = require("mongodb");
const { NtlmClient } = require("axios-ntlm");
const { Settings } = require("./settings");
const grpc = require("@grpc/grpc-js");
const protojs = require("protobufjs");
const radiusClient = require("node-radius-client");
+const redis = require("redis");
const {
dictionaries: {
rfc2865: { file, attributes },
@@ -103,7 +105,7 @@ exports.pingAsync = function (hostname, ipv6 = false) {
ping.promise.probe(hostname, {
v6: ipv6,
min_reply: 1,
- timeout: 10,
+ deadline: 10,
}).then((res) => {
// If ping failed, it will set field to unknown
if (res.alive) {
@@ -135,7 +137,7 @@ exports.mqttAsync = function (hostname, topic, okMessage, options = {}) {
const { port, username, password, interval = 20 } = options;
// Adds MQTT protocol to the hostname if not already present
- if (!/^(?:http|mqtt)s?:\/\//.test(hostname)) {
+ if (!/^(?:http|mqtt|ws)s?:\/\//.test(hostname)) {
hostname = "mqtt://" + hostname;
}
@@ -145,10 +147,11 @@ exports.mqttAsync = function (hostname, topic, okMessage, options = {}) {
reject(new Error("Timeout"));
}, interval * 1000 * 0.8);
- log.debug("mqtt", "MQTT connecting");
+ const mqttUrl = `${hostname}:${port}`;
- let client = mqtt.connect(hostname, {
- port,
+ log.debug("mqtt", `MQTT connecting to ${mqttUrl}`);
+
+ let client = mqtt.connect(mqttUrl, {
username,
password
});
@@ -280,18 +283,23 @@ exports.postgresQuery = function (connectionString, query) {
const client = new Client({ connectionString });
- client.connect();
-
- return client.query(query)
- .then(res => {
- resolve(res);
- })
- .catch(err => {
+ client.connect((err) => {
+ if (err) {
reject(err);
- })
- .finally(() => {
client.end();
- });
+ } else {
+ // Connected here
+ client.query(query, (err, res) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(res);
+ }
+ client.end();
+ });
+ }
+ });
+
});
};
@@ -317,6 +325,23 @@ exports.mysqlQuery = function (connectionString, query) {
});
};
+/**
+ * Connect to and Ping a MongoDB database
+ * @param {string} connectionString The database connection string
+ * @returns {Promise<(string[]|Object[]|Object)>}
+ */
+exports.mongodbPing = async function (connectionString) {
+ let client = await MongoClient.connect(connectionString);
+ let dbPing = await client.db().command({ ping: 1 });
+ await client.close();
+
+ if (dbPing["ok"] === 1) {
+ return "UP";
+ } else {
+ throw Error("failed");
+ }
+};
+
/**
* Query radius server
* @param {string} hostname Hostname of radius server
@@ -354,6 +379,30 @@ exports.radius = function (
});
};
+/**
+ * Redis server ping
+ * @param {string} dsn The redis connection string
+ */
+exports.redisPingAsync = function (dsn) {
+ return new Promise((resolve, reject) => {
+ const client = redis.createClient({
+ url: dsn,
+ });
+ client.on("error", (err) => {
+ reject(err);
+ });
+ client.connect().then(() => {
+ client.ping().then((res, err) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(res);
+ }
+ });
+ });
+ });
+};
+
/**
* Retrieve value of setting based on key
* @param {string} key Key of setting to retrieve
diff --git a/src/assets/localization.scss b/src/assets/localization.scss
index f9a28d8a..97be3778 100644
--- a/src/assets/localization.scss
+++ b/src/assets/localization.scss
@@ -2,4 +2,8 @@ html[lang='fa'] {
#app {
font-family: 'IRANSans', 'Iranian Sans','B Nazanin', 'Tahoma', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji;
}
-}
\ No newline at end of file
+}
+
+ul.multiselect__content {
+ padding-left: 0 !important;
+}
diff --git a/src/components/DockerHostDialog.vue b/src/components/DockerHostDialog.vue
index 50ffa49c..335e8f2b 100644
--- a/src/components/DockerHostDialog.vue
+++ b/src/components/DockerHostDialog.vue
@@ -73,7 +73,7 @@ export default {
emits: [ "added" ],
data() {
return {
- model: null,
+ modal: null,
processing: false,
id: null,
connectionTypes: [ "socket", "tcp" ],
@@ -91,11 +91,16 @@ export default {
},
methods: {
+ /** Confirm deletion of docker host */
deleteConfirm() {
this.modal.hide();
this.$refs.confirmDelete.show();
},
+ /**
+ * Show specified docker host
+ * @param {number} dockerHostID
+ */
show(dockerHostID) {
if (dockerHostID) {
let found = false;
@@ -126,6 +131,7 @@ export default {
this.modal.show();
},
+ /** Add docker host */
submit() {
this.processing = true;
this.$root.getSocket().emit("addDockerHost", this.dockerHost, this.id, (res) => {
@@ -144,6 +150,7 @@ export default {
});
},
+ /** Test the docker host */
test() {
this.processing = true;
this.$root.getSocket().emit("testDockerHost", this.dockerHost, (res) => {
@@ -152,6 +159,7 @@ export default {
});
},
+ /** Delete this docker host */
deleteDockerHost() {
this.processing = true;
this.$root.getSocket().emit("deleteDockerHost", this.id, (res) => {
diff --git a/src/components/Tag.vue b/src/components/Tag.vue
index 0325d990..cbbe0b79 100644
--- a/src/components/Tag.vue
+++ b/src/components/Tag.vue
@@ -41,7 +41,7 @@ export default {
},
computed: {
displayText() {
- if (this.item.value === "") {
+ if (this.item.value === "" || this.item.value === undefined) {
return this.item.name;
} else {
return `${this.item.name}: ${this.item.value}`;
diff --git a/src/components/TagEditDialog.vue b/src/components/TagEditDialog.vue
new file mode 100644
index 00000000..80ca32bb
--- /dev/null
+++ b/src/components/TagEditDialog.vue
@@ -0,0 +1,376 @@
+
+
+
+
+ {{ $t("confirmDeleteTagMsg") }}
+
+
+
+
+
+
diff --git a/src/components/TagsManager.vue b/src/components/TagsManager.vue
index 8481fdfe..b302cd20 100644
--- a/src/components/TagsManager.vue
+++ b/src/components/TagsManager.vue
@@ -130,6 +130,7 @@
import { Modal } from "bootstrap";
import VueMultiselect from "vue-multiselect";
import { useToast } from "vue-toastification";
+import { colorOptions } from "../util-frontend";
import Tag from "../components/Tag.vue";
const toast = useToast();
@@ -176,24 +177,7 @@ export default {
return this.preSelectedTags.concat(this.newTags).filter(tag => !this.deleteTags.find(monitorTag => monitorTag.id === tag.id));
},
colorOptions() {
- return [
- { name: this.$t("Gray"),
- color: "#4B5563" },
- { name: this.$t("Red"),
- color: "#DC2626" },
- { name: this.$t("Orange"),
- color: "#D97706" },
- { name: this.$t("Green"),
- color: "#059669" },
- { name: this.$t("Blue"),
- color: "#2563EB" },
- { name: this.$t("Indigo"),
- color: "#4F46E5" },
- { name: this.$t("Purple"),
- color: "#7C3AED" },
- { name: this.$t("Pink"),
- color: "#DB2777" },
- ];
+ return colorOptions(this);
},
validateDraftTag() {
let nameInvalid = false;
diff --git a/src/components/Uptime.vue b/src/components/Uptime.vue
index df9bd47a..7b5f48bb 100644
--- a/src/components/Uptime.vue
+++ b/src/components/Uptime.vue
@@ -3,6 +3,8 @@
diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue
index 9daf31ac..723bd1be 100644
--- a/src/components/notifications/Telegram.vue
+++ b/src/components/notifications/Telegram.vue
@@ -42,6 +42,11 @@ export default {
HiddenInput,
},
methods: {
+ /**
+ * Get the URL for telegram updates
+ * @param {string} [mode=masked] Should the token be masked?
+ * @returns {string} formatted URL
+ */
telegramGetUpdatesURL(mode = "masked") {
let token = `<${this.$t("YOUR BOT TOKEN HERE")}>`;
@@ -55,6 +60,8 @@ export default {
return `https://api.telegram.org/bot${token}/getUpdates`;
},
+
+ /** Get the telegram chat ID */
async autoGetTelegramChatID() {
try {
let res = await axios.get(this.telegramGetUpdatesURL("withToken"));
diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js
index 810cdf03..3c8b2621 100644
--- a/src/components/notifications/index.js
+++ b/src/components/notifications/index.js
@@ -44,6 +44,7 @@ import Webhook from "./Webhook.vue";
import WeCom from "./WeCom.vue";
import GoAlert from "./GoAlert.vue";
import ZohoCliq from "./ZohoCliq.vue";
+import Splunk from "./Splunk.vue";
/**
* Manage all notification form.
@@ -92,6 +93,7 @@ const NotificationFormList = {
"stackfield": Stackfield,
"teams": Teams,
"telegram": Telegram,
+ "Splunk": Splunk,
"webhook": Webhook,
"WeCom": WeCom,
"GoAlert": GoAlert,
diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue
index c78c6aaf..afcb7bc9 100644
--- a/src/components/settings/MonitorHistory.vue
+++ b/src/components/settings/MonitorHistory.vue
@@ -7,6 +7,7 @@
settings.keepDataPeriodDays,
])
}}
+ {{ $t("infiniteRetention") }}
+
+ {{ $t("dataRetentionTimeError") }}
+
@@ -115,7 +121,7 @@
-
+
@@ -277,6 +283,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -586,6 +610,7 @@ import DockerHostDialog from "../components/DockerHostDialog.vue";
import ProxyDialog from "../components/ProxyDialog.vue";
import TagsManager from "../components/TagsManager.vue";
import { genSecret, isDev, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND } from "../util.ts";
+import { hostNameRegexPattern } from "../util-frontend";
const toast = useToast();
@@ -610,11 +635,8 @@ export default {
},
acceptedStatusCodeOptions: [],
dnsresolvetypeOptions: [],
-
- // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/
- ipRegexPattern: "((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))",
- // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address
- hostnameRegexPattern: "^(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$"
+ ipOrHostnameRegexPattern: hostNameRegexPattern(),
+ mqttIpOrHostnameRegexPattern: hostNameRegexPattern(true)
};
},
diff --git a/src/pages/MaintenanceDetails.vue b/src/pages/MaintenanceDetails.vue
index 04c21691..0cf9283d 100644
--- a/src/pages/MaintenanceDetails.vue
+++ b/src/pages/MaintenanceDetails.vue
@@ -65,6 +65,7 @@ export default {
this.init();
},
methods: {
+ /** Initialise page */
init() {
this.$root.getSocket().emit("getMonitorMaintenance", this.$route.params.id, (res) => {
if (res.ok) {
@@ -83,10 +84,12 @@ export default {
});
},
+ /** Confirm deletion */
deleteDialog() {
this.$refs.confirmDelete.show();
},
+ /** Delete maintenance after showing confirmation */
deleteMaintenance() {
this.$root.deleteMaintenance(this.maintenance.id, (res) => {
if (res.ok) {
diff --git a/src/pages/ManageMaintenance.vue b/src/pages/ManageMaintenance.vue
index dd36c950..aaffbbf9 100644
--- a/src/pages/ManageMaintenance.vue
+++ b/src/pages/ManageMaintenance.vue
@@ -133,15 +133,25 @@ export default {
}
},
+ /**
+ * Get maintenance URL
+ * @param {number} id
+ * @returns {string} Relative URL
+ */
maintenanceURL(id) {
return getMaintenanceRelativeURL(id);
},
+ /**
+ * Show delete confirmation
+ * @param {number} maintenanceID
+ */
deleteDialog(maintenanceID) {
this.selectedMaintenanceID = maintenanceID;
this.$refs.confirmDelete.show();
},
+ /** Delete maintenance after showing confirmation dialog */
deleteMaintenance() {
this.$root.deleteMaintenance(this.selectedMaintenanceID, (res) => {
if (res.ok) {
diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue
index 87404968..f5d32e0e 100644
--- a/src/pages/Settings.vue
+++ b/src/pages/Settings.vue
@@ -95,6 +95,9 @@ export default {
"reverse-proxy": {
title: this.$t("Reverse Proxy"),
},
+ tags: {
+ title: this.$t("Tags"),
+ },
"monitor-history": {
title: this.$t("Monitor History"),
},
@@ -189,14 +192,36 @@ export default {
* @param {string} [currentPassword] Only need for disableAuth to true
*/
saveSettings(callback, currentPassword) {
- this.$root.getSocket().emit("setSettings", this.settings, currentPassword, (res) => {
- this.$root.toastRes(res);
- this.loadSettings();
+ let valid = this.validateSettings();
+ if (valid.success) {
+ this.$root.getSocket().emit("setSettings", this.settings, currentPassword, (res) => {
+ this.$root.toastRes(res);
+ this.loadSettings();
- if (callback) {
- callback();
- }
- });
+ if (callback) {
+ callback();
+ }
+ });
+ } else {
+ this.$root.toastError(valid.msg);
+ }
+ },
+
+ /**
+ * Ensure settings are valid
+ * @returns {Object} Contains success state and error msg
+ */
+ validateSettings() {
+ if (this.settings.keepDataPeriodDays < 0) {
+ return {
+ success: false,
+ msg: this.$t("dataRetentionTimeError"),
+ };
+ }
+ return {
+ success: true,
+ msg: "",
+ };
},
}
};
diff --git a/src/router.js b/src/router.js
index 38048826..b5b46c30 100644
--- a/src/router.js
+++ b/src/router.js
@@ -24,6 +24,7 @@ import Appearance from "./components/settings/Appearance.vue";
import General from "./components/settings/General.vue";
const Notifications = () => import("./components/settings/Notifications.vue");
import ReverseProxy from "./components/settings/ReverseProxy.vue";
+import Tags from "./components/settings/Tags.vue";
import MonitorHistory from "./components/settings/MonitorHistory.vue";
const Security = () => import("./components/settings/Security.vue");
import Proxies from "./components/settings/Proxies.vue";
@@ -95,6 +96,10 @@ const routes = [
path: "reverse-proxy",
component: ReverseProxy,
},
+ {
+ path: "tags",
+ component: Tags,
+ },
{
path: "monitor-history",
component: MonitorHistory,
diff --git a/src/util-frontend.js b/src/util-frontend.js
index 3323f327..55d0f634 100644
--- a/src/util-frontend.js
+++ b/src/util-frontend.js
@@ -78,3 +78,45 @@ export function getResBaseURL() {
return "";
}
}
+
+/**
+ *
+ * @param {} mqtt wheather or not the regex should take into account the fact that it is an mqtt uri
+ * @returns RegExp The requested regex
+ */
+export function hostNameRegexPattern(mqtt = false) {
+ // mqtt, mqtts, ws and wss schemes accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect)
+ const mqttSchemeRegexPattern = "((mqtt|ws)s?:\\/\\/)?";
+ // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/
+ const ipRegexPattern = `((^\\s*${mqtt ? mqttSchemeRegexPattern : ""}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`;
+ // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address
+ const hostNameRegexPattern = `^${mqtt ? mqttSchemeRegexPattern : ""}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`;
+
+ return `${ipRegexPattern}|${hostNameRegexPattern}`;
+}
+
+/**
+ * Get the tag color options
+ * Shared between components
+ * @returns {Object[]}
+ */
+export function colorOptions(self) {
+ return [
+ { name: self.$t("Gray"),
+ color: "#4B5563" },
+ { name: self.$t("Red"),
+ color: "#DC2626" },
+ { name: self.$t("Orange"),
+ color: "#D97706" },
+ { name: self.$t("Green"),
+ color: "#059669" },
+ { name: self.$t("Blue"),
+ color: "#2563EB" },
+ { name: self.$t("Indigo"),
+ color: "#4F46E5" },
+ { name: self.$t("Purple"),
+ color: "#7C3AED" },
+ { name: self.$t("Pink"),
+ color: "#DB2777" },
+ ];
+}
diff --git a/src/util.js b/src/util.js
index 09e6d0ee..6b8f8f37 100644
--- a/src/util.js
+++ b/src/util.js
@@ -315,6 +315,11 @@ function getMonitorRelativeURL(id) {
return "/dashboard/" + id;
}
exports.getMonitorRelativeURL = getMonitorRelativeURL;
+/**
+ * Get relative path for maintenance
+ * @param id ID of maintenance
+ * @returns Formatted relative path
+ */
function getMaintenanceRelativeURL(id) {
return "/maintenance/" + id;
}
@@ -361,6 +366,11 @@ function parseTimeFromTimeObject(obj) {
return result;
}
exports.parseTimeFromTimeObject = parseTimeFromTimeObject;
+/**
+ * Convert ISO date to UTC
+ * @param input Date
+ * @returns ISO Date time
+ */
function isoToUTCDateTime(input) {
return dayjs(input).utc().format(exports.SQL_DATETIME_FORMAT);
}
@@ -379,6 +389,12 @@ function utcToLocal(input, format = exports.SQL_DATETIME_FORMAT) {
return dayjs.utc(input).local().format(format);
}
exports.utcToLocal = utcToLocal;
+/**
+ * Convert local datetime to UTC
+ * @param input Local date
+ * @param format Format to return
+ * @returns Date in requested format
+ */
function localToUTC(input, format = exports.SQL_DATETIME_FORMAT) {
return dayjs(input).utc().format(format);
}
diff --git a/src/util.ts b/src/util.ts
index 99038c8d..e8a2706e 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -352,6 +352,11 @@ export function getMonitorRelativeURL(id: string) {
return "/dashboard/" + id;
}
+/**
+ * Get relative path for maintenance
+ * @param id ID of maintenance
+ * @returns Formatted relative path
+ */
export function getMaintenanceRelativeURL(id: string) {
return "/maintenance/" + id;
}
@@ -405,7 +410,11 @@ export function parseTimeFromTimeObject(obj : any) {
return result;
}
-
+/**
+ * Convert ISO date to UTC
+ * @param input Date
+ * @returns ISO Date time
+ */
export function isoToUTCDateTime(input : string) {
return dayjs(input).utc().format(SQL_DATETIME_FORMAT);
}
@@ -424,6 +433,12 @@ export function utcToLocal(input : string, format = SQL_DATETIME_FORMAT) {
return dayjs.utc(input).local().format(format);
}
+/**
+ * Convert local datetime to UTC
+ * @param input Local date
+ * @param format Format to return
+ * @returns Date in requested format
+ */
export function localToUTC(input : string, format = SQL_DATETIME_FORMAT) {
return dayjs(input).utc().format(format);
}
diff --git a/test/cypress/unit/i18n.spec.js b/test/cypress/unit/i18n.spec.js
new file mode 100644
index 00000000..da63d95a
--- /dev/null
+++ b/test/cypress/unit/i18n.spec.js
@@ -0,0 +1,44 @@
+import { currentLocale } from "../../../src/i18n";
+
+describe("Test i18n.js", () => {
+
+ it("currentLocale()", () => {
+ const setLanguage = (language) => {
+ Object.defineProperty(window.navigator, 'language', {
+ value: language,
+ writable: true
+ });
+ }
+ setLanguage('en-EN');
+
+ expect(currentLocale()).equal("en");
+
+ setLanguage('zh-HK');
+ expect(currentLocale()).equal("zh-HK");
+
+ // Note that in Safari on iOS prior to 10.2, the country code returned is lowercase: "en-us", "fr-fr" etc.
+ // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language
+ setLanguage('zh-hk');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('en-US');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('ja-ZZ');
+ expect(currentLocale()).equal("ja");
+
+ setLanguage('zz-ZZ');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('zz-ZZ');
+ expect(currentLocale()).equal("en");
+
+ setLanguage('en');
+ localStorage.locale = "en";
+ expect(currentLocale()).equal("en");
+
+ localStorage.locale = "zh-HK";
+ expect(currentLocale()).equal("zh-HK");
+ });
+
+});
\ No newline at end of file
diff --git a/test/cypress/unit/util-frontend.spec.js b/test/cypress/unit/util-frontend.spec.js
new file mode 100644
index 00000000..6abedf82
--- /dev/null
+++ b/test/cypress/unit/util-frontend.spec.js
@@ -0,0 +1,33 @@
+import { hostNameRegexPattern } from "../../../src/util-frontend";
+
+describe("Test util-frontend.js", () => {
+
+ describe("hostNameRegexPattern()", () => {
+ it('should return a valid regex for non mqtt hostnames', () => {
+ const regex = new RegExp(hostNameRegexPattern(false));
+
+ expect(regex.test("www.test.com")).to.be.true;
+ expect(regex.test("127.0.0.1")).to.be.true;
+ expect(regex.test("192.168.1.156")).to.be.true;
+
+ ["mqtt", "mqtts", "ws", "wss"].forEach(schema => {
+ expect(regex.test(`${schema}://www.test.com`)).to.be.false;
+ expect(regex.test(`${schema}://127.0.0.1`)).to.be.false;
+ });
+ });
+ it('should return a valid regex for mqtt hostnames', () => {
+ const hostnameString = hostNameRegexPattern(false);
+ console.log('*********', hostnameString, '***********');
+ const regex = new RegExp(hostNameRegexPattern(true));
+
+ expect(regex.test("www.test.com")).to.be.true;
+ expect(regex.test("127.0.0.1")).to.be.true;
+ expect(regex.test("192.168.1.156")).to.be.true;
+
+ ["mqtt", "mqtts", "ws", "wss"].forEach(schema => {
+ expect(regex.test(`${schema}://www.test.com`)).to.be.true;
+ expect(regex.test(`${schema}://127.0.0.1`)).to.be.true;
+ });
+ });
+ });
+});
\ No newline at end of file