From e95d25c3e705c13330e7434d0458b7c679443958 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 13 Jun 2024 00:42:27 +0200 Subject: [PATCH 001/152] chore: extend ProcessEnv of node with BOT_TOKEN --- package-lock.json | 16 ++++++++++++++++ package.json | 1 + tsconfig.json | 14 +++++++++++++- types/env.d.ts | 5 +++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 types/env.d.ts diff --git a/package-lock.json b/package-lock.json index 8dfde93..81c6995 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", "ramda": "^0.30.1", "telegraf": "^4.16.3", @@ -21,6 +22,15 @@ "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==", "license": "MIT" }, + "node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/ramda": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", @@ -218,6 +228,12 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index 9f0445a..37cbc8a 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "author": "Mateo Sheshi", "license": "ISC", "dependencies": { + "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", "ramda": "^0.30.1", "telegraf": "^4.16.3", diff --git a/tsconfig.json b/tsconfig.json index 764cfb1..424a6d3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,15 @@ { - "exclude": ["node_modules/**"] + "compilerOptions": { + "module": "ESNext", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "outDir": "dist", + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "paths": { + "@/*": ["./*"] + } + }, + "include": ["**/*.ts"], + "exclude": ["node_modules"] } diff --git a/types/env.d.ts b/types/env.d.ts new file mode 100644 index 0000000..ddfa2ac --- /dev/null +++ b/types/env.d.ts @@ -0,0 +1,5 @@ +declare namespace NodeJS { + interface ProcessEnv { + BOT_TOKEN: string + } +} From 43c4fa68b511e96643c5b2db06fa706a284f154a Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 13 Jun 2024 00:49:44 +0200 Subject: [PATCH 002/152] chore: add build script for npm to run tsc --- package.json | 1 + tsconfig.json | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 37cbc8a..502a5a3 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "HackerNews Telegram Bot", "main": "index.js", "scripts": { + "build": "npx tsc", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Mateo Sheshi", diff --git a/tsconfig.json b/tsconfig.json index 424a6d3..dd8dbe7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,10 +5,12 @@ "outDir": "dist", "strict": true, "noEmit": true, + "moduleResolution": "Node", "esModuleInterop": true, "paths": { "@/*": ["./*"] - } + }, + "typeRoots": ["./node_modules/@types", "./types"] }, "include": ["**/*.ts"], "exclude": ["node_modules"] From 82340924555e1c5482c4737b553192c7cdb3b3f5 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 13 Jun 2024 22:50:46 +0200 Subject: [PATCH 003/152] chore: add support of dotenvx --- package-lock.json | 2477 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 4 + 2 files changed, 2384 insertions(+), 97 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81c6995..b659f9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,167 +9,2170 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@dotenvx/dotenvx": "^0.44.1", "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", + "nodemon": "^3.1.3", "ramda": "^0.30.1", "telegraf": "^4.16.3", + "ts-node": "^10.9.2", "typescript": "^5.4.5" } }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "license": "MIT", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@dotenvx/dotenvx": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-0.44.1.tgz", + "integrity": "sha512-OmOU7CRwhXydZUHeTP46GNZsGpwQ3mwrr3cUAWod+FmrKW3ib4GYe1jU++ZFyEEUNvg532QvvM7hQ44YyJrgfw==", + "license": "MIT", + "dependencies": { + "@inquirer/confirm": "^2.0.17", + "arch": "^2.1.1", + "chalk": "^4.1.2", + "commander": "^11.1.0", + "conf": "^10.2.0", + "diff": "^5.2.0", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", + "eciesjs": "^0.4.6", + "execa": "^5.1.1", + "glob": "^10.3.10", + "ignore": "^5.3.0", + "is-wsl": "^2.1.1", + "object-treeify": "1.1.33", + "open": "^8.4.2", + "ora": "^5.4.1", + "semver": "^7.3.4", + "undici": "^5.28.3", + "which": "^4.0.0", + "winston": "^3.11.0", + "xxhashjs": "^0.2.2" + }, + "bin": { + "dotenvx": "src/cli/dotenvx.js", + "git-dotenvx": "src/cli/dotenvx.js" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@inquirer/confirm": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.17.tgz", + "integrity": "sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/@inquirer/core": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-6.0.0.tgz", + "integrity": "sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==", + "license": "MIT", + "dependencies": { + "@inquirer/type": "^1.1.6", + "@types/mute-stream": "^0.0.4", + "@types/node": "^20.10.7", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "cli-spinners": "^2.9.2", + "cli-width": "^4.1.0", + "figures": "^3.2.0", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/@inquirer/type": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.3.3.tgz", + "integrity": "sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@noble/ciphers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", + "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@telegraf/types": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz", "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==", "license": "MIT" }, - "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/ramda": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", + "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", + "license": "MIT", + "dependencies": { + "types-ramda": "^0.30.0" + } + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT" + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "license": "MIT" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "license": "MIT" + }, + "node_modules/atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "license": "MIT", + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "license": "MIT", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", + "license": "MIT", + "dependencies": { + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "license": "MIT" + }, + "node_modules/debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/eciesjs": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.7.tgz", + "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", + "license": "MIT", + "dependencies": { + "@noble/ciphers": "^0.5.3", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "license": "MIT" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "license": "MIT" + }, + "node_modules/foreground-child": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", + "integrity": "sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "license": "ISC" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", + "license": "BSD-2-Clause" + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logform": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nodemon": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.3.tgz", + "integrity": "sha512-m4Vqs+APdKzDFpuaL9F9EVOF85+h070FnkHVEoU4+rmT6Vw0bmNl7s61VEkY/cJkL7RCv1p4urnUDUMrS5rk2w==", + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-timeout": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", + "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ramda": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", + "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-compare": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-compare/-/safe-compare-1.1.4.tgz", + "integrity": "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==", + "license": "MIT", + "dependencies": { + "buffer-alloc": "^1.2.0" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/sandwich-stream": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-2.0.2.tgz", + "integrity": "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/ramda": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", - "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "license": "MIT", "dependencies": { - "types-ramda": "^0.30.0" + "is-arrayish": "^0.3.1" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=6.5" + "node": ">=10" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "license": "MIT", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "engines": { + "node": "*" } }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "license": "MIT" - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "license": "MIT" + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "license": "MIT", "dependencies": { - "ms": "2.1.2" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=6.0" + "node": ">=12" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "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==", - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=12" }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/p-timeout": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", - "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/safe-compare": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/safe-compare/-/safe-compare-1.1.4.tgz", - "integrity": "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "license": "MIT", - "dependencies": { - "buffer-alloc": "^1.2.0" + "engines": { + "node": ">=6" } }, - "node_modules/sandwich-stream": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-2.0.2.tgz", - "integrity": "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==", - "license": "Apache-2.0", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, "node_modules/telegraf": { @@ -194,18 +2197,109 @@ "node": "^12.20.0 || >=14.13.1" } }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "node_modules/ts-toolbelt": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", "license": "Apache-2.0" }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/types-ramda": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.0.tgz", @@ -228,12 +2322,60 @@ "node": ">=14.17" } }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -249,6 +2391,147 @@ "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/winston": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz", + "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.7.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", + "license": "MIT", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "license": "MIT", + "dependencies": { + "cuint": "^0.2.2" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } } } } diff --git a/package.json b/package.json index 502a5a3..e608960 100644 --- a/package.json +++ b/package.json @@ -5,15 +5,19 @@ "main": "index.js", "scripts": { "build": "npx tsc", + "watch": "npx dotenvx run -- npx nodemon index.ts", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Mateo Sheshi", "license": "ISC", "dependencies": { + "@dotenvx/dotenvx": "^0.44.1", "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", + "nodemon": "^3.1.3", "ramda": "^0.30.1", "telegraf": "^4.16.3", + "ts-node": "^10.9.2", "typescript": "^5.4.5" } } From 038ba5c4c15a7ff5450615e4cd30ee22d61d99f5 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 13 Jun 2024 22:54:01 +0200 Subject: [PATCH 004/152] docs: add usage instructions --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index dd12dd4..3957890 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,12 @@ # hn-telegram-bot HackerNews Telegram Bot + +## Usage + +### Development + +To develop in local just run `npm run watch` that will start nodemon to achieve hot-reloading, and also `dotenvx` under the hood. + +### Build +```npm build``` + From 46e38805676d68a70b840c10cc745e8504c96d3a Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 15 Jun 2024 02:49:47 +0200 Subject: [PATCH 005/152] chore: move env declaration at root --- env.d.ts | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 env.d.ts diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..ddfa2ac --- /dev/null +++ b/env.d.ts @@ -0,0 +1,5 @@ +declare namespace NodeJS { + interface ProcessEnv { + BOT_TOKEN: string + } +} From 5eb5b3cec0eb773bdab8fcfd8ebe9626c4539756 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 15 Jun 2024 03:08:38 +0200 Subject: [PATCH 006/152] fix: remove ts-node and use tsx with watch mode --- package-lock.json | 1020 +++++++++++++++++++++++++-------------------- package.json | 9 +- 2 files changed, 576 insertions(+), 453 deletions(-) diff --git a/package-lock.json b/package-lock.json index b659f9a..774eb8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,11 +12,13 @@ "@dotenvx/dotenvx": "^0.44.1", "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", - "nodemon": "^3.1.3", + "axios": "^1.7.2", "ramda": "^0.30.1", "telegraf": "^4.16.3", - "ts-node": "^10.9.2", "typescript": "^5.4.5" + }, + "devDependencies": { + "tsx": "^4.15.5" } }, "node_modules/@colors/colors": { @@ -28,18 +30,6 @@ "node": ">=0.1.90" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@dabh/diagnostics": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", @@ -96,6 +86,397 @@ "node": ">=0.3.1" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -226,31 +607,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@noble/ciphers": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", @@ -300,30 +656,6 @@ "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==", "license": "MIT" }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "license": "MIT" - }, "node_modules/@types/mute-stream": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", @@ -375,27 +707,6 @@ "node": ">=6.5" } }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ajv": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", @@ -468,19 +779,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -501,18 +799,18 @@ ], "license": "MIT" }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "license": "MIT" - }, "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/atomically": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", @@ -522,6 +820,17 @@ "node": ">=10.12.0" } }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -548,18 +857,6 @@ ], "license": "MIT" }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -571,28 +868,6 @@ "readable-stream": "^3.4.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -676,30 +951,6 @@ "node": ">=8" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -805,6 +1056,18 @@ "text-hex": "1.0.x" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", @@ -814,12 +1077,6 @@ "node": ">=16" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, "node_modules/conf": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", @@ -844,12 +1101,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "license": "MIT" - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -944,13 +1195,13 @@ "node": ">=8" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "license": "BSD-3-Clause", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">=0.4.0" } }, "node_modules/dot-prop": { @@ -1036,6 +1287,45 @@ "node": ">=6" } }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1110,18 +1400,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -1140,6 +1418,26 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "license": "MIT" }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", @@ -1156,10 +1454,25 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -1182,6 +1495,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", @@ -1204,18 +1530,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1240,15 +1554,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -1287,12 +1592,6 @@ "node": ">= 4" } }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "license": "ISC" - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1305,18 +1604,6 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -1332,15 +1619,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -1350,18 +1628,6 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -1371,15 +1637,6 @@ "node": ">=8" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -1525,37 +1782,40 @@ "node": "14 || >=16.14" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "license": "ISC" - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, - "node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "mime-db": "1.52.0" }, "engines": { - "node": "*" + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/minipass": { @@ -1611,43 +1871,6 @@ } } }, - "node_modules/nodemon": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.3.tgz", - "integrity": "sha512-m4Vqs+APdKzDFpuaL9F9EVOF85+h070FnkHVEoU4+rmT6Vw0bmNl7s61VEkY/cJkL7RCv1p4urnUDUMrS5rk2w==", - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -1821,18 +2044,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -1845,10 +2056,10 @@ "node": ">=8" } }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, "node_modules/punycode": { @@ -1884,18 +2095,6 @@ "node": ">= 6" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -1905,6 +2104,16 @@ "node": ">=0.10.0" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -2034,18 +2243,6 @@ "is-arrayish": "^0.3.1" } }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -2163,18 +2360,6 @@ "node": ">=6" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/telegraf": { "version": "4.16.3", "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.16.3.tgz", @@ -2203,27 +2388,6 @@ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "license": "MIT" }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -2239,55 +2403,32 @@ "node": ">= 14.0.0" } }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "license": "Apache-2.0" + }, + "node_modules/tsx": { + "version": "4.15.5", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.15.5.tgz", + "integrity": "sha512-iKi8jQ2VBmZ2kU/FkGkL2OSHBHsazsUzsdC/W/RwhKIEsIoZ1alCclZHP5jGfNHEaEWUJFM1GquzCf+4db3b0w==", + "dev": true, "license": "MIT", "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" + "esbuild": "~0.21.4", + "get-tsconfig": "^4.7.5" }, "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "tsx": "dist/cli.mjs" }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "engines": { + "node": ">=18.0.0" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "optionalDependencies": { + "fsevents": "~2.3.3" } }, - "node_modules/ts-toolbelt": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", - "license": "Apache-2.0" - }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -2322,12 +2463,6 @@ "node": ">=14.17" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "license": "MIT" - }, "node_modules/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", @@ -2361,12 +2496,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "license": "MIT" - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -2523,15 +2652,6 @@ "dependencies": { "cuint": "^0.2.2" } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } } } } diff --git a/package.json b/package.json index e608960..c5fa9ab 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,10 @@ "version": "1.0.0", "description": "HackerNews Telegram Bot", "main": "index.js", + "type": "module", "scripts": { "build": "npx tsc", - "watch": "npx dotenvx run -- npx nodemon index.ts", + "dev": "npx dotenvx run -- npx tsx watch index.ts --env-file=.env", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Mateo Sheshi", @@ -14,10 +15,12 @@ "@dotenvx/dotenvx": "^0.44.1", "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", - "nodemon": "^3.1.3", + "axios": "^1.7.2", "ramda": "^0.30.1", "telegraf": "^4.16.3", - "ts-node": "^10.9.2", "typescript": "^5.4.5" + }, + "devDependencies": { + "tsx": "^4.15.5" } } From c79e07dc32da8014b1f9c535d649787c25928e32 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 15 Jun 2024 03:28:03 +0200 Subject: [PATCH 007/152] feat: get 500 top stories --- README.md | 4 ++-- api.ts | 10 ++++++++++ config.ts | 1 + index.ts | 9 +++++++++ package-lock.json | 1 - package.json | 3 +-- tsconfig.json | 3 ++- types/env.d.ts | 5 ----- types/item.ts | 17 +++++++++++++++++ 9 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 api.ts create mode 100644 config.ts create mode 100644 index.ts delete mode 100644 types/env.d.ts create mode 100644 types/item.ts diff --git a/README.md b/README.md index 3957890..ef10dee 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ HackerNews Telegram Bot ### Development -To develop in local just run `npm run watch` that will start nodemon to achieve hot-reloading, and also `dotenvx` under the hood. +To develop in local just run `npm run dev` that will start tsx with watch mode, and also `dotenvx` under the hood. ### Build -```npm build``` +```npm run build``` diff --git a/api.ts b/api.ts new file mode 100644 index 0000000..b3bb7d0 --- /dev/null +++ b/api.ts @@ -0,0 +1,10 @@ +import axios from 'axios' +import { HN_API } from './config' + +export const getTopStories = async (): Promise => { + const { data } = await axios({ + url: `${HN_API}/topstories.json`, + }) + + return data +} diff --git a/config.ts b/config.ts new file mode 100644 index 0000000..5df4c34 --- /dev/null +++ b/config.ts @@ -0,0 +1 @@ +export const HN_API = 'https://hacker-news.firebaseio.com/v0/' diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..f445c6b --- /dev/null +++ b/index.ts @@ -0,0 +1,9 @@ +import { getTopStories } from './api' +import * as R from 'ramda' + +const main = async () => { + const topStoriesIds = await getTopStories() + console.log('topStoriesIds', topStoriesIds) +} + +main() diff --git a/package-lock.json b/package-lock.json index 774eb8a..4e9cdd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", - "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", "axios": "^1.7.2", "ramda": "^0.30.1", diff --git a/package.json b/package.json index c5fa9ab..80f625b 100644 --- a/package.json +++ b/package.json @@ -6,14 +6,13 @@ "type": "module", "scripts": { "build": "npx tsc", - "dev": "npx dotenvx run -- npx tsx watch index.ts --env-file=.env", + "dev": "npx dotenvx run -- npx tsx watch index.ts", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Mateo Sheshi", "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", - "@types/node": "^20.14.2", "@types/ramda": "^0.30.0", "axios": "^1.7.2", "ramda": "^0.30.1", diff --git a/tsconfig.json b/tsconfig.json index dd8dbe7..267379f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,8 @@ "moduleResolution": "Node", "esModuleInterop": true, "paths": { - "@/*": ["./*"] + "@/*": ["./*"], + "@api/*": ["./api/*"] }, "typeRoots": ["./node_modules/@types", "./types"] }, diff --git a/types/env.d.ts b/types/env.d.ts deleted file mode 100644 index ddfa2ac..0000000 --- a/types/env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare namespace NodeJS { - interface ProcessEnv { - BOT_TOKEN: string - } -} diff --git a/types/item.ts b/types/item.ts new file mode 100644 index 0000000..04eb63e --- /dev/null +++ b/types/item.ts @@ -0,0 +1,17 @@ +export type Item = { + id: number + deleted: boolean + type: string + by: string + time: number + text: string + dead: boolean + parent: number + poll + kids + url: string + score: number + title: string + parts + descendants: number +} From d8861a41fb5c0e0e47adb74a0ac10437c71dab07 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 15 Jun 2024 16:09:03 +0200 Subject: [PATCH 008/152] chore: config jest for ts and move to src folder --- index.ts | 9 - jest.config.ts | 11 + package-lock.json | 6047 +++++++++++++++++++++----- package.json | 12 +- src/__tests__/getTopStoriest.test.ts | 14 + api.ts => src/api.ts | 9 + config.ts => src/config.ts | 0 src/index.ts | 11 + {types => src/types}/item.ts | 0 tsconfig.json | 9 +- 10 files changed, 4936 insertions(+), 1186 deletions(-) delete mode 100644 index.ts create mode 100644 jest.config.ts create mode 100644 src/__tests__/getTopStoriest.test.ts rename api.ts => src/api.ts (52%) rename config.ts => src/config.ts (100%) create mode 100644 src/index.ts rename {types => src/types}/item.ts (100%) diff --git a/index.ts b/index.ts deleted file mode 100644 index f445c6b..0000000 --- a/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { getTopStories } from './api' -import * as R from 'ramda' - -const main = async () => { - const topStoriesIds = await getTopStories() - console.log('topStoriesIds', topStoriesIds) -} - -main() diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..151945d --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,11 @@ +import { compilerOptions } from './tsconfig.json' +import { pathsToModuleNameMapper, type JestConfigWithTsJest } from 'ts-jest' + +const jestConfig: JestConfigWithTsJest = { + preset: 'ts-jest', + testEnvironment: 'node', + modulePaths: [compilerOptions.baseUrl], + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {}), +} + +export default jestConfig diff --git a/package-lock.json b/package-lock.json index 4e9cdd6..da603fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,863 +14,3524 @@ "axios": "^1.7.2", "ramda": "^0.30.1", "telegraf": "^4.16.3", - "typescript": "^5.4.5" + "ts-node": "^10.9.2" }, "devDependencies": { - "tsx": "^4.15.5" + "@types/jest": "^29.5.12", + "jest": "^29.7.0", + "ts-jest": "^29.1.4", + "tsx": "^4.15.5", + "typescript": "^5.4.5" } }, - "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "license": "MIT", + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, "engines": { - "node": ">=0.1.90" + "node": ">=6.0.0" } }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, "license": "MIT", "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@dotenvx/dotenvx": { - "version": "0.44.1", - "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-0.44.1.tgz", - "integrity": "sha512-OmOU7CRwhXydZUHeTP46GNZsGpwQ3mwrr3cUAWod+FmrKW3ib4GYe1jU++ZFyEEUNvg532QvvM7hQ44YyJrgfw==", + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/confirm": "^2.0.17", - "arch": "^2.1.1", - "chalk": "^4.1.2", - "commander": "^11.1.0", - "conf": "^10.2.0", - "diff": "^5.2.0", - "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", - "eciesjs": "^0.4.6", - "execa": "^5.1.1", - "glob": "^10.3.10", - "ignore": "^5.3.0", - "is-wsl": "^2.1.1", - "object-treeify": "1.1.33", - "open": "^8.4.2", - "ora": "^5.4.1", - "semver": "^7.3.4", - "undici": "^5.28.3", - "which": "^4.0.0", - "winston": "^3.11.0", - "xxhashjs": "^0.2.2" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, - "bin": { - "dotenvx": "src/cli/dotenvx.js", - "git-dotenvx": "src/cli/dotenvx.js" + "engines": { + "node": ">=6.9.0" }, "funding": { - "url": "https://dotenvx.com" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@dotenvx/dotenvx/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } + "license": "MIT" }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "bin": { + "parser": "bin/babel-parser.js" + }, "engines": { - "node": ">=12" + "node": ">=6.0.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=14" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@inquirer/confirm": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.17.tgz", - "integrity": "sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^6.0.0", - "@inquirer/type": "^1.1.6", - "chalk": "^4.1.2" + "@babel/helper-plugin-utils": "^7.12.13" }, - "engines": { - "node": ">=14.18.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@inquirer/core": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-6.0.0.tgz", - "integrity": "sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", "dependencies": { - "@inquirer/type": "^1.1.6", - "@types/mute-stream": "^0.0.4", - "@types/node": "^20.10.7", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "cli-spinners": "^2.9.2", - "cli-width": "^4.1.0", - "figures": "^3.2.0", - "mute-stream": "^1.0.0", - "run-async": "^3.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=14.18.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@inquirer/type": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.3.3.tgz", - "integrity": "sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@noble/ciphers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", - "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@noble/curves": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", - "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "license": "MIT", "dependencies": { - "@noble/hashes": "1.4.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">= 16" + "node": ">=6.9.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@telegraf/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz", - "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==", - "license": "MIT" - }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@types/ramda": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", - "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, "license": "MIT", "dependencies": { - "types-ramda": "^0.30.0" + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, "license": "MIT" }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "license": "MIT" + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=6.5" + "node": ">=12" } }, - "node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", "license": "MIT", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@dotenvx/dotenvx": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-0.44.1.tgz", + "integrity": "sha512-OmOU7CRwhXydZUHeTP46GNZsGpwQ3mwrr3cUAWod+FmrKW3ib4GYe1jU++ZFyEEUNvg532QvvM7hQ44YyJrgfw==", "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "@inquirer/confirm": "^2.0.17", + "arch": "^2.1.1", + "chalk": "^4.1.2", + "commander": "^11.1.0", + "conf": "^10.2.0", + "diff": "^5.2.0", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", + "eciesjs": "^0.4.6", + "execa": "^5.1.1", + "glob": "^10.3.10", + "ignore": "^5.3.0", + "is-wsl": "^2.1.1", + "object-treeify": "1.1.33", + "open": "^8.4.2", + "ora": "^5.4.1", + "semver": "^7.3.4", + "undici": "^5.28.3", + "which": "^4.0.0", + "winston": "^3.11.0", + "xxhashjs": "^0.2.2" }, - "engines": { - "node": ">=8" + "bin": { + "dotenvx": "src/cli/dotenvx.js", + "git-dotenvx": "src/cli/dotenvx.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://dotenvx.com" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", + "node_modules/@dotenvx/dotenvx/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.3.1" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" ], - "license": "MIT" + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@inquirer/confirm": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.17.tgz", + "integrity": "sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^6.0.0", + "@inquirer/type": "^1.1.6", + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/@inquirer/core": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-6.0.0.tgz", + "integrity": "sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==", + "license": "MIT", + "dependencies": { + "@inquirer/type": "^1.1.6", + "@types/mute-stream": "^0.0.4", + "@types/node": "^20.10.7", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "cli-spinners": "^2.9.2", + "cli-width": "^4.1.0", + "figures": "^3.2.0", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/@inquirer/type": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.3.3.tgz", + "integrity": "sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@noble/ciphers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", + "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@telegraf/types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz", + "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/ramda": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", + "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", + "license": "MIT", + "dependencies": { + "types-ramda": "^0.30.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT" + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "license": "MIT" }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "license": "MIT", + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "license": "MIT" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "license": "MIT" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001634", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", + "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "license": "MIT", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", + "license": "MIT", + "dependencies": { + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "license": "MIT" + }, + "node_modules/debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/eciesjs": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.7.tgz", + "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", + "license": "MIT", + "dependencies": { + "@noble/ciphers": "^0.5.3", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.803", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.803.tgz", + "integrity": "sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "license": "MIT" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", + "integrity": "sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" }, - "node_modules/atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10.12.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" + "node_modules/glob": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -885,331 +3546,378 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } + "license": "BSD-3-Clause" }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "license": "MIT", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "engines": { + "node": ">= 4" } }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "license": "MIT" - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "license": "MIT" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" } }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, "engines": { "node": ">=8" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "license": "ISC", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", "engines": { - "node": ">= 12" + "node": ">=8" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=0.12.0" } }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "engines": { + "node": ">=8" } }, - "node_modules/color-convert": { + "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" + "node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "license": "MIT", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, "engines": { - "node": ">=16" + "node": ">=10" } }, - "node_modules/conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "license": "MIT", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/cross-spawn/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", - "license": "MIT" - }, - "node_modules/debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "license": "MIT", + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "license": "BlueOak-1.0.0", "dependencies": { - "mimic-fn": "^3.0.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=6.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "supports-color": { + "node-notifier": { "optional": true } } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, "license": "MIT", "dependencies": { - "clone": "^1.0.2" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">=0.4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" @@ -1218,275 +3926,379 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://dotenvx.com" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/dotenv-expand": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", - "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", - "license": "BSD-2-Clause", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", "dependencies": { - "dotenv": "^16.4.4" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://dotenvx.com" + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/eciesjs": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.7.tgz", - "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, "license": "MIT", "dependencies": { - "@noble/ciphers": "^0.5.3", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "license": "MIT" - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=0.8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "license": "MIT" - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "license": "MIT" + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" }, "peerDependenciesMeta": { - "debug": { + "jest-resolve": { "optional": true } } }, - "node_modules/foreground-child": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", - "integrity": "sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==", - "license": "ISC", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { "node": ">=10" }, @@ -1494,220 +4306,236 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-tsconfig": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", - "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "resolve-pkg-maps": "^1.0.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, "engines": { - "node": ">=10.17.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">= 4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", - "engines": { - "node": ">=16" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=4" } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -1720,12 +4548,52 @@ "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", "license": "BSD-2-Clause" }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "license": "MIT" }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -1739,6 +4607,13 @@ "node": ">=6" } }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -1781,12 +4656,58 @@ "node": "14 || >=16.14" } }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1817,6 +4738,19 @@ "node": ">=8" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -1850,6 +4784,13 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -1870,6 +4811,30 @@ } } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -1891,6 +4856,16 @@ "node": ">= 10" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", @@ -2009,6 +4984,25 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -2018,6 +5012,16 @@ "node": ">=4" } }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -2027,6 +5031,13 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -2043,6 +5054,99 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -2055,6 +5159,48 @@ "node": ">=8" } }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -2070,6 +5216,23 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, "node_modules/ramda": { "version": "0.30.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", @@ -2080,6 +5243,13 @@ "url": "https://opencollective.com/ramda" } }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -2094,6 +5264,16 @@ "node": ">= 6" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -2103,6 +5283,47 @@ "node": ">=0.10.0" } }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -2113,6 +5334,16 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -2242,6 +5473,51 @@ "is-arrayish": "^0.3.1" } }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -2251,6 +5527,29 @@ "node": "*" } }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2260,6 +5559,20 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -2350,6 +5663,16 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -2359,6 +5682,44 @@ "node": ">=6" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/telegraf": { "version": "4.16.3", "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.16.3.tgz", @@ -2381,12 +5742,79 @@ "node": "^12.20.0 || >=14.13.1" } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "license": "MIT" }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -2402,6 +5830,97 @@ "node": ">= 14.0.0" } }, + "node_modules/ts-jest": { + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "node_modules/ts-toolbelt": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", @@ -2428,6 +5947,16 @@ "fsevents": "~2.3.3" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -2480,6 +6009,37 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2495,6 +6055,37 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -2643,6 +6234,34 @@ "node": ">=8" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/xxhashjs": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", @@ -2651,6 +6270,96 @@ "dependencies": { "cuint": "^0.2.2" } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 80f625b..94fcd1d 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "type": "module", "scripts": { "build": "npx tsc", - "dev": "npx dotenvx run -- npx tsx watch index.ts", - "test": "echo \"Error: no test specified\" && exit 1" + "dev": "npx dotenvx run -- npx tsx watch src/index.ts", + "test": "jest" }, "author": "Mateo Sheshi", "license": "ISC", @@ -17,9 +17,13 @@ "axios": "^1.7.2", "ramda": "^0.30.1", "telegraf": "^4.16.3", - "typescript": "^5.4.5" + "ts-node": "^10.9.2" }, "devDependencies": { - "tsx": "^4.15.5" + "@types/jest": "^29.5.12", + "jest": "^29.7.0", + "ts-jest": "^29.1.4", + "tsx": "^4.15.5", + "typescript": "^5.4.5" } } diff --git a/src/__tests__/getTopStoriest.test.ts b/src/__tests__/getTopStoriest.test.ts new file mode 100644 index 0000000..0c383c3 --- /dev/null +++ b/src/__tests__/getTopStoriest.test.ts @@ -0,0 +1,14 @@ +import { getTopStories } from '@/api' + +describe('getTopStories', () => { + it('should return an array of top stories', async () => { + // Test implementation goes here + const topStories = await getTopStories() + expect(topStories).toBeInstanceOf(Array) + expect(topStories).toHaveLength(500) + }) + + it('should handle errors gracefully', () => { + // Test implementation goes here + }) +}) diff --git a/api.ts b/src/api.ts similarity index 52% rename from api.ts rename to src/api.ts index b3bb7d0..3dc9164 100644 --- a/api.ts +++ b/src/api.ts @@ -1,5 +1,6 @@ import axios from 'axios' import { HN_API } from './config' +import { Item } from './types/item' export const getTopStories = async (): Promise => { const { data } = await axios({ @@ -8,3 +9,11 @@ export const getTopStories = async (): Promise => { return data } + +export const getItem = async (id: number): Promise => { + const { data } = await axios({ + url: `${HN_API}/item/${id}.json`, + }) + + return data +} diff --git a/config.ts b/src/config.ts similarity index 100% rename from config.ts rename to src/config.ts diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..288a991 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,11 @@ +import * as R from 'ramda' +import { getItem, getTopStories } from '@/api' + +const main = async () => { + const topStoriesIds = await getTopStories() + + const topItem = await getItem(R.head(topStoriesIds)) + console.log(topItem) +} + +main() diff --git a/types/item.ts b/src/types/item.ts similarity index 100% rename from types/item.ts rename to src/types/item.ts diff --git a/tsconfig.json b/tsconfig.json index 267379f..b3ca1da 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,19 @@ { "compilerOptions": { + "baseUrl": ".", "module": "ESNext", "lib": ["DOM", "DOM.Iterable", "ESNext"], "outDir": "dist", "strict": true, "noEmit": true, "moduleResolution": "Node", + "resolveJsonModule": true, "esModuleInterop": true, "paths": { - "@/*": ["./*"], - "@api/*": ["./api/*"] + "@/*": ["src/*"] }, - "typeRoots": ["./node_modules/@types", "./types"] + "typeRoots": ["./node_modules/@types", "src/types"] }, - "include": ["**/*.ts"], + "include": ["src/**/*.ts"], "exclude": ["node_modules"] } From fd44bc9f6a36950d808dcad20aea58c865fe2eff Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 15 Jun 2024 16:10:13 +0200 Subject: [PATCH 009/152] chore: config jest to match only __tests__ folder --- jest.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/jest.config.ts b/jest.config.ts index 151945d..a541b6b 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -5,6 +5,7 @@ const jestConfig: JestConfigWithTsJest = { preset: 'ts-jest', testEnvironment: 'node', modulePaths: [compilerOptions.baseUrl], + testMatch: ['**/__tests__/**/*.test.ts'], moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {}), } From f4b64cf415f85903aae76e39b61d62775193a177 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 15 Jun 2024 19:03:46 +0200 Subject: [PATCH 010/152] test: add watch flag --- jest.config.ts | 1 - package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/jest.config.ts b/jest.config.ts index a541b6b..151945d 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -5,7 +5,6 @@ const jestConfig: JestConfigWithTsJest = { preset: 'ts-jest', testEnvironment: 'node', modulePaths: [compilerOptions.baseUrl], - testMatch: ['**/__tests__/**/*.test.ts'], moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {}), } diff --git a/package.json b/package.json index 94fcd1d..041a61a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "npx tsc", "dev": "npx dotenvx run -- npx tsx watch src/index.ts", - "test": "jest" + "test": "jest --watch" }, "author": "Mateo Sheshi", "license": "ISC", From 280726a346c0cbc4f23d3bfaef206e5e376ce72d Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 15 Jun 2024 19:04:01 +0200 Subject: [PATCH 011/152] test: mock getItem api --- src/__tests__/getItem.spec.ts | 37 ++++++++++++++++++++++++++++ src/__tests__/getTopStories.spec.ts | 7 ++++++ src/__tests__/getTopStoriest.test.ts | 14 ----------- 3 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 src/__tests__/getItem.spec.ts create mode 100644 src/__tests__/getTopStories.spec.ts delete mode 100644 src/__tests__/getTopStoriest.test.ts diff --git a/src/__tests__/getItem.spec.ts b/src/__tests__/getItem.spec.ts new file mode 100644 index 0000000..c4888ec --- /dev/null +++ b/src/__tests__/getItem.spec.ts @@ -0,0 +1,37 @@ +import { getItem } from '@/api' +import axios from 'axios' + +jest.mock('axios') + +const mockedAxios = axios as jest.MockedFunction + +describe('getItem', () => { + it('should return an item', async () => { + mockedAxios.mockResolvedValue({ + data: { + by: 'dhouston', + descendants: 71, + id: 8863, + score: 104, + time: 1175714200, + title: 'My YC app: Dropbox - Throw away your USB drive', + type: 'story', + url: 'http://www.getdropbox.com/u/2/screencast.html', + }, + }) + + const item = await getItem(8863) + + expect(item).toHaveProperty('by') + expect(item).toHaveProperty('descendants') + expect(item).toHaveProperty('id') + expect(item).toHaveProperty('score') + expect(item).toHaveProperty('time') + expect(item).toHaveProperty('title') + + expect(item).toHaveProperty('type') + expect(item).toHaveProperty('url') + }) + + it('should handle errors gracefully', async () => {}) +}) diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts new file mode 100644 index 0000000..7942e86 --- /dev/null +++ b/src/__tests__/getTopStories.spec.ts @@ -0,0 +1,7 @@ +import { getTopStories } from '@/api' + +describe('getTopStories', () => { + it('should return an array of top stories', async () => {}) + + it('should handle errors gracefully', () => {}) +}) diff --git a/src/__tests__/getTopStoriest.test.ts b/src/__tests__/getTopStoriest.test.ts deleted file mode 100644 index 0c383c3..0000000 --- a/src/__tests__/getTopStoriest.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { getTopStories } from '@/api' - -describe('getTopStories', () => { - it('should return an array of top stories', async () => { - // Test implementation goes here - const topStories = await getTopStories() - expect(topStories).toBeInstanceOf(Array) - expect(topStories).toHaveLength(500) - }) - - it('should handle errors gracefully', () => { - // Test implementation goes here - }) -}) From d82f3ca0ae1b09ac98bc0c5ee23289d8a80a365c Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 16 Jun 2024 02:06:58 +0200 Subject: [PATCH 012/152] test: should return null for not found item --- src/__tests__/getItem.spec.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/__tests__/getItem.spec.ts b/src/__tests__/getItem.spec.ts index c4888ec..8c85659 100644 --- a/src/__tests__/getItem.spec.ts +++ b/src/__tests__/getItem.spec.ts @@ -33,5 +33,11 @@ describe('getItem', () => { expect(item).toHaveProperty('url') }) - it('should handle errors gracefully', async () => {}) + it('should handle not found item', async () => { + mockedAxios.mockResolvedValueOnce({ + data: null, + }) + const item = await getItem(-1) + expect(item).toBeNull() + }) }) From 961c71a108cae571a638d9d5e4fe8fce81825fb8 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 16 Jun 2024 02:26:37 +0200 Subject: [PATCH 013/152] chore: improve item typing for req --- src/api.ts | 4 ++-- src/config.ts | 2 ++ src/types/item.ts | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/api.ts b/src/api.ts index 3dc9164..f2ae211 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,6 +1,6 @@ import axios from 'axios' import { HN_API } from './config' -import { Item } from './types/item' +import { Item, ItemResponse, ItemsResponse } from './types/item' export const getTopStories = async (): Promise => { const { data } = await axios({ @@ -11,7 +11,7 @@ export const getTopStories = async (): Promise => { } export const getItem = async (id: number): Promise => { - const { data } = await axios({ + const { data } = await axios({ url: `${HN_API}/item/${id}.json`, }) diff --git a/src/config.ts b/src/config.ts index 5df4c34..95db274 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1 +1,3 @@ export const HN_API = 'https://hacker-news.firebaseio.com/v0/' + +export const TOPIC_FILTER = {} diff --git a/src/types/item.ts b/src/types/item.ts index 04eb63e..91f8d6c 100644 --- a/src/types/item.ts +++ b/src/types/item.ts @@ -15,3 +15,6 @@ export type Item = { parts descendants: number } + +export type ItemsResponse = Item[] +export type ItemResponse = Item From 89a0179c9d0857db4877081ef50878c5df41d4fa Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 16 Jun 2024 02:37:00 +0200 Subject: [PATCH 014/152] docs: update README with test instructions --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index ef10dee..83226da 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,7 @@ To develop in local just run `npm run dev` that will start tsx with watch mode, ### Build ```npm run build``` +### Testing + +Put all tests under this [folder](src/__tests__) and run `npm test`, which will run test environment with Jest in watch mode + From be4de8c57046d587430dbeb983be68cdb2234733 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 16 Jun 2024 21:01:57 +0200 Subject: [PATCH 015/152] test: add faker and mock array of top stories --- package-lock.json | 18 ++++++++++++++++++ package.json | 1 + src/__tests__/getTopStories.spec.ts | 15 ++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index da603fa..dc1fd6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "ts-node": "^10.9.2" }, "devDependencies": { + "@faker-js/faker": "^8.4.1", "@types/jest": "^29.5.12", "jest": "^29.7.0", "ts-jest": "^29.1.4", @@ -1136,6 +1137,23 @@ "node": ">=12" } }, + "node_modules/@faker-js/faker": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz", + "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0", + "npm": ">=6.14.13" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", diff --git a/package.json b/package.json index 041a61a..571ec9c 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "ts-node": "^10.9.2" }, "devDependencies": { + "@faker-js/faker": "^8.4.1", "@types/jest": "^29.5.12", "jest": "^29.7.0", "ts-jest": "^29.1.4", diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts index 7942e86..95b3f21 100644 --- a/src/__tests__/getTopStories.spec.ts +++ b/src/__tests__/getTopStories.spec.ts @@ -1,7 +1,20 @@ import { getTopStories } from '@/api' +import axios from 'axios' +import { faker } from '@faker-js/faker' + +jest.mock('axios') + +const mockedAxios = axios as jest.MockedFunction describe('getTopStories', () => { - it('should return an array of top stories', async () => {}) + it('should return an array of top stories', async () => { + mockedAxios.mockResolvedValueOnce({ + data: faker.helpers.multiple(faker.number.int, { count: 500 }), + }) + const result = await getTopStories() + expect(result).toBeInstanceOf(Array) + expect(result).toHaveLength(500) + }) it('should handle errors gracefully', () => {}) }) From 162481ebb0819e4b94300015bc81953685361669 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 16 Jun 2024 21:57:38 +0200 Subject: [PATCH 016/152] chore: remove error test should not be possible --- src/__tests__/getTopStories.spec.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts index 95b3f21..e4e3acb 100644 --- a/src/__tests__/getTopStories.spec.ts +++ b/src/__tests__/getTopStories.spec.ts @@ -15,6 +15,4 @@ describe('getTopStories', () => { expect(result).toBeInstanceOf(Array) expect(result).toHaveLength(500) }) - - it('should handle errors gracefully', () => {}) }) From 71729751ee72be3ef00518623c9ad5299ec92ed3 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 18 Jun 2024 00:40:35 +0200 Subject: [PATCH 017/152] chore: add tsconfig.build for excluding specs on compilation --- package.json | 2 +- tsconfig.build.json | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 tsconfig.build.json diff --git a/package.json b/package.json index 571ec9c..ba4fa2a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "type": "module", "scripts": { - "build": "npx tsc", + "build": "npx tsc --project tsconfig.build.json", "dev": "npx dotenvx run -- npx tsx watch src/index.ts", "test": "jest --watch" }, diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..abe767f --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "exclude": [ + "node_modules", + "dist", + "src/**/*.spec.ts"] +} \ No newline at end of file From 8dd91f6f274319ccac7d03188c74bfb49862d5b6 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 18 Jun 2024 01:08:02 +0200 Subject: [PATCH 018/152] feat: remove axios to use builtin fetch API --- package-lock.json | 100 ---------------------------- package.json | 1 - src/__tests__/getItem.spec.ts | 36 +++++----- src/__tests__/getTopStories.spec.ts | 15 ++--- src/api.ts | 15 ++--- 5 files changed, 30 insertions(+), 137 deletions(-) diff --git a/package-lock.json b/package-lock.json index dc1fd6b..97e8cf8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "dependencies": { "@dotenvx/dotenvx": "^0.44.1", "@types/ramda": "^0.30.0", - "axios": "^1.7.2", "ramda": "^0.30.1", "telegraf": "^4.16.3", "ts-node": "^10.9.2" @@ -2146,12 +2145,6 @@ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "license": "MIT" }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, "node_modules/atomically": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", @@ -2161,17 +2154,6 @@ "node": ">=10.12.0" } }, - "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -2733,18 +2715,6 @@ "text-hex": "1.0.x" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", @@ -2939,15 +2909,6 @@ "node": ">=8" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -3308,26 +3269,6 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "license": "MIT" }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/foreground-child": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", @@ -3344,20 +3285,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4726,27 +4653,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", @@ -5219,12 +5125,6 @@ "node": ">= 6" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", diff --git a/package.json b/package.json index 571ec9c..9c845b4 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ "dependencies": { "@dotenvx/dotenvx": "^0.44.1", "@types/ramda": "^0.30.0", - "axios": "^1.7.2", "ramda": "^0.30.1", "telegraf": "^4.16.3", "ts-node": "^10.9.2" diff --git a/src/__tests__/getItem.spec.ts b/src/__tests__/getItem.spec.ts index 8c85659..be9e65f 100644 --- a/src/__tests__/getItem.spec.ts +++ b/src/__tests__/getItem.spec.ts @@ -1,24 +1,20 @@ import { getItem } from '@/api' -import axios from 'axios' - -jest.mock('axios') - -const mockedAxios = axios as jest.MockedFunction describe('getItem', () => { it('should return an item', async () => { - mockedAxios.mockResolvedValue({ - data: { - by: 'dhouston', - descendants: 71, - id: 8863, - score: 104, - time: 1175714200, - title: 'My YC app: Dropbox - Throw away your USB drive', - type: 'story', - url: 'http://www.getdropbox.com/u/2/screencast.html', - }, - }) + jest.spyOn(global, 'fetch').mockResolvedValue({ + json: () => + Promise.resolve({ + by: 'dhouston', + descendants: 71, + id: 8863, + score: 104, + time: 1175714200, + title: 'My YC app: Dropbox - Throw away your USB drive', + type: 'story', + url: 'http://www.getdropbox.com/u/2/screencast.html', + }), + } as any) const item = await getItem(8863) @@ -34,9 +30,9 @@ describe('getItem', () => { }) it('should handle not found item', async () => { - mockedAxios.mockResolvedValueOnce({ - data: null, - }) + jest.spyOn(global, 'fetch').mockResolvedValue({ + json: () => Promise.resolve(null), + } as any) const item = await getItem(-1) expect(item).toBeNull() }) diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts index e4e3acb..88675dc 100644 --- a/src/__tests__/getTopStories.spec.ts +++ b/src/__tests__/getTopStories.spec.ts @@ -1,16 +1,15 @@ import { getTopStories } from '@/api' -import axios from 'axios' import { faker } from '@faker-js/faker' -jest.mock('axios') - -const mockedAxios = axios as jest.MockedFunction - describe('getTopStories', () => { it('should return an array of top stories', async () => { - mockedAxios.mockResolvedValueOnce({ - data: faker.helpers.multiple(faker.number.int, { count: 500 }), - }) + jest.spyOn(global, 'fetch').mockResolvedValueOnce({ + json: () => + Promise.resolve( + faker.helpers.multiple(faker.number.int, { count: 500 }) + ), + } as any) + const result = await getTopStories() expect(result).toBeInstanceOf(Array) expect(result).toHaveLength(500) diff --git a/src/api.ts b/src/api.ts index f2ae211..f22f064 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,19 +1,18 @@ -import axios from 'axios' import { HN_API } from './config' import { Item, ItemResponse, ItemsResponse } from './types/item' export const getTopStories = async (): Promise => { - const { data } = await axios({ - url: `${HN_API}/topstories.json`, - }) + const data = await fetch(`${HN_API}/topstories.json`).then((res) => + res.json() + ) return data } -export const getItem = async (id: number): Promise => { - const { data } = await axios({ - url: `${HN_API}/item/${id}.json`, - }) +export const getItem = async (id: number): Promise => { + const data = await fetch(`${HN_API}/item/${id}.json`).then((res) => + res.json() + ) return data } From f22fa978455faa21b016de52a8105eee0db815f4 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 19 Jun 2024 23:22:36 +0200 Subject: [PATCH 019/152] chore: replace telegraf with grammY --- package-lock.json | 109 +++++++++----------------------------------- package.json | 2 +- src/api.ts | 2 +- src/bot.ts | 10 ++++ src/index.ts | 2 + tsconfig.build.json | 9 ++-- 6 files changed, 39 insertions(+), 95 deletions(-) create mode 100644 src/bot.ts diff --git a/package-lock.json b/package-lock.json index 97e8cf8..30927cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@dotenvx/dotenvx": "^0.44.1", "@types/ramda": "^0.30.0", + "grammy": "^1.25.0", "ramda": "^0.30.1", - "telegraf": "^4.16.3", "ts-node": "^10.9.2" }, "devDependencies": { @@ -1162,6 +1162,12 @@ "node": ">=14" } }, + "node_modules/@grammyjs/types": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.9.0.tgz", + "integrity": "sha512-QzZAbz5COBZnDlDs6x94TIIIH5Pi7AMk0rJPM2O5JAz5Q+s7Xxp3lGg/pWyiVR9Q8euRDYCJmDtcRjwwFD6a3g==", + "license": "MIT" + }, "node_modules/@inquirer/confirm": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.17.tgz", @@ -1795,12 +1801,6 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@telegraf/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@telegraf/types/-/types-7.1.0.tgz", - "integrity": "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==", - "license": "MIT" - }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -2418,28 +2418,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "license": "MIT", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "license": "MIT" - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "license": "MIT" - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -3435,6 +3413,21 @@ "dev": true, "license": "ISC" }, + "node_modules/grammy": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.25.0.tgz", + "integrity": "sha512-aAPfv/uCAf2pxFJQMhI7242G8dvwFBSYbWiuyu5qfWczj9Xn25/FeyC/7KlyXRMTHDYcHI4lRwpe5z/+nsDrXg==", + "license": "MIT", + "dependencies": { + "@grammyjs/types": "3.9.0", + "abort-controller": "^3.0.0", + "debug": "^4.3.4", + "node-fetch": "^2.7.0" + }, + "engines": { + "node": "^12.20.0 || >=14.13.1" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4684,15 +4677,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4890,15 +4874,6 @@ "node": ">=6" } }, - "node_modules/p-timeout": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", - "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5310,15 +5285,6 @@ ], "license": "MIT" }, - "node_modules/safe-compare": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/safe-compare/-/safe-compare-1.1.4.tgz", - "integrity": "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==", - "license": "MIT", - "dependencies": { - "buffer-alloc": "^1.2.0" - } - }, "node_modules/safe-stable-stringify": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", @@ -5328,15 +5294,6 @@ "node": ">=10" } }, - "node_modules/sandwich-stream": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-2.0.2.tgz", - "integrity": "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", @@ -5638,28 +5595,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/telegraf": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/telegraf/-/telegraf-4.16.3.tgz", - "integrity": "sha512-yjEu2NwkHlXu0OARWoNhJlIjX09dRktiMQFsM678BAH/PEPVwctzL67+tvXqLCRQQvm3SDtki2saGO9hLlz68w==", - "license": "MIT", - "dependencies": { - "@telegraf/types": "^7.1.0", - "abort-controller": "^3.0.0", - "debug": "^4.3.4", - "mri": "^1.2.0", - "node-fetch": "^2.7.0", - "p-timeout": "^4.1.0", - "safe-compare": "^1.1.4", - "sandwich-stream": "^2.0.2" - }, - "bin": { - "telegraf": "lib/cli.mjs" - }, - "engines": { - "node": "^12.20.0 || >=14.13.1" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", diff --git a/package.json b/package.json index a0aab1c..c71da59 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "dependencies": { "@dotenvx/dotenvx": "^0.44.1", "@types/ramda": "^0.30.0", + "grammy": "^1.25.0", "ramda": "^0.30.1", - "telegraf": "^4.16.3", "ts-node": "^10.9.2" }, "devDependencies": { diff --git a/src/api.ts b/src/api.ts index f22f064..1d0aced 100644 --- a/src/api.ts +++ b/src/api.ts @@ -9,7 +9,7 @@ export const getTopStories = async (): Promise => { return data } -export const getItem = async (id: number): Promise => { +export const getItem = async (id: number): Promise => { const data = await fetch(`${HN_API}/item/${id}.json`).then((res) => res.json() ) diff --git a/src/bot.ts b/src/bot.ts new file mode 100644 index 0000000..f60ca41 --- /dev/null +++ b/src/bot.ts @@ -0,0 +1,10 @@ +import { Bot } from 'grammy' + +const bot = new Bot(process.env.BOT_TOKEN) + +// Reply to any message with "Hi there!". +bot.on('message', (ctx) => ctx.reply('Hi there!')) + +bot.start() + +export default bot diff --git a/src/index.ts b/src/index.ts index 288a991..f353c48 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,10 +1,12 @@ import * as R from 'ramda' import { getItem, getTopStories } from '@/api' +import bot from './bot' const main = async () => { const topStoriesIds = await getTopStories() const topItem = await getItem(R.head(topStoriesIds)) + console.log(bot) console.log(topItem) } diff --git a/tsconfig.build.json b/tsconfig.build.json index abe767f..e401417 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -1,7 +1,4 @@ { - "extends": "./tsconfig.json", - "exclude": [ - "node_modules", - "dist", - "src/**/*.spec.ts"] -} \ No newline at end of file + "extends": "./tsconfig.json", + "exclude": ["node_modules", "dist", "src/**/*.spec.ts"] +} From 2c725e82f2e7d9b8011ac903d5e3fb73d84bd169 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 20 Jun 2024 00:29:51 +0200 Subject: [PATCH 020/152] chore: init grammy bot --- src/bot.ts | 11 ++++++++--- src/index.ts | 2 -- tsconfig.json | 1 + 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index f60ca41..9365e10 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,9 +1,14 @@ import { Bot } from 'grammy' -const bot = new Bot(process.env.BOT_TOKEN) +const bot = new Bot(process.env.BOT_TOKEN!) -// Reply to any message with "Hi there!". -bot.on('message', (ctx) => ctx.reply('Hi there!')) +bot.command('help', (ctx) => ctx.reply('This is a help text')) + +await bot.api.setMyCommands([ + { command: 'start', description: 'Start the bot' }, + { command: 'setup', description: 'Setup your preferences' }, + { command: 'help', description: 'Display help text' }, +]) bot.start() diff --git a/src/index.ts b/src/index.ts index f353c48..288a991 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,12 +1,10 @@ import * as R from 'ramda' import { getItem, getTopStories } from '@/api' -import bot from './bot' const main = async () => { const topStoriesIds = await getTopStories() const topItem = await getItem(R.head(topStoriesIds)) - console.log(bot) console.log(topItem) } diff --git a/tsconfig.json b/tsconfig.json index b3ca1da..d1ce066 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "target": "ESNext", "baseUrl": ".", "module": "ESNext", "lib": ["DOM", "DOM.Iterable", "ESNext"], From f66d654152e3daada14f92eb11565a784b58f3d7 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 22 Jun 2024 01:05:23 +0200 Subject: [PATCH 021/152] chore!: use bot.ts as entrypoint --- package.json | 4 ++-- src/bot.ts | 6 +++++- src/index.ts | 11 ----------- tsconfig.json | 3 ++- 4 files changed, 9 insertions(+), 15 deletions(-) delete mode 100644 src/index.ts diff --git a/package.json b/package.json index c71da59..a3d16a2 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,11 @@ "name": "hn-telegram-bot", "version": "1.0.0", "description": "HackerNews Telegram Bot", - "main": "index.js", + "main": "bot.js", "type": "module", "scripts": { "build": "npx tsc --project tsconfig.build.json", - "dev": "npx dotenvx run -- npx tsx watch src/index.ts", + "dev": "npx dotenvx run -- npx tsx watch src/bot.ts", "test": "jest --watch" }, "author": "Mateo Sheshi", diff --git a/src/bot.ts b/src/bot.ts index 9365e10..c9babd9 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,8 +1,11 @@ import { Bot } from 'grammy' +import setupComposer from './preference/setup' const bot = new Bot(process.env.BOT_TOKEN!) -bot.command('help', (ctx) => ctx.reply('This is a help text')) +bot.command('help', (ctx) => + ctx.reply('Bot is under construction. Please wait for the next update.') +) await bot.api.setMyCommands([ { command: 'start', description: 'Start the bot' }, @@ -10,6 +13,7 @@ await bot.api.setMyCommands([ { command: 'help', description: 'Display help text' }, ]) +bot.use(setupComposer) bot.start() export default bot diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 288a991..0000000 --- a/src/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as R from 'ramda' -import { getItem, getTopStories } from '@/api' - -const main = async () => { - const topStoriesIds = await getTopStories() - - const topItem = await getItem(R.head(topStoriesIds)) - console.log(topItem) -} - -main() diff --git a/tsconfig.json b/tsconfig.json index d1ce066..17b3ec5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,8 @@ "resolveJsonModule": true, "esModuleInterop": true, "paths": { - "@/*": ["src/*"] + "@/*": ["src/*"], + "@bot/*": ["src/bot/*"] }, "typeRoots": ["./node_modules/@types", "src/types"] }, From 85a11c2ebc37d97f47dbd65812abd4a564b1b777 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 22 Jun 2024 01:17:27 +0200 Subject: [PATCH 022/152] chore: init setup composer --- src/preference/setup.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/preference/setup.ts diff --git a/src/preference/setup.ts b/src/preference/setup.ts new file mode 100644 index 0000000..b22ee89 --- /dev/null +++ b/src/preference/setup.ts @@ -0,0 +1,11 @@ +import { Composer } from 'grammy' +import { MessageAutoDeleteTimerChanged } from 'grammy/types' +const composer = new Composer() + +composer.command('setup', (ctx) => ctx.reply('Setting up your preferences...')) + +composer.on('message', (ctx) => + ctx.reply('Please use the /setup command to setup your preferences.') +) + +export default composer From bfc92d49783b10c906802d1ae2cac21702604c8f Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 22 Jun 2024 11:28:22 +0200 Subject: [PATCH 023/152] chore: remove some types and cleanup config --- src/api.ts | 2 +- src/config.ts | 2 -- src/types/item.ts | 3 --- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/api.ts b/src/api.ts index 1d0aced..53cb89e 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,5 +1,5 @@ import { HN_API } from './config' -import { Item, ItemResponse, ItemsResponse } from './types/item' +import { Item } from './types/item' export const getTopStories = async (): Promise => { const data = await fetch(`${HN_API}/topstories.json`).then((res) => diff --git a/src/config.ts b/src/config.ts index 95db274..5df4c34 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,3 +1 @@ export const HN_API = 'https://hacker-news.firebaseio.com/v0/' - -export const TOPIC_FILTER = {} diff --git a/src/types/item.ts b/src/types/item.ts index 91f8d6c..04eb63e 100644 --- a/src/types/item.ts +++ b/src/types/item.ts @@ -15,6 +15,3 @@ export type Item = { parts descendants: number } - -export type ItemsResponse = Item[] -export type ItemResponse = Item From 6c650679b0214b108b14da23e2c4383a5c5fab21 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 22 Jun 2024 11:34:14 +0200 Subject: [PATCH 024/152] test: add type checkers --- src/__tests__/getItem.spec.ts | 1 + src/__tests__/getTopStories.spec.ts | 2 +- src/api.ts | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/__tests__/getItem.spec.ts b/src/__tests__/getItem.spec.ts index be9e65f..39a0823 100644 --- a/src/__tests__/getItem.spec.ts +++ b/src/__tests__/getItem.spec.ts @@ -18,6 +18,7 @@ describe('getItem', () => { const item = await getItem(8863) + expect(item).toBeInstanceOf(Object) expect(item).toHaveProperty('by') expect(item).toHaveProperty('descendants') expect(item).toHaveProperty('id') diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts index 88675dc..b9abf8b 100644 --- a/src/__tests__/getTopStories.spec.ts +++ b/src/__tests__/getTopStories.spec.ts @@ -11,7 +11,7 @@ describe('getTopStories', () => { } as any) const result = await getTopStories() - expect(result).toBeInstanceOf(Array) + expect(result).toBeInstanceOf(Array) expect(result).toHaveLength(500) }) }) diff --git a/src/api.ts b/src/api.ts index 53cb89e..8e3d654 100644 --- a/src/api.ts +++ b/src/api.ts @@ -2,7 +2,7 @@ import { HN_API } from './config' import { Item } from './types/item' export const getTopStories = async (): Promise => { - const data = await fetch(`${HN_API}/topstories.json`).then((res) => + const data: number[] = await fetch(`${HN_API}/topstories.json`).then((res) => res.json() ) @@ -10,8 +10,8 @@ export const getTopStories = async (): Promise => { } export const getItem = async (id: number): Promise => { - const data = await fetch(`${HN_API}/item/${id}.json`).then((res) => - res.json() + const data: Item | null = await fetch(`${HN_API}/item/${id}.json`).then( + (res) => res.json() ) return data From 12d09e6d13b8a5ffd62fbea61f94dcc79498dbee Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 23 Jun 2024 22:45:15 +0200 Subject: [PATCH 025/152] fix: add ESM support for jest --- .gitignore | 1 + jest.config.ts | 14 +- package-lock.json | 437 +++++++++++++++++----------- package.json | 14 +- src/__tests__/bot/setup.spec.ts | 19 ++ src/__tests__/getItem.spec.ts | 1 + src/__tests__/getTopStories.spec.ts | 1 + src/bot.ts | 8 +- src/config.ts | 1 + src/preference/setup.ts | 2 +- tsconfig.json | 1 + 11 files changed, 304 insertions(+), 195 deletions(-) create mode 100644 src/__tests__/bot/setup.spec.ts diff --git a/.gitignore b/.gitignore index b6778d7..6fba622 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,7 @@ web_modules/ # dotenv environment variable files .env +.env.test .env.development.local .env.test.local .env.production.local diff --git a/jest.config.ts b/jest.config.ts index 151945d..96eb878 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,11 +1,11 @@ -import { compilerOptions } from './tsconfig.json' -import { pathsToModuleNameMapper, type JestConfigWithTsJest } from 'ts-jest' +import { pathsToModuleNameMapper } from 'ts-jest' -const jestConfig: JestConfigWithTsJest = { - preset: 'ts-jest', - testEnvironment: 'node', +import { compilerOptions } from './tsconfig.json' +import type { JestConfigWithTsJest } from 'ts-jest' +const jest: JestConfigWithTsJest = { + preset: 'ts-jest/presets/js-with-ts-esm', modulePaths: [compilerOptions.baseUrl], - moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, {}), + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths), } -export default jestConfig +export default jest diff --git a/package-lock.json b/package-lock.json index 30927cf..399654c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,16 +12,16 @@ "@dotenvx/dotenvx": "^0.44.1", "@types/ramda": "^0.30.0", "grammy": "^1.25.0", - "ramda": "^0.30.1", - "ts-node": "^10.9.2" + "ramda": "^0.30.1" }, "devDependencies": { "@faker-js/faker": "^8.4.1", "@types/jest": "^29.5.12", + "esrun": "^3.2.26", "jest": "^29.7.0", - "ts-jest": "^29.1.4", - "tsx": "^4.15.5", - "typescript": "^5.4.5" + "ts-jest": "^29.1.5", + "ts-node": "^10.9.2", + "typescript": "^5.5.2" } }, "node_modules/@ampproject/remapping": { @@ -671,6 +671,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -683,6 +684,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -700,6 +702,13 @@ "kuler": "^2.0.0" } }, + "node_modules/@digitak/grubber": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", + "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==", + "dev": true, + "license": "MIT" + }, "node_modules/@dotenvx/dotenvx": { "version": "0.44.1", "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-0.44.1.tgz", @@ -745,27 +754,10 @@ "node": ">=0.3.1" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", "cpu": [ "arm" ], @@ -780,9 +772,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", "cpu": [ "arm64" ], @@ -797,9 +789,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", "cpu": [ "x64" ], @@ -814,9 +806,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", "cpu": [ "arm64" ], @@ -831,9 +823,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", "cpu": [ "x64" ], @@ -848,9 +840,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", "cpu": [ "arm64" ], @@ -865,9 +857,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", "cpu": [ "x64" ], @@ -882,9 +874,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", "cpu": [ "arm" ], @@ -899,9 +891,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", "cpu": [ "arm64" ], @@ -916,9 +908,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", "cpu": [ "ia32" ], @@ -933,9 +925,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", "cpu": [ "loong64" ], @@ -950,9 +942,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", "cpu": [ "mips64el" ], @@ -967,9 +959,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", "cpu": [ "ppc64" ], @@ -984,9 +976,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", "cpu": [ "riscv64" ], @@ -1001,9 +993,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", "cpu": [ "s390x" ], @@ -1018,9 +1010,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", "cpu": [ "x64" ], @@ -1035,9 +1027,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", "cpu": [ "x64" ], @@ -1052,9 +1044,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", "cpu": [ "x64" ], @@ -1069,9 +1061,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", "cpu": [ "x64" ], @@ -1086,9 +1078,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", "cpu": [ "arm64" ], @@ -1103,9 +1095,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", "cpu": [ "ia32" ], @@ -1120,9 +1112,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", "cpu": [ "x64" ], @@ -1699,6 +1691,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1718,6 +1711,7 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -1805,24 +1799,28 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, "license": "MIT" }, "node_modules/@types/babel__core": { @@ -1997,6 +1995,7 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -2009,6 +2008,7 @@ "version": "8.3.3", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.11.0" @@ -2127,6 +2127,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, "license": "MIT" }, "node_modules/argparse": { @@ -2303,6 +2304,19 @@ ], "license": "MIT" }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -2446,9 +2460,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001634", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", - "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==", + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", "dev": true, "funding": [ { @@ -2492,6 +2506,31 @@ "node": ">=10" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -2766,6 +2805,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, "license": "MIT" }, "node_modules/cross-spawn": { @@ -2901,6 +2941,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -2979,9 +3020,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.803", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.803.tgz", - "integrity": "sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==", + "version": "1.4.810", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==", "dev": true, "license": "ISC" }, @@ -3037,9 +3078,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3050,29 +3091,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" } }, "node_modules/escalade": { @@ -3108,6 +3148,24 @@ "node": ">=4" } }, + "node_modules/esrun": { + "version": "3.2.26", + "resolved": "https://registry.npmjs.org/esrun/-/esrun-3.2.26.tgz", + "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "@digitak/grubber": "^3.1.4", + "chokidar": "^3.5.1", + "esbuild": "^0.17.4" + }, + "bin": { + "esrun": "bin.js" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", @@ -3337,19 +3395,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-tsconfig": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", - "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/glob": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", @@ -3372,6 +3417,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -3549,14 +3607,30 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "license": "MIT" }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3577,6 +3651,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -3596,6 +3680,19 @@ "node": ">=6" } }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -4614,6 +4711,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, "license": "ISC" }, "node_modules/makeerror": { @@ -5157,6 +5255,19 @@ "node": ">= 6" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5217,16 +5328,6 @@ "node": ">=8" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -5684,9 +5785,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", - "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", + "version": "29.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", + "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", "dev": true, "license": "MIT", "dependencies": { @@ -5735,6 +5836,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -5780,26 +5882,6 @@ "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", "license": "Apache-2.0" }, - "node_modules/tsx": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.15.5.tgz", - "integrity": "sha512-iKi8jQ2VBmZ2kU/FkGkL2OSHBHsazsUzsdC/W/RwhKIEsIoZ1alCclZHP5jGfNHEaEWUJFM1GquzCf+4db3b0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.21.4", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -5832,9 +5914,10 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -5912,12 +5995,13 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { @@ -6196,6 +6280,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" diff --git a/package.json b/package.json index a3d16a2..82907e3 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "type": "module", "scripts": { "build": "npx tsc --project tsconfig.build.json", - "dev": "npx dotenvx run -- npx tsx watch src/bot.ts", - "test": "jest --watch" + "dev": "npx dotenvx run -- npx esrun --watch=src/*.ts src/bot.ts", + "test": "dotenvx run -f .env.test -- node --experimental-vm-modules node_modules/.bin/jest --watch" }, "author": "Mateo Sheshi", "license": "ISC", @@ -15,15 +15,15 @@ "@dotenvx/dotenvx": "^0.44.1", "@types/ramda": "^0.30.0", "grammy": "^1.25.0", - "ramda": "^0.30.1", - "ts-node": "^10.9.2" + "ramda": "^0.30.1" }, "devDependencies": { "@faker-js/faker": "^8.4.1", "@types/jest": "^29.5.12", + "esrun": "^3.2.26", "jest": "^29.7.0", - "ts-jest": "^29.1.4", - "tsx": "^4.15.5", - "typescript": "^5.4.5" + "ts-jest": "^29.1.5", + "ts-node": "^10.9.2", + "typescript": "^5.5.2" } } diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts new file mode 100644 index 0000000..5f52000 --- /dev/null +++ b/src/__tests__/bot/setup.spec.ts @@ -0,0 +1,19 @@ +import { jest } from '@jest/globals' +import bot from '@/bot' + +const TIMEOUT = 5000 +let outgoingRequest = [] + +beforeAll(async () => { + // Incorrectly return undefined instead of the respective object types. + bot.api.config.use((prev, method, payload) => { + outgoingRequest.push({ method, payload }) + return { ok: true, result: {} } as any + }) + + await bot.init() +}, TIMEOUT) + +beforeEach(() => { + outgoingRequest = [] +}) diff --git a/src/__tests__/getItem.spec.ts b/src/__tests__/getItem.spec.ts index 39a0823..3dfe99a 100644 --- a/src/__tests__/getItem.spec.ts +++ b/src/__tests__/getItem.spec.ts @@ -1,4 +1,5 @@ import { getItem } from '@/api' +import { jest } from '@jest/globals' describe('getItem', () => { it('should return an item', async () => { diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts index b9abf8b..f6a0105 100644 --- a/src/__tests__/getTopStories.spec.ts +++ b/src/__tests__/getTopStories.spec.ts @@ -1,5 +1,6 @@ import { getTopStories } from '@/api' import { faker } from '@faker-js/faker' +import { jest } from '@jest/globals' describe('getTopStories', () => { it('should return an array of top stories', async () => { diff --git a/src/bot.ts b/src/bot.ts index c9babd9..67d1b15 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,7 +1,8 @@ import { Bot } from 'grammy' -import setupComposer from './preference/setup' +import setup from './preference/setup' +import { BOT_TOKEN } from './config' -const bot = new Bot(process.env.BOT_TOKEN!) +const bot = new Bot(BOT_TOKEN!) bot.command('help', (ctx) => ctx.reply('Bot is under construction. Please wait for the next update.') @@ -13,7 +14,6 @@ await bot.api.setMyCommands([ { command: 'help', description: 'Display help text' }, ]) -bot.use(setupComposer) -bot.start() +bot.use(setup) export default bot diff --git a/src/config.ts b/src/config.ts index 5df4c34..ccb9433 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1 +1,2 @@ export const HN_API = 'https://hacker-news.firebaseio.com/v0/' +export const BOT_TOKEN = process.env.BOT_TOKEN diff --git a/src/preference/setup.ts b/src/preference/setup.ts index b22ee89..cf1e26f 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,5 +1,5 @@ import { Composer } from 'grammy' -import { MessageAutoDeleteTimerChanged } from 'grammy/types' + const composer = new Composer() composer.command('setup', (ctx) => ctx.reply('Setting up your preferences...')) diff --git a/tsconfig.json b/tsconfig.json index 17b3ec5..77d0b1d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,6 +7,7 @@ "outDir": "dist", "strict": true, "noEmit": true, + "allowJs": true, "moduleResolution": "Node", "resolveJsonModule": true, "esModuleInterop": true, From 007798c719eb8b97af8bd6a426882660f7d5d30c Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 23 Jun 2024 22:48:57 +0200 Subject: [PATCH 026/152] docs: add testing guideline --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 83226da..68fdf32 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,11 @@ To develop in local just run `npm run dev` that will start tsx with watch mode, Put all tests under this [folder](src/__tests__) and run `npm test`, which will run test environment with Jest in watch mode +**Important!** +You should always import jest or it will raise `ReferenceError: jest is not defined. +Do it like this way +```js +// src/__tests__/yourtest.spec.ts +import {jest} from '@jest/globals' +``` + From 4d0d6912e35d526c1c9301fbba9cb49663b73064 Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 24 Jun 2024 00:19:54 +0200 Subject: [PATCH 027/152] docs: add setMyCommands usage tip --- README.md | 3 +++ src/bot.ts | 6 ------ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 68fdf32..f3b764b 100644 --- a/README.md +++ b/README.md @@ -22,3 +22,6 @@ Do it like this way import {jest} from '@jest/globals' ``` +### Tips + +Use `setMyCommands` on deployment, or configure it directly with @BotFather diff --git a/src/bot.ts b/src/bot.ts index 67d1b15..26c3a6d 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -8,12 +8,6 @@ bot.command('help', (ctx) => ctx.reply('Bot is under construction. Please wait for the next update.') ) -await bot.api.setMyCommands([ - { command: 'start', description: 'Start the bot' }, - { command: 'setup', description: 'Setup your preferences' }, - { command: 'help', description: 'Display help text' }, -]) - bot.use(setup) export default bot From bcb681b4b773a10dcf0050e4dff0416a14885eaf Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 25 Jun 2024 22:54:03 +0200 Subject: [PATCH 028/152] test: it responds to setup command --- README.md | 9 +- package-lock.json | 153 +++++++++++++++++++++++++++++++- package.json | 3 +- src/__tests__/bot/setup.spec.ts | 57 +++++++++++- 4 files changed, 214 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f3b764b..9646ff5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # hn-telegram-bot + HackerNews Telegram Bot ## Usage @@ -8,15 +9,19 @@ HackerNews Telegram Bot To develop in local just run `npm run dev` that will start tsx with watch mode, and also `dotenvx` under the hood. ### Build + ```npm run build``` ### Testing Put all tests under this [folder](src/__tests__) and run `npm test`, which will run test environment with Jest in watch mode -**Important!** +**Important!** + You should always import jest or it will raise `ReferenceError: jest is not defined. -Do it like this way + +Example + ```js // src/__tests__/yourtest.spec.ts import {jest} from '@jest/globals' diff --git a/package-lock.json b/package-lock.json index 399654c..d5bb37d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,14 @@ "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", - "@types/ramda": "^0.30.0", "grammy": "^1.25.0", "ramda": "^0.30.1" }, "devDependencies": { "@faker-js/faker": "^8.4.1", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/jest": "^29.5.12", + "@types/ramda": "^0.30.0", "esrun": "^3.2.26", "jest": "^29.7.0", "ts-jest": "^29.1.5", @@ -1795,6 +1796,122 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -1938,6 +2055,7 @@ "version": "0.30.0", "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", + "dev": true, "license": "MIT", "dependencies": { "types-ramda": "^0.30.0" @@ -3855,6 +3973,13 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true, + "license": "MIT" + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -4642,6 +4767,13 @@ "node": ">=6" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -5156,6 +5288,23 @@ "node": ">=8" } }, + "node_modules/prettier": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -5880,6 +6029,7 @@ "version": "9.6.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dev": true, "license": "Apache-2.0" }, "node_modules/type-detect": { @@ -5908,6 +6058,7 @@ "version": "0.30.0", "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.0.tgz", "integrity": "sha512-oVPw/KHB5M0Du0txTEKKM8xZOG9cZBRdCVXvwHYuNJUVkAiJ9oWyqkA+9Bj2gjMsHgkkhsYevobQBWs8I2/Xvw==", + "dev": true, "license": "MIT", "dependencies": { "ts-toolbelt": "^9.6.0" diff --git a/package.json b/package.json index 82907e3..ebfbaf4 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,14 @@ "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", - "@types/ramda": "^0.30.0", "grammy": "^1.25.0", "ramda": "^0.30.1" }, "devDependencies": { "@faker-js/faker": "^8.4.1", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/jest": "^29.5.12", + "@types/ramda": "^0.30.0", "esrun": "^3.2.26", "jest": "^29.7.0", "ts-jest": "^29.1.5", diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index 5f52000..8a0c7bd 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -1,13 +1,22 @@ import { jest } from '@jest/globals' +import * as R from 'ramda' import bot from '@/bot' const TIMEOUT = 5000 -let outgoingRequest = [] + +let outgoingRequests: { + method: string + payload: any +}[] = [] + +const extractProp = + (prop: K) => + (request: (typeof outgoingRequests)[0]) => + R.prop(prop, request) beforeAll(async () => { - // Incorrectly return undefined instead of the respective object types. bot.api.config.use((prev, method, payload) => { - outgoingRequest.push({ method, payload }) + outgoingRequests.push({ method, payload }) return { ok: true, result: {} } as any }) @@ -15,5 +24,45 @@ beforeAll(async () => { }, TIMEOUT) beforeEach(() => { - outgoingRequest = [] + outgoingRequests = [] +}) + +describe('commands', () => { + it('responds to setup command', async () => { + await bot.handleUpdate({ + update_id: 10000, + message: { + date: Date.now(), + text: '/setup', + message_id: 1, + from: { + id: 1, + is_bot: false, + first_name: 'Test', + last_name: 'Lastname', + username: 'test', + }, + entities: [ + { + type: 'bot_command', + offset: 0, + length: 6, + }, + ], + chat: { + id: 1, + type: 'private', + first_name: 'Test', + last_name: 'Lastname', + }, + }, + }) + expect(outgoingRequests).toHaveLength(1) + + const method = R.pipe(R.head, extractProp('method'))(outgoingRequests) + expect(method).toEqual('sendMessage') + + const payload = R.pipe(R.head, extractProp('payload'))(outgoingRequests) + expect(payload).toHaveProperty('text', 'Setting up your preferences...') + }) }) From 2705a0e80d897c0a21d7a69d5b7a8506be2d62c8 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 25 Jun 2024 23:07:41 +0200 Subject: [PATCH 029/152] fix: disable noEmit during build --- README.md | 2 +- package-lock.json | 80 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/types/item.ts | 6 ++-- tsconfig.build.json | 3 ++ 5 files changed, 88 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9646ff5..bb0dce5 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ HackerNews Telegram Bot ### Development -To develop in local just run `npm run dev` that will start tsx with watch mode, and also `dotenvx` under the hood. +To develop in local just run `npm run dev` that will start esrun with watch mode, and also `dotenvx` under the hood. ### Build diff --git a/package-lock.json b/package-lock.json index d5bb37d..bcfea25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@faker-js/faker": "^8.4.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/jest": "^29.5.12", + "@types/node-fetch": "^2.6.11", "@types/ramda": "^0.30.0", "esrun": "^3.2.26", "jest": "^29.7.0", @@ -2051,6 +2052,17 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, "node_modules/@types/ramda": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", @@ -2264,6 +2276,13 @@ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/atomically": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", @@ -2850,6 +2869,19 @@ "text-hex": "1.0.x" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", @@ -3045,6 +3077,16 @@ "node": ">=8" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -3439,6 +3481,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4876,6 +4933,29 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", diff --git a/package.json b/package.json index ebfbaf4..5a90939 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@faker-js/faker": "^8.4.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/jest": "^29.5.12", + "@types/node-fetch": "^2.6.11", "@types/ramda": "^0.30.0", "esrun": "^3.2.26", "jest": "^29.7.0", diff --git a/src/types/item.ts b/src/types/item.ts index 04eb63e..5c03c96 100644 --- a/src/types/item.ts +++ b/src/types/item.ts @@ -7,11 +7,11 @@ export type Item = { text: string dead: boolean parent: number - poll - kids + poll: any // fix this + kids: any // fix this url: string score: number title: string - parts + parts: any // fix this descendants: number } diff --git a/tsconfig.build.json b/tsconfig.build.json index e401417..c7b9225 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -1,4 +1,7 @@ { "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false + }, "exclude": ["node_modules", "dist", "src/**/*.spec.ts"] } From b5e4fdd2bb4d4c95ba04e91e811457f47de570fc Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 29 Jun 2024 03:34:13 +0200 Subject: [PATCH 030/152] feat: get storage adapter for env --- package-lock.json | 10 ++++++++++ package.json | 3 ++- src/__tests__/utils.spec.ts | 10 ++++++++++ src/index.ts | 3 +++ src/types/sessionData.ts | 7 +++++++ src/utils.ts | 14 ++++++++++++++ 6 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/__tests__/utils.spec.ts create mode 100644 src/index.ts create mode 100644 src/types/sessionData.ts create mode 100644 src/utils.ts diff --git a/package-lock.json b/package-lock.json index bcfea25..be793f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", + "@grammyjs/storage-free": "^2.4.2", "grammy": "^1.25.0", "ramda": "^0.30.1" }, @@ -1156,6 +1157,15 @@ "node": ">=14" } }, + "node_modules/@grammyjs/storage-free": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@grammyjs/storage-free/-/storage-free-2.4.2.tgz", + "integrity": "sha512-apyZiHXxVOZQSITt5N279WFAus8kXkYFjASmsDHeHtD9M3sGfj2RYTNmYzPCMzhymD2NGuElunhh8w4geGfwaA==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.6" + } + }, "node_modules/@grammyjs/types": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.9.0.tgz", diff --git a/package.json b/package.json index 5a90939..7db5c16 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,14 @@ "type": "module", "scripts": { "build": "npx tsc --project tsconfig.build.json", - "dev": "npx dotenvx run -- npx esrun --watch=src/*.ts src/bot.ts", + "dev": "npx dotenvx run -- npx esrun --watch=src/*.ts src/index.ts", "test": "dotenvx run -f .env.test -- node --experimental-vm-modules node_modules/.bin/jest --watch" }, "author": "Mateo Sheshi", "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", + "@grammyjs/storage-free": "^2.4.2", "grammy": "^1.25.0", "ramda": "^0.30.1" }, diff --git a/src/__tests__/utils.spec.ts b/src/__tests__/utils.spec.ts new file mode 100644 index 0000000..279b6ee --- /dev/null +++ b/src/__tests__/utils.spec.ts @@ -0,0 +1,10 @@ +import { getSessionAdapter } from '@/utils' +import { MemorySessionStorage } from 'grammy' + +const adapter = getSessionAdapter() + +describe('getSessionAdapter', () => + it('returns adapter', () => { + expect(adapter).toBeDefined() + expect(adapter()).toBeInstanceOf(MemorySessionStorage) + })) diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..360074f --- /dev/null +++ b/src/index.ts @@ -0,0 +1,3 @@ +import bot from './bot' + +bot.start() diff --git a/src/types/sessionData.ts b/src/types/sessionData.ts new file mode 100644 index 0000000..56242f4 --- /dev/null +++ b/src/types/sessionData.ts @@ -0,0 +1,7 @@ +import { Context, SessionFlavor } from 'grammy' + +export interface SessionData { + preferences: string[] +} + +export type PreferencesContext = Context & SessionFlavor diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..d749b14 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,14 @@ +import { freeStorage } from '@grammyjs/storage-free' +import { MemorySessionStorage } from 'grammy' +import * as R from 'ramda' +import { SessionData } from './types/sessionData' + +export const getSessionAdapter = () => + R.ifElse( + R.equals('test'), + R.always(ramAdapter), + R.always(freeStorageAdapter), + )(process.env.NODE_ENV!) + +const ramAdapter = (...args: any) => new MemorySessionStorage(args) +const freeStorageAdapter = () => freeStorage From 83c37fbff7c9f244625fbb5bde1c743ce583013c Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 29 Jun 2024 03:48:42 +0200 Subject: [PATCH 031/152] fix: remove overkilling functions and declare adapters inside always condition --- src/__tests__/utils.spec.ts | 3 +-- src/utils.ts | 9 +++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/__tests__/utils.spec.ts b/src/__tests__/utils.spec.ts index 279b6ee..1fca228 100644 --- a/src/__tests__/utils.spec.ts +++ b/src/__tests__/utils.spec.ts @@ -5,6 +5,5 @@ const adapter = getSessionAdapter() describe('getSessionAdapter', () => it('returns adapter', () => { - expect(adapter).toBeDefined() - expect(adapter()).toBeInstanceOf(MemorySessionStorage) + expect(adapter).toBeInstanceOf(MemorySessionStorage) })) diff --git a/src/utils.ts b/src/utils.ts index d749b14..34d3d50 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -3,12 +3,9 @@ import { MemorySessionStorage } from 'grammy' import * as R from 'ramda' import { SessionData } from './types/sessionData' -export const getSessionAdapter = () => +export const getSessionAdapter = (token?: string) => R.ifElse( R.equals('test'), - R.always(ramAdapter), - R.always(freeStorageAdapter), + R.always(new MemorySessionStorage()), + R.always(freeStorage(token!)), )(process.env.NODE_ENV!) - -const ramAdapter = (...args: any) => new MemorySessionStorage(args) -const freeStorageAdapter = () => freeStorage From 229e241e2fa9a4dfe16c4382f0bb5759d040d322 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 29 Jun 2024 03:48:58 +0200 Subject: [PATCH 032/152] feat: determine session adapter in bot setup --- src/__tests__/bot/setup.spec.ts | 6 +++++- src/bot.ts | 18 +++++++++++++++--- src/preference/setup.ts | 8 +++++--- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index 8a0c7bd..db91752 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -15,7 +15,7 @@ const extractProp = R.prop(prop, request) beforeAll(async () => { - bot.api.config.use((prev, method, payload) => { + bot.api.config.use((_, method, payload) => { outgoingRequests.push({ method, payload }) return { ok: true, result: {} } as any }) @@ -66,3 +66,7 @@ describe('commands', () => { expect(payload).toHaveProperty('text', 'Setting up your preferences...') }) }) + +describe('persist user preferences', () => { + it('responds to user preferences', async () => {}) +}) diff --git a/src/bot.ts b/src/bot.ts index 26c3a6d..3b71bc1 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,13 +1,25 @@ -import { Bot } from 'grammy' +import { Bot, session } from 'grammy' import setup from './preference/setup' import { BOT_TOKEN } from './config' +import { PreferencesContext, SessionData } from './types/sessionData' +import { freeStorage } from '@grammyjs/storage-free' +import { getSessionAdapter } from './utils' -const bot = new Bot(BOT_TOKEN!) +const bot = new Bot(BOT_TOKEN!) bot.command('help', (ctx) => - ctx.reply('Bot is under construction. Please wait for the next update.') + ctx.reply('Bot is under construction. Please wait for the next update.'), +) + +bot.use( + session({ + initial: () => ({ preferences: [] }), + storage: getSessionAdapter(bot.token!), + }), ) bot.use(setup) +bot.catch((err) => console.error(err)) + export default bot diff --git a/src/preference/setup.ts b/src/preference/setup.ts index cf1e26f..9efa61a 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,11 +1,13 @@ -import { Composer } from 'grammy' +import { PreferencesContext, SessionData } from '@/types/sessionData' +import { freeStorage } from '@grammyjs/storage-free' +import { Composer, session } from 'grammy' -const composer = new Composer() +const composer = new Composer() composer.command('setup', (ctx) => ctx.reply('Setting up your preferences...')) composer.on('message', (ctx) => - ctx.reply('Please use the /setup command to setup your preferences.') + ctx.reply('Please use the /setup command to setup your preferences.'), ) export default composer From d41003c835caa8b2ea45ecb3b6a172b639bf8293 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 29 Jun 2024 23:45:21 +0200 Subject: [PATCH 033/152] docs: update readme with right usage of jest object --- README.md | 2 +- src/__tests__/bot/setup.spec.ts | 1 - src/bot.ts | 3 +-- src/preference/setup.ts | 5 ++--- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index bb0dce5..5fd3f34 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Put all tests under this [folder](src/__tests__) and run `npm test`, which will **Important!** -You should always import jest or it will raise `ReferenceError: jest is not defined. +You should always import jest when you use the global object or it will raise `ReferenceError: jest is not defined. Example diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index db91752..cbc32f3 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -1,4 +1,3 @@ -import { jest } from '@jest/globals' import * as R from 'ramda' import bot from '@/bot' diff --git a/src/bot.ts b/src/bot.ts index 3b71bc1..4d02d0e 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,8 +1,7 @@ import { Bot, session } from 'grammy' import setup from './preference/setup' import { BOT_TOKEN } from './config' -import { PreferencesContext, SessionData } from './types/sessionData' -import { freeStorage } from '@grammyjs/storage-free' +import { PreferencesContext } from './types/sessionData' import { getSessionAdapter } from './utils' const bot = new Bot(BOT_TOKEN!) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 9efa61a..a54cb96 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,6 +1,5 @@ -import { PreferencesContext, SessionData } from '@/types/sessionData' -import { freeStorage } from '@grammyjs/storage-free' -import { Composer, session } from 'grammy' +import { PreferencesContext } from '@/types/sessionData' +import { Composer } from 'grammy' const composer = new Composer() From 103e2b6c5232e661dfe1bf2cc77dcb56201db0cf Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 30 Jun 2024 00:34:11 +0200 Subject: [PATCH 034/152] chore: init conversation plugin --- package-lock.json | 63 ++++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/bot.ts | 8 +++++ src/preference/setup.ts | 17 +++++++++-- src/types/sessionData.ts | 7 ++++- 5 files changed, 93 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index be793f1..d9dfda6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", + "@grammyjs/conversations": "^1.2.0", "@grammyjs/storage-free": "^2.4.2", "grammy": "^1.25.0", "ramda": "^0.30.1" @@ -705,6 +706,43 @@ "kuler": "^2.0.0" } }, + "node_modules/@deno/shim-deno": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@deno/shim-deno/-/shim-deno-0.16.1.tgz", + "integrity": "sha512-s9v0kzF5bm/o9TgdwvsraHx6QNllYrXXmKzgOG2lh4LFXnVMr2gpjK/c/ve6EflQn1MqImcWmVD8HAv5ahuuZQ==", + "license": "MIT", + "dependencies": { + "@deno/shim-deno-test": "^0.4.0", + "which": "^2.0.2" + } + }, + "node_modules/@deno/shim-deno-test": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@deno/shim-deno-test/-/shim-deno-test-0.4.0.tgz", + "integrity": "sha512-oYWcD7CpERZy/TXMTM9Tgh1HD/POHlbY9WpzmAk+5H8DohcxG415Qws8yLGlim3EaKBT2v3lJv01x4G0BosnaQ==", + "license": "MIT" + }, + "node_modules/@deno/shim-deno/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/@deno/shim-deno/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@digitak/grubber": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", @@ -1157,6 +1195,22 @@ "node": ">=14" } }, + "node_modules/@grammyjs/conversations": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@grammyjs/conversations/-/conversations-1.2.0.tgz", + "integrity": "sha512-d06nGFPlcea4UqjOcxCm5rwiV74bZQVUWQl3YVQp5TwC0oCHNK+PXgqaKkVgkfcYSMyx3dADRBuBkcGt+yiyDA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "o-son": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || >=14.13.1" + }, + "peerDependencies": { + "grammy": "^1.20.1" + } + }, "node_modules/@grammyjs/storage-free": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@grammyjs/storage-free/-/storage-free-2.4.2.tgz", @@ -5075,6 +5129,15 @@ "node": ">=8" } }, + "node_modules/o-son": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/o-son/-/o-son-1.0.4.tgz", + "integrity": "sha512-tdGKxZgiTexSv97/igC2m8Y6FljgwvwHW/Zy3ql3Jx6MPKrPKaBDLhV7rz8uuLjcDPw6Pxa2PVsnWwen59MmnQ==", + "license": "MIT", + "dependencies": { + "@deno/shim-deno": "~0.16.1" + } + }, "node_modules/object-treeify": { "version": "1.1.33", "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", diff --git a/package.json b/package.json index 7db5c16..52d9de2 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "license": "ISC", "dependencies": { "@dotenvx/dotenvx": "^0.44.1", + "@grammyjs/conversations": "^1.2.0", "@grammyjs/storage-free": "^2.4.2", "grammy": "^1.25.0", "ramda": "^0.30.1" diff --git a/src/bot.ts b/src/bot.ts index 4d02d0e..d59f472 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -3,6 +3,7 @@ import setup from './preference/setup' import { BOT_TOKEN } from './config' import { PreferencesContext } from './types/sessionData' import { getSessionAdapter } from './utils' +import { conversations } from '@grammyjs/conversations' const bot = new Bot(BOT_TOKEN!) @@ -17,6 +18,13 @@ bot.use( }), ) +bot.use(conversations()) +// Always exit any conversation upon /cancel +bot.command('cancel', async (ctx) => { + await ctx.conversation.exit() + await ctx.reply('Leaving.') +}) + bot.use(setup) bot.catch((err) => console.error(err)) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index a54cb96..b651d74 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,9 +1,22 @@ -import { PreferencesContext } from '@/types/sessionData' +import { ConversationContext, PreferencesContext } from '@/types/sessionData' +import { createConversation } from '@grammyjs/conversations' import { Composer } from 'grammy' const composer = new Composer() -composer.command('setup', (ctx) => ctx.reply('Setting up your preferences...')) +const greeting = async ( + conversation: ConversationContext, + ctx: PreferencesContext, +) => { + await ctx.reply('What is your name?') + const nameCtx = await conversation.waitFor(':text') + ctx.reply(`Hello, ${nameCtx.msg.text}!`) +} + +composer.use(createConversation(greeting)) +composer.command('setup', async (ctx) => { + await ctx.conversation.enter('greeting') +}) composer.on('message', (ctx) => ctx.reply('Please use the /setup command to setup your preferences.'), diff --git a/src/types/sessionData.ts b/src/types/sessionData.ts index 56242f4..d25de7b 100644 --- a/src/types/sessionData.ts +++ b/src/types/sessionData.ts @@ -1,7 +1,12 @@ +import { Conversation, ConversationFlavor } from '@grammyjs/conversations' import { Context, SessionFlavor } from 'grammy' export interface SessionData { preferences: string[] } -export type PreferencesContext = Context & SessionFlavor +export type PreferencesContext = Context & + SessionFlavor & + ConversationFlavor + +export type ConversationContext = Conversation From 7bb45aedaa61b0ae7ab9698cecddb51a6016781b Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 30 Jun 2024 01:06:09 +0200 Subject: [PATCH 035/152] docs: add todo for clear preferences and update readme with BDD tips --- README.md | 1 + src/preference/setup.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index 5fd3f34..ee59d9c 100644 --- a/README.md +++ b/README.md @@ -30,3 +30,4 @@ import {jest} from '@jest/globals' ### Tips Use `setMyCommands` on deployment, or configure it directly with @BotFather +This project is made by mainly following BDD principles, so you should stick to it, you won't regret. diff --git a/src/preference/setup.ts b/src/preference/setup.ts index b651d74..3e5c368 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -18,6 +18,8 @@ composer.command('setup', async (ctx) => { await ctx.conversation.enter('greeting') }) +// TODO: add a command to clear preferences + composer.on('message', (ctx) => ctx.reply('Please use the /setup command to setup your preferences.'), ) From 481b8e0428c1d9f42c1806485bdbe1f58e53b2c1 Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 1 Jul 2024 00:41:23 +0200 Subject: [PATCH 036/152] feat: ask for preference --- src/__tests__/bot/setup.spec.ts | 90 ++++++-------------- src/preference/setup.ts | 24 +++++- src/utils/testHelpers.ts | 146 ++++++++++++++++++++++++++++++++ 3 files changed, 192 insertions(+), 68 deletions(-) create mode 100644 src/utils/testHelpers.ts diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index cbc32f3..c19d5c3 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -1,71 +1,33 @@ -import * as R from 'ramda' -import bot from '@/bot' - -const TIMEOUT = 5000 - -let outgoingRequests: { - method: string - payload: any -}[] = [] - -const extractProp = - (prop: K) => - (request: (typeof outgoingRequests)[0]) => - R.prop(prop, request) - -beforeAll(async () => { - bot.api.config.use((_, method, payload) => { - outgoingRequests.push({ method, payload }) - return { ok: true, result: {} } as any - }) - - await bot.init() -}, TIMEOUT) - -beforeEach(() => { - outgoingRequests = [] -}) - -describe('commands', () => { - it('responds to setup command', async () => { - await bot.handleUpdate({ - update_id: 10000, - message: { - date: Date.now(), - text: '/setup', - message_id: 1, - from: { - id: 1, - is_bot: false, - first_name: 'Test', - last_name: 'Lastname', - username: 'test', - }, - entities: [ - { - type: 'bot_command', - offset: 0, - length: 6, - }, - ], - chat: { - id: 1, - type: 'private', - first_name: 'Test', - last_name: 'Lastname', +import { chat, from, testConversation } from '@/utils/testHelpers' +import { faker } from '@faker-js/faker' + +describe('setup', () => { + it('asks for preference', async () => { + await testConversation( + async (c, _) => { + const preferenceCtx = await c.waitFor(':text') + expect(preferenceCtx.msg.text).toBe('test_preference') + }, + { + update_id: 1, + message: { + message_id: 1, + date: faker.date.anytime().getTime(), + from, + chat, + text: 'test_preference', }, }, - }) - expect(outgoingRequests).toHaveLength(1) - - const method = R.pipe(R.head, extractProp('method'))(outgoingRequests) - expect(method).toEqual('sendMessage') + ) + }) - const payload = R.pipe(R.head, extractProp('payload'))(outgoingRequests) - expect(payload).toHaveProperty('text', 'Setting up your preferences...') + it('does not save duplicate preferences', async () => { + throw new Error('Not implemented') }) }) -describe('persist user preferences', () => { - it('responds to user preferences', async () => {}) +describe('cancel', () => { + it('clears preferences', async () => { + throw new Error('Not implemented') + }) }) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 3e5c368..4ba1710 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,16 +1,32 @@ import { ConversationContext, PreferencesContext } from '@/types/sessionData' import { createConversation } from '@grammyjs/conversations' import { Composer } from 'grammy' - +import * as R from 'ramda' const composer = new Composer() +const printPreferences = async (ctx: PreferencesContext) => { + const preferences = ctx.session.preferences + if (R.isEmpty(preferences)) { + await ctx.reply('No preferences set.') + } else { + await ctx.reply(`Your preferences are: ${R.join(',')(preferences)}`) + } +} + const greeting = async ( conversation: ConversationContext, ctx: PreferencesContext, ) => { - await ctx.reply('What is your name?') - const nameCtx = await conversation.waitFor(':text') - ctx.reply(`Hello, ${nameCtx.msg.text}!`) + const inputPreferences = new Set() + + do { + await printPreferences(ctx) + await ctx.reply('Type your preference. Use /cancel to exit.') + const preferenceCtx = await conversation.waitFor(':text') + inputPreferences.add(preferenceCtx.msg.text) + } while (!ctx.hasCommand('cancel')) + + ctx.session.preferences = Array.from(inputPreferences) } composer.use(createConversation(greeting)) diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts new file mode 100644 index 0000000..c27dd23 --- /dev/null +++ b/src/utils/testHelpers.ts @@ -0,0 +1,146 @@ +import { PreferencesContext, SessionData } from '@/types/sessionData' +import { faker } from '@faker-js/faker' +import { + Conversation, + ConversationFlavor, + conversations, + createConversation, +} from '@grammyjs/conversations' +import { + Api, + Bot, + Context, + MemorySessionStorage, + RawApi, + SessionFlavor, + session, +} from 'grammy' +import { ApiResponse, Chat, Update, User } from 'grammy/types' +import * as R from 'ramda' + +interface ApiCall { + method: M + result: Awaited> | ApiResponse +} + +export const botInfo = { + id: faker.number.int(), + is_bot: true as const, + first_name: 'Dummy Bot', + username: 'dummy_bot', + can_join_groups: true as const, + can_read_all_group_messages: false as const, + supports_inline_queries: false as const, +} + +export const chat: Chat.PrivateChat = { + id: faker.number.int(), + first_name: 'Test', + last_name: 'User', + type: 'private', +} + +export const from: User = { + id: faker.number.int(), + first_name: 'Test', + last_name: 'User', + is_bot: false, +} + +export const slashStart: Update = { + update_id: faker.number.int(), + message: { + message_id: faker.number.int(), + date: faker.date.anytime().getTime(), + chat, + from, + text: '/start', + entities: [{ type: 'bot_command', offset: 0, length: '/start'.length }], + }, +} + +export const slashSetup: Update = { + update_id: 1, + message: { + message_id: 1, + date: faker.date.anytime().getTime(), + chat, + from, + text: '/setup', + entities: [{ type: 'bot_command', offset: 0, length: '/setup'.length }], + }, +} + +export const generateHandleUpdate = (text: string): Update => { + return { + update_id: faker.number.int(), + message: { + message_id: faker.number.int(), + date: faker.date.anytime().getTime(), + chat: { + id: faker.number.int(), + first_name: 'Test', + last_name: 'User', + type: 'private', + }, + from: { + id: faker.number.int(), + first_name: 'Test', + last_name: 'User', + is_bot: false, + }, + text, + entities: [{ type: 'bot_command', offset: 0, length: 6 }], + }, + } +} + +export const testConversation = async ( + builder: ( + conversation: Conversation, + ctx: PreferencesContext, + ) => T, + update: Update | Update[] = [], + result: ApiCall | ApiCall[] = [], +) => { + const updates = R.is(Array, update) ? update : [update] + const results = R.is(Array, result) ? result : [result] + + console.log('updates', updates) + console.log('results', results) + const bot = new Bot('dummy', { botInfo }) + bot.api.config.use((_prev, method) => { + console.log('APICall', method) + return Promise.resolve({ + ok: true, + result: {} as any, + }) + }) + + let t: T | undefined + const wrapper = async ( + conversation: Conversation, + ctx: PreferencesContext, + ) => { + t = builder(conversation, ctx) + } + + bot.use( + session({ + initial: (): SessionData => ({ + preferences: [], + }), + }), + conversations(), + createConversation(wrapper), + ) + + bot.command('start', async (ctx) => ctx.conversation.enter('wrapper')) + await bot.handleUpdate(slashStart) + + for (const update of updates) { + await bot.handleUpdate(update) + } + + return t +} From b0cd75a5747b3e37d37a5c1974e5beb564639dfa Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 1 Jul 2024 15:33:40 +0200 Subject: [PATCH 037/152] chore: upgrade grammy --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d9dfda6..2966281 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3711,9 +3711,9 @@ "license": "ISC" }, "node_modules/grammy": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.25.0.tgz", - "integrity": "sha512-aAPfv/uCAf2pxFJQMhI7242G8dvwFBSYbWiuyu5qfWczj9Xn25/FeyC/7KlyXRMTHDYcHI4lRwpe5z/+nsDrXg==", + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.25.2.tgz", + "integrity": "sha512-i1NCr2B8d5/hEHbIzqwG/1+JmIY63xVcBPCyciJB88BYKlXKsM42v5dfRVGf7AYyPxL07Em0qk42Z6YJIqR3HQ==", "license": "MIT", "dependencies": { "@grammyjs/types": "3.9.0", From 1b69dac0a10e75a967b589f70ff7fae41ab42456 Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 1 Jul 2024 21:16:35 +0200 Subject: [PATCH 038/152] feat: store preferences in session with conversations --- src/__tests__/bot/setup.spec.ts | 89 ++++++++++++++++++++------ src/bot.ts | 5 -- src/preference/setup.ts | 34 +++++----- src/utils/testHelpers.ts | 107 ++++++++++---------------------- 4 files changed, 119 insertions(+), 116 deletions(-) diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index c19d5c3..cd0d473 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -1,32 +1,83 @@ -import { chat, from, testConversation } from '@/utils/testHelpers' -import { faker } from '@faker-js/faker' +import setup from '@/preference/setup' +import { chat, from, testSetupConversation } from '@/utils/testHelpers' + +import * as R from 'ramda' describe('setup', () => { - it('asks for preference', async () => { - await testConversation( - async (c, _) => { - const preferenceCtx = await c.waitFor(':text') - expect(preferenceCtx.msg.text).toBe('test_preference') - }, - { - update_id: 1, - message: { - message_id: 1, - date: faker.date.anytime().getTime(), - from, - chat, - text: 'test_preference', + it('saves preferences', async () => { + const storageAdapter = await testSetupConversation( + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'some_other_preference', + }, }, - }, + ], + [], + setup, ) + + const preferences = storageAdapter.read( + R.toString(R.prop('id', chat)), + )?.preferences + + expect(preferences).toHaveLength(2) + expect(preferences).toEqual(['test_preference', 'some_other_preference']) }) it('does not save duplicate preferences', async () => { - throw new Error('Not implemented') + const storageAdapter = await testSetupConversation( + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + ], + [], + setup, + ) + + const preferences = storageAdapter.read( + R.toString(R.prop('id', chat)), + )?.preferences + + expect(preferences).toHaveLength(1) + expect(preferences).toEqual(['test_preference']) }) }) -describe('cancel', () => { +describe('reset', () => { it('clears preferences', async () => { throw new Error('Not implemented') }) diff --git a/src/bot.ts b/src/bot.ts index d59f472..80c5d22 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -19,11 +19,6 @@ bot.use( ) bot.use(conversations()) -// Always exit any conversation upon /cancel -bot.command('cancel', async (ctx) => { - await ctx.conversation.exit() - await ctx.reply('Leaving.') -}) bot.use(setup) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 4ba1710..0223516 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -2,36 +2,34 @@ import { ConversationContext, PreferencesContext } from '@/types/sessionData' import { createConversation } from '@grammyjs/conversations' import { Composer } from 'grammy' import * as R from 'ramda' -const composer = new Composer() -const printPreferences = async (ctx: PreferencesContext) => { - const preferences = ctx.session.preferences - if (R.isEmpty(preferences)) { - await ctx.reply('No preferences set.') - } else { - await ctx.reply(`Your preferences are: ${R.join(',')(preferences)}`) - } -} +const composer = new Composer() -const greeting = async ( +const preferencesBuilder = async ( conversation: ConversationContext, ctx: PreferencesContext, ) => { const inputPreferences = new Set() - do { - await printPreferences(ctx) + while (R.T()) { await ctx.reply('Type your preference. Use /cancel to exit.') - const preferenceCtx = await conversation.waitFor(':text') - inputPreferences.add(preferenceCtx.msg.text) - } while (!ctx.hasCommand('cancel')) + const { + msg: { text }, + } = await conversation.waitFor(':text') + + R.when(R.equals('/cancel'), async () => { + conversation.session.preferences = Array.from(inputPreferences) + await ctx.reply('Leaving...') + return + })(text) - ctx.session.preferences = Array.from(inputPreferences) + inputPreferences.add(text) + } } -composer.use(createConversation(greeting)) +composer.use(createConversation(preferencesBuilder, 'preferences')) composer.command('setup', async (ctx) => { - await ctx.conversation.enter('greeting') + await ctx.conversation.enter('preferences') }) // TODO: add a command to clear preferences diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index c27dd23..55d7b91 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -1,22 +1,16 @@ +import setup from '@/preference/setup' import { PreferencesContext, SessionData } from '@/types/sessionData' import { faker } from '@faker-js/faker' +import { conversations } from '@grammyjs/conversations' import { - Conversation, - ConversationFlavor, - conversations, - createConversation, -} from '@grammyjs/conversations' -import { - Api, Bot, - Context, + Composer, MemorySessionStorage, + Middleware, RawApi, - SessionFlavor, session, } from 'grammy' import { ApiResponse, Chat, Update, User } from 'grammy/types' -import * as R from 'ramda' interface ApiCall { method: M @@ -47,18 +41,6 @@ export const from: User = { is_bot: false, } -export const slashStart: Update = { - update_id: faker.number.int(), - message: { - message_id: faker.number.int(), - date: faker.date.anytime().getTime(), - chat, - from, - text: '/start', - entities: [{ type: 'bot_command', offset: 0, length: '/start'.length }], - }, -} - export const slashSetup: Update = { update_id: 1, message: { @@ -71,76 +53,53 @@ export const slashSetup: Update = { }, } -export const generateHandleUpdate = (text: string): Update => { - return { - update_id: faker.number.int(), - message: { - message_id: faker.number.int(), - date: faker.date.anytime().getTime(), - chat: { - id: faker.number.int(), - first_name: 'Test', - last_name: 'User', - type: 'private', - }, - from: { - id: faker.number.int(), - first_name: 'Test', - last_name: 'User', - is_bot: false, - }, - text, - entities: [{ type: 'bot_command', offset: 0, length: 6 }], - }, - } +export const slashCancel: Update = { + update_id: 2, + message: { + message_id: 2, + date: faker.date.anytime().getTime(), + chat, + from, + text: '/cancel', + entities: [{ type: 'bot_command', offset: 0, length: '/cancel'.length }], + }, } -export const testConversation = async ( - builder: ( - conversation: Conversation, - ctx: PreferencesContext, - ) => T, +export const testSetupConversation = async ( update: Update | Update[] = [], result: ApiCall | ApiCall[] = [], + mw: Middleware = new Composer(), ) => { - const updates = R.is(Array, update) ? update : [update] - const results = R.is(Array, result) ? result : [result] + const updates = Array.isArray(update) ? update : [update] + const results = Array.isArray(result) ? result : [result] - console.log('updates', updates) - console.log('results', results) const bot = new Bot('dummy', { botInfo }) - bot.api.config.use((_prev, method) => { - console.log('APICall', method) - return Promise.resolve({ - ok: true, - result: {} as any, - }) - }) - let t: T | undefined - const wrapper = async ( - conversation: Conversation, - ctx: PreferencesContext, - ) => { - t = builder(conversation, ctx) - } + let storageAdapter: MemorySessionStorage bot.use( session({ - initial: (): SessionData => ({ - preferences: [], - }), + initial: (): SessionData => ({ preferences: [] }), + storage: (() => { + storageAdapter = new MemorySessionStorage() + return storageAdapter + })(), }), conversations(), - createConversation(wrapper), ) - bot.command('start', async (ctx) => ctx.conversation.enter('wrapper')) - await bot.handleUpdate(slashStart) + bot.api.config.use(() => { + return Promise.resolve({ ok: true, result: {} as any }) + }) + + bot.use(mw) + await bot.handleUpdate(slashSetup) for (const update of updates) { await bot.handleUpdate(update) } - return t + await bot.handleUpdate(slashCancel) + + return storageAdapter } From b4cccb3734039e95f8247fabe74a37c67bc6d610 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 00:13:46 +0200 Subject: [PATCH 039/152] chore: add todo on mocking api calls --- src/utils/testHelpers.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index 55d7b91..0391ce2 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -1,4 +1,3 @@ -import setup from '@/preference/setup' import { PreferencesContext, SessionData } from '@/types/sessionData' import { faker } from '@faker-js/faker' import { conversations } from '@grammyjs/conversations' @@ -88,7 +87,21 @@ export const testSetupConversation = async ( conversations(), ) - bot.api.config.use(() => { + bot.api.config.use((_prev, _method) => { + // TODO: not working yet + // const { result } = results.splice( + // results.findIndex((res) => res.method === method), + // 1, + // )[0] + + // return Promise.resolve( + // typeof result === 'object' && result !== null && 'ok' in result + // ? result + // : { + // ok: true, + // result: result as any, + // }, + // ) return Promise.resolve({ ok: true, result: {} as any }) }) From 01b50cb5b15a3dc799cc880d2f8baf9814188710 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 00:43:03 +0200 Subject: [PATCH 040/152] chore: upgrade grammy --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2966281..6a1d8d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1221,9 +1221,9 @@ } }, "node_modules/@grammyjs/types": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.9.0.tgz", - "integrity": "sha512-QzZAbz5COBZnDlDs6x94TIIIH5Pi7AMk0rJPM2O5JAz5Q+s7Xxp3lGg/pWyiVR9Q8euRDYCJmDtcRjwwFD6a3g==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.10.0.tgz", + "integrity": "sha512-TDWn0bjTzEqG5coxnbSOCOEEkeQ3RCmf6XgJ3TBBMbLmb9eyQM1Evr8XzqLwXr9IcQvHMVeQ/lS86lkvYeADvw==", "license": "MIT" }, "node_modules/@inquirer/confirm": { @@ -3711,12 +3711,12 @@ "license": "ISC" }, "node_modules/grammy": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.25.2.tgz", - "integrity": "sha512-i1NCr2B8d5/hEHbIzqwG/1+JmIY63xVcBPCyciJB88BYKlXKsM42v5dfRVGf7AYyPxL07Em0qk42Z6YJIqR3HQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.26.0.tgz", + "integrity": "sha512-jrXKDU8UzcQaecteJxuXO80trAKkbmFhaTKIVIAyS/9pLxUyqaK98XjOJjL6t6b7cnLydJtYsAkRpkQ/TUxTrQ==", "license": "MIT", "dependencies": { - "@grammyjs/types": "3.9.0", + "@grammyjs/types": "3.10.0", "abort-controller": "^3.0.0", "debug": "^4.3.4", "node-fetch": "^2.7.0" From fb99c8179a80c400d95ec4436fdc5ae26d024cd2 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 01:25:22 +0200 Subject: [PATCH 041/152] feat: reset preferences and fix convo loop --- src/__tests__/bot/setup.spec.ts | 75 ++++++++++++++++++++++++++++++++- src/bot.ts | 3 +- src/preference/setup.ts | 16 ++++--- 3 files changed, 83 insertions(+), 11 deletions(-) diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index cd0d473..2c6f406 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -1,5 +1,15 @@ import setup from '@/preference/setup' -import { chat, from, testSetupConversation } from '@/utils/testHelpers' +import { PreferencesContext, SessionData } from '@/types/sessionData' +import { + botInfo, + chat, + from, + slashCancel, + slashSetup, + testSetupConversation, +} from '@/utils/testHelpers' +import { conversations } from '@grammyjs/conversations' +import { Bot, MemorySessionStorage, session } from 'grammy' import * as R from 'ramda' @@ -79,6 +89,67 @@ describe('setup', () => { describe('reset', () => { it('clears preferences', async () => { - throw new Error('Not implemented') + const bot = new Bot('dummy', { botInfo }) + + let storageAdapter: MemorySessionStorage + + bot.use( + session({ + initial: (): SessionData => ({ + preferences: [], + }), + storage: (() => { + storageAdapter = new MemorySessionStorage() + return storageAdapter + })(), + }), + conversations(), + ) + + bot.use(setup) + + bot.api.config.use(() => + Promise.resolve({ + ok: true, + result: {} as any, + }), + ) + + await bot.handleUpdate(slashSetup) + await bot.handleUpdate({ + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }) + await bot.handleUpdate(slashCancel) + + const preferences = storageAdapter.read( + R.toString(R.prop('id', chat)), + )?.preferences + + expect(preferences).toHaveLength(1) + + await bot.handleUpdate({ + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: '/reset', + entities: [{ type: 'bot_command', offset: 0, length: '/reset'.length }], + }, + }) + + const updatedPreferences = storageAdapter.read( + R.toString(R.prop('id', chat)), + )?.preferences + + expect(updatedPreferences).toHaveLength(0) }) }) diff --git a/src/bot.ts b/src/bot.ts index 80c5d22..d7f4a75 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -16,10 +16,9 @@ bot.use( initial: () => ({ preferences: [] }), storage: getSessionAdapter(bot.token!), }), + conversations(), ) -bot.use(conversations()) - bot.use(setup) bot.catch((err) => console.error(err)) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 0223516..bad761d 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -4,7 +4,6 @@ import { Composer } from 'grammy' import * as R from 'ramda' const composer = new Composer() - const preferencesBuilder = async ( conversation: ConversationContext, ctx: PreferencesContext, @@ -17,11 +16,11 @@ const preferencesBuilder = async ( msg: { text }, } = await conversation.waitFor(':text') - R.when(R.equals('/cancel'), async () => { + if (text === '/cancel') { conversation.session.preferences = Array.from(inputPreferences) await ctx.reply('Leaving...') return - })(text) + } inputPreferences.add(text) } @@ -32,10 +31,13 @@ composer.command('setup', async (ctx) => { await ctx.conversation.enter('preferences') }) -// TODO: add a command to clear preferences +composer.command('reset', (ctx) => { + ctx.session.preferences = [] + ctx.reply('Preferences reset.') +}) -composer.on('message', (ctx) => - ctx.reply('Please use the /setup command to setup your preferences.'), -) +composer.on('message', (ctx) => { + ctx.reply('Please use the /setup command to setup your preferences.') +}) export default composer From 0c74b2ba296b161128f73e5d48a7f61e1e293e48 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 01:50:26 +0200 Subject: [PATCH 042/152] refactor: add generic slashCommand generator --- src/__tests__/bot/setup.spec.ts | 18 ++++-------------- src/preference/setup.ts | 4 ++++ src/utils/testHelpers.ts | 29 +++++++++++------------------ 3 files changed, 19 insertions(+), 32 deletions(-) diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index 2c6f406..dc11502 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -4,8 +4,7 @@ import { botInfo, chat, from, - slashCancel, - slashSetup, + slashCommand, testSetupConversation, } from '@/utils/testHelpers' import { conversations } from '@grammyjs/conversations' @@ -115,18 +114,9 @@ describe('reset', () => { }), ) - await bot.handleUpdate(slashSetup) - await bot.handleUpdate({ - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: 'test_preference', - }, - }) - await bot.handleUpdate(slashCancel) + await bot.handleUpdate(slashCommand('setup')) + await bot.handleUpdate(slashCommand('reset')) + await bot.handleUpdate(slashCommand('cancel')) const preferences = storageAdapter.read( R.toString(R.prop('id', chat)), diff --git a/src/preference/setup.ts b/src/preference/setup.ts index bad761d..216bbf2 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -32,10 +32,14 @@ composer.command('setup', async (ctx) => { }) composer.command('reset', (ctx) => { + console.log('reset entered') ctx.session.preferences = [] ctx.reply('Preferences reset.') }) +// composer.command('list', (ctx) => +// ctx.reply(R.join('\n', ctx.session.preferences)), +// ) composer.on('message', (ctx) => { ctx.reply('Please use the /setup command to setup your preferences.') }) diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index 0391ce2..622b675 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -10,6 +10,7 @@ import { session, } from 'grammy' import { ApiResponse, Chat, Update, User } from 'grammy/types' +import * as R from 'ramda' interface ApiCall { method: M @@ -40,29 +41,21 @@ export const from: User = { is_bot: false, } -export const slashSetup: Update = { +type AvailableCommands = 'setup' | 'reset' | 'list' | 'cancel' + +export const slashCommand = (command: AvailableCommands): Update => ({ update_id: 1, message: { message_id: 1, date: faker.date.anytime().getTime(), chat, from, - text: '/setup', - entities: [{ type: 'bot_command', offset: 0, length: '/setup'.length }], + text: R.concat('/', command), + entities: [ + { type: 'bot_command', offset: 0, length: R.inc(command.length) }, + ], }, -} - -export const slashCancel: Update = { - update_id: 2, - message: { - message_id: 2, - date: faker.date.anytime().getTime(), - chat, - from, - text: '/cancel', - entities: [{ type: 'bot_command', offset: 0, length: '/cancel'.length }], - }, -} +}) export const testSetupConversation = async ( update: Update | Update[] = [], @@ -107,12 +100,12 @@ export const testSetupConversation = async ( bot.use(mw) - await bot.handleUpdate(slashSetup) + await bot.handleUpdate(slashCommand('setup')) for (const update of updates) { await bot.handleUpdate(update) } - await bot.handleUpdate(slashCancel) + await bot.handleUpdate(slashCommand('cancel')) return storageAdapter } From fe0ccb4d463cf56f1d6664fc73368fe0ec5e72b1 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 14:07:45 +0200 Subject: [PATCH 043/152] chore: upgrade typescript npm --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6a1d8d5..eb4a319 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6218,9 +6218,9 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "license": "Apache-2.0", "bin": { From 410362a95f679d98c980ebf8b181b3d57485476a Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 14:12:17 +0200 Subject: [PATCH 044/152] chore!: remove export of bot and use bot.ts as entrypoint --- package.json | 2 +- src/bot.ts | 2 +- src/index.ts | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 src/index.ts diff --git a/package.json b/package.json index 52d9de2..d001ef4 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "module", "scripts": { "build": "npx tsc --project tsconfig.build.json", - "dev": "npx dotenvx run -- npx esrun --watch=src/*.ts src/index.ts", + "dev": "npx dotenvx run -- npx esrun --watch=src/*.ts src/bot.ts", "test": "dotenvx run -f .env.test -- node --experimental-vm-modules node_modules/.bin/jest --watch" }, "author": "Mateo Sheshi", diff --git a/src/bot.ts b/src/bot.ts index d7f4a75..4ad9ba4 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -23,4 +23,4 @@ bot.use(setup) bot.catch((err) => console.error(err)) -export default bot +bot.start() diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 360074f..0000000 --- a/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import bot from './bot' - -bot.start() From b06f79ac93e529510a878e853158f6433f0e2268 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 14:31:49 +0200 Subject: [PATCH 045/152] chore: upgrade dotenvx to major 1 --- package-lock.json | 1852 ++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 655 insertions(+), 1199 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb4a319..6103928 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@dotenvx/dotenvx": "^0.44.1", + "@dotenvx/dotenvx": "^1.5.0", "@grammyjs/conversations": "^1.2.0", "@grammyjs/storage-free": "^2.4.2", "grammy": "^1.25.0", @@ -97,6 +97,59 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -108,16 +161,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" @@ -140,16 +192,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -173,6 +215,21 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-environment-visitor/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-function-name": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", @@ -187,6 +244,21 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-function-name/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-hoist-variables": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", @@ -200,6 +272,21 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", @@ -214,6 +301,59 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-transforms": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", @@ -258,6 +398,59 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", @@ -271,6 +464,21 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", @@ -315,6 +523,21 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helpers/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/highlight": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", @@ -376,6 +599,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -618,29 +851,60 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/template/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/types": { + "node_modules/@babel/traverse/node_modules/@babel/types": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", @@ -655,6 +919,20 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -662,6 +940,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@clack/core": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.4.tgz", + "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, "node_modules/@colors/colors": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", @@ -751,28 +1039,26 @@ "license": "MIT" }, "node_modules/@dotenvx/dotenvx": { - "version": "0.44.1", - "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-0.44.1.tgz", - "integrity": "sha512-OmOU7CRwhXydZUHeTP46GNZsGpwQ3mwrr3cUAWod+FmrKW3ib4GYe1jU++ZFyEEUNvg532QvvM7hQ44YyJrgfw==", - "license": "MIT", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.5.0.tgz", + "integrity": "sha512-b+LLl13eGQgXnhe6jb3smZrByVrUm+R+kfy5e15Gq8PqROcU35Txz25PHUPLrAvOiTQHZhIHjwF0XI9CNGVxJQ==", + "license": "BSD-3-Clause", "dependencies": { - "@inquirer/confirm": "^2.0.17", + "@clack/core": "^0.3.4", "arch": "^2.1.1", "chalk": "^4.1.2", "commander": "^11.1.0", "conf": "^10.2.0", "diff": "^5.2.0", "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", "eciesjs": "^0.4.6", "execa": "^5.1.1", - "glob": "^10.3.10", + "fdir": "^6.1.1", "ignore": "^5.3.0", "is-wsl": "^2.1.1", "object-treeify": "1.1.33", "open": "^8.4.2", - "ora": "^5.4.1", - "semver": "^7.3.4", + "picomatch": "^3.0.1", "undici": "^5.28.3", "which": "^4.0.0", "winston": "^3.11.0", @@ -786,15 +1072,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/@dotenvx/dotenvx/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/@esbuild/android-arm": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", @@ -1206,210 +1483,39 @@ }, "engines": { "node": "^12.20.0 || >=14.13.1" - }, - "peerDependencies": { - "grammy": "^1.20.1" - } - }, - "node_modules/@grammyjs/storage-free": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@grammyjs/storage-free/-/storage-free-2.4.2.tgz", - "integrity": "sha512-apyZiHXxVOZQSITt5N279WFAus8kXkYFjASmsDHeHtD9M3sGfj2RYTNmYzPCMzhymD2NGuElunhh8w4geGfwaA==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.6" - } - }, - "node_modules/@grammyjs/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.10.0.tgz", - "integrity": "sha512-TDWn0bjTzEqG5coxnbSOCOEEkeQ3RCmf6XgJ3TBBMbLmb9eyQM1Evr8XzqLwXr9IcQvHMVeQ/lS86lkvYeADvw==", - "license": "MIT" - }, - "node_modules/@inquirer/confirm": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-2.0.17.tgz", - "integrity": "sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^6.0.0", - "@inquirer/type": "^1.1.6", - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@inquirer/core": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-6.0.0.tgz", - "integrity": "sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==", - "license": "MIT", - "dependencies": { - "@inquirer/type": "^1.1.6", - "@types/mute-stream": "^0.0.4", - "@types/node": "^20.10.7", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "cli-spinners": "^2.9.2", - "cli-width": "^4.1.0", - "figures": "^3.2.0", - "mute-stream": "^1.0.0", - "run-async": "^3.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@inquirer/type": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.3.3.tgz", - "integrity": "sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + }, + "peerDependencies": { + "grammy": "^1.20.1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/@grammyjs/storage-free": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@grammyjs/storage-free/-/storage-free-2.4.2.tgz", + "integrity": "sha512-apyZiHXxVOZQSITt5N279WFAus8kXkYFjASmsDHeHtD9M3sGfj2RYTNmYzPCMzhymD2NGuElunhh8w4geGfwaA==", "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "node-fetch": "^2.6.6" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@grammyjs/types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.10.0.tgz", + "integrity": "sha512-TDWn0bjTzEqG5coxnbSOCOEEkeQ3RCmf6XgJ3TBBMbLmb9eyQM1Evr8XzqLwXr9IcQvHMVeQ/lS86lkvYeADvw==", + "license": "MIT" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, "engines": { "node": ">=8" } @@ -1611,28 +1717,6 @@ } } }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -1801,9 +1885,9 @@ } }, "node_modules/@noble/curves": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", - "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "license": "MIT", "dependencies": { "@noble/hashes": "1.4.0" @@ -1824,16 +1908,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -1885,98 +1959,6 @@ } } }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -2019,6 +2001,21 @@ "@types/babel__traverse": "*" } }, + "node_modules/@types/babel__core/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@types/babel__generator": { "version": "7.6.8", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", @@ -2050,6 +2047,21 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/babel__traverse/node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -2098,19 +2110,11 @@ "pretty-format": "^29.0.0" } }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", + "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -2150,12 +2154,6 @@ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", "license": "MIT" }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "license": "MIT" - }, "node_modules/@types/yargs": { "version": "17.0.32", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", @@ -2248,6 +2246,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -2263,6 +2262,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2297,6 +2297,19 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -2483,26 +2496,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "dev": true, "license": "MIT" }, "node_modules/binary-extensions": { @@ -2518,17 +2512,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2593,44 +2576,20 @@ "dev": true, "license": "MIT", "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "node-int64": "^0.4.0" } }, "node_modules/buffer-from": { @@ -2661,9 +2620,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001636", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", - "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "version": "1.0.30001639", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz", + "integrity": "sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==", "dev": true, "funding": [ { @@ -2755,39 +2714,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -2803,55 +2729,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3120,18 +2997,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -3162,10 +3027,9 @@ } }, "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -3208,27 +3072,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/dotenv-expand": { - "version": "11.0.6", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", - "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.4" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, "node_modules/eciesjs": { "version": "0.4.7", "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.7.tgz", @@ -3244,9 +3087,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.810", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", - "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==", + "version": "1.4.816", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", + "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==", "dev": true, "license": "ISC" }, @@ -3264,9 +3107,10 @@ } }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, "node_modules/enabled": { @@ -3294,13 +3138,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/error-ex/node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, "node_modules/esbuild": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", @@ -3350,12 +3187,13 @@ } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, "node_modules/esprima": { @@ -3422,12 +3260,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -3477,27 +3309,26 @@ "bser": "2.1.1" } }, + "node_modules/fdir": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.1.1.tgz", + "integrity": "sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==", + "license": "MIT", + "peerDependencies": { + "picomatch": "3.x" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fecha": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", "license": "MIT" }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -3512,15 +3343,17 @@ } }, "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/fn.name": { @@ -3529,22 +3362,6 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "license": "MIT" }, - "node_modules/foreground-child": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.0.tgz", - "integrity": "sha512-CrWQNaEl1/6WeZoarcM9LHupTo3RpZO2Pdk1vktwzPiQTsJnAKJmm3TACKeG5UZbWDfaH2AbvYxzP96y0MT7fA==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -3635,22 +3452,22 @@ } }, "node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3669,30 +3486,6 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -3763,26 +3556,6 @@ "node": ">=10.17.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -3841,9 +3614,10 @@ "license": "ISC" }, "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, "license": "MIT" }, "node_modules/is-binary-path": { @@ -3904,6 +3678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3932,15 +3707,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3972,18 +3738,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -4016,9 +3770,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4062,6 +3816,16 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/istanbul-reports": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", @@ -4076,24 +3840,6 @@ "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", - "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/javascript-natural-sort": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", @@ -4143,22 +3889,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -4191,22 +3921,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -4287,28 +4001,6 @@ } } }, - "node_modules/jest-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -4571,22 +4263,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -4621,28 +4297,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -4693,6 +4347,19 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/jest-validate": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", @@ -4876,16 +4543,16 @@ "license": "MIT" }, "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/lodash": { @@ -4902,22 +4569,6 @@ "dev": true, "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/logform": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", @@ -4936,12 +4587,13 @@ } }, "node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "dependencies": { + "yallist": "^3.0.2" } }, "node_modules/make-dir": { @@ -4997,6 +4649,19 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -5042,30 +4707,12 @@ "node": "*" } }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "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==", "license": "MIT" }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5207,21 +4854,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" @@ -5230,10 +4870,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-limit": { + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -5245,18 +4899,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -5286,12 +4928,13 @@ } }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -5320,37 +4963,19 @@ "dev": true, "license": "MIT" }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true, "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -5379,66 +5004,77 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "find-up": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/prettier": { @@ -5570,6 +5206,19 @@ "node": ">=8.10.0" } }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5640,34 +5289,6 @@ "node": ">=10" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -5731,16 +5352,10 @@ } }, "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, "node_modules/simple-swizzle": { "version": "0.2.2", @@ -5751,11 +5366,16 @@ "is-arrayish": "^0.3.1" } }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, "license": "MIT" }, "node_modules/slash": { @@ -5769,9 +5389,9 @@ } }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -5789,6 +5409,16 @@ "source-map": "^0.6.0" } }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -5818,16 +5448,6 @@ "node": ">=10" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -5852,27 +5472,10 @@ } }, "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -5883,56 +5486,11 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -6013,28 +5571,6 @@ "node": ">=8" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -6178,6 +5714,16 @@ } } }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/ts-toolbelt": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", @@ -6199,6 +5745,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -6208,9 +5755,9 @@ } }, "node_modules/types-ramda": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.0.tgz", - "integrity": "sha512-oVPw/KHB5M0Du0txTEKKM8xZOG9cZBRdCVXvwHYuNJUVkAiJ9oWyqkA+9Bj2gjMsHgkkhsYevobQBWs8I2/Xvw==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", + "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", "dev": true, "license": "MIT", "dependencies": { @@ -6247,6 +5794,7 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, "license": "MIT" }, "node_modules/update-browserslist-db": { @@ -6327,15 +5875,6 @@ "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -6404,24 +5943,10 @@ } }, "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -6435,46 +5960,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6496,13 +5981,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/xxhashjs": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", @@ -6558,28 +6036,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index d001ef4..e7c4dc9 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "author": "Mateo Sheshi", "license": "ISC", "dependencies": { - "@dotenvx/dotenvx": "^0.44.1", + "@dotenvx/dotenvx": "^1.5.0", "@grammyjs/conversations": "^1.2.0", "@grammyjs/storage-free": "^2.4.2", "grammy": "^1.25.0", From 7e7a38858673a82af7a6b71c1e4d71991be280bf Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 2 Jul 2024 22:56:07 +0200 Subject: [PATCH 046/152] feat!: replace jest with vitest cause of esm troubles --- README.md | 13 +- jest.config.ts | 11 - package-lock.json | 5167 +++++++++++++++------------------------------ package.json | 10 +- tsconfig.json | 2 +- vitest.config.ts | 9 + 6 files changed, 1663 insertions(+), 3549 deletions(-) delete mode 100644 jest.config.ts create mode 100644 vitest.config.ts diff --git a/README.md b/README.md index ee59d9c..70008c7 100644 --- a/README.md +++ b/README.md @@ -14,18 +14,7 @@ To develop in local just run `npm run dev` that will start esrun with watch mode ### Testing -Put all tests under this [folder](src/__tests__) and run `npm test`, which will run test environment with Jest in watch mode - -**Important!** - -You should always import jest when you use the global object or it will raise `ReferenceError: jest is not defined. - -Example - -```js -// src/__tests__/yourtest.spec.ts -import {jest} from '@jest/globals' -``` +Put all tests under this [folder](src/__tests__) and run `npm test`, which will run test environment with Vitest in watch mode ### Tips diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 96eb878..0000000 --- a/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { pathsToModuleNameMapper } from 'ts-jest' - -import { compilerOptions } from './tsconfig.json' -import type { JestConfigWithTsJest } from 'ts-jest' -const jest: JestConfigWithTsJest = { - preset: 'ts-jest/presets/js-with-ts-esm', - modulePaths: [compilerOptions.baseUrl], - moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths), -} - -export default jest diff --git a/package-lock.json b/package-lock.json index 6103928..f74e3fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,28 +18,12 @@ "devDependencies": { "@faker-js/faker": "^8.4.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/jest": "^29.5.12", "@types/node-fetch": "^2.6.11", "@types/ramda": "^0.30.0", "esrun": "^3.2.26", - "jest": "^29.7.0", - "ts-jest": "^29.1.5", - "ts-node": "^10.9.2", - "typescript": "^5.5.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" + "typescript": "^5.5.2", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.0" } }, "node_modules/@babel/code-frame": { @@ -56,110 +40,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.17.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", @@ -175,33 +55,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-environment-visitor": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", @@ -287,170 +140,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", @@ -499,45 +188,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/highlight": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", @@ -645,201 +295,10 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "license": "MIT", "dependencies": { @@ -933,13 +392,6 @@ "node": ">=6.9.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, "node_modules/@clack/core": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.4.tgz", @@ -959,30 +411,6 @@ "node": ">=0.1.90" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@dabh/diagnostics": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", @@ -1072,6 +500,23 @@ "url": "https://dotenvx.com" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", @@ -1503,410 +948,328 @@ "integrity": "sha512-TDWn0bjTzEqG5coxnbSOCOEEkeQ3RCmf6XgJ3TBBMbLmb9eyQM1Evr8XzqLwXr9IcQvHMVeQ/lS86lkvYeADvw==", "license": "MIT" }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=6.0.0" } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, + "node_modules/@noble/ciphers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", + "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, + "node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "@noble/hashes": "1.4.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@noble/ciphers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", - "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -1915,26 +1278,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, "node_modules/@trivago/prettier-plugin-sort-imports": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", @@ -1959,218 +1302,153 @@ } } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true, "license": "MIT" }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/@types/node": { + "version": "20.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", + "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "undici-types": "~5.26.4" } }, - "node_modules/@types/babel__core/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/babel__traverse/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" + "@types/node": "*", + "form-data": "^4.0.0" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "node_modules/@types/ramda": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", + "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "types-ramda": "^0.30.0" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", "license": "MIT" }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "node_modules/@vitest/expect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "node_modules/@vitest/runner": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-report": "*" + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "node_modules/@vitest/snapshot": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@types/ramda": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", - "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", + "node_modules/@vitest/spy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dev": true, "license": "MIT", "dependencies": { - "types-ramda": "^0.30.0" + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/@vitest/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -2242,32 +1520,6 @@ } } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2330,21 +1582,14 @@ ], "license": "MIT" }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" + "engines": { + "node": "*" } }, "node_modules/async": { @@ -2369,416 +1614,147 @@ "node": ">=10.12.0" } }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "get-func-name": "^2.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "*" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": ">=8" + "node": ">= 8.10.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001639", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz", - "integrity": "sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "license": "MIT", "dependencies": { "color-name": "^1.0.0", @@ -2832,13 +1808,6 @@ "node": ">=16" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, "node_modules/conf": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", @@ -2863,39 +1832,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", "dev": true, "license": "MIT" }, @@ -2972,29 +1912,17 @@ } } }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "dependencies": { + "type-detect": "^4.0.0" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/define-lazy-prop": { @@ -3016,16 +1944,6 @@ "node": ">=0.4.0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -3086,33 +2004,6 @@ "node": ">=16.0.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.816", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", - "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, "node_modules/enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", @@ -3128,16 +2019,6 @@ "node": ">=6" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/esbuild": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", @@ -3176,40 +2057,6 @@ "@esbuild/win32-x64": "0.17.19" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esrun": { "version": "3.2.26", "resolved": "https://registry.npmjs.org/esrun/-/esrun-3.2.26.tgz", @@ -3228,6 +2075,16 @@ "node": ">=14.0" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", @@ -3260,55 +2117,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, "node_modules/fdir": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.1.1.tgz", @@ -3342,20 +2156,6 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -3377,13 +2177,6 @@ "node": ">= 6" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -3399,44 +2192,14 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/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==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": "*" } }, "node_modules/get-stream": { @@ -3451,28 +2214,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -3496,12 +2237,12 @@ "node": ">=4" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true, - "license": "ISC" + "license": "MIT" }, "node_modules/grammy": { "version": "1.26.0", @@ -3527,26 +2268,6 @@ "node": ">=8" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -3565,61 +2286,12 @@ "node": ">= 4" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3633,22 +2305,6 @@ "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -3674,26 +2330,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3759,2120 +2395,1704 @@ "node": ">=16" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", + "license": "BSD-2-Clause" + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT" + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT" + }, + "node_modules/logform": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" }, "engines": { - "node": ">=10" + "node": ">= 12.0.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/sourcemap-codec": "^1.4.15" } }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", - "dev": true, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" + "mime-db": "1.52.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "bin": { - "jest": "bin/jest.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { + "encoding": { "optional": true } } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, + "node_modules/o-son": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/o-son/-/o-son-1.0.4.tgz", + "integrity": "sha512-tdGKxZgiTexSv97/igC2m8Y6FljgwvwHW/Zy3ql3Jx6MPKrPKaBDLhV7rz8uuLjcDPw6Pxa2PVsnWwen59MmnQ==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@deno/shim-deno": "~0.16.1" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "dependencies": { + "fn.name": "1.x.x" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "mimic-fn": "^2.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, + "node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "node": "*" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "node_modules/pkg-types": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", + "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "find-up": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "locate-path": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "p-try": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "p-limit": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=4" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/prettier": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/jest-watcher": { + "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, + "node": ">=6" + } + }, + "node_modules/ramda": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", + "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", + "license": "MIT", "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/ramda" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "license": "BSD-2-Clause" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "picomatch": "^2.2.1" }, "engines": { - "node": ">=6" + "node": ">=8.10.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "license": "MIT" - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=8" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, - "node_modules/logform": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", - "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, "engines": { - "node": ">= 12.0.0" + "node": ">=10" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" } }, - "node_modules/merge-stream": { + "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "license": "ISC" }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, - "node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "is-arrayish": "^0.3.1" } }, - "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/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "license": "MIT" }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, "engines": { - "node": ">=8" - } - }, - "node_modules/o-son": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/o-son/-/o-son-1.0.4.tgz", - "integrity": "sha512-tdGKxZgiTexSv97/igC2m8Y6FljgwvwHW/Zy3ql3Jx6MPKrPKaBDLhV7rz8uuLjcDPw6Pxa2PVsnWwen59MmnQ==", - "license": "MIT", - "dependencies": { - "@deno/shim-deno": "~0.16.1" + "node": "*" } }, - "node_modules/object-treeify": { - "version": "1.1.33", - "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", - "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } + "license": "MIT" }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", "dependencies": { - "fn.name": "1.x.x" + "safe-buffer": "~5.2.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/onetime/node_modules/mimic-fn": { + "node_modules/strip-literal": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" + "js-tokens": "^9.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", "dev": true, + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", + "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "is-number": "^7.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 14.0.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/ts-toolbelt": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "license": "ISC" + "license": "Apache-2.0" }, - "node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "node_modules/tsconfck": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", + "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "dev": true, "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, "engines": { - "node": ">=10" + "node": "^18 || >=20" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/types-ramda": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", + "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "ts-toolbelt": "^9.6.0" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=8" + "node": ">=14.17" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dev": true, + "license": "MIT" }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=14.0" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" + "punycode": "^2.1.0" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, - "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "node_modules/vite": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz", + "integrity": "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==", "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, "bin": { - "prettier": "bin/prettier.cjs" + "vite": "bin/vite.js" }, "engines": { - "node": ">=14" + "node": "^18.0.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "url": "https://github.com/vitejs/vite?sponsor=1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "optionalDependencies": { + "fsevents": "~2.3.3" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" + "peerDependenciesMeta": { + "@types/node": { + "optional": true }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true } - ], - "license": "MIT" - }, - "node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/vite-node": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", "dev": true, - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" + "bin": { + "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" + "node": "^18.0.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://opencollective.com/vitest" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "node_modules/vite-tsconfig-paths": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" + "peerDependencies": { + "vite": "*" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "vite": { + "optional": true + } } }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } + "optional": true, + "os": [ + "android" ], - "license": "MIT" - }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" + "node": ">=12" } }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "license": "MIT" + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8.0" + "node": ">=12" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 14.0.0" + "node": ">=12" } }, - "node_modules/ts-jest": { - "version": "29.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", - "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitest": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", "dev": true, "license": "MIT", "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" + "@vitest/expect": "1.6.0", + "@vitest/runner": "1.6.0", + "@vitest/snapshot": "1.6.0", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.0", + "why-is-node-running": "^2.2.2" }, "bin": { - "ts-jest": "cli.js" + "vitest": "vitest.mjs" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.0", + "@vitest/ui": "1.6.0", + "happy-dom": "*", + "jsdom": "*" }, "peerDependenciesMeta": { - "@babel/core": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { "optional": true }, - "@jest/transform": { + "@vitest/browser": { "optional": true }, - "@jest/types": { + "@vitest/ui": { "optional": true }, - "babel-jest": { + "happy-dom": { "optional": true }, - "esbuild": { + "jsdom": { "optional": true } } }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "license": "MIT", "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "engines": { + "node": ">=16.17" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ts-toolbelt": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "node_modules/vitest/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/vitest/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "node_modules/vitest/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "path-key": "^4.0.0" }, "engines": { - "node": ">=14.17" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "node_modules/vitest/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, "license": "MIT", "dependencies": { - "@fastify/busboy": "^2.0.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=14.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "license": "MIT" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "node_modules/vitest/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "node_modules/vitest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, "engines": { - "node": ">=10.12.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "node_modules/vitest/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/webidl-conversions": { @@ -5906,6 +4126,23 @@ "node": "^16.13.0 || >=18.0.0" } }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/winston": { "version": "3.13.0", "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz", @@ -5942,45 +4179,6 @@ "node": ">= 12.0.0" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/xxhashjs": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", @@ -5989,75 +4187,6 @@ "dependencies": { "cuint": "^0.2.2" } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index e7c4dc9..fc827dd 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "npx tsc --project tsconfig.build.json", "dev": "npx dotenvx run -- npx esrun --watch=src/*.ts src/bot.ts", - "test": "dotenvx run -f .env.test -- node --experimental-vm-modules node_modules/.bin/jest --watch" + "test": "dotenvx run -f .env.test -- npx vitest" }, "author": "Mateo Sheshi", "license": "ISC", @@ -21,13 +21,11 @@ "devDependencies": { "@faker-js/faker": "^8.4.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/jest": "^29.5.12", "@types/node-fetch": "^2.6.11", "@types/ramda": "^0.30.0", "esrun": "^3.2.26", - "jest": "^29.7.0", - "ts-jest": "^29.1.5", - "ts-node": "^10.9.2", - "typescript": "^5.5.2" + "typescript": "^5.5.2", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.0" } } diff --git a/tsconfig.json b/tsconfig.json index 77d0b1d..08d5705 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,7 +15,7 @@ "@/*": ["src/*"], "@bot/*": ["src/bot/*"] }, - "typeRoots": ["./node_modules/@types", "src/types"] + "types": ["vitest/globals"] }, "include": ["src/**/*.ts"], "exclude": ["node_modules"] diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..f5855d5 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vitest/config' +import tsconfigPaths from 'vite-tsconfig-paths' + +export default defineConfig({ + plugins: [tsconfigPaths()], + test: { + globals: true, + }, +}) From 691d868538ac9f42bc84f5c043c25847ca2a1998 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 3 Jul 2024 00:08:22 +0200 Subject: [PATCH 047/152] test!: fix specs adapting to vitest --- src/__tests__/bot/setup.spec.ts | 101 +++++++++++++++++++++------- src/__tests__/getItem.spec.ts | 5 +- src/__tests__/getTopStories.spec.ts | 5 +- src/bot.ts | 8 --- src/preference/setup.ts | 23 +++++-- src/utils/testHelpers.ts | 42 +++--------- vitest.config.ts | 3 + 7 files changed, 111 insertions(+), 76 deletions(-) diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index dc11502..0c5d886 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -1,5 +1,5 @@ -import setup from '@/preference/setup' import { PreferencesContext, SessionData } from '@/types/sessionData' + import { botInfo, chat, @@ -12,9 +12,20 @@ import { Bot, MemorySessionStorage, session } from 'grammy' import * as R from 'ramda' +var storageAdapter!: MemorySessionStorage | undefined + +vi.mock('@/utils', () => ({ + getSessionAdapter: vi.fn(() => { + storageAdapter = new MemorySessionStorage() + return storageAdapter + }), +})) + +import setup from '@/preference/setup' + describe('setup', () => { it('saves preferences', async () => { - const storageAdapter = await testSetupConversation( + await testSetupConversation( [ { update_id: 1, @@ -37,10 +48,8 @@ describe('setup', () => { }, }, ], - [], setup, ) - const preferences = storageAdapter.read( R.toString(R.prop('id', chat)), )?.preferences @@ -50,7 +59,7 @@ describe('setup', () => { }) it('does not save duplicate preferences', async () => { - const storageAdapter = await testSetupConversation( + await testSetupConversation( [ { update_id: 1, @@ -73,7 +82,6 @@ describe('setup', () => { }, }, ], - [], setup, ) @@ -82,6 +90,7 @@ describe('setup', () => { )?.preferences expect(preferences).toHaveLength(1) + expect(preferences).toEqual(['test_preference']) }) }) @@ -90,21 +99,6 @@ describe('reset', () => { it('clears preferences', async () => { const bot = new Bot('dummy', { botInfo }) - let storageAdapter: MemorySessionStorage - - bot.use( - session({ - initial: (): SessionData => ({ - preferences: [], - }), - storage: (() => { - storageAdapter = new MemorySessionStorage() - return storageAdapter - })(), - }), - conversations(), - ) - bot.use(setup) bot.api.config.use(() => @@ -118,7 +112,7 @@ describe('reset', () => { await bot.handleUpdate(slashCommand('reset')) await bot.handleUpdate(slashCommand('cancel')) - const preferences = storageAdapter.read( + const preferences = storageAdapter!.read( R.toString(R.prop('id', chat)), )?.preferences @@ -136,10 +130,71 @@ describe('reset', () => { }, }) - const updatedPreferences = storageAdapter.read( + const updatedPreferences = storageAdapter!.read( R.toString(R.prop('id', chat)), )?.preferences expect(updatedPreferences).toHaveLength(0) }) }) + +/* +describe('list', () => { + beforeEach(async () => { + outgoingRequests = [] + bot.api.config.use((_, method, payload) => { + outgoingRequests.push({ method, payload }) + return Promise.resolve({ ok: true, result: {} as any }) + }) + + bot.botInfo = botInfo + + await bot.init() + }) + + it('lists preferences', async () => { + await bot.handleUpdate(slashCommand('setup')) + await bot.handleUpdate({ + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }) + + await bot.handleUpdate({ + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'some_other_preference', + }, + }) + + await bot.handleUpdate(slashCommand('list')) + + const listRequest = R.last(outgoingRequests) + + const payload = R.prop('payload', listRequest!) + expect(payload).toHaveProperty( + 'text', + 'test_preference\nsome_other_preference', + ) + }) + + it('does not list preferences if there are none', async () => { + await bot.handleUpdate(slashCommand('list')) + + const listRequest = R.last(outgoingRequests) + + const payload = R.prop('payload', listRequest!) + expect(payload).toHaveProperty('text', '') + }) +}) + +*/ diff --git a/src/__tests__/getItem.spec.ts b/src/__tests__/getItem.spec.ts index 3dfe99a..1619fcf 100644 --- a/src/__tests__/getItem.spec.ts +++ b/src/__tests__/getItem.spec.ts @@ -1,9 +1,8 @@ import { getItem } from '@/api' -import { jest } from '@jest/globals' describe('getItem', () => { it('should return an item', async () => { - jest.spyOn(global, 'fetch').mockResolvedValue({ + vi.spyOn(global, 'fetch').mockResolvedValue({ json: () => Promise.resolve({ by: 'dhouston', @@ -32,7 +31,7 @@ describe('getItem', () => { }) it('should handle not found item', async () => { - jest.spyOn(global, 'fetch').mockResolvedValue({ + vi.spyOn(global, 'fetch').mockResolvedValue({ json: () => Promise.resolve(null), } as any) const item = await getItem(-1) diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts index f6a0105..f24cadc 100644 --- a/src/__tests__/getTopStories.spec.ts +++ b/src/__tests__/getTopStories.spec.ts @@ -1,13 +1,12 @@ import { getTopStories } from '@/api' import { faker } from '@faker-js/faker' -import { jest } from '@jest/globals' describe('getTopStories', () => { it('should return an array of top stories', async () => { - jest.spyOn(global, 'fetch').mockResolvedValueOnce({ + vi.spyOn(global, 'fetch').mockResolvedValueOnce({ json: () => Promise.resolve( - faker.helpers.multiple(faker.number.int, { count: 500 }) + faker.helpers.multiple(faker.number.int, { count: 500 }), ), } as any) diff --git a/src/bot.ts b/src/bot.ts index 4ad9ba4..264879c 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -11,14 +11,6 @@ bot.command('help', (ctx) => ctx.reply('Bot is under construction. Please wait for the next update.'), ) -bot.use( - session({ - initial: () => ({ preferences: [] }), - storage: getSessionAdapter(bot.token!), - }), - conversations(), -) - bot.use(setup) bot.catch((err) => console.error(err)) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 216bbf2..6639c13 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,9 +1,11 @@ import { ConversationContext, PreferencesContext } from '@/types/sessionData' -import { createConversation } from '@grammyjs/conversations' -import { Composer } from 'grammy' +import { getSessionAdapter } from '@/utils' +import { conversations, createConversation } from '@grammyjs/conversations' +import { Composer, session } from 'grammy' import * as R from 'ramda' const composer = new Composer() + const preferencesBuilder = async ( conversation: ConversationContext, ctx: PreferencesContext, @@ -26,20 +28,27 @@ const preferencesBuilder = async ( } } -composer.use(createConversation(preferencesBuilder, 'preferences')) +composer.use( + session({ + initial: () => ({ preferences: [] }), + storage: getSessionAdapter(process.env.BOT_TOKEN!), + }), + conversations(), + createConversation(preferencesBuilder, 'preferences'), +) + composer.command('setup', async (ctx) => { await ctx.conversation.enter('preferences') }) composer.command('reset', (ctx) => { - console.log('reset entered') ctx.session.preferences = [] ctx.reply('Preferences reset.') }) -// composer.command('list', (ctx) => -// ctx.reply(R.join('\n', ctx.session.preferences)), -// ) +composer.command('list', (ctx) => + ctx.reply(R.join('\n', ctx.session.preferences)), +) composer.on('message', (ctx) => { ctx.reply('Please use the /setup command to setup your preferences.') }) diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index 622b675..529e9d4 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -1,4 +1,6 @@ +import setup from '@/preference/setup' import { PreferencesContext, SessionData } from '@/types/sessionData' +import { getSessionAdapter } from '@/utils' import { faker } from '@faker-js/faker' import { conversations } from '@grammyjs/conversations' import { @@ -12,7 +14,7 @@ import { import { ApiResponse, Chat, Update, User } from 'grammy/types' import * as R from 'ramda' -interface ApiCall { +export interface ApiCall { method: M result: Awaited> | ApiResponse } @@ -59,42 +61,18 @@ export const slashCommand = (command: AvailableCommands): Update => ({ export const testSetupConversation = async ( update: Update | Update[] = [], - result: ApiCall | ApiCall[] = [], mw: Middleware = new Composer(), ) => { const updates = Array.isArray(update) ? update : [update] - const results = Array.isArray(result) ? result : [result] + const results: Array<{ + method: string + payload: any + }> = [] const bot = new Bot('dummy', { botInfo }) - let storageAdapter: MemorySessionStorage - - bot.use( - session({ - initial: (): SessionData => ({ preferences: [] }), - storage: (() => { - storageAdapter = new MemorySessionStorage() - return storageAdapter - })(), - }), - conversations(), - ) - - bot.api.config.use((_prev, _method) => { - // TODO: not working yet - // const { result } = results.splice( - // results.findIndex((res) => res.method === method), - // 1, - // )[0] - - // return Promise.resolve( - // typeof result === 'object' && result !== null && 'ok' in result - // ? result - // : { - // ok: true, - // result: result as any, - // }, - // ) + bot.api.config.use((_prev, method, payload) => { + results.push({ method, payload }) return Promise.resolve({ ok: true, result: {} as any }) }) @@ -107,5 +85,5 @@ export const testSetupConversation = async ( await bot.handleUpdate(slashCommand('cancel')) - return storageAdapter + return results } diff --git a/vitest.config.ts b/vitest.config.ts index f5855d5..435aa66 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -5,5 +5,8 @@ export default defineConfig({ plugins: [tsconfigPaths()], test: { globals: true, + sequence: { + hooks: 'list', + }, }, }) From 331af4c16d700ce5e2759219fb5b94a98c27c75a Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 3 Jul 2024 00:46:18 +0200 Subject: [PATCH 048/152] feat: add list preferences cmd --- src/__tests__/bot/setup.spec.ts | 146 +++++++++++++++----------------- src/bot.ts | 4 +- src/preference/setup.ts | 9 +- src/utils/testHelpers.ts | 10 ++- 4 files changed, 86 insertions(+), 83 deletions(-) diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts index 0c5d886..ec18417 100644 --- a/src/__tests__/bot/setup.spec.ts +++ b/src/__tests__/bot/setup.spec.ts @@ -1,14 +1,13 @@ -import { PreferencesContext, SessionData } from '@/types/sessionData' +import { SessionData } from '@/types/sessionData' import { - botInfo, chat, from, slashCommand, testSetupConversation, } from '@/utils/testHelpers' -import { conversations } from '@grammyjs/conversations' -import { Bot, MemorySessionStorage, session } from 'grammy' + +import { MemorySessionStorage } from 'grammy' import * as R from 'ramda' @@ -23,6 +22,10 @@ vi.mock('@/utils', () => ({ import setup from '@/preference/setup' +beforeEach(() => { + vi.resetAllMocks() +}) + describe('setup', () => { it('saves preferences', async () => { await testSetupConversation( @@ -48,9 +51,10 @@ describe('setup', () => { }, }, ], + [], setup, ) - const preferences = storageAdapter.read( + const preferences = storageAdapter!.read( R.toString(R.prop('id', chat)), )?.preferences @@ -82,10 +86,11 @@ describe('setup', () => { }, }, ], + [], setup, ) - const preferences = storageAdapter.read( + const preferences = storageAdapter!.read( R.toString(R.prop('id', chat)), )?.preferences @@ -97,39 +102,33 @@ describe('setup', () => { describe('reset', () => { it('clears preferences', async () => { - const bot = new Bot('dummy', { botInfo }) - - bot.use(setup) - - bot.api.config.use(() => - Promise.resolve({ - ok: true, - result: {} as any, - }), + await testSetupConversation( + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'some_other_preference', + }, + }, + ], + slashCommand('reset'), + setup, ) - await bot.handleUpdate(slashCommand('setup')) - await bot.handleUpdate(slashCommand('reset')) - await bot.handleUpdate(slashCommand('cancel')) - - const preferences = storageAdapter!.read( - R.toString(R.prop('id', chat)), - )?.preferences - - expect(preferences).toHaveLength(1) - - await bot.handleUpdate({ - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: '/reset', - entities: [{ type: 'bot_command', offset: 0, length: '/reset'.length }], - }, - }) - const updatedPreferences = storageAdapter!.read( R.toString(R.prop('id', chat)), )?.preferences @@ -138,45 +137,34 @@ describe('reset', () => { }) }) -/* describe('list', () => { - beforeEach(async () => { - outgoingRequests = [] - bot.api.config.use((_, method, payload) => { - outgoingRequests.push({ method, payload }) - return Promise.resolve({ ok: true, result: {} as any }) - }) - - bot.botInfo = botInfo - - await bot.init() - }) - it('lists preferences', async () => { - await bot.handleUpdate(slashCommand('setup')) - await bot.handleUpdate({ - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: 'test_preference', - }, - }) - - await bot.handleUpdate({ - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: 'some_other_preference', - }, - }) - - await bot.handleUpdate(slashCommand('list')) + const outgoingRequests = await testSetupConversation( + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'some_other_preference', + }, + }, + ], + slashCommand('list'), + setup, + ) const listRequest = R.last(outgoingRequests) @@ -188,13 +176,15 @@ describe('list', () => { }) it('does not list preferences if there are none', async () => { - await bot.handleUpdate(slashCommand('list')) + const outgoingRequests = await testSetupConversation( + [], + slashCommand('list'), + setup, + ) const listRequest = R.last(outgoingRequests) const payload = R.prop('payload', listRequest!) - expect(payload).toHaveProperty('text', '') + expect(payload).toHaveProperty('text', 'No preferences set.') }) }) - -*/ diff --git a/src/bot.ts b/src/bot.ts index 264879c..f3d6e7b 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,9 +1,7 @@ -import { Bot, session } from 'grammy' +import { Bot } from 'grammy' import setup from './preference/setup' import { BOT_TOKEN } from './config' import { PreferencesContext } from './types/sessionData' -import { getSessionAdapter } from './utils' -import { conversations } from '@grammyjs/conversations' const bot = new Bot(BOT_TOKEN!) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 6639c13..c2e6585 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -47,7 +47,14 @@ composer.command('reset', (ctx) => { }) composer.command('list', (ctx) => - ctx.reply(R.join('\n', ctx.session.preferences)), + ctx.reply( + R.ifElse( + R.isEmpty, + R.always('No preferences set.'), + + R.join('\n'), + )(ctx.session.preferences), + ), ) composer.on('message', (ctx) => { ctx.reply('Please use the /setup command to setup your preferences.') diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index 529e9d4..91b18b0 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -1,4 +1,3 @@ -import setup from '@/preference/setup' import { PreferencesContext, SessionData } from '@/types/sessionData' import { getSessionAdapter } from '@/utils' import { faker } from '@faker-js/faker' @@ -61,9 +60,14 @@ export const slashCommand = (command: AvailableCommands): Update => ({ export const testSetupConversation = async ( update: Update | Update[] = [], + afterCancel: Update | Update[] = [], mw: Middleware = new Composer(), ) => { const updates = Array.isArray(update) ? update : [update] + const afterCancelUpdates = Array.isArray(afterCancel) + ? afterCancel + : [afterCancel] + const results: Array<{ method: string payload: any @@ -85,5 +89,9 @@ export const testSetupConversation = async ( await bot.handleUpdate(slashCommand('cancel')) + for (const update of afterCancelUpdates) { + await bot.handleUpdate(update) + } + return results } From ee1f180895febffada4a542c2087f13fb0af3447 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 3 Jul 2024 00:59:50 +0200 Subject: [PATCH 049/152] chore: add dependabot --- .github/dependabot.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..ea06357 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,14 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + target-branch: "develop" + schedule: + interval: "daily" + labels: + - "npm dependencies" From 0974dbc6143c8de0a31326945866b5995d71ec69 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 3 Jul 2024 18:32:31 +0200 Subject: [PATCH 050/152] chore!: add deno and remove type definitions and tsconfig --- .gitignore | 4 +- .tool-versions | 2 +- deno.jsonc | 24 + deno.lock | 1751 ++++++++++++++++++++++++++++++++++++++ deps.ts | 0 env.d.ts | 5 - src/bot.ts | 12 +- src/config.ts | 9 +- src/preference/setup.ts | 10 +- src/types/sessionData.ts | 7 +- src/utils.ts | 5 +- tsconfig.build.json | 7 - tsconfig.json | 22 - 13 files changed, 1805 insertions(+), 53 deletions(-) create mode 100644 deno.jsonc create mode 100644 deno.lock create mode 100644 deps.ts delete mode 100644 tsconfig.build.json delete mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 6fba622..81dcd21 100644 --- a/.gitignore +++ b/.gitignore @@ -130,4 +130,6 @@ dist .yarn/install-state.gz .pnp.* -.prettierrc \ No newline at end of file +.prettierrc + +.vscode \ No newline at end of file diff --git a/.tool-versions b/.tool-versions index 02fda06..77131ab 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 20.14.0 +deno 1.44.4 diff --git a/deno.jsonc b/deno.jsonc new file mode 100644 index 0000000..3971ce5 --- /dev/null +++ b/deno.jsonc @@ -0,0 +1,24 @@ +{ + "imports": { + "@/": "./src/", + "@bot/": "./src/bot/", + "@std/dotenv": "jsr:@std/dotenv@^0.224.2" + }, + "fmt": { + "lineWidth": 80, + "include": ["src/**/*.ts"], + "semiColons": false, + "singleQuote": true + }, + "tasks": { + "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", + "test": "deno test" + }, + "compilerOptions": { + "lib": ["deno.window", "DOM", "DOM.Iterable", "ESNext"], + "strict": true, + "allowJs": true, + "checkJs": true, + "types": ["vitest/globals"] + } +} diff --git a/deno.lock b/deno.lock new file mode 100644 index 0000000..7861828 --- /dev/null +++ b/deno.lock @@ -0,0 +1,1751 @@ +{ + "version": "3", + "packages": { + "specifiers": { + "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", + "npm:@dotenvx/dotenvx@^1.5.0": "npm:@dotenvx/dotenvx@1.5.0_picomatch@3.0.1", + "npm:@faker-js/faker@^8.4.1": "npm:@faker-js/faker@8.4.1", + "npm:@grammyjs/conversations@^1.2.0": "npm:@grammyjs/conversations@1.2.0_grammy@1.26.0", + "npm:@grammyjs/storage-free@^2.4.2": "npm:@grammyjs/storage-free@2.4.2", + "npm:@trivago/prettier-plugin-sort-imports@^4.3.0": "npm:@trivago/prettier-plugin-sort-imports@4.3.0_prettier@3.3.2", + "npm:@types/node-fetch@^2.6.11": "npm:@types/node-fetch@2.6.11", + "npm:@types/ramda@^0.30.0": "npm:@types/ramda@0.30.0", + "npm:esrun@^3.2.26": "npm:esrun@3.2.26", + "npm:grammy@^1.25.0": "npm:grammy@1.26.0", + "npm:ramda@^0.30.1": "npm:ramda@0.30.1", + "npm:typescript@^5.5.2": "npm:typescript@5.5.3", + "npm:vite-tsconfig-paths@^4.3.2": "npm:vite-tsconfig-paths@4.3.2_typescript@5.5.3", + "npm:vitest@^1.6.0": "npm:vitest@1.6.0" + }, + "jsr": { + "@std/dotenv@0.224.2": { + "integrity": "29081695357e4534696c9e986b2560be29c141ccf52daa32b6c20ff5b5c64ab9" + } + }, + "npm": { + "@babel/code-frame@7.24.7": { + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dependencies": { + "@babel/highlight": "@babel/highlight@7.24.7", + "picocolors": "picocolors@1.0.1" + } + }, + "@babel/generator@7.17.7": { + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dependencies": { + "@babel/types": "@babel/types@7.17.0", + "jsesc": "jsesc@2.5.2", + "source-map": "source-map@0.5.7" + } + }, + "@babel/generator@7.24.7": { + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dependencies": { + "@babel/types": "@babel/types@7.24.7", + "@jridgewell/gen-mapping": "@jridgewell/gen-mapping@0.3.5", + "@jridgewell/trace-mapping": "@jridgewell/trace-mapping@0.3.25", + "jsesc": "jsesc@2.5.2" + } + }, + "@babel/helper-environment-visitor@7.24.7": { + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "@babel/types@7.24.7" + } + }, + "@babel/helper-function-name@7.24.7": { + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dependencies": { + "@babel/template": "@babel/template@7.24.7", + "@babel/types": "@babel/types@7.24.7" + } + }, + "@babel/helper-hoist-variables@7.24.7": { + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dependencies": { + "@babel/types": "@babel/types@7.24.7" + } + }, + "@babel/helper-split-export-declaration@7.24.7": { + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dependencies": { + "@babel/types": "@babel/types@7.24.7" + } + }, + "@babel/helper-string-parser@7.24.7": { + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dependencies": {} + }, + "@babel/helper-validator-identifier@7.24.7": { + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dependencies": {} + }, + "@babel/highlight@7.24.7": { + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": { + "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.24.7", + "chalk": "chalk@2.4.2", + "js-tokens": "js-tokens@4.0.0", + "picocolors": "picocolors@1.0.1" + } + }, + "@babel/parser@7.24.7": { + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dependencies": {} + }, + "@babel/template@7.24.7": { + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dependencies": { + "@babel/code-frame": "@babel/code-frame@7.24.7", + "@babel/parser": "@babel/parser@7.24.7", + "@babel/types": "@babel/types@7.24.7" + } + }, + "@babel/traverse@7.23.2": { + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dependencies": { + "@babel/code-frame": "@babel/code-frame@7.24.7", + "@babel/generator": "@babel/generator@7.24.7", + "@babel/helper-environment-visitor": "@babel/helper-environment-visitor@7.24.7", + "@babel/helper-function-name": "@babel/helper-function-name@7.24.7", + "@babel/helper-hoist-variables": "@babel/helper-hoist-variables@7.24.7", + "@babel/helper-split-export-declaration": "@babel/helper-split-export-declaration@7.24.7", + "@babel/parser": "@babel/parser@7.24.7", + "@babel/types": "@babel/types@7.24.7", + "debug": "debug@4.3.5", + "globals": "globals@11.12.0" + } + }, + "@babel/types@7.17.0": { + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dependencies": { + "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.24.7", + "to-fast-properties": "to-fast-properties@2.0.0" + } + }, + "@babel/types@7.24.7": { + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dependencies": { + "@babel/helper-string-parser": "@babel/helper-string-parser@7.24.7", + "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.24.7", + "to-fast-properties": "to-fast-properties@2.0.0" + } + }, + "@clack/core@0.3.4": { + "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", + "dependencies": { + "picocolors": "picocolors@1.0.1", + "sisteransi": "sisteransi@1.0.5" + } + }, + "@colors/colors@1.6.0": { + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "dependencies": {} + }, + "@dabh/diagnostics@2.0.3": { + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "colorspace@1.1.4", + "enabled": "enabled@2.0.0", + "kuler": "kuler@2.0.0" + } + }, + "@deno/shim-deno-test@0.4.0": { + "integrity": "sha512-oYWcD7CpERZy/TXMTM9Tgh1HD/POHlbY9WpzmAk+5H8DohcxG415Qws8yLGlim3EaKBT2v3lJv01x4G0BosnaQ==", + "dependencies": {} + }, + "@deno/shim-deno@0.16.1": { + "integrity": "sha512-s9v0kzF5bm/o9TgdwvsraHx6QNllYrXXmKzgOG2lh4LFXnVMr2gpjK/c/ve6EflQn1MqImcWmVD8HAv5ahuuZQ==", + "dependencies": { + "@deno/shim-deno-test": "@deno/shim-deno-test@0.4.0", + "which": "which@2.0.2" + } + }, + "@digitak/grubber@3.1.4": { + "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==", + "dependencies": {} + }, + "@dotenvx/dotenvx@1.5.0_picomatch@3.0.1": { + "integrity": "sha512-b+LLl13eGQgXnhe6jb3smZrByVrUm+R+kfy5e15Gq8PqROcU35Txz25PHUPLrAvOiTQHZhIHjwF0XI9CNGVxJQ==", + "dependencies": { + "@clack/core": "@clack/core@0.3.4", + "arch": "arch@2.2.0", + "chalk": "chalk@4.1.2", + "commander": "commander@11.1.0", + "conf": "conf@10.2.0_ajv@8.16.0", + "diff": "diff@5.2.0", + "dotenv": "dotenv@16.4.5", + "eciesjs": "eciesjs@0.4.7", + "execa": "execa@5.1.1", + "fdir": "fdir@6.1.1_picomatch@3.0.1", + "ignore": "ignore@5.3.1", + "is-wsl": "is-wsl@2.2.0", + "object-treeify": "object-treeify@1.1.33", + "open": "open@8.4.2", + "picomatch": "picomatch@3.0.1", + "undici": "undici@5.28.4", + "which": "which@4.0.0", + "winston": "winston@3.13.0", + "xxhashjs": "xxhashjs@0.2.2" + } + }, + "@esbuild/aix-ppc64@0.21.5": { + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "dependencies": {} + }, + "@esbuild/android-arm64@0.17.19": { + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "dependencies": {} + }, + "@esbuild/android-arm64@0.21.5": { + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "dependencies": {} + }, + "@esbuild/android-arm@0.17.19": { + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "dependencies": {} + }, + "@esbuild/android-arm@0.21.5": { + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "dependencies": {} + }, + "@esbuild/android-x64@0.17.19": { + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "dependencies": {} + }, + "@esbuild/android-x64@0.21.5": { + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "dependencies": {} + }, + "@esbuild/darwin-arm64@0.17.19": { + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "dependencies": {} + }, + "@esbuild/darwin-arm64@0.21.5": { + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "dependencies": {} + }, + "@esbuild/darwin-x64@0.17.19": { + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "dependencies": {} + }, + "@esbuild/darwin-x64@0.21.5": { + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "dependencies": {} + }, + "@esbuild/freebsd-arm64@0.17.19": { + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "dependencies": {} + }, + "@esbuild/freebsd-arm64@0.21.5": { + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "dependencies": {} + }, + "@esbuild/freebsd-x64@0.17.19": { + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "dependencies": {} + }, + "@esbuild/freebsd-x64@0.21.5": { + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "dependencies": {} + }, + "@esbuild/linux-arm64@0.17.19": { + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "dependencies": {} + }, + "@esbuild/linux-arm64@0.21.5": { + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "dependencies": {} + }, + "@esbuild/linux-arm@0.17.19": { + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "dependencies": {} + }, + "@esbuild/linux-arm@0.21.5": { + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "dependencies": {} + }, + "@esbuild/linux-ia32@0.17.19": { + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "dependencies": {} + }, + "@esbuild/linux-ia32@0.21.5": { + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "dependencies": {} + }, + "@esbuild/linux-loong64@0.17.19": { + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "dependencies": {} + }, + "@esbuild/linux-loong64@0.21.5": { + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "dependencies": {} + }, + "@esbuild/linux-mips64el@0.17.19": { + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "dependencies": {} + }, + "@esbuild/linux-mips64el@0.21.5": { + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "dependencies": {} + }, + "@esbuild/linux-ppc64@0.17.19": { + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "dependencies": {} + }, + "@esbuild/linux-ppc64@0.21.5": { + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "dependencies": {} + }, + "@esbuild/linux-riscv64@0.17.19": { + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "dependencies": {} + }, + "@esbuild/linux-riscv64@0.21.5": { + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "dependencies": {} + }, + "@esbuild/linux-s390x@0.17.19": { + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "dependencies": {} + }, + "@esbuild/linux-s390x@0.21.5": { + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "dependencies": {} + }, + "@esbuild/linux-x64@0.17.19": { + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "dependencies": {} + }, + "@esbuild/linux-x64@0.21.5": { + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "dependencies": {} + }, + "@esbuild/netbsd-x64@0.17.19": { + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "dependencies": {} + }, + "@esbuild/netbsd-x64@0.21.5": { + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "dependencies": {} + }, + "@esbuild/openbsd-x64@0.17.19": { + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "dependencies": {} + }, + "@esbuild/openbsd-x64@0.21.5": { + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "dependencies": {} + }, + "@esbuild/sunos-x64@0.17.19": { + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "dependencies": {} + }, + "@esbuild/sunos-x64@0.21.5": { + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "dependencies": {} + }, + "@esbuild/win32-arm64@0.17.19": { + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "dependencies": {} + }, + "@esbuild/win32-arm64@0.21.5": { + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "dependencies": {} + }, + "@esbuild/win32-ia32@0.17.19": { + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "dependencies": {} + }, + "@esbuild/win32-ia32@0.21.5": { + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "dependencies": {} + }, + "@esbuild/win32-x64@0.17.19": { + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "dependencies": {} + }, + "@esbuild/win32-x64@0.21.5": { + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "dependencies": {} + }, + "@faker-js/faker@8.4.1": { + "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", + "dependencies": {} + }, + "@fastify/busboy@2.1.1": { + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dependencies": {} + }, + "@grammyjs/conversations@1.2.0_grammy@1.26.0": { + "integrity": "sha512-d06nGFPlcea4UqjOcxCm5rwiV74bZQVUWQl3YVQp5TwC0oCHNK+PXgqaKkVgkfcYSMyx3dADRBuBkcGt+yiyDA==", + "dependencies": { + "debug": "debug@4.3.5", + "grammy": "grammy@1.26.0", + "o-son": "o-son@1.0.4" + } + }, + "@grammyjs/storage-free@2.4.2": { + "integrity": "sha512-apyZiHXxVOZQSITt5N279WFAus8kXkYFjASmsDHeHtD9M3sGfj2RYTNmYzPCMzhymD2NGuElunhh8w4geGfwaA==", + "dependencies": { + "node-fetch": "node-fetch@2.7.0" + } + }, + "@grammyjs/types@3.10.0": { + "integrity": "sha512-TDWn0bjTzEqG5coxnbSOCOEEkeQ3RCmf6XgJ3TBBMbLmb9eyQM1Evr8XzqLwXr9IcQvHMVeQ/lS86lkvYeADvw==", + "dependencies": {} + }, + "@jest/schemas@29.6.3": { + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "@sinclair/typebox@0.27.8" + } + }, + "@jridgewell/gen-mapping@0.3.5": { + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "@jridgewell/set-array@1.2.1", + "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15", + "@jridgewell/trace-mapping": "@jridgewell/trace-mapping@0.3.25" + } + }, + "@jridgewell/resolve-uri@3.1.2": { + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dependencies": {} + }, + "@jridgewell/set-array@1.2.1": { + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dependencies": {} + }, + "@jridgewell/sourcemap-codec@1.4.15": { + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dependencies": {} + }, + "@jridgewell/trace-mapping@0.3.25": { + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "@jridgewell/resolve-uri@3.1.2", + "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15" + } + }, + "@noble/ciphers@0.5.3": { + "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "dependencies": {} + }, + "@noble/curves@1.4.2": { + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dependencies": { + "@noble/hashes": "@noble/hashes@1.4.0" + } + }, + "@noble/hashes@1.4.0": { + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dependencies": {} + }, + "@rollup/rollup-android-arm-eabi@4.18.0": { + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "dependencies": {} + }, + "@rollup/rollup-android-arm64@4.18.0": { + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "dependencies": {} + }, + "@rollup/rollup-darwin-arm64@4.18.0": { + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "dependencies": {} + }, + "@rollup/rollup-darwin-x64@4.18.0": { + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "dependencies": {} + }, + "@rollup/rollup-linux-arm-gnueabihf@4.18.0": { + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "dependencies": {} + }, + "@rollup/rollup-linux-arm-musleabihf@4.18.0": { + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "dependencies": {} + }, + "@rollup/rollup-linux-arm64-gnu@4.18.0": { + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "dependencies": {} + }, + "@rollup/rollup-linux-arm64-musl@4.18.0": { + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "dependencies": {} + }, + "@rollup/rollup-linux-powerpc64le-gnu@4.18.0": { + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "dependencies": {} + }, + "@rollup/rollup-linux-riscv64-gnu@4.18.0": { + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "dependencies": {} + }, + "@rollup/rollup-linux-s390x-gnu@4.18.0": { + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "dependencies": {} + }, + "@rollup/rollup-linux-x64-gnu@4.18.0": { + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "dependencies": {} + }, + "@rollup/rollup-linux-x64-musl@4.18.0": { + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "dependencies": {} + }, + "@rollup/rollup-win32-arm64-msvc@4.18.0": { + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "dependencies": {} + }, + "@rollup/rollup-win32-ia32-msvc@4.18.0": { + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "dependencies": {} + }, + "@rollup/rollup-win32-x64-msvc@4.18.0": { + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "dependencies": {} + }, + "@sinclair/typebox@0.27.8": { + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dependencies": {} + }, + "@trivago/prettier-plugin-sort-imports@4.3.0_prettier@3.3.2": { + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dependencies": { + "@babel/generator": "@babel/generator@7.17.7", + "@babel/parser": "@babel/parser@7.24.7", + "@babel/traverse": "@babel/traverse@7.23.2", + "@babel/types": "@babel/types@7.17.0", + "javascript-natural-sort": "javascript-natural-sort@0.7.1", + "lodash": "lodash@4.17.21", + "prettier": "prettier@3.3.2" + } + }, + "@types/estree@1.0.5": { + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dependencies": {} + }, + "@types/node-fetch@2.6.11": { + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dependencies": { + "@types/node": "@types/node@18.16.19", + "form-data": "form-data@4.0.0" + } + }, + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + }, + "@types/ramda@0.30.0": { + "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", + "dependencies": { + "types-ramda": "types-ramda@0.30.1" + } + }, + "@types/triple-beam@1.3.5": { + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "dependencies": {} + }, + "@vitest/expect@1.6.0": { + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "dependencies": { + "@vitest/spy": "@vitest/spy@1.6.0", + "@vitest/utils": "@vitest/utils@1.6.0", + "chai": "chai@4.4.1" + } + }, + "@vitest/runner@1.6.0": { + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "dependencies": { + "@vitest/utils": "@vitest/utils@1.6.0", + "p-limit": "p-limit@5.0.0", + "pathe": "pathe@1.1.2" + } + }, + "@vitest/snapshot@1.6.0": { + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "dependencies": { + "magic-string": "magic-string@0.30.10", + "pathe": "pathe@1.1.2", + "pretty-format": "pretty-format@29.7.0" + } + }, + "@vitest/spy@1.6.0": { + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", + "dependencies": { + "tinyspy": "tinyspy@2.2.1" + } + }, + "@vitest/utils@1.6.0": { + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", + "dependencies": { + "diff-sequences": "diff-sequences@29.6.3", + "estree-walker": "estree-walker@3.0.3", + "loupe": "loupe@2.3.7", + "pretty-format": "pretty-format@29.7.0" + } + }, + "abort-controller@3.0.0": { + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "event-target-shim@5.0.1" + } + }, + "acorn-walk@8.3.3": { + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dependencies": { + "acorn": "acorn@8.12.1" + } + }, + "acorn@8.12.1": { + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dependencies": {} + }, + "ajv-formats@2.1.1_ajv@8.16.0": { + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "ajv@8.16.0" + } + }, + "ajv@8.16.0": { + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dependencies": { + "fast-deep-equal": "fast-deep-equal@3.1.3", + "json-schema-traverse": "json-schema-traverse@1.0.0", + "require-from-string": "require-from-string@2.0.2", + "uri-js": "uri-js@4.4.1" + } + }, + "ansi-styles@3.2.1": { + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "color-convert@1.9.3" + } + }, + "ansi-styles@4.3.0": { + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "color-convert@2.0.1" + } + }, + "ansi-styles@5.2.0": { + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dependencies": {} + }, + "anymatch@3.1.3": { + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "normalize-path@3.0.0", + "picomatch": "picomatch@2.3.1" + } + }, + "arch@2.2.0": { + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dependencies": {} + }, + "assertion-error@1.1.0": { + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dependencies": {} + }, + "async@3.2.5": { + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dependencies": {} + }, + "asynckit@0.4.0": { + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dependencies": {} + }, + "atomically@1.7.0": { + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", + "dependencies": {} + }, + "binary-extensions@2.3.0": { + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dependencies": {} + }, + "braces@3.0.3": { + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "fill-range@7.1.1" + } + }, + "cac@6.7.14": { + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dependencies": {} + }, + "chai@4.4.1": { + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "dependencies": { + "assertion-error": "assertion-error@1.1.0", + "check-error": "check-error@1.0.3", + "deep-eql": "deep-eql@4.1.4", + "get-func-name": "get-func-name@2.0.2", + "loupe": "loupe@2.3.7", + "pathval": "pathval@1.1.1", + "type-detect": "type-detect@4.0.8" + } + }, + "chalk@2.4.2": { + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "ansi-styles@3.2.1", + "escape-string-regexp": "escape-string-regexp@1.0.5", + "supports-color": "supports-color@5.5.0" + } + }, + "chalk@4.1.2": { + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "supports-color": "supports-color@7.2.0" + } + }, + "check-error@1.0.3": { + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "get-func-name@2.0.2" + } + }, + "chokidar@3.6.0": { + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "anymatch@3.1.3", + "braces": "braces@3.0.3", + "fsevents": "fsevents@2.3.3", + "glob-parent": "glob-parent@5.1.2", + "is-binary-path": "is-binary-path@2.1.0", + "is-glob": "is-glob@4.0.3", + "normalize-path": "normalize-path@3.0.0", + "readdirp": "readdirp@3.6.0" + } + }, + "color-convert@1.9.3": { + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "color-name@1.1.3" + } + }, + "color-convert@2.0.1": { + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "color-name@1.1.4" + } + }, + "color-name@1.1.3": { + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dependencies": {} + }, + "color-name@1.1.4": { + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dependencies": {} + }, + "color-string@1.9.1": { + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "color-name@1.1.4", + "simple-swizzle": "simple-swizzle@0.2.2" + } + }, + "color@3.2.1": { + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "color-convert@1.9.3", + "color-string": "color-string@1.9.1" + } + }, + "colorspace@1.1.4": { + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "color@3.2.1", + "text-hex": "text-hex@1.0.0" + } + }, + "combined-stream@1.0.8": { + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "delayed-stream@1.0.0" + } + }, + "commander@11.1.0": { + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dependencies": {} + }, + "conf@10.2.0_ajv@8.16.0": { + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", + "dependencies": { + "ajv": "ajv@8.16.0", + "ajv-formats": "ajv-formats@2.1.1_ajv@8.16.0", + "atomically": "atomically@1.7.0", + "debounce-fn": "debounce-fn@4.0.0", + "dot-prop": "dot-prop@6.0.1", + "env-paths": "env-paths@2.2.1", + "json-schema-typed": "json-schema-typed@7.0.3", + "onetime": "onetime@5.1.2", + "pkg-up": "pkg-up@3.1.0", + "semver": "semver@7.6.2" + } + }, + "confbox@0.1.7": { + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", + "dependencies": {} + }, + "cross-spawn@7.0.3": { + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "path-key@3.1.1", + "shebang-command": "shebang-command@2.0.0", + "which": "which@2.0.2" + } + }, + "cuint@0.2.2": { + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dependencies": {} + }, + "debounce-fn@4.0.0": { + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "dependencies": { + "mimic-fn": "mimic-fn@3.1.0" + } + }, + "debug@4.3.5": { + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "ms@2.1.2" + } + }, + "deep-eql@4.1.4": { + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dependencies": { + "type-detect": "type-detect@4.0.8" + } + }, + "define-lazy-prop@2.0.0": { + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dependencies": {} + }, + "delayed-stream@1.0.0": { + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dependencies": {} + }, + "diff-sequences@29.6.3": { + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dependencies": {} + }, + "diff@5.2.0": { + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dependencies": {} + }, + "dot-prop@6.0.1": { + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "is-obj@2.0.0" + } + }, + "dotenv@16.4.5": { + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dependencies": {} + }, + "eciesjs@0.4.7": { + "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", + "dependencies": { + "@noble/ciphers": "@noble/ciphers@0.5.3", + "@noble/curves": "@noble/curves@1.4.2", + "@noble/hashes": "@noble/hashes@1.4.0" + } + }, + "enabled@2.0.0": { + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dependencies": {} + }, + "env-paths@2.2.1": { + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dependencies": {} + }, + "esbuild@0.17.19": { + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dependencies": { + "@esbuild/android-arm": "@esbuild/android-arm@0.17.19", + "@esbuild/android-arm64": "@esbuild/android-arm64@0.17.19", + "@esbuild/android-x64": "@esbuild/android-x64@0.17.19", + "@esbuild/darwin-arm64": "@esbuild/darwin-arm64@0.17.19", + "@esbuild/darwin-x64": "@esbuild/darwin-x64@0.17.19", + "@esbuild/freebsd-arm64": "@esbuild/freebsd-arm64@0.17.19", + "@esbuild/freebsd-x64": "@esbuild/freebsd-x64@0.17.19", + "@esbuild/linux-arm": "@esbuild/linux-arm@0.17.19", + "@esbuild/linux-arm64": "@esbuild/linux-arm64@0.17.19", + "@esbuild/linux-ia32": "@esbuild/linux-ia32@0.17.19", + "@esbuild/linux-loong64": "@esbuild/linux-loong64@0.17.19", + "@esbuild/linux-mips64el": "@esbuild/linux-mips64el@0.17.19", + "@esbuild/linux-ppc64": "@esbuild/linux-ppc64@0.17.19", + "@esbuild/linux-riscv64": "@esbuild/linux-riscv64@0.17.19", + "@esbuild/linux-s390x": "@esbuild/linux-s390x@0.17.19", + "@esbuild/linux-x64": "@esbuild/linux-x64@0.17.19", + "@esbuild/netbsd-x64": "@esbuild/netbsd-x64@0.17.19", + "@esbuild/openbsd-x64": "@esbuild/openbsd-x64@0.17.19", + "@esbuild/sunos-x64": "@esbuild/sunos-x64@0.17.19", + "@esbuild/win32-arm64": "@esbuild/win32-arm64@0.17.19", + "@esbuild/win32-ia32": "@esbuild/win32-ia32@0.17.19", + "@esbuild/win32-x64": "@esbuild/win32-x64@0.17.19" + } + }, + "esbuild@0.21.5": { + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dependencies": { + "@esbuild/aix-ppc64": "@esbuild/aix-ppc64@0.21.5", + "@esbuild/android-arm": "@esbuild/android-arm@0.21.5", + "@esbuild/android-arm64": "@esbuild/android-arm64@0.21.5", + "@esbuild/android-x64": "@esbuild/android-x64@0.21.5", + "@esbuild/darwin-arm64": "@esbuild/darwin-arm64@0.21.5", + "@esbuild/darwin-x64": "@esbuild/darwin-x64@0.21.5", + "@esbuild/freebsd-arm64": "@esbuild/freebsd-arm64@0.21.5", + "@esbuild/freebsd-x64": "@esbuild/freebsd-x64@0.21.5", + "@esbuild/linux-arm": "@esbuild/linux-arm@0.21.5", + "@esbuild/linux-arm64": "@esbuild/linux-arm64@0.21.5", + "@esbuild/linux-ia32": "@esbuild/linux-ia32@0.21.5", + "@esbuild/linux-loong64": "@esbuild/linux-loong64@0.21.5", + "@esbuild/linux-mips64el": "@esbuild/linux-mips64el@0.21.5", + "@esbuild/linux-ppc64": "@esbuild/linux-ppc64@0.21.5", + "@esbuild/linux-riscv64": "@esbuild/linux-riscv64@0.21.5", + "@esbuild/linux-s390x": "@esbuild/linux-s390x@0.21.5", + "@esbuild/linux-x64": "@esbuild/linux-x64@0.21.5", + "@esbuild/netbsd-x64": "@esbuild/netbsd-x64@0.21.5", + "@esbuild/openbsd-x64": "@esbuild/openbsd-x64@0.21.5", + "@esbuild/sunos-x64": "@esbuild/sunos-x64@0.21.5", + "@esbuild/win32-arm64": "@esbuild/win32-arm64@0.21.5", + "@esbuild/win32-ia32": "@esbuild/win32-ia32@0.21.5", + "@esbuild/win32-x64": "@esbuild/win32-x64@0.21.5" + } + }, + "escape-string-regexp@1.0.5": { + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dependencies": {} + }, + "esrun@3.2.26": { + "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", + "dependencies": { + "@digitak/grubber": "@digitak/grubber@3.1.4", + "chokidar": "chokidar@3.6.0", + "esbuild": "esbuild@0.17.19" + } + }, + "estree-walker@3.0.3": { + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "@types/estree@1.0.5" + } + }, + "event-target-shim@5.0.1": { + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dependencies": {} + }, + "execa@5.1.1": { + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "cross-spawn@7.0.3", + "get-stream": "get-stream@6.0.1", + "human-signals": "human-signals@2.1.0", + "is-stream": "is-stream@2.0.1", + "merge-stream": "merge-stream@2.0.0", + "npm-run-path": "npm-run-path@4.0.1", + "onetime": "onetime@5.1.2", + "signal-exit": "signal-exit@3.0.7", + "strip-final-newline": "strip-final-newline@2.0.0" + } + }, + "execa@8.0.1": { + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "cross-spawn@7.0.3", + "get-stream": "get-stream@8.0.1", + "human-signals": "human-signals@5.0.0", + "is-stream": "is-stream@3.0.0", + "merge-stream": "merge-stream@2.0.0", + "npm-run-path": "npm-run-path@5.3.0", + "onetime": "onetime@6.0.0", + "signal-exit": "signal-exit@4.1.0", + "strip-final-newline": "strip-final-newline@3.0.0" + } + }, + "fast-deep-equal@3.1.3": { + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dependencies": {} + }, + "fdir@6.1.1_picomatch@3.0.1": { + "integrity": "sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==", + "dependencies": { + "picomatch": "picomatch@3.0.1" + } + }, + "fecha@4.2.3": { + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dependencies": {} + }, + "fill-range@7.1.1": { + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "to-regex-range@5.0.1" + } + }, + "find-up@3.0.0": { + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "locate-path@3.0.0" + } + }, + "fn.name@1.1.0": { + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dependencies": {} + }, + "form-data@4.0.0": { + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "asynckit@0.4.0", + "combined-stream": "combined-stream@1.0.8", + "mime-types": "mime-types@2.1.35" + } + }, + "fsevents@2.3.3": { + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dependencies": {} + }, + "get-func-name@2.0.2": { + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dependencies": {} + }, + "get-stream@6.0.1": { + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dependencies": {} + }, + "get-stream@8.0.1": { + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dependencies": {} + }, + "glob-parent@5.1.2": { + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "is-glob@4.0.3" + } + }, + "globals@11.12.0": { + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dependencies": {} + }, + "globrex@0.1.2": { + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dependencies": {} + }, + "grammy@1.26.0": { + "integrity": "sha512-jrXKDU8UzcQaecteJxuXO80trAKkbmFhaTKIVIAyS/9pLxUyqaK98XjOJjL6t6b7cnLydJtYsAkRpkQ/TUxTrQ==", + "dependencies": { + "@grammyjs/types": "@grammyjs/types@3.10.0", + "abort-controller": "abort-controller@3.0.0", + "debug": "debug@4.3.5", + "node-fetch": "node-fetch@2.7.0" + } + }, + "has-flag@3.0.0": { + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dependencies": {} + }, + "has-flag@4.0.0": { + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dependencies": {} + }, + "human-signals@2.1.0": { + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dependencies": {} + }, + "human-signals@5.0.0": { + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dependencies": {} + }, + "ignore@5.3.1": { + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dependencies": {} + }, + "inherits@2.0.4": { + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dependencies": {} + }, + "is-arrayish@0.3.2": { + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dependencies": {} + }, + "is-binary-path@2.1.0": { + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "binary-extensions@2.3.0" + } + }, + "is-docker@2.2.1": { + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dependencies": {} + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dependencies": {} + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "is-extglob@2.1.1" + } + }, + "is-number@7.0.0": { + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dependencies": {} + }, + "is-obj@2.0.0": { + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dependencies": {} + }, + "is-stream@2.0.1": { + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dependencies": {} + }, + "is-stream@3.0.0": { + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dependencies": {} + }, + "is-wsl@2.2.0": { + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "is-docker@2.2.1" + } + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dependencies": {} + }, + "isexe@3.1.1": { + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dependencies": {} + }, + "javascript-natural-sort@0.7.1": { + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dependencies": {} + }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dependencies": {} + }, + "js-tokens@9.0.0": { + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dependencies": {} + }, + "jsesc@2.5.2": { + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dependencies": {} + }, + "json-schema-traverse@1.0.0": { + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dependencies": {} + }, + "json-schema-typed@7.0.3": { + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", + "dependencies": {} + }, + "kuler@2.0.0": { + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dependencies": {} + }, + "local-pkg@0.5.0": { + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dependencies": { + "mlly": "mlly@1.7.1", + "pkg-types": "pkg-types@1.1.3" + } + }, + "locate-path@3.0.0": { + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "p-locate@3.0.0", + "path-exists": "path-exists@3.0.0" + } + }, + "lodash@4.17.21": { + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dependencies": {} + }, + "logform@2.6.0": { + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "dependencies": { + "@colors/colors": "@colors/colors@1.6.0", + "@types/triple-beam": "@types/triple-beam@1.3.5", + "fecha": "fecha@4.2.3", + "ms": "ms@2.1.2", + "safe-stable-stringify": "safe-stable-stringify@2.4.3", + "triple-beam": "triple-beam@1.4.1" + } + }, + "loupe@2.3.7": { + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "get-func-name@2.0.2" + } + }, + "magic-string@0.30.10": { + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15" + } + }, + "merge-stream@2.0.0": { + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dependencies": {} + }, + "mime-db@1.52.0": { + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dependencies": {} + }, + "mime-types@2.1.35": { + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "mime-db@1.52.0" + } + }, + "mimic-fn@2.1.0": { + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dependencies": {} + }, + "mimic-fn@3.1.0": { + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dependencies": {} + }, + "mimic-fn@4.0.0": { + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dependencies": {} + }, + "mlly@1.7.1": { + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dependencies": { + "acorn": "acorn@8.12.1", + "pathe": "pathe@1.1.2", + "pkg-types": "pkg-types@1.1.3", + "ufo": "ufo@1.5.3" + } + }, + "ms@2.1.2": { + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dependencies": {} + }, + "nanoid@3.3.7": { + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dependencies": {} + }, + "node-fetch@2.7.0": { + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "whatwg-url@5.0.0" + } + }, + "normalize-path@3.0.0": { + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dependencies": {} + }, + "npm-run-path@4.0.1": { + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "path-key@3.1.1" + } + }, + "npm-run-path@5.3.0": { + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "path-key@4.0.0" + } + }, + "o-son@1.0.4": { + "integrity": "sha512-tdGKxZgiTexSv97/igC2m8Y6FljgwvwHW/Zy3ql3Jx6MPKrPKaBDLhV7rz8uuLjcDPw6Pxa2PVsnWwen59MmnQ==", + "dependencies": { + "@deno/shim-deno": "@deno/shim-deno@0.16.1" + } + }, + "object-treeify@1.1.33": { + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "dependencies": {} + }, + "one-time@1.0.0": { + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "fn.name@1.1.0" + } + }, + "onetime@5.1.2": { + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "mimic-fn@2.1.0" + } + }, + "onetime@6.0.0": { + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "mimic-fn@4.0.0" + } + }, + "open@8.4.2": { + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "define-lazy-prop@2.0.0", + "is-docker": "is-docker@2.2.1", + "is-wsl": "is-wsl@2.2.0" + } + }, + "p-limit@2.3.0": { + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "p-try@2.2.0" + } + }, + "p-limit@5.0.0": { + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dependencies": { + "yocto-queue": "yocto-queue@1.1.1" + } + }, + "p-locate@3.0.0": { + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "p-limit@2.3.0" + } + }, + "p-try@2.2.0": { + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dependencies": {} + }, + "path-exists@3.0.0": { + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dependencies": {} + }, + "path-key@3.1.1": { + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dependencies": {} + }, + "path-key@4.0.0": { + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dependencies": {} + }, + "pathe@1.1.2": { + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dependencies": {} + }, + "pathval@1.1.1": { + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dependencies": {} + }, + "picocolors@1.0.1": { + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dependencies": {} + }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dependencies": {} + }, + "picomatch@3.0.1": { + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "dependencies": {} + }, + "pkg-types@1.1.3": { + "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", + "dependencies": { + "confbox": "confbox@0.1.7", + "mlly": "mlly@1.7.1", + "pathe": "pathe@1.1.2" + } + }, + "pkg-up@3.1.0": { + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "find-up@3.0.0" + } + }, + "postcss@8.4.39": { + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "dependencies": { + "nanoid": "nanoid@3.3.7", + "picocolors": "picocolors@1.0.1", + "source-map-js": "source-map-js@1.2.0" + } + }, + "prettier@3.3.2": { + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "dependencies": {} + }, + "pretty-format@29.7.0": { + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "@jest/schemas@29.6.3", + "ansi-styles": "ansi-styles@5.2.0", + "react-is": "react-is@18.3.1" + } + }, + "punycode@2.3.1": { + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dependencies": {} + }, + "ramda@0.30.1": { + "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", + "dependencies": {} + }, + "react-is@18.3.1": { + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dependencies": {} + }, + "readable-stream@3.6.2": { + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "inherits@2.0.4", + "string_decoder": "string_decoder@1.3.0", + "util-deprecate": "util-deprecate@1.0.2" + } + }, + "readdirp@3.6.0": { + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "picomatch@2.3.1" + } + }, + "require-from-string@2.0.2": { + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dependencies": {} + }, + "rollup@4.18.0": { + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dependencies": { + "@rollup/rollup-android-arm-eabi": "@rollup/rollup-android-arm-eabi@4.18.0", + "@rollup/rollup-android-arm64": "@rollup/rollup-android-arm64@4.18.0", + "@rollup/rollup-darwin-arm64": "@rollup/rollup-darwin-arm64@4.18.0", + "@rollup/rollup-darwin-x64": "@rollup/rollup-darwin-x64@4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "@rollup/rollup-linux-arm-gnueabihf@4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "@rollup/rollup-linux-arm-musleabihf@4.18.0", + "@rollup/rollup-linux-arm64-gnu": "@rollup/rollup-linux-arm64-gnu@4.18.0", + "@rollup/rollup-linux-arm64-musl": "@rollup/rollup-linux-arm64-musl@4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "@rollup/rollup-linux-powerpc64le-gnu@4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "@rollup/rollup-linux-riscv64-gnu@4.18.0", + "@rollup/rollup-linux-s390x-gnu": "@rollup/rollup-linux-s390x-gnu@4.18.0", + "@rollup/rollup-linux-x64-gnu": "@rollup/rollup-linux-x64-gnu@4.18.0", + "@rollup/rollup-linux-x64-musl": "@rollup/rollup-linux-x64-musl@4.18.0", + "@rollup/rollup-win32-arm64-msvc": "@rollup/rollup-win32-arm64-msvc@4.18.0", + "@rollup/rollup-win32-ia32-msvc": "@rollup/rollup-win32-ia32-msvc@4.18.0", + "@rollup/rollup-win32-x64-msvc": "@rollup/rollup-win32-x64-msvc@4.18.0", + "@types/estree": "@types/estree@1.0.5", + "fsevents": "fsevents@2.3.3" + } + }, + "safe-buffer@5.2.1": { + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dependencies": {} + }, + "safe-stable-stringify@2.4.3": { + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dependencies": {} + }, + "semver@7.6.2": { + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dependencies": {} + }, + "shebang-command@2.0.0": { + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "shebang-regex@3.0.0" + } + }, + "shebang-regex@3.0.0": { + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dependencies": {} + }, + "siginfo@2.0.0": { + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dependencies": {} + }, + "signal-exit@3.0.7": { + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dependencies": {} + }, + "signal-exit@4.1.0": { + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dependencies": {} + }, + "simple-swizzle@0.2.2": { + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "is-arrayish@0.3.2" + } + }, + "sisteransi@1.0.5": { + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dependencies": {} + }, + "source-map-js@1.2.0": { + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dependencies": {} + }, + "source-map@0.5.7": { + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dependencies": {} + }, + "stack-trace@0.0.10": { + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dependencies": {} + }, + "stackback@0.0.2": { + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dependencies": {} + }, + "std-env@3.7.0": { + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dependencies": {} + }, + "string_decoder@1.3.0": { + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "safe-buffer@5.2.1" + } + }, + "strip-final-newline@2.0.0": { + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dependencies": {} + }, + "strip-final-newline@3.0.0": { + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dependencies": {} + }, + "strip-literal@2.1.0": { + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dependencies": { + "js-tokens": "js-tokens@9.0.0" + } + }, + "supports-color@5.5.0": { + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "has-flag@3.0.0" + } + }, + "supports-color@7.2.0": { + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "has-flag@4.0.0" + } + }, + "text-hex@1.0.0": { + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dependencies": {} + }, + "tinybench@2.8.0": { + "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", + "dependencies": {} + }, + "tinypool@0.8.4": { + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "dependencies": {} + }, + "tinyspy@2.2.1": { + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "dependencies": {} + }, + "to-fast-properties@2.0.0": { + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dependencies": {} + }, + "to-regex-range@5.0.1": { + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "is-number@7.0.0" + } + }, + "tr46@0.0.3": { + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dependencies": {} + }, + "triple-beam@1.4.1": { + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "dependencies": {} + }, + "ts-toolbelt@9.6.0": { + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dependencies": {} + }, + "tsconfck@3.1.1_typescript@5.5.3": { + "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "dependencies": { + "typescript": "typescript@5.5.3" + } + }, + "type-detect@4.0.8": { + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dependencies": {} + }, + "types-ramda@0.30.1": { + "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "dependencies": { + "ts-toolbelt": "ts-toolbelt@9.6.0" + } + }, + "typescript@5.5.3": { + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "dependencies": {} + }, + "ufo@1.5.3": { + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dependencies": {} + }, + "undici@5.28.4": { + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "@fastify/busboy@2.1.1" + } + }, + "uri-js@4.4.1": { + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "punycode@2.3.1" + } + }, + "util-deprecate@1.0.2": { + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dependencies": {} + }, + "vite-node@1.6.0": { + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dependencies": { + "cac": "cac@6.7.14", + "debug": "debug@4.3.5", + "pathe": "pathe@1.1.2", + "picocolors": "picocolors@1.0.1", + "vite": "vite@5.3.3" + } + }, + "vite-tsconfig-paths@4.3.2_typescript@5.5.3": { + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", + "dependencies": { + "debug": "debug@4.3.5", + "globrex": "globrex@0.1.2", + "tsconfck": "tsconfck@3.1.1_typescript@5.5.3" + } + }, + "vite@5.3.3": { + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "dependencies": { + "esbuild": "esbuild@0.21.5", + "fsevents": "fsevents@2.3.3", + "postcss": "postcss@8.4.39", + "rollup": "rollup@4.18.0" + } + }, + "vitest@1.6.0": { + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", + "dependencies": { + "@vitest/expect": "@vitest/expect@1.6.0", + "@vitest/runner": "@vitest/runner@1.6.0", + "@vitest/snapshot": "@vitest/snapshot@1.6.0", + "@vitest/spy": "@vitest/spy@1.6.0", + "@vitest/utils": "@vitest/utils@1.6.0", + "acorn-walk": "acorn-walk@8.3.3", + "chai": "chai@4.4.1", + "debug": "debug@4.3.5", + "execa": "execa@8.0.1", + "local-pkg": "local-pkg@0.5.0", + "magic-string": "magic-string@0.30.10", + "pathe": "pathe@1.1.2", + "picocolors": "picocolors@1.0.1", + "std-env": "std-env@3.7.0", + "strip-literal": "strip-literal@2.1.0", + "tinybench": "tinybench@2.8.0", + "tinypool": "tinypool@0.8.4", + "vite": "vite@5.3.3", + "vite-node": "vite-node@1.6.0", + "why-is-node-running": "why-is-node-running@2.2.2" + } + }, + "webidl-conversions@3.0.1": { + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dependencies": {} + }, + "whatwg-url@5.0.0": { + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "tr46@0.0.3", + "webidl-conversions": "webidl-conversions@3.0.1" + } + }, + "which@2.0.2": { + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "isexe@2.0.0" + } + }, + "which@4.0.0": { + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "isexe@3.1.1" + } + }, + "why-is-node-running@2.2.2": { + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dependencies": { + "siginfo": "siginfo@2.0.0", + "stackback": "stackback@0.0.2" + } + }, + "winston-transport@4.7.0": { + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", + "dependencies": { + "logform": "logform@2.6.0", + "readable-stream": "readable-stream@3.6.2", + "triple-beam": "triple-beam@1.4.1" + } + }, + "winston@3.13.0": { + "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", + "dependencies": { + "@colors/colors": "@colors/colors@1.6.0", + "@dabh/diagnostics": "@dabh/diagnostics@2.0.3", + "async": "async@3.2.5", + "is-stream": "is-stream@2.0.1", + "logform": "logform@2.6.0", + "one-time": "one-time@1.0.0", + "readable-stream": "readable-stream@3.6.2", + "safe-stable-stringify": "safe-stable-stringify@2.4.3", + "stack-trace": "stack-trace@0.0.10", + "triple-beam": "triple-beam@1.4.1", + "winston-transport": "winston-transport@4.7.0" + } + }, + "xxhashjs@0.2.2": { + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dependencies": { + "cuint": "cuint@0.2.2" + } + }, + "yocto-queue@1.1.1": { + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dependencies": {} + } + } + }, + "remote": {}, + "workspace": { + "dependencies": [ + "jsr:@std/dotenv@^0.224.2" + ], + "packageJson": { + "dependencies": [ + "npm:@dotenvx/dotenvx@^1.5.0", + "npm:@faker-js/faker@^8.4.1", + "npm:@grammyjs/conversations@^1.2.0", + "npm:@grammyjs/storage-free@^2.4.2", + "npm:@trivago/prettier-plugin-sort-imports@^4.3.0", + "npm:@types/node-fetch@^2.6.11", + "npm:@types/ramda@^0.30.0", + "npm:esrun@^3.2.26", + "npm:grammy@^1.25.0", + "npm:ramda@^0.30.1", + "npm:typescript@^5.5.2", + "npm:vite-tsconfig-paths@^4.3.2", + "npm:vitest@^1.6.0" + ] + } + } +} diff --git a/deps.ts b/deps.ts new file mode 100644 index 0000000..e69de29 diff --git a/env.d.ts b/env.d.ts index ddfa2ac..e69de29 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1,5 +0,0 @@ -declare namespace NodeJS { - interface ProcessEnv { - BOT_TOKEN: string - } -} diff --git a/src/bot.ts b/src/bot.ts index f3d6e7b..2eb80e7 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,12 +1,14 @@ import { Bot } from 'grammy' -import setup from './preference/setup' -import { BOT_TOKEN } from './config' -import { PreferencesContext } from './types/sessionData' +import setup from './preference/setup.ts' +import { BOT_TOKEN } from './config.ts' +import { PreferencesContext } from './types/sessionData.ts' const bot = new Bot(BOT_TOKEN!) -bot.command('help', (ctx) => - ctx.reply('Bot is under construction. Please wait for the next update.'), +bot.command( + 'help', + (ctx) => + ctx.reply('Bot is under construction. Please wait for the next update.'), ) bot.use(setup) diff --git a/src/config.ts b/src/config.ts index ccb9433..810a018 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,2 +1,9 @@ +import { load } from '@std/dotenv' + +type EnvKeys = 'BOT_TOKEN' | 'DENO_ENV' | 'HN_API' + +const env = await load() as Record + export const HN_API = 'https://hacker-news.firebaseio.com/v0/' -export const BOT_TOKEN = process.env.BOT_TOKEN +export const BOT_TOKEN = env.BOT_TOKEN +export const DENO_ENV = env.DENO_ENV diff --git a/src/preference/setup.ts b/src/preference/setup.ts index c2e6585..b84ada6 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,8 +1,8 @@ -import { ConversationContext, PreferencesContext } from '@/types/sessionData' -import { getSessionAdapter } from '@/utils' +import { getSessionAdapter } from '@/utils.ts' import { conversations, createConversation } from '@grammyjs/conversations' import { Composer, session } from 'grammy' import * as R from 'ramda' +import { ConversationContext, PreferencesContext } from '@/types/sessionData.ts' const composer = new Composer() @@ -31,7 +31,7 @@ const preferencesBuilder = async ( composer.use( session({ initial: () => ({ preferences: [] }), - storage: getSessionAdapter(process.env.BOT_TOKEN!), + storage: getSessionAdapter(''), }), conversations(), createConversation(preferencesBuilder, 'preferences'), @@ -51,11 +51,9 @@ composer.command('list', (ctx) => R.ifElse( R.isEmpty, R.always('No preferences set.'), - R.join('\n'), )(ctx.session.preferences), - ), -) + )) composer.on('message', (ctx) => { ctx.reply('Please use the /setup command to setup your preferences.') }) diff --git a/src/types/sessionData.ts b/src/types/sessionData.ts index d25de7b..fcd1273 100644 --- a/src/types/sessionData.ts +++ b/src/types/sessionData.ts @@ -5,8 +5,9 @@ export interface SessionData { preferences: string[] } -export type PreferencesContext = Context & - SessionFlavor & - ConversationFlavor +export type PreferencesContext = + & Context + & SessionFlavor + & ConversationFlavor export type ConversationContext = Conversation diff --git a/src/utils.ts b/src/utils.ts index 34d3d50..59cc2e7 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,11 +1,12 @@ import { freeStorage } from '@grammyjs/storage-free' import { MemorySessionStorage } from 'grammy' import * as R from 'ramda' -import { SessionData } from './types/sessionData' +import { SessionData } from '@/types/sessionData.ts' +import { DENO_ENV } from '@/config.ts' export const getSessionAdapter = (token?: string) => R.ifElse( R.equals('test'), R.always(new MemorySessionStorage()), R.always(freeStorage(token!)), - )(process.env.NODE_ENV!) + )(DENO_ENV) diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index c7b9225..0000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "noEmit": false - }, - "exclude": ["node_modules", "dist", "src/**/*.spec.ts"] -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 08d5705..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "baseUrl": ".", - "module": "ESNext", - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "outDir": "dist", - "strict": true, - "noEmit": true, - "allowJs": true, - "moduleResolution": "Node", - "resolveJsonModule": true, - "esModuleInterop": true, - "paths": { - "@/*": ["src/*"], - "@bot/*": ["src/bot/*"] - }, - "types": ["vitest/globals"] - }, - "include": ["src/**/*.ts"], - "exclude": ["node_modules"] -} From 212d5052f4c03145c98b5283c5a6bc91b720588d Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 3 Jul 2024 19:30:37 +0200 Subject: [PATCH 051/152] chore!: add ramda external dep --- deno.jsonc | 1 + deno.lock | 352 +++++++++++++++++++++++++++++++++++++++- deps.ts | 1 + package.json | 3 +- src/preference/setup.ts | 3 +- src/utils.ts | 3 +- 6 files changed, 352 insertions(+), 11 deletions(-) diff --git a/deno.jsonc b/deno.jsonc index 3971ce5..8b75c86 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -2,6 +2,7 @@ "imports": { "@/": "./src/", "@bot/": "./src/bot/", + "@deps": "./deps.ts", "@std/dotenv": "jsr:@std/dotenv@^0.224.2" }, "fmt": { diff --git a/deno.lock b/deno.lock index 7861828..12b14cf 100644 --- a/deno.lock +++ b/deno.lock @@ -12,7 +12,6 @@ "npm:@types/ramda@^0.30.0": "npm:@types/ramda@0.30.0", "npm:esrun@^3.2.26": "npm:esrun@3.2.26", "npm:grammy@^1.25.0": "npm:grammy@1.26.0", - "npm:ramda@^0.30.1": "npm:ramda@0.30.1", "npm:typescript@^5.5.2": "npm:typescript@5.5.3", "npm:vite-tsconfig-paths@^4.3.2": "npm:vite-tsconfig-paths@4.3.2_typescript@5.5.3", "npm:vitest@^1.6.0": "npm:vitest@1.6.0" @@ -1384,10 +1383,6 @@ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dependencies": {} }, - "ramda@0.30.1": { - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "dependencies": {} - }, "react-is@18.3.1": { "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dependencies": {} @@ -1725,7 +1720,351 @@ } } }, - "remote": {}, + "redirects": { + "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts", + "https://x.nest.land/ramda@0.27.2/mod.ts": "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts" + }, + "remote": { + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "14262bdcea26c261f2f6490e733b792af9d3ae3582a4d09ca5bab0479b48ca40", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/F.js": "cf0f5fdb08048909e49bb6f222f6e2f92db8d4dc0dd24900864eaf69c3746e3d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/T.js": "f96ac2cdaeedf374fb932a4ec368f0566143f0c2d028919976c41c6ee53c0515", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/__.js": "0d846e36ac0a9ff96c3e17823a98d1379295bf0a12e02c6b54e252d89228acbb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/add.js": "228beb026421789be635c2ef48dbbccfcf030796429b14e08da3092800a54abb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/addIndex.js": "eb25b2d1999a36025c7eac9bafde0d4f569b8b9de5f03a2578fc5a82f2f37497", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/adjust.js": "a018b4127cfa9f2915e2a5fcc767d58c590be7716bcdeba39136f63404de9466", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/all.js": "ad8982ac59e339bba8eb440eb200b18bec2531906cadab6989a4f9970c56ec4e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/allPass.js": "b9b9b39392fae767310690bf8e097150fd9a99f5dc0d64565ae61cc58b6e34ec", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/always.js": "b38ca58da76a43663c33dfd52a4b09f6f582b8504fd767e204e85291fe9b03ae", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/and.js": "ba92b5127ff67c6a5bd523ea099961ae8c4d1028aa022a7a2d494bc938d85e54", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/andThen.js": "4257a859b9273bae3fb3e3a97c7bcf5f862c519eb52de0da7e02adf52f4f262b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/any.js": "45983175fa1de66e8082ce7cce43b53b21d3d2223e4a383a11690d4a1c0d84ec", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/anyPass.js": "6fd0a90a458921d07bc51acac9dba839e5e29f2b9b507524ed95ceb304557a5f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/ap.js": "29e48d267711c5ee9dd43a8f3ce766e2198ced3ec359d8d7405a207208ac876b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/aperture.js": "b6a5dcde3c5e6f849a3c9680e5faf554bf5dc8a3d6cfb7aadc73cc147d33fe7e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/append.js": "bf323062d997e4d995053900134369c1341fbbcd46ef64c2b741f9d1c4ccd55c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/apply.js": "b0b90bbd6b73d2cb57f9cf31bb7e45cf398e3b700ef03aefe038b4ec9d71ff10", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/applySpec.js": "a8e8361ca93c7a5ea938db059d56a2361e80a007229af1d052476d8f5c3731b6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/applyTo.js": "8c3029032632e385a877e4587ba8fcb9bc046523dbe4eee6cf41c131ec7e2c18", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/ascend.js": "84524adf0f4eb7dc4ca815aacd60b99527cb17d1311411e482d8e8e15ea4553d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/assoc.js": "f00e345f7c5dcc1bbebc4ae9ef6574b9b7ed2c98576bea5ae4f521dfc96de22e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/assocPath.js": "e73615bb6af97ac6264b1497826a72be278f5eb944bb9a09bfd49b5b51a64667", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/binary.js": "3bcf8608caed02f0005c7efa81ae9303b0a830f035dbb1f749467edd1363c0bb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/bind.js": "e54151679a653e4a429f06a4083b951a2956352d43342be2d9362caf15c5284c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/both.js": "6ba9a47bc7a1d641d4bbb9a31c1d69ed9db31926c45ec5eafd462a4281a19854", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/call.js": "30e8a7959e3a627a93b80b353f909f0ccfe633286abe42032efab9110203f252", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/chain.js": "5aaac847573c89107b229de5070b10137e5085aff44197b362c9f330d97d4cb6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/clamp.js": "c5e4794193226010c4311fd4232b54a666ff215f7a2bbb3c0e953e129343f9b9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/clone.js": "f87d3eff8eda087ab34ee9d210574f6458558a15503f20863135c652903932d9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/collectBy.js": "63a5b7d523d656ed21c8d212ec5b20ae0bede27759620b30a3edad5007e77d1f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/comparator.js": "46dcd6df640aa62b62b637a44923b124e08373e016c079d66c8554f5eccac25f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/complement.js": "1077ec2fd77148b9b816c9e2d53447dc5f58551dfa4d1fbdc65b4358c348fe7e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/compose.js": "88c1ba6338854a69a88c6716d7e1846b41b4c11758e4303e3aff8da2fdb4d886", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/composeWith.js": "7f1769340bb713ddaddf140b9377c737516b53d3fa8737b4bacdb3d9076e27e7", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/concat.js": "f3d8d7238dde344d9916f62eb23e652d51b1ee9165112441fcc8772a52882cf1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/cond.js": "fc252d1fb0940df257a9cf688f7b18a6b985c2117e0959c433c54116dd1b8f97", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/construct.js": "d4ab8ddb45b581954bc943cf8d6c75add7b3fedcfeabc20316f17d1b8955e6f6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/constructN.js": "985a538f32bec2e893d47d0072277d4e19f0111fdf9b9119e79835804dab1af7", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/converge.js": "e285777910f7d111772b74dd6c1f4d6c49ff9a603a2ff9a950e830cfda871a9d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/countBy.js": "e2fb4127929895d661ca99db0b424bd4e045d366baef8f122a8c8e5e985293a5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/curry.js": "69fef7830feee995f75e3aa45ae0fe99f611772462e33dfa3d6044a506d999e3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/curryN.js": "523d173826331f03aff210ea1932a445e0d77acdf96f0b337de96fa0cca78903", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dec.js": "7c27ae1b7e572910d1bcb63eeac36ebf59d6cce903fa3ba1b170dc7329133843", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/defaultTo.js": "237e5a9a1f0b1fb190f508a8750a0729814fa1754fbd032f18144d875990ead8", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/descend.js": "4ca2704b6e4ea7b92015e6620c210c19c7374f29742f7bd5136c8e1aa6c90503", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/difference.js": "9d388448dfda3232f6006b9f5f56d7cf3982b3bcf47165ff8bf66677e53dff6f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/differenceWith.js": "d7c98a3cc916fb0ff050c0c1441f2a1b29cff3d0d301e37878a2adbe8db28de3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dissoc.js": "5cf9c3c42e4f8b568234eee84567b972cc187a0ea3e15c0e674745fdd7187cee", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dissocPath.js": "a59d61ccce8df74a37e698d525eee27c26505420710087b58fe4e93b26dbbef8", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/divide.js": "6e0bfcfd2b18877a0fe1e4ae98ae53349ac1f48c7b5fc35c3ca57364504943ef", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/drop.js": "4ff5febd91047ca74b4778881097c1051dbe4fabbef0d7117f2e41378dff55e1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dropLast.js": "68d7d9ae7a87f5c344b496cb0b8ca79768d796b11bb079daa951152b63706bdf", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dropLastWhile.js": "078af5d7231266e448dfd3002c26aaa146eae18f2ea57123829958e4dcbcb782", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dropRepeats.js": "c84877435227b901e8a7c7c42245bbbde0609b3b3b9af97a4377b695f1784136", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dropRepeatsWith.js": "9c01e32e3ed2869e68c046dc564e42b59888463234ed637bde31608bc64eba17", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/dropWhile.js": "28e044253bd3655a759be443dcc233cbda76bd2d80defe51600e10312220b5a0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/either.js": "07b4087707e495f59e30ed9e1d579d146a1cfa8fdc758bfd353af9176c6bab9f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/empty.js": "df91fc65b55ad83236fbc18e76c599db75c36395ea812a492cb56d95e337fb8f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/endsWith.js": "d9bea6890b2474a11d23e14e0d500bc87bafbfbd5975ee4d9eedf99599e9bc3f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/eqBy.js": "bb0692cce9d0020fce9a4b3a7c4d8082dd11a4fd03c2610fc38d72987d2e3408", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/eqProps.js": "b8472fd7aac2e952a78e285bf5908116481e8804839e098e963f6d8db40a6f28", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/equals.js": "7f54bec675761df5cb71b7cc32a169d2e944c91575d6a9c2304dad7a1ced3373", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/evolve.js": "14d0d1f87c4891535f88da7209a926a59cfbd486df737a1407157f8847b83630", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/filter.js": "5c8b8eaba016bf63185df32ce439b4795e1182cfda310fce114a53fb15d2d6de", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/find.js": "09598aa7e256c37bfd80c1cefd5664e96b22fa0d34cafe637f4c27441002fc1a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/findIndex.js": "0cb98806f039b3cfae9d7c491fad7ba48a03e1db9d9e482fa516bb4ed76d3dca", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/findLast.js": "0b414111d9841354a5b6342a124f2b1026101311df0afd5c3ba4ac59db9cb72c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/findLastIndex.js": "d7f2827c928a0481ec3b0cd814ec446a75ed47fb1f3f5b22611efc6d462d7060", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/flatten.js": "243ddadafe7961aec81baa8572905db0dd493f777dd5056d8cee37563a7cc526", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/flip.js": "78559e6c275e263c2daae4d16d63639f1168b442b88d738038b6f3147312a695", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/forEach.js": "39813bce3e81c081a2ff92855f8a55bcda476801f2f44de0e79e210068a027f1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/forEachObjIndexed.js": "28fc5331e303c3e68c7c01d77b0d29eae1e0271d8eec68a21b3cee582cab4568", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/fromPairs.js": "d729f77a9ea6b241368fd95e2157d6bed5f306233f4bd0f3d27e820755268153", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/groupBy.js": "cdf6123f30919aba99f3cfa86195f724f977804f44681dea298566f1506862f2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/groupWith.js": "dc2c4861a44408e25554850dc706175ccb7762a9059b5bec3aeb621ba6590fe7", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/gt.js": "72ed5925a31ac49a1a89487cc8d2803691384c161ecb93cc07042c5b3404241a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/gte.js": "78802ab4ebb7b98c3d947c43c17679d98fca1b363f87fc16513690d3fb5b29a1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/has.js": "4476f429c91c6bbb1b1a07c187fa6e0042ac580b736a34aba2843919d1959a59", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/hasIn.js": "4f3f633d11a76d05448349d60cf91be3f40cd84af67902bfbd3204b4bcb2d732", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/hasPath.js": "03e7c3cddf8dd04e8eec9765978ee3813c66440e2e0f7153393099250aa40b10", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/head.js": "4df6d937987d8bc87df68f6e11b1edc4a78f9f0890a3ef8e361f3ae1ffc2c93b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/identical.js": "4c3c3f75a7248b6c4450692e31447f933c0484520cbae6f84e3c52c4febeda1d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/identity.js": "0897cac8aa156fb05aae9e1fcbec6422265537120c85a59e2d9ed4789400142b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/ifElse.js": "586bf559dfe65b7d0baf17bc065f66ed05eab93401d0d534b20bcc2647f79ac3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/inc.js": "2ecf4d73a79bde8e5446d1bc67ae47bd918ce915c145cd38307f8e833b417905", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/includes.js": "d7d55f48f02e6137277eb3f7fe8a37c03a7b20f73461290e5fb954b654e714c3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/index.js": "e3f53a897e1f468bbe2c1df7b2c2267fafa27e7daa5058cb62914acf33877d8f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/indexBy.js": "8f2623133d78c91bbf5843d1d9e1a633751c224b259b2b6c7be05c864dcca417", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/indexOf.js": "51c6824676b9ae32384e9fb0b3f2c0c1a639b76c95c366e19d0c66246c531a09", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/init.js": "64ffbf8f557956006ddd6aa5fb2261029b574808909d576887a804358f49a33e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/innerJoin.js": "f6b0aef6118f16e35f35f755118178a259d7ada6d56ffb1a73b6b8e70840470a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/insert.js": "ec7eb96300222eb744548031c9f44d0b90eea5142b413ae0134d751e4d5e12b6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/insertAll.js": "5abae3eebae86724ea9efdb34686b499ea51ad4e7bcc87266a3798d39678ffd2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_Set.js": "0ceb62124dcad553c7e95a8395d46ef9709efbb5ae819114b1cfc837882d6bef", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_aperture.js": "3baea490e23ba04bc1a4c70aae851fff5ee1fd45b27079e7d93bba5a98cf4ad0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_arity.js": "4fa349e2c3d0da5c102353f86025b093844ea13a40b0d70ebb21302b6c9a5bb2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_arrayFromIterator.js": "f46149927bafa8f0fb7f0fdd0eaa19da4b4d7ce147bcecf0fb7406c1a0ca0e91", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_assertPromise.js": "11fd2486760cbd60ebbed0ef0b6e2aa2ee4a6e3bd3f257e5024140a21245dea9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_assoc.js": "8200e22a3f4a931e6b416260e516f2c016b1e7f3821e97f39009ff6acabf32f7", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_checkForMethod.js": "37ab74c502c1324c1e5266e865d36355301993c381ccd4849898dc8655305d71", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_clone.js": "197f999a9f94b426b1e573f4497cb0188444a74aa2aba571a8ce302aa5377b16", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_cloneRegExp.js": "9c751f3ea3732e9e2c321726997134419721b77e8ad78b5199d4fb587bce7a89", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_complement.js": "4a680d37419308b74099034c1c399264a04632dfc7378f4c4e8b88da18b863e0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_concat.js": "16219d978cd4fc97305a6d56106041d66b56a668b395c0faba555571a766d4a2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_createPartialApplicator.js": "8d5bbdb1629ae482691a309728e832d97d9108d5ec03af1e05e610e8db5dc713", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_curry1.js": "471de08b6eba9bdbda8bc3adf75a6c85579abf44b1af9b079b631680d1331bf3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_curry2.js": "2c8ae1b2f6f1f29ae72507eb2f8affa2d29d7e6d593c74c2ab8b11ab7c077ea0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_curry3.js": "4df2775934c2a02472b806c18f4fefcd2f0a330568c7818e3937ed9c05fde9cb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_curryN.js": "e5772e002d36f419f9b29ee72d58f6605d99f05a59fb9f234df6f11bdd0c91ed", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_dispatchable.js": "d0caa3b83bcaf612ce5ccc1ef1e3bee8bd0b7c70cd688522d7a1922078d0c8f9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_dissoc.js": "a4f7d454f67c815792a40c49f53d3778a954efdaee98e98eadcb88506508e014", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_dropLast.js": "783d1c3682e470b584ee19e69b0a3df190c89a44c50b784051adc08edc9e34b5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_dropLastWhile.js": "45fa88039ae87e0037fce1def28249714b41dd59eeeb92bcbb46e8769e517ee0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_equals.js": "3e10ce96699dcb1d463be64798cf81e0bbb293e1a91e8b3c1fbfb64cda572604", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_filter.js": "50a8ecec356ea12974434d74483775a78dd3761e5a24fab814bf761d66f8d129", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_flatCat.js": "e87d575a90f01fae5c1fe77e437580081ae00ce056d72759ac6169072449fec5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_forceReduced.js": "4fe3897c0e7327c37352d2a7d63eaa976954b97edff293116de95aeb615725ca", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_functionName.js": "15f79e21d2e991ace32b12ae7a0f6ae408a3fec5adb1896d97894eb77c640537", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_has.js": "ae63f8e7fffa2034444b2fe2cc71b1ef6d284433470a3b2e4bb73c96f543efcb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_identity.js": "210496061ce9fd6eac4abad8a29368e14dfe6e23562439d25be51aa434e8a1e3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_includes.js": "e39b97bf8ebc835f871abc949696846f94cfd19c33e405a47efd106f89675fa8", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_includesWith.js": "0af347d206c2cef356e69de9363d182346662cda8f218fe8214d2b66dd8b47c3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_indexOf.js": "a7d406d57b952f0d7232fd5a52c345ba744fb500caf799cf2b325001d243b2e0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isArguments.js": "9d10b36c8ec8ebef19308a846cbb4742a72808da7739480b9487ca6374274ac5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isArray.js": "6389121e11857e7db42afc5e6adb55c1d4ac84ea86abece78e0b73a04d6e5e02", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isArrayLike.js": "2fbbd1bd6dd5c31465ce87ba684b57ddf084506656ebc554d659bdb42799e017", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isFunction.js": "b0f712fbd329875c29d77cfa867f46a2f24c10a0fe6775d6729f71b413e718da", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isInteger.js": "1e0accc105f8ce4d91e9406bcf45369f3d314812dc5bad29362c0c36fae59db8", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isNumber.js": "43d300422b4da7fc0547e1f8190ae42c86dcd31693417126d12bbbaff87b7b35", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isObject.js": "e49a67e910ff51efac8d1267f1e813d0c7575a09578b5408c2ccc352752b701c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isPlaceholder.js": "f0e59347c4077d5b524cf87afac7f12ff5bb6d05a0664046dcc21057f4451660", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isRegExp.js": "1ff80685a92e7c83f0b9d78c041ba5603de99a7f822b323cf3e6e307f7b8ef45", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isString.js": "defc6d87c06b2dea7f75bfab57ff7591804acda65594130cb8d3af7fe618e42d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isTransformer.js": "f90ec4a0fb72c8d378f639d02457d71b9fe2260c7d155ce7065260d865b29b89", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_isTypedArray.js": "9d365262f7a253a3d31d930fc37e15049fb7f95079f206652ce0bea88294d350", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_makeFlat.js": "65f901bfa3f454e40fb312cb862048009f7f4fb152a50f2e58f50d08742bb765", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_map.js": "9ed8773d457a11630b1b60a05a5aa88f4eb697eae9b5fea4bd4ab0e9a2dcfa44", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_modify.js": "9997861456b9ecf9f6f5ed3a592b38fddc96570cc1817a55d803056ae43c304e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_objectAssign.js": "e556262b1d354d3956d5ac9f723d9e5ae12f3d37799d8de0436b35b2cdbbaa59", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_objectIs.js": "96818c22093a4a6465c11760ee82538392bae907daf4c29ab9a0d8c814dfb4d0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_of.js": "592f2a08ad5a73a9b621ef06877b7570c6ab5115d985b1dc9d0ffe7a0a8fcb90", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_pipe.js": "284c5c472cd46d456869500d97308db3fbc3d74885b145b5a1a4983255c94634", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_promap.js": "bb28d85b6ba984349c5154017802bf8754992f9c249e34d6c7ac1a9f2b93acc2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_quote.js": "5fd76eec69c48e5f8ba4f186b98117ed1e24190e5e7a1c68c82e87caa3b31016", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_reduce.js": "dede31c8204bee0fbe39f064ba1c85db32997092c9bfe83c3d6d178673ffc93b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_reduced.js": "3aa5d80b51130286d4d22cbf24a5e60d44d239c3ee7de037061e024069729cc1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_stepCat.js": "65ad7151305023178da9675dead9da892e07b235aec45a36c1d81a8700efd50a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_toISOString.js": "0602756738b1a543cf9383a9269b6b4d4198a64586d5b386258494fac454d7da", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_toString.js": "c91ae93e404d8a08b18d470399dc45b45e471572bd4b09e32ff634a40d6a6747", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xall.js": "c8743b2b5ce1dc914aaeed1fe6349c4a8cf558dcbcf76f629c46650a5b4864c2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xany.js": "debe5d3652a056e84311379946abee746410d9ec6323f5571999cc3e58bec3ea", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xaperture.js": "865d4e92d080a8eb8a05e20ba04053d331ffbbab12e7794f1e550f598d5c3bc5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xchain.js": "e50a7835149178afef59b354dbe256279fd29a31b0c1382c95013b622a64b42d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xdrop.js": "d8c35c183ceea82b7743cb432ab1053a4350cd20918653ea46ea365a4aa96cd9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xdropLast.js": "8ef50fcbd4b0ba885512ce7a6743d4f7fbb21a48a6827309b4a1483ce5188757", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xdropLastWhile.js": "e35a9d0c7eb9f994e947df5134117219e8ae73dda04d5fc498ccb39b01337ab6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xdropRepeatsWith.js": "695f243d4f57cc93457a85b02fa4d4a868b26c539179c460d2ed482814f619da", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xdropWhile.js": "8c2d857a155cbbb85e1b8061bd51acf551ac79e58be5c6815d98c85c27b1a791", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xfBase.js": "4940a7f86cf2e06b3864588b68b8f8dc3f5626285a71725bc23ca45204b25ba8", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xfilter.js": "5bc0c0ecca3e2216bb8adf788e6b2d156b8c6e917f9210c0bf8cfc7a3173cf64", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xfind.js": "6a796c251023a9adf4da914480096604731565bd84a49034c18e2a720e182ccb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xfindIndex.js": "d4475489b0589d0d0c0d0e2590306edfbb90c8f8d0cbaf9e0271538478b5e579", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xfindLast.js": "24ea8016cf355af01670392d2e919f6f265ef308ffbf80e8e065398e81b21ffb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xfindLastIndex.js": "d41691d4b16327c51ed49f09998bec03caca38ba30c69377ff7158f3bb4c40ae", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xmap.js": "fee34673a9500dacda51bc2eef5655bccee9f870f003912d3d21c8ebffef6b40", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xpromap.js": "4f64cad6d84877b0367c9863c78e7165332fc3ec9daa4c1457fd76889ce5784c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xreduceBy.js": "1b7f4e546d14ab4d9dfd31f25d8ddce5afe5046992e2ab777062ae7f271742fa", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xtake.js": "948587bd66412c9ee7c76b8c9a801b915792d8dbdbc40eb9e41e11e90a21e929", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xtakeWhile.js": "54592c64cb42aa0452d19d954cf257034e0aee8a8bd4c5df1b4338d797b85967", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xtap.js": "8869a093501e3802fc0708893e7e1978e5891c11ef4f6574cc3f2db488966bac", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/internal/_xwrap.js": "bd5c91087b37e811168370937a3d86e67c76791b0e15be624c992c7020c25e0a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/intersection.js": "7b04e4d2cd4da37b5a65cdf740a8103ff4d52ef373fd089fe59165c219c426d6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/intersperse.js": "2c903a93ddb28e53a7aace262c6f1c13afad92f668bbdbea520e5b766e851495", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/into.js": "1a6b854b89b9a6ceb2db23141797ac3e7438dac14aba0d9f7bddaba32f3bff24", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/invert.js": "b61941582db861f056d4858c2c28706f9d8dab8cfb18487c60790d053a2cfd13", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/invertObj.js": "17d5e30707e7f965a2240e2465b8c96aea00520a809f88cc827f6771ca4a2086", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/invoker.js": "d0c4617665108ea72f33b0beda247c4b14a5cd82bc60ba3d29e62cf49d0bb87a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/is.js": "f924768de966fba2c4a7cc57de2d132b2ec15dfb2374eb3628ddad80b3be6588", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/isEmpty.js": "aefbcf318cc3d96fab03c8389130586d171cfcad727f3baccc1db701895eed5f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/isNil.js": "8b2f125a75429b4176fc868359a00ed17b1d7fb2b16b4e02fa118bd4e7eb3305", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/join.js": "0e5cecc18dd748bc3df25e334bf4c71a32f150b8617a1d3a61a8398ae990f6ec", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/juxt.js": "d4a033b7ceaeefdb40f5ee89ca63ab06d9c920fb20ae41305aaa3fe604083857", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/keys.js": "86743eb43e3971c1faeb06bd89dcc475033c65f37ee4738737658904781c3393", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/keysIn.js": "3edb33ccadc4e657facd03e3024c40fe450777c7efbaa169c8a12f1134a40964", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/last.js": "00bfbc444c72db87adf81c5d32526fc159e0289addf23838bf8acd76a1ae2e54", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lastIndexOf.js": "ede20d310e986df5fe7a60cfb26c92920da2e9e8b87f0b83f0f1bf7ea34bc552", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/length.js": "a5a94623b9aeb2fb5cd2b07fb747160b065d7b5d13579a5e19cb2bf71e91c2cd", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lens.js": "000fecf9849fb2fe44e0d53f6658adb64fadfccaa51268341505fb9fdfeb49ef", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lensIndex.js": "4d730d854eed30e3f85f1e86bcd2903cd5cc4feb729bfcf20fe3540a9548820b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lensPath.js": "cf78dc1749a2f0e1bf39e3efb204742c0dee9938b8ad6ad11b00fac89408b255", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lensProp.js": "91acd07b1fced8fe0d0627a402f17b81d0f5eb9be1528b50e0da89c618853b43", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lift.js": "ce2263e5551f42fde8e84996c385b9db275ad0935fc8c907f0fc21c9f3e773eb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/liftN.js": "f3bfeda33c2b76683bb80475dc99c33b139487806df613845e53e64355f9c008", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lt.js": "6b5600629463c5f2b85a0cc55c4f9f15f223820fbc348aae51ff26042528a9d9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/lte.js": "2ce6a61f62ba0987cfea61485de4ba9bb9fbe6f200d221654245980db5c968b0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/map.js": "c4a8a02e30f2d24fcca8ee04f1dcea0a2e585d9265817b4c59f14aaa4c9ef48e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mapAccum.js": "4d43db0b02a53e5740642299ac15c0f1ca8b8bacefa94bd5bd7afb2ac175efa6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mapAccumRight.js": "836425269deb9d6e683e0da76d70ee7fe20b87f8ecc6feede8a7bb89bae7e8cf", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mapObjIndexed.js": "46e60dc5089394735448ca8233b8237eb2afa46f23d27faee9e724af40230887", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/match.js": "017770587572908a98d6c89c2587972f043fb8802e443cc5632baf517a530c24", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mathMod.js": "2fd281416b9bb73a89bf1f85d9b5310520798c4472a1e5496d1077232e331bfc", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/max.js": "59795e4fa0944cabcb87a8e22491e0fe8465bb246e1d1a881bc66bf90e92b16d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/maxBy.js": "39ff93da0ee1b25c808d147595742f7569f69edfce1bfcd818ef1eb4fd6df141", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mean.js": "a62cf4f665061ebcd42c5987ed14bbf2af1debfb1cc460b2023ee19a6684933c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/median.js": "8a6f6f22319da6e6d57f09e1b5c2f0744b3087142d7af1b780461f2f2be1ef09", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/memoizeWith.js": "d2cf79f2549aaf4b716de6499f340dec875de5fdc7eb75a44758461673fb3473", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeAll.js": "a93dd81e1c33d4f88eee785cdeb200d1979bcc8d19ddd4c040bd4e06ddee06db", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeDeepLeft.js": "7982504228581281dc896a3f484529bd10441ed9090bbd71d7836d84150d0ef7", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeDeepRight.js": "d303ee731034f4c7a16fb7da0b9c2ffd27f4cc8a80a57ecdf1e865a2b8b60044", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeDeepWith.js": "9e215ef9f6256855d6fc17a3926db36af51da8c74891f5574f93b9f03562f063", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeDeepWithKey.js": "0586221974798b20016471605a90b30bf614d544a2723cc23d0ec7a1165dffc1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeLeft.js": "7ebe8becc6ada9b378f7cd450e1fc60025a5714770ec3b3df66e76a5a90435b1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeRight.js": "23e7c273b0bd531bb37a9f993e167e097e848046dac2b515ee452993fe3974a9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeWith.js": "56bea0749e4901db63bb6e88cc9082eb9d527618f20e0e1323673b02aac7f9e1", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/mergeWithKey.js": "d8ffbcfa7f443971282f8ca259ee90d447b36ee28c5f16b0a8920c6065f64447", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/min.js": "69c4d07378fb2323b1a8c90eb2566db9fcd6329efda21febd8f62beca476a8d5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/minBy.js": "241cde2c0f99abe6b8fbf1420a0b36496de9be0ddec19502ddd7dffd22743d47", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/modify.js": "b1ceec42bc8b438d2eebd13d13766dca038b601a72155f1151ea595c47024a91", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/modifyPath.js": "eed5c0d3d49ef17c801f5bc4e07f3ea380b0cc0561df2111d768cd5838ddcb69", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/modulo.js": "a3f2befd3799560b33f6f7b3d810245a14fb5915d1a4aeee50ac9edb39f1af85", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/move.js": "54d9a68bf4465c0dac42f21111b4d927c90ccab86ce02b69607eea8157aab679", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/multiply.js": "2f0a8a704f06e6db7501f22bb57e02e8fae81fa48a1f7831660f22d1a9099aab", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/nAry.js": "8010b4e7df19cf6296671038ce675cb6ba1d685972f3fc709e3bb4ac3814acd5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/negate.js": "88f6d95122a6fb1c52a8d55100abe8c28d83d5760e5c11988374aa2ba07a7e66", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/none.js": "6de510fc7f05077009a8b5b429d71d434bd57fd49ea8cfeab71f8c1b134e7d76", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/not.js": "e585c5327ebd9d1641ade1ee13f4889e97ab1987727a17ec8e9368964c3dfa76", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/nth.js": "53d6932e224a92a49b4a7d20d310995168961286f466c6821d18962f46122978", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/nthArg.js": "66fd703e925c7808f3f1a73b46d4dbdf7fc74511a7dfc31aee4b5a82764b6fac", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/o.js": "57abdf9853832d865288dd8625442a316600f36e2e047f767f5c22a8d434c389", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/objOf.js": "7f760ec1e38e7012551cbfd9e0f4ca68a19bb491daa8d54be9444a5f0bf68c34", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/of.js": "ea1421763926f248eee2e50f0cad19c1523dff0b34905243fcc8a8578f6c4582", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/omit.js": "03e6b388a3191d323ad8af97c1ec66b76335d1fc8b3969e6277d7e1ef48c5424", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/on.js": "b76d5eef062178a08b58aa78bec4d653b23e861f76acc7ec4a0c66d34dbbc57c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/once.js": "39d44ab2951729d186a290aa1cdaedc4e8413c5075cbd7d83a219ee2ceb37e6d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/or.js": "44290c4fd7a60d0ab4078ff6ebfb3494a7ec765a7f876d4e0d3ae2d101ba3761", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/otherwise.js": "1684ddecaf92ccca4e81a1185fb9a03145590bc3b412755daecd584450b8b98d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/over.js": "1bafb3f3adb80e842e3f85fbc9cec7d1ff45d74a521155ff874513e5ea656272", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pair.js": "a7a08517da7b9dbc795961b5fc61c841f3448357816f92d1c92f4b82b87c3e56", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/partial.js": "46a8e589c5c13e04548d0d608eae3e98536faa7a07cd21a85ad5bc4422d1ecb6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/partialObject.js": "888560badc3265a1f2a565679e384cd328fa67cd1f8593b327ea1e997685d6c2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/partialRight.js": "1f648463a8ea8bde88e2ba514db697c89f3d89797476df9d9d33c09416d5ee3e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/partition.js": "ce7bf928d78471bb2ab5a3cc4e8bba94fd2dc7eef4190f02ac006b7dd1f94483", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/path.js": "6e0f6fbfd48310ae97e8b7db1dc10f667792e00b472e918d48299b62c6bdc181", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pathEq.js": "210d42b3d630ee51ea8bf05cad1394c7bda25b8d84e3e8f1d745f7bb6580e9dd", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pathOr.js": "5393e6f1ce78d2d25fa40ecb31556299b3b204235f922fb10fa5bce3849d7c70", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pathSatisfies.js": "31ae1d1bb8d296ccdef738ffcb78931a522aab9d326e7352f74b9c49ce75a162", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/paths.js": "10e5e2efea2f6846d9599a733765142233c8462dc840f75bdfa49a79850ce93a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pick.js": "ff81a353b32587e28436e620a01babdb98efd8a299b8f6a8df6ac25ce1b94832", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pickAll.js": "ca62395b63fd42c0ef68613f49838eaa2bb0ea1ead3cc31e814aab3ee578c8bc", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pickBy.js": "276d46c2b30bb150815d8216aa4d4f7b13064c85d2f94f08acaf3d7d819b879a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pipe.js": "ec4af7b8717bab5ffbd64214f307e2e1a5588422c7aa135f07ab889f5b5b3c4c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pipeWith.js": "d29c2efcd05dff0fcd7d063b6765b33c23a00ac111277d57b6c71c7ce9995783", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/pluck.js": "236c11ce90670c59b40c8282da26488700ce9526752e567019c3f91649efc62d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/prepend.js": "8e1817d3905234e1d8beab695d1a887c58d533f9872409022d59e4668c518ca6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/product.js": "00a1029c71c3d74687189cb0f230c1b11e6148550cdb7a43f921b70eebefd8e2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/project.js": "95e3607631966e481137241ab3d5ce28ecf7c356180f1f0c64e3e17f7e7b5144", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/promap.js": "5169a3c1c4bc18bfee15843937a2044820f0f5ccb0b756f9dab38b82bdd64fb2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/prop.js": "60fadfc312383bf90b89bf030c491c2f9990f7c36195c77ce9d129cd03ad379e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/propEq.js": "e2cb2122ea211c4864aa9e636b8b9bdde35c1cc75299609bc5ef55d04d2b139b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/propIs.js": "6c352c6598300cdc3cb25d05e3b4811ea5408b83121b7457c846e11c60355da5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/propOr.js": "ab65492b7f11b10016375839f0de80817db82f00f88913c4c958d71a67e25c44", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/propSatisfies.js": "7964b6c9bb6372c6c46c2f7ca7ecb2766aa8f6506a0852e21f0856b057b0792f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/props.js": "e1472fc2129790daf2d8926fcf276d06e5d8d399e9ac2ecdb0ab9c0b8626451d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/range.js": "a5474da8ed452f871e284152fadab940d7818a0094fab8240c6c6a1ab3aaba11", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/reduce.js": "d9061c7d234998782c985b95ea8949cdb245b70663d2a934a8a8de0d4de9c05d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/reduceBy.js": "2d02bc459e682b552e6b79b00b35e4ddeadb71468e6c8be6dffbd55465e5db9e", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/reduceRight.js": "a304e786dd69bd64d6100d8b4cb5a9b462b9b6da2e6cdb132fe624bd26985470", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/reduceWhile.js": "8f1502a371a2329443ab545d302ac125a0bac5154575d84bd87bb783a9a4e916", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/reduced.js": "dc58f955c3cfa8bb49db99331cca4bbaf593b2ff93e1a65c367b48fea02369b8", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/reject.js": "9d60a4d7faec58937801a88901aae4ff36e4363066b885c113cfa2872bfc7d83", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/remove.js": "41fd2e37f5cbd89d5a03ebd74a302f5eed6fe65f7e62e096940c9f312230a205", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/repeat.js": "ca9ee93b0bf120ddcadc6392658899ea04ae3c53603f5440529f6be23051ecb9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/replace.js": "bf2a3c64fb797528ac7038c358eb2a4abd899c9e9fc5ccac5c9974d33f1ed828", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/reverse.js": "8e7eedc3a061105f9eb3d049e6eb439ddecff3c68c396ec74b95067b57c11f41", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/scan.js": "efff8bc96cda4d073cd515cf2f6b8997128ee3623dfbf068fe82399335724467", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/sequence.js": "a4589d32bf479e32f8ae724704cd7f2da30e1cf40761812b74b51be56603755d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/set.js": "1529e3b9939e47d4c472d9109919eb69023902c4a7f512a9867dd8ceb63bce5b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/slice.js": "6338a85bc03108cefb047b8da4560560d32452c15806cb4b9346e854422c2c5c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/sort.js": "5da481cae31593cd22132484dd8abe9cb2c13497cdc165138553b2d05290381f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/sortBy.js": "f9b1bc79cf1e58719e958e7e9cabced4b07efc3746dd8dace2bc1b13ac8d844a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/sortWith.js": "9b9a2b929c9ee1527ebd396018424029856eb522f6b631a409ca79ad151b1214", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/split.js": "1c1451902866598c519c83b5d25c7984baa27cc0982221a06bb4eab3699a6c05", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/splitAt.js": "dee211568c602898afbb49f8fff137b74e552bd46822061fbffcabac703ef93d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/splitEvery.js": "8d2df436be887b249ffc2d0f8eaf484a3119a0a3c250470b9fd3228bc549e41f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/splitWhen.js": "c8f1f962b74ac56c3613a5b3891a6ca241b16531013540d646315defc68109a7", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/splitWhenever.js": "914fe5786f583a3bc4ebdd0ab940716fc9c517c6de6597267cf1ddf0f0fcb04a", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/startsWith.js": "3fcd61621913c4f0ad130d99bda3c114abfa90cf2b14c994997e69ad689a745c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/subtract.js": "e4436de0605efcdd800068fb41a52768cd0105455debabb12ac57f369c7edafb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/sum.js": "a924a281f0ae40164350080d77218a61d5f2e23a0915717897ea9da548741d5c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/symmetricDifference.js": "b38e06671a7c7cbe31f820d6baa81a7e9488feadb76761e9f40a4db5aa898868", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/symmetricDifferenceWith.js": "24ee2e88d2ae27d32aff7534d69df43e84577aba29423a374d105cb1d915b1a9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/tail.js": "8b3056fee001bf8bf025cb9b1f656d7e51b3319616551692826716988d446c62", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/take.js": "7d63665c2b4ca089898fb32e157380eb7f7fae64292d3e476cdda44017aae0d9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/takeLast.js": "07eebe91969563cb4a0ba615fe896b19b5437b0509f292f1eadbae5aa271e902", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/takeLastWhile.js": "9855485f2e41fad8fcbaee5da05e2861b384e460873854065eab0d4b1af32873", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/takeWhile.js": "6fbe52b711e4f529f6ef1fed47b0f955b104c5b8574af25388767fde22daded3", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/tap.js": "711d7e7b0b988c0fb1056bb28546442216a2112c6cead7e72f2e676dc2a02496", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/test.js": "e275f3b1eab7a0094c61dd7a6d5722d45c868407957a4cf6ff082103672c19ac", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/thunkify.js": "3d85481b52007df192b2e2add0c24e0ec7a2e0c19fe97d179f9c9d3c1dce6559", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/times.js": "04698c26c3c5c5ae075001976dc4f9bc79b31f0d9e074c125d1033f79c4e9ed9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/toLower.js": "856c9897da372c53a9ea9bb62554a95723c038cb0acb6565ab5e759c64f2afa0", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/toPairs.js": "bc31cbf69bcdebe53746b870766fd9e44e642f588cb42292647d8ba8f28eac23", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/toPairsIn.js": "68ea5f619efba23d2ba14618f52a753d8e48b08d7c21a0e14409509a62fab7ac", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/toString.js": "6e05e4f41a92533031cf3d414f4f548a0ce7a2ca846d4b1588efe0e246fa597c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/toUpper.js": "a6144b426d9b3f26d96f8d1e35fa9e69a0811797ee9c321bfc87ebb11dc672a5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/transduce.js": "5ac0c4fdc079ccc0aa9322f6d42a6d3e2ea6e68379cf2b6b2921e654b3b957d5", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/transpose.js": "e5f35926cc5dad4eb16232604586121d5fe5f074695c0348b1caa4eff2a232eb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/traverse.js": "130de5570a1d9884e1c9055b0b49c954b0ed50861b984b02147ecc86ee91843d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/trim.js": "e3c4f90371a4d306ee851b0b7eeaf60ac3f89473361b26e4185cf182f7b440c2", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/tryCatch.js": "1e5fa41939c58c4fbaaff873d08dc5ceedb8d3783791b451a498c695131a5723", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/type.js": "21080ce17378149b100374d4e4066b8ad62795f5cd8cd14f51304b24750ed06c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/unapply.js": "7712b047039a8dbb54c8e2d941868a4cad0cd5b8d740f9d0f57a400c4f7f6020", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/unary.js": "8bdf32559274bccf5b71fa9eda955d584bcf452ef11c22819c724827766f7a4b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/uncurryN.js": "2d801d194ce5ee77474e3c1d9bc20015a9b0e2268e340d090c8ae983111d80b9", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/unfold.js": "8a6aa35bf3634acd7b1483f492e40bcdf4144aee371b04e21988d80c51ea1806", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/union.js": "6ccc1a0367cd64b6383a1ff70710abc4994a930fb35d79adbba86ba62ab2da2f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/unionWith.js": "91ffe1040d3b745e395f67a09d9754512a3b17df60eb0ebcffa440901ef38d2f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/uniq.js": "96389b95fd864d7c0a2b6298bce1fc57f1f794a3439f7f288303b582ace5ef20", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/uniqBy.js": "6059b02c9b4eee0fbdcdb0517ac5e463c51395345ee13a7cfa33f89dab5bdc42", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/uniqWith.js": "c2990360b02d9ae5dee4d87645444615df1ab08b469c2fa154657406edbe9d58", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/unless.js": "850b9d5be2bf30beafcb4e527b2b9807782cef2eef603b2de79d78c90f93f004", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/unnest.js": "3344cca4f2659488bda492a3d4c24a88a213cc26cd0326a57c5f9fd82de87d24", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/until.js": "75405845374a431dd724ec27fcb83daeaa1eb286e31fd6d452991b398e7ea98c", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/update.js": "d6103807ab8b29871ede6d8263916a3aa67ed2c77dd3769e8f181b0913c908b6", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/useWith.js": "79f096300ab6f18859c5cd1d7428f47c012ff878be1eef3dc8b65d2b80d02a35", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/values.js": "b8b65a949541fd40dab4fd27989e31aa389712f243d5f9e52b9db7c9411e6aac", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/valuesIn.js": "d89b5ef0a181ec77320e854c9bfb45ab42dd56a8bf38a5353f2e645ed7b8e4d8", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/view.js": "f9d46719c726def19c0decec8d993544bc238cdc75908a5333502e5af22861cb", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/when.js": "583b46d6b5cd606caf8b6245423efa451294dff030c104db86c48c2024a2d26f", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/where.js": "8bb8b7ce295bc07bdd5dab752876d6f00b40c8d62491320563e0561ddfde1ea4", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/whereAny.js": "f7551df5fab9b5e277251d9cd67655d2de3d58582dc7229f2a9b3102e28c990d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/whereEq.js": "3756da145b2b7cc93bbf49f1b6c7c358154ba7565baff9eb4e486e4207f1c31b", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/without.js": "db7b970efaeec230d056ed0ae25f9eca500fb5858efd4e61c2f695c8fdac4c08", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/xor.js": "7799612731265355fc3a9b407b12628e4426bc9b70b6b874e6106ba61a66f71d", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/xprod.js": "ecac5f7263ddad3484c6802097a6d0957b6107ce8e52eea0f27a04be50a16833", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/zip.js": "29a04e7dd0a012e391fc595900b4cb0124a13c738f4e6f4489c7173b4a6642dc", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/zipObj.js": "c463fe415ecf647561a12ed9dd3444a0be4dd642e787e156fe8caf7fee0ce4ca", + "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/zipWith.js": "2081388ae101a01f60589f0a74b7a8e75fdc7a6416c224673f197633750041ec" + }, "workspace": { "dependencies": [ "jsr:@std/dotenv@^0.224.2" @@ -1741,7 +2080,6 @@ "npm:@types/ramda@^0.30.0", "npm:esrun@^3.2.26", "npm:grammy@^1.25.0", - "npm:ramda@^0.30.1", "npm:typescript@^5.5.2", "npm:vite-tsconfig-paths@^4.3.2", "npm:vitest@^1.6.0" diff --git a/deps.ts b/deps.ts index e69de29..72c34df 100644 --- a/deps.ts +++ b/deps.ts @@ -0,0 +1 @@ +export * as R from "https://x.nest.land/ramda@0.27.2/mod.ts" \ No newline at end of file diff --git a/package.json b/package.json index fc827dd..7ef1771 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,7 @@ "@dotenvx/dotenvx": "^1.5.0", "@grammyjs/conversations": "^1.2.0", "@grammyjs/storage-free": "^2.4.2", - "grammy": "^1.25.0", - "ramda": "^0.30.1" + "grammy": "^1.25.0" }, "devDependencies": { "@faker-js/faker": "^8.4.1", diff --git a/src/preference/setup.ts b/src/preference/setup.ts index b84ada6..1e7b2c4 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,8 +1,9 @@ import { getSessionAdapter } from '@/utils.ts' import { conversations, createConversation } from '@grammyjs/conversations' import { Composer, session } from 'grammy' -import * as R from 'ramda' + import { ConversationContext, PreferencesContext } from '@/types/sessionData.ts' +import { R } from '@deps' const composer = new Composer() diff --git a/src/utils.ts b/src/utils.ts index 59cc2e7..fbc2b61 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,8 +1,9 @@ import { freeStorage } from '@grammyjs/storage-free' import { MemorySessionStorage } from 'grammy' -import * as R from 'ramda' + import { SessionData } from '@/types/sessionData.ts' import { DENO_ENV } from '@/config.ts' +import { R } from '@deps' export const getSessionAdapter = (token?: string) => R.ifElse( From 51bf10bc2153359f990ea037b017572abdc9b9c5 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 3 Jul 2024 20:01:14 +0200 Subject: [PATCH 052/152] chore!: add faker deno module --- deno.jsonc | 2 ++ deno.lock | 4 +++- dev_deps.ts | 1 + env.d.ts | 0 package.json | 1 - src/__tests__/getTopStories.spec.ts | 6 +++--- 6 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 dev_deps.ts delete mode 100644 env.d.ts diff --git a/deno.jsonc b/deno.jsonc index 8b75c86..d38c471 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -3,6 +3,7 @@ "@/": "./src/", "@bot/": "./src/bot/", "@deps": "./deps.ts", + "@dev_deps": "./dev_deps.ts", "@std/dotenv": "jsr:@std/dotenv@^0.224.2" }, "fmt": { @@ -15,6 +16,7 @@ "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", "test": "deno test" }, + "exclude": ["dist", "node_modules"], "compilerOptions": { "lib": ["deno.window", "DOM", "DOM.Iterable", "ESNext"], "strict": true, diff --git a/deno.lock b/deno.lock index 12b14cf..5018de6 100644 --- a/deno.lock +++ b/deno.lock @@ -8,6 +8,7 @@ "npm:@grammyjs/conversations@^1.2.0": "npm:@grammyjs/conversations@1.2.0_grammy@1.26.0", "npm:@grammyjs/storage-free@^2.4.2": "npm:@grammyjs/storage-free@2.4.2", "npm:@trivago/prettier-plugin-sort-imports@^4.3.0": "npm:@trivago/prettier-plugin-sort-imports@4.3.0_prettier@3.3.2", + "npm:@types/node": "npm:@types/node@18.16.19", "npm:@types/node-fetch@^2.6.11": "npm:@types/node-fetch@2.6.11", "npm:@types/ramda@^0.30.0": "npm:@types/ramda@0.30.0", "npm:esrun@^3.2.26": "npm:esrun@3.2.26", @@ -1725,6 +1726,8 @@ "https://x.nest.land/ramda@0.27.2/mod.ts": "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts" }, "remote": { + "https://esm.sh/@faker-js/faker@v8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", + "https://esm.sh/v135/@faker-js/faker@8.4.0/denonext/faker.mjs": "6d41425710d5f98197ac4842005814ca5375aaa0f57a504b3e138a4a5e1efa02", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "14262bdcea26c261f2f6490e733b792af9d3ae3582a4d09ca5bab0479b48ca40", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/F.js": "cf0f5fdb08048909e49bb6f222f6e2f92db8d4dc0dd24900864eaf69c3746e3d", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/T.js": "f96ac2cdaeedf374fb932a4ec368f0566143f0c2d028919976c41c6ee53c0515", @@ -2072,7 +2075,6 @@ "packageJson": { "dependencies": [ "npm:@dotenvx/dotenvx@^1.5.0", - "npm:@faker-js/faker@^8.4.1", "npm:@grammyjs/conversations@^1.2.0", "npm:@grammyjs/storage-free@^2.4.2", "npm:@trivago/prettier-plugin-sort-imports@^4.3.0", diff --git a/dev_deps.ts b/dev_deps.ts new file mode 100644 index 0000000..0ec17f7 --- /dev/null +++ b/dev_deps.ts @@ -0,0 +1 @@ +export { faker } from "https://esm.sh/@faker-js/faker@v8.4.0" \ No newline at end of file diff --git a/env.d.ts b/env.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/package.json b/package.json index 7ef1771..c598e81 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "grammy": "^1.25.0" }, "devDependencies": { - "@faker-js/faker": "^8.4.1", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/node-fetch": "^2.6.11", "@types/ramda": "^0.30.0", diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts index f24cadc..9a172f0 100644 --- a/src/__tests__/getTopStories.spec.ts +++ b/src/__tests__/getTopStories.spec.ts @@ -1,12 +1,12 @@ -import { getTopStories } from '@/api' -import { faker } from '@faker-js/faker' +import { faker } from '@dev_deps' +import { getTopStories } from '@/api.ts' describe('getTopStories', () => { it('should return an array of top stories', async () => { vi.spyOn(global, 'fetch').mockResolvedValueOnce({ json: () => Promise.resolve( - faker.helpers.multiple(faker.number.int, { count: 500 }), + faker.helpers.multiple(faker.number.int, { count: 500 }), ), } as any) From 96f520bff8d7a01f6bc4f5bbbcd146f764aae5b2 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 3 Jul 2024 20:49:44 +0200 Subject: [PATCH 053/152] chore!: add grammy from deno --- deno.jsonc | 9 +- deno.lock | 551 +------ deps.ts | 5 +- package-lock.json | 3313 +++++--------------------------------- package.json | 11 - src/bot.ts | 2 +- src/preference/setup.ts | 4 +- src/types/sessionData.ts | 3 +- src/utils.ts | 5 +- vitest.config.ts | 12 - 10 files changed, 517 insertions(+), 3398 deletions(-) delete mode 100644 vitest.config.ts diff --git a/deno.jsonc b/deno.jsonc index d38c471..164816c 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -10,7 +10,14 @@ "lineWidth": 80, "include": ["src/**/*.ts"], "semiColons": false, - "singleQuote": true + "singleQuote": true, + "proseWrap": "preserve", + "exclude": [ + "./node_modules/", + "./out/", + "./package-lock.json", + "./test/cov_profile" + ] }, "tasks": { "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", diff --git a/deno.lock b/deno.lock index 5018de6..0654a9e 100644 --- a/deno.lock +++ b/deno.lock @@ -7,13 +7,9 @@ "npm:@faker-js/faker@^8.4.1": "npm:@faker-js/faker@8.4.1", "npm:@grammyjs/conversations@^1.2.0": "npm:@grammyjs/conversations@1.2.0_grammy@1.26.0", "npm:@grammyjs/storage-free@^2.4.2": "npm:@grammyjs/storage-free@2.4.2", - "npm:@trivago/prettier-plugin-sort-imports@^4.3.0": "npm:@trivago/prettier-plugin-sort-imports@4.3.0_prettier@3.3.2", - "npm:@types/node": "npm:@types/node@18.16.19", - "npm:@types/node-fetch@^2.6.11": "npm:@types/node-fetch@2.6.11", - "npm:@types/ramda@^0.30.0": "npm:@types/ramda@0.30.0", - "npm:esrun@^3.2.26": "npm:esrun@3.2.26", "npm:grammy@^1.25.0": "npm:grammy@1.26.0", "npm:typescript@^5.5.2": "npm:typescript@5.5.3", + "npm:vite-tsconfig-paths": "npm:vite-tsconfig-paths@4.3.2_typescript@5.5.3", "npm:vite-tsconfig-paths@^4.3.2": "npm:vite-tsconfig-paths@4.3.2_typescript@5.5.3", "npm:vitest@^1.6.0": "npm:vitest@1.6.0" }, @@ -23,114 +19,6 @@ } }, "npm": { - "@babel/code-frame@7.24.7": { - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dependencies": { - "@babel/highlight": "@babel/highlight@7.24.7", - "picocolors": "picocolors@1.0.1" - } - }, - "@babel/generator@7.17.7": { - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", - "dependencies": { - "@babel/types": "@babel/types@7.17.0", - "jsesc": "jsesc@2.5.2", - "source-map": "source-map@0.5.7" - } - }, - "@babel/generator@7.24.7": { - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", - "dependencies": { - "@babel/types": "@babel/types@7.24.7", - "@jridgewell/gen-mapping": "@jridgewell/gen-mapping@0.3.5", - "@jridgewell/trace-mapping": "@jridgewell/trace-mapping@0.3.25", - "jsesc": "jsesc@2.5.2" - } - }, - "@babel/helper-environment-visitor@7.24.7": { - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dependencies": { - "@babel/types": "@babel/types@7.24.7" - } - }, - "@babel/helper-function-name@7.24.7": { - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dependencies": { - "@babel/template": "@babel/template@7.24.7", - "@babel/types": "@babel/types@7.24.7" - } - }, - "@babel/helper-hoist-variables@7.24.7": { - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dependencies": { - "@babel/types": "@babel/types@7.24.7" - } - }, - "@babel/helper-split-export-declaration@7.24.7": { - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dependencies": { - "@babel/types": "@babel/types@7.24.7" - } - }, - "@babel/helper-string-parser@7.24.7": { - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", - "dependencies": {} - }, - "@babel/helper-validator-identifier@7.24.7": { - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dependencies": {} - }, - "@babel/highlight@7.24.7": { - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dependencies": { - "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.24.7", - "chalk": "chalk@2.4.2", - "js-tokens": "js-tokens@4.0.0", - "picocolors": "picocolors@1.0.1" - } - }, - "@babel/parser@7.24.7": { - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dependencies": {} - }, - "@babel/template@7.24.7": { - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", - "dependencies": { - "@babel/code-frame": "@babel/code-frame@7.24.7", - "@babel/parser": "@babel/parser@7.24.7", - "@babel/types": "@babel/types@7.24.7" - } - }, - "@babel/traverse@7.23.2": { - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dependencies": { - "@babel/code-frame": "@babel/code-frame@7.24.7", - "@babel/generator": "@babel/generator@7.24.7", - "@babel/helper-environment-visitor": "@babel/helper-environment-visitor@7.24.7", - "@babel/helper-function-name": "@babel/helper-function-name@7.24.7", - "@babel/helper-hoist-variables": "@babel/helper-hoist-variables@7.24.7", - "@babel/helper-split-export-declaration": "@babel/helper-split-export-declaration@7.24.7", - "@babel/parser": "@babel/parser@7.24.7", - "@babel/types": "@babel/types@7.24.7", - "debug": "debug@4.3.5", - "globals": "globals@11.12.0" - } - }, - "@babel/types@7.17.0": { - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dependencies": { - "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.24.7", - "to-fast-properties": "to-fast-properties@2.0.0" - } - }, - "@babel/types@7.24.7": { - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dependencies": { - "@babel/helper-string-parser": "@babel/helper-string-parser@7.24.7", - "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.24.7", - "to-fast-properties": "to-fast-properties@2.0.0" - } - }, "@clack/core@0.3.4": { "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", "dependencies": { @@ -161,10 +49,6 @@ "which": "which@2.0.2" } }, - "@digitak/grubber@3.1.4": { - "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==", - "dependencies": {} - }, "@dotenvx/dotenvx@1.5.0_picomatch@3.0.1": { "integrity": "sha512-b+LLl13eGQgXnhe6jb3smZrByVrUm+R+kfy5e15Gq8PqROcU35Txz25PHUPLrAvOiTQHZhIHjwF0XI9CNGVxJQ==", "dependencies": { @@ -193,178 +77,90 @@ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "dependencies": {} }, - "@esbuild/android-arm64@0.17.19": { - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "dependencies": {} - }, "@esbuild/android-arm64@0.21.5": { "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "dependencies": {} }, - "@esbuild/android-arm@0.17.19": { - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "dependencies": {} - }, "@esbuild/android-arm@0.21.5": { "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "dependencies": {} }, - "@esbuild/android-x64@0.17.19": { - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "dependencies": {} - }, "@esbuild/android-x64@0.21.5": { "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "dependencies": {} }, - "@esbuild/darwin-arm64@0.17.19": { - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "dependencies": {} - }, "@esbuild/darwin-arm64@0.21.5": { "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "dependencies": {} }, - "@esbuild/darwin-x64@0.17.19": { - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "dependencies": {} - }, "@esbuild/darwin-x64@0.21.5": { "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "dependencies": {} }, - "@esbuild/freebsd-arm64@0.17.19": { - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "dependencies": {} - }, "@esbuild/freebsd-arm64@0.21.5": { "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "dependencies": {} }, - "@esbuild/freebsd-x64@0.17.19": { - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "dependencies": {} - }, "@esbuild/freebsd-x64@0.21.5": { "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "dependencies": {} }, - "@esbuild/linux-arm64@0.17.19": { - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "dependencies": {} - }, "@esbuild/linux-arm64@0.21.5": { "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "dependencies": {} }, - "@esbuild/linux-arm@0.17.19": { - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "dependencies": {} - }, "@esbuild/linux-arm@0.21.5": { "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "dependencies": {} }, - "@esbuild/linux-ia32@0.17.19": { - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "dependencies": {} - }, "@esbuild/linux-ia32@0.21.5": { "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "dependencies": {} }, - "@esbuild/linux-loong64@0.17.19": { - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "dependencies": {} - }, "@esbuild/linux-loong64@0.21.5": { "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "dependencies": {} }, - "@esbuild/linux-mips64el@0.17.19": { - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "dependencies": {} - }, "@esbuild/linux-mips64el@0.21.5": { "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "dependencies": {} }, - "@esbuild/linux-ppc64@0.17.19": { - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "dependencies": {} - }, "@esbuild/linux-ppc64@0.21.5": { "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "dependencies": {} }, - "@esbuild/linux-riscv64@0.17.19": { - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "dependencies": {} - }, "@esbuild/linux-riscv64@0.21.5": { "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "dependencies": {} }, - "@esbuild/linux-s390x@0.17.19": { - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "dependencies": {} - }, "@esbuild/linux-s390x@0.21.5": { "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "dependencies": {} }, - "@esbuild/linux-x64@0.17.19": { - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "dependencies": {} - }, "@esbuild/linux-x64@0.21.5": { "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "dependencies": {} }, - "@esbuild/netbsd-x64@0.17.19": { - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "dependencies": {} - }, "@esbuild/netbsd-x64@0.21.5": { "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "dependencies": {} }, - "@esbuild/openbsd-x64@0.17.19": { - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "dependencies": {} - }, "@esbuild/openbsd-x64@0.21.5": { "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "dependencies": {} }, - "@esbuild/sunos-x64@0.17.19": { - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "dependencies": {} - }, "@esbuild/sunos-x64@0.21.5": { "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "dependencies": {} }, - "@esbuild/win32-arm64@0.17.19": { - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "dependencies": {} - }, "@esbuild/win32-arm64@0.21.5": { "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "dependencies": {} }, - "@esbuild/win32-ia32@0.17.19": { - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "dependencies": {} - }, "@esbuild/win32-ia32@0.21.5": { "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "dependencies": {} }, - "@esbuild/win32-x64@0.17.19": { - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "dependencies": {} - }, "@esbuild/win32-x64@0.21.5": { "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "dependencies": {} @@ -401,33 +197,10 @@ "@sinclair/typebox": "@sinclair/typebox@0.27.8" } }, - "@jridgewell/gen-mapping@0.3.5": { - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dependencies": { - "@jridgewell/set-array": "@jridgewell/set-array@1.2.1", - "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15", - "@jridgewell/trace-mapping": "@jridgewell/trace-mapping@0.3.25" - } - }, - "@jridgewell/resolve-uri@3.1.2": { - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dependencies": {} - }, - "@jridgewell/set-array@1.2.1": { - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dependencies": {} - }, "@jridgewell/sourcemap-codec@1.4.15": { "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dependencies": {} }, - "@jridgewell/trace-mapping@0.3.25": { - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { - "@jridgewell/resolve-uri": "@jridgewell/resolve-uri@3.1.2", - "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15" - } - }, "@noble/ciphers@0.5.3": { "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", "dependencies": {} @@ -510,39 +283,10 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dependencies": {} }, - "@trivago/prettier-plugin-sort-imports@4.3.0_prettier@3.3.2": { - "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", - "dependencies": { - "@babel/generator": "@babel/generator@7.17.7", - "@babel/parser": "@babel/parser@7.24.7", - "@babel/traverse": "@babel/traverse@7.23.2", - "@babel/types": "@babel/types@7.17.0", - "javascript-natural-sort": "javascript-natural-sort@0.7.1", - "lodash": "lodash@4.17.21", - "prettier": "prettier@3.3.2" - } - }, "@types/estree@1.0.5": { "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dependencies": {} }, - "@types/node-fetch@2.6.11": { - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", - "dependencies": { - "@types/node": "@types/node@18.16.19", - "form-data": "form-data@4.0.0" - } - }, - "@types/node@18.16.19": { - "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", - "dependencies": {} - }, - "@types/ramda@0.30.0": { - "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", - "dependencies": { - "types-ramda": "types-ramda@0.30.1" - } - }, "@types/triple-beam@1.3.5": { "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", "dependencies": {} @@ -617,12 +361,6 @@ "uri-js": "uri-js@4.4.1" } }, - "ansi-styles@3.2.1": { - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "color-convert@1.9.3" - } - }, "ansi-styles@4.3.0": { "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { @@ -633,13 +371,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dependencies": {} }, - "anymatch@3.1.3": { - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "normalize-path@3.0.0", - "picomatch": "picomatch@2.3.1" - } - }, "arch@2.2.0": { "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dependencies": {} @@ -652,24 +383,10 @@ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dependencies": {} }, - "asynckit@0.4.0": { - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dependencies": {} - }, "atomically@1.7.0": { "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", "dependencies": {} }, - "binary-extensions@2.3.0": { - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dependencies": {} - }, - "braces@3.0.3": { - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "fill-range@7.1.1" - } - }, "cac@6.7.14": { "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dependencies": {} @@ -686,14 +403,6 @@ "type-detect": "type-detect@4.0.8" } }, - "chalk@2.4.2": { - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "ansi-styles@3.2.1", - "escape-string-regexp": "escape-string-regexp@1.0.5", - "supports-color": "supports-color@5.5.0" - } - }, "chalk@4.1.2": { "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { @@ -707,19 +416,6 @@ "get-func-name": "get-func-name@2.0.2" } }, - "chokidar@3.6.0": { - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dependencies": { - "anymatch": "anymatch@3.1.3", - "braces": "braces@3.0.3", - "fsevents": "fsevents@2.3.3", - "glob-parent": "glob-parent@5.1.2", - "is-binary-path": "is-binary-path@2.1.0", - "is-glob": "is-glob@4.0.3", - "normalize-path": "normalize-path@3.0.0", - "readdirp": "readdirp@3.6.0" - } - }, "color-convert@1.9.3": { "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { @@ -761,12 +457,6 @@ "text-hex": "text-hex@1.0.0" } }, - "combined-stream@1.0.8": { - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "delayed-stream@1.0.0" - } - }, "commander@11.1.0": { "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dependencies": {} @@ -824,10 +514,6 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dependencies": {} }, - "delayed-stream@1.0.0": { - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dependencies": {} - }, "diff-sequences@29.6.3": { "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dependencies": {} @@ -862,33 +548,6 @@ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dependencies": {} }, - "esbuild@0.17.19": { - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "dependencies": { - "@esbuild/android-arm": "@esbuild/android-arm@0.17.19", - "@esbuild/android-arm64": "@esbuild/android-arm64@0.17.19", - "@esbuild/android-x64": "@esbuild/android-x64@0.17.19", - "@esbuild/darwin-arm64": "@esbuild/darwin-arm64@0.17.19", - "@esbuild/darwin-x64": "@esbuild/darwin-x64@0.17.19", - "@esbuild/freebsd-arm64": "@esbuild/freebsd-arm64@0.17.19", - "@esbuild/freebsd-x64": "@esbuild/freebsd-x64@0.17.19", - "@esbuild/linux-arm": "@esbuild/linux-arm@0.17.19", - "@esbuild/linux-arm64": "@esbuild/linux-arm64@0.17.19", - "@esbuild/linux-ia32": "@esbuild/linux-ia32@0.17.19", - "@esbuild/linux-loong64": "@esbuild/linux-loong64@0.17.19", - "@esbuild/linux-mips64el": "@esbuild/linux-mips64el@0.17.19", - "@esbuild/linux-ppc64": "@esbuild/linux-ppc64@0.17.19", - "@esbuild/linux-riscv64": "@esbuild/linux-riscv64@0.17.19", - "@esbuild/linux-s390x": "@esbuild/linux-s390x@0.17.19", - "@esbuild/linux-x64": "@esbuild/linux-x64@0.17.19", - "@esbuild/netbsd-x64": "@esbuild/netbsd-x64@0.17.19", - "@esbuild/openbsd-x64": "@esbuild/openbsd-x64@0.17.19", - "@esbuild/sunos-x64": "@esbuild/sunos-x64@0.17.19", - "@esbuild/win32-arm64": "@esbuild/win32-arm64@0.17.19", - "@esbuild/win32-ia32": "@esbuild/win32-ia32@0.17.19", - "@esbuild/win32-x64": "@esbuild/win32-x64@0.17.19" - } - }, "esbuild@0.21.5": { "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dependencies": { @@ -917,18 +576,6 @@ "@esbuild/win32-x64": "@esbuild/win32-x64@0.21.5" } }, - "escape-string-regexp@1.0.5": { - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dependencies": {} - }, - "esrun@3.2.26": { - "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", - "dependencies": { - "@digitak/grubber": "@digitak/grubber@3.1.4", - "chokidar": "chokidar@3.6.0", - "esbuild": "esbuild@0.17.19" - } - }, "estree-walker@3.0.3": { "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dependencies": { @@ -981,12 +628,6 @@ "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", "dependencies": {} }, - "fill-range@7.1.1": { - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "to-regex-range@5.0.1" - } - }, "find-up@3.0.0": { "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dependencies": { @@ -997,14 +638,6 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "dependencies": {} }, - "form-data@4.0.0": { - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "asynckit@0.4.0", - "combined-stream": "combined-stream@1.0.8", - "mime-types": "mime-types@2.1.35" - } - }, "fsevents@2.3.3": { "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dependencies": {} @@ -1021,16 +654,6 @@ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dependencies": {} }, - "glob-parent@5.1.2": { - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "is-glob@4.0.3" - } - }, - "globals@11.12.0": { - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dependencies": {} - }, "globrex@0.1.2": { "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dependencies": {} @@ -1044,10 +667,6 @@ "node-fetch": "node-fetch@2.7.0" } }, - "has-flag@3.0.0": { - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dependencies": {} - }, "has-flag@4.0.0": { "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dependencies": {} @@ -1072,30 +691,10 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "dependencies": {} }, - "is-binary-path@2.1.0": { - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "binary-extensions@2.3.0" - } - }, "is-docker@2.2.1": { "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dependencies": {} }, - "is-extglob@2.1.1": { - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dependencies": {} - }, - "is-glob@4.0.3": { - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "is-extglob@2.1.1" - } - }, - "is-number@7.0.0": { - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dependencies": {} - }, "is-obj@2.0.0": { "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dependencies": {} @@ -1122,22 +721,10 @@ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dependencies": {} }, - "javascript-natural-sort@0.7.1": { - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", - "dependencies": {} - }, - "js-tokens@4.0.0": { - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dependencies": {} - }, "js-tokens@9.0.0": { "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", "dependencies": {} }, - "jsesc@2.5.2": { - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dependencies": {} - }, "json-schema-traverse@1.0.0": { "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dependencies": {} @@ -1164,10 +751,6 @@ "path-exists": "path-exists@3.0.0" } }, - "lodash@4.17.21": { - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dependencies": {} - }, "logform@2.6.0": { "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "dependencies": { @@ -1195,16 +778,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dependencies": {} }, - "mime-db@1.52.0": { - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dependencies": {} - }, - "mime-types@2.1.35": { - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "mime-db@1.52.0" - } - }, "mimic-fn@2.1.0": { "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dependencies": {} @@ -1240,10 +813,6 @@ "whatwg-url": "whatwg-url@5.0.0" } }, - "normalize-path@3.0.0": { - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dependencies": {} - }, "npm-run-path@4.0.1": { "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dependencies": { @@ -1338,10 +907,6 @@ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dependencies": {} }, - "picomatch@2.3.1": { - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dependencies": {} - }, "picomatch@3.0.1": { "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", "dependencies": {} @@ -1368,10 +933,6 @@ "source-map-js": "source-map-js@1.2.0" } }, - "prettier@3.3.2": { - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", - "dependencies": {} - }, "pretty-format@29.7.0": { "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { @@ -1396,12 +957,6 @@ "util-deprecate": "util-deprecate@1.0.2" } }, - "readdirp@3.6.0": { - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "picomatch@2.3.1" - } - }, "require-from-string@2.0.2": { "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dependencies": {} @@ -1477,10 +1032,6 @@ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dependencies": {} }, - "source-map@0.5.7": { - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dependencies": {} - }, "stack-trace@0.0.10": { "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dependencies": {} @@ -1513,12 +1064,6 @@ "js-tokens": "js-tokens@9.0.0" } }, - "supports-color@5.5.0": { - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "has-flag@3.0.0" - } - }, "supports-color@7.2.0": { "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { @@ -1541,16 +1086,6 @@ "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dependencies": {} }, - "to-fast-properties@2.0.0": { - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dependencies": {} - }, - "to-regex-range@5.0.1": { - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "is-number@7.0.0" - } - }, "tr46@0.0.3": { "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dependencies": {} @@ -1559,8 +1094,8 @@ "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", "dependencies": {} }, - "ts-toolbelt@9.6.0": { - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "tsconfck@3.1.1": { + "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", "dependencies": {} }, "tsconfck@3.1.1_typescript@5.5.3": { @@ -1573,12 +1108,6 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dependencies": {} }, - "types-ramda@0.30.1": { - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "dependencies": { - "ts-toolbelt": "ts-toolbelt@9.6.0" - } - }, "typescript@5.5.3": { "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dependencies": {} @@ -1613,6 +1142,14 @@ "vite": "vite@5.3.3" } }, + "vite-tsconfig-paths@4.3.2": { + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", + "dependencies": { + "debug": "debug@4.3.5", + "globrex": "globrex@0.1.2", + "tsconfck": "tsconfck@3.1.1" + } + }, "vite-tsconfig-paths@4.3.2_typescript@5.5.3": { "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dependencies": { @@ -1723,9 +1260,66 @@ }, "redirects": { "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts", + "https://deno.land/x/grammy_storages/free/src/mod.ts": "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts", + "https://lib.deno.dev/x/grammy@v1/mod.ts": "https://deno.land/x/grammy@v1.26.0/mod.ts", + "https://lib.deno.dev/x/grammy@v1/types.ts": "https://deno.land/x/grammy@v1.26.0/types.ts", "https://x.nest.land/ramda@0.27.2/mod.ts": "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts" }, "remote": { + "https://cdn.skypack.dev/-/debug@v4.3.4-o4liVvMlOnQWbLSYZMXw/dist=es2019,mode=imports/optimized/debug.js": "671100993996e39b501301a87000607916d4d2d9f8fc8e9c5200ae5ba64a1389", + "https://cdn.skypack.dev/-/ms@v2.1.2-giBDZ1IA5lmQ3ZXaa87V/dist=es2019,mode=imports/optimized/ms.js": "fd88e2d51900437011f1ad232f3393ce97db1b87a7844b3c58dd6d65562c1276", + "https://cdn.skypack.dev/debug@4.3.4": "7b1d010cc930f71b940ba5941da055bc181115229e29de7214bdb4425c68ea76", + "https://deno.land/std@0.211.0/path/_common/assert_path.ts": "2ca275f36ac1788b2acb60fb2b79cb06027198bc2ba6fb7e163efaedde98c297", + "https://deno.land/std@0.211.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", + "https://deno.land/std@0.211.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", + "https://deno.land/std@0.211.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", + "https://deno.land/std@0.211.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", + "https://deno.land/std@0.211.0/path/basename.ts": "5d341aadb7ada266e2280561692c165771d071c98746fcb66da928870cd47668", + "https://deno.land/std@0.211.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", + "https://deno.land/std@0.211.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", + "https://deno.land/std@0.211.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", + "https://deno.land/std@0.211.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", + "https://deno.land/x/grammy@v1.26.0/bot.ts": "291fec55778b8ff25112be28ee24ed3d68ea58f8a07e6fe9584953c242564ef3", + "https://deno.land/x/grammy@v1.26.0/composer.ts": "63adf2af7f1f32409d1a81688af5d5fe70551e0ccdfdfaae663cdac54a242a5b", + "https://deno.land/x/grammy@v1.26.0/context.ts": "24598580d65d9b55bef6db39ec9c796832248d0c59583d68d843d1a5c81f9a89", + "https://deno.land/x/grammy@v1.26.0/convenience/constants.ts": "1560129784be52f49aa0bea8716f09ed00dac367fef195be6a2c09bdfc43fb99", + "https://deno.land/x/grammy@v1.26.0/convenience/frameworks.ts": "69f343980c349f9552a022ae732b3d5de0894013df0fd304b4ad29bd62425dc1", + "https://deno.land/x/grammy@v1.26.0/convenience/inline_query.ts": "409d1940c7670708064efa495003bcbfdf6763a756b2e6303c464489fd3394ff", + "https://deno.land/x/grammy@v1.26.0/convenience/input_media.ts": "7af72a5fdb1af0417e31b1327003f536ddfdf64e06ab8bc7f5da6b574de38658", + "https://deno.land/x/grammy@v1.26.0/convenience/keyboard.ts": "6223ded897b1a02de2a35c5c2574415ca9bdf24538a136692e897ec51c16c76b", + "https://deno.land/x/grammy@v1.26.0/convenience/session.ts": "931fc31b58c6c9fee1d969505027e060fc5a2784a9219d9303da84e849532071", + "https://deno.land/x/grammy@v1.26.0/convenience/webhook.ts": "5ae7b9f2ea9e5b424009587d4232eb28f6e56d20ab20d49c7d9681af68dc7f13", + "https://deno.land/x/grammy@v1.26.0/core/api.ts": "358b8afc4529fa6f26bf1a04e296a842b56e534069750e904f336da2debb603c", + "https://deno.land/x/grammy@v1.26.0/core/client.ts": "df622a135e71229ffe722406850c9c08b90dcdd4d049b46926128599c73f9dc5", + "https://deno.land/x/grammy@v1.26.0/core/error.ts": "553ec19e1ec51d8161d7f54891d345533aa07232005575549e8b7c919ee4795e", + "https://deno.land/x/grammy@v1.26.0/core/payload.ts": "420e17c3c2830b5576ea187cfce77578fe09f1204b25c25ea2f220ca7c86e73b", + "https://deno.land/x/grammy@v1.26.0/filter.ts": "303564c516838c2ec05fa1ba83bba6feffa7b76caa85fd02c4ab586db252dba3", + "https://deno.land/x/grammy@v1.26.0/mod.ts": "7723e08709ff7fd01df3e463503e14e4fd1a581669380eed70351e1121e8a833", + "https://deno.land/x/grammy@v1.26.0/platform.deno.ts": "68272a7e1d9a2d74d8a45342526485dbc0531dee812f675d7f8a4e7fc8393028", + "https://deno.land/x/grammy@v1.26.0/types.deno.ts": "2dca831f286458ba2dcef2235e5177a09404e4a7db51bfdea93b95de48570ab2", + "https://deno.land/x/grammy@v1.26.0/types.ts": "729415590dfa188dbe924dea614dff4e976babdbabb28a307b869fc25777cdf0", + "https://deno.land/x/grammy_conversations@v1.2.0/conversation.ts": "4bcad06e2ac562969a7a6661bb1cf1477a3fe9e537c18419de65c456feb69499", + "https://deno.land/x/grammy_conversations@v1.2.0/deps.deno.ts": "c982798d7ca4cd3ebcd5a24319d03c5980dc47827b5a172a77022859abdb404e", + "https://deno.land/x/grammy_conversations@v1.2.0/form.ts": "d2d527fdcb26eb489b4aa1a183ae3aa14bf185a375ebf7d5c6ab8360e8b0e170", + "https://deno.land/x/grammy_conversations@v1.2.0/mod.ts": "4234b7a353ebb6770352c8b1fcafb0de40abd764cc44ae018f10b29c3a065b50", + "https://deno.land/x/grammy_conversations@v1.2.0/utils.ts": "139ebe78dbf078d3bbf8cbc78ad286125a08e7e7895d4985fff7be9cef328e20", + "https://deno.land/x/grammy_storages@v2.4.2/free/src/adapter.ts": "0a85a6363b12dd0f6d79d1ca469eb7677082050c2e60592441f929f95621dc0d", + "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts": "6485c5bf548fc73446f54f397660a59ffcaf0bcc465b6050c2c762848c2c0ba5", + "https://deno.land/x/grammy_types@v3.10.0/api.ts": "ae04d6628e3d25ae805bc07a19475065044fc44cde0a40877405bc3544d03a5f", + "https://deno.land/x/grammy_types@v3.10.0/inline.ts": "9bc165676a2bb984525adf2c457cdf5f432016b25c3d399dceedfeaf638dbf29", + "https://deno.land/x/grammy_types@v3.10.0/langs.ts": "5f5fd09c58ba3ae942dd7cea2696f95587d2032c1829bba4bca81762b7ef73b6", + "https://deno.land/x/grammy_types@v3.10.0/manage.ts": "bd92f57b8732a26eb247f270bca92415d23ba6c99761960e9698c220b43f2a02", + "https://deno.land/x/grammy_types@v3.10.0/markup.ts": "7430abcea68d294df73a433f621a37cf1281718d3e29e903ed1e474038c7489d", + "https://deno.land/x/grammy_types@v3.10.0/message.ts": "45bd78a7ce9c439d523464ca1b54f41fb760cb9e6ba4d0ca51f9cea9edc4097d", + "https://deno.land/x/grammy_types@v3.10.0/methods.ts": "52a745c874f6d7cbe6a063fcb3a84e7d82dd8030b8c77539c169348fa52da70d", + "https://deno.land/x/grammy_types@v3.10.0/mod.ts": "7ecea1d3f7085d64419b78183039c78d70d655aeaa8b07f118ffbfb823f5b0b7", + "https://deno.land/x/grammy_types@v3.10.0/passport.ts": "19820e7d6c279521f8bc8912d6a378239f73d4ab525453808994b5f44ef95215", + "https://deno.land/x/grammy_types@v3.10.0/payment.ts": "4eec1018bdfbd38f3ce4d7aed7761b9ca1e2b3bee503bdbca992dee6297c450d", + "https://deno.land/x/grammy_types@v3.10.0/settings.ts": "f8ff810da6f1007ed24cd504809bf46820229c395ff9bfc3e5c8ceaef5b2aae1", + "https://deno.land/x/grammy_types@v3.10.0/update.ts": "7033ebfbecf6fbbd2d68f7a3550c9b04e553228a2143104fc63c42dd7f8f6881", + "https://deno.land/x/oson@1.0.1/constructors.ts": "2b77dcdc8d8db5ece2860d1657f4dcef37dd761684f1d4b9535c7e56a0fbfcf6", + "https://deno.land/x/oson@1.0.1/mod.ts": "54e494dc517ce0de6c727c25d9731ccc748e8646c883e922dc5d656f523a4e5b", + "https://deno.land/x/oson@1.0.1/oson.ts": "ec3908ae5c9ceff7bfd869d95a2183b929b9d96fbff44b57d28d3b742d06a4a1", "https://esm.sh/@faker-js/faker@v8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", "https://esm.sh/v135/@faker-js/faker@8.4.0/denonext/faker.mjs": "6d41425710d5f98197ac4842005814ca5375aaa0f57a504b3e138a4a5e1efa02", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "14262bdcea26c261f2f6490e733b792af9d3ae3582a4d09ca5bab0479b48ca40", @@ -2074,15 +1668,6 @@ ], "packageJson": { "dependencies": [ - "npm:@dotenvx/dotenvx@^1.5.0", - "npm:@grammyjs/conversations@^1.2.0", - "npm:@grammyjs/storage-free@^2.4.2", - "npm:@trivago/prettier-plugin-sort-imports@^4.3.0", - "npm:@types/node-fetch@^2.6.11", - "npm:@types/ramda@^0.30.0", - "npm:esrun@^3.2.26", - "npm:grammy@^1.25.0", - "npm:typescript@^5.5.2", "npm:vite-tsconfig-paths@^4.3.2", "npm:vitest@^1.6.0" ] diff --git a/deps.ts b/deps.ts index 72c34df..139e34c 100644 --- a/deps.ts +++ b/deps.ts @@ -1 +1,4 @@ -export * as R from "https://x.nest.land/ramda@0.27.2/mod.ts" \ No newline at end of file +export * as R from "https://x.nest.land/ramda@0.27.2/mod.ts" +export * from "https://deno.land/x/grammy@v1.26.0/mod.ts"; +export * from "https://deno.land/x/grammy_conversations@v1.2.0/mod.ts"; +export * from "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f74e3fb..1ff7f8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,2436 +8,605 @@ "name": "hn-telegram-bot", "version": "1.0.0", "license": "ISC", - "dependencies": { - "@dotenvx/dotenvx": "^1.5.0", - "@grammyjs/conversations": "^1.2.0", - "@grammyjs/storage-free": "^2.4.2", - "grammy": "^1.25.0", - "ramda": "^0.30.1" - }, "devDependencies": { - "@faker-js/faker": "^8.4.1", - "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/node-fetch": "^2.6.11", - "@types/ramda": "^0.30.0", - "esrun": "^3.2.26", - "typescript": "^5.5.2", "vite-tsconfig-paths": "^4.3.2", "vitest": "^1.6.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/helper-environment-visitor/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=6.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } + "license": "MIT" }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=0.8.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true, - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@clack/core": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.4.tgz", - "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", - "license": "MIT", - "dependencies": { - "picocolors": "^1.0.0", - "sisteransi": "^1.0.5" - } - }, - "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "license": "MIT", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@deno/shim-deno": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@deno/shim-deno/-/shim-deno-0.16.1.tgz", - "integrity": "sha512-s9v0kzF5bm/o9TgdwvsraHx6QNllYrXXmKzgOG2lh4LFXnVMr2gpjK/c/ve6EflQn1MqImcWmVD8HAv5ahuuZQ==", - "license": "MIT", - "dependencies": { - "@deno/shim-deno-test": "^0.4.0", - "which": "^2.0.2" - } - }, - "node_modules/@deno/shim-deno-test": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@deno/shim-deno-test/-/shim-deno-test-0.4.0.tgz", - "integrity": "sha512-oYWcD7CpERZy/TXMTM9Tgh1HD/POHlbY9WpzmAk+5H8DohcxG415Qws8yLGlim3EaKBT2v3lJv01x4G0BosnaQ==", - "license": "MIT" - }, - "node_modules/@deno/shim-deno/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/@deno/shim-deno/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@digitak/grubber": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", - "integrity": "sha512-pqsnp2BUYlDoTXWG34HWgEJse/Eo1okRgNex8IG84wHrJp8h3SakeR5WhB4VxSA2+/D+frNYJ0ch3yXzsfNDoA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@dotenvx/dotenvx": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.5.0.tgz", - "integrity": "sha512-b+LLl13eGQgXnhe6jb3smZrByVrUm+R+kfy5e15Gq8PqROcU35Txz25PHUPLrAvOiTQHZhIHjwF0XI9CNGVxJQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@clack/core": "^0.3.4", - "arch": "^2.1.1", - "chalk": "^4.1.2", - "commander": "^11.1.0", - "conf": "^10.2.0", - "diff": "^5.2.0", - "dotenv": "^16.4.5", - "eciesjs": "^0.4.6", - "execa": "^5.1.1", - "fdir": "^6.1.1", - "ignore": "^5.3.0", - "is-wsl": "^2.1.1", - "object-treeify": "1.1.33", - "open": "^8.4.2", - "picomatch": "^3.0.1", - "undici": "^5.28.3", - "which": "^4.0.0", - "winston": "^3.11.0", - "xxhashjs": "^0.2.2" - }, - "bin": { - "dotenvx": "src/cli/dotenvx.js", - "git-dotenvx": "src/cli/dotenvx.js" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@faker-js/faker": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz", - "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/fakerjs" - } - ], - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0", - "npm": ">=6.14.13" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@grammyjs/conversations": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@grammyjs/conversations/-/conversations-1.2.0.tgz", - "integrity": "sha512-d06nGFPlcea4UqjOcxCm5rwiV74bZQVUWQl3YVQp5TwC0oCHNK+PXgqaKkVgkfcYSMyx3dADRBuBkcGt+yiyDA==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "o-son": "^1.0.1" - }, - "engines": { - "node": "^12.20.0 || >=14.13.1" - }, - "peerDependencies": { - "grammy": "^1.20.1" - } - }, - "node_modules/@grammyjs/storage-free": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@grammyjs/storage-free/-/storage-free-2.4.2.tgz", - "integrity": "sha512-apyZiHXxVOZQSITt5N279WFAus8kXkYFjASmsDHeHtD9M3sGfj2RYTNmYzPCMzhymD2NGuElunhh8w4geGfwaA==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.6" - } - }, - "node_modules/@grammyjs/types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.10.0.tgz", - "integrity": "sha512-TDWn0bjTzEqG5coxnbSOCOEEkeQ3RCmf6XgJ3TBBMbLmb9eyQM1Evr8XzqLwXr9IcQvHMVeQ/lS86lkvYeADvw==", - "license": "MIT" - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@noble/ciphers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", - "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", - "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@babel/generator": "7.17.7", - "@babel/parser": "^7.20.5", - "@babel/traverse": "7.23.2", - "@babel/types": "7.17.0", - "javascript-natural-sort": "0.7.1", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@vue/compiler-sfc": "3.x", - "prettier": "2.x - 3.x" - }, - "peerDependenciesMeta": { - "@vue/compiler-sfc": { - "optional": true - } - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/ramda": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.30.0.tgz", - "integrity": "sha512-DQtfqUbSB18iM9NHbQ++kVUDuBWHMr6T2FpW1XTiksYRGjq4WnNPZLt712OEHEBJs7aMyJ68Mf2kGMOP1srVVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "types-ramda": "^0.30.0" - } - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "license": "MIT" - }, - "node_modules/@vitest/expect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "chai": "^4.3.10" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "1.6.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/snapshot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^2.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "license": "MIT", - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "license": "MIT", - "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/confbox": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", - "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", - "license": "MIT" - }, - "node_modules/debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=0.4.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", + "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", "dev": true, "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~5.26.4" } }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "node_modules/@vitest/expect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", + "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", + "chai": "^4.3.10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" + "node_modules/@vitest/runner": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "1.6.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://opencollective.com/vitest" } }, - "node_modules/eciesjs": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.7.tgz", - "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, "license": "MIT", "dependencies": { - "@noble/ciphers": "^0.5.3", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "license": "MIT" - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "license": "MIT", - "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { - "node": ">=12" + "node": ">=12.20" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esrun": { - "version": "3.2.26", - "resolved": "https://registry.npmjs.org/esrun/-/esrun-3.2.26.tgz", - "integrity": "sha512-gDjP87qj4RW0BryZXPY3/L161hPo9uG6luBTjLsuHG3cKnhSMrzB7eNzSzvDyBLg7OgugyvzSgB2ov7mZ/oa7Q==", + "node_modules/@vitest/snapshot": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@digitak/grubber": "^3.1.4", - "chokidar": "^3.5.1", - "esbuild": "^0.17.4" - }, - "bin": { - "esrun": "bin.js" + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" }, - "engines": { - "node": ">=14.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/@vitest/spy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "tinyspy": "^2.2.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.1.1.tgz", - "integrity": "sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==", - "license": "MIT", - "peerDependencies": { - "picomatch": "3.x" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "url": "https://opencollective.com/vitest" } }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/@vitest/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "license": "MIT" - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 6" + "node": ">=0.4.0" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.4.0" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, "license": "MIT", "engines": { "node": "*" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, - "license": "MIT" - }, - "node_modules/grammy": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.26.0.tgz", - "integrity": "sha512-jrXKDU8UzcQaecteJxuXO80trAKkbmFhaTKIVIAyS/9pLxUyqaK98XjOJjL6t6b7cnLydJtYsAkRpkQ/TUxTrQ==", "license": "MIT", "dependencies": { - "@grammyjs/types": "3.10.0", - "abort-controller": "^3.0.0", - "debug": "^4.3.4", - "node-fetch": "^2.7.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" }, "engines": { - "node": "^12.20.0 || >=14.13.1" + "node": ">=4" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", + "dev": true, + "license": "MIT" }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">= 4" + "node": ">= 8" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "binary-extensions": "^2.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", "bin": { - "is-docker": "cli.js" + "node-which": "bin/node-which" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@types/estree": "^1.0.0" } }, - "node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=16" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "license": "BSD-2-Clause" - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, "license": "MIT" }, "node_modules/local-pkg": { @@ -2457,30 +626,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/logform": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", - "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -2505,39 +650,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/mlly": { "version": "1.7.1", @@ -2556,150 +670,33 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/o-son": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/o-son/-/o-son-1.0.4.tgz", - "integrity": "sha512-tdGKxZgiTexSv97/igC2m8Y6FljgwvwHW/Zy3ql3Jx6MPKrPKaBDLhV7rz8uuLjcDPw6Pxa2PVsnWwen59MmnQ==", - "license": "MIT", - "dependencies": { - "@deno/shim-deno": "~0.16.1" - } - }, - "node_modules/object-treeify": { - "version": "1.1.33", - "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", - "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2726,20 +723,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, "license": "ISC" }, - "node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/pkg-types": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", @@ -2752,79 +738,6 @@ "pathe": "^1.1.2" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/postcss": { "version": "8.4.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", @@ -2854,23 +767,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -2899,25 +795,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", - "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -2925,55 +802,6 @@ "dev": true, "license": "MIT" }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/rollup": { "version": "4.18.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", @@ -3010,51 +838,11 @@ "fsevents": "~2.3.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -3067,6 +855,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3079,43 +868,6 @@ "dev": true, "license": "ISC" }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", @@ -3126,15 +878,6 @@ "node": ">=0.10.0" } }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -3149,24 +892,6 @@ "dev": true, "license": "MIT" }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/strip-literal": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", @@ -3187,24 +912,6 @@ "dev": true, "license": "MIT" }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "license": "MIT" - }, "node_modules/tinybench": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", @@ -3232,51 +939,6 @@ "node": ">=14.0.0" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/ts-toolbelt": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/tsconfck": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", @@ -3308,22 +970,14 @@ "node": ">=4" } }, - "node_modules/types-ramda": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.30.1.tgz", - "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ts-toolbelt": "^9.6.0" - } - }, "node_modules/typescript": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "license": "Apache-2.0", + "optional": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3339,39 +993,14 @@ "dev": true, "license": "MIT" }, - "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true, - "license": "MIT" - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/vite": { "version": "5.3.2", @@ -4095,37 +1724,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, "node_modules/why-is-node-running": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", @@ -4142,51 +1740,6 @@ "engines": { "node": ">=8" } - }, - "node_modules/winston": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz", - "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", - "license": "MIT", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.7.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", - "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", - "license": "MIT", - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/xxhashjs": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", - "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", - "license": "MIT", - "dependencies": { - "cuint": "^0.2.2" - } } } } diff --git a/package.json b/package.json index c598e81..7b9c595 100644 --- a/package.json +++ b/package.json @@ -11,18 +11,7 @@ }, "author": "Mateo Sheshi", "license": "ISC", - "dependencies": { - "@dotenvx/dotenvx": "^1.5.0", - "@grammyjs/conversations": "^1.2.0", - "@grammyjs/storage-free": "^2.4.2", - "grammy": "^1.25.0" - }, "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/node-fetch": "^2.6.11", - "@types/ramda": "^0.30.0", - "esrun": "^3.2.26", - "typescript": "^5.5.2", "vite-tsconfig-paths": "^4.3.2", "vitest": "^1.6.0" } diff --git a/src/bot.ts b/src/bot.ts index 2eb80e7..44095f6 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,7 +1,7 @@ -import { Bot } from 'grammy' import setup from './preference/setup.ts' import { BOT_TOKEN } from './config.ts' import { PreferencesContext } from './types/sessionData.ts' +import { Bot } from '@deps' const bot = new Bot(BOT_TOKEN!) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 1e7b2c4..0230bd6 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,9 +1,7 @@ import { getSessionAdapter } from '@/utils.ts' -import { conversations, createConversation } from '@grammyjs/conversations' -import { Composer, session } from 'grammy' import { ConversationContext, PreferencesContext } from '@/types/sessionData.ts' -import { R } from '@deps' +import { Composer, conversations, createConversation, R, session } from '@deps' const composer = new Composer() diff --git a/src/types/sessionData.ts b/src/types/sessionData.ts index fcd1273..52dabb2 100644 --- a/src/types/sessionData.ts +++ b/src/types/sessionData.ts @@ -1,5 +1,4 @@ -import { Conversation, ConversationFlavor } from '@grammyjs/conversations' -import { Context, SessionFlavor } from 'grammy' +import { Context, SessionFlavor } from '@deps' export interface SessionData { preferences: string[] diff --git a/src/utils.ts b/src/utils.ts index fbc2b61..b2763be 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,9 +1,6 @@ -import { freeStorage } from '@grammyjs/storage-free' -import { MemorySessionStorage } from 'grammy' - import { SessionData } from '@/types/sessionData.ts' import { DENO_ENV } from '@/config.ts' -import { R } from '@deps' +import { freeStorage, MemorySessionStorage, R } from '@deps' export const getSessionAdapter = (token?: string) => R.ifElse( diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index 435aa66..0000000 --- a/vitest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vitest/config' -import tsconfigPaths from 'vite-tsconfig-paths' - -export default defineConfig({ - plugins: [tsconfigPaths()], - test: { - globals: true, - sequence: { - hooks: 'list', - }, - }, -}) From 047ad840a8cd43dce5ced1c8d118e3c8505c6d1d Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 4 Jul 2024 10:36:34 +0200 Subject: [PATCH 054/152] fix: use test flag on test task to retrieve right env file --- deno.jsonc | 25 +- deno.lock | 1302 +------------------- package-lock.json | 1745 --------------------------- package.json | 18 - src/__tests__/bot/setup.spec.ts | 190 --- src/__tests__/getItem.spec.ts | 40 - src/__tests__/getTopStories.spec.ts | 17 - src/__tests__/utils.spec.ts | 9 - src/config.ts | 16 +- 9 files changed, 79 insertions(+), 3283 deletions(-) delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 src/__tests__/bot/setup.spec.ts delete mode 100644 src/__tests__/getItem.spec.ts delete mode 100644 src/__tests__/getTopStories.spec.ts delete mode 100644 src/__tests__/utils.spec.ts diff --git a/deno.jsonc b/deno.jsonc index 164816c..dc45a6b 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -4,7 +4,10 @@ "@bot/": "./src/bot/", "@deps": "./deps.ts", "@dev_deps": "./dev_deps.ts", - "@std/dotenv": "jsr:@std/dotenv@^0.224.2" + "@std/assert": "jsr:@std/assert@^0.226.0", + "@std/dotenv": "jsr:@std/dotenv@^0.224.2", + "@std/testing": "jsr:@std/testing@^0.225.3", + "@std/cli": "https://deno.land/std@0.224.0/cli/mod.ts" }, "fmt": { "lineWidth": 80, @@ -12,23 +15,25 @@ "semiColons": false, "singleQuote": true, "proseWrap": "preserve", - "exclude": [ - "./node_modules/", - "./out/", - "./package-lock.json", - "./test/cov_profile" - ] + "exclude": [ + "./node_modules/", + "./dist/" + ] }, "tasks": { "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", - "test": "deno test" + "test": "deno test --watch --allow-read --allow-net --allow-env -- --test" + }, + "test": { + "include": [ + "src/**/*.spec.ts" + ] }, "exclude": ["dist", "node_modules"], "compilerOptions": { "lib": ["deno.window", "DOM", "DOM.Iterable", "ESNext"], "strict": true, "allowJs": true, - "checkJs": true, - "types": ["vitest/globals"] + "checkJs": true } } diff --git a/deno.lock b/deno.lock index 0654a9e..341e686 100644 --- a/deno.lock +++ b/deno.lock @@ -2,1265 +2,58 @@ "version": "3", "packages": { "specifiers": { + "jsr:@std/assert@1.0.0-rc.2": "jsr:@std/assert@1.0.0-rc.2", + "jsr:@std/assert@^0.226.0": "jsr:@std/assert@0.226.0", + "jsr:@std/async@^1.0.0-rc.2": "jsr:@std/async@1.0.0-rc.3", + "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.0-rc.2", "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", - "npm:@dotenvx/dotenvx@^1.5.0": "npm:@dotenvx/dotenvx@1.5.0_picomatch@3.0.1", - "npm:@faker-js/faker@^8.4.1": "npm:@faker-js/faker@8.4.1", - "npm:@grammyjs/conversations@^1.2.0": "npm:@grammyjs/conversations@1.2.0_grammy@1.26.0", - "npm:@grammyjs/storage-free@^2.4.2": "npm:@grammyjs/storage-free@2.4.2", - "npm:grammy@^1.25.0": "npm:grammy@1.26.0", - "npm:typescript@^5.5.2": "npm:typescript@5.5.3", - "npm:vite-tsconfig-paths": "npm:vite-tsconfig-paths@4.3.2_typescript@5.5.3", - "npm:vite-tsconfig-paths@^4.3.2": "npm:vite-tsconfig-paths@4.3.2_typescript@5.5.3", - "npm:vitest@^1.6.0": "npm:vitest@1.6.0" + "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", + "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", + "npm:@types/node": "npm:@types/node@18.16.19" }, "jsr": { - "@std/dotenv@0.224.2": { - "integrity": "29081695357e4534696c9e986b2560be29c141ccf52daa32b6c20ff5b5c64ab9" - } - }, - "npm": { - "@clack/core@0.3.4": { - "integrity": "sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==", - "dependencies": { - "picocolors": "picocolors@1.0.1", - "sisteransi": "sisteransi@1.0.5" - } - }, - "@colors/colors@1.6.0": { - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "dependencies": {} - }, - "@dabh/diagnostics@2.0.3": { - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "dependencies": { - "colorspace": "colorspace@1.1.4", - "enabled": "enabled@2.0.0", - "kuler": "kuler@2.0.0" - } - }, - "@deno/shim-deno-test@0.4.0": { - "integrity": "sha512-oYWcD7CpERZy/TXMTM9Tgh1HD/POHlbY9WpzmAk+5H8DohcxG415Qws8yLGlim3EaKBT2v3lJv01x4G0BosnaQ==", - "dependencies": {} - }, - "@deno/shim-deno@0.16.1": { - "integrity": "sha512-s9v0kzF5bm/o9TgdwvsraHx6QNllYrXXmKzgOG2lh4LFXnVMr2gpjK/c/ve6EflQn1MqImcWmVD8HAv5ahuuZQ==", - "dependencies": { - "@deno/shim-deno-test": "@deno/shim-deno-test@0.4.0", - "which": "which@2.0.2" - } - }, - "@dotenvx/dotenvx@1.5.0_picomatch@3.0.1": { - "integrity": "sha512-b+LLl13eGQgXnhe6jb3smZrByVrUm+R+kfy5e15Gq8PqROcU35Txz25PHUPLrAvOiTQHZhIHjwF0XI9CNGVxJQ==", - "dependencies": { - "@clack/core": "@clack/core@0.3.4", - "arch": "arch@2.2.0", - "chalk": "chalk@4.1.2", - "commander": "commander@11.1.0", - "conf": "conf@10.2.0_ajv@8.16.0", - "diff": "diff@5.2.0", - "dotenv": "dotenv@16.4.5", - "eciesjs": "eciesjs@0.4.7", - "execa": "execa@5.1.1", - "fdir": "fdir@6.1.1_picomatch@3.0.1", - "ignore": "ignore@5.3.1", - "is-wsl": "is-wsl@2.2.0", - "object-treeify": "object-treeify@1.1.33", - "open": "open@8.4.2", - "picomatch": "picomatch@3.0.1", - "undici": "undici@5.28.4", - "which": "which@4.0.0", - "winston": "winston@3.13.0", - "xxhashjs": "xxhashjs@0.2.2" - } - }, - "@esbuild/aix-ppc64@0.21.5": { - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "dependencies": {} - }, - "@esbuild/android-arm64@0.21.5": { - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "dependencies": {} - }, - "@esbuild/android-arm@0.21.5": { - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "dependencies": {} - }, - "@esbuild/android-x64@0.21.5": { - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "dependencies": {} - }, - "@esbuild/darwin-arm64@0.21.5": { - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "dependencies": {} - }, - "@esbuild/darwin-x64@0.21.5": { - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "dependencies": {} - }, - "@esbuild/freebsd-arm64@0.21.5": { - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "dependencies": {} - }, - "@esbuild/freebsd-x64@0.21.5": { - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "dependencies": {} - }, - "@esbuild/linux-arm64@0.21.5": { - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "dependencies": {} - }, - "@esbuild/linux-arm@0.21.5": { - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "dependencies": {} - }, - "@esbuild/linux-ia32@0.21.5": { - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "dependencies": {} - }, - "@esbuild/linux-loong64@0.21.5": { - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "dependencies": {} - }, - "@esbuild/linux-mips64el@0.21.5": { - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "dependencies": {} - }, - "@esbuild/linux-ppc64@0.21.5": { - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "dependencies": {} - }, - "@esbuild/linux-riscv64@0.21.5": { - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "dependencies": {} - }, - "@esbuild/linux-s390x@0.21.5": { - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "dependencies": {} - }, - "@esbuild/linux-x64@0.21.5": { - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "dependencies": {} - }, - "@esbuild/netbsd-x64@0.21.5": { - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "dependencies": {} - }, - "@esbuild/openbsd-x64@0.21.5": { - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "dependencies": {} - }, - "@esbuild/sunos-x64@0.21.5": { - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "dependencies": {} - }, - "@esbuild/win32-arm64@0.21.5": { - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "dependencies": {} - }, - "@esbuild/win32-ia32@0.21.5": { - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "dependencies": {} - }, - "@esbuild/win32-x64@0.21.5": { - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "dependencies": {} - }, - "@faker-js/faker@8.4.1": { - "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", - "dependencies": {} - }, - "@fastify/busboy@2.1.1": { - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dependencies": {} - }, - "@grammyjs/conversations@1.2.0_grammy@1.26.0": { - "integrity": "sha512-d06nGFPlcea4UqjOcxCm5rwiV74bZQVUWQl3YVQp5TwC0oCHNK+PXgqaKkVgkfcYSMyx3dADRBuBkcGt+yiyDA==", - "dependencies": { - "debug": "debug@4.3.5", - "grammy": "grammy@1.26.0", - "o-son": "o-son@1.0.4" - } - }, - "@grammyjs/storage-free@2.4.2": { - "integrity": "sha512-apyZiHXxVOZQSITt5N279WFAus8kXkYFjASmsDHeHtD9M3sGfj2RYTNmYzPCMzhymD2NGuElunhh8w4geGfwaA==", - "dependencies": { - "node-fetch": "node-fetch@2.7.0" - } - }, - "@grammyjs/types@3.10.0": { - "integrity": "sha512-TDWn0bjTzEqG5coxnbSOCOEEkeQ3RCmf6XgJ3TBBMbLmb9eyQM1Evr8XzqLwXr9IcQvHMVeQ/lS86lkvYeADvw==", - "dependencies": {} - }, - "@jest/schemas@29.6.3": { - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dependencies": { - "@sinclair/typebox": "@sinclair/typebox@0.27.8" - } - }, - "@jridgewell/sourcemap-codec@1.4.15": { - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dependencies": {} - }, - "@noble/ciphers@0.5.3": { - "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", - "dependencies": {} - }, - "@noble/curves@1.4.2": { - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dependencies": { - "@noble/hashes": "@noble/hashes@1.4.0" - } - }, - "@noble/hashes@1.4.0": { - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dependencies": {} - }, - "@rollup/rollup-android-arm-eabi@4.18.0": { - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", - "dependencies": {} - }, - "@rollup/rollup-android-arm64@4.18.0": { - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", - "dependencies": {} - }, - "@rollup/rollup-darwin-arm64@4.18.0": { - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", - "dependencies": {} - }, - "@rollup/rollup-darwin-x64@4.18.0": { - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", - "dependencies": {} - }, - "@rollup/rollup-linux-arm-gnueabihf@4.18.0": { - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", - "dependencies": {} - }, - "@rollup/rollup-linux-arm-musleabihf@4.18.0": { - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", - "dependencies": {} - }, - "@rollup/rollup-linux-arm64-gnu@4.18.0": { - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", - "dependencies": {} - }, - "@rollup/rollup-linux-arm64-musl@4.18.0": { - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", - "dependencies": {} - }, - "@rollup/rollup-linux-powerpc64le-gnu@4.18.0": { - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", - "dependencies": {} - }, - "@rollup/rollup-linux-riscv64-gnu@4.18.0": { - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", - "dependencies": {} - }, - "@rollup/rollup-linux-s390x-gnu@4.18.0": { - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", - "dependencies": {} - }, - "@rollup/rollup-linux-x64-gnu@4.18.0": { - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", - "dependencies": {} - }, - "@rollup/rollup-linux-x64-musl@4.18.0": { - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", - "dependencies": {} - }, - "@rollup/rollup-win32-arm64-msvc@4.18.0": { - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", - "dependencies": {} - }, - "@rollup/rollup-win32-ia32-msvc@4.18.0": { - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", - "dependencies": {} - }, - "@rollup/rollup-win32-x64-msvc@4.18.0": { - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", - "dependencies": {} - }, - "@sinclair/typebox@0.27.8": { - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dependencies": {} - }, - "@types/estree@1.0.5": { - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dependencies": {} - }, - "@types/triple-beam@1.3.5": { - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "dependencies": {} - }, - "@vitest/expect@1.6.0": { - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", - "dependencies": { - "@vitest/spy": "@vitest/spy@1.6.0", - "@vitest/utils": "@vitest/utils@1.6.0", - "chai": "chai@4.4.1" - } - }, - "@vitest/runner@1.6.0": { - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", - "dependencies": { - "@vitest/utils": "@vitest/utils@1.6.0", - "p-limit": "p-limit@5.0.0", - "pathe": "pathe@1.1.2" - } - }, - "@vitest/snapshot@1.6.0": { - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", - "dependencies": { - "magic-string": "magic-string@0.30.10", - "pathe": "pathe@1.1.2", - "pretty-format": "pretty-format@29.7.0" - } - }, - "@vitest/spy@1.6.0": { - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", - "dependencies": { - "tinyspy": "tinyspy@2.2.1" - } - }, - "@vitest/utils@1.6.0": { - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", - "dependencies": { - "diff-sequences": "diff-sequences@29.6.3", - "estree-walker": "estree-walker@3.0.3", - "loupe": "loupe@2.3.7", - "pretty-format": "pretty-format@29.7.0" - } - }, - "abort-controller@3.0.0": { - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "event-target-shim@5.0.1" - } - }, - "acorn-walk@8.3.3": { - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dependencies": { - "acorn": "acorn@8.12.1" - } - }, - "acorn@8.12.1": { - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dependencies": {} - }, - "ajv-formats@2.1.1_ajv@8.16.0": { - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dependencies": { - "ajv": "ajv@8.16.0" - } - }, - "ajv@8.16.0": { - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dependencies": { - "fast-deep-equal": "fast-deep-equal@3.1.3", - "json-schema-traverse": "json-schema-traverse@1.0.0", - "require-from-string": "require-from-string@2.0.2", - "uri-js": "uri-js@4.4.1" - } - }, - "ansi-styles@4.3.0": { - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "color-convert@2.0.1" - } - }, - "ansi-styles@5.2.0": { - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dependencies": {} - }, - "arch@2.2.0": { - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dependencies": {} - }, - "assertion-error@1.1.0": { - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dependencies": {} - }, - "async@3.2.5": { - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dependencies": {} - }, - "atomically@1.7.0": { - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dependencies": {} - }, - "cac@6.7.14": { - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dependencies": {} - }, - "chai@4.4.1": { - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", - "dependencies": { - "assertion-error": "assertion-error@1.1.0", - "check-error": "check-error@1.0.3", - "deep-eql": "deep-eql@4.1.4", - "get-func-name": "get-func-name@2.0.2", - "loupe": "loupe@2.3.7", - "pathval": "pathval@1.1.1", - "type-detect": "type-detect@4.0.8" - } + "@std/assert@0.226.0": { + "integrity": "0dfb5f7c7723c18cec118e080fec76ce15b4c31154b15ad2bd74822603ef75b3", + "dependencies": [ + "jsr:@std/internal@^1.0.0" + ] }, - "chalk@4.1.2": { - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "ansi-styles@4.3.0", - "supports-color": "supports-color@7.2.0" - } + "@std/assert@1.0.0-rc.2": { + "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3", + "dependencies": [ + "jsr:@std/internal@^1.0.0" + ] }, - "check-error@1.0.3": { - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dependencies": { - "get-func-name": "get-func-name@2.0.2" - } - }, - "color-convert@1.9.3": { - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "color-name@1.1.3" - } - }, - "color-convert@2.0.1": { - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "color-name@1.1.4" - } - }, - "color-name@1.1.3": { - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dependencies": {} - }, - "color-name@1.1.4": { - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dependencies": {} - }, - "color-string@1.9.1": { - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "color-name@1.1.4", - "simple-swizzle": "simple-swizzle@0.2.2" - } - }, - "color@3.2.1": { - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dependencies": { - "color-convert": "color-convert@1.9.3", - "color-string": "color-string@1.9.1" - } - }, - "colorspace@1.1.4": { - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "dependencies": { - "color": "color@3.2.1", - "text-hex": "text-hex@1.0.0" - } - }, - "commander@11.1.0": { - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "dependencies": {} - }, - "conf@10.2.0_ajv@8.16.0": { - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "dependencies": { - "ajv": "ajv@8.16.0", - "ajv-formats": "ajv-formats@2.1.1_ajv@8.16.0", - "atomically": "atomically@1.7.0", - "debounce-fn": "debounce-fn@4.0.0", - "dot-prop": "dot-prop@6.0.1", - "env-paths": "env-paths@2.2.1", - "json-schema-typed": "json-schema-typed@7.0.3", - "onetime": "onetime@5.1.2", - "pkg-up": "pkg-up@3.1.0", - "semver": "semver@7.6.2" - } - }, - "confbox@0.1.7": { - "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dependencies": {} - }, - "cross-spawn@7.0.3": { - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "path-key@3.1.1", - "shebang-command": "shebang-command@2.0.0", - "which": "which@2.0.2" - } - }, - "cuint@0.2.2": { - "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", - "dependencies": {} - }, - "debounce-fn@4.0.0": { - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dependencies": { - "mimic-fn": "mimic-fn@3.1.0" - } - }, - "debug@4.3.5": { - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dependencies": { - "ms": "ms@2.1.2" - } - }, - "deep-eql@4.1.4": { - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dependencies": { - "type-detect": "type-detect@4.0.8" - } - }, - "define-lazy-prop@2.0.0": { - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dependencies": {} - }, - "diff-sequences@29.6.3": { - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dependencies": {} - }, - "diff@5.2.0": { - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dependencies": {} - }, - "dot-prop@6.0.1": { - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dependencies": { - "is-obj": "is-obj@2.0.0" - } - }, - "dotenv@16.4.5": { - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "dependencies": {} - }, - "eciesjs@0.4.7": { - "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", - "dependencies": { - "@noble/ciphers": "@noble/ciphers@0.5.3", - "@noble/curves": "@noble/curves@1.4.2", - "@noble/hashes": "@noble/hashes@1.4.0" - } - }, - "enabled@2.0.0": { - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "dependencies": {} - }, - "env-paths@2.2.1": { - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dependencies": {} - }, - "esbuild@0.21.5": { - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dependencies": { - "@esbuild/aix-ppc64": "@esbuild/aix-ppc64@0.21.5", - "@esbuild/android-arm": "@esbuild/android-arm@0.21.5", - "@esbuild/android-arm64": "@esbuild/android-arm64@0.21.5", - "@esbuild/android-x64": "@esbuild/android-x64@0.21.5", - "@esbuild/darwin-arm64": "@esbuild/darwin-arm64@0.21.5", - "@esbuild/darwin-x64": "@esbuild/darwin-x64@0.21.5", - "@esbuild/freebsd-arm64": "@esbuild/freebsd-arm64@0.21.5", - "@esbuild/freebsd-x64": "@esbuild/freebsd-x64@0.21.5", - "@esbuild/linux-arm": "@esbuild/linux-arm@0.21.5", - "@esbuild/linux-arm64": "@esbuild/linux-arm64@0.21.5", - "@esbuild/linux-ia32": "@esbuild/linux-ia32@0.21.5", - "@esbuild/linux-loong64": "@esbuild/linux-loong64@0.21.5", - "@esbuild/linux-mips64el": "@esbuild/linux-mips64el@0.21.5", - "@esbuild/linux-ppc64": "@esbuild/linux-ppc64@0.21.5", - "@esbuild/linux-riscv64": "@esbuild/linux-riscv64@0.21.5", - "@esbuild/linux-s390x": "@esbuild/linux-s390x@0.21.5", - "@esbuild/linux-x64": "@esbuild/linux-x64@0.21.5", - "@esbuild/netbsd-x64": "@esbuild/netbsd-x64@0.21.5", - "@esbuild/openbsd-x64": "@esbuild/openbsd-x64@0.21.5", - "@esbuild/sunos-x64": "@esbuild/sunos-x64@0.21.5", - "@esbuild/win32-arm64": "@esbuild/win32-arm64@0.21.5", - "@esbuild/win32-ia32": "@esbuild/win32-ia32@0.21.5", - "@esbuild/win32-x64": "@esbuild/win32-x64@0.21.5" - } - }, - "estree-walker@3.0.3": { - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "@types/estree@1.0.5" - } - }, - "event-target-shim@5.0.1": { - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dependencies": {} - }, - "execa@5.1.1": { - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "cross-spawn@7.0.3", - "get-stream": "get-stream@6.0.1", - "human-signals": "human-signals@2.1.0", - "is-stream": "is-stream@2.0.1", - "merge-stream": "merge-stream@2.0.0", - "npm-run-path": "npm-run-path@4.0.1", - "onetime": "onetime@5.1.2", - "signal-exit": "signal-exit@3.0.7", - "strip-final-newline": "strip-final-newline@2.0.0" - } - }, - "execa@8.0.1": { - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dependencies": { - "cross-spawn": "cross-spawn@7.0.3", - "get-stream": "get-stream@8.0.1", - "human-signals": "human-signals@5.0.0", - "is-stream": "is-stream@3.0.0", - "merge-stream": "merge-stream@2.0.0", - "npm-run-path": "npm-run-path@5.3.0", - "onetime": "onetime@6.0.0", - "signal-exit": "signal-exit@4.1.0", - "strip-final-newline": "strip-final-newline@3.0.0" - } - }, - "fast-deep-equal@3.1.3": { - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dependencies": {} - }, - "fdir@6.1.1_picomatch@3.0.1": { - "integrity": "sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==", - "dependencies": { - "picomatch": "picomatch@3.0.1" - } - }, - "fecha@4.2.3": { - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "dependencies": {} + "@std/async@1.0.0-rc.3": { + "integrity": "f0f1cb8cca0981c1ed0a5cf1b264bc3f0a44129e53a94be1e80cebeb2817633b" }, - "find-up@3.0.0": { - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "locate-path@3.0.0" - } + "@std/data-structures@1.0.0-rc.2": { + "integrity": "f302a70a30a62bdf569830285ae7d37b15d7bd88c1744acceb91a56016f898f8" }, - "fn.name@1.1.0": { - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "dependencies": {} - }, - "fsevents@2.3.3": { - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dependencies": {} - }, - "get-func-name@2.0.2": { - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dependencies": {} - }, - "get-stream@6.0.1": { - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dependencies": {} - }, - "get-stream@8.0.1": { - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dependencies": {} - }, - "globrex@0.1.2": { - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dependencies": {} - }, - "grammy@1.26.0": { - "integrity": "sha512-jrXKDU8UzcQaecteJxuXO80trAKkbmFhaTKIVIAyS/9pLxUyqaK98XjOJjL6t6b7cnLydJtYsAkRpkQ/TUxTrQ==", - "dependencies": { - "@grammyjs/types": "@grammyjs/types@3.10.0", - "abort-controller": "abort-controller@3.0.0", - "debug": "debug@4.3.5", - "node-fetch": "node-fetch@2.7.0" - } - }, - "has-flag@4.0.0": { - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dependencies": {} - }, - "human-signals@2.1.0": { - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dependencies": {} - }, - "human-signals@5.0.0": { - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dependencies": {} - }, - "ignore@5.3.1": { - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dependencies": {} - }, - "inherits@2.0.4": { - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dependencies": {} - }, - "is-arrayish@0.3.2": { - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dependencies": {} - }, - "is-docker@2.2.1": { - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dependencies": {} - }, - "is-obj@2.0.0": { - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dependencies": {} - }, - "is-stream@2.0.1": { - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dependencies": {} - }, - "is-stream@3.0.0": { - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dependencies": {} - }, - "is-wsl@2.2.0": { - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "is-docker@2.2.1" - } - }, - "isexe@2.0.0": { - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dependencies": {} - }, - "isexe@3.1.1": { - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dependencies": {} - }, - "js-tokens@9.0.0": { - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dependencies": {} - }, - "json-schema-traverse@1.0.0": { - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dependencies": {} - }, - "json-schema-typed@7.0.3": { - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dependencies": {} - }, - "kuler@2.0.0": { - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "dependencies": {} - }, - "local-pkg@0.5.0": { - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dependencies": { - "mlly": "mlly@1.7.1", - "pkg-types": "pkg-types@1.1.3" - } - }, - "locate-path@3.0.0": { - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "p-locate@3.0.0", - "path-exists": "path-exists@3.0.0" - } - }, - "logform@2.6.0": { - "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", - "dependencies": { - "@colors/colors": "@colors/colors@1.6.0", - "@types/triple-beam": "@types/triple-beam@1.3.5", - "fecha": "fecha@4.2.3", - "ms": "ms@2.1.2", - "safe-stable-stringify": "safe-stable-stringify@2.4.3", - "triple-beam": "triple-beam@1.4.1" - } - }, - "loupe@2.3.7": { - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dependencies": { - "get-func-name": "get-func-name@2.0.2" - } - }, - "magic-string@0.30.10": { - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dependencies": { - "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15" - } - }, - "merge-stream@2.0.0": { - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dependencies": {} - }, - "mimic-fn@2.1.0": { - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dependencies": {} - }, - "mimic-fn@3.1.0": { - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dependencies": {} - }, - "mimic-fn@4.0.0": { - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dependencies": {} - }, - "mlly@1.7.1": { - "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", - "dependencies": { - "acorn": "acorn@8.12.1", - "pathe": "pathe@1.1.2", - "pkg-types": "pkg-types@1.1.3", - "ufo": "ufo@1.5.3" - } - }, - "ms@2.1.2": { - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dependencies": {} - }, - "nanoid@3.3.7": { - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dependencies": {} - }, - "node-fetch@2.7.0": { - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "whatwg-url@5.0.0" - } - }, - "npm-run-path@4.0.1": { - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "path-key@3.1.1" - } - }, - "npm-run-path@5.3.0": { - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dependencies": { - "path-key": "path-key@4.0.0" - } - }, - "o-son@1.0.4": { - "integrity": "sha512-tdGKxZgiTexSv97/igC2m8Y6FljgwvwHW/Zy3ql3Jx6MPKrPKaBDLhV7rz8uuLjcDPw6Pxa2PVsnWwen59MmnQ==", - "dependencies": { - "@deno/shim-deno": "@deno/shim-deno@0.16.1" - } - }, - "object-treeify@1.1.33": { - "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", - "dependencies": {} - }, - "one-time@1.0.0": { - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "dependencies": { - "fn.name": "fn.name@1.1.0" - } - }, - "onetime@5.1.2": { - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "mimic-fn@2.1.0" - } - }, - "onetime@6.0.0": { - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "mimic-fn@4.0.0" - } - }, - "open@8.4.2": { - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "define-lazy-prop@2.0.0", - "is-docker": "is-docker@2.2.1", - "is-wsl": "is-wsl@2.2.0" - } - }, - "p-limit@2.3.0": { - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "p-try@2.2.0" - } - }, - "p-limit@5.0.0": { - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dependencies": { - "yocto-queue": "yocto-queue@1.1.1" - } - }, - "p-locate@3.0.0": { - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "p-limit@2.3.0" - } - }, - "p-try@2.2.0": { - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dependencies": {} - }, - "path-exists@3.0.0": { - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dependencies": {} - }, - "path-key@3.1.1": { - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dependencies": {} - }, - "path-key@4.0.0": { - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dependencies": {} - }, - "pathe@1.1.2": { - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dependencies": {} - }, - "pathval@1.1.1": { - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dependencies": {} - }, - "picocolors@1.0.1": { - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dependencies": {} - }, - "picomatch@3.0.1": { - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dependencies": {} - }, - "pkg-types@1.1.3": { - "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", - "dependencies": { - "confbox": "confbox@0.1.7", - "mlly": "mlly@1.7.1", - "pathe": "pathe@1.1.2" - } - }, - "pkg-up@3.1.0": { - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dependencies": { - "find-up": "find-up@3.0.0" - } - }, - "postcss@8.4.39": { - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", - "dependencies": { - "nanoid": "nanoid@3.3.7", - "picocolors": "picocolors@1.0.1", - "source-map-js": "source-map-js@1.2.0" - } - }, - "pretty-format@29.7.0": { - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dependencies": { - "@jest/schemas": "@jest/schemas@29.6.3", - "ansi-styles": "ansi-styles@5.2.0", - "react-is": "react-is@18.3.1" - } - }, - "punycode@2.3.1": { - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dependencies": {} - }, - "react-is@18.3.1": { - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dependencies": {} - }, - "readable-stream@3.6.2": { - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "inherits@2.0.4", - "string_decoder": "string_decoder@1.3.0", - "util-deprecate": "util-deprecate@1.0.2" - } - }, - "require-from-string@2.0.2": { - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dependencies": {} - }, - "rollup@4.18.0": { - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", - "dependencies": { - "@rollup/rollup-android-arm-eabi": "@rollup/rollup-android-arm-eabi@4.18.0", - "@rollup/rollup-android-arm64": "@rollup/rollup-android-arm64@4.18.0", - "@rollup/rollup-darwin-arm64": "@rollup/rollup-darwin-arm64@4.18.0", - "@rollup/rollup-darwin-x64": "@rollup/rollup-darwin-x64@4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "@rollup/rollup-linux-arm-gnueabihf@4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "@rollup/rollup-linux-arm-musleabihf@4.18.0", - "@rollup/rollup-linux-arm64-gnu": "@rollup/rollup-linux-arm64-gnu@4.18.0", - "@rollup/rollup-linux-arm64-musl": "@rollup/rollup-linux-arm64-musl@4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "@rollup/rollup-linux-powerpc64le-gnu@4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "@rollup/rollup-linux-riscv64-gnu@4.18.0", - "@rollup/rollup-linux-s390x-gnu": "@rollup/rollup-linux-s390x-gnu@4.18.0", - "@rollup/rollup-linux-x64-gnu": "@rollup/rollup-linux-x64-gnu@4.18.0", - "@rollup/rollup-linux-x64-musl": "@rollup/rollup-linux-x64-musl@4.18.0", - "@rollup/rollup-win32-arm64-msvc": "@rollup/rollup-win32-arm64-msvc@4.18.0", - "@rollup/rollup-win32-ia32-msvc": "@rollup/rollup-win32-ia32-msvc@4.18.0", - "@rollup/rollup-win32-x64-msvc": "@rollup/rollup-win32-x64-msvc@4.18.0", - "@types/estree": "@types/estree@1.0.5", - "fsevents": "fsevents@2.3.3" - } - }, - "safe-buffer@5.2.1": { - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dependencies": {} - }, - "safe-stable-stringify@2.4.3": { - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "dependencies": {} - }, - "semver@7.6.2": { - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dependencies": {} - }, - "shebang-command@2.0.0": { - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "shebang-regex@3.0.0" - } - }, - "shebang-regex@3.0.0": { - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dependencies": {} - }, - "siginfo@2.0.0": { - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dependencies": {} - }, - "signal-exit@3.0.7": { - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dependencies": {} - }, - "signal-exit@4.1.0": { - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dependencies": {} - }, - "simple-swizzle@0.2.2": { - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "is-arrayish@0.3.2" - } - }, - "sisteransi@1.0.5": { - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dependencies": {} - }, - "source-map-js@1.2.0": { - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dependencies": {} - }, - "stack-trace@0.0.10": { - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "dependencies": {} - }, - "stackback@0.0.2": { - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dependencies": {} - }, - "std-env@3.7.0": { - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", - "dependencies": {} - }, - "string_decoder@1.3.0": { - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "safe-buffer@5.2.1" - } - }, - "strip-final-newline@2.0.0": { - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dependencies": {} - }, - "strip-final-newline@3.0.0": { - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dependencies": {} - }, - "strip-literal@2.1.0": { - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", - "dependencies": { - "js-tokens": "js-tokens@9.0.0" - } - }, - "supports-color@7.2.0": { - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "has-flag@4.0.0" - } - }, - "text-hex@1.0.0": { - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "dependencies": {} - }, - "tinybench@2.8.0": { - "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", - "dependencies": {} - }, - "tinypool@0.8.4": { - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", - "dependencies": {} - }, - "tinyspy@2.2.1": { - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", - "dependencies": {} - }, - "tr46@0.0.3": { - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dependencies": {} - }, - "triple-beam@1.4.1": { - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "dependencies": {} - }, - "tsconfck@3.1.1": { - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", - "dependencies": {} - }, - "tsconfck@3.1.1_typescript@5.5.3": { - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", - "dependencies": { - "typescript": "typescript@5.5.3" - } - }, - "type-detect@4.0.8": { - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dependencies": {} - }, - "typescript@5.5.3": { - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "dependencies": {} - }, - "ufo@1.5.3": { - "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", - "dependencies": {} - }, - "undici@5.28.4": { - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dependencies": { - "@fastify/busboy": "@fastify/busboy@2.1.1" - } - }, - "uri-js@4.4.1": { - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "punycode@2.3.1" - } - }, - "util-deprecate@1.0.2": { - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dependencies": {} - }, - "vite-node@1.6.0": { - "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", - "dependencies": { - "cac": "cac@6.7.14", - "debug": "debug@4.3.5", - "pathe": "pathe@1.1.2", - "picocolors": "picocolors@1.0.1", - "vite": "vite@5.3.3" - } - }, - "vite-tsconfig-paths@4.3.2": { - "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", - "dependencies": { - "debug": "debug@4.3.5", - "globrex": "globrex@0.1.2", - "tsconfck": "tsconfck@3.1.1" - } - }, - "vite-tsconfig-paths@4.3.2_typescript@5.5.3": { - "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", - "dependencies": { - "debug": "debug@4.3.5", - "globrex": "globrex@0.1.2", - "tsconfck": "tsconfck@3.1.1_typescript@5.5.3" - } - }, - "vite@5.3.3": { - "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", - "dependencies": { - "esbuild": "esbuild@0.21.5", - "fsevents": "fsevents@2.3.3", - "postcss": "postcss@8.4.39", - "rollup": "rollup@4.18.0" - } - }, - "vitest@1.6.0": { - "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", - "dependencies": { - "@vitest/expect": "@vitest/expect@1.6.0", - "@vitest/runner": "@vitest/runner@1.6.0", - "@vitest/snapshot": "@vitest/snapshot@1.6.0", - "@vitest/spy": "@vitest/spy@1.6.0", - "@vitest/utils": "@vitest/utils@1.6.0", - "acorn-walk": "acorn-walk@8.3.3", - "chai": "chai@4.4.1", - "debug": "debug@4.3.5", - "execa": "execa@8.0.1", - "local-pkg": "local-pkg@0.5.0", - "magic-string": "magic-string@0.30.10", - "pathe": "pathe@1.1.2", - "picocolors": "picocolors@1.0.1", - "std-env": "std-env@3.7.0", - "strip-literal": "strip-literal@2.1.0", - "tinybench": "tinybench@2.8.0", - "tinypool": "tinypool@0.8.4", - "vite": "vite@5.3.3", - "vite-node": "vite-node@1.6.0", - "why-is-node-running": "why-is-node-running@2.2.2" - } - }, - "webidl-conversions@3.0.1": { - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dependencies": {} - }, - "whatwg-url@5.0.0": { - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "tr46@0.0.3", - "webidl-conversions": "webidl-conversions@3.0.1" - } - }, - "which@2.0.2": { - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "isexe@2.0.0" - } - }, - "which@4.0.0": { - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dependencies": { - "isexe": "isexe@3.1.1" - } - }, - "why-is-node-running@2.2.2": { - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", - "dependencies": { - "siginfo": "siginfo@2.0.0", - "stackback": "stackback@0.0.2" - } - }, - "winston-transport@4.7.0": { - "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", - "dependencies": { - "logform": "logform@2.6.0", - "readable-stream": "readable-stream@3.6.2", - "triple-beam": "triple-beam@1.4.1" - } - }, - "winston@3.13.0": { - "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", - "dependencies": { - "@colors/colors": "@colors/colors@1.6.0", - "@dabh/diagnostics": "@dabh/diagnostics@2.0.3", - "async": "async@3.2.5", - "is-stream": "is-stream@2.0.1", - "logform": "logform@2.6.0", - "one-time": "one-time@1.0.0", - "readable-stream": "readable-stream@3.6.2", - "safe-stable-stringify": "safe-stable-stringify@2.4.3", - "stack-trace": "stack-trace@0.0.10", - "triple-beam": "triple-beam@1.4.1", - "winston-transport": "winston-transport@4.7.0" - } + "@std/dotenv@0.224.2": { + "integrity": "29081695357e4534696c9e986b2560be29c141ccf52daa32b6c20ff5b5c64ab9" }, - "xxhashjs@0.2.2": { - "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", - "dependencies": { - "cuint": "cuint@0.2.2" - } + "@std/internal@1.0.1": { + "integrity": "6f8c7544d06a11dd256c8d6ba54b11ed870aac6c5aeafff499892662c57673e6" }, - "yocto-queue@1.1.1": { - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "@std/testing@0.225.3": { + "integrity": "348c24d0479d44ab3dbb4f26170f242e19f24051b45935d4a9e7ca0ab7e37780", + "dependencies": [ + "jsr:@std/assert@1.0.0-rc.2", + "jsr:@std/async@^1.0.0-rc.2", + "jsr:@std/data-structures@^1.0.0-rc.1" + ] + } + }, + "npm": { + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", "dependencies": {} } } }, "redirects": { "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts", - "https://deno.land/x/grammy_storages/free/src/mod.ts": "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts", "https://lib.deno.dev/x/grammy@v1/mod.ts": "https://deno.land/x/grammy@v1.26.0/mod.ts", "https://lib.deno.dev/x/grammy@v1/types.ts": "https://deno.land/x/grammy@v1.26.0/types.ts", "https://x.nest.land/ramda@0.27.2/mod.ts": "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts" @@ -1279,6 +72,15 @@ "https://deno.land/std@0.211.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", "https://deno.land/std@0.211.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", "https://deno.land/std@0.211.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", + "https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834", + "https://deno.land/std@0.224.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917", + "https://deno.land/std@0.224.0/cli/_data.json": "cf2cc9d039a192b3adbfe64627167c7e6212704c888c25c769fc8f1709e1e1b8", + "https://deno.land/std@0.224.0/cli/_run_length.ts": "7da8642a0f4f41ac27c0adb1364e18886be856c1d08c5cce6c6b5c00543c8722", + "https://deno.land/std@0.224.0/cli/mod.ts": "9548eaf4fefac2ab9b02e0f8e4de8a08cac5d24b721a6019452efec172b59de3", + "https://deno.land/std@0.224.0/cli/parse_args.ts": "5250832fb7c544d9111e8a41ad272c016f5a53f975ef84d5a9fe5fcb70566ece", + "https://deno.land/std@0.224.0/cli/prompt_secret.ts": "3b2f95214422226482fba4a00cb25441475b6f97069a6f70f442c1c9a16c744c", + "https://deno.land/std@0.224.0/cli/spinner.ts": "cf873605771270b4324cc063b5031ab250d8efee8799e45e1a3bfdd333ff721d", + "https://deno.land/std@0.224.0/cli/unicode_width.ts": "656dd4271ecc90684b6bf23a5fb8c1cf833da625ef2906b61273ad617038072f", "https://deno.land/x/grammy@v1.26.0/bot.ts": "291fec55778b8ff25112be28ee24ed3d68ea58f8a07e6fe9584953c242564ef3", "https://deno.land/x/grammy@v1.26.0/composer.ts": "63adf2af7f1f32409d1a81688af5d5fe70551e0ccdfdfaae663cdac54a242a5b", "https://deno.land/x/grammy@v1.26.0/context.ts": "24598580d65d9b55bef6db39ec9c796832248d0c59583d68d843d1a5c81f9a89", @@ -1664,13 +466,9 @@ }, "workspace": { "dependencies": [ - "jsr:@std/dotenv@^0.224.2" - ], - "packageJson": { - "dependencies": [ - "npm:vite-tsconfig-paths@^4.3.2", - "npm:vitest@^1.6.0" - ] - } + "jsr:@std/assert@^0.226.0", + "jsr:@std/dotenv@^0.224.2", + "jsr:@std/testing@^0.225.3" + ] } } diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 1ff7f8b..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1745 +0,0 @@ -{ - "name": "hn-telegram-bot", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "hn-telegram-bot", - "version": "1.0.0", - "license": "ISC", - "devDependencies": { - "vite-tsconfig-paths": "^4.3.2", - "vitest": "^1.6.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@vitest/expect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", - "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "chai": "^4.3.10" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", - "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "1.6.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/snapshot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", - "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^2.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/confbox": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", - "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true, - "license": "MIT" - }, - "node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/mlly": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", - "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.3", - "pathe": "^1.1.2", - "pkg-types": "^1.1.1", - "ufo": "^1.5.3" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true, - "license": "ISC" - }, - "node_modules/pkg-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", - "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.7", - "mlly": "^1.7.1", - "pathe": "^1.1.2" - } - }, - "node_modules/postcss": { - "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/strip-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", - "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tsconfck": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", - "dev": true, - "license": "MIT", - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/ufo": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", - "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", - "dev": true, - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/vite": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz", - "integrity": "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.38", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", - "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^5.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-tsconfig-paths": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", - "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "globrex": "^0.1.2", - "tsconfck": "^3.0.3" - }, - "peerDependencies": { - "vite": "*" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/vitest": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", - "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "1.6.0", - "@vitest/runner": "1.6.0", - "@vitest/snapshot": "1.6.0", - "@vitest/spy": "1.6.0", - "@vitest/utils": "1.6.0", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", - "vite": "^5.0.0", - "vite-node": "1.6.0", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.0", - "@vitest/ui": "1.6.0", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/vitest/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/vitest/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vitest/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/vitest/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 7b9c595..0000000 --- a/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "hn-telegram-bot", - "version": "1.0.0", - "description": "HackerNews Telegram Bot", - "main": "bot.js", - "type": "module", - "scripts": { - "build": "npx tsc --project tsconfig.build.json", - "dev": "npx dotenvx run -- npx esrun --watch=src/*.ts src/bot.ts", - "test": "dotenvx run -f .env.test -- npx vitest" - }, - "author": "Mateo Sheshi", - "license": "ISC", - "devDependencies": { - "vite-tsconfig-paths": "^4.3.2", - "vitest": "^1.6.0" - } -} diff --git a/src/__tests__/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts deleted file mode 100644 index ec18417..0000000 --- a/src/__tests__/bot/setup.spec.ts +++ /dev/null @@ -1,190 +0,0 @@ -import { SessionData } from '@/types/sessionData' - -import { - chat, - from, - slashCommand, - testSetupConversation, -} from '@/utils/testHelpers' - -import { MemorySessionStorage } from 'grammy' - -import * as R from 'ramda' - -var storageAdapter!: MemorySessionStorage | undefined - -vi.mock('@/utils', () => ({ - getSessionAdapter: vi.fn(() => { - storageAdapter = new MemorySessionStorage() - return storageAdapter - }), -})) - -import setup from '@/preference/setup' - -beforeEach(() => { - vi.resetAllMocks() -}) - -describe('setup', () => { - it('saves preferences', async () => { - await testSetupConversation( - [ - { - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: 'test_preference', - }, - }, - { - update_id: 2, - message: { - message_id: 2, - date: Date.now(), - chat, - from, - text: 'some_other_preference', - }, - }, - ], - [], - setup, - ) - const preferences = storageAdapter!.read( - R.toString(R.prop('id', chat)), - )?.preferences - - expect(preferences).toHaveLength(2) - expect(preferences).toEqual(['test_preference', 'some_other_preference']) - }) - - it('does not save duplicate preferences', async () => { - await testSetupConversation( - [ - { - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: 'test_preference', - }, - }, - { - update_id: 2, - message: { - message_id: 2, - date: Date.now(), - chat, - from, - text: 'test_preference', - }, - }, - ], - [], - setup, - ) - - const preferences = storageAdapter!.read( - R.toString(R.prop('id', chat)), - )?.preferences - - expect(preferences).toHaveLength(1) - - expect(preferences).toEqual(['test_preference']) - }) -}) - -describe('reset', () => { - it('clears preferences', async () => { - await testSetupConversation( - [ - { - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: 'test_preference', - }, - }, - { - update_id: 2, - message: { - message_id: 2, - date: Date.now(), - chat, - from, - text: 'some_other_preference', - }, - }, - ], - slashCommand('reset'), - setup, - ) - - const updatedPreferences = storageAdapter!.read( - R.toString(R.prop('id', chat)), - )?.preferences - - expect(updatedPreferences).toHaveLength(0) - }) -}) - -describe('list', () => { - it('lists preferences', async () => { - const outgoingRequests = await testSetupConversation( - [ - { - update_id: 1, - message: { - message_id: 1, - date: Date.now(), - chat, - from, - text: 'test_preference', - }, - }, - { - update_id: 2, - message: { - message_id: 2, - date: Date.now(), - chat, - from, - text: 'some_other_preference', - }, - }, - ], - slashCommand('list'), - setup, - ) - - const listRequest = R.last(outgoingRequests) - - const payload = R.prop('payload', listRequest!) - expect(payload).toHaveProperty( - 'text', - 'test_preference\nsome_other_preference', - ) - }) - - it('does not list preferences if there are none', async () => { - const outgoingRequests = await testSetupConversation( - [], - slashCommand('list'), - setup, - ) - - const listRequest = R.last(outgoingRequests) - - const payload = R.prop('payload', listRequest!) - expect(payload).toHaveProperty('text', 'No preferences set.') - }) -}) diff --git a/src/__tests__/getItem.spec.ts b/src/__tests__/getItem.spec.ts deleted file mode 100644 index 1619fcf..0000000 --- a/src/__tests__/getItem.spec.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { getItem } from '@/api' - -describe('getItem', () => { - it('should return an item', async () => { - vi.spyOn(global, 'fetch').mockResolvedValue({ - json: () => - Promise.resolve({ - by: 'dhouston', - descendants: 71, - id: 8863, - score: 104, - time: 1175714200, - title: 'My YC app: Dropbox - Throw away your USB drive', - type: 'story', - url: 'http://www.getdropbox.com/u/2/screencast.html', - }), - } as any) - - const item = await getItem(8863) - - expect(item).toBeInstanceOf(Object) - expect(item).toHaveProperty('by') - expect(item).toHaveProperty('descendants') - expect(item).toHaveProperty('id') - expect(item).toHaveProperty('score') - expect(item).toHaveProperty('time') - expect(item).toHaveProperty('title') - - expect(item).toHaveProperty('type') - expect(item).toHaveProperty('url') - }) - - it('should handle not found item', async () => { - vi.spyOn(global, 'fetch').mockResolvedValue({ - json: () => Promise.resolve(null), - } as any) - const item = await getItem(-1) - expect(item).toBeNull() - }) -}) diff --git a/src/__tests__/getTopStories.spec.ts b/src/__tests__/getTopStories.spec.ts deleted file mode 100644 index 9a172f0..0000000 --- a/src/__tests__/getTopStories.spec.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { faker } from '@dev_deps' -import { getTopStories } from '@/api.ts' - -describe('getTopStories', () => { - it('should return an array of top stories', async () => { - vi.spyOn(global, 'fetch').mockResolvedValueOnce({ - json: () => - Promise.resolve( - faker.helpers.multiple(faker.number.int, { count: 500 }), - ), - } as any) - - const result = await getTopStories() - expect(result).toBeInstanceOf(Array) - expect(result).toHaveLength(500) - }) -}) diff --git a/src/__tests__/utils.spec.ts b/src/__tests__/utils.spec.ts deleted file mode 100644 index 1fca228..0000000 --- a/src/__tests__/utils.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { getSessionAdapter } from '@/utils' -import { MemorySessionStorage } from 'grammy' - -const adapter = getSessionAdapter() - -describe('getSessionAdapter', () => - it('returns adapter', () => { - expect(adapter).toBeInstanceOf(MemorySessionStorage) - })) diff --git a/src/config.ts b/src/config.ts index 810a018..09425ae 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,8 +1,20 @@ import { load } from '@std/dotenv' +import { R } from '@deps' +import { parseArgs } from '@std/cli' -type EnvKeys = 'BOT_TOKEN' | 'DENO_ENV' | 'HN_API' +type EnvKeys = 'BOT_TOKEN' | 'DENO_ENV' -const env = await load() as Record +const isTest = parseArgs(Deno.args).test + +const envPath = R.ifElse( + R.equals(true), + R.always('.env.test'), + R.always('.env'), +)(isTest) + +const env = await load({ + envPath, +}) as Record export const HN_API = 'https://hacker-news.firebaseio.com/v0/' export const BOT_TOKEN = env.BOT_TOKEN From 4f8972ef8df8a2e86446376ce4918c2e3bb7de2e Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 4 Jul 2024 11:57:28 +0200 Subject: [PATCH 055/152] test: stub global fetch --- deps.ts | 3 +- dev_deps.ts | 7 ++++- src/api.ts | 6 ++-- src/config.ts | 1 - src/tests/getItem.spec.ts | 55 +++++++++++++++++++++++++++++++++ src/tests/getTopStories.spec.ts | 30 ++++++++++++++++++ 6 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 src/tests/getItem.spec.ts create mode 100644 src/tests/getTopStories.spec.ts diff --git a/deps.ts b/deps.ts index 139e34c..8e0f517 100644 --- a/deps.ts +++ b/deps.ts @@ -1,4 +1,5 @@ export * as R from "https://x.nest.land/ramda@0.27.2/mod.ts" export * from "https://deno.land/x/grammy@v1.26.0/mod.ts"; export * from "https://deno.land/x/grammy_conversations@v1.2.0/mod.ts"; -export * from "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts" \ No newline at end of file +export * from "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts" +export * from "https://deno.land/x/grammy_types@v3.10.0/mod.ts" \ No newline at end of file diff --git a/dev_deps.ts b/dev_deps.ts index 0ec17f7..90a033e 100644 --- a/dev_deps.ts +++ b/dev_deps.ts @@ -1 +1,6 @@ -export { faker } from "https://esm.sh/@faker-js/faker@v8.4.0" \ No newline at end of file +export { faker } from "https://esm.sh/@faker-js/faker@v8.4.0" +export * from '@std/testing/bdd' +export * from '@std/assert' +export * from '@std/testing/mock' +export * from '@std/testing/types' +export * from '@std/testing/time' \ No newline at end of file diff --git a/src/api.ts b/src/api.ts index 8e3d654..fde261d 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,5 +1,5 @@ -import { HN_API } from './config' -import { Item } from './types/item' +import { HN_API } from '@/config.ts' +import { Item } from '@/types/item.ts' export const getTopStories = async (): Promise => { const data: number[] = await fetch(`${HN_API}/topstories.json`).then((res) => @@ -11,7 +11,7 @@ export const getTopStories = async (): Promise => { export const getItem = async (id: number): Promise => { const data: Item | null = await fetch(`${HN_API}/item/${id}.json`).then( - (res) => res.json() + (res) => res.json(), ) return data diff --git a/src/config.ts b/src/config.ts index 09425ae..bf41086 100644 --- a/src/config.ts +++ b/src/config.ts @@ -5,7 +5,6 @@ import { parseArgs } from '@std/cli' type EnvKeys = 'BOT_TOKEN' | 'DENO_ENV' const isTest = parseArgs(Deno.args).test - const envPath = R.ifElse( R.equals(true), R.always('.env.test'), diff --git a/src/tests/getItem.spec.ts b/src/tests/getItem.spec.ts new file mode 100644 index 0000000..03ee963 --- /dev/null +++ b/src/tests/getItem.spec.ts @@ -0,0 +1,55 @@ +import { getItem } from '@/api.ts' +import { + assertEquals, + assertExists, + assertInstanceOf, + describe, + it, + stub, +} from '@dev_deps' + +describe('getItem', () => { + it('should return an item', async () => { + const fakeResponse = Promise.resolve({ + json: () => + Promise.resolve({ + by: 'dhouston', + descendants: 71, + id: 8863, + score: 104, + time: 1175714200, + title: 'My YC app: Dropbox - Throw away your USB drive', + type: 'story', + url: 'http://www.getdropbox.com/u/2/screencast.html', + }), + } as any) + + using _fetchStub = stub( + globalThis, + 'fetch', + () => fakeResponse, + ) + + const item = await getItem(8863) + + assertInstanceOf(item, Object) + assertExists(Object.prototype.hasOwnProperty.call(item, 'by')) + assertExists(Object.prototype.hasOwnProperty.call(item, 'descendants')) + assertExists(Object.prototype.hasOwnProperty.call(item, 'id')) + assertExists(Object.prototype.hasOwnProperty.call(item, 'score')) + assertExists(Object.prototype.hasOwnProperty.call(item, 'time')) + assertExists(Object.prototype.hasOwnProperty.call(item, 'title')) + assertExists(Object.prototype.hasOwnProperty.call(item, 'type')) + assertExists(Object.prototype.hasOwnProperty.call(item, 'url')) + }) + + it('should handle not found item', async () => { + using _fetchStub = stub(globalThis, 'fetch', () => + Promise.resolve({ + json: () => Promise.resolve(null), + } as any)) + + const item = await getItem(-1) + assertEquals(item, null) + }) +}) diff --git a/src/tests/getTopStories.spec.ts b/src/tests/getTopStories.spec.ts new file mode 100644 index 0000000..681deab --- /dev/null +++ b/src/tests/getTopStories.spec.ts @@ -0,0 +1,30 @@ +import { + assertInstanceOf, + assertObjectMatch, + describe, + faker, + it, + stub, +} from '@dev_deps' +import { getTopStories } from '@/api.ts' + +describe('getTopStories', () => { + it('should return an array of top stories', async () => { + const fakeResponse = Promise.resolve({ + json: () => + Promise.resolve( + faker.helpers.multiple(faker.number.int, { count: 500 }), + ), + } as any) + + // Stubbing globalThis.fetch directly with a function that returns the fake response + using _fetchStub = stub(globalThis, 'fetch', () => fakeResponse) + + const result = await getTopStories() + assertInstanceOf(result, Array) + + assertObjectMatch(result, { + length: 500, + }) + }) +}) From 3a08789022cf2d7e18bbe234c74f9c0440c2a37d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2024 10:26:45 +0000 Subject: [PATCH 056/152] chore(deps): bump grammy from 1.26.0 to 1.26.1 Bumps [grammy](https://github.com/grammyjs/grammY) from 1.26.0 to 1.26.1. - [Release notes](https://github.com/grammyjs/grammY/releases) - [Commits](https://github.com/grammyjs/grammY/compare/v1.26.0...v1.26.1) --- updated-dependencies: - dependency-name: grammy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 9 ++++----- package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f74e3fb..291969d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@dotenvx/dotenvx": "^1.5.0", "@grammyjs/conversations": "^1.2.0", "@grammyjs/storage-free": "^2.4.2", - "grammy": "^1.25.0", + "grammy": "^1.26.1", "ramda": "^0.30.1" }, "devDependencies": { @@ -2245,10 +2245,9 @@ "license": "MIT" }, "node_modules/grammy": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.26.0.tgz", - "integrity": "sha512-jrXKDU8UzcQaecteJxuXO80trAKkbmFhaTKIVIAyS/9pLxUyqaK98XjOJjL6t6b7cnLydJtYsAkRpkQ/TUxTrQ==", - "license": "MIT", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/grammy/-/grammy-1.26.1.tgz", + "integrity": "sha512-Vwx2MQnu9DblYzugnf4vdozjotHMmHw3XLcx0gM6lGjLvO0Jg2gBREDXm1xGvyUW6ckgBEyThUKILqmFL/8PHQ==", "dependencies": { "@grammyjs/types": "3.10.0", "abort-controller": "^3.0.0", diff --git a/package.json b/package.json index fc827dd..6c1d2f8 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@dotenvx/dotenvx": "^1.5.0", "@grammyjs/conversations": "^1.2.0", "@grammyjs/storage-free": "^2.4.2", - "grammy": "^1.25.0", + "grammy": "^1.26.1", "ramda": "^0.30.1" }, "devDependencies": { From 6f22ec1608d2e8faf4a047b374e05f6cda7430ba Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 4 Jul 2024 12:37:19 +0200 Subject: [PATCH 057/152] chore: add recommended deno ext --- .gitignore | 2 -- .vscode/extensions.json | 3 +++ .vscode/settings.json | 7 +++++++ 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index 81dcd21..e23ed2b 100644 --- a/.gitignore +++ b/.gitignore @@ -131,5 +131,3 @@ dist .pnp.* .prettierrc - -.vscode \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..4d79334 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["denoland.vscode-deno"] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..39c4eab --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "deno.enable": true, + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno", + "editor.formatOnSave": true + }, +} \ No newline at end of file From 890da1632307b1ef3039ec3f7b45d5fd530adaf6 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 4 Jul 2024 23:53:13 +0200 Subject: [PATCH 058/152] feat!: complete deno migration by fixing last tests --- .gitignore | 2 +- README.md | 12 +- deno.lock | 1 + src/bot.ts | 14 ++- src/preference/setup.ts | 21 ++-- src/tests/bot/setup.spec.ts | 199 ++++++++++++++++++++++++++++++++ src/tests/getTopStories.spec.ts | 1 - src/tests/utils.spec.ts | 10 ++ src/types/sessionData.ts | 2 +- src/utils/testHelpers.ts | 25 ++-- 10 files changed, 257 insertions(+), 30 deletions(-) create mode 100644 src/tests/bot/setup.spec.ts create mode 100644 src/tests/utils.spec.ts diff --git a/.gitignore b/.gitignore index e23ed2b..667fe96 100644 --- a/.gitignore +++ b/.gitignore @@ -130,4 +130,4 @@ dist .yarn/install-state.gz .pnp.* -.prettierrc +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md index 70008c7..78fc8ed 100644 --- a/README.md +++ b/README.md @@ -6,17 +6,21 @@ HackerNews Telegram Bot ### Development -To develop in local just run `npm run dev` that will start esrun with watch mode, and also `dotenvx` under the hood. +To develop in local just run `deno task dev` that will start in watch mode. ### Build -```npm run build``` +```deno task build``` ### Testing -Put all tests under this [folder](src/__tests__) and run `npm test`, which will run test environment with Vitest in watch mode +Put all tests under this [folder](src/__tests__) and run `deno task test`, which will run test environment with Deno in watch mode + +> Note: this is a temporary workaround until conversations plugin is fixed + +When running tests on a composer that involves conversation, always add `await new Promise(r => setTimeout(r, 0))`, so it doesn't lead to deno leaks due to sanitizers. ### Tips -Use `setMyCommands` on deployment, or configure it directly with @BotFather +Use `setMyCommands` on deployment, or configure it directly with **@BotFather** This project is made by mainly following BDD principles, so you should stick to it, you won't regret. diff --git a/deno.lock b/deno.lock index 341e686..c4c472a 100644 --- a/deno.lock +++ b/deno.lock @@ -123,6 +123,7 @@ "https://deno.land/x/oson@1.0.1/mod.ts": "54e494dc517ce0de6c727c25d9731ccc748e8646c883e922dc5d656f523a4e5b", "https://deno.land/x/oson@1.0.1/oson.ts": "ec3908ae5c9ceff7bfd869d95a2183b929b9d96fbff44b57d28d3b742d06a4a1", "https://esm.sh/@faker-js/faker@v8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", + "https://esm.sh/v135/@faker-js/faker@8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", "https://esm.sh/v135/@faker-js/faker@8.4.0/denonext/faker.mjs": "6d41425710d5f98197ac4842005814ca5375aaa0f57a504b3e138a4a5e1efa02", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "14262bdcea26c261f2f6490e733b792af9d3ae3582a4d09ca5bab0479b48ca40", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/F.js": "cf0f5fdb08048909e49bb6f222f6e2f92db8d4dc0dd24900864eaf69c3746e3d", diff --git a/src/bot.ts b/src/bot.ts index 44095f6..93764a7 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,7 +1,9 @@ import setup from './preference/setup.ts' import { BOT_TOKEN } from './config.ts' -import { PreferencesContext } from './types/sessionData.ts' -import { Bot } from '@deps' + +import { Bot, conversations, session } from '@deps' +import { getSessionAdapter } from '@/utils.ts' +import { PreferencesContext, SessionData } from '@/types/sessionData.ts' const bot = new Bot(BOT_TOKEN!) @@ -11,6 +13,14 @@ bot.command( ctx.reply('Bot is under construction. Please wait for the next update.'), ) +bot.use( + session({ + initial: (): SessionData => ({ preferences: [] }), + storage: getSessionAdapter(BOT_TOKEN), + }), + conversations(), +) + bot.use(setup) bot.catch((err) => console.error(err)) diff --git a/src/preference/setup.ts b/src/preference/setup.ts index 0230bd6..e76c162 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,7 +1,5 @@ -import { getSessionAdapter } from '@/utils.ts' - +import { Composer, createConversation, R } from '@deps' import { ConversationContext, PreferencesContext } from '@/types/sessionData.ts' -import { Composer, conversations, createConversation, R, session } from '@deps' const composer = new Composer() @@ -28,11 +26,6 @@ const preferencesBuilder = async ( } composer.use( - session({ - initial: () => ({ preferences: [] }), - storage: getSessionAdapter(''), - }), - conversations(), createConversation(preferencesBuilder, 'preferences'), ) @@ -40,21 +33,21 @@ composer.command('setup', async (ctx) => { await ctx.conversation.enter('preferences') }) -composer.command('reset', (ctx) => { +composer.command('reset', async (ctx) => { ctx.session.preferences = [] - ctx.reply('Preferences reset.') + await ctx.reply('Preferences reset.') }) -composer.command('list', (ctx) => - ctx.reply( +composer.command('list', async (ctx) => + await ctx.reply( R.ifElse( R.isEmpty, R.always('No preferences set.'), R.join('\n'), )(ctx.session.preferences), )) -composer.on('message', (ctx) => { - ctx.reply('Please use the /setup command to setup your preferences.') +composer.on('message', async (ctx) => { + await ctx.reply('Please use the /setup command to setup your preferences.') }) export default composer diff --git a/src/tests/bot/setup.spec.ts b/src/tests/bot/setup.spec.ts new file mode 100644 index 0000000..156d2c9 --- /dev/null +++ b/src/tests/bot/setup.spec.ts @@ -0,0 +1,199 @@ +import { MemorySessionStorage, R } from '@deps' +import { + afterAll, + afterEach, + assertEquals, + beforeEach, + describe, + it, +} from '@dev_deps' +import { SessionData } from '@/types/sessionData.ts' +import { + chat, + from, + slashCommand, + testSetupConversation, +} from '@/utils/testHelpers.ts' + +let storageAdapter: MemorySessionStorage | undefined + +const storageAdapterFn = () => { + storageAdapter = new MemorySessionStorage() + return storageAdapter +} + +beforeEach(() => { + storageAdapter = undefined +}) + +// TODO: Remove this once we have a better way to wait for the event loop to clear +afterAll(async () => { + await new Promise((r) => setTimeout(r, 0)) +}) + +import setup from '@/preference/setup.ts' + +describe('setup', () => { + it('saves preferences', async () => { + await testSetupConversation( + storageAdapterFn, + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'some_other_preference', + }, + }, + ], + [], + setup, + ) + + const preferences = storageAdapter!.read( + R.toString(R.prop('id', chat)), + )?.preferences + + assertEquals(preferences!.length, 2) + assertEquals(preferences, ['test_preference', 'some_other_preference']) + }) + + it('does not save duplicate preferences', async () => { + await testSetupConversation( + storageAdapterFn, + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + ], + [], + setup, + ) + + const preferences = storageAdapter!.read( + R.toString(R.prop('id', chat)), + )?.preferences + + assertEquals(preferences!.length, 1) + assertEquals(preferences, ['test_preference']) + }) +}) + +describe('reset', () => { + it('clears preferences', async () => { + await testSetupConversation( + storageAdapterFn, + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'some_other_preference', + }, + }, + ], + slashCommand('reset'), + setup, + ) + + const updatedPreferences = storageAdapter!.read( + R.toString(R.prop('id', chat)), + )?.preferences + + assertEquals(updatedPreferences, []) + }) +}) + +describe('list', () => { + it('lists preferences', async () => { + const outgoingRequests = await testSetupConversation( + storageAdapterFn, + [ + { + update_id: 1, + message: { + message_id: 1, + date: Date.now(), + chat, + from, + text: 'test_preference', + }, + }, + { + update_id: 2, + message: { + message_id: 2, + date: Date.now(), + chat, + from, + text: 'some_other_preference', + }, + }, + ], + slashCommand('list'), + setup, + ) + + const listRequest = R.last(outgoingRequests) + + const payload = R.prop('payload', listRequest!) + assertEquals(payload.text, 'test_preference\nsome_other_preference') + }) + + it('does not list preferences if there are none', async () => { + const outgoingRequests = await testSetupConversation( + storageAdapterFn, + [], + slashCommand('list'), + setup, + ) + + const listRequest = R.last(outgoingRequests) + + const payload = R.prop('payload', listRequest!) + assertEquals(payload.text, 'No preferences set.') + }) +}) diff --git a/src/tests/getTopStories.spec.ts b/src/tests/getTopStories.spec.ts index 681deab..30973a3 100644 --- a/src/tests/getTopStories.spec.ts +++ b/src/tests/getTopStories.spec.ts @@ -17,7 +17,6 @@ describe('getTopStories', () => { ), } as any) - // Stubbing globalThis.fetch directly with a function that returns the fake response using _fetchStub = stub(globalThis, 'fetch', () => fakeResponse) const result = await getTopStories() diff --git a/src/tests/utils.spec.ts b/src/tests/utils.spec.ts new file mode 100644 index 0000000..8fd0a4b --- /dev/null +++ b/src/tests/utils.spec.ts @@ -0,0 +1,10 @@ +import { MemorySessionStorage } from '@deps' +import { getSessionAdapter } from '@/utils.ts' +import { assertInstanceOf, describe, it } from '@dev_deps' + +const adapter = getSessionAdapter() + +describe('getSessionAdapter', () => + it('returns adapter', () => { + assertInstanceOf(adapter, MemorySessionStorage) + })) diff --git a/src/types/sessionData.ts b/src/types/sessionData.ts index 52dabb2..26716f7 100644 --- a/src/types/sessionData.ts +++ b/src/types/sessionData.ts @@ -1,4 +1,4 @@ -import { Context, SessionFlavor } from '@deps' +import { Context, Conversation, ConversationFlavor, SessionFlavor } from '@deps' export interface SessionData { preferences: string[] diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index 91b18b0..9ade24f 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -1,17 +1,19 @@ -import { PreferencesContext, SessionData } from '@/types/sessionData' -import { getSessionAdapter } from '@/utils' -import { faker } from '@faker-js/faker' -import { conversations } from '@grammyjs/conversations' import { + ApiResponse, Bot, + Chat, Composer, + conversations, MemorySessionStorage, Middleware, + R, RawApi, session, -} from 'grammy' -import { ApiResponse, Chat, Update, User } from 'grammy/types' -import * as R from 'ramda' + Update, + User, +} from '@deps' +import { faker } from '@dev_deps' +import { PreferencesContext, SessionData } from '@/types/sessionData.ts' export interface ApiCall { method: M @@ -59,6 +61,7 @@ export const slashCommand = (command: AvailableCommands): Update => ({ }) export const testSetupConversation = async ( + storageAdapter: () => MemorySessionStorage, update: Update | Update[] = [], afterCancel: Update | Update[] = [], mw: Middleware = new Composer(), @@ -80,6 +83,14 @@ export const testSetupConversation = async ( return Promise.resolve({ ok: true, result: {} as any }) }) + bot.use( + session({ + initial: (): SessionData => ({ preferences: [] }), + storage: storageAdapter(), + }), + conversations(), + ) + bot.use(mw) await bot.handleUpdate(slashCommand('setup')) From 355cc73544fe0896f925918275df4c54cd0c0e1c Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 6 Jul 2024 00:48:22 +0200 Subject: [PATCH 059/152] chore: add coverage task --- .gitignore | 1 + deno.jsonc | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 667fe96..d197312 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ lib-cov # Coverage directory used by tools like istanbul coverage *.lcov +cov_profile # nyc test coverage .nyc_output diff --git a/deno.jsonc b/deno.jsonc index dc45a6b..d1f0ae1 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -21,8 +21,9 @@ ] }, "tasks": { + "coverage": "rm -rf cov_profile && deno test -A --parallel --coverage=cov_profile -- --test && deno coverage --lcov --output=./coverage.lcov ./cov_profile", "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", - "test": "deno test --watch --allow-read --allow-net --allow-env -- --test" + "test": "deno test -A --parallel -- --test" }, "test": { "include": [ From d914e961490c23ad86b509f5b932da180bb018df Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 6 Jul 2024 01:04:03 +0200 Subject: [PATCH 060/152] fix: adapt for deno deploy --- src/config.ts | 6 +++--- src/utils.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/config.ts b/src/config.ts index bf41086..a4441e3 100644 --- a/src/config.ts +++ b/src/config.ts @@ -2,7 +2,7 @@ import { load } from '@std/dotenv' import { R } from '@deps' import { parseArgs } from '@std/cli' -type EnvKeys = 'BOT_TOKEN' | 'DENO_ENV' +type EnvKeys = 'BOT_TOKEN' | 'APP_ENV' const isTest = parseArgs(Deno.args).test const envPath = R.ifElse( @@ -16,5 +16,5 @@ const env = await load({ }) as Record export const HN_API = 'https://hacker-news.firebaseio.com/v0/' -export const BOT_TOKEN = env.BOT_TOKEN -export const DENO_ENV = env.DENO_ENV +export const BOT_TOKEN = env.BOT_TOKEN || Deno.env.get('BOT_TOKEN') +export const APP_ENV = env.APP_ENV || Deno.env.get('APP_ENV') diff --git a/src/utils.ts b/src/utils.ts index b2763be..c4f05f9 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,10 +1,10 @@ import { SessionData } from '@/types/sessionData.ts' -import { DENO_ENV } from '@/config.ts' import { freeStorage, MemorySessionStorage, R } from '@deps' +import { APP_ENV } from '@/config.ts' export const getSessionAdapter = (token?: string) => R.ifElse( R.equals('test'), R.always(new MemorySessionStorage()), R.always(freeStorage(token!)), - )(DENO_ENV) + )(APP_ENV) From ea2a5f46329f3b3bb50acc5a47a04960582dcc08 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 00:38:54 +0200 Subject: [PATCH 061/152] chore: add zod package --- deno.lock | 10 ++++++++++ deps.ts | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/deno.lock b/deno.lock index c4c472a..ea8baea 100644 --- a/deno.lock +++ b/deno.lock @@ -122,6 +122,16 @@ "https://deno.land/x/oson@1.0.1/constructors.ts": "2b77dcdc8d8db5ece2860d1657f4dcef37dd761684f1d4b9535c7e56a0fbfcf6", "https://deno.land/x/oson@1.0.1/mod.ts": "54e494dc517ce0de6c727c25d9731ccc748e8646c883e922dc5d656f523a4e5b", "https://deno.land/x/oson@1.0.1/oson.ts": "ec3908ae5c9ceff7bfd869d95a2183b929b9d96fbff44b57d28d3b742d06a4a1", + "https://deno.land/x/zod@v3.16.1/ZodError.ts": "6e56e6416bbbad3539b577b7636dc198e5d87cf59f1ceb4e7b58d1d38190c2f7", + "https://deno.land/x/zod@v3.16.1/external.ts": "433e13ff774fef22d416027308db33cacb719774898372ec5faa32bb572f11dc", + "https://deno.land/x/zod@v3.16.1/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", + "https://deno.land/x/zod@v3.16.1/helpers/parseUtil.ts": "2611b41b579f551fcf0799415f9793709637bc7c7778bf53aab73cea92e859db", + "https://deno.land/x/zod@v3.16.1/helpers/partialUtil.ts": "8dc921a02b47384cf52217c7e539268daf619f89319b75bdf13ea178815725df", + "https://deno.land/x/zod@v3.16.1/helpers/typeAliases.ts": "a1a8d039eb98925f242f5ea1e21e6d3cabd7f05e9747680165c914695c979b4f", + "https://deno.land/x/zod@v3.16.1/helpers/util.ts": "1d28cc4dfde641f20d8544a1a747cf745d5eda0c5cdeaca8a29837991254a67d", + "https://deno.land/x/zod@v3.16.1/index.ts": "035a7422d9f2be54daa0fe464254b69225b443000673e4794095d672471e8792", + "https://deno.land/x/zod@v3.16.1/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", + "https://deno.land/x/zod@v3.16.1/types.ts": "fff4c7909b1919989c4cc1abe6218dfbdb53e197cacb2dfad2831dbd71dc56d2", "https://esm.sh/@faker-js/faker@v8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", "https://esm.sh/v135/@faker-js/faker@8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", "https://esm.sh/v135/@faker-js/faker@8.4.0/denonext/faker.mjs": "6d41425710d5f98197ac4842005814ca5375aaa0f57a504b3e138a4a5e1efa02", diff --git a/deps.ts b/deps.ts index 8e0f517..03c637f 100644 --- a/deps.ts +++ b/deps.ts @@ -2,4 +2,5 @@ export * as R from "https://x.nest.land/ramda@0.27.2/mod.ts" export * from "https://deno.land/x/grammy@v1.26.0/mod.ts"; export * from "https://deno.land/x/grammy_conversations@v1.2.0/mod.ts"; export * from "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts" -export * from "https://deno.land/x/grammy_types@v3.10.0/mod.ts" \ No newline at end of file +export * from "https://deno.land/x/grammy_types@v3.10.0/mod.ts" +export { z } from "https://deno.land/x/zod@v3.16.1/mod.ts"; From 565e99b12f9751a531719acfc85e9b87ffc3c14e Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 00:50:09 +0200 Subject: [PATCH 062/152] feat: validate Item schema --- src/api.ts | 4 +++- src/types/item.ts | 38 +++++++++++++++++++++----------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/api.ts b/src/api.ts index fde261d..3e375fe 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,5 +1,5 @@ import { HN_API } from '@/config.ts' -import { Item } from '@/types/item.ts' +import { Item, itemSchema } from '@/types/item.ts' export const getTopStories = async (): Promise => { const data: number[] = await fetch(`${HN_API}/topstories.json`).then((res) => @@ -14,5 +14,7 @@ export const getItem = async (id: number): Promise => { (res) => res.json(), ) + itemSchema.parse(data) + return data } diff --git a/src/types/item.ts b/src/types/item.ts index 5c03c96..7d77d7d 100644 --- a/src/types/item.ts +++ b/src/types/item.ts @@ -1,17 +1,21 @@ -export type Item = { - id: number - deleted: boolean - type: string - by: string - time: number - text: string - dead: boolean - parent: number - poll: any // fix this - kids: any // fix this - url: string - score: number - title: string - parts: any // fix this - descendants: number -} +import { z } from '@deps' + +export const itemSchema = z.object({ + id: z.number(), + deleted: z.optional(z.boolean()), + type: z.optional(z.string()), + by: z.optional(z.string()), + time: z.optional(z.number()), + text: z.optional(z.string()), + dead: z.optional(z.boolean()), + parent: z.optional(z.number()), + poll: z.optional(z.unknown()), + kids: z.optional(z.unknown()), + url: z.optional(z.string()), + score: z.optional(z.number()), + title: z.optional(z.string()), + parts: z.optional(z.unknown()), + descendants: z.optional(z.number()), +}).nullable() + +export type Item = z.infer From abbd3577373231348f8b70a663219dee2706ef4a Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 09:57:38 +0200 Subject: [PATCH 063/152] refactor!: move types in a single declaration file --- src/api.ts | 12 +++++----- src/preference/setup.ts | 2 +- src/tests/bot/setup.spec.ts | 14 +++--------- src/types.ts | 44 +++++++++++++++++++++++++++++++++++++ src/types/item.ts | 21 ------------------ src/types/sessionData.ts | 12 ---------- src/utils.ts | 2 +- src/utils/testHelpers.ts | 2 +- 8 files changed, 57 insertions(+), 52 deletions(-) create mode 100644 src/types.ts delete mode 100644 src/types/item.ts delete mode 100644 src/types/sessionData.ts diff --git a/src/api.ts b/src/api.ts index 3e375fe..1c5f69b 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,10 +1,12 @@ import { HN_API } from '@/config.ts' -import { Item, itemSchema } from '@/types/item.ts' +import { Item, itemSchema, storiesSchema, TopStories } from '@/types.ts' -export const getTopStories = async (): Promise => { - const data: number[] = await fetch(`${HN_API}/topstories.json`).then((res) => - res.json() - ) +export const getTopStories = async (): Promise => { + const data: TopStories = await fetch(`${HN_API}/topstories.json`).then(( + res, + ) => res.json()) + + storiesSchema.parse(data) return data } diff --git a/src/preference/setup.ts b/src/preference/setup.ts index e76c162..cfac5b7 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,5 +1,5 @@ import { Composer, createConversation, R } from '@deps' -import { ConversationContext, PreferencesContext } from '@/types/sessionData.ts' +import { ConversationContext, PreferencesContext } from '@/types.ts' const composer = new Composer() diff --git a/src/tests/bot/setup.spec.ts b/src/tests/bot/setup.spec.ts index 156d2c9..4b24d2e 100644 --- a/src/tests/bot/setup.spec.ts +++ b/src/tests/bot/setup.spec.ts @@ -1,13 +1,7 @@ +import setup from '@/preference/setup.ts' import { MemorySessionStorage, R } from '@deps' -import { - afterAll, - afterEach, - assertEquals, - beforeEach, - describe, - it, -} from '@dev_deps' -import { SessionData } from '@/types/sessionData.ts' +import { afterAll, assertEquals, beforeEach, describe, it } from '@dev_deps' +import { SessionData } from '@/types.ts' import { chat, from, @@ -31,8 +25,6 @@ afterAll(async () => { await new Promise((r) => setTimeout(r, 0)) }) -import setup from '@/preference/setup.ts' - describe('setup', () => { it('saves preferences', async () => { await testSetupConversation( diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..4e98282 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,44 @@ +import { + Context, + Conversation, + ConversationFlavor, + SessionFlavor, + z, +} from '@deps' + +export const itemSchema = z.object({ + id: z.number(), + deleted: z.optional(z.boolean()), + type: z.optional(z.string()), + by: z.optional(z.string()), + time: z.optional(z.number()), + text: z.optional(z.string()), + dead: z.optional(z.boolean()), + parent: z.optional(z.number()), + poll: z.optional(z.unknown()), + kids: z.optional(z.unknown()), + url: z.optional(z.string()), + score: z.optional(z.number()), + title: z.optional(z.string()), + parts: z.optional(z.unknown()), + descendants: z.optional(z.number()), +}).nullable() + +export type Item = z.infer + +const storySchema = z.number() + +export const storiesSchema = z.array(storySchema) + +export type TopStories = z.infer + +export interface SessionData { + preferences: string[] +} + +export type PreferencesContext = + & Context + & SessionFlavor + & ConversationFlavor + +export type ConversationContext = Conversation diff --git a/src/types/item.ts b/src/types/item.ts deleted file mode 100644 index 7d77d7d..0000000 --- a/src/types/item.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { z } from '@deps' - -export const itemSchema = z.object({ - id: z.number(), - deleted: z.optional(z.boolean()), - type: z.optional(z.string()), - by: z.optional(z.string()), - time: z.optional(z.number()), - text: z.optional(z.string()), - dead: z.optional(z.boolean()), - parent: z.optional(z.number()), - poll: z.optional(z.unknown()), - kids: z.optional(z.unknown()), - url: z.optional(z.string()), - score: z.optional(z.number()), - title: z.optional(z.string()), - parts: z.optional(z.unknown()), - descendants: z.optional(z.number()), -}).nullable() - -export type Item = z.infer diff --git a/src/types/sessionData.ts b/src/types/sessionData.ts deleted file mode 100644 index 26716f7..0000000 --- a/src/types/sessionData.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Context, Conversation, ConversationFlavor, SessionFlavor } from '@deps' - -export interface SessionData { - preferences: string[] -} - -export type PreferencesContext = - & Context - & SessionFlavor - & ConversationFlavor - -export type ConversationContext = Conversation diff --git a/src/utils.ts b/src/utils.ts index c4f05f9..50dcce1 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,6 +1,6 @@ -import { SessionData } from '@/types/sessionData.ts' import { freeStorage, MemorySessionStorage, R } from '@deps' import { APP_ENV } from '@/config.ts' +import { SessionData } from '@/types.ts' export const getSessionAdapter = (token?: string) => R.ifElse( diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index 9ade24f..30737b4 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -13,7 +13,7 @@ import { User, } from '@deps' import { faker } from '@dev_deps' -import { PreferencesContext, SessionData } from '@/types/sessionData.ts' +import { PreferencesContext, SessionData } from '@/types.ts' export interface ApiCall { method: M From c41af10c75ffa4329712f4f447c75ed39c6536f2 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 09:59:26 +0200 Subject: [PATCH 064/152] fix: import new types in bot.ts --- src/bot.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bot.ts b/src/bot.ts index 93764a7..99fac0c 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -3,7 +3,7 @@ import { BOT_TOKEN } from './config.ts' import { Bot, conversations, session } from '@deps' import { getSessionAdapter } from '@/utils.ts' -import { PreferencesContext, SessionData } from '@/types/sessionData.ts' +import { PreferencesContext, SessionData } from '@/types.ts' const bot = new Bot(BOT_TOKEN!) From 47f67def77ebfb0640846d83f695a5fa785527a6 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 10:13:28 +0200 Subject: [PATCH 065/152] docs: add codefactor badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 78fc8ed..d083bf2 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ HackerNews Telegram Bot +[![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot) + ## Usage ### Development From 8b8cdf1f2cf296bfb6ea42fbae9abcb4b2769c10 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 10:15:25 +0200 Subject: [PATCH 066/152] docs: move codefactor badge on top --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index d083bf2..05f323b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # hn-telegram-bot -HackerNews Telegram Bot - [![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot) +HackerNews Telegram Bot ## Usage From d37a609c40af64e228a5ee777a2b0051fdc57dd0 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 10:16:08 +0200 Subject: [PATCH 067/152] style: add newline on heading --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 05f323b..2a115c4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # hn-telegram-bot -[![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot) +[![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot) + HackerNews Telegram Bot ## Usage From 1b883281829110d8d58bee4ecd1f32d62ef3c237 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 10:35:20 +0200 Subject: [PATCH 068/152] feat: deploy workflow --- .github/workflows/deploy.yml | 35 +++++++++++++++++++++++++++++++++++ .vscode/extensions.json | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..7746438 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,35 @@ +name: Deploy +on: + push: + branches: develop + + pull_request: + branches: master + +jobs: + deploy: + name: Deploy + runs-on: ubuntu-latest + + permissions: + id-token: write # Needed for auth with Deno Deploy + contents: read # Needed to clone the repository + + steps: + - name: Clone repository + uses: actions/checkout@v3 + + - name: Install Deno + uses: denoland/setup-deno@v1 + with: + deno-version: v1.x + + - name: Test step + run: "deno task test" + + - name: Upload to Deno Deploy + uses: denoland/deployctl@v1 + with: + project: "hn-telegram-bot" + entrypoint: "bot.ts" + root: "./src" diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 4d79334..e0992ad 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["denoland.vscode-deno"] + "recommendations": ["denoland.vscode-deno", "github.vscode-github-actions"] } \ No newline at end of file From 9ab0417a7471a3de9d07b0890abf1517653faa88 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 10:38:37 +0200 Subject: [PATCH 069/152] chore: do not ignore .env test --- .env.test | 2 ++ .gitignore | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 .env.test diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..c770fa1 --- /dev/null +++ b/.env.test @@ -0,0 +1,2 @@ +BOT_TOKEN=test_token +APP_ENV=test \ No newline at end of file diff --git a/.gitignore b/.gitignore index d197312..44ad6d4 100644 --- a/.gitignore +++ b/.gitignore @@ -75,7 +75,7 @@ web_modules/ # dotenv environment variable files .env -.env.test +!.env.test .env.development.local .env.test.local .env.production.local From 9356578f1afe5282704a0dcfeb246c3cbc958e14 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 12:52:07 +0200 Subject: [PATCH 070/152] fix: change root to cwd --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7746438..703a5a0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -31,5 +31,5 @@ jobs: uses: denoland/deployctl@v1 with: project: "hn-telegram-bot" - entrypoint: "bot.ts" - root: "./src" + entrypoint: "src/bot.ts" + root: "." From 00eaeb07013ddd07016942f2b2989389d56c1d47 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 12:52:07 +0200 Subject: [PATCH 071/152] # This is a combination of 10 commits. # This is the 1st commit message: chore: add test job # This is the commit message #2: chore: add debug env log # This is the commit message #3: fix: add environment name # This is the commit message #4: fix: add app_env secret # This is the commit message #5: fix: use var app_env # This is the commit message #6: chore: debug bot token # This is the commit message #7: fix: move env in deploy job # This is the commit message #8: chore: add env in deploy step # This is the commit message #9: chore: debug secret # This is the commit message #10: chore: another log --- .github/workflows/deploy.yml | 35 +++++++++++++++++++++++++++++++---- README.md | 2 ++ src/config.ts | 2 ++ 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 703a5a0..4ea417b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,16 +1,42 @@ name: Deploy on: - push: + push: branches: develop pull_request: branches: master jobs: + test: + name: Test + runs-on: ubuntu-latest + + env: + APP_ENV: test + BOT_TOKEN: dummy + + steps: + - name: Setup repo + uses: actions/checkout@v3 + + - uses: denoland/setup-deno@main + with: + deno-version: v1.x + + # - name: Cache Dependencies + # run: deno cache src/bot.ts + + - name: Run Tests + run: deno task test + + deploy: name: Deploy runs-on: ubuntu-latest + environment: + name: ${{github.ref_name}} + permissions: id-token: write # Needed for auth with Deno Deploy contents: read # Needed to clone the repository @@ -24,11 +50,12 @@ jobs: with: deno-version: v1.x - - name: Test step - run: "deno task test" - - name: Upload to Deno Deploy uses: denoland/deployctl@v1 + env: + BOT_TOKEN: ${{secrets.BOT_TOKEN}} + GEMINI_API_KEY: ${{secrets.GEMINI_API_KEY}} + APP_ENV: ${{vars.APP_ENV}} with: project: "hn-telegram-bot" entrypoint: "src/bot.ts" diff --git a/README.md b/README.md index 2a115c4..709ff0e 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ [![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot) +![develop](https://github.com/devsheva/hn-telegram-bot/actions/workflows/deploy.yml/badge.svg?branch=develop) + HackerNews Telegram Bot ## Usage diff --git a/src/config.ts b/src/config.ts index a4441e3..148c941 100644 --- a/src/config.ts +++ b/src/config.ts @@ -15,6 +15,8 @@ const env = await load({ envPath, }) as Record +console.log('deno env', Deno.env.toObject()) + export const HN_API = 'https://hacker-news.firebaseio.com/v0/' export const BOT_TOKEN = env.BOT_TOKEN || Deno.env.get('BOT_TOKEN') export const APP_ENV = env.APP_ENV || Deno.env.get('APP_ENV') From daa9156e7f4491183c3517fee0745b1784c6494a Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 13:22:53 +0200 Subject: [PATCH 072/152] chore: add test job dependency --- .github/workflows/deploy.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4ea417b..67e5d9b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -34,6 +34,7 @@ jobs: name: Deploy runs-on: ubuntu-latest + needs: test environment: name: ${{github.ref_name}} @@ -53,8 +54,6 @@ jobs: - name: Upload to Deno Deploy uses: denoland/deployctl@v1 env: - BOT_TOKEN: ${{secrets.BOT_TOKEN}} - GEMINI_API_KEY: ${{secrets.GEMINI_API_KEY}} APP_ENV: ${{vars.APP_ENV}} with: project: "hn-telegram-bot" From ab86ddcca5a2d043c233118233a3b7b652293ba3 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 14:02:24 +0200 Subject: [PATCH 073/152] chore: add codecov --- .github/workflows/deploy.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 67e5d9b..9faf5a2 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -29,6 +29,26 @@ jobs: - name: Run Tests run: deno task test + coverage: + name: Coverage + runs-on: ubuntu-latest + + steps: + - name: Setup repo + uses: actions/checkout@v3 + + - uses: denoland/setup-deno@main + with: + deno-version: v1.x + + - name: Run Coverage + run: deno task coverage + + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + deploy: name: Deploy From 4ffd353765f5b65e07f34025524e252ca5aa7791 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 14:27:49 +0200 Subject: [PATCH 074/152] style: add develop codefactor --- .github/dependabot.yml | 14 -------------- README.md | 2 +- 2 files changed, 1 insertion(+), 15 deletions(-) delete mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index ea06357..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,14 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - -version: 2 -updates: - - package-ecosystem: "npm" - directory: "/" - target-branch: "develop" - schedule: - interval: "daily" - labels: - - "npm dependencies" diff --git a/README.md b/README.md index 709ff0e..7ac8544 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # hn-telegram-bot -[![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot) +[![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge/develop)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/overview/develop) ![develop](https://github.com/devsheva/hn-telegram-bot/actions/workflows/deploy.yml/badge.svg?branch=develop) From bf3dc59513da79d141ec43bb77a82317b11d93bd Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 14:47:22 +0200 Subject: [PATCH 075/152] chore: add update workflow --- .github/workflows/update.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/update.yml diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml new file mode 100644 index 0000000..4347477 --- /dev/null +++ b/.github/workflows/update.yml @@ -0,0 +1,22 @@ +name: update + +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + update: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Run updater + uses: boywithkeyboard/updater@v0 + # with: + # allowBreaking: true \ No newline at end of file From a9ca2a274a6549c24c3de76e0bea9fb79d98b8b2 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 14:52:23 +0200 Subject: [PATCH 076/152] chore: manual update workflow --- .github/workflows/update.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 4347477..ba4ab79 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -1,9 +1,6 @@ name: update -on: - schedule: - - cron: '0 0 * * *' - workflow_dispatch: +on: workflow_dispatch permissions: contents: write From 9844cecf3adb09aaf10106c9c3b9e90ecb90952a Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 14:55:03 +0200 Subject: [PATCH 077/152] Revert "chore: manual update workflow" This reverts commit a9ca2a274a6549c24c3de76e0bea9fb79d98b8b2. --- .github/workflows/update.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index ba4ab79..4347477 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -1,6 +1,9 @@ name: update -on: workflow_dispatch +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: permissions: contents: write From 832a07b3bf041ffeebdba69b70151cd2b77de723 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jul 2024 12:57:42 +0000 Subject: [PATCH 078/152] deno: update imports --- deno.lock | 108 ++++++++++++++++++++++++---------------------------- deps.ts | 6 +-- dev_deps.ts | 2 +- 3 files changed, 54 insertions(+), 62 deletions(-) diff --git a/deno.lock b/deno.lock index ea8baea..4075d63 100644 --- a/deno.lock +++ b/deno.lock @@ -8,8 +8,7 @@ "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.0-rc.2", "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", - "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", - "npm:@types/node": "npm:@types/node@18.16.19" + "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3" }, "jsr": { "@std/assert@0.226.0": { @@ -19,10 +18,7 @@ ] }, "@std/assert@1.0.0-rc.2": { - "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3", - "dependencies": [ - "jsr:@std/internal@^1.0.0" - ] + "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3" }, "@std/async@1.0.0-rc.3": { "integrity": "f0f1cb8cca0981c1ed0a5cf1b264bc3f0a44129e53a94be1e80cebeb2817633b" @@ -44,18 +40,12 @@ "jsr:@std/data-structures@^1.0.0-rc.1" ] } - }, - "npm": { - "@types/node@18.16.19": { - "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", - "dependencies": {} - } } }, "redirects": { "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts", - "https://lib.deno.dev/x/grammy@v1/mod.ts": "https://deno.land/x/grammy@v1.26.0/mod.ts", - "https://lib.deno.dev/x/grammy@v1/types.ts": "https://deno.land/x/grammy@v1.26.0/types.ts", + "https://lib.deno.dev/x/grammy@v1/mod.ts": "https://deno.land/x/grammy@v1.27.0/mod.ts", + "https://lib.deno.dev/x/grammy@v1/types.ts": "https://deno.land/x/grammy@v1.27.0/types.ts", "https://x.nest.land/ramda@0.27.2/mod.ts": "https://arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts" }, "remote": { @@ -81,25 +71,25 @@ "https://deno.land/std@0.224.0/cli/prompt_secret.ts": "3b2f95214422226482fba4a00cb25441475b6f97069a6f70f442c1c9a16c744c", "https://deno.land/std@0.224.0/cli/spinner.ts": "cf873605771270b4324cc063b5031ab250d8efee8799e45e1a3bfdd333ff721d", "https://deno.land/std@0.224.0/cli/unicode_width.ts": "656dd4271ecc90684b6bf23a5fb8c1cf833da625ef2906b61273ad617038072f", - "https://deno.land/x/grammy@v1.26.0/bot.ts": "291fec55778b8ff25112be28ee24ed3d68ea58f8a07e6fe9584953c242564ef3", - "https://deno.land/x/grammy@v1.26.0/composer.ts": "63adf2af7f1f32409d1a81688af5d5fe70551e0ccdfdfaae663cdac54a242a5b", - "https://deno.land/x/grammy@v1.26.0/context.ts": "24598580d65d9b55bef6db39ec9c796832248d0c59583d68d843d1a5c81f9a89", - "https://deno.land/x/grammy@v1.26.0/convenience/constants.ts": "1560129784be52f49aa0bea8716f09ed00dac367fef195be6a2c09bdfc43fb99", - "https://deno.land/x/grammy@v1.26.0/convenience/frameworks.ts": "69f343980c349f9552a022ae732b3d5de0894013df0fd304b4ad29bd62425dc1", - "https://deno.land/x/grammy@v1.26.0/convenience/inline_query.ts": "409d1940c7670708064efa495003bcbfdf6763a756b2e6303c464489fd3394ff", - "https://deno.land/x/grammy@v1.26.0/convenience/input_media.ts": "7af72a5fdb1af0417e31b1327003f536ddfdf64e06ab8bc7f5da6b574de38658", - "https://deno.land/x/grammy@v1.26.0/convenience/keyboard.ts": "6223ded897b1a02de2a35c5c2574415ca9bdf24538a136692e897ec51c16c76b", - "https://deno.land/x/grammy@v1.26.0/convenience/session.ts": "931fc31b58c6c9fee1d969505027e060fc5a2784a9219d9303da84e849532071", - "https://deno.land/x/grammy@v1.26.0/convenience/webhook.ts": "5ae7b9f2ea9e5b424009587d4232eb28f6e56d20ab20d49c7d9681af68dc7f13", - "https://deno.land/x/grammy@v1.26.0/core/api.ts": "358b8afc4529fa6f26bf1a04e296a842b56e534069750e904f336da2debb603c", - "https://deno.land/x/grammy@v1.26.0/core/client.ts": "df622a135e71229ffe722406850c9c08b90dcdd4d049b46926128599c73f9dc5", - "https://deno.land/x/grammy@v1.26.0/core/error.ts": "553ec19e1ec51d8161d7f54891d345533aa07232005575549e8b7c919ee4795e", - "https://deno.land/x/grammy@v1.26.0/core/payload.ts": "420e17c3c2830b5576ea187cfce77578fe09f1204b25c25ea2f220ca7c86e73b", - "https://deno.land/x/grammy@v1.26.0/filter.ts": "303564c516838c2ec05fa1ba83bba6feffa7b76caa85fd02c4ab586db252dba3", - "https://deno.land/x/grammy@v1.26.0/mod.ts": "7723e08709ff7fd01df3e463503e14e4fd1a581669380eed70351e1121e8a833", - "https://deno.land/x/grammy@v1.26.0/platform.deno.ts": "68272a7e1d9a2d74d8a45342526485dbc0531dee812f675d7f8a4e7fc8393028", - "https://deno.land/x/grammy@v1.26.0/types.deno.ts": "2dca831f286458ba2dcef2235e5177a09404e4a7db51bfdea93b95de48570ab2", - "https://deno.land/x/grammy@v1.26.0/types.ts": "729415590dfa188dbe924dea614dff4e976babdbabb28a307b869fc25777cdf0", + "https://deno.land/x/grammy@v1.27.0/bot.ts": "291fec55778b8ff25112be28ee24ed3d68ea58f8a07e6fe9584953c242564ef3", + "https://deno.land/x/grammy@v1.27.0/composer.ts": "e5442ce0dd504661b36ad875a6a1b9ab32c004239ebd1ab3d5aa2976e1902f83", + "https://deno.land/x/grammy@v1.27.0/context.ts": "3ae13abed37a3eb1ae76598c9e187c6c37863df2b21c9fb1e27b785b1820c172", + "https://deno.land/x/grammy@v1.27.0/convenience/constants.ts": "1560129784be52f49aa0bea8716f09ed00dac367fef195be6a2c09bdfc43fb99", + "https://deno.land/x/grammy@v1.27.0/convenience/frameworks.ts": "69f343980c349f9552a022ae732b3d5de0894013df0fd304b4ad29bd62425dc1", + "https://deno.land/x/grammy@v1.27.0/convenience/inline_query.ts": "409d1940c7670708064efa495003bcbfdf6763a756b2e6303c464489fd3394ff", + "https://deno.land/x/grammy@v1.27.0/convenience/input_media.ts": "7af72a5fdb1af0417e31b1327003f536ddfdf64e06ab8bc7f5da6b574de38658", + "https://deno.land/x/grammy@v1.27.0/convenience/keyboard.ts": "6223ded897b1a02de2a35c5c2574415ca9bdf24538a136692e897ec51c16c76b", + "https://deno.land/x/grammy@v1.27.0/convenience/session.ts": "931fc31b58c6c9fee1d969505027e060fc5a2784a9219d9303da84e849532071", + "https://deno.land/x/grammy@v1.27.0/convenience/webhook.ts": "5ae7b9f2ea9e5b424009587d4232eb28f6e56d20ab20d49c7d9681af68dc7f13", + "https://deno.land/x/grammy@v1.27.0/core/api.ts": "358b8afc4529fa6f26bf1a04e296a842b56e534069750e904f336da2debb603c", + "https://deno.land/x/grammy@v1.27.0/core/client.ts": "df622a135e71229ffe722406850c9c08b90dcdd4d049b46926128599c73f9dc5", + "https://deno.land/x/grammy@v1.27.0/core/error.ts": "553ec19e1ec51d8161d7f54891d345533aa07232005575549e8b7c919ee4795e", + "https://deno.land/x/grammy@v1.27.0/core/payload.ts": "420e17c3c2830b5576ea187cfce77578fe09f1204b25c25ea2f220ca7c86e73b", + "https://deno.land/x/grammy@v1.27.0/filter.ts": "4cffc1b2276eca2ae6408a4347ba5dda8104bbc8e56ebe772fdf6441d91cd7b6", + "https://deno.land/x/grammy@v1.27.0/mod.ts": "7723e08709ff7fd01df3e463503e14e4fd1a581669380eed70351e1121e8a833", + "https://deno.land/x/grammy@v1.27.0/platform.deno.ts": "68272a7e1d9a2d74d8a45342526485dbc0531dee812f675d7f8a4e7fc8393028", + "https://deno.land/x/grammy@v1.27.0/types.deno.ts": "b2aba74fb3aba667c0454d9963f9c6ea70acde6d9cc7e6ac0e306f6cad6e28f6", + "https://deno.land/x/grammy@v1.27.0/types.ts": "729415590dfa188dbe924dea614dff4e976babdbabb28a307b869fc25777cdf0", "https://deno.land/x/grammy_conversations@v1.2.0/conversation.ts": "4bcad06e2ac562969a7a6661bb1cf1477a3fe9e537c18419de65c456feb69499", "https://deno.land/x/grammy_conversations@v1.2.0/deps.deno.ts": "c982798d7ca4cd3ebcd5a24319d03c5980dc47827b5a172a77022859abdb404e", "https://deno.land/x/grammy_conversations@v1.2.0/form.ts": "d2d527fdcb26eb489b4aa1a183ae3aa14bf185a375ebf7d5c6ab8360e8b0e170", @@ -107,34 +97,36 @@ "https://deno.land/x/grammy_conversations@v1.2.0/utils.ts": "139ebe78dbf078d3bbf8cbc78ad286125a08e7e7895d4985fff7be9cef328e20", "https://deno.land/x/grammy_storages@v2.4.2/free/src/adapter.ts": "0a85a6363b12dd0f6d79d1ca469eb7677082050c2e60592441f929f95621dc0d", "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts": "6485c5bf548fc73446f54f397660a59ffcaf0bcc465b6050c2c762848c2c0ba5", - "https://deno.land/x/grammy_types@v3.10.0/api.ts": "ae04d6628e3d25ae805bc07a19475065044fc44cde0a40877405bc3544d03a5f", - "https://deno.land/x/grammy_types@v3.10.0/inline.ts": "9bc165676a2bb984525adf2c457cdf5f432016b25c3d399dceedfeaf638dbf29", - "https://deno.land/x/grammy_types@v3.10.0/langs.ts": "5f5fd09c58ba3ae942dd7cea2696f95587d2032c1829bba4bca81762b7ef73b6", - "https://deno.land/x/grammy_types@v3.10.0/manage.ts": "bd92f57b8732a26eb247f270bca92415d23ba6c99761960e9698c220b43f2a02", - "https://deno.land/x/grammy_types@v3.10.0/markup.ts": "7430abcea68d294df73a433f621a37cf1281718d3e29e903ed1e474038c7489d", - "https://deno.land/x/grammy_types@v3.10.0/message.ts": "45bd78a7ce9c439d523464ca1b54f41fb760cb9e6ba4d0ca51f9cea9edc4097d", - "https://deno.land/x/grammy_types@v3.10.0/methods.ts": "52a745c874f6d7cbe6a063fcb3a84e7d82dd8030b8c77539c169348fa52da70d", - "https://deno.land/x/grammy_types@v3.10.0/mod.ts": "7ecea1d3f7085d64419b78183039c78d70d655aeaa8b07f118ffbfb823f5b0b7", - "https://deno.land/x/grammy_types@v3.10.0/passport.ts": "19820e7d6c279521f8bc8912d6a378239f73d4ab525453808994b5f44ef95215", - "https://deno.land/x/grammy_types@v3.10.0/payment.ts": "4eec1018bdfbd38f3ce4d7aed7761b9ca1e2b3bee503bdbca992dee6297c450d", - "https://deno.land/x/grammy_types@v3.10.0/settings.ts": "f8ff810da6f1007ed24cd504809bf46820229c395ff9bfc3e5c8ceaef5b2aae1", - "https://deno.land/x/grammy_types@v3.10.0/update.ts": "7033ebfbecf6fbbd2d68f7a3550c9b04e553228a2143104fc63c42dd7f8f6881", + "https://deno.land/x/grammy_types@v3.11.0/api.ts": "ae04d6628e3d25ae805bc07a19475065044fc44cde0a40877405bc3544d03a5f", + "https://deno.land/x/grammy_types@v3.11.0/inline.ts": "9bc165676a2bb984525adf2c457cdf5f432016b25c3d399dceedfeaf638dbf29", + "https://deno.land/x/grammy_types@v3.11.0/langs.ts": "5f5fd09c58ba3ae942dd7cea2696f95587d2032c1829bba4bca81762b7ef73b6", + "https://deno.land/x/grammy_types@v3.11.0/manage.ts": "bd92f57b8732a26eb247f270bca92415d23ba6c99761960e9698c220b43f2a02", + "https://deno.land/x/grammy_types@v3.11.0/markup.ts": "7430abcea68d294df73a433f621a37cf1281718d3e29e903ed1e474038c7489d", + "https://deno.land/x/grammy_types@v3.11.0/message.ts": "32e60efb2d1984b392b1b8b547864db6f65df6e2ab77742438dcaea3ffcf1aa8", + "https://deno.land/x/grammy_types@v3.11.0/methods.ts": "52a745c874f6d7cbe6a063fcb3a84e7d82dd8030b8c77539c169348fa52da70d", + "https://deno.land/x/grammy_types@v3.11.0/mod.ts": "7ecea1d3f7085d64419b78183039c78d70d655aeaa8b07f118ffbfb823f5b0b7", + "https://deno.land/x/grammy_types@v3.11.0/passport.ts": "19820e7d6c279521f8bc8912d6a378239f73d4ab525453808994b5f44ef95215", + "https://deno.land/x/grammy_types@v3.11.0/payment.ts": "419c076b4ac2282234cc95b22b2922e8e359d368cc6bc66620f47f1329c3ad77", + "https://deno.land/x/grammy_types@v3.11.0/settings.ts": "f8ff810da6f1007ed24cd504809bf46820229c395ff9bfc3e5c8ceaef5b2aae1", + "https://deno.land/x/grammy_types@v3.11.0/update.ts": "7033ebfbecf6fbbd2d68f7a3550c9b04e553228a2143104fc63c42dd7f8f6881", "https://deno.land/x/oson@1.0.1/constructors.ts": "2b77dcdc8d8db5ece2860d1657f4dcef37dd761684f1d4b9535c7e56a0fbfcf6", "https://deno.land/x/oson@1.0.1/mod.ts": "54e494dc517ce0de6c727c25d9731ccc748e8646c883e922dc5d656f523a4e5b", "https://deno.land/x/oson@1.0.1/oson.ts": "ec3908ae5c9ceff7bfd869d95a2183b929b9d96fbff44b57d28d3b742d06a4a1", - "https://deno.land/x/zod@v3.16.1/ZodError.ts": "6e56e6416bbbad3539b577b7636dc198e5d87cf59f1ceb4e7b58d1d38190c2f7", - "https://deno.land/x/zod@v3.16.1/external.ts": "433e13ff774fef22d416027308db33cacb719774898372ec5faa32bb572f11dc", - "https://deno.land/x/zod@v3.16.1/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", - "https://deno.land/x/zod@v3.16.1/helpers/parseUtil.ts": "2611b41b579f551fcf0799415f9793709637bc7c7778bf53aab73cea92e859db", - "https://deno.land/x/zod@v3.16.1/helpers/partialUtil.ts": "8dc921a02b47384cf52217c7e539268daf619f89319b75bdf13ea178815725df", - "https://deno.land/x/zod@v3.16.1/helpers/typeAliases.ts": "a1a8d039eb98925f242f5ea1e21e6d3cabd7f05e9747680165c914695c979b4f", - "https://deno.land/x/zod@v3.16.1/helpers/util.ts": "1d28cc4dfde641f20d8544a1a747cf745d5eda0c5cdeaca8a29837991254a67d", - "https://deno.land/x/zod@v3.16.1/index.ts": "035a7422d9f2be54daa0fe464254b69225b443000673e4794095d672471e8792", - "https://deno.land/x/zod@v3.16.1/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", - "https://deno.land/x/zod@v3.16.1/types.ts": "fff4c7909b1919989c4cc1abe6218dfbdb53e197cacb2dfad2831dbd71dc56d2", - "https://esm.sh/@faker-js/faker@v8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", - "https://esm.sh/v135/@faker-js/faker@8.4.0": "3b580236f3f8c85a7b2b589e685a265367d4d548add82207dfc9fba6a50df32e", - "https://esm.sh/v135/@faker-js/faker@8.4.0/denonext/faker.mjs": "6d41425710d5f98197ac4842005814ca5375aaa0f57a504b3e138a4a5e1efa02", + "https://deno.land/x/zod@v3.23.8/ZodError.ts": "528da200fbe995157b9ae91498b103c4ef482217a5c086249507ac850bd78f52", + "https://deno.land/x/zod@v3.23.8/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", + "https://deno.land/x/zod@v3.23.8/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", + "https://deno.land/x/zod@v3.23.8/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c", + "https://deno.land/x/zod@v3.23.8/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", + "https://deno.land/x/zod@v3.23.8/helpers/parseUtil.ts": "c14814d167cc286972b6e094df88d7d982572a08424b7cd50f862036b6fcaa77", + "https://deno.land/x/zod@v3.23.8/helpers/partialUtil.ts": "998c2fe79795257d4d1cf10361e74492f3b7d852f61057c7c08ac0a46488b7e7", + "https://deno.land/x/zod@v3.23.8/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e", + "https://deno.land/x/zod@v3.23.8/helpers/util.ts": "30c273131661ca5dc973f2cfb196fa23caf3a43e224cdde7a683b72e101a31fc", + "https://deno.land/x/zod@v3.23.8/index.ts": "d27aabd973613985574bc31f39e45cb5d856aa122ef094a9f38a463b8ef1a268", + "https://deno.land/x/zod@v3.23.8/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", + "https://deno.land/x/zod@v3.23.8/mod.ts": "ec6e2b1255c1a350b80188f97bd0a6bac45801bb46fc48f50b9763aa66046039", + "https://deno.land/x/zod@v3.23.8/types.ts": "1b172c90782b1eaa837100ebb6abd726d79d6c1ec336350c8e851e0fd706bf5c", + "https://esm.sh/@faker-js/faker@8.4.1": "21d589a68f956f90bcf4031bc6f26f5a5c531ca4bd798e16ec33094ea6560bce", + "https://esm.sh/v135/@faker-js/faker@8.4.1/denonext/faker.mjs": "bf2af6fc7f2660f80df3c0fda1185082478ef84a73b1aa27ea761977f6fd8426", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "14262bdcea26c261f2f6490e733b792af9d3ae3582a4d09ca5bab0479b48ca40", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/F.js": "cf0f5fdb08048909e49bb6f222f6e2f92db8d4dc0dd24900864eaf69c3746e3d", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/T.js": "f96ac2cdaeedf374fb932a4ec368f0566143f0c2d028919976c41c6ee53c0515", diff --git a/deps.ts b/deps.ts index 03c637f..641adf3 100644 --- a/deps.ts +++ b/deps.ts @@ -1,6 +1,6 @@ export * as R from "https://x.nest.land/ramda@0.27.2/mod.ts" -export * from "https://deno.land/x/grammy@v1.26.0/mod.ts"; +export * from "https://deno.land/x/grammy@v1.27.0/mod.ts"; export * from "https://deno.land/x/grammy_conversations@v1.2.0/mod.ts"; export * from "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts" -export * from "https://deno.land/x/grammy_types@v3.10.0/mod.ts" -export { z } from "https://deno.land/x/zod@v3.16.1/mod.ts"; +export * from "https://deno.land/x/grammy_types@v3.11.0/mod.ts" +export { z } from "https://deno.land/x/zod@v3.23.8/mod.ts"; diff --git a/dev_deps.ts b/dev_deps.ts index 90a033e..0d21e21 100644 --- a/dev_deps.ts +++ b/dev_deps.ts @@ -1,4 +1,4 @@ -export { faker } from "https://esm.sh/@faker-js/faker@v8.4.0" +export { faker } from "https://esm.sh/@faker-js/faker@8.4.1" export * from '@std/testing/bdd' export * from '@std/assert' export * from '@std/testing/mock' From b99f143343d955c4eb708a84cf1e604c92dbfc98 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 18:21:05 +0200 Subject: [PATCH 079/152] chore: upgrade packages --- deno.lock | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/deno.lock b/deno.lock index 4075d63..349acf6 100644 --- a/deno.lock +++ b/deno.lock @@ -8,7 +8,8 @@ "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.0-rc.2", "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", - "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3" + "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", + "npm:@types/node": "npm:@types/node@18.16.19" }, "jsr": { "@std/assert@0.226.0": { @@ -40,6 +41,12 @@ "jsr:@std/data-structures@^1.0.0-rc.1" ] } + }, + "npm": { + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + } } }, "redirects": { From 72bb5b3e2dc1a507abbca1c956ac57e56dbe6264 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 18:32:39 +0200 Subject: [PATCH 080/152] docs: add deployment section --- README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7ac8544..5fadf24 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # hn-telegram-bot -[![CodeFactor](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/badge/develop)](https://www.codefactor.io/repository/github/devsheva/hn-telegram-bot/overview/develop) - ![develop](https://github.com/devsheva/hn-telegram-bot/actions/workflows/deploy.yml/badge.svg?branch=develop) +[![codecov](https://codecov.io/gh/devsheva/hn-telegram-bot/branch/develop/graph/badge.svg?token=KTAGSPACY1)](https://codecov.io/gh/devsheva/hn-telegram-bot) HackerNews Telegram Bot @@ -12,19 +11,24 @@ HackerNews Telegram Bot To develop in local just run `deno task dev` that will start in watch mode. -### Build - -```deno task build``` - ### Testing Put all tests under this [folder](src/__tests__) and run `deno task test`, which will run test environment with Deno in watch mode > Note: this is a temporary workaround until conversations plugin is fixed -When running tests on a composer that involves conversation, always add `await new Promise(r => setTimeout(r, 0))`, so it doesn't lead to deno leaks due to sanitizers. +When running tests on a composer that involves conversation, always add `await new Promise(r => setTimeout(r, 0))`, so it doesn't lead to +deno leaks due to sanitizers. ### Tips Use `setMyCommands` on deployment, or configure it directly with **@BotFather** This project is made by mainly following BDD principles, so you should stick to it, you won't regret. + +## Deployment + +It's handled with GitHub Actions, with two [workflows](.github/workflows/): + +- **deploy.yml** + - 3 jobs: test, coverage, deploy +- **update.yml**: external GH Action that acts like dependabot but for deno From 988bfba7ee1b1d9a76805b33ce60bf05a74c7bcc Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 18:38:20 +0200 Subject: [PATCH 081/152] fix: remove env leaking log --- src/config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/config.ts b/src/config.ts index 148c941..a4441e3 100644 --- a/src/config.ts +++ b/src/config.ts @@ -15,8 +15,6 @@ const env = await load({ envPath, }) as Record -console.log('deno env', Deno.env.toObject()) - export const HN_API = 'https://hacker-news.firebaseio.com/v0/' export const BOT_TOKEN = env.BOT_TOKEN || Deno.env.get('BOT_TOKEN') export const APP_ENV = env.APP_ENV || Deno.env.get('APP_ENV') From 9efe8f216652bfec19b442a812f67cfc26db582c Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 18:46:42 +0200 Subject: [PATCH 082/152] chore: reignore .env.test --- .env.test | 2 -- .gitignore | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 .env.test diff --git a/.env.test b/.env.test deleted file mode 100644 index c770fa1..0000000 --- a/.env.test +++ /dev/null @@ -1,2 +0,0 @@ -BOT_TOKEN=test_token -APP_ENV=test \ No newline at end of file diff --git a/.gitignore b/.gitignore index 44ad6d4..d197312 100644 --- a/.gitignore +++ b/.gitignore @@ -75,7 +75,7 @@ web_modules/ # dotenv environment variable files .env -!.env.test +.env.test .env.development.local .env.test.local .env.production.local From cb9aacb73649c54defb60b1e586d817548b859a9 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 20:56:06 +0200 Subject: [PATCH 083/152] chore: upgrade grammy to 1.27 with latest types --- deno.jsonc | 2 -- deps.ts | 6 ------ src/bot.ts | 9 ++++----- src/config.ts | 3 ++- src/deps.ts | 6 ++++++ dev_deps.ts => src/dev_deps.ts | 0 src/preference/setup.ts | 2 +- src/tests/bot/setup.spec.ts | 4 ++-- src/tests/getItem.spec.ts | 2 +- src/tests/getTopStories.spec.ts | 4 ++-- src/tests/utils.spec.ts | 4 ++-- src/types.ts | 2 +- src/utils.ts | 2 +- src/utils/testHelpers.ts | 4 ++-- 14 files changed, 24 insertions(+), 26 deletions(-) delete mode 100644 deps.ts create mode 100644 src/deps.ts rename dev_deps.ts => src/dev_deps.ts (100%) diff --git a/deno.jsonc b/deno.jsonc index d1f0ae1..102f018 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -2,8 +2,6 @@ "imports": { "@/": "./src/", "@bot/": "./src/bot/", - "@deps": "./deps.ts", - "@dev_deps": "./dev_deps.ts", "@std/assert": "jsr:@std/assert@^0.226.0", "@std/dotenv": "jsr:@std/dotenv@^0.224.2", "@std/testing": "jsr:@std/testing@^0.225.3", diff --git a/deps.ts b/deps.ts deleted file mode 100644 index 641adf3..0000000 --- a/deps.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * as R from "https://x.nest.land/ramda@0.27.2/mod.ts" -export * from "https://deno.land/x/grammy@v1.27.0/mod.ts"; -export * from "https://deno.land/x/grammy_conversations@v1.2.0/mod.ts"; -export * from "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts" -export * from "https://deno.land/x/grammy_types@v3.11.0/mod.ts" -export { z } from "https://deno.land/x/zod@v3.23.8/mod.ts"; diff --git a/src/bot.ts b/src/bot.ts index 99fac0c..f1bff46 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,9 +1,8 @@ -import setup from './preference/setup.ts' -import { BOT_TOKEN } from './config.ts' - -import { Bot, conversations, session } from '@deps' -import { getSessionAdapter } from '@/utils.ts' +import { BOT_TOKEN } from '@/config.ts' +import { Bot, conversations, session } from '@/deps.ts' +import setup from '@/preference/setup.ts' import { PreferencesContext, SessionData } from '@/types.ts' +import { getSessionAdapter } from '@/utils.ts' const bot = new Bot(BOT_TOKEN!) diff --git a/src/config.ts b/src/config.ts index a4441e3..2891d8e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,6 +1,7 @@ import { load } from '@std/dotenv' -import { R } from '@deps' + import { parseArgs } from '@std/cli' +import { R } from '@/deps.ts' type EnvKeys = 'BOT_TOKEN' | 'APP_ENV' diff --git a/src/deps.ts b/src/deps.ts new file mode 100644 index 0000000..5835ed1 --- /dev/null +++ b/src/deps.ts @@ -0,0 +1,6 @@ +export * as R from 'https://x.nest.land/ramda@0.27.2/mod.ts' +export * from 'https://deno.land/x/grammy@v1.27.0/mod.ts' +export * from 'https://deno.land/x/grammy_types@v3.11.0/mod.ts' +export * from 'https://deno.land/x/grammy_conversations@v1.2.0/mod.ts' +export * from 'https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts' +export { z } from 'https://deno.land/x/zod@v3.23.8/mod.ts' diff --git a/dev_deps.ts b/src/dev_deps.ts similarity index 100% rename from dev_deps.ts rename to src/dev_deps.ts diff --git a/src/preference/setup.ts b/src/preference/setup.ts index cfac5b7..55320b6 100644 --- a/src/preference/setup.ts +++ b/src/preference/setup.ts @@ -1,4 +1,4 @@ -import { Composer, createConversation, R } from '@deps' +import { Composer, createConversation, R } from '../deps.ts' import { ConversationContext, PreferencesContext } from '@/types.ts' const composer = new Composer() diff --git a/src/tests/bot/setup.spec.ts b/src/tests/bot/setup.spec.ts index 4b24d2e..a25521a 100644 --- a/src/tests/bot/setup.spec.ts +++ b/src/tests/bot/setup.spec.ts @@ -1,6 +1,6 @@ +import { MemorySessionStorage, R } from '@/deps.ts' +import { afterAll, assertEquals, beforeEach, describe, it } from '@/dev_deps.ts' import setup from '@/preference/setup.ts' -import { MemorySessionStorage, R } from '@deps' -import { afterAll, assertEquals, beforeEach, describe, it } from '@dev_deps' import { SessionData } from '@/types.ts' import { chat, diff --git a/src/tests/getItem.spec.ts b/src/tests/getItem.spec.ts index 03ee963..7a58a48 100644 --- a/src/tests/getItem.spec.ts +++ b/src/tests/getItem.spec.ts @@ -6,7 +6,7 @@ import { describe, it, stub, -} from '@dev_deps' +} from '@/dev_deps.ts' describe('getItem', () => { it('should return an item', async () => { diff --git a/src/tests/getTopStories.spec.ts b/src/tests/getTopStories.spec.ts index 30973a3..510b91d 100644 --- a/src/tests/getTopStories.spec.ts +++ b/src/tests/getTopStories.spec.ts @@ -1,3 +1,4 @@ +import { getTopStories } from '@/api.ts' import { assertInstanceOf, assertObjectMatch, @@ -5,8 +6,7 @@ import { faker, it, stub, -} from '@dev_deps' -import { getTopStories } from '@/api.ts' +} from '@/dev_deps.ts' describe('getTopStories', () => { it('should return an array of top stories', async () => { diff --git a/src/tests/utils.spec.ts b/src/tests/utils.spec.ts index 8fd0a4b..451c73d 100644 --- a/src/tests/utils.spec.ts +++ b/src/tests/utils.spec.ts @@ -1,6 +1,6 @@ -import { MemorySessionStorage } from '@deps' +import { MemorySessionStorage } from '@/deps.ts' +import { assertInstanceOf, describe, it } from '@/dev_deps.ts' import { getSessionAdapter } from '@/utils.ts' -import { assertInstanceOf, describe, it } from '@dev_deps' const adapter = getSessionAdapter() diff --git a/src/types.ts b/src/types.ts index 4e98282..daf0476 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4,7 +4,7 @@ import { ConversationFlavor, SessionFlavor, z, -} from '@deps' +} from '@/deps.ts' export const itemSchema = z.object({ id: z.number(), diff --git a/src/utils.ts b/src/utils.ts index 50dcce1..76ff786 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,5 +1,5 @@ -import { freeStorage, MemorySessionStorage, R } from '@deps' import { APP_ENV } from '@/config.ts' +import { freeStorage, MemorySessionStorage, R } from '@/deps.ts' import { SessionData } from '@/types.ts' export const getSessionAdapter = (token?: string) => diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index 30737b4..b3ca8dc 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -11,8 +11,8 @@ import { session, Update, User, -} from '@deps' -import { faker } from '@dev_deps' +} from '@/deps.ts' +import { faker } from '@/dev_deps.ts' import { PreferencesContext, SessionData } from '@/types.ts' export interface ApiCall { From 30f3ca39f563a95bd1832bb11c7380fadce4e852 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 21:00:04 +0200 Subject: [PATCH 084/152] fix: add missing test variables for coverage --- .github/workflows/deploy.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9faf5a2..68c91a8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -33,6 +33,10 @@ jobs: name: Coverage runs-on: ubuntu-latest + env: + APP_ENV: test + BOT_TOKEN: dummy + steps: - name: Setup repo uses: actions/checkout@v3 From 5c39291e76f4472879985002056855d6767b3cba Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 21:06:54 +0200 Subject: [PATCH 085/152] ci: cache dependencies during test --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 68c91a8..458ef83 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,14 +17,14 @@ jobs: steps: - name: Setup repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: denoland/setup-deno@main with: deno-version: v1.x - # - name: Cache Dependencies - # run: deno cache src/bot.ts + - name: Cache Dependencies + run: deno cache src/bot.ts - name: Run Tests run: deno task test From b053a32071e0d3c9adbf5fc3b1e6015fc899a97b Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 21:14:53 +0200 Subject: [PATCH 086/152] chore: ignore any lint in specs --- deno.jsonc | 6 +----- src/tests/getItem.spec.ts | 1 + src/tests/getTopStories.spec.ts | 1 + src/utils/testHelpers.ts | 1 + 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/deno.jsonc b/deno.jsonc index 102f018..e77e2d7 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -12,11 +12,7 @@ "include": ["src/**/*.ts"], "semiColons": false, "singleQuote": true, - "proseWrap": "preserve", - "exclude": [ - "./node_modules/", - "./dist/" - ] + "proseWrap": "preserve" }, "tasks": { "coverage": "rm -rf cov_profile && deno test -A --parallel --coverage=cov_profile -- --test && deno coverage --lcov --output=./coverage.lcov ./cov_profile", diff --git a/src/tests/getItem.spec.ts b/src/tests/getItem.spec.ts index 7a58a48..5d105c2 100644 --- a/src/tests/getItem.spec.ts +++ b/src/tests/getItem.spec.ts @@ -1,3 +1,4 @@ +// deno-lint-ignore-file no-explicit-any import { getItem } from '@/api.ts' import { assertEquals, diff --git a/src/tests/getTopStories.spec.ts b/src/tests/getTopStories.spec.ts index 510b91d..393bde2 100644 --- a/src/tests/getTopStories.spec.ts +++ b/src/tests/getTopStories.spec.ts @@ -1,3 +1,4 @@ +// deno-lint-ignore-file no-explicit-any import { getTopStories } from '@/api.ts' import { assertInstanceOf, diff --git a/src/utils/testHelpers.ts b/src/utils/testHelpers.ts index b3ca8dc..a4c0e13 100644 --- a/src/utils/testHelpers.ts +++ b/src/utils/testHelpers.ts @@ -1,3 +1,4 @@ +// deno-lint-ignore-file no-explicit-any import { ApiResponse, Bot, From 2c20aceb0a83e99eebe37727073f306bbbdd57b9 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 21:15:03 +0200 Subject: [PATCH 087/152] ci: add format and lint job --- .github/workflows/deploy.yml | 29 ++++++++++++++++++++-- src/config.ts | 8 +++--- src/dev_deps.ts | 4 +-- src/types.ts | 48 ++++++++++++++++++------------------ 4 files changed, 57 insertions(+), 32 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 458ef83..37fdd8d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -54,11 +54,36 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} + format-and-lint: + name: Format and Lint + runs-on: ubuntu-latest + + env: + APP_ENV: test + BOT_TOKEN: dummy + + steps: + - name: Setup repo + uses: actions/checkout@v4 + + - uses: denoland/setup-deno@main + with: + deno-version: v1.x + + - name: Run Format + run: deno fmt --check + + - name: Run Lint + run: deno lint + deploy: name: Deploy runs-on: ubuntu-latest - needs: test + needs: + - test + - format-and-lint + environment: name: ${{github.ref_name}} @@ -68,7 +93,7 @@ jobs: steps: - name: Clone repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Deno uses: denoland/setup-deno@v1 diff --git a/src/config.ts b/src/config.ts index 2891d8e..96d99c2 100644 --- a/src/config.ts +++ b/src/config.ts @@ -7,13 +7,13 @@ type EnvKeys = 'BOT_TOKEN' | 'APP_ENV' const isTest = parseArgs(Deno.args).test const envPath = R.ifElse( - R.equals(true), - R.always('.env.test'), - R.always('.env'), + R.equals(true), + R.always('.env.test'), + R.always('.env'), )(isTest) const env = await load({ - envPath, + envPath, }) as Record export const HN_API = 'https://hacker-news.firebaseio.com/v0/' diff --git a/src/dev_deps.ts b/src/dev_deps.ts index 0d21e21..967b5fe 100644 --- a/src/dev_deps.ts +++ b/src/dev_deps.ts @@ -1,6 +1,6 @@ -export { faker } from "https://esm.sh/@faker-js/faker@8.4.1" +export { faker } from 'https://esm.sh/@faker-js/faker@8.4.1' export * from '@std/testing/bdd' export * from '@std/assert' export * from '@std/testing/mock' export * from '@std/testing/types' -export * from '@std/testing/time' \ No newline at end of file +export * from '@std/testing/time' diff --git a/src/types.ts b/src/types.ts index daf0476..09a3e0f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,27 +1,27 @@ import { - Context, - Conversation, - ConversationFlavor, - SessionFlavor, - z, + Context, + Conversation, + ConversationFlavor, + SessionFlavor, + z, } from '@/deps.ts' export const itemSchema = z.object({ - id: z.number(), - deleted: z.optional(z.boolean()), - type: z.optional(z.string()), - by: z.optional(z.string()), - time: z.optional(z.number()), - text: z.optional(z.string()), - dead: z.optional(z.boolean()), - parent: z.optional(z.number()), - poll: z.optional(z.unknown()), - kids: z.optional(z.unknown()), - url: z.optional(z.string()), - score: z.optional(z.number()), - title: z.optional(z.string()), - parts: z.optional(z.unknown()), - descendants: z.optional(z.number()), + id: z.number(), + deleted: z.optional(z.boolean()), + type: z.optional(z.string()), + by: z.optional(z.string()), + time: z.optional(z.number()), + text: z.optional(z.string()), + dead: z.optional(z.boolean()), + parent: z.optional(z.number()), + poll: z.optional(z.unknown()), + kids: z.optional(z.unknown()), + url: z.optional(z.string()), + score: z.optional(z.number()), + title: z.optional(z.string()), + parts: z.optional(z.unknown()), + descendants: z.optional(z.number()), }).nullable() export type Item = z.infer @@ -33,12 +33,12 @@ export const storiesSchema = z.array(storySchema) export type TopStories = z.infer export interface SessionData { - preferences: string[] + preferences: string[] } export type PreferencesContext = - & Context - & SessionFlavor - & ConversationFlavor + & Context + & SessionFlavor + & ConversationFlavor export type ConversationContext = Conversation From 0236e248e2bf8b7f9dbc7c7fd02c33145395ed72 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 22:12:48 +0200 Subject: [PATCH 088/152] refactor: improve env loading with zod --- deno.jsonc | 2 +- deno.lock | 9 --------- src/api.ts | 17 ++++++++++------- src/bot.ts | 6 +++--- src/config.ts | 30 +++++++++++++----------------- src/utils.ts | 4 ++-- 6 files changed, 29 insertions(+), 39 deletions(-) diff --git a/deno.jsonc b/deno.jsonc index e77e2d7..6951379 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -17,7 +17,7 @@ "tasks": { "coverage": "rm -rf cov_profile && deno test -A --parallel --coverage=cov_profile -- --test && deno coverage --lcov --output=./coverage.lcov ./cov_profile", "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", - "test": "deno test -A --parallel -- --test" + "test": "APP_ENV=test BOT_TOKEN=dummy deno test -A --parallel -- --test" }, "test": { "include": [ diff --git a/deno.lock b/deno.lock index 349acf6..b5e4d5d 100644 --- a/deno.lock +++ b/deno.lock @@ -69,15 +69,6 @@ "https://deno.land/std@0.211.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", "https://deno.land/std@0.211.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", "https://deno.land/std@0.211.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", - "https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834", - "https://deno.land/std@0.224.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917", - "https://deno.land/std@0.224.0/cli/_data.json": "cf2cc9d039a192b3adbfe64627167c7e6212704c888c25c769fc8f1709e1e1b8", - "https://deno.land/std@0.224.0/cli/_run_length.ts": "7da8642a0f4f41ac27c0adb1364e18886be856c1d08c5cce6c6b5c00543c8722", - "https://deno.land/std@0.224.0/cli/mod.ts": "9548eaf4fefac2ab9b02e0f8e4de8a08cac5d24b721a6019452efec172b59de3", - "https://deno.land/std@0.224.0/cli/parse_args.ts": "5250832fb7c544d9111e8a41ad272c016f5a53f975ef84d5a9fe5fcb70566ece", - "https://deno.land/std@0.224.0/cli/prompt_secret.ts": "3b2f95214422226482fba4a00cb25441475b6f97069a6f70f442c1c9a16c744c", - "https://deno.land/std@0.224.0/cli/spinner.ts": "cf873605771270b4324cc063b5031ab250d8efee8799e45e1a3bfdd333ff721d", - "https://deno.land/std@0.224.0/cli/unicode_width.ts": "656dd4271ecc90684b6bf23a5fb8c1cf833da625ef2906b61273ad617038072f", "https://deno.land/x/grammy@v1.27.0/bot.ts": "291fec55778b8ff25112be28ee24ed3d68ea58f8a07e6fe9584953c242564ef3", "https://deno.land/x/grammy@v1.27.0/composer.ts": "e5442ce0dd504661b36ad875a6a1b9ab32c004239ebd1ab3d5aa2976e1902f83", "https://deno.land/x/grammy@v1.27.0/context.ts": "3ae13abed37a3eb1ae76598c9e187c6c37863df2b21c9fb1e27b785b1820c172", diff --git a/src/api.ts b/src/api.ts index 1c5f69b..bdf6bbc 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,10 +1,12 @@ -import { HN_API } from '@/config.ts' import { Item, itemSchema, storiesSchema, TopStories } from '@/types.ts' +import { config } from '@/config.ts' export const getTopStories = async (): Promise => { - const data: TopStories = await fetch(`${HN_API}/topstories.json`).then(( - res, - ) => res.json()) + const data: TopStories = await fetch(`${config.HN_API}/topstories.json`).then( + ( + res, + ) => res.json() + ) storiesSchema.parse(data) @@ -12,9 +14,10 @@ export const getTopStories = async (): Promise => { } export const getItem = async (id: number): Promise => { - const data: Item | null = await fetch(`${HN_API}/item/${id}.json`).then( - (res) => res.json(), - ) + const data: Item | null = await fetch(`${config.HN_API}/item/${id}.json`) + .then( + (res) => res.json(), + ) itemSchema.parse(data) diff --git a/src/bot.ts b/src/bot.ts index f1bff46..62fb17d 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,10 +1,10 @@ -import { BOT_TOKEN } from '@/config.ts' import { Bot, conversations, session } from '@/deps.ts' import setup from '@/preference/setup.ts' import { PreferencesContext, SessionData } from '@/types.ts' import { getSessionAdapter } from '@/utils.ts' +import { config } from '@/config.ts' -const bot = new Bot(BOT_TOKEN!) +const bot = new Bot(config.BOT_TOKEN) bot.command( 'help', @@ -15,7 +15,7 @@ bot.command( bot.use( session({ initial: (): SessionData => ({ preferences: [] }), - storage: getSessionAdapter(BOT_TOKEN), + storage: getSessionAdapter(config.BOT_TOKEN), }), conversations(), ) diff --git a/src/config.ts b/src/config.ts index 96d99c2..c622c96 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,21 +1,17 @@ +import { R, z } from '@/deps.ts' import { load } from '@std/dotenv' -import { parseArgs } from '@std/cli' -import { R } from '@/deps.ts' +const envSchema = z.object({ + HN_API: z.string().default('https://hacker-news.firebaseio.com/v0/'), + BOT_TOKEN: z.string().default('dummy'), + APP_ENV: z.enum(['development', 'test', 'production']).default('development'), +}) -type EnvKeys = 'BOT_TOKEN' | 'APP_ENV' +try { + const env = await load({ export: true }) + if (R.isEmpty(env)) throw new Error('no env file found') +} catch { + console.warn('no env file found, using environment variables') +} -const isTest = parseArgs(Deno.args).test -const envPath = R.ifElse( - R.equals(true), - R.always('.env.test'), - R.always('.env'), -)(isTest) - -const env = await load({ - envPath, -}) as Record - -export const HN_API = 'https://hacker-news.firebaseio.com/v0/' -export const BOT_TOKEN = env.BOT_TOKEN || Deno.env.get('BOT_TOKEN') -export const APP_ENV = env.APP_ENV || Deno.env.get('APP_ENV') +export const config = envSchema.parse(Deno.env.toObject()) diff --git a/src/utils.ts b/src/utils.ts index 76ff786..2536d89 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,10 +1,10 @@ -import { APP_ENV } from '@/config.ts' import { freeStorage, MemorySessionStorage, R } from '@/deps.ts' import { SessionData } from '@/types.ts' +import { config } from '@/config.ts' export const getSessionAdapter = (token?: string) => R.ifElse( R.equals('test'), R.always(new MemorySessionStorage()), R.always(freeStorage(token!)), - )(APP_ENV) + )(config.APP_ENV) From 5569c7be7eb1f514d1d0acbefe8988a948bd30a5 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 7 Jul 2024 22:14:23 +0200 Subject: [PATCH 089/152] style: fix fmt of api.ts --- src/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api.ts b/src/api.ts index bdf6bbc..f565ba3 100644 --- a/src/api.ts +++ b/src/api.ts @@ -5,7 +5,7 @@ export const getTopStories = async (): Promise => { const data: TopStories = await fetch(`${config.HN_API}/topstories.json`).then( ( res, - ) => res.json() + ) => res.json(), ) storiesSchema.parse(data) From d771962c7b0dce5774561d96ec03a0701f5d589f Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 9 Jul 2024 00:03:33 +0200 Subject: [PATCH 090/152] feat: add changelog --- CHANGELOG.md | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 1 + cliff.toml | 89 ++++++++++++++++++++++++++++++++++++++ deno.jsonc | 3 +- 4 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 cliff.toml diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..38f6a06 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,118 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [unreleased] + +### ๐Ÿš€ Features + +- Get 500 top stories +- Remove axios to use builtin fetch API +- Get storage adapter for env +- Determine session adapter in bot setup +- Ask for preference +- Store preferences in session with conversations +- Reset preferences and fix convo loop +- [**breaking**] Replace jest with vitest cause of esm troubles +- Add list preferences cmd +- [**breaking**] Complete deno migration by fixing last tests +- Validate Item schema +- Deploy workflow + +### ๐Ÿ› Bug Fixes + +- Remove ts-node and use tsx with watch mode +- Add ESM support for jest +- Disable noEmit during build +- Remove overkilling functions and declare adapters inside always condition +- Use test flag on test task to retrieve right env file +- Adapt for deno deploy +- Import new types in bot.ts +- Change root to cwd +- Remove env leaking log +- Add missing test variables for coverage + +### ๐Ÿšœ Refactor + +- Add generic slashCommand generator +- [**breaking**] Move types in a single declaration file +- Improve env loading with zod + +### ๐Ÿ“š Documentation + +- Add usage instructions +- Update README with test instructions +- Add testing guideline +- Add setMyCommands usage tip +- Update readme with right usage of jest object +- Add todo for clear preferences and update readme with BDD tips +- Add codefactor badge +- Move codefactor badge on top +- Add deployment section + +### ๐ŸŽจ Styling + +- Add newline on heading +- Add develop codefactor +- Fix fmt of api.ts + +### ๐Ÿงช Testing + +- Add watch flag +- Mock getItem api +- Should return null for not found item +- Add faker and mock array of top stories +- Add type checkers +- It responds to setup command +- [**breaking**] Fix specs adapting to vitest +- Stub global fetch + +### โš™๏ธ Miscellaneous Tasks + +- Init project +- Extend ProcessEnv of node with BOT_TOKEN +- Add build script for npm to run tsc +- Add support of dotenvx +- Move env declaration at root +- Config jest for ts and move to src folder +- Config jest to match only __tests__ folder +- Improve item typing for req +- Remove error test +- Add tsconfig.build for excluding specs on compilation +- Replace telegraf with grammY +- Init grammy bot +- [**breaking**] Use bot.ts as entrypoint +- Init setup composer +- Remove some types and cleanup config +- Init conversation plugin +- Upgrade grammy +- Add todo on mocking api calls +- Upgrade grammy +- Upgrade typescript npm +- [**breaking**] Remove export of bot and use bot.ts as entrypoint +- Upgrade dotenvx to major 1 +- Add dependabot +- [**breaking**] Add deno and remove type definitions and tsconfig +- [**breaking**] Add ramda external dep +- [**breaking**] Add faker deno module +- [**breaking**] Add grammy from deno +- Add recommended deno ext +- Add coverage task +- Add zod package +- Do not ignore .env test +- Add test job dependency +- Add codecov +- Add update workflow +- Manual update workflow +- Upgrade packages +- Reignore .env.test +- Upgrade grammy to 1.27 with latest types +- Cache dependencies during test +- Ignore any lint in specs +- Add format and lint job + +### Deno + +- Update imports + + diff --git a/README.md b/README.md index 5fadf24..a9e7937 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ HackerNews Telegram Bot ### Development To develop in local just run `deno task dev` that will start in watch mode. +To update the changelog just run `git-cliff -o CHANGELOG.md`. ### Testing diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..b0f88b2 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,89 @@ +# git-cliff ~ default configuration file +# https://git-cliff.org/docs/configuration +# +# Lines starting with "#" are comments. +# Configuration options are organized into tables and keys. +# See documentation for more information on available options. + +[changelog] +# changelog header +header = """ +# Changelog\n +All notable changes to this project will be documented in this file.\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{% if version %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else %}\ + ## [unreleased] +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits %} + - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ + {% if commit.breaking %}[**breaking**] {% endif %}\ + {{ commit.message | upper_first }}\ + {% endfor %} +{% endfor %}\n +""" +# template for the changelog footer +footer = """ + +""" +# remove the leading and trailing s +trim = true +# postprocessors +postprocessors = [ + # { pattern = '', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL +] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = true +# process each line of a commit as an individual commit +split_commits = false +# regex for preprocessing the commit messages +commit_preprocessors = [ + # Replace issue numbers + #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](/issues/${2}))"}, + # Check spelling of the commit with https://github.com/crate-ci/typos + # If the spelling is incorrect, it will be automatically fixed. + #{ pattern = '.*', replace_command = 'typos --write-changes -' }, +] +# regex for parsing and grouping commits +commit_parsers = [ + { message = "^feat", group = "๐Ÿš€ Features" }, + { message = "^fix", group = "๐Ÿ› Bug Fixes" }, + { message = "^doc", group = "๐Ÿ“š Documentation" }, + { message = "^perf", group = "โšก Performance" }, + { message = "^refactor", group = "๐Ÿšœ Refactor" }, + { message = "^style", group = "๐ŸŽจ Styling" }, + { message = "^test", group = "๐Ÿงช Testing" }, + { message = "^chore\\(release\\): prepare for", skip = true }, + { message = "^chore\\(deps.*\\)", skip = true }, + { message = "^chore\\(pr\\)", skip = true }, + { message = "^chore\\(pull\\)", skip = true }, + { message = "^chore|^ci", group = "โš™๏ธ Miscellaneous Tasks" }, + { body = ".*security", group = "๐Ÿ›ก๏ธ Security" }, + { message = "^revert", group = "โ—€๏ธ Revert" }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = false +# regex for matching git tags +# tag_pattern = "v[0-9].*" +# regex for skipping tags +# skip_tags = "" +# regex for ignoring tags +# ignore_tags = "" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest" +# limit the number of commits included in the changelog. +# limit_commits = 42 diff --git a/deno.jsonc b/deno.jsonc index 6951379..423830b 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -28,7 +28,6 @@ "compilerOptions": { "lib": ["deno.window", "DOM", "DOM.Iterable", "ESNext"], "strict": true, - "allowJs": true, - "checkJs": true + "allowJs": true } } From 93e8c62cdc4a6c04c13382d639f3a62296ddac80 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 9 Jul 2024 23:08:19 +0200 Subject: [PATCH 091/152] chore: allowBreaking on updater --- .github/workflows/update.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 4347477..9d45418 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -18,5 +18,5 @@ jobs: - name: Run updater uses: boywithkeyboard/updater@v0 - # with: - # allowBreaking: true \ No newline at end of file + with: + allowBreaking: true \ No newline at end of file From 9e736e07c48f22b393cd6e441a6924398fb3855e Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 9 Jul 2024 23:08:39 +0200 Subject: [PATCH 092/152] docs: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38f6a06..ef90d14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. - [**breaking**] Complete deno migration by fixing last tests - Validate Item schema - Deploy workflow +- Add changelog ### ๐Ÿ› Bug Fixes @@ -110,6 +111,7 @@ All notable changes to this project will be documented in this file. - Cache dependencies during test - Ignore any lint in specs - Add format and lint job +- AllowBreaking on updater ### Deno From d71202040810bfd2c4ed9dfb256c38f2fe837fa5 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 9 Jul 2024 23:13:07 +0200 Subject: [PATCH 093/152] docs: prioritize testing over styling in changelog --- CHANGELOG.md | 13 +++++++------ cliff.toml | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef90d14..56986eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,12 +50,7 @@ All notable changes to this project will be documented in this file. - Add codefactor badge - Move codefactor badge on top - Add deployment section - -### ๐ŸŽจ Styling - -- Add newline on heading -- Add develop codefactor -- Fix fmt of api.ts +- Update changelog ### ๐Ÿงช Testing @@ -68,6 +63,12 @@ All notable changes to this project will be documented in this file. - [**breaking**] Fix specs adapting to vitest - Stub global fetch +### ๐ŸŽจ Styling + +- Add newline on heading +- Add develop codefactor +- Fix fmt of api.ts + ### โš™๏ธ Miscellaneous Tasks - Init project diff --git a/cliff.toml b/cliff.toml index b0f88b2..6b143fb 100644 --- a/cliff.toml +++ b/cliff.toml @@ -61,8 +61,8 @@ commit_parsers = [ { message = "^doc", group = "๐Ÿ“š Documentation" }, { message = "^perf", group = "โšก Performance" }, { message = "^refactor", group = "๐Ÿšœ Refactor" }, - { message = "^style", group = "๐ŸŽจ Styling" }, - { message = "^test", group = "๐Ÿงช Testing" }, + { message = "^style", group = "๐ŸŽจ Styling" }, + { message = "^test", group = "๐Ÿงช Testing" }, { message = "^chore\\(release\\): prepare for", skip = true }, { message = "^chore\\(deps.*\\)", skip = true }, { message = "^chore\\(pr\\)", skip = true }, From e6a4090302e7551b2e3c7379a340bbe1ab8f7abe Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 00:41:40 +0200 Subject: [PATCH 094/152] chore: point ramda package to deno instead of nest --- src/deps.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deps.ts b/src/deps.ts index 5835ed1..e7a32cd 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -1,4 +1,4 @@ -export * as R from 'https://x.nest.land/ramda@0.27.2/mod.ts' +export * as R from 'https://deno.land/x/ramda@v0.27.2/mod.ts' export * from 'https://deno.land/x/grammy@v1.27.0/mod.ts' export * from 'https://deno.land/x/grammy_types@v3.11.0/mod.ts' export * from 'https://deno.land/x/grammy_conversations@v1.2.0/mod.ts' From 82ea3567aa5914881d66bbc1d635731176ac0dc0 Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 00:43:07 +0200 Subject: [PATCH 095/152] chore(gemini-response): add zod types for request and response schema of `generateContent` api --- deno.lock | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/config.ts | 4 + src/types.ts | 103 +++++++++++++++ 3 files changed, 446 insertions(+) diff --git a/deno.lock b/deno.lock index b5e4d5d..9faacdc 100644 --- a/deno.lock +++ b/deno.lock @@ -110,6 +110,345 @@ "https://deno.land/x/oson@1.0.1/constructors.ts": "2b77dcdc8d8db5ece2860d1657f4dcef37dd761684f1d4b9535c7e56a0fbfcf6", "https://deno.land/x/oson@1.0.1/mod.ts": "54e494dc517ce0de6c727c25d9731ccc748e8646c883e922dc5d656f523a4e5b", "https://deno.land/x/oson@1.0.1/oson.ts": "ec3908ae5c9ceff7bfd869d95a2183b929b9d96fbff44b57d28d3b742d06a4a1", + "https://deno.land/x/ramda@v0.27.2/mod.ts": "14262bdcea26c261f2f6490e733b792af9d3ae3582a4d09ca5bab0479b48ca40", + "https://deno.land/x/ramda@v0.27.2/source/F.js": "cf0f5fdb08048909e49bb6f222f6e2f92db8d4dc0dd24900864eaf69c3746e3d", + "https://deno.land/x/ramda@v0.27.2/source/T.js": "f96ac2cdaeedf374fb932a4ec368f0566143f0c2d028919976c41c6ee53c0515", + "https://deno.land/x/ramda@v0.27.2/source/__.js": "0d846e36ac0a9ff96c3e17823a98d1379295bf0a12e02c6b54e252d89228acbb", + "https://deno.land/x/ramda@v0.27.2/source/add.js": "228beb026421789be635c2ef48dbbccfcf030796429b14e08da3092800a54abb", + "https://deno.land/x/ramda@v0.27.2/source/addIndex.js": "eb25b2d1999a36025c7eac9bafde0d4f569b8b9de5f03a2578fc5a82f2f37497", + "https://deno.land/x/ramda@v0.27.2/source/adjust.js": "a018b4127cfa9f2915e2a5fcc767d58c590be7716bcdeba39136f63404de9466", + "https://deno.land/x/ramda@v0.27.2/source/all.js": "ad8982ac59e339bba8eb440eb200b18bec2531906cadab6989a4f9970c56ec4e", + "https://deno.land/x/ramda@v0.27.2/source/allPass.js": "b9b9b39392fae767310690bf8e097150fd9a99f5dc0d64565ae61cc58b6e34ec", + "https://deno.land/x/ramda@v0.27.2/source/always.js": "b38ca58da76a43663c33dfd52a4b09f6f582b8504fd767e204e85291fe9b03ae", + "https://deno.land/x/ramda@v0.27.2/source/and.js": "ba92b5127ff67c6a5bd523ea099961ae8c4d1028aa022a7a2d494bc938d85e54", + "https://deno.land/x/ramda@v0.27.2/source/andThen.js": "4257a859b9273bae3fb3e3a97c7bcf5f862c519eb52de0da7e02adf52f4f262b", + "https://deno.land/x/ramda@v0.27.2/source/any.js": "45983175fa1de66e8082ce7cce43b53b21d3d2223e4a383a11690d4a1c0d84ec", + "https://deno.land/x/ramda@v0.27.2/source/anyPass.js": "6fd0a90a458921d07bc51acac9dba839e5e29f2b9b507524ed95ceb304557a5f", + "https://deno.land/x/ramda@v0.27.2/source/ap.js": "29e48d267711c5ee9dd43a8f3ce766e2198ced3ec359d8d7405a207208ac876b", + "https://deno.land/x/ramda@v0.27.2/source/aperture.js": "b6a5dcde3c5e6f849a3c9680e5faf554bf5dc8a3d6cfb7aadc73cc147d33fe7e", + "https://deno.land/x/ramda@v0.27.2/source/append.js": "bf323062d997e4d995053900134369c1341fbbcd46ef64c2b741f9d1c4ccd55c", + "https://deno.land/x/ramda@v0.27.2/source/apply.js": "b0b90bbd6b73d2cb57f9cf31bb7e45cf398e3b700ef03aefe038b4ec9d71ff10", + "https://deno.land/x/ramda@v0.27.2/source/applySpec.js": "a8e8361ca93c7a5ea938db059d56a2361e80a007229af1d052476d8f5c3731b6", + "https://deno.land/x/ramda@v0.27.2/source/applyTo.js": "8c3029032632e385a877e4587ba8fcb9bc046523dbe4eee6cf41c131ec7e2c18", + "https://deno.land/x/ramda@v0.27.2/source/ascend.js": "84524adf0f4eb7dc4ca815aacd60b99527cb17d1311411e482d8e8e15ea4553d", + "https://deno.land/x/ramda@v0.27.2/source/assoc.js": "f00e345f7c5dcc1bbebc4ae9ef6574b9b7ed2c98576bea5ae4f521dfc96de22e", + "https://deno.land/x/ramda@v0.27.2/source/assocPath.js": "e73615bb6af97ac6264b1497826a72be278f5eb944bb9a09bfd49b5b51a64667", + "https://deno.land/x/ramda@v0.27.2/source/binary.js": "3bcf8608caed02f0005c7efa81ae9303b0a830f035dbb1f749467edd1363c0bb", + "https://deno.land/x/ramda@v0.27.2/source/bind.js": "e54151679a653e4a429f06a4083b951a2956352d43342be2d9362caf15c5284c", + "https://deno.land/x/ramda@v0.27.2/source/both.js": "6ba9a47bc7a1d641d4bbb9a31c1d69ed9db31926c45ec5eafd462a4281a19854", + "https://deno.land/x/ramda@v0.27.2/source/call.js": "30e8a7959e3a627a93b80b353f909f0ccfe633286abe42032efab9110203f252", + "https://deno.land/x/ramda@v0.27.2/source/chain.js": "5aaac847573c89107b229de5070b10137e5085aff44197b362c9f330d97d4cb6", + "https://deno.land/x/ramda@v0.27.2/source/clamp.js": "c5e4794193226010c4311fd4232b54a666ff215f7a2bbb3c0e953e129343f9b9", + "https://deno.land/x/ramda@v0.27.2/source/clone.js": "f87d3eff8eda087ab34ee9d210574f6458558a15503f20863135c652903932d9", + "https://deno.land/x/ramda@v0.27.2/source/collectBy.js": "63a5b7d523d656ed21c8d212ec5b20ae0bede27759620b30a3edad5007e77d1f", + "https://deno.land/x/ramda@v0.27.2/source/comparator.js": "46dcd6df640aa62b62b637a44923b124e08373e016c079d66c8554f5eccac25f", + "https://deno.land/x/ramda@v0.27.2/source/complement.js": "1077ec2fd77148b9b816c9e2d53447dc5f58551dfa4d1fbdc65b4358c348fe7e", + "https://deno.land/x/ramda@v0.27.2/source/compose.js": "88c1ba6338854a69a88c6716d7e1846b41b4c11758e4303e3aff8da2fdb4d886", + "https://deno.land/x/ramda@v0.27.2/source/composeWith.js": "7f1769340bb713ddaddf140b9377c737516b53d3fa8737b4bacdb3d9076e27e7", + "https://deno.land/x/ramda@v0.27.2/source/concat.js": "f3d8d7238dde344d9916f62eb23e652d51b1ee9165112441fcc8772a52882cf1", + "https://deno.land/x/ramda@v0.27.2/source/cond.js": "fc252d1fb0940df257a9cf688f7b18a6b985c2117e0959c433c54116dd1b8f97", + "https://deno.land/x/ramda@v0.27.2/source/construct.js": "d4ab8ddb45b581954bc943cf8d6c75add7b3fedcfeabc20316f17d1b8955e6f6", + "https://deno.land/x/ramda@v0.27.2/source/constructN.js": "985a538f32bec2e893d47d0072277d4e19f0111fdf9b9119e79835804dab1af7", + "https://deno.land/x/ramda@v0.27.2/source/converge.js": "e285777910f7d111772b74dd6c1f4d6c49ff9a603a2ff9a950e830cfda871a9d", + "https://deno.land/x/ramda@v0.27.2/source/countBy.js": "e2fb4127929895d661ca99db0b424bd4e045d366baef8f122a8c8e5e985293a5", + "https://deno.land/x/ramda@v0.27.2/source/curry.js": "69fef7830feee995f75e3aa45ae0fe99f611772462e33dfa3d6044a506d999e3", + "https://deno.land/x/ramda@v0.27.2/source/curryN.js": "523d173826331f03aff210ea1932a445e0d77acdf96f0b337de96fa0cca78903", + "https://deno.land/x/ramda@v0.27.2/source/dec.js": "7c27ae1b7e572910d1bcb63eeac36ebf59d6cce903fa3ba1b170dc7329133843", + "https://deno.land/x/ramda@v0.27.2/source/defaultTo.js": "237e5a9a1f0b1fb190f508a8750a0729814fa1754fbd032f18144d875990ead8", + "https://deno.land/x/ramda@v0.27.2/source/descend.js": "4ca2704b6e4ea7b92015e6620c210c19c7374f29742f7bd5136c8e1aa6c90503", + "https://deno.land/x/ramda@v0.27.2/source/difference.js": "9d388448dfda3232f6006b9f5f56d7cf3982b3bcf47165ff8bf66677e53dff6f", + "https://deno.land/x/ramda@v0.27.2/source/differenceWith.js": "d7c98a3cc916fb0ff050c0c1441f2a1b29cff3d0d301e37878a2adbe8db28de3", + "https://deno.land/x/ramda@v0.27.2/source/dissoc.js": "5cf9c3c42e4f8b568234eee84567b972cc187a0ea3e15c0e674745fdd7187cee", + "https://deno.land/x/ramda@v0.27.2/source/dissocPath.js": "a59d61ccce8df74a37e698d525eee27c26505420710087b58fe4e93b26dbbef8", + "https://deno.land/x/ramda@v0.27.2/source/divide.js": "6e0bfcfd2b18877a0fe1e4ae98ae53349ac1f48c7b5fc35c3ca57364504943ef", + "https://deno.land/x/ramda@v0.27.2/source/drop.js": "4ff5febd91047ca74b4778881097c1051dbe4fabbef0d7117f2e41378dff55e1", + "https://deno.land/x/ramda@v0.27.2/source/dropLast.js": "68d7d9ae7a87f5c344b496cb0b8ca79768d796b11bb079daa951152b63706bdf", + "https://deno.land/x/ramda@v0.27.2/source/dropLastWhile.js": "078af5d7231266e448dfd3002c26aaa146eae18f2ea57123829958e4dcbcb782", + "https://deno.land/x/ramda@v0.27.2/source/dropRepeats.js": "c84877435227b901e8a7c7c42245bbbde0609b3b3b9af97a4377b695f1784136", + "https://deno.land/x/ramda@v0.27.2/source/dropRepeatsWith.js": "9c01e32e3ed2869e68c046dc564e42b59888463234ed637bde31608bc64eba17", + "https://deno.land/x/ramda@v0.27.2/source/dropWhile.js": "28e044253bd3655a759be443dcc233cbda76bd2d80defe51600e10312220b5a0", + "https://deno.land/x/ramda@v0.27.2/source/either.js": "07b4087707e495f59e30ed9e1d579d146a1cfa8fdc758bfd353af9176c6bab9f", + "https://deno.land/x/ramda@v0.27.2/source/empty.js": "df91fc65b55ad83236fbc18e76c599db75c36395ea812a492cb56d95e337fb8f", + "https://deno.land/x/ramda@v0.27.2/source/endsWith.js": "d9bea6890b2474a11d23e14e0d500bc87bafbfbd5975ee4d9eedf99599e9bc3f", + "https://deno.land/x/ramda@v0.27.2/source/eqBy.js": "bb0692cce9d0020fce9a4b3a7c4d8082dd11a4fd03c2610fc38d72987d2e3408", + "https://deno.land/x/ramda@v0.27.2/source/eqProps.js": "b8472fd7aac2e952a78e285bf5908116481e8804839e098e963f6d8db40a6f28", + "https://deno.land/x/ramda@v0.27.2/source/equals.js": "7f54bec675761df5cb71b7cc32a169d2e944c91575d6a9c2304dad7a1ced3373", + "https://deno.land/x/ramda@v0.27.2/source/evolve.js": "14d0d1f87c4891535f88da7209a926a59cfbd486df737a1407157f8847b83630", + "https://deno.land/x/ramda@v0.27.2/source/filter.js": "5c8b8eaba016bf63185df32ce439b4795e1182cfda310fce114a53fb15d2d6de", + "https://deno.land/x/ramda@v0.27.2/source/find.js": "09598aa7e256c37bfd80c1cefd5664e96b22fa0d34cafe637f4c27441002fc1a", + "https://deno.land/x/ramda@v0.27.2/source/findIndex.js": "0cb98806f039b3cfae9d7c491fad7ba48a03e1db9d9e482fa516bb4ed76d3dca", + "https://deno.land/x/ramda@v0.27.2/source/findLast.js": "0b414111d9841354a5b6342a124f2b1026101311df0afd5c3ba4ac59db9cb72c", + "https://deno.land/x/ramda@v0.27.2/source/findLastIndex.js": "d7f2827c928a0481ec3b0cd814ec446a75ed47fb1f3f5b22611efc6d462d7060", + "https://deno.land/x/ramda@v0.27.2/source/flatten.js": "243ddadafe7961aec81baa8572905db0dd493f777dd5056d8cee37563a7cc526", + "https://deno.land/x/ramda@v0.27.2/source/flip.js": "78559e6c275e263c2daae4d16d63639f1168b442b88d738038b6f3147312a695", + "https://deno.land/x/ramda@v0.27.2/source/forEach.js": "39813bce3e81c081a2ff92855f8a55bcda476801f2f44de0e79e210068a027f1", + "https://deno.land/x/ramda@v0.27.2/source/forEachObjIndexed.js": "28fc5331e303c3e68c7c01d77b0d29eae1e0271d8eec68a21b3cee582cab4568", + "https://deno.land/x/ramda@v0.27.2/source/fromPairs.js": "d729f77a9ea6b241368fd95e2157d6bed5f306233f4bd0f3d27e820755268153", + "https://deno.land/x/ramda@v0.27.2/source/groupBy.js": "cdf6123f30919aba99f3cfa86195f724f977804f44681dea298566f1506862f2", + "https://deno.land/x/ramda@v0.27.2/source/groupWith.js": "dc2c4861a44408e25554850dc706175ccb7762a9059b5bec3aeb621ba6590fe7", + "https://deno.land/x/ramda@v0.27.2/source/gt.js": "72ed5925a31ac49a1a89487cc8d2803691384c161ecb93cc07042c5b3404241a", + "https://deno.land/x/ramda@v0.27.2/source/gte.js": "78802ab4ebb7b98c3d947c43c17679d98fca1b363f87fc16513690d3fb5b29a1", + "https://deno.land/x/ramda@v0.27.2/source/has.js": "4476f429c91c6bbb1b1a07c187fa6e0042ac580b736a34aba2843919d1959a59", + "https://deno.land/x/ramda@v0.27.2/source/hasIn.js": "4f3f633d11a76d05448349d60cf91be3f40cd84af67902bfbd3204b4bcb2d732", + "https://deno.land/x/ramda@v0.27.2/source/hasPath.js": "03e7c3cddf8dd04e8eec9765978ee3813c66440e2e0f7153393099250aa40b10", + "https://deno.land/x/ramda@v0.27.2/source/head.js": "4df6d937987d8bc87df68f6e11b1edc4a78f9f0890a3ef8e361f3ae1ffc2c93b", + "https://deno.land/x/ramda@v0.27.2/source/identical.js": "4c3c3f75a7248b6c4450692e31447f933c0484520cbae6f84e3c52c4febeda1d", + "https://deno.land/x/ramda@v0.27.2/source/identity.js": "0897cac8aa156fb05aae9e1fcbec6422265537120c85a59e2d9ed4789400142b", + "https://deno.land/x/ramda@v0.27.2/source/ifElse.js": "586bf559dfe65b7d0baf17bc065f66ed05eab93401d0d534b20bcc2647f79ac3", + "https://deno.land/x/ramda@v0.27.2/source/inc.js": "2ecf4d73a79bde8e5446d1bc67ae47bd918ce915c145cd38307f8e833b417905", + "https://deno.land/x/ramda@v0.27.2/source/includes.js": "d7d55f48f02e6137277eb3f7fe8a37c03a7b20f73461290e5fb954b654e714c3", + "https://deno.land/x/ramda@v0.27.2/source/index.js": "e3f53a897e1f468bbe2c1df7b2c2267fafa27e7daa5058cb62914acf33877d8f", + "https://deno.land/x/ramda@v0.27.2/source/indexBy.js": "8f2623133d78c91bbf5843d1d9e1a633751c224b259b2b6c7be05c864dcca417", + "https://deno.land/x/ramda@v0.27.2/source/indexOf.js": "51c6824676b9ae32384e9fb0b3f2c0c1a639b76c95c366e19d0c66246c531a09", + "https://deno.land/x/ramda@v0.27.2/source/init.js": "64ffbf8f557956006ddd6aa5fb2261029b574808909d576887a804358f49a33e", + "https://deno.land/x/ramda@v0.27.2/source/innerJoin.js": "f6b0aef6118f16e35f35f755118178a259d7ada6d56ffb1a73b6b8e70840470a", + "https://deno.land/x/ramda@v0.27.2/source/insert.js": "ec7eb96300222eb744548031c9f44d0b90eea5142b413ae0134d751e4d5e12b6", + "https://deno.land/x/ramda@v0.27.2/source/insertAll.js": "5abae3eebae86724ea9efdb34686b499ea51ad4e7bcc87266a3798d39678ffd2", + "https://deno.land/x/ramda@v0.27.2/source/internal/_Set.js": "0ceb62124dcad553c7e95a8395d46ef9709efbb5ae819114b1cfc837882d6bef", + "https://deno.land/x/ramda@v0.27.2/source/internal/_aperture.js": "3baea490e23ba04bc1a4c70aae851fff5ee1fd45b27079e7d93bba5a98cf4ad0", + "https://deno.land/x/ramda@v0.27.2/source/internal/_arity.js": "4fa349e2c3d0da5c102353f86025b093844ea13a40b0d70ebb21302b6c9a5bb2", + "https://deno.land/x/ramda@v0.27.2/source/internal/_arrayFromIterator.js": "f46149927bafa8f0fb7f0fdd0eaa19da4b4d7ce147bcecf0fb7406c1a0ca0e91", + "https://deno.land/x/ramda@v0.27.2/source/internal/_assertPromise.js": "11fd2486760cbd60ebbed0ef0b6e2aa2ee4a6e3bd3f257e5024140a21245dea9", + "https://deno.land/x/ramda@v0.27.2/source/internal/_assoc.js": "8200e22a3f4a931e6b416260e516f2c016b1e7f3821e97f39009ff6acabf32f7", + "https://deno.land/x/ramda@v0.27.2/source/internal/_checkForMethod.js": "37ab74c502c1324c1e5266e865d36355301993c381ccd4849898dc8655305d71", + "https://deno.land/x/ramda@v0.27.2/source/internal/_clone.js": "197f999a9f94b426b1e573f4497cb0188444a74aa2aba571a8ce302aa5377b16", + "https://deno.land/x/ramda@v0.27.2/source/internal/_cloneRegExp.js": "9c751f3ea3732e9e2c321726997134419721b77e8ad78b5199d4fb587bce7a89", + "https://deno.land/x/ramda@v0.27.2/source/internal/_complement.js": "4a680d37419308b74099034c1c399264a04632dfc7378f4c4e8b88da18b863e0", + "https://deno.land/x/ramda@v0.27.2/source/internal/_concat.js": "16219d978cd4fc97305a6d56106041d66b56a668b395c0faba555571a766d4a2", + "https://deno.land/x/ramda@v0.27.2/source/internal/_createPartialApplicator.js": "8d5bbdb1629ae482691a309728e832d97d9108d5ec03af1e05e610e8db5dc713", + "https://deno.land/x/ramda@v0.27.2/source/internal/_curry1.js": "471de08b6eba9bdbda8bc3adf75a6c85579abf44b1af9b079b631680d1331bf3", + "https://deno.land/x/ramda@v0.27.2/source/internal/_curry2.js": "2c8ae1b2f6f1f29ae72507eb2f8affa2d29d7e6d593c74c2ab8b11ab7c077ea0", + "https://deno.land/x/ramda@v0.27.2/source/internal/_curry3.js": "4df2775934c2a02472b806c18f4fefcd2f0a330568c7818e3937ed9c05fde9cb", + "https://deno.land/x/ramda@v0.27.2/source/internal/_curryN.js": "e5772e002d36f419f9b29ee72d58f6605d99f05a59fb9f234df6f11bdd0c91ed", + "https://deno.land/x/ramda@v0.27.2/source/internal/_dispatchable.js": "d0caa3b83bcaf612ce5ccc1ef1e3bee8bd0b7c70cd688522d7a1922078d0c8f9", + "https://deno.land/x/ramda@v0.27.2/source/internal/_dissoc.js": "a4f7d454f67c815792a40c49f53d3778a954efdaee98e98eadcb88506508e014", + "https://deno.land/x/ramda@v0.27.2/source/internal/_dropLast.js": "783d1c3682e470b584ee19e69b0a3df190c89a44c50b784051adc08edc9e34b5", + "https://deno.land/x/ramda@v0.27.2/source/internal/_dropLastWhile.js": "45fa88039ae87e0037fce1def28249714b41dd59eeeb92bcbb46e8769e517ee0", + "https://deno.land/x/ramda@v0.27.2/source/internal/_equals.js": "3e10ce96699dcb1d463be64798cf81e0bbb293e1a91e8b3c1fbfb64cda572604", + "https://deno.land/x/ramda@v0.27.2/source/internal/_filter.js": "50a8ecec356ea12974434d74483775a78dd3761e5a24fab814bf761d66f8d129", + "https://deno.land/x/ramda@v0.27.2/source/internal/_flatCat.js": "e87d575a90f01fae5c1fe77e437580081ae00ce056d72759ac6169072449fec5", + "https://deno.land/x/ramda@v0.27.2/source/internal/_forceReduced.js": "4fe3897c0e7327c37352d2a7d63eaa976954b97edff293116de95aeb615725ca", + "https://deno.land/x/ramda@v0.27.2/source/internal/_functionName.js": "15f79e21d2e991ace32b12ae7a0f6ae408a3fec5adb1896d97894eb77c640537", + "https://deno.land/x/ramda@v0.27.2/source/internal/_has.js": "ae63f8e7fffa2034444b2fe2cc71b1ef6d284433470a3b2e4bb73c96f543efcb", + "https://deno.land/x/ramda@v0.27.2/source/internal/_identity.js": "210496061ce9fd6eac4abad8a29368e14dfe6e23562439d25be51aa434e8a1e3", + "https://deno.land/x/ramda@v0.27.2/source/internal/_includes.js": "e39b97bf8ebc835f871abc949696846f94cfd19c33e405a47efd106f89675fa8", + "https://deno.land/x/ramda@v0.27.2/source/internal/_includesWith.js": "0af347d206c2cef356e69de9363d182346662cda8f218fe8214d2b66dd8b47c3", + "https://deno.land/x/ramda@v0.27.2/source/internal/_indexOf.js": "a7d406d57b952f0d7232fd5a52c345ba744fb500caf799cf2b325001d243b2e0", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isArguments.js": "9d10b36c8ec8ebef19308a846cbb4742a72808da7739480b9487ca6374274ac5", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isArray.js": "6389121e11857e7db42afc5e6adb55c1d4ac84ea86abece78e0b73a04d6e5e02", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isArrayLike.js": "2fbbd1bd6dd5c31465ce87ba684b57ddf084506656ebc554d659bdb42799e017", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isFunction.js": "b0f712fbd329875c29d77cfa867f46a2f24c10a0fe6775d6729f71b413e718da", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isInteger.js": "1e0accc105f8ce4d91e9406bcf45369f3d314812dc5bad29362c0c36fae59db8", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isNumber.js": "43d300422b4da7fc0547e1f8190ae42c86dcd31693417126d12bbbaff87b7b35", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isObject.js": "e49a67e910ff51efac8d1267f1e813d0c7575a09578b5408c2ccc352752b701c", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isPlaceholder.js": "f0e59347c4077d5b524cf87afac7f12ff5bb6d05a0664046dcc21057f4451660", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isRegExp.js": "1ff80685a92e7c83f0b9d78c041ba5603de99a7f822b323cf3e6e307f7b8ef45", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isString.js": "defc6d87c06b2dea7f75bfab57ff7591804acda65594130cb8d3af7fe618e42d", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isTransformer.js": "f90ec4a0fb72c8d378f639d02457d71b9fe2260c7d155ce7065260d865b29b89", + "https://deno.land/x/ramda@v0.27.2/source/internal/_isTypedArray.js": "9d365262f7a253a3d31d930fc37e15049fb7f95079f206652ce0bea88294d350", + "https://deno.land/x/ramda@v0.27.2/source/internal/_makeFlat.js": "65f901bfa3f454e40fb312cb862048009f7f4fb152a50f2e58f50d08742bb765", + "https://deno.land/x/ramda@v0.27.2/source/internal/_map.js": "9ed8773d457a11630b1b60a05a5aa88f4eb697eae9b5fea4bd4ab0e9a2dcfa44", + "https://deno.land/x/ramda@v0.27.2/source/internal/_modify.js": "9997861456b9ecf9f6f5ed3a592b38fddc96570cc1817a55d803056ae43c304e", + "https://deno.land/x/ramda@v0.27.2/source/internal/_objectAssign.js": "e556262b1d354d3956d5ac9f723d9e5ae12f3d37799d8de0436b35b2cdbbaa59", + "https://deno.land/x/ramda@v0.27.2/source/internal/_objectIs.js": "96818c22093a4a6465c11760ee82538392bae907daf4c29ab9a0d8c814dfb4d0", + "https://deno.land/x/ramda@v0.27.2/source/internal/_of.js": "592f2a08ad5a73a9b621ef06877b7570c6ab5115d985b1dc9d0ffe7a0a8fcb90", + "https://deno.land/x/ramda@v0.27.2/source/internal/_pipe.js": "284c5c472cd46d456869500d97308db3fbc3d74885b145b5a1a4983255c94634", + "https://deno.land/x/ramda@v0.27.2/source/internal/_promap.js": "bb28d85b6ba984349c5154017802bf8754992f9c249e34d6c7ac1a9f2b93acc2", + "https://deno.land/x/ramda@v0.27.2/source/internal/_quote.js": "5fd76eec69c48e5f8ba4f186b98117ed1e24190e5e7a1c68c82e87caa3b31016", + "https://deno.land/x/ramda@v0.27.2/source/internal/_reduce.js": "dede31c8204bee0fbe39f064ba1c85db32997092c9bfe83c3d6d178673ffc93b", + "https://deno.land/x/ramda@v0.27.2/source/internal/_reduced.js": "3aa5d80b51130286d4d22cbf24a5e60d44d239c3ee7de037061e024069729cc1", + "https://deno.land/x/ramda@v0.27.2/source/internal/_stepCat.js": "65ad7151305023178da9675dead9da892e07b235aec45a36c1d81a8700efd50a", + "https://deno.land/x/ramda@v0.27.2/source/internal/_toISOString.js": "0602756738b1a543cf9383a9269b6b4d4198a64586d5b386258494fac454d7da", + "https://deno.land/x/ramda@v0.27.2/source/internal/_toString.js": "c91ae93e404d8a08b18d470399dc45b45e471572bd4b09e32ff634a40d6a6747", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xall.js": "c8743b2b5ce1dc914aaeed1fe6349c4a8cf558dcbcf76f629c46650a5b4864c2", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xany.js": "debe5d3652a056e84311379946abee746410d9ec6323f5571999cc3e58bec3ea", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xaperture.js": "865d4e92d080a8eb8a05e20ba04053d331ffbbab12e7794f1e550f598d5c3bc5", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xchain.js": "e50a7835149178afef59b354dbe256279fd29a31b0c1382c95013b622a64b42d", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xdrop.js": "d8c35c183ceea82b7743cb432ab1053a4350cd20918653ea46ea365a4aa96cd9", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xdropLast.js": "8ef50fcbd4b0ba885512ce7a6743d4f7fbb21a48a6827309b4a1483ce5188757", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xdropLastWhile.js": "e35a9d0c7eb9f994e947df5134117219e8ae73dda04d5fc498ccb39b01337ab6", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xdropRepeatsWith.js": "695f243d4f57cc93457a85b02fa4d4a868b26c539179c460d2ed482814f619da", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xdropWhile.js": "8c2d857a155cbbb85e1b8061bd51acf551ac79e58be5c6815d98c85c27b1a791", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xfBase.js": "4940a7f86cf2e06b3864588b68b8f8dc3f5626285a71725bc23ca45204b25ba8", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xfilter.js": "5bc0c0ecca3e2216bb8adf788e6b2d156b8c6e917f9210c0bf8cfc7a3173cf64", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xfind.js": "6a796c251023a9adf4da914480096604731565bd84a49034c18e2a720e182ccb", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xfindIndex.js": "d4475489b0589d0d0c0d0e2590306edfbb90c8f8d0cbaf9e0271538478b5e579", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xfindLast.js": "24ea8016cf355af01670392d2e919f6f265ef308ffbf80e8e065398e81b21ffb", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xfindLastIndex.js": "d41691d4b16327c51ed49f09998bec03caca38ba30c69377ff7158f3bb4c40ae", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xmap.js": "fee34673a9500dacda51bc2eef5655bccee9f870f003912d3d21c8ebffef6b40", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xpromap.js": "4f64cad6d84877b0367c9863c78e7165332fc3ec9daa4c1457fd76889ce5784c", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xreduceBy.js": "1b7f4e546d14ab4d9dfd31f25d8ddce5afe5046992e2ab777062ae7f271742fa", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xtake.js": "948587bd66412c9ee7c76b8c9a801b915792d8dbdbc40eb9e41e11e90a21e929", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xtakeWhile.js": "54592c64cb42aa0452d19d954cf257034e0aee8a8bd4c5df1b4338d797b85967", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xtap.js": "8869a093501e3802fc0708893e7e1978e5891c11ef4f6574cc3f2db488966bac", + "https://deno.land/x/ramda@v0.27.2/source/internal/_xwrap.js": "bd5c91087b37e811168370937a3d86e67c76791b0e15be624c992c7020c25e0a", + "https://deno.land/x/ramda@v0.27.2/source/intersection.js": "7b04e4d2cd4da37b5a65cdf740a8103ff4d52ef373fd089fe59165c219c426d6", + "https://deno.land/x/ramda@v0.27.2/source/intersperse.js": "2c903a93ddb28e53a7aace262c6f1c13afad92f668bbdbea520e5b766e851495", + "https://deno.land/x/ramda@v0.27.2/source/into.js": "1a6b854b89b9a6ceb2db23141797ac3e7438dac14aba0d9f7bddaba32f3bff24", + "https://deno.land/x/ramda@v0.27.2/source/invert.js": "b61941582db861f056d4858c2c28706f9d8dab8cfb18487c60790d053a2cfd13", + "https://deno.land/x/ramda@v0.27.2/source/invertObj.js": "17d5e30707e7f965a2240e2465b8c96aea00520a809f88cc827f6771ca4a2086", + "https://deno.land/x/ramda@v0.27.2/source/invoker.js": "d0c4617665108ea72f33b0beda247c4b14a5cd82bc60ba3d29e62cf49d0bb87a", + "https://deno.land/x/ramda@v0.27.2/source/is.js": "f924768de966fba2c4a7cc57de2d132b2ec15dfb2374eb3628ddad80b3be6588", + "https://deno.land/x/ramda@v0.27.2/source/isEmpty.js": "aefbcf318cc3d96fab03c8389130586d171cfcad727f3baccc1db701895eed5f", + "https://deno.land/x/ramda@v0.27.2/source/isNil.js": "8b2f125a75429b4176fc868359a00ed17b1d7fb2b16b4e02fa118bd4e7eb3305", + "https://deno.land/x/ramda@v0.27.2/source/join.js": "0e5cecc18dd748bc3df25e334bf4c71a32f150b8617a1d3a61a8398ae990f6ec", + "https://deno.land/x/ramda@v0.27.2/source/juxt.js": "d4a033b7ceaeefdb40f5ee89ca63ab06d9c920fb20ae41305aaa3fe604083857", + "https://deno.land/x/ramda@v0.27.2/source/keys.js": "86743eb43e3971c1faeb06bd89dcc475033c65f37ee4738737658904781c3393", + "https://deno.land/x/ramda@v0.27.2/source/keysIn.js": "3edb33ccadc4e657facd03e3024c40fe450777c7efbaa169c8a12f1134a40964", + "https://deno.land/x/ramda@v0.27.2/source/last.js": "00bfbc444c72db87adf81c5d32526fc159e0289addf23838bf8acd76a1ae2e54", + "https://deno.land/x/ramda@v0.27.2/source/lastIndexOf.js": "ede20d310e986df5fe7a60cfb26c92920da2e9e8b87f0b83f0f1bf7ea34bc552", + "https://deno.land/x/ramda@v0.27.2/source/length.js": "a5a94623b9aeb2fb5cd2b07fb747160b065d7b5d13579a5e19cb2bf71e91c2cd", + "https://deno.land/x/ramda@v0.27.2/source/lens.js": "000fecf9849fb2fe44e0d53f6658adb64fadfccaa51268341505fb9fdfeb49ef", + "https://deno.land/x/ramda@v0.27.2/source/lensIndex.js": "4d730d854eed30e3f85f1e86bcd2903cd5cc4feb729bfcf20fe3540a9548820b", + "https://deno.land/x/ramda@v0.27.2/source/lensPath.js": "cf78dc1749a2f0e1bf39e3efb204742c0dee9938b8ad6ad11b00fac89408b255", + "https://deno.land/x/ramda@v0.27.2/source/lensProp.js": "91acd07b1fced8fe0d0627a402f17b81d0f5eb9be1528b50e0da89c618853b43", + "https://deno.land/x/ramda@v0.27.2/source/lift.js": "ce2263e5551f42fde8e84996c385b9db275ad0935fc8c907f0fc21c9f3e773eb", + "https://deno.land/x/ramda@v0.27.2/source/liftN.js": "f3bfeda33c2b76683bb80475dc99c33b139487806df613845e53e64355f9c008", + "https://deno.land/x/ramda@v0.27.2/source/lt.js": "6b5600629463c5f2b85a0cc55c4f9f15f223820fbc348aae51ff26042528a9d9", + "https://deno.land/x/ramda@v0.27.2/source/lte.js": "2ce6a61f62ba0987cfea61485de4ba9bb9fbe6f200d221654245980db5c968b0", + "https://deno.land/x/ramda@v0.27.2/source/map.js": "c4a8a02e30f2d24fcca8ee04f1dcea0a2e585d9265817b4c59f14aaa4c9ef48e", + "https://deno.land/x/ramda@v0.27.2/source/mapAccum.js": "4d43db0b02a53e5740642299ac15c0f1ca8b8bacefa94bd5bd7afb2ac175efa6", + "https://deno.land/x/ramda@v0.27.2/source/mapAccumRight.js": "836425269deb9d6e683e0da76d70ee7fe20b87f8ecc6feede8a7bb89bae7e8cf", + "https://deno.land/x/ramda@v0.27.2/source/mapObjIndexed.js": "46e60dc5089394735448ca8233b8237eb2afa46f23d27faee9e724af40230887", + "https://deno.land/x/ramda@v0.27.2/source/match.js": "017770587572908a98d6c89c2587972f043fb8802e443cc5632baf517a530c24", + "https://deno.land/x/ramda@v0.27.2/source/mathMod.js": "2fd281416b9bb73a89bf1f85d9b5310520798c4472a1e5496d1077232e331bfc", + "https://deno.land/x/ramda@v0.27.2/source/max.js": "59795e4fa0944cabcb87a8e22491e0fe8465bb246e1d1a881bc66bf90e92b16d", + "https://deno.land/x/ramda@v0.27.2/source/maxBy.js": "39ff93da0ee1b25c808d147595742f7569f69edfce1bfcd818ef1eb4fd6df141", + "https://deno.land/x/ramda@v0.27.2/source/mean.js": "a62cf4f665061ebcd42c5987ed14bbf2af1debfb1cc460b2023ee19a6684933c", + "https://deno.land/x/ramda@v0.27.2/source/median.js": "8a6f6f22319da6e6d57f09e1b5c2f0744b3087142d7af1b780461f2f2be1ef09", + "https://deno.land/x/ramda@v0.27.2/source/memoizeWith.js": "d2cf79f2549aaf4b716de6499f340dec875de5fdc7eb75a44758461673fb3473", + "https://deno.land/x/ramda@v0.27.2/source/mergeAll.js": "a93dd81e1c33d4f88eee785cdeb200d1979bcc8d19ddd4c040bd4e06ddee06db", + "https://deno.land/x/ramda@v0.27.2/source/mergeDeepLeft.js": "7982504228581281dc896a3f484529bd10441ed9090bbd71d7836d84150d0ef7", + "https://deno.land/x/ramda@v0.27.2/source/mergeDeepRight.js": "d303ee731034f4c7a16fb7da0b9c2ffd27f4cc8a80a57ecdf1e865a2b8b60044", + "https://deno.land/x/ramda@v0.27.2/source/mergeDeepWith.js": "9e215ef9f6256855d6fc17a3926db36af51da8c74891f5574f93b9f03562f063", + "https://deno.land/x/ramda@v0.27.2/source/mergeDeepWithKey.js": "0586221974798b20016471605a90b30bf614d544a2723cc23d0ec7a1165dffc1", + "https://deno.land/x/ramda@v0.27.2/source/mergeLeft.js": "7ebe8becc6ada9b378f7cd450e1fc60025a5714770ec3b3df66e76a5a90435b1", + "https://deno.land/x/ramda@v0.27.2/source/mergeRight.js": "23e7c273b0bd531bb37a9f993e167e097e848046dac2b515ee452993fe3974a9", + "https://deno.land/x/ramda@v0.27.2/source/mergeWith.js": "56bea0749e4901db63bb6e88cc9082eb9d527618f20e0e1323673b02aac7f9e1", + "https://deno.land/x/ramda@v0.27.2/source/mergeWithKey.js": "d8ffbcfa7f443971282f8ca259ee90d447b36ee28c5f16b0a8920c6065f64447", + "https://deno.land/x/ramda@v0.27.2/source/min.js": "69c4d07378fb2323b1a8c90eb2566db9fcd6329efda21febd8f62beca476a8d5", + "https://deno.land/x/ramda@v0.27.2/source/minBy.js": "241cde2c0f99abe6b8fbf1420a0b36496de9be0ddec19502ddd7dffd22743d47", + "https://deno.land/x/ramda@v0.27.2/source/modify.js": "b1ceec42bc8b438d2eebd13d13766dca038b601a72155f1151ea595c47024a91", + "https://deno.land/x/ramda@v0.27.2/source/modifyPath.js": "eed5c0d3d49ef17c801f5bc4e07f3ea380b0cc0561df2111d768cd5838ddcb69", + "https://deno.land/x/ramda@v0.27.2/source/modulo.js": "a3f2befd3799560b33f6f7b3d810245a14fb5915d1a4aeee50ac9edb39f1af85", + "https://deno.land/x/ramda@v0.27.2/source/move.js": "54d9a68bf4465c0dac42f21111b4d927c90ccab86ce02b69607eea8157aab679", + "https://deno.land/x/ramda@v0.27.2/source/multiply.js": "2f0a8a704f06e6db7501f22bb57e02e8fae81fa48a1f7831660f22d1a9099aab", + "https://deno.land/x/ramda@v0.27.2/source/nAry.js": "8010b4e7df19cf6296671038ce675cb6ba1d685972f3fc709e3bb4ac3814acd5", + "https://deno.land/x/ramda@v0.27.2/source/negate.js": "88f6d95122a6fb1c52a8d55100abe8c28d83d5760e5c11988374aa2ba07a7e66", + "https://deno.land/x/ramda@v0.27.2/source/none.js": "6de510fc7f05077009a8b5b429d71d434bd57fd49ea8cfeab71f8c1b134e7d76", + "https://deno.land/x/ramda@v0.27.2/source/not.js": "e585c5327ebd9d1641ade1ee13f4889e97ab1987727a17ec8e9368964c3dfa76", + "https://deno.land/x/ramda@v0.27.2/source/nth.js": "53d6932e224a92a49b4a7d20d310995168961286f466c6821d18962f46122978", + "https://deno.land/x/ramda@v0.27.2/source/nthArg.js": "66fd703e925c7808f3f1a73b46d4dbdf7fc74511a7dfc31aee4b5a82764b6fac", + "https://deno.land/x/ramda@v0.27.2/source/o.js": "57abdf9853832d865288dd8625442a316600f36e2e047f767f5c22a8d434c389", + "https://deno.land/x/ramda@v0.27.2/source/objOf.js": "7f760ec1e38e7012551cbfd9e0f4ca68a19bb491daa8d54be9444a5f0bf68c34", + "https://deno.land/x/ramda@v0.27.2/source/of.js": "ea1421763926f248eee2e50f0cad19c1523dff0b34905243fcc8a8578f6c4582", + "https://deno.land/x/ramda@v0.27.2/source/omit.js": "03e6b388a3191d323ad8af97c1ec66b76335d1fc8b3969e6277d7e1ef48c5424", + "https://deno.land/x/ramda@v0.27.2/source/on.js": "b76d5eef062178a08b58aa78bec4d653b23e861f76acc7ec4a0c66d34dbbc57c", + "https://deno.land/x/ramda@v0.27.2/source/once.js": "39d44ab2951729d186a290aa1cdaedc4e8413c5075cbd7d83a219ee2ceb37e6d", + "https://deno.land/x/ramda@v0.27.2/source/or.js": "44290c4fd7a60d0ab4078ff6ebfb3494a7ec765a7f876d4e0d3ae2d101ba3761", + "https://deno.land/x/ramda@v0.27.2/source/otherwise.js": "1684ddecaf92ccca4e81a1185fb9a03145590bc3b412755daecd584450b8b98d", + "https://deno.land/x/ramda@v0.27.2/source/over.js": "1bafb3f3adb80e842e3f85fbc9cec7d1ff45d74a521155ff874513e5ea656272", + "https://deno.land/x/ramda@v0.27.2/source/pair.js": "a7a08517da7b9dbc795961b5fc61c841f3448357816f92d1c92f4b82b87c3e56", + "https://deno.land/x/ramda@v0.27.2/source/partial.js": "46a8e589c5c13e04548d0d608eae3e98536faa7a07cd21a85ad5bc4422d1ecb6", + "https://deno.land/x/ramda@v0.27.2/source/partialObject.js": "888560badc3265a1f2a565679e384cd328fa67cd1f8593b327ea1e997685d6c2", + "https://deno.land/x/ramda@v0.27.2/source/partialRight.js": "1f648463a8ea8bde88e2ba514db697c89f3d89797476df9d9d33c09416d5ee3e", + "https://deno.land/x/ramda@v0.27.2/source/partition.js": "ce7bf928d78471bb2ab5a3cc4e8bba94fd2dc7eef4190f02ac006b7dd1f94483", + "https://deno.land/x/ramda@v0.27.2/source/path.js": "6e0f6fbfd48310ae97e8b7db1dc10f667792e00b472e918d48299b62c6bdc181", + "https://deno.land/x/ramda@v0.27.2/source/pathEq.js": "210d42b3d630ee51ea8bf05cad1394c7bda25b8d84e3e8f1d745f7bb6580e9dd", + "https://deno.land/x/ramda@v0.27.2/source/pathOr.js": "5393e6f1ce78d2d25fa40ecb31556299b3b204235f922fb10fa5bce3849d7c70", + "https://deno.land/x/ramda@v0.27.2/source/pathSatisfies.js": "31ae1d1bb8d296ccdef738ffcb78931a522aab9d326e7352f74b9c49ce75a162", + "https://deno.land/x/ramda@v0.27.2/source/paths.js": "10e5e2efea2f6846d9599a733765142233c8462dc840f75bdfa49a79850ce93a", + "https://deno.land/x/ramda@v0.27.2/source/pick.js": "ff81a353b32587e28436e620a01babdb98efd8a299b8f6a8df6ac25ce1b94832", + "https://deno.land/x/ramda@v0.27.2/source/pickAll.js": "ca62395b63fd42c0ef68613f49838eaa2bb0ea1ead3cc31e814aab3ee578c8bc", + "https://deno.land/x/ramda@v0.27.2/source/pickBy.js": "276d46c2b30bb150815d8216aa4d4f7b13064c85d2f94f08acaf3d7d819b879a", + "https://deno.land/x/ramda@v0.27.2/source/pipe.js": "ec4af7b8717bab5ffbd64214f307e2e1a5588422c7aa135f07ab889f5b5b3c4c", + "https://deno.land/x/ramda@v0.27.2/source/pipeWith.js": "d29c2efcd05dff0fcd7d063b6765b33c23a00ac111277d57b6c71c7ce9995783", + "https://deno.land/x/ramda@v0.27.2/source/pluck.js": "236c11ce90670c59b40c8282da26488700ce9526752e567019c3f91649efc62d", + "https://deno.land/x/ramda@v0.27.2/source/prepend.js": "8e1817d3905234e1d8beab695d1a887c58d533f9872409022d59e4668c518ca6", + "https://deno.land/x/ramda@v0.27.2/source/product.js": "00a1029c71c3d74687189cb0f230c1b11e6148550cdb7a43f921b70eebefd8e2", + "https://deno.land/x/ramda@v0.27.2/source/project.js": "95e3607631966e481137241ab3d5ce28ecf7c356180f1f0c64e3e17f7e7b5144", + "https://deno.land/x/ramda@v0.27.2/source/promap.js": "5169a3c1c4bc18bfee15843937a2044820f0f5ccb0b756f9dab38b82bdd64fb2", + "https://deno.land/x/ramda@v0.27.2/source/prop.js": "60fadfc312383bf90b89bf030c491c2f9990f7c36195c77ce9d129cd03ad379e", + "https://deno.land/x/ramda@v0.27.2/source/propEq.js": "e2cb2122ea211c4864aa9e636b8b9bdde35c1cc75299609bc5ef55d04d2b139b", + "https://deno.land/x/ramda@v0.27.2/source/propIs.js": "6c352c6598300cdc3cb25d05e3b4811ea5408b83121b7457c846e11c60355da5", + "https://deno.land/x/ramda@v0.27.2/source/propOr.js": "ab65492b7f11b10016375839f0de80817db82f00f88913c4c958d71a67e25c44", + "https://deno.land/x/ramda@v0.27.2/source/propSatisfies.js": "7964b6c9bb6372c6c46c2f7ca7ecb2766aa8f6506a0852e21f0856b057b0792f", + "https://deno.land/x/ramda@v0.27.2/source/props.js": "e1472fc2129790daf2d8926fcf276d06e5d8d399e9ac2ecdb0ab9c0b8626451d", + "https://deno.land/x/ramda@v0.27.2/source/range.js": "a5474da8ed452f871e284152fadab940d7818a0094fab8240c6c6a1ab3aaba11", + "https://deno.land/x/ramda@v0.27.2/source/reduce.js": "d9061c7d234998782c985b95ea8949cdb245b70663d2a934a8a8de0d4de9c05d", + "https://deno.land/x/ramda@v0.27.2/source/reduceBy.js": "2d02bc459e682b552e6b79b00b35e4ddeadb71468e6c8be6dffbd55465e5db9e", + "https://deno.land/x/ramda@v0.27.2/source/reduceRight.js": "a304e786dd69bd64d6100d8b4cb5a9b462b9b6da2e6cdb132fe624bd26985470", + "https://deno.land/x/ramda@v0.27.2/source/reduceWhile.js": "8f1502a371a2329443ab545d302ac125a0bac5154575d84bd87bb783a9a4e916", + "https://deno.land/x/ramda@v0.27.2/source/reduced.js": "dc58f955c3cfa8bb49db99331cca4bbaf593b2ff93e1a65c367b48fea02369b8", + "https://deno.land/x/ramda@v0.27.2/source/reject.js": "9d60a4d7faec58937801a88901aae4ff36e4363066b885c113cfa2872bfc7d83", + "https://deno.land/x/ramda@v0.27.2/source/remove.js": "41fd2e37f5cbd89d5a03ebd74a302f5eed6fe65f7e62e096940c9f312230a205", + "https://deno.land/x/ramda@v0.27.2/source/repeat.js": "ca9ee93b0bf120ddcadc6392658899ea04ae3c53603f5440529f6be23051ecb9", + "https://deno.land/x/ramda@v0.27.2/source/replace.js": "bf2a3c64fb797528ac7038c358eb2a4abd899c9e9fc5ccac5c9974d33f1ed828", + "https://deno.land/x/ramda@v0.27.2/source/reverse.js": "8e7eedc3a061105f9eb3d049e6eb439ddecff3c68c396ec74b95067b57c11f41", + "https://deno.land/x/ramda@v0.27.2/source/scan.js": "efff8bc96cda4d073cd515cf2f6b8997128ee3623dfbf068fe82399335724467", + "https://deno.land/x/ramda@v0.27.2/source/sequence.js": "a4589d32bf479e32f8ae724704cd7f2da30e1cf40761812b74b51be56603755d", + "https://deno.land/x/ramda@v0.27.2/source/set.js": "1529e3b9939e47d4c472d9109919eb69023902c4a7f512a9867dd8ceb63bce5b", + "https://deno.land/x/ramda@v0.27.2/source/slice.js": "6338a85bc03108cefb047b8da4560560d32452c15806cb4b9346e854422c2c5c", + "https://deno.land/x/ramda@v0.27.2/source/sort.js": "5da481cae31593cd22132484dd8abe9cb2c13497cdc165138553b2d05290381f", + "https://deno.land/x/ramda@v0.27.2/source/sortBy.js": "f9b1bc79cf1e58719e958e7e9cabced4b07efc3746dd8dace2bc1b13ac8d844a", + "https://deno.land/x/ramda@v0.27.2/source/sortWith.js": "9b9a2b929c9ee1527ebd396018424029856eb522f6b631a409ca79ad151b1214", + "https://deno.land/x/ramda@v0.27.2/source/split.js": "1c1451902866598c519c83b5d25c7984baa27cc0982221a06bb4eab3699a6c05", + "https://deno.land/x/ramda@v0.27.2/source/splitAt.js": "dee211568c602898afbb49f8fff137b74e552bd46822061fbffcabac703ef93d", + "https://deno.land/x/ramda@v0.27.2/source/splitEvery.js": "8d2df436be887b249ffc2d0f8eaf484a3119a0a3c250470b9fd3228bc549e41f", + "https://deno.land/x/ramda@v0.27.2/source/splitWhen.js": "c8f1f962b74ac56c3613a5b3891a6ca241b16531013540d646315defc68109a7", + "https://deno.land/x/ramda@v0.27.2/source/splitWhenever.js": "914fe5786f583a3bc4ebdd0ab940716fc9c517c6de6597267cf1ddf0f0fcb04a", + "https://deno.land/x/ramda@v0.27.2/source/startsWith.js": "3fcd61621913c4f0ad130d99bda3c114abfa90cf2b14c994997e69ad689a745c", + "https://deno.land/x/ramda@v0.27.2/source/subtract.js": "e4436de0605efcdd800068fb41a52768cd0105455debabb12ac57f369c7edafb", + "https://deno.land/x/ramda@v0.27.2/source/sum.js": "a924a281f0ae40164350080d77218a61d5f2e23a0915717897ea9da548741d5c", + "https://deno.land/x/ramda@v0.27.2/source/symmetricDifference.js": "b38e06671a7c7cbe31f820d6baa81a7e9488feadb76761e9f40a4db5aa898868", + "https://deno.land/x/ramda@v0.27.2/source/symmetricDifferenceWith.js": "24ee2e88d2ae27d32aff7534d69df43e84577aba29423a374d105cb1d915b1a9", + "https://deno.land/x/ramda@v0.27.2/source/tail.js": "8b3056fee001bf8bf025cb9b1f656d7e51b3319616551692826716988d446c62", + "https://deno.land/x/ramda@v0.27.2/source/take.js": "7d63665c2b4ca089898fb32e157380eb7f7fae64292d3e476cdda44017aae0d9", + "https://deno.land/x/ramda@v0.27.2/source/takeLast.js": "07eebe91969563cb4a0ba615fe896b19b5437b0509f292f1eadbae5aa271e902", + "https://deno.land/x/ramda@v0.27.2/source/takeLastWhile.js": "9855485f2e41fad8fcbaee5da05e2861b384e460873854065eab0d4b1af32873", + "https://deno.land/x/ramda@v0.27.2/source/takeWhile.js": "6fbe52b711e4f529f6ef1fed47b0f955b104c5b8574af25388767fde22daded3", + "https://deno.land/x/ramda@v0.27.2/source/tap.js": "711d7e7b0b988c0fb1056bb28546442216a2112c6cead7e72f2e676dc2a02496", + "https://deno.land/x/ramda@v0.27.2/source/test.js": "e275f3b1eab7a0094c61dd7a6d5722d45c868407957a4cf6ff082103672c19ac", + "https://deno.land/x/ramda@v0.27.2/source/thunkify.js": "3d85481b52007df192b2e2add0c24e0ec7a2e0c19fe97d179f9c9d3c1dce6559", + "https://deno.land/x/ramda@v0.27.2/source/times.js": "04698c26c3c5c5ae075001976dc4f9bc79b31f0d9e074c125d1033f79c4e9ed9", + "https://deno.land/x/ramda@v0.27.2/source/toLower.js": "856c9897da372c53a9ea9bb62554a95723c038cb0acb6565ab5e759c64f2afa0", + "https://deno.land/x/ramda@v0.27.2/source/toPairs.js": "bc31cbf69bcdebe53746b870766fd9e44e642f588cb42292647d8ba8f28eac23", + "https://deno.land/x/ramda@v0.27.2/source/toPairsIn.js": "68ea5f619efba23d2ba14618f52a753d8e48b08d7c21a0e14409509a62fab7ac", + "https://deno.land/x/ramda@v0.27.2/source/toString.js": "6e05e4f41a92533031cf3d414f4f548a0ce7a2ca846d4b1588efe0e246fa597c", + "https://deno.land/x/ramda@v0.27.2/source/toUpper.js": "a6144b426d9b3f26d96f8d1e35fa9e69a0811797ee9c321bfc87ebb11dc672a5", + "https://deno.land/x/ramda@v0.27.2/source/transduce.js": "5ac0c4fdc079ccc0aa9322f6d42a6d3e2ea6e68379cf2b6b2921e654b3b957d5", + "https://deno.land/x/ramda@v0.27.2/source/transpose.js": "e5f35926cc5dad4eb16232604586121d5fe5f074695c0348b1caa4eff2a232eb", + "https://deno.land/x/ramda@v0.27.2/source/traverse.js": "130de5570a1d9884e1c9055b0b49c954b0ed50861b984b02147ecc86ee91843d", + "https://deno.land/x/ramda@v0.27.2/source/trim.js": "e3c4f90371a4d306ee851b0b7eeaf60ac3f89473361b26e4185cf182f7b440c2", + "https://deno.land/x/ramda@v0.27.2/source/tryCatch.js": "1e5fa41939c58c4fbaaff873d08dc5ceedb8d3783791b451a498c695131a5723", + "https://deno.land/x/ramda@v0.27.2/source/type.js": "21080ce17378149b100374d4e4066b8ad62795f5cd8cd14f51304b24750ed06c", + "https://deno.land/x/ramda@v0.27.2/source/unapply.js": "7712b047039a8dbb54c8e2d941868a4cad0cd5b8d740f9d0f57a400c4f7f6020", + "https://deno.land/x/ramda@v0.27.2/source/unary.js": "8bdf32559274bccf5b71fa9eda955d584bcf452ef11c22819c724827766f7a4b", + "https://deno.land/x/ramda@v0.27.2/source/uncurryN.js": "2d801d194ce5ee77474e3c1d9bc20015a9b0e2268e340d090c8ae983111d80b9", + "https://deno.land/x/ramda@v0.27.2/source/unfold.js": "8a6aa35bf3634acd7b1483f492e40bcdf4144aee371b04e21988d80c51ea1806", + "https://deno.land/x/ramda@v0.27.2/source/union.js": "6ccc1a0367cd64b6383a1ff70710abc4994a930fb35d79adbba86ba62ab2da2f", + "https://deno.land/x/ramda@v0.27.2/source/unionWith.js": "91ffe1040d3b745e395f67a09d9754512a3b17df60eb0ebcffa440901ef38d2f", + "https://deno.land/x/ramda@v0.27.2/source/uniq.js": "96389b95fd864d7c0a2b6298bce1fc57f1f794a3439f7f288303b582ace5ef20", + "https://deno.land/x/ramda@v0.27.2/source/uniqBy.js": "6059b02c9b4eee0fbdcdb0517ac5e463c51395345ee13a7cfa33f89dab5bdc42", + "https://deno.land/x/ramda@v0.27.2/source/uniqWith.js": "c2990360b02d9ae5dee4d87645444615df1ab08b469c2fa154657406edbe9d58", + "https://deno.land/x/ramda@v0.27.2/source/unless.js": "850b9d5be2bf30beafcb4e527b2b9807782cef2eef603b2de79d78c90f93f004", + "https://deno.land/x/ramda@v0.27.2/source/unnest.js": "3344cca4f2659488bda492a3d4c24a88a213cc26cd0326a57c5f9fd82de87d24", + "https://deno.land/x/ramda@v0.27.2/source/until.js": "75405845374a431dd724ec27fcb83daeaa1eb286e31fd6d452991b398e7ea98c", + "https://deno.land/x/ramda@v0.27.2/source/update.js": "d6103807ab8b29871ede6d8263916a3aa67ed2c77dd3769e8f181b0913c908b6", + "https://deno.land/x/ramda@v0.27.2/source/useWith.js": "79f096300ab6f18859c5cd1d7428f47c012ff878be1eef3dc8b65d2b80d02a35", + "https://deno.land/x/ramda@v0.27.2/source/values.js": "b8b65a949541fd40dab4fd27989e31aa389712f243d5f9e52b9db7c9411e6aac", + "https://deno.land/x/ramda@v0.27.2/source/valuesIn.js": "d89b5ef0a181ec77320e854c9bfb45ab42dd56a8bf38a5353f2e645ed7b8e4d8", + "https://deno.land/x/ramda@v0.27.2/source/view.js": "f9d46719c726def19c0decec8d993544bc238cdc75908a5333502e5af22861cb", + "https://deno.land/x/ramda@v0.27.2/source/when.js": "583b46d6b5cd606caf8b6245423efa451294dff030c104db86c48c2024a2d26f", + "https://deno.land/x/ramda@v0.27.2/source/where.js": "8bb8b7ce295bc07bdd5dab752876d6f00b40c8d62491320563e0561ddfde1ea4", + "https://deno.land/x/ramda@v0.27.2/source/whereAny.js": "f7551df5fab9b5e277251d9cd67655d2de3d58582dc7229f2a9b3102e28c990d", + "https://deno.land/x/ramda@v0.27.2/source/whereEq.js": "3756da145b2b7cc93bbf49f1b6c7c358154ba7565baff9eb4e486e4207f1c31b", + "https://deno.land/x/ramda@v0.27.2/source/without.js": "db7b970efaeec230d056ed0ae25f9eca500fb5858efd4e61c2f695c8fdac4c08", + "https://deno.land/x/ramda@v0.27.2/source/xor.js": "7799612731265355fc3a9b407b12628e4426bc9b70b6b874e6106ba61a66f71d", + "https://deno.land/x/ramda@v0.27.2/source/xprod.js": "ecac5f7263ddad3484c6802097a6d0957b6107ce8e52eea0f27a04be50a16833", + "https://deno.land/x/ramda@v0.27.2/source/zip.js": "29a04e7dd0a012e391fc595900b4cb0124a13c738f4e6f4489c7173b4a6642dc", + "https://deno.land/x/ramda@v0.27.2/source/zipObj.js": "c463fe415ecf647561a12ed9dd3444a0be4dd642e787e156fe8caf7fee0ce4ca", + "https://deno.land/x/ramda@v0.27.2/source/zipWith.js": "2081388ae101a01f60589f0a74b7a8e75fdc7a6416c224673f197633750041ec", "https://deno.land/x/zod@v3.23.8/ZodError.ts": "528da200fbe995157b9ae91498b103c4ef482217a5c086249507ac850bd78f52", "https://deno.land/x/zod@v3.23.8/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", "https://deno.land/x/zod@v3.23.8/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", diff --git a/src/config.ts b/src/config.ts index c622c96..8dce2b4 100644 --- a/src/config.ts +++ b/src/config.ts @@ -5,6 +5,10 @@ const envSchema = z.object({ HN_API: z.string().default('https://hacker-news.firebaseio.com/v0/'), BOT_TOKEN: z.string().default('dummy'), APP_ENV: z.enum(['development', 'test', 'production']).default('development'), + GEMINI_API_KEY: z.string().default('dummy'), + BASE_GEMINI_ENDPOINT: z.string().default( + 'https://generativelanguage.googleapis.com/v1/', + ), }) try { diff --git a/src/types.ts b/src/types.ts index 09a3e0f..bd90e38 100644 --- a/src/types.ts +++ b/src/types.ts @@ -42,3 +42,106 @@ export type PreferencesContext = & ConversationFlavor export type ConversationContext = Conversation + +const safetyRatingSchema = z.object({ + category: z.enum([ + 'HARM_CATEGORY_UNSPECIFIED', + 'HARM_CATEGORY_DEROGATORY', + 'HARM_CATEGORY_TOXICITY', + 'HARM_CATEGORY_VIOLENCE', + 'HARM_CATEGORY_SEXUAL', + 'HARM_CATEGORY_MEDICAL', + 'HARM_CATEGORY_DANGEROUS', + 'HARM_CATEGORY_HARASSMENT', + 'HARM_CATEGORY_HATE_SPEECH', + 'HARM_CATEGORY_SEXUALLY_EXPLICIT', + 'HARM_CATEGORY_DANGEROUS_CONTENT', + ]), + probability: z.enum([ + 'HIGH', + 'MEDIUM', + 'LOW', + 'NEGLIGIBLE', + 'HARM_PROBABILITY_UNSPECIFIED', + ]), + blocked: z.boolean().optional(), +}) + +const citationMetadataSchema = z.object({ + citationSources: z.array( + z.object({ + 'startIndex': z.number().int().optional(), + 'endIndex': z.number().int().optional(), + 'uri': z.string().optional(), + 'license': z.string().optional(), + }), + ), +}) + +const contentSchema = z.object({ + parts: z.array( + z.object({ + text: z.string().optional(), + inlineData: z.object({ + mimeType: z.string(), + data: z.string().base64(), + }).optional(), + }), + ), + role: z.enum([ + 'user', + 'model', + ]).optional(), +}) + +const requestContentSchema = z.object({ + contents: z.array(contentSchema), +}) + +export type RequestContent = z.infer + +const candidateSchema = z.object({ + content: contentSchema, + finishReason: z.enum( + [ + 'FINISH_REASON_UNSPECIFIED', + 'STOP', + 'MAX_TOKENS', + 'SAFETY', + 'RECITATION', + 'OTHER', + ], + ).default('FINISH_REASON_UNSPECIFIED'), + safetyRatings: z.array(safetyRatingSchema), + citationMetadata: citationMetadataSchema.optional(), + tokenCount: z.number().int().optional(), + index: z.number().int().optional(), +}) +const promptFeedbackSchema = z.object({ + blockReason: z.enum([ + 'BLOCK_REASON_UNSPECIFIED', + 'SAFETY', + 'OTHER', + ]).optional(), + safetyRatings: z.array(safetyRatingSchema), +}) + +const usageMetadataSchema = z.object({ + promptTokenCount: z.number(), + candidatesTokenCount: z.number(), + totalTokenCount: z.number(), +}) + +const generateContentResponseSchema = z.object({ + candidates: z.array( + candidateSchema, + ), + promptFeedback: promptFeedbackSchema.optional(), + usageMetadata: usageMetadataSchema, +}) + +export const filteredContentSchema = generateContentResponseSchema.pick( + { + candidates: true, + }, +) From 87bb5195f638c141725d25834bacb33c0868084f Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 01:05:30 +0200 Subject: [PATCH 096/152] style: underscore file names --- src/tests/{getItem.spec.ts => get_item.spec.ts} | 0 src/tests/{getTopStories.spec.ts => get_top_stories.spec.ts} | 0 src/utils/{testHelpers.ts => test_helpers.ts} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename src/tests/{getItem.spec.ts => get_item.spec.ts} (100%) rename src/tests/{getTopStories.spec.ts => get_top_stories.spec.ts} (100%) rename src/utils/{testHelpers.ts => test_helpers.ts} (100%) diff --git a/src/tests/getItem.spec.ts b/src/tests/get_item.spec.ts similarity index 100% rename from src/tests/getItem.spec.ts rename to src/tests/get_item.spec.ts diff --git a/src/tests/getTopStories.spec.ts b/src/tests/get_top_stories.spec.ts similarity index 100% rename from src/tests/getTopStories.spec.ts rename to src/tests/get_top_stories.spec.ts diff --git a/src/utils/testHelpers.ts b/src/utils/test_helpers.ts similarity index 100% rename from src/utils/testHelpers.ts rename to src/utils/test_helpers.ts From 0790c1262e56b95665c5c3d45cba1b4a6a7964c6 Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 01:11:43 +0200 Subject: [PATCH 097/152] chore(analysis): init folder structure --- deno.jsonc | 2 +- src/analysis/analysis.ts | 0 src/analysis/mod.ts | 1 + src/tests/analysis.spec.ts | 0 src/tests/bot/setup.spec.ts | 2 +- 5 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 src/analysis/analysis.ts create mode 100644 src/analysis/mod.ts create mode 100644 src/tests/analysis.spec.ts diff --git a/deno.jsonc b/deno.jsonc index 423830b..4ad1f83 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -17,7 +17,7 @@ "tasks": { "coverage": "rm -rf cov_profile && deno test -A --parallel --coverage=cov_profile -- --test && deno coverage --lcov --output=./coverage.lcov ./cov_profile", "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", - "test": "APP_ENV=test BOT_TOKEN=dummy deno test -A --parallel -- --test" + "test": "APP_ENV=test BOT_TOKEN=dummy deno test -A --parallel --watch -- --test" }, "test": { "include": [ diff --git a/src/analysis/analysis.ts b/src/analysis/analysis.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/analysis/mod.ts b/src/analysis/mod.ts new file mode 100644 index 0000000..4320785 --- /dev/null +++ b/src/analysis/mod.ts @@ -0,0 +1 @@ +export * from './analysis.ts' diff --git a/src/tests/analysis.spec.ts b/src/tests/analysis.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/tests/bot/setup.spec.ts b/src/tests/bot/setup.spec.ts index a25521a..e343987 100644 --- a/src/tests/bot/setup.spec.ts +++ b/src/tests/bot/setup.spec.ts @@ -7,7 +7,7 @@ import { from, slashCommand, testSetupConversation, -} from '@/utils/testHelpers.ts' +} from '@/utils/test_helpers.ts' let storageAdapter: MemorySessionStorage | undefined From 7f4c9c5f1bdd447d0e629b7ea29f4ff7ef681a2c Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 14:05:30 +0200 Subject: [PATCH 098/152] chore: upgrade deno to 1.45.1 --- .tool-versions | 2 +- deno.jsonc | 6 +----- src/__tests__/adapters/base.spec.ts | 20 +++++++++++++++++++ src/{tests => __tests__}/bot/setup.spec.ts | 0 src/{tests => __tests__}/get_item.spec.ts | 0 .../get_top_stories.spec.ts | 0 src/{tests => __tests__}/utils.spec.ts | 0 src/tests/analysis.spec.ts | 0 8 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/__tests__/adapters/base.spec.ts rename src/{tests => __tests__}/bot/setup.spec.ts (100%) rename src/{tests => __tests__}/get_item.spec.ts (100%) rename src/{tests => __tests__}/get_top_stories.spec.ts (100%) rename src/{tests => __tests__}/utils.spec.ts (100%) delete mode 100644 src/tests/analysis.spec.ts diff --git a/.tool-versions b/.tool-versions index 77131ab..99f45c7 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -deno 1.44.4 +deno 1.45.1 diff --git a/deno.jsonc b/deno.jsonc index 4ad1f83..52a0a1e 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -2,6 +2,7 @@ "imports": { "@/": "./src/", "@bot/": "./src/bot/", + "@adapters/": "./src/adapters/", "@std/assert": "jsr:@std/assert@^0.226.0", "@std/dotenv": "jsr:@std/dotenv@^0.224.2", "@std/testing": "jsr:@std/testing@^0.225.3", @@ -19,11 +20,6 @@ "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", "test": "APP_ENV=test BOT_TOKEN=dummy deno test -A --parallel --watch -- --test" }, - "test": { - "include": [ - "src/**/*.spec.ts" - ] - }, "exclude": ["dist", "node_modules"], "compilerOptions": { "lib": ["deno.window", "DOM", "DOM.Iterable", "ESNext"], diff --git a/src/__tests__/adapters/base.spec.ts b/src/__tests__/adapters/base.spec.ts new file mode 100644 index 0000000..3634e3e --- /dev/null +++ b/src/__tests__/adapters/base.spec.ts @@ -0,0 +1,20 @@ +import { assertType, describe, IsExact, it } from '@/dev_deps.ts' +import { BaseAdapter } from '@/adapters/base.ts' + +describe('baseAdapter', () => { + describe('constructor', () => { + it('correctly gets implemented', () => { + class MyAdapter implements BaseAdapter { + generateContent(): object { + throw new Error('Method not implemented.') + } + } + + const adapter = new MyAdapter() + assertType>(true) + assertType object>>( + true, + ) + }) + }) +}) diff --git a/src/tests/bot/setup.spec.ts b/src/__tests__/bot/setup.spec.ts similarity index 100% rename from src/tests/bot/setup.spec.ts rename to src/__tests__/bot/setup.spec.ts diff --git a/src/tests/get_item.spec.ts b/src/__tests__/get_item.spec.ts similarity index 100% rename from src/tests/get_item.spec.ts rename to src/__tests__/get_item.spec.ts diff --git a/src/tests/get_top_stories.spec.ts b/src/__tests__/get_top_stories.spec.ts similarity index 100% rename from src/tests/get_top_stories.spec.ts rename to src/__tests__/get_top_stories.spec.ts diff --git a/src/tests/utils.spec.ts b/src/__tests__/utils.spec.ts similarity index 100% rename from src/tests/utils.spec.ts rename to src/__tests__/utils.spec.ts diff --git a/src/tests/analysis.spec.ts b/src/tests/analysis.spec.ts deleted file mode 100644 index e69de29..0000000 From e2a13ded2f56dc77e693249a8e8025d2f6fee87b Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 15:46:26 +0200 Subject: [PATCH 099/152] chore(ai-adapter): init base adapter --- deno.jsonc | 2 +- .../{adapters => ai_adapters}/base.spec.ts | 13 +++++++++---- src/__tests__/analysis.spec.ts | 9 +++++++++ src/ai_adapters/base.ts | 7 +++++++ 4 files changed, 26 insertions(+), 5 deletions(-) rename src/__tests__/{adapters => ai_adapters}/base.spec.ts (53%) create mode 100644 src/__tests__/analysis.spec.ts create mode 100644 src/ai_adapters/base.ts diff --git a/deno.jsonc b/deno.jsonc index 52a0a1e..c5ad8d1 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -2,7 +2,7 @@ "imports": { "@/": "./src/", "@bot/": "./src/bot/", - "@adapters/": "./src/adapters/", + "@adapters/": "./src/adapters/mod.ts", "@std/assert": "jsr:@std/assert@^0.226.0", "@std/dotenv": "jsr:@std/dotenv@^0.224.2", "@std/testing": "jsr:@std/testing@^0.225.3", diff --git a/src/__tests__/adapters/base.spec.ts b/src/__tests__/ai_adapters/base.spec.ts similarity index 53% rename from src/__tests__/adapters/base.spec.ts rename to src/__tests__/ai_adapters/base.spec.ts index 3634e3e..205d366 100644 --- a/src/__tests__/adapters/base.spec.ts +++ b/src/__tests__/ai_adapters/base.spec.ts @@ -1,18 +1,23 @@ import { assertType, describe, IsExact, it } from '@/dev_deps.ts' -import { BaseAdapter } from '@/adapters/base.ts' +import { BaseAdapter, ResponseContent } from '../../ai_adapters/base.ts' describe('baseAdapter', () => { describe('constructor', () => { it('correctly gets implemented', () => { class MyAdapter implements BaseAdapter { - generateContent(): object { - throw new Error('Method not implemented.') + generateContent(text: string): Promise { + return Promise.resolve({ text }) } } const adapter = new MyAdapter() assertType>(true) - assertType object>>( + assertType< + IsExact< + typeof adapter.generateContent, + (text: string) => Promise + > + >( true, ) }) diff --git a/src/__tests__/analysis.spec.ts b/src/__tests__/analysis.spec.ts new file mode 100644 index 0000000..6dd5c19 --- /dev/null +++ b/src/__tests__/analysis.spec.ts @@ -0,0 +1,9 @@ +import { describe, it } from '@/dev_deps.ts' + +describe('filterStories', () => { + it('filters stories by preferences', () => { + const preferences = ['TypeScript', 'AWS', 'Deno'] + + filterStories(preferences) + }) +}) diff --git a/src/ai_adapters/base.ts b/src/ai_adapters/base.ts new file mode 100644 index 0000000..d23a554 --- /dev/null +++ b/src/ai_adapters/base.ts @@ -0,0 +1,7 @@ +export type ResponseContent = { + text: string +} + +export interface BaseAdapter { + generateContent(text: string): Promise +} From daea1f6fd9630f53bdbb6bf90b2d3dbf272a26af Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 17:35:12 +0200 Subject: [PATCH 100/152] style: set editor.tabSize on 2 --- .vscode/settings.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 39c4eab..331f12b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,8 @@ { - "deno.enable": true, - "[typescript]": { - "editor.defaultFormatter": "denoland.vscode-deno", - "editor.formatOnSave": true - }, -} \ No newline at end of file + "deno.enable": true, + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno", + "editor.formatOnSave": true, + "editor.tabSize": 2 + }, +} From 4ecaf1f1a810758c7efa729000669598c5cd17fb Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 18:20:15 +0200 Subject: [PATCH 101/152] docs: sort commits by newest for git-cliff --- CHANGELOG.md | 168 +++++++++++++++++++++++++++------------------------ cliff.toml | 2 +- 2 files changed, 89 insertions(+), 81 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56986eb..40b9ca0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,113 +6,121 @@ All notable changes to this project will be documented in this file. ### ๐Ÿš€ Features -- Get 500 top stories -- Remove axios to use builtin fetch API -- Get storage adapter for env -- Determine session adapter in bot setup -- Ask for preference -- Store preferences in session with conversations -- Reset preferences and fix convo loop -- [**breaking**] Replace jest with vitest cause of esm troubles -- Add list preferences cmd -- [**breaking**] Complete deno migration by fixing last tests -- Validate Item schema -- Deploy workflow - Add changelog +- Deploy workflow +- Validate Item schema +- [**breaking**] Complete deno migration by fixing last tests +- Add list preferences cmd +- [**breaking**] Replace jest with vitest cause of esm troubles +- Reset preferences and fix convo loop +- Store preferences in session with conversations +- Ask for preference +- Determine session adapter in bot setup +- Get storage adapter for env +- Remove axios to use builtin fetch API +- Get 500 top stories ### ๐Ÿ› Bug Fixes -- Remove ts-node and use tsx with watch mode -- Add ESM support for jest -- Disable noEmit during build -- Remove overkilling functions and declare adapters inside always condition -- Use test flag on test task to retrieve right env file -- Adapt for deno deploy -- Import new types in bot.ts -- Change root to cwd -- Remove env leaking log - Add missing test variables for coverage +- Remove env leaking log +- Change root to cwd +- Import new types in bot.ts +- Adapt for deno deploy +- Use test flag on test task to retrieve right env file +- Remove overkilling functions and declare adapters inside always condition +- Disable noEmit during build +- Add ESM support for jest +- Remove ts-node and use tsx with watch mode ### ๐Ÿšœ Refactor -- Add generic slashCommand generator -- [**breaking**] Move types in a single declaration file - Improve env loading with zod +- [**breaking**] Move types in a single declaration file +- Add generic slashCommand generator ### ๐Ÿ“š Documentation -- Add usage instructions -- Update README with test instructions -- Add testing guideline -- Add setMyCommands usage tip -- Update readme with right usage of jest object -- Add todo for clear preferences and update readme with BDD tips -- Add codefactor badge -- Move codefactor badge on top -- Add deployment section +- Prioritize testing over styling in changelog - Update changelog +- Add deployment section +- Move codefactor badge on top +- Add codefactor badge +- Add todo for clear preferences and update readme with BDD tips +- Update readme with right usage of jest object +- Add setMyCommands usage tip +- Add testing guideline +- Update README with test instructions +- Add usage instructions ### ๐Ÿงช Testing -- Add watch flag -- Mock getItem api -- Should return null for not found item -- Add faker and mock array of top stories -- Add type checkers -- It responds to setup command -- [**breaking**] Fix specs adapting to vitest - Stub global fetch +- [**breaking**] Fix specs adapting to vitest +- It responds to setup command +- Add type checkers +- Add faker and mock array of top stories +- Should return null for not found item +- Mock getItem api +- Add watch flag ### ๐ŸŽจ Styling -- Add newline on heading -- Add develop codefactor +- Set editor.tabSize on 2 +- Underscore file names - Fix fmt of api.ts +- Add develop codefactor +- Add newline on heading ### โš™๏ธ Miscellaneous Tasks -- Init project -- Extend ProcessEnv of node with BOT_TOKEN -- Add build script for npm to run tsc -- Add support of dotenvx -- Move env declaration at root -- Config jest for ts and move to src folder -- Config jest to match only __tests__ folder -- Improve item typing for req -- Remove error test -- Add tsconfig.build for excluding specs on compilation -- Replace telegraf with grammY -- Init grammy bot -- [**breaking**] Use bot.ts as entrypoint -- Init setup composer -- Remove some types and cleanup config -- Init conversation plugin +- *(ai-adapter)* Init base adapter +- Upgrade deno to 1.45.1 +- *(analysis)* Init folder structure +- *(gemini-response)* Add zod types for request and response schema of `generateContent` api +- Point ramda package to deno instead of nest +- AllowBreaking on updater +- Add format and lint job +- Ignore any lint in specs +- Cache dependencies during test +- Upgrade grammy to 1.27 with latest types +- Reignore .env.test +- Upgrade packages +- Manual update workflow +- Add update workflow +- Add codecov +- Add test job dependency +- Do not ignore .env test +- Add zod package +- Add coverage task +- Add recommended deno ext +- [**breaking**] Add grammy from deno +- [**breaking**] Add faker deno module +- [**breaking**] Add ramda external dep +- [**breaking**] Add deno and remove type definitions and tsconfig +- Add dependabot +- Upgrade dotenvx to major 1 +- [**breaking**] Remove export of bot and use bot.ts as entrypoint +- Upgrade typescript npm - Upgrade grammy - Add todo on mocking api calls - Upgrade grammy -- Upgrade typescript npm -- [**breaking**] Remove export of bot and use bot.ts as entrypoint -- Upgrade dotenvx to major 1 -- Add dependabot -- [**breaking**] Add deno and remove type definitions and tsconfig -- [**breaking**] Add ramda external dep -- [**breaking**] Add faker deno module -- [**breaking**] Add grammy from deno -- Add recommended deno ext -- Add coverage task -- Add zod package -- Do not ignore .env test -- Add test job dependency -- Add codecov -- Add update workflow -- Manual update workflow -- Upgrade packages -- Reignore .env.test -- Upgrade grammy to 1.27 with latest types -- Cache dependencies during test -- Ignore any lint in specs -- Add format and lint job -- AllowBreaking on updater +- Init conversation plugin +- Remove some types and cleanup config +- Init setup composer +- [**breaking**] Use bot.ts as entrypoint +- Init grammy bot +- Replace telegraf with grammY +- Add tsconfig.build for excluding specs on compilation +- Remove error test +- Improve item typing for req +- Config jest to match only __tests__ folder +- Config jest for ts and move to src folder +- Move env declaration at root +- Add support of dotenvx +- Add build script for npm to run tsc +- Extend ProcessEnv of node with BOT_TOKEN +- Init project ### Deno diff --git a/cliff.toml b/cliff.toml index 6b143fb..898841e 100644 --- a/cliff.toml +++ b/cliff.toml @@ -84,6 +84,6 @@ filter_commits = false # sort the tags topologically topo_order = false # sort the commits inside sections by oldest/newest order -sort_commits = "oldest" +sort_commits = "newest" # limit the number of commits included in the changelog. # limit_commits = 42 From b6fdf642a72e8d37a186582448277e4c93d9133d Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 18:29:00 +0200 Subject: [PATCH 102/152] chore(ai-adapter): rename text to input as generateContent param --- src/__tests__/ai_adapters/base.spec.ts | 4 ++-- src/ai_adapters/base.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/__tests__/ai_adapters/base.spec.ts b/src/__tests__/ai_adapters/base.spec.ts index 205d366..654c3a4 100644 --- a/src/__tests__/ai_adapters/base.spec.ts +++ b/src/__tests__/ai_adapters/base.spec.ts @@ -5,8 +5,8 @@ describe('baseAdapter', () => { describe('constructor', () => { it('correctly gets implemented', () => { class MyAdapter implements BaseAdapter { - generateContent(text: string): Promise { - return Promise.resolve({ text }) + generateContent(input: string): Promise { + return Promise.resolve({ text: 'Hello World!' }) } } diff --git a/src/ai_adapters/base.ts b/src/ai_adapters/base.ts index d23a554..125b159 100644 --- a/src/ai_adapters/base.ts +++ b/src/ai_adapters/base.ts @@ -1,7 +1,7 @@ export type ResponseContent = { - text: string + text: string } export interface BaseAdapter { - generateContent(text: string): Promise + generateContent(input: string): Promise } From 6069aa3563af3a9c6c34b5622bf42df683a79afd Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 18:33:26 +0200 Subject: [PATCH 103/152] chore(gemini-adapter): init apiKey and baseUrl --- deno.jsonc | 2 +- src/__tests__/ai_adapters/gemini.spec.ts | 36 ++++++++++++++++++++++++ src/ai_adapters/gemini.ts | 28 ++++++++++++++++++ src/ai_adapters/mod.ts | 1 + 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 src/__tests__/ai_adapters/gemini.spec.ts create mode 100644 src/ai_adapters/gemini.ts create mode 100644 src/ai_adapters/mod.ts diff --git a/deno.jsonc b/deno.jsonc index c5ad8d1..a328eba 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -2,7 +2,7 @@ "imports": { "@/": "./src/", "@bot/": "./src/bot/", - "@adapters/": "./src/adapters/mod.ts", + "@adapters/ai": "./src/adapters/mod.ts", "@std/assert": "jsr:@std/assert@^0.226.0", "@std/dotenv": "jsr:@std/dotenv@^0.224.2", "@std/testing": "jsr:@std/testing@^0.225.3", diff --git a/src/__tests__/ai_adapters/gemini.spec.ts b/src/__tests__/ai_adapters/gemini.spec.ts new file mode 100644 index 0000000..045d2a3 --- /dev/null +++ b/src/__tests__/ai_adapters/gemini.spec.ts @@ -0,0 +1,36 @@ +import { assertType, describe, IsExact } from '@/dev_deps.ts' +import { it } from 'jsr:@std/testing@^0.225.3/bdd' +import { GeminiAdapter } from '@/ai_adapters/mod.ts' +import { assertExists, assertInstanceOf, assertRejects } from '@std/assert' + +describe('GeminiAdapter', () => { + describe('constructor', () => { + it('should create an instance of GeminiAdapter', () => { + const adapter = new GeminiAdapter() + + assertInstanceOf(adapter, GeminiAdapter) + assertExists(adapter['_apiKey']) + assertExists(adapter['_baseUrl']) + }) + }) + + describe('generateContent', () => { + it('should throw an error when input not provided', () => { + const adapter = new GeminiAdapter() + + assertRejects( + () => adapter.generateContent(''), + Error, + 'Text is required', + ) + }) + + it('should return a response content', async () => { + const adapter = new GeminiAdapter() + const response = await adapter.generateContent('Hello, world!') + + assertExists(response) + assertType>(true) + }) + }) +}) diff --git a/src/ai_adapters/gemini.ts b/src/ai_adapters/gemini.ts new file mode 100644 index 0000000..a3023a9 --- /dev/null +++ b/src/ai_adapters/gemini.ts @@ -0,0 +1,28 @@ +import { BaseAdapter, ResponseContent } from '@/ai_adapters/base.ts' +import { R } from '@/deps.ts' +import { config } from '@/config.ts' + +export class GeminiAdapter implements BaseAdapter { + private readonly _apiKey: string + private readonly _baseUrl: string + + constructor() { + this._apiKey = config.GEMINI_API_KEY + this._baseUrl = config.BASE_GEMINI_ENDPOINT + } + + /** + * Generate content using the Gemini API. + */ + public generateContent(input: string): Promise { + return new Promise((resolve, reject) => { + if (R.isEmpty(input)) { + reject(new Error('Text is required')) + } + + resolve({ + text: 'Hello, world!', + }) + }) + } +} diff --git a/src/ai_adapters/mod.ts b/src/ai_adapters/mod.ts new file mode 100644 index 0000000..2ea5b53 --- /dev/null +++ b/src/ai_adapters/mod.ts @@ -0,0 +1 @@ +export { GeminiAdapter } from './gemini.ts' From 49030fd5368fcf2f504bae4a1353b7491ae164ec Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 18:51:53 +0200 Subject: [PATCH 104/152] chore(ai-adapter): add buildBody method --- src/__tests__/ai_adapters/base.spec.ts | 6 ++++++ src/ai_adapters/base.ts | 1 + 2 files changed, 7 insertions(+) diff --git a/src/__tests__/ai_adapters/base.spec.ts b/src/__tests__/ai_adapters/base.spec.ts index 654c3a4..48411c2 100644 --- a/src/__tests__/ai_adapters/base.spec.ts +++ b/src/__tests__/ai_adapters/base.spec.ts @@ -8,6 +8,10 @@ describe('baseAdapter', () => { generateContent(input: string): Promise { return Promise.resolve({ text: 'Hello World!' }) } + + buildBody(): object { + return { text: 'Hello World!' } + } } const adapter = new MyAdapter() @@ -20,6 +24,8 @@ describe('baseAdapter', () => { >( true, ) + + assertType object>>(true) }) }) }) diff --git a/src/ai_adapters/base.ts b/src/ai_adapters/base.ts index 125b159..f93f766 100644 --- a/src/ai_adapters/base.ts +++ b/src/ai_adapters/base.ts @@ -4,4 +4,5 @@ export type ResponseContent = { export interface BaseAdapter { generateContent(input: string): Promise + buildBody(): object } From be764bb18d544c1d1e786ba67026c4391703cd7d Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 12 Jul 2024 19:01:11 +0200 Subject: [PATCH 105/152] chore(ai-adapter): add body call signature --- src/__tests__/ai_adapters/base.spec.ts | 8 +++++--- src/ai_adapters/base.ts | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/__tests__/ai_adapters/base.spec.ts b/src/__tests__/ai_adapters/base.spec.ts index 48411c2..dab2508 100644 --- a/src/__tests__/ai_adapters/base.spec.ts +++ b/src/__tests__/ai_adapters/base.spec.ts @@ -5,11 +5,11 @@ describe('baseAdapter', () => { describe('constructor', () => { it('correctly gets implemented', () => { class MyAdapter implements BaseAdapter { - generateContent(input: string): Promise { + generateContent(_input: string): Promise { return Promise.resolve({ text: 'Hello World!' }) } - buildBody(): object { + buildBody(_input: string): object { return { text: 'Hello World!' } } } @@ -25,7 +25,9 @@ describe('baseAdapter', () => { true, ) - assertType object>>(true) + assertType object>>( + true, + ) }) }) }) diff --git a/src/ai_adapters/base.ts b/src/ai_adapters/base.ts index f93f766..dd1ec25 100644 --- a/src/ai_adapters/base.ts +++ b/src/ai_adapters/base.ts @@ -4,5 +4,5 @@ export type ResponseContent = { export interface BaseAdapter { generateContent(input: string): Promise - buildBody(): object + buildBody(input: string): object } From 107dfa6cbcfa3301591464d568674407fbae0b8a Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 13 Jul 2024 01:19:43 +0200 Subject: [PATCH 106/152] chore(gemini-adapter): add body builder function --- src/__tests__/ai_adapters/gemini.spec.ts | 28 ++++++++++++++++++++++++ src/ai_adapters/gemini.ts | 19 ++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/__tests__/ai_adapters/gemini.spec.ts b/src/__tests__/ai_adapters/gemini.spec.ts index 045d2a3..5fdbe07 100644 --- a/src/__tests__/ai_adapters/gemini.spec.ts +++ b/src/__tests__/ai_adapters/gemini.spec.ts @@ -11,6 +11,34 @@ describe('GeminiAdapter', () => { assertInstanceOf(adapter, GeminiAdapter) assertExists(adapter['_apiKey']) assertExists(adapter['_baseUrl']) +assertExists(adapter['_model']) + }) + }) + + describe('buildBody', () => { + it('throws an error when input not provided', () => { + const adapter = new GeminiAdapter() + + assertThrows( + () => adapter.buildBody(''), + ) + }) + + it('should return a request content', () => { + const adapter = new GeminiAdapter() + const requestContent = adapter.buildBody('Hello, world!') + + assertObjectMatch(requestContent, { + contents: [ + { + parts: [{ + text: 'Hello, world!', + }], + }, + ], + }) + + assertType>(true) }) }) diff --git a/src/ai_adapters/gemini.ts b/src/ai_adapters/gemini.ts index a3023a9..5e5fa6a 100644 --- a/src/ai_adapters/gemini.ts +++ b/src/ai_adapters/gemini.ts @@ -1,10 +1,12 @@ import { BaseAdapter, ResponseContent } from '@/ai_adapters/base.ts' import { R } from '@/deps.ts' import { config } from '@/config.ts' +import { RequestContent } from '@/types.ts' export class GeminiAdapter implements BaseAdapter { private readonly _apiKey: string private readonly _baseUrl: string + private readonly _model: string constructor() { this._apiKey = config.GEMINI_API_KEY @@ -25,4 +27,21 @@ export class GeminiAdapter implements BaseAdapter { }) }) } + + /** + * Build the body for the Gemini API. + */ + public buildBody(input: string): RequestContent { + if (R.isEmpty(input)) { + throw new Error('Text is required') + } + + const body: RequestContent = R.assocPath( + ['contents', 0, 'parts', 0, 'text'], + input, + {}, + ) + + return body + } } From b03184a9e3aa5e07fc6c745efe5510682ad15ab9 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 13 Jul 2024 01:58:32 +0200 Subject: [PATCH 107/152] feat(gemini-adapter): implement generateContent call with response parsing --- src/__tests__/ai_adapters/gemini.spec.ts | 52 ++++++++++++++++++++---- src/ai_adapters/base.ts | 13 ++++++ src/ai_adapters/gemini.ts | 47 ++++++++++++++++++--- src/config.ts | 2 +- 4 files changed, 101 insertions(+), 13 deletions(-) diff --git a/src/__tests__/ai_adapters/gemini.spec.ts b/src/__tests__/ai_adapters/gemini.spec.ts index 5fdbe07..cde4880 100644 --- a/src/__tests__/ai_adapters/gemini.spec.ts +++ b/src/__tests__/ai_adapters/gemini.spec.ts @@ -1,7 +1,20 @@ -import { assertType, describe, IsExact } from '@/dev_deps.ts' -import { it } from 'jsr:@std/testing@^0.225.3/bdd' -import { GeminiAdapter } from '@/ai_adapters/mod.ts' -import { assertExists, assertInstanceOf, assertRejects } from '@std/assert' +// deno-lint-ignore-file no-explicit-any +import { GeminiAdapter } from '@/ai_adapters/gemini.ts' +import { + assertEquals, + assertExists, + assertInstanceOf, + assertObjectMatch, + assertRejects, + assertThrows, + assertType, + describe, + IsExact, + it, + stub, +} from '@/dev_deps.ts' +import { RequestContent } from '@/types.ts' +import { ResponseContent } from '@/ai_adapters/base.ts' describe('GeminiAdapter', () => { describe('constructor', () => { @@ -11,7 +24,7 @@ describe('GeminiAdapter', () => { assertInstanceOf(adapter, GeminiAdapter) assertExists(adapter['_apiKey']) assertExists(adapter['_baseUrl']) -assertExists(adapter['_model']) + assertExists(adapter['_model']) }) }) @@ -55,10 +68,35 @@ assertExists(adapter['_model']) it('should return a response content', async () => { const adapter = new GeminiAdapter() + + const fakeResponse = Promise.resolve( + new Response( + JSON.stringify({ + candidates: [ + { + content: { + parts: [ + { + text: 'Hello, world!', + }, + ], + }, + safetyRatings: [], + }, + ], + }), + { status: 200 }, + ), + ) + + using _fetchStub = stub(globalThis, 'fetch', () => fakeResponse) + const response = await adapter.generateContent('Hello, world!') - assertExists(response) - assertType>(true) + assertType>(true) + assertEquals(response.text, 'Hello, world!') }) + + // TODO: add handle API error test }) }) diff --git a/src/ai_adapters/base.ts b/src/ai_adapters/base.ts index dd1ec25..b1770fb 100644 --- a/src/ai_adapters/base.ts +++ b/src/ai_adapters/base.ts @@ -2,6 +2,19 @@ export type ResponseContent = { text: string } +export enum HttpStatus { + OK = 200, + CREATED = 201, + NO_CONTENT = 204, + BAD_REQUEST = 400, + UNAUTHORIZED = 401, + FORBIDDEN = 403, + NOT_FOUND = 404, + METHOD_NOT_ALLOWED = 405, + CONFLICT = 409, + INTERNAL_SERVER_ERROR = 500, +} + export interface BaseAdapter { generateContent(input: string): Promise buildBody(input: string): object diff --git a/src/ai_adapters/gemini.ts b/src/ai_adapters/gemini.ts index 5e5fa6a..37d3ef5 100644 --- a/src/ai_adapters/gemini.ts +++ b/src/ai_adapters/gemini.ts @@ -1,7 +1,8 @@ -import { BaseAdapter, ResponseContent } from '@/ai_adapters/base.ts' -import { R } from '@/deps.ts' import { config } from '@/config.ts' +import { R } from '@/deps.ts' import { RequestContent } from '@/types.ts' +import { BaseAdapter, HttpStatus, ResponseContent } from '@/ai_adapters/base.ts' +import { filteredContentSchema } from '@/types.ts' export class GeminiAdapter implements BaseAdapter { private readonly _apiKey: string @@ -11,6 +12,7 @@ export class GeminiAdapter implements BaseAdapter { constructor() { this._apiKey = config.GEMINI_API_KEY this._baseUrl = config.BASE_GEMINI_ENDPOINT + this._model = 'gemini-1.5-flash' } /** @@ -22,9 +24,44 @@ export class GeminiAdapter implements BaseAdapter { reject(new Error('Text is required')) } - resolve({ - text: 'Hello, world!', - }) + const urlJoiner = R.join('/') + const request = new Request( + urlJoiner( + [ + this._baseUrl, + 'models', + `${this._model}:generateContent`, + ], + ), + { + method: 'post', + headers: { + 'content-type': 'application/json', + 'x-goog-api-key': this._apiKey, + }, + body: JSON.stringify( + this.buildBody(input), + ), + }, + ) + + fetch(request) + .then((response) => { + if (response.status !== HttpStatus.OK) { + console.error(R.prop('statusText')(response)) + reject(new Error('Failed to generate content')) + } else { + response.json().then((data) => { + const parsedData = filteredContentSchema.parse(data) + + resolve( + R.path( + ['candidates', 0, 'content', 'parts', 0], + )(parsedData), + ) + }) + } + }) }) } diff --git a/src/config.ts b/src/config.ts index 8dce2b4..cf4c01e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -7,7 +7,7 @@ const envSchema = z.object({ APP_ENV: z.enum(['development', 'test', 'production']).default('development'), GEMINI_API_KEY: z.string().default('dummy'), BASE_GEMINI_ENDPOINT: z.string().default( - 'https://generativelanguage.googleapis.com/v1/', + 'https://generativelanguage.googleapis.com/v1', ), }) From 714078aa7c52d520ecfb0a4b011a08f5a6fb7bd9 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 13 Jul 2024 01:59:03 +0200 Subject: [PATCH 108/152] style: remove unused no-explicit-any in spec --- src/__tests__/ai_adapters/gemini.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/__tests__/ai_adapters/gemini.spec.ts b/src/__tests__/ai_adapters/gemini.spec.ts index cde4880..d70efbf 100644 --- a/src/__tests__/ai_adapters/gemini.spec.ts +++ b/src/__tests__/ai_adapters/gemini.spec.ts @@ -1,4 +1,3 @@ -// deno-lint-ignore-file no-explicit-any import { GeminiAdapter } from '@/ai_adapters/gemini.ts' import { assertEquals, From 414865d6862647e12453f4c9b379dc7b5bf8d63f Mon Sep 17 00:00:00 2001 From: devsheva Date: Sun, 14 Jul 2024 00:18:28 +0200 Subject: [PATCH 109/152] chore(analysis): bulk retrieve top stories as items with parallel requests --- src/__tests__/analysis.spec.ts | 32 +++++++++++++++++++++++++++++++- src/analysis.ts | 21 +++++++++++++++++++++ src/analysis/analysis.ts | 0 src/analysis/mod.ts | 1 - src/config.ts | 2 +- 5 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 src/analysis.ts delete mode 100644 src/analysis/analysis.ts delete mode 100644 src/analysis/mod.ts diff --git a/src/__tests__/analysis.spec.ts b/src/__tests__/analysis.spec.ts index 6dd5c19..3ed57d2 100644 --- a/src/__tests__/analysis.spec.ts +++ b/src/__tests__/analysis.spec.ts @@ -4,6 +4,36 @@ describe('filterStories', () => { it('filters stories by preferences', () => { const preferences = ['TypeScript', 'AWS', 'Deno'] - filterStories(preferences) +describe('bulkRetrieveItems', () => { + describe('no items', () => { + it('returns an empty array', async () => { + assertEquals(await bulkRetrieveItems([]), []) + }) + }) + + it('retrieves items in bulk', async () => { + const fakeItems = R.times( + (id: number) => + Promise.resolve( + new Response( + JSON.stringify(id), + { status: 200 }, + ), + ), + 3, + ) + + using _fetchStub = stub( + globalThis, + 'fetch', + returnsNext(fakeItems), + ) + + const ids = [1, 2, 3] + const result = await bulkRetrieveItems(ids) + + assertType>(true) + assertEquals(result.length, ids.length) + assertEquals(result, []) }) }) diff --git a/src/analysis.ts b/src/analysis.ts new file mode 100644 index 0000000..2eae262 --- /dev/null +++ b/src/analysis.ts @@ -0,0 +1,21 @@ +export async function bulkRetrieveItems(ids: number[]): Promise { + if (R.isEmpty(ids)) { + console.warn('No ids provided') + return [] + } + + const urlJoiner = R.join('/') + const fetchItem = async (id: number) => { + const response = await fetch( + urlJoiner([config.HN_API, 'item', `${id}.json`]), + ) + + const data = await response.json() + return data + } + + const promises = R.map(fetchItem, ids) + const items = R.flatten(await Promise.all(promises)) + + return R.flatten(items) +} diff --git a/src/analysis/analysis.ts b/src/analysis/analysis.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/analysis/mod.ts b/src/analysis/mod.ts deleted file mode 100644 index 4320785..0000000 --- a/src/analysis/mod.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './analysis.ts' diff --git a/src/config.ts b/src/config.ts index cf4c01e..d1f656e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -2,7 +2,7 @@ import { R, z } from '@/deps.ts' import { load } from '@std/dotenv' const envSchema = z.object({ - HN_API: z.string().default('https://hacker-news.firebaseio.com/v0/'), + HN_API: z.string().default('https://hacker-news.firebaseio.com/v0'), BOT_TOKEN: z.string().default('dummy'), APP_ENV: z.enum(['development', 'test', 'production']).default('development'), GEMINI_API_KEY: z.string().default('dummy'), From 8083c19b322533b8f5cb1cf651465e3009cd0547 Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 15 Jul 2024 21:09:51 +0200 Subject: [PATCH 110/152] test(analysis): add promisify factory with item mocks --- src/__tests__/analysis.spec.ts | 18 +++++++++--------- src/analysis.ts | 12 +----------- src/dev_deps.ts | 2 +- src/utils/test_helpers.ts | 9 +++++++++ 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/__tests__/analysis.spec.ts b/src/__tests__/analysis.spec.ts index 3ed57d2..6b69ea7 100644 --- a/src/__tests__/analysis.spec.ts +++ b/src/__tests__/analysis.spec.ts @@ -13,20 +13,20 @@ describe('bulkRetrieveItems', () => { it('retrieves items in bulk', async () => { const fakeItems = R.times( - (id: number) => - Promise.resolve( - new Response( - JSON.stringify(id), - { status: 200 }, - ), - ), + (id: number) => ({ + id, + type: 'story', + by: faker.person.fullName(), + title: faker.lorem.sentence(), + time: faker.date.recent().getTime(), + } as Item), 3, ) using _fetchStub = stub( globalThis, 'fetch', - returnsNext(fakeItems), + returnsNext(R.map(promisifyFactoryObj, fakeItems)), ) const ids = [1, 2, 3] @@ -34,6 +34,6 @@ describe('bulkRetrieveItems', () => { assertType>(true) assertEquals(result.length, ids.length) - assertEquals(result, []) + assertEquals(result, fakeItems) }) }) diff --git a/src/analysis.ts b/src/analysis.ts index 2eae262..0abcf0b 100644 --- a/src/analysis.ts +++ b/src/analysis.ts @@ -4,17 +4,7 @@ export async function bulkRetrieveItems(ids: number[]): Promise { return [] } - const urlJoiner = R.join('/') - const fetchItem = async (id: number) => { - const response = await fetch( - urlJoiner([config.HN_API, 'item', `${id}.json`]), - ) - - const data = await response.json() - return data - } - - const promises = R.map(fetchItem, ids) + const promises = R.map(getItem, ids) const items = R.flatten(await Promise.all(promises)) return R.flatten(items) diff --git a/src/dev_deps.ts b/src/dev_deps.ts index 967b5fe..c69f806 100644 --- a/src/dev_deps.ts +++ b/src/dev_deps.ts @@ -1,4 +1,4 @@ -export { faker } from 'https://esm.sh/@faker-js/faker@8.4.1' +export { faker, simpleFaker } from 'https://esm.sh/@faker-js/faker@8.4.1' export * from '@std/testing/bdd' export * from '@std/assert' export * from '@std/testing/mock' diff --git a/src/utils/test_helpers.ts b/src/utils/test_helpers.ts index a4c0e13..bed13eb 100644 --- a/src/utils/test_helpers.ts +++ b/src/utils/test_helpers.ts @@ -107,3 +107,12 @@ export const testSetupConversation = async ( return results } + +export function promisifyFactoryObj( + obj: TFactory, + status = 200, +): Promise { + return Promise.resolve( + new Response(JSON.stringify(obj), { status }), + ) +} From 2533cb7f0e6035c7a289c9ec09cb485371880cbc Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 15 Jul 2024 21:15:26 +0200 Subject: [PATCH 111/152] chore(analysis): add error tests todo for __bulkRetrieveItems__ --- src/__tests__/analysis.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/__tests__/analysis.spec.ts b/src/__tests__/analysis.spec.ts index 6b69ea7..8f47762 100644 --- a/src/__tests__/analysis.spec.ts +++ b/src/__tests__/analysis.spec.ts @@ -36,4 +36,6 @@ describe('bulkRetrieveItems', () => { assertEquals(result.length, ids.length) assertEquals(result, fakeItems) }) + + // TODO: add error handling tests }) From 2ae4af0c7d281f78f8daaba5e17892fe109bcab1 Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 15 Jul 2024 22:26:24 +0200 Subject: [PATCH 112/152] docs: fix typo on README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a9e7937..84aa991 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ deno leaks due to sanitizers. ### Tips -Use `setMyCommands` on deployment, or configure it directly with **@BotFather** +Use `setMyCommands` on deployment, or configure it directly with **@BotFather**. This project is made by mainly following BDD principles, so you should stick to it, you won't regret. ## Deployment From 676e086ebe0a829a3a3e65ec9ba077c97ccd0fcd Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 16 Jul 2024 21:48:30 +0200 Subject: [PATCH 113/152] docs: removed setMyCommands tip since an issue has been opened for it(#13) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 84aa991..4ffc93f 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,6 @@ deno leaks due to sanitizers. ### Tips -Use `setMyCommands` on deployment, or configure it directly with **@BotFather**. This project is made by mainly following BDD principles, so you should stick to it, you won't regret. ## Deployment From 3a79384ac047bc10ed1da25954699d7cf3a70b08 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 18 Jul 2024 00:43:05 +0200 Subject: [PATCH 114/152] feat(gemini-adapter): replace with v1beta API and add responseMimeType on config --- src/__tests__/ai_adapters/gemini.spec.ts | 3 +++ src/ai_adapters/gemini.ts | 17 +++++++++++------ src/config.ts | 2 +- src/types.ts | 15 +++++++++++++++ 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/__tests__/ai_adapters/gemini.spec.ts b/src/__tests__/ai_adapters/gemini.spec.ts index d70efbf..02e7487 100644 --- a/src/__tests__/ai_adapters/gemini.spec.ts +++ b/src/__tests__/ai_adapters/gemini.spec.ts @@ -48,6 +48,9 @@ describe('GeminiAdapter', () => { }], }, ], + generationConfig: { + responseMimeType: 'application/json', + }, }) assertType>(true) diff --git a/src/ai_adapters/gemini.ts b/src/ai_adapters/gemini.ts index 37d3ef5..e258dac 100644 --- a/src/ai_adapters/gemini.ts +++ b/src/ai_adapters/gemini.ts @@ -36,7 +36,7 @@ export class GeminiAdapter implements BaseAdapter { { method: 'post', headers: { - 'content-type': 'application/json', + 'Content-Type': 'application/json', 'x-goog-api-key': this._apiKey, }, body: JSON.stringify( @@ -73,11 +73,16 @@ export class GeminiAdapter implements BaseAdapter { throw new Error('Text is required') } - const body: RequestContent = R.assocPath( - ['contents', 0, 'parts', 0, 'text'], - input, - {}, - ) + const body: RequestContent = R.pipe( + R.assocPath( + ['contents', 0, 'parts', 0, 'text'], + input, + ), + R.assocPath( + ['generationConfig', 'responseMimeType'], + 'application/json', + ), + )({}) return body } diff --git a/src/config.ts b/src/config.ts index d1f656e..4481353 100644 --- a/src/config.ts +++ b/src/config.ts @@ -7,7 +7,7 @@ const envSchema = z.object({ APP_ENV: z.enum(['development', 'test', 'production']).default('development'), GEMINI_API_KEY: z.string().default('dummy'), BASE_GEMINI_ENDPOINT: z.string().default( - 'https://generativelanguage.googleapis.com/v1', + 'https://generativelanguage.googleapis.com/v1beta', ), }) diff --git a/src/types.ts b/src/types.ts index bd90e38..ac8ecd5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -94,8 +94,23 @@ const contentSchema = z.object({ ]).optional(), }) +const generationConfigSchema = z.object({ + stopSequences: z.array(z.string()).optional(), + candidateCount: z.number().int().optional(), + maxOutputTokens: z.number().int().optional(), + temperature: z.number().int().optional(), + topP: z.number().int().optional(), + responseMimeType: z.enum([ + 'application/json', + 'text/plain', + ]).optional().default('application/json'), + responseSchema: z.object({}).optional(), + topK: z.number().int().optional(), +}) + const requestContentSchema = z.object({ contents: z.array(contentSchema), + generationConfig: generationConfigSchema, }) export type RequestContent = z.infer From b9045b7bf312b48c283d30eb9d2668bbbf870ec8 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 18 Jul 2024 00:56:17 +0200 Subject: [PATCH 115/152] feat(gemini-adapter): add responseSchema for storyIds --- src/__tests__/ai_adapters/gemini.spec.ts | 3 ++- src/ai_adapters/gemini.ts | 6 +++++- src/types.ts | 12 ++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/__tests__/ai_adapters/gemini.spec.ts b/src/__tests__/ai_adapters/gemini.spec.ts index 02e7487..3932799 100644 --- a/src/__tests__/ai_adapters/gemini.spec.ts +++ b/src/__tests__/ai_adapters/gemini.spec.ts @@ -12,7 +12,7 @@ import { it, stub, } from '@/dev_deps.ts' -import { RequestContent } from '@/types.ts' +import { RequestContent, responseSchema } from '@/types.ts' import { ResponseContent } from '@/ai_adapters/base.ts' describe('GeminiAdapter', () => { @@ -50,6 +50,7 @@ describe('GeminiAdapter', () => { ], generationConfig: { responseMimeType: 'application/json', + responseSchema, }, }) diff --git a/src/ai_adapters/gemini.ts b/src/ai_adapters/gemini.ts index e258dac..a1f04a1 100644 --- a/src/ai_adapters/gemini.ts +++ b/src/ai_adapters/gemini.ts @@ -1,6 +1,6 @@ import { config } from '@/config.ts' import { R } from '@/deps.ts' -import { RequestContent } from '@/types.ts' +import { RequestContent, responseSchema } from '@/types.ts' import { BaseAdapter, HttpStatus, ResponseContent } from '@/ai_adapters/base.ts' import { filteredContentSchema } from '@/types.ts' @@ -82,6 +82,10 @@ export class GeminiAdapter implements BaseAdapter { ['generationConfig', 'responseMimeType'], 'application/json', ), + R.assocPath( + ['generationConfig', 'responseSchema'], + responseSchema, + ), )({}) return body diff --git a/src/types.ts b/src/types.ts index ac8ecd5..5b24beb 100644 --- a/src/types.ts +++ b/src/types.ts @@ -108,6 +108,18 @@ const generationConfigSchema = z.object({ topK: z.number().int().optional(), }) +export const responseSchema = { + type: 'object', + properties: { + storyIds: { + type: 'array', + items: { + type: 'number', + }, + }, + }, +} + const requestContentSchema = z.object({ contents: z.array(contentSchema), generationConfig: generationConfigSchema, From d2f28454ce404f73c9308f27d8746add68f65855 Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 19 Jul 2024 00:12:08 +0200 Subject: [PATCH 116/152] chore(utils): add mapIndexed fn --- src/functions.ts | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/functions.ts diff --git a/src/functions.ts b/src/functions.ts new file mode 100644 index 0000000..5324ac0 --- /dev/null +++ b/src/functions.ts @@ -0,0 +1,3 @@ +import { R } from '@/deps.ts' + +export const mapIndexed = R.addIndex(R.map) From f019d535a260a047b6439625df4fa6b012ac05fc Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 19 Jul 2024 00:12:57 +0200 Subject: [PATCH 117/152] feat(analysis): respond with filtered story titles based on user preferences --- src/__tests__/analysis.spec.ts | 101 ++++++++++++++++++++++++++++++++- src/analysis.ts | 51 +++++++++++++++++ src/types.ts | 1 - 3 files changed, 150 insertions(+), 3 deletions(-) diff --git a/src/__tests__/analysis.spec.ts b/src/__tests__/analysis.spec.ts index 8f47762..6aaeb39 100644 --- a/src/__tests__/analysis.spec.ts +++ b/src/__tests__/analysis.spec.ts @@ -1,9 +1,106 @@ -import { describe, it } from '@/dev_deps.ts' +import { + afterEach, + assertEquals, + assertType, + beforeEach, + describe, + faker, + IsExact, + it, + restore, + returnsNext, + simpleFaker, + stub, +} from '@/dev_deps.ts' +import { bulkRetrieveItems, filterStories } from '@/analysis.ts' +import { Item, TopStories } from '@/types.ts' +import { R } from '@/deps.ts' +import { promisifyFactoryObj } from '@/utils/test_helpers.ts' +import * as F from '@/functions.ts' describe('filterStories', () => { - it('filters stories by preferences', () => { + beforeEach(() => { + // Mock the getTopStories function + const fakeTopStories = simpleFaker.helpers.multiple( + simpleFaker.number.int, + { + count: 3, + }, + ) + + const fakeStoryTitles = [ + 'Watch out this new AWS Service: Deno on TypeScript', + 'Deno vs Node: A Comprehensive Comparison', + 'My journey to become a lazy developer', + ] + + // Mock getItem function + const fakeItems = F.mapIndexed( + (id: number, idx: number) => ({ + id, + type: 'story', + by: faker.person.fullName(), + title: fakeStoryTitles[idx], + time: faker.date.recent().getTime(), + } as Item), + fakeTopStories, + ) + + const fakeGeminiResponse = { + candidates: [ + { + content: { + parts: [ + { + text: R.pipe( + R.take(2), + R.map(R.toString), + R.assoc('storyIds', R.__, {}), + (v: any) => JSON.stringify(v), + )(fakeTopStories), + }, + ], + }, + safetyRatings: [], + }, + ], + } + + stub( + globalThis, + 'fetch', + returnsNext([ + promisifyFactoryObj(fakeTopStories), + ...R.map(promisifyFactoryObj, fakeItems), + promisifyFactoryObj(fakeGeminiResponse), + ]), + ) + }) + + afterEach(() => { + restore() + }) + + it('does nothing when no preferences are provided', async () => { + const preferences: string[] = [] + const result = await filterStories(preferences) + assertEquals(result, []) + }) + + it('filters stories by preferences', async () => { const preferences = ['TypeScript', 'AWS', 'Deno'] + const filteredStories = await filterStories(preferences) + assertEquals( + filteredStories, + [ + 'Watch out this new AWS Service: Deno on TypeScript', + 'Deno vs Node: A Comprehensive Comparison', + ], + ) + }) +}) + describe('bulkRetrieveItems', () => { describe('no items', () => { it('returns an empty array', async () => { diff --git a/src/analysis.ts b/src/analysis.ts index 0abcf0b..b02654b 100644 --- a/src/analysis.ts +++ b/src/analysis.ts @@ -1,3 +1,54 @@ +import { R } from '@/deps.ts' +import { getItem, getTopStories } from '@/api.ts' +import { Item } from '@/types.ts' +import { GeminiAdapter } from '@/ai_adapters/mod.ts' + +const baseInput: string = ` + Filter the following HackerNews stories by the provided preferences and return only the list of corresponding ids in an array format: +` +function generateInput(preferences: string[], titles: string[]): string { + return ` + ${baseInput} + Preferences: ${preferences.join(', ')} + Titles: ${titles.join(', ')} + ` +} + +export async function filterStories(preferences: string[]): Promise { + if (R.isEmpty(preferences)) { + console.warn('No preferences provided') + return [] + } + + const topStories = await getTopStories() + const items = await bulkRetrieveItems(topStories) + + const adapter = new GeminiAdapter() + const idTitlePairs = R.map( + (item: Item) => R.pair(item!.id, item!.title), + )(items) + const input = generateInput( + preferences, + idTitlePairs, + ) + + const { text } = await adapter.generateContent(input) + + const filteredIds = R.pipe( + (text: string) => JSON.parse(text), + R.prop('storyIds'), + R.map(Number), + )(text) + + const filteredTitles = R.pluck('title')(R.innerJoin( + (item: NonNullable, id: number) => item.id === id, + items, + filteredIds, + )) + + return filteredTitles +} + export async function bulkRetrieveItems(ids: number[]): Promise { if (R.isEmpty(ids)) { console.warn('No ids provided') diff --git a/src/types.ts b/src/types.ts index 5b24beb..bef1d65 100644 --- a/src/types.ts +++ b/src/types.ts @@ -119,7 +119,6 @@ export const responseSchema = { }, }, } - const requestContentSchema = z.object({ contents: z.array(contentSchema), generationConfig: generationConfigSchema, From 8d7917df15e399f45177ad545ff169b95f8e4459 Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 22 Jul 2024 23:20:43 +0200 Subject: [PATCH 118/152] feat: add supabase as storage for preferences --- README.md | 2 +- deno.jsonc | 8 +++----- deno.lock | 29 +++++++++++++++++++++++++++-- src/bot.ts | 3 +-- src/config.ts | 2 ++ src/deps.ts | 3 ++- src/utils.ts | 16 +++++++++++++--- 7 files changed, 49 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a9e7937..d74ed1f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Put all tests under this [folder](src/__tests__) and run `deno task test`, which > Note: this is a temporary workaround until conversations plugin is fixed -When running tests on a composer that involves conversation, always add `await new Promise(r => setTimeout(r, 0))`, so it doesn't lead to +When running tests on a composer that involves conversation, always add `await new Promise(r => setTimeout(r, 0))`, so it doesn't lead to deno leaks due to sanitizers. ### Tips diff --git a/deno.jsonc b/deno.jsonc index 423830b..4675b8f 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -3,9 +3,9 @@ "@/": "./src/", "@bot/": "./src/bot/", "@std/assert": "jsr:@std/assert@^0.226.0", + "@std/cli": "https://deno.land/std@0.224.0/cli/mod.ts", "@std/dotenv": "jsr:@std/dotenv@^0.224.2", - "@std/testing": "jsr:@std/testing@^0.225.3", - "@std/cli": "https://deno.land/std@0.224.0/cli/mod.ts" + "@std/testing": "jsr:@std/testing@^0.225.3" }, "fmt": { "lineWidth": 80, @@ -20,9 +20,7 @@ "test": "APP_ENV=test BOT_TOKEN=dummy deno test -A --parallel -- --test" }, "test": { - "include": [ - "src/**/*.spec.ts" - ] + "include": ["src/**/*.spec.ts"] }, "exclude": ["dist", "node_modules"], "compilerOptions": { diff --git a/deno.lock b/deno.lock index b5e4d5d..e258d75 100644 --- a/deno.lock +++ b/deno.lock @@ -59,6 +59,9 @@ "https://cdn.skypack.dev/-/debug@v4.3.4-o4liVvMlOnQWbLSYZMXw/dist=es2019,mode=imports/optimized/debug.js": "671100993996e39b501301a87000607916d4d2d9f8fc8e9c5200ae5ba64a1389", "https://cdn.skypack.dev/-/ms@v2.1.2-giBDZ1IA5lmQ3ZXaa87V/dist=es2019,mode=imports/optimized/ms.js": "fd88e2d51900437011f1ad232f3393ce97db1b87a7844b3c58dd6d65562c1276", "https://cdn.skypack.dev/debug@4.3.4": "7b1d010cc930f71b940ba5941da055bc181115229e29de7214bdb4425c68ea76", + "https://deno.land/std@0.150.0/media_types/_util.ts": "ce9b4fc4ba1c447dafab619055e20fd88236ca6bdd7834a21f98bd193c3fbfa1", + "https://deno.land/std@0.150.0/media_types/mod.ts": "2d4b6f32a087029272dc59e0a55ae3cc4d1b27b794ccf528e94b1925795b3118", + "https://deno.land/std@0.150.0/media_types/vendor/mime-db.v1.52.0.ts": "724cee25fa40f1a52d3937d6b4fbbfdd7791ff55e1b7ac08d9319d5632c7f5af", "https://deno.land/std@0.211.0/path/_common/assert_path.ts": "2ca275f36ac1788b2acb60fb2b79cb06027198bc2ba6fb7e163efaedde98c297", "https://deno.land/std@0.211.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", "https://deno.land/std@0.211.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", @@ -93,8 +96,8 @@ "https://deno.land/x/grammy_conversations@v1.2.0/form.ts": "d2d527fdcb26eb489b4aa1a183ae3aa14bf185a375ebf7d5c6ab8360e8b0e170", "https://deno.land/x/grammy_conversations@v1.2.0/mod.ts": "4234b7a353ebb6770352c8b1fcafb0de40abd764cc44ae018f10b29c3a065b50", "https://deno.land/x/grammy_conversations@v1.2.0/utils.ts": "139ebe78dbf078d3bbf8cbc78ad286125a08e7e7895d4985fff7be9cef328e20", - "https://deno.land/x/grammy_storages@v2.4.2/free/src/adapter.ts": "0a85a6363b12dd0f6d79d1ca469eb7677082050c2e60592441f929f95621dc0d", - "https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts": "6485c5bf548fc73446f54f397660a59ffcaf0bcc465b6050c2c762848c2c0ba5", + "https://deno.land/x/grammy_storages@v2.4.2/supabase/src/deps.deno.ts": "74b945bf5c1ade714a1e8de482d752bc952db909f8cffdcceb290d2d74aada3a", + "https://deno.land/x/grammy_storages@v2.4.2/supabase/src/mod.ts": "dd28166e9cb8f93dcd67e0732df91753f60ce18da35b13299c3d7467a7d7aad3", "https://deno.land/x/grammy_types@v3.11.0/api.ts": "ae04d6628e3d25ae805bc07a19475065044fc44cde0a40877405bc3544d03a5f", "https://deno.land/x/grammy_types@v3.11.0/inline.ts": "9bc165676a2bb984525adf2c457cdf5f432016b25c3d399dceedfeaf638dbf29", "https://deno.land/x/grammy_types@v3.11.0/langs.ts": "5f5fd09c58ba3ae942dd7cea2696f95587d2032c1829bba4bca81762b7ef73b6", @@ -110,6 +113,7 @@ "https://deno.land/x/oson@1.0.1/constructors.ts": "2b77dcdc8d8db5ece2860d1657f4dcef37dd761684f1d4b9535c7e56a0fbfcf6", "https://deno.land/x/oson@1.0.1/mod.ts": "54e494dc517ce0de6c727c25d9731ccc748e8646c883e922dc5d656f523a4e5b", "https://deno.land/x/oson@1.0.1/oson.ts": "ec3908ae5c9ceff7bfd869d95a2183b929b9d96fbff44b57d28d3b742d06a4a1", + "https://deno.land/x/xhr@0.3.0/mod.ts": "094aacd627fd9635cd942053bf8032b5223b909858fa9dc8ffa583752ff63b20", "https://deno.land/x/zod@v3.23.8/ZodError.ts": "528da200fbe995157b9ae91498b103c4ef482217a5c086249507ac850bd78f52", "https://deno.land/x/zod@v3.23.8/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", "https://deno.land/x/zod@v3.23.8/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", @@ -124,7 +128,28 @@ "https://deno.land/x/zod@v3.23.8/mod.ts": "ec6e2b1255c1a350b80188f97bd0a6bac45801bb46fc48f50b9763aa66046039", "https://deno.land/x/zod@v3.23.8/types.ts": "1b172c90782b1eaa837100ebb6abd726d79d6c1ec336350c8e851e0fd706bf5c", "https://esm.sh/@faker-js/faker@8.4.1": "21d589a68f956f90bcf4031bc6f26f5a5c531ca4bd798e16ec33094ea6560bce", + "https://esm.sh/@supabase/supabase-js@2.33.1": "b9e0e18dfb0bfd1078c05be3474a710abf913ddc5b47bcb92317fabc4c5445e0", "https://esm.sh/v135/@faker-js/faker@8.4.1/denonext/faker.mjs": "bf2af6fc7f2660f80df3c0fda1185082478ef84a73b1aa27ea761977f6fd8426", + "https://esm.sh/v135/@supabase/functions-js@2.1.5/denonext/functions-js.mjs": "739affd2df20c1affd91991c3731c2537d270b82be5cdbd926c43be40eb2fdc5", + "https://esm.sh/v135/@supabase/functions-js@2.3.1/denonext/functions-js.mjs": "c10a0bbd935fc12cae58918b8e23cb339d54c443983caeb597dd8cd76a76f940", + "https://esm.sh/v135/@supabase/gotrue-js@2.57.0/denonext/gotrue-js.mjs": "a4e6768643628fc5445683f4f58090ea5b65c51c3abb165dc0a385cf8eae2121", + "https://esm.sh/v135/@supabase/gotrue-js@2.62.2/denonext/gotrue-js.mjs": "326e26884bb2e359f192078b8c602a2e0acdc754767a274fe1df844319a8d319", + "https://esm.sh/v135/@supabase/node-fetch@2.6.14/denonext/node-fetch.mjs": "23a71af3512da67a8757ab1e2356fa22565758444ea1fc08e0de0e8d4625e8aa", + "https://esm.sh/v135/@supabase/node-fetch@2.6.15/denonext/node-fetch.mjs": "efad00ea3d4cbe1bee688836ef75339d49a1981bc5728a13e9ad5f26791d5efb", + "https://esm.sh/v135/@supabase/postgrest-js@1.15.2/denonext/postgrest-js.mjs": "1d36cf3106c6dd6ce21473b57d88478802ceef6d22e67af1f92c508607302e50", + "https://esm.sh/v135/@supabase/postgrest-js@1.9.0/denonext/postgrest-js.mjs": "e6239e65dca3c73527af617ee406934dc509a33e4082a9da9c3aa6c430519cdf", + "https://esm.sh/v135/@supabase/realtime-js@2.8.4/denonext/realtime-js.mjs": "9f8af6f82b095b1b1d336a92c4ff8519a5b7f783a1e09eab005114b983cafd5d", + "https://esm.sh/v135/@supabase/realtime-js@2.9.4/denonext/realtime-js.mjs": "5a4443e535c1ef8c469c281442a976f47735b3ee378c9e6d8b9a379c56b2f852", + "https://esm.sh/v135/@supabase/storage-js@2.5.4/denonext/storage-js.mjs": "dff68679fb795ec7e157b8f51cb0b8c544d6c3d57ecc093f5b15eb909439efcd", + "https://esm.sh/v135/@supabase/storage-js@2.5.5/denonext/storage-js.mjs": "66e29e4e55c7d396503e2d1d9376cfbc34f046b962bce4524c2d80b209fff413", + "https://esm.sh/v135/@supabase/supabase-js@2.33.1/denonext/supabase-js.mjs": "0f38b8a15b66220153ba6633bd54c26f9416e161fbb9a4fb8841f06946099aa9", + "https://esm.sh/v135/bufferutil@4.0.8/denonext/bufferutil.mjs": "60a4618cbd1a5cb24935c55590b793d4ecb33862357d32e1d4614a0bbb90947f", + "https://esm.sh/v135/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6", + "https://esm.sh/v135/es5-ext@0.10.62/denonext/global.js": "2f51d9acef1f761faaa542da919b3c747744ea29fe709d0a904fd531716a93d6", + "https://esm.sh/v135/node-gyp-build@4.6.1/denonext/node-gyp-build.mjs": "5d28b312f145a6cb2ec0dbdd80a7d34c0e0e6b5dcada65411d8bcff6c8991cc6", + "https://esm.sh/v135/utf-8-validate@6.0.3/denonext/utf-8-validate.mjs": "410c48d66840e987e474a4849cd25829817415cedd25466280effb1287d05aa5", + "https://esm.sh/v135/websocket@1.0.34/denonext/websocket.mjs": "dfe5d62007e9f7430d561e2376fe47caa9d04cb016d83d3386fcc2206a90296b", + "https://esm.sh/v135/ws@8.16.0/denonext/ws.mjs": "0fa0c00b69577ba36d0a36001329b2cec91498cb2e33e329fc76aa6d51a0d54d", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/mod.ts": "14262bdcea26c261f2f6490e733b792af9d3ae3582a4d09ca5bab0479b48ca40", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/F.js": "cf0f5fdb08048909e49bb6f222f6e2f92db8d4dc0dd24900864eaf69c3746e3d", "https://nlx6tduqgy4rmjlytzzg45tqzmhpi3q4zrvdvpepf7p5knxbmfva.arweave.net/au_pjpA2ORYleJ5ybnZwyw70bhzMajq8jy_f1TbhYWo/source/T.js": "f96ac2cdaeedf374fb932a4ec368f0566143f0c2d028919976c41c6ee53c0515", diff --git a/src/bot.ts b/src/bot.ts index 62fb17d..9b15697 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -11,11 +11,10 @@ bot.command( (ctx) => ctx.reply('Bot is under construction. Please wait for the next update.'), ) - bot.use( session({ initial: (): SessionData => ({ preferences: [] }), - storage: getSessionAdapter(config.BOT_TOKEN), + storage: getSessionAdapter(), }), conversations(), ) diff --git a/src/config.ts b/src/config.ts index c622c96..6e6a5d4 100644 --- a/src/config.ts +++ b/src/config.ts @@ -5,6 +5,8 @@ const envSchema = z.object({ HN_API: z.string().default('https://hacker-news.firebaseio.com/v0/'), BOT_TOKEN: z.string().default('dummy'), APP_ENV: z.enum(['development', 'test', 'production']).default('development'), + SUPABASE_URL: z.string().default('dummy'), + SUPABASE_KEY: z.string().default('dummy'), }) try { diff --git a/src/deps.ts b/src/deps.ts index 5835ed1..a54b329 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -2,5 +2,6 @@ export * as R from 'https://x.nest.land/ramda@0.27.2/mod.ts' export * from 'https://deno.land/x/grammy@v1.27.0/mod.ts' export * from 'https://deno.land/x/grammy_types@v3.11.0/mod.ts' export * from 'https://deno.land/x/grammy_conversations@v1.2.0/mod.ts' -export * from 'https://deno.land/x/grammy_storages@v2.4.2/free/src/mod.ts' +export * from 'https://deno.land/x/grammy_storages@v2.4.2/supabase/src/mod.ts' export { z } from 'https://deno.land/x/zod@v3.23.8/mod.ts' +export { createClient } from 'https://esm.sh/@supabase/supabase-js@2.33.1' diff --git a/src/utils.ts b/src/utils.ts index 2536d89..4cdea72 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,10 +1,20 @@ -import { freeStorage, MemorySessionStorage, R } from '@/deps.ts' +import { + createClient, + MemorySessionStorage, + R, + supabaseAdapter, +} from '@/deps.ts' import { SessionData } from '@/types.ts' import { config } from '@/config.ts' -export const getSessionAdapter = (token?: string) => +const supabase = createClient(config.SUPABASE_URL, config.SUPABASE_KEY) + +export const getSessionAdapter = () => R.ifElse( R.equals('test'), R.always(new MemorySessionStorage()), - R.always(freeStorage(token!)), + R.always(supabaseAdapter({ + supabase, + table: 'sessions', + })), )(config.APP_ENV) From 1c86a2bb18d625f7d3e681db0c122694913ebb1d Mon Sep 17 00:00:00 2001 From: devsheva Date: Mon, 22 Jul 2024 23:21:15 +0200 Subject: [PATCH 119/152] chore: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56986eb..8f05230 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. - Validate Item schema - Deploy workflow - Add changelog +- Add supabase as storage for preferences ### ๐Ÿ› Bug Fixes @@ -51,6 +52,7 @@ All notable changes to this project will be documented in this file. - Move codefactor badge on top - Add deployment section - Update changelog +- Prioritize testing over styling in changelog ### ๐Ÿงช Testing From 8eadd385a7f1cba3fb25ce6ee4a277bf4f73810d Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 24 Jul 2024 22:43:46 +0200 Subject: [PATCH 120/152] chore(supabase): add db types and client connection --- src/database.ts | 126 ++++++++++++++++++++++++++++++++++++++++++++++++ src/types.ts | 2 + src/utils.ts | 8 ++- 3 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 src/database.ts diff --git a/src/database.ts b/src/database.ts new file mode 100644 index 0000000..e346c4f --- /dev/null +++ b/src/database.ts @@ -0,0 +1,126 @@ +export type Json = + | string + | number + | boolean + | null + | { [key: string]: Json | undefined } + | Json[] + +export type Database = { + public: { + Tables: { + sessions: { + Row: { + created_at: string + id: string + session: string | null + } + Insert: { + created_at?: string + id: string + session?: string | null + } + Update: { + created_at?: string + id?: string + session?: string | null + } + Relationships: [] + } + } + Views: { + [_ in never]: never + } + Functions: { + [_ in never]: never + } + Enums: { + [_ in never]: never + } + CompositeTypes: { + [_ in never]: never + } + } +} + +type PublicSchema = Database[Extract] + +export type Tables< + PublicTableNameOrOptions extends + | keyof (PublicSchema['Tables'] & PublicSchema['Views']) + | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof ( + & Database[PublicTableNameOrOptions['schema']]['Tables'] + & Database[PublicTableNameOrOptions['schema']]['Views'] + ) + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } ? ( + & Database[PublicTableNameOrOptions['schema']]['Tables'] + & Database[PublicTableNameOrOptions['schema']]['Views'] + )[TableName] extends { + Row: infer R + } ? R + : never + : PublicTableNameOrOptions extends keyof ( + & PublicSchema['Tables'] + & PublicSchema['Views'] + ) ? ( + & PublicSchema['Tables'] + & PublicSchema['Views'] + )[PublicTableNameOrOptions] extends { + Row: infer R + } ? R + : never + : never + +export type TablesInsert< + PublicTableNameOrOptions extends + | keyof PublicSchema['Tables'] + | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { + Insert: infer I + } ? I + : never + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { + Insert: infer I + } ? I + : never + : never + +export type TablesUpdate< + PublicTableNameOrOptions extends + | keyof PublicSchema['Tables'] + | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { + Update: infer U + } ? U + : never + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { + Update: infer U + } ? U + : never + : never + +export type Enums< + PublicEnumNameOrOptions extends + | keyof PublicSchema['Enums'] + | { schema: keyof Database }, + EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicEnumNameOrOptions['schema']]['Enums'] + : never = never, +> = PublicEnumNameOrOptions extends { schema: keyof Database } + ? Database[PublicEnumNameOrOptions['schema']]['Enums'][EnumName] + : PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] + ? PublicSchema['Enums'][PublicEnumNameOrOptions] + : never diff --git a/src/types.ts b/src/types.ts index bef1d65..ec2058d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -36,6 +36,8 @@ export interface SessionData { preferences: string[] } +export type Preferences = SessionData['preferences'] + export type PreferencesContext = & Context & SessionFlavor diff --git a/src/utils.ts b/src/utils.ts index 4cdea72..4ab5d85 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -6,15 +6,19 @@ import { } from '@/deps.ts' import { SessionData } from '@/types.ts' import { config } from '@/config.ts' +import { Database } from '@/database.ts' -const supabase = createClient(config.SUPABASE_URL, config.SUPABASE_KEY) +export const connection = createClient( + config.SUPABASE_URL, + config.SUPABASE_KEY, +) export const getSessionAdapter = () => R.ifElse( R.equals('test'), R.always(new MemorySessionStorage()), R.always(supabaseAdapter({ - supabase, + supabase: connection, table: 'sessions', })), )(config.APP_ENV) From dfec0c4d0bd2f79be9efda1c32fbe6fea05a9fe0 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 24 Jul 2024 22:52:36 +0200 Subject: [PATCH 121/152] ci: add supabase secrets --- .github/workflows/deploy.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 37fdd8d..65f9802 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,6 +14,8 @@ jobs: env: APP_ENV: test BOT_TOKEN: dummy + SUPABASE_URL: ${{secrets.SUPABASE_URL}} + SUPABASE_KEY: ${{secrets.SUPABASE_KEY}} steps: - name: Setup repo From 9a1869b1174fc2de5d84aec4226ede068040cbc1 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 24 Jul 2024 23:00:25 +0200 Subject: [PATCH 122/152] docs: force env variable setup --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3077c93..dcea27b 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,12 @@ To update the changelog just run `git-cliff -o CHANGELOG.md`. ### Testing -Put all tests under this [folder](src/__tests__) and run `deno task test`, which will run test environment with Deno in watch mode +Put all tests under this [folder](src/__tests__) and run `deno task test`, which will run test environment with Deno in watch mode. + +You must pass at least the following environment variables to make testing work: +- APP_ENV +- SUPABASE_URL +- SUPABASE_KEY > Note: this is a temporary workaround until conversations plugin is fixed From 40091ff6b02dba8c8a3f55f666a4cff35605c445 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 24 Jul 2024 23:01:07 +0200 Subject: [PATCH 123/152] fix(config): restore test task arg when setting env --- src/config.ts | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/config.ts b/src/config.ts index 1729ddb..fc06190 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,23 +1,29 @@ -import { R, z } from "@/deps.ts"; -import { load } from "@std/dotenv"; +import { R, z } from '@/deps.ts' +import { load } from '@std/dotenv' +import { parseArgs } from '@std/cli' const envSchema = z.object({ - HN_API: z.string().default("https://hacker-news.firebaseio.com/v0"), - BOT_TOKEN: z.string().default("dummy"), - APP_ENV: z.enum(["development", "test", "production"]).default("development"), - GEMINI_API_KEY: z.string().default("dummy"), + HN_API: z.string().default('https://hacker-news.firebaseio.com/v0'), + BOT_TOKEN: z.string().default('dummy'), + APP_ENV: z.enum(['development', 'test', 'production']).default('development'), + GEMINI_API_KEY: z.string().default('dummy'), BASE_GEMINI_ENDPOINT: z.string().default( - "https://generativelanguage.googleapis.com/v1beta", + 'https://generativelanguage.googleapis.com/v1beta', ), - SUPABASE_URL: z.string().default("dummy"), - SUPABASE_KEY: z.string().default("dummy"), -}); + SUPABASE_URL: z.string().default('dummy'), + SUPABASE_KEY: z.string().default('dummy'), +}) try { - const env = await load({ export: true }); - if (R.isEmpty(env)) throw new Error("no env file found"); + const env = R.ifElse( + R.propEq('test', true), + R.always({}), + async () => await load(), + )(parseArgs(Deno.args)) + + if (R.isEmpty(env)) throw new Error('no env file found') } catch { - console.warn("no env file found, using environment variables"); + console.warn('no env file found, using environment variables') } -export const config = envSchema.parse(Deno.env.toObject()); +export const config = envSchema.parse(Deno.env.toObject()) From 30f215a8521b8f70b683fa05671f982b02fa334f Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 24 Jul 2024 23:26:00 +0200 Subject: [PATCH 124/152] test(helpers): cleanup database sessions --- deno.jsonc | 2 +- deno.lock | 52 ++++++++++++++++++++++++++++++++++++++- src/utils/test_helpers.ts | 4 +++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/deno.jsonc b/deno.jsonc index 82fc2bc..2da56df 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -18,7 +18,7 @@ "tasks": { "coverage": "rm -rf cov_profile && deno test -A --parallel --coverage=cov_profile -- --test && deno coverage --lcov --output=./coverage.lcov ./cov_profile", "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", - "test": "APP_ENV=test BOT_TOKEN=dummy deno test -A --parallel --watch -- --test" + "test": "deno test -A --parallel --watch -- --test" }, "exclude": ["dist", "node_modules"], "compilerOptions": { diff --git a/deno.lock b/deno.lock index bfd2045..9d892ad 100644 --- a/deno.lock +++ b/deno.lock @@ -2,11 +2,50 @@ "version": "3", "packages": { "specifiers": { - "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2" + "jsr:@std/assert@1.0.0-rc.2": "jsr:@std/assert@1.0.0-rc.2", + "jsr:@std/assert@^0.226.0": "jsr:@std/assert@0.226.0", + "jsr:@std/async@^1.0.0-rc.2": "jsr:@std/async@1.0.0-rc.3", + "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.0-rc.2", + "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", + "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", + "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", + "npm:@types/node": "npm:@types/node@18.16.19" }, "jsr": { + "@std/assert@0.226.0": { + "integrity": "0dfb5f7c7723c18cec118e080fec76ce15b4c31154b15ad2bd74822603ef75b3", + "dependencies": [ + "jsr:@std/internal@^1.0.0" + ] + }, + "@std/assert@1.0.0-rc.2": { + "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3" + }, + "@std/async@1.0.0-rc.3": { + "integrity": "f0f1cb8cca0981c1ed0a5cf1b264bc3f0a44129e53a94be1e80cebeb2817633b" + }, + "@std/data-structures@1.0.0-rc.2": { + "integrity": "f302a70a30a62bdf569830285ae7d37b15d7bd88c1744acceb91a56016f898f8" + }, "@std/dotenv@0.224.2": { "integrity": "29081695357e4534696c9e986b2560be29c141ccf52daa32b6c20ff5b5c64ab9" + }, + "@std/internal@1.0.1": { + "integrity": "6f8c7544d06a11dd256c8d6ba54b11ed870aac6c5aeafff499892662c57673e6" + }, + "@std/testing@0.225.3": { + "integrity": "348c24d0479d44ab3dbb4f26170f242e19f24051b45935d4a9e7ca0ab7e37780", + "dependencies": [ + "jsr:@std/assert@1.0.0-rc.2", + "jsr:@std/async@^1.0.0-rc.2", + "jsr:@std/data-structures@^1.0.0-rc.1" + ] + } + }, + "npm": { + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} } } }, @@ -31,6 +70,15 @@ "https://deno.land/std@0.211.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", "https://deno.land/std@0.211.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", "https://deno.land/std@0.211.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", + "https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834", + "https://deno.land/std@0.224.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917", + "https://deno.land/std@0.224.0/cli/_data.json": "cf2cc9d039a192b3adbfe64627167c7e6212704c888c25c769fc8f1709e1e1b8", + "https://deno.land/std@0.224.0/cli/_run_length.ts": "7da8642a0f4f41ac27c0adb1364e18886be856c1d08c5cce6c6b5c00543c8722", + "https://deno.land/std@0.224.0/cli/mod.ts": "9548eaf4fefac2ab9b02e0f8e4de8a08cac5d24b721a6019452efec172b59de3", + "https://deno.land/std@0.224.0/cli/parse_args.ts": "5250832fb7c544d9111e8a41ad272c016f5a53f975ef84d5a9fe5fcb70566ece", + "https://deno.land/std@0.224.0/cli/prompt_secret.ts": "3b2f95214422226482fba4a00cb25441475b6f97069a6f70f442c1c9a16c744c", + "https://deno.land/std@0.224.0/cli/spinner.ts": "cf873605771270b4324cc063b5031ab250d8efee8799e45e1a3bfdd333ff721d", + "https://deno.land/std@0.224.0/cli/unicode_width.ts": "656dd4271ecc90684b6bf23a5fb8c1cf833da625ef2906b61273ad617038072f", "https://deno.land/x/grammy@v1.27.0/bot.ts": "291fec55778b8ff25112be28ee24ed3d68ea58f8a07e6fe9584953c242564ef3", "https://deno.land/x/grammy@v1.27.0/composer.ts": "e5442ce0dd504661b36ad875a6a1b9ab32c004239ebd1ab3d5aa2976e1902f83", "https://deno.land/x/grammy@v1.27.0/context.ts": "3ae13abed37a3eb1ae76598c9e187c6c37863df2b21c9fb1e27b785b1820c172", @@ -425,7 +473,9 @@ "https://deno.land/x/zod@v3.23.8/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", "https://deno.land/x/zod@v3.23.8/mod.ts": "ec6e2b1255c1a350b80188f97bd0a6bac45801bb46fc48f50b9763aa66046039", "https://deno.land/x/zod@v3.23.8/types.ts": "1b172c90782b1eaa837100ebb6abd726d79d6c1ec336350c8e851e0fd706bf5c", + "https://esm.sh/@faker-js/faker@8.4.1": "21d589a68f956f90bcf4031bc6f26f5a5c531ca4bd798e16ec33094ea6560bce", "https://esm.sh/@supabase/supabase-js@2.33.1": "b9e0e18dfb0bfd1078c05be3474a710abf913ddc5b47bcb92317fabc4c5445e0", + "https://esm.sh/v135/@faker-js/faker@8.4.1/denonext/faker.mjs": "bf2af6fc7f2660f80df3c0fda1185082478ef84a73b1aa27ea761977f6fd8426", "https://esm.sh/v135/@supabase/functions-js@2.1.5/denonext/functions-js.mjs": "739affd2df20c1affd91991c3731c2537d270b82be5cdbd926c43be40eb2fdc5", "https://esm.sh/v135/@supabase/functions-js@2.3.1/denonext/functions-js.mjs": "c10a0bbd935fc12cae58918b8e23cb339d54c443983caeb597dd8cd76a76f940", "https://esm.sh/v135/@supabase/gotrue-js@2.57.0/denonext/gotrue-js.mjs": "a4e6768643628fc5445683f4f58090ea5b65c51c3abb165dc0a385cf8eae2121", diff --git a/src/utils/test_helpers.ts b/src/utils/test_helpers.ts index bed13eb..29d9d55 100644 --- a/src/utils/test_helpers.ts +++ b/src/utils/test_helpers.ts @@ -116,3 +116,7 @@ export function promisifyFactoryObj( new Response(JSON.stringify(obj), { status }), ) } +export async function cleanupDatabase() { + await connection.from('sessions') + .delete().like('id', 'test%') +} From f6f8647ad5a211e917b1423faee4cd7e0d515bdd Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 27 Jul 2024 00:59:50 +0200 Subject: [PATCH 125/152] chore(analysis): get users preferences and seed db --- src/__tests__/bot/daily_analysis.spec.ts | 39 ++++++++++++++++++++++++ src/preference/daily_analysis.ts | 18 +++++++++++ src/utils/test_helpers.ts | 19 ++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 src/__tests__/bot/daily_analysis.spec.ts create mode 100644 src/preference/daily_analysis.ts diff --git a/src/__tests__/bot/daily_analysis.spec.ts b/src/__tests__/bot/daily_analysis.spec.ts new file mode 100644 index 0000000..c61016b --- /dev/null +++ b/src/__tests__/bot/daily_analysis.spec.ts @@ -0,0 +1,39 @@ +import { + afterAll, + assertType, + beforeAll, + describe, + IsExact, + it, +} from '@/dev_deps.ts' +import { cleanupDatabase, seedDatabase } from '@/utils/test_helpers.ts' +import dailyAnalysis, { + getUsersPreferences, +} from '@/preference/daily_analysis.ts' +import { Preferences } from '@/types.ts' + +beforeAll(async () => { + await seedDatabase() +}) + +afterAll(async () => { + await cleanupDatabase() +}) + +describe('dailyAnalysis', () => { + it('should reply with filtered articles', async () => { + // dailyAnalysis() + }) +}) + +describe('getUsersPreferences', () => { + it('should return the user preferences', async () => { + const usersPreferences = await getUsersPreferences() + assertType>(true) + }) + + it('should throw an error if the response is not valid', async () => { + // ... + // FIXME: dunno how to test this + }) +}) diff --git a/src/preference/daily_analysis.ts b/src/preference/daily_analysis.ts new file mode 100644 index 0000000..a2daa79 --- /dev/null +++ b/src/preference/daily_analysis.ts @@ -0,0 +1,18 @@ +import { Preferences } from '@/types.ts' +import { connection } from '@/utils.ts' +import { R } from '@/deps.ts' + +async function getUsersPreferences(): Promise { + const { data, error } = await connection.from('sessions') + .select('id, session') + + R.unless( + R.isNil, + (err: typeof error) => { + console.error(JSON.stringify(err)) + throw new Error('Error fetching user preferences') + }, + )(error) + + return R.groupBy(R.prop('id'), data) +} diff --git a/src/utils/test_helpers.ts b/src/utils/test_helpers.ts index 29d9d55..cb80dbd 100644 --- a/src/utils/test_helpers.ts +++ b/src/utils/test_helpers.ts @@ -15,6 +15,7 @@ import { } from '@/deps.ts' import { faker } from '@/dev_deps.ts' import { PreferencesContext, SessionData } from '@/types.ts' +import { connection } from '@/utils.ts' export interface ApiCall { method: M @@ -116,6 +117,24 @@ export function promisifyFactoryObj( new Response(JSON.stringify(obj), { status }), ) } + +export async function seedDatabase() { + await connection.from('sessions') + .upsert( + R.times( + (id: number) => ({ + id: R.join('_', ['test', id]), + session: JSON.stringify({ + preferences: faker.helpers.multiple(faker.commerce.department, { + count: faker.number.int({ min: 1, max: 5 }), + }), + }), + }), + 10, + ), + ) +} + export async function cleanupDatabase() { await connection.from('sessions') .delete().like('id', 'test%') From b33e5ee934c61fc5e0f7c4dcfcf065af255b88df Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 27 Jul 2024 13:31:33 +0200 Subject: [PATCH 126/152] chore: upgrade deno to 1.45.4 and include unstable cron --- .tool-versions | 2 +- deno.jsonc | 3 ++- deno.lock | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.tool-versions b/.tool-versions index 99f45c7..3026db5 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -deno 1.45.1 +deno 1.45.4 diff --git a/deno.jsonc b/deno.jsonc index 2da56df..b59107e 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -20,9 +20,10 @@ "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", "test": "deno test -A --parallel --watch -- --test" }, + "unstable": ["cron"], "exclude": ["dist", "node_modules"], "compilerOptions": { - "lib": ["deno.window", "DOM", "DOM.Iterable", "ESNext"], + "lib": ["deno.window", "deno.unstable" ], "strict": true, "allowJs": true } diff --git a/deno.lock b/deno.lock index 9d892ad..a869354 100644 --- a/deno.lock +++ b/deno.lock @@ -19,7 +19,10 @@ ] }, "@std/assert@1.0.0-rc.2": { - "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3" + "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3", + "dependencies": [ + "jsr:@std/internal@^1.0.0" + ] }, "@std/async@1.0.0-rc.3": { "integrity": "f0f1cb8cca0981c1ed0a5cf1b264bc3f0a44129e53a94be1e80cebeb2817633b" From 7126de8582d98e87ec091bda10af34ddf6cf65b1 Mon Sep 17 00:00:00 2001 From: devsheva Date: Sat, 27 Jul 2024 20:45:14 +0200 Subject: [PATCH 127/152] fix: correctly type users preferences group --- src/__tests__/analysis.spec.ts | 1 + src/__tests__/bot/daily_analysis.spec.ts | 4 +++- src/preference/daily_analysis.ts | 5 ++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/__tests__/analysis.spec.ts b/src/__tests__/analysis.spec.ts index 6aaeb39..a5b4ec0 100644 --- a/src/__tests__/analysis.spec.ts +++ b/src/__tests__/analysis.spec.ts @@ -1,3 +1,4 @@ +// deno-lint-ignore-file no-explicit-any import { afterEach, assertEquals, diff --git a/src/__tests__/bot/daily_analysis.spec.ts b/src/__tests__/bot/daily_analysis.spec.ts index c61016b..59ff4a7 100644 --- a/src/__tests__/bot/daily_analysis.spec.ts +++ b/src/__tests__/bot/daily_analysis.spec.ts @@ -29,7 +29,9 @@ describe('dailyAnalysis', () => { describe('getUsersPreferences', () => { it('should return the user preferences', async () => { const usersPreferences = await getUsersPreferences() - assertType>(true) + assertType< + IsExact + >(true) }) it('should throw an error if the response is not valid', async () => { diff --git a/src/preference/daily_analysis.ts b/src/preference/daily_analysis.ts index a2daa79..9abb842 100644 --- a/src/preference/daily_analysis.ts +++ b/src/preference/daily_analysis.ts @@ -2,7 +2,10 @@ import { Preferences } from '@/types.ts' import { connection } from '@/utils.ts' import { R } from '@/deps.ts' -async function getUsersPreferences(): Promise { +async function getUsersPreferences(): Promise<{ + id: string + session: string +}[]> { const { data, error } = await connection.from('sessions') .select('id, session') From 55c5d3f00b0a237730b761f087582e126cc9fa14 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:55:25 +0000 Subject: [PATCH 128/152] deno: update imports --- deno.lock | 99 +++++++++++++++++++++++++++-------------------------- src/deps.ts | 6 ++-- 2 files changed, 54 insertions(+), 51 deletions(-) diff --git a/deno.lock b/deno.lock index a869354..875c750 100644 --- a/deno.lock +++ b/deno.lock @@ -4,12 +4,11 @@ "specifiers": { "jsr:@std/assert@1.0.0-rc.2": "jsr:@std/assert@1.0.0-rc.2", "jsr:@std/assert@^0.226.0": "jsr:@std/assert@0.226.0", - "jsr:@std/async@^1.0.0-rc.2": "jsr:@std/async@1.0.0-rc.3", - "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.0-rc.2", + "jsr:@std/async@^1.0.0-rc.2": "jsr:@std/async@1.0.2", + "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.1", "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", - "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", - "npm:@types/node": "npm:@types/node@18.16.19" + "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3" }, "jsr": { "@std/assert@0.226.0": { @@ -24,11 +23,11 @@ "jsr:@std/internal@^1.0.0" ] }, - "@std/async@1.0.0-rc.3": { - "integrity": "f0f1cb8cca0981c1ed0a5cf1b264bc3f0a44129e53a94be1e80cebeb2817633b" + "@std/async@1.0.2": { + "integrity": "36e7f0f922c843b45df546857d269f01ed4d0406aced2a6639eac325b2435e43" }, - "@std/data-structures@1.0.0-rc.2": { - "integrity": "f302a70a30a62bdf569830285ae7d37b15d7bd88c1744acceb91a56016f898f8" + "@std/data-structures@1.0.1": { + "integrity": "e4fa6bcc33839979ac118e2746f349cd7b57c58bd3036b5b82ac608771ee856e" }, "@std/dotenv@0.224.2": { "integrity": "29081695357e4534696c9e986b2560be29c141ccf52daa32b6c20ff5b5c64ab9" @@ -44,17 +43,11 @@ "jsr:@std/data-structures@^1.0.0-rc.1" ] } - }, - "npm": { - "@types/node@18.16.19": { - "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", - "dependencies": {} - } } }, "redirects": { - "https://lib.deno.dev/x/grammy@v1/mod.ts": "https://deno.land/x/grammy@v1.27.0/mod.ts", - "https://lib.deno.dev/x/grammy@v1/types.ts": "https://deno.land/x/grammy@v1.27.0/types.ts" + "https://lib.deno.dev/x/grammy@v1/mod.ts": "https://deno.land/x/grammy@v1.28.0/mod.ts", + "https://lib.deno.dev/x/grammy@v1/types.ts": "https://deno.land/x/grammy@v1.28.0/types.ts" }, "remote": { "https://cdn.skypack.dev/-/debug@v4.3.4-o4liVvMlOnQWbLSYZMXw/dist=es2019,mode=imports/optimized/debug.js": "671100993996e39b501301a87000607916d4d2d9f8fc8e9c5200ae5ba64a1389", @@ -82,25 +75,25 @@ "https://deno.land/std@0.224.0/cli/prompt_secret.ts": "3b2f95214422226482fba4a00cb25441475b6f97069a6f70f442c1c9a16c744c", "https://deno.land/std@0.224.0/cli/spinner.ts": "cf873605771270b4324cc063b5031ab250d8efee8799e45e1a3bfdd333ff721d", "https://deno.land/std@0.224.0/cli/unicode_width.ts": "656dd4271ecc90684b6bf23a5fb8c1cf833da625ef2906b61273ad617038072f", - "https://deno.land/x/grammy@v1.27.0/bot.ts": "291fec55778b8ff25112be28ee24ed3d68ea58f8a07e6fe9584953c242564ef3", - "https://deno.land/x/grammy@v1.27.0/composer.ts": "e5442ce0dd504661b36ad875a6a1b9ab32c004239ebd1ab3d5aa2976e1902f83", - "https://deno.land/x/grammy@v1.27.0/context.ts": "3ae13abed37a3eb1ae76598c9e187c6c37863df2b21c9fb1e27b785b1820c172", - "https://deno.land/x/grammy@v1.27.0/convenience/constants.ts": "1560129784be52f49aa0bea8716f09ed00dac367fef195be6a2c09bdfc43fb99", - "https://deno.land/x/grammy@v1.27.0/convenience/frameworks.ts": "69f343980c349f9552a022ae732b3d5de0894013df0fd304b4ad29bd62425dc1", - "https://deno.land/x/grammy@v1.27.0/convenience/inline_query.ts": "409d1940c7670708064efa495003bcbfdf6763a756b2e6303c464489fd3394ff", - "https://deno.land/x/grammy@v1.27.0/convenience/input_media.ts": "7af72a5fdb1af0417e31b1327003f536ddfdf64e06ab8bc7f5da6b574de38658", - "https://deno.land/x/grammy@v1.27.0/convenience/keyboard.ts": "6223ded897b1a02de2a35c5c2574415ca9bdf24538a136692e897ec51c16c76b", - "https://deno.land/x/grammy@v1.27.0/convenience/session.ts": "931fc31b58c6c9fee1d969505027e060fc5a2784a9219d9303da84e849532071", - "https://deno.land/x/grammy@v1.27.0/convenience/webhook.ts": "5ae7b9f2ea9e5b424009587d4232eb28f6e56d20ab20d49c7d9681af68dc7f13", - "https://deno.land/x/grammy@v1.27.0/core/api.ts": "358b8afc4529fa6f26bf1a04e296a842b56e534069750e904f336da2debb603c", - "https://deno.land/x/grammy@v1.27.0/core/client.ts": "df622a135e71229ffe722406850c9c08b90dcdd4d049b46926128599c73f9dc5", - "https://deno.land/x/grammy@v1.27.0/core/error.ts": "553ec19e1ec51d8161d7f54891d345533aa07232005575549e8b7c919ee4795e", - "https://deno.land/x/grammy@v1.27.0/core/payload.ts": "420e17c3c2830b5576ea187cfce77578fe09f1204b25c25ea2f220ca7c86e73b", - "https://deno.land/x/grammy@v1.27.0/filter.ts": "4cffc1b2276eca2ae6408a4347ba5dda8104bbc8e56ebe772fdf6441d91cd7b6", - "https://deno.land/x/grammy@v1.27.0/mod.ts": "7723e08709ff7fd01df3e463503e14e4fd1a581669380eed70351e1121e8a833", - "https://deno.land/x/grammy@v1.27.0/platform.deno.ts": "68272a7e1d9a2d74d8a45342526485dbc0531dee812f675d7f8a4e7fc8393028", - "https://deno.land/x/grammy@v1.27.0/types.deno.ts": "b2aba74fb3aba667c0454d9963f9c6ea70acde6d9cc7e6ac0e306f6cad6e28f6", - "https://deno.land/x/grammy@v1.27.0/types.ts": "729415590dfa188dbe924dea614dff4e976babdbabb28a307b869fc25777cdf0", + "https://deno.land/x/grammy@v1.28.0/bot.ts": "9576361190e2dfcf7d2a665e6e20b66c15ae7a7cf81c25baea50b6c682b7a439", + "https://deno.land/x/grammy@v1.28.0/composer.ts": "dab5a40d8a6fdc734bfb218f8b2e4ef846c05b833219ddd3fdee3f145bb2660b", + "https://deno.land/x/grammy@v1.28.0/context.ts": "667934ca2f9d7c81fa27067232e3ca5464ba0c8b44f8b2925f9f2bef9b7af6b7", + "https://deno.land/x/grammy@v1.28.0/convenience/constants.ts": "1560129784be52f49aa0bea8716f09ed00dac367fef195be6a2c09bdfc43fb99", + "https://deno.land/x/grammy@v1.28.0/convenience/frameworks.ts": "69f343980c349f9552a022ae732b3d5de0894013df0fd304b4ad29bd62425dc1", + "https://deno.land/x/grammy@v1.28.0/convenience/inline_query.ts": "409d1940c7670708064efa495003bcbfdf6763a756b2e6303c464489fd3394ff", + "https://deno.land/x/grammy@v1.28.0/convenience/input_media.ts": "7af72a5fdb1af0417e31b1327003f536ddfdf64e06ab8bc7f5da6b574de38658", + "https://deno.land/x/grammy@v1.28.0/convenience/keyboard.ts": "de39a47199a9dde779c396c951a0452080df0e964e9ea366ae4237acdc3302f7", + "https://deno.land/x/grammy@v1.28.0/convenience/session.ts": "ae6b973f43552ff165d797c69191bbedc39b81b4de540c58c34cee007138c7f6", + "https://deno.land/x/grammy@v1.28.0/convenience/webhook.ts": "53937566edaa258401a44594a8f750a15983952bd99aa4d21c6722a7aa1d77a9", + "https://deno.land/x/grammy@v1.28.0/core/api.ts": "358b8afc4529fa6f26bf1a04e296a842b56e534069750e904f336da2debb603c", + "https://deno.land/x/grammy@v1.28.0/core/client.ts": "0830ccfa575f926092431896071e1999de8a5bd829ffa6c21c1315d58227b51f", + "https://deno.land/x/grammy@v1.28.0/core/error.ts": "5245f18f273da6be364f525090c24d2e9a282c180904f674f66946f2b2556247", + "https://deno.land/x/grammy@v1.28.0/core/payload.ts": "420e17c3c2830b5576ea187cfce77578fe09f1204b25c25ea2f220ca7c86e73b", + "https://deno.land/x/grammy@v1.28.0/filter.ts": "d5785e971181662d2090b307cb20d80d801f2afdf59ea312c156dca310460f29", + "https://deno.land/x/grammy@v1.28.0/mod.ts": "7723e08709ff7fd01df3e463503e14e4fd1a581669380eed70351e1121e8a833", + "https://deno.land/x/grammy@v1.28.0/platform.deno.ts": "68272a7e1d9a2d74d8a45342526485dbc0531dee812f675d7f8a4e7fc8393028", + "https://deno.land/x/grammy@v1.28.0/types.deno.ts": "8bbd4f78388f2f8bfe2a63c97c6df63ffda294e2b012c29f4f1caa89ee027f42", + "https://deno.land/x/grammy@v1.28.0/types.ts": "729415590dfa188dbe924dea614dff4e976babdbabb28a307b869fc25777cdf0", "https://deno.land/x/grammy_conversations@v1.2.0/conversation.ts": "4bcad06e2ac562969a7a6661bb1cf1477a3fe9e537c18419de65c456feb69499", "https://deno.land/x/grammy_conversations@v1.2.0/deps.deno.ts": "c982798d7ca4cd3ebcd5a24319d03c5980dc47827b5a172a77022859abdb404e", "https://deno.land/x/grammy_conversations@v1.2.0/form.ts": "d2d527fdcb26eb489b4aa1a183ae3aa14bf185a375ebf7d5c6ab8360e8b0e170", @@ -108,18 +101,18 @@ "https://deno.land/x/grammy_conversations@v1.2.0/utils.ts": "139ebe78dbf078d3bbf8cbc78ad286125a08e7e7895d4985fff7be9cef328e20", "https://deno.land/x/grammy_storages@v2.4.2/supabase/src/deps.deno.ts": "74b945bf5c1ade714a1e8de482d752bc952db909f8cffdcceb290d2d74aada3a", "https://deno.land/x/grammy_storages@v2.4.2/supabase/src/mod.ts": "dd28166e9cb8f93dcd67e0732df91753f60ce18da35b13299c3d7467a7d7aad3", - "https://deno.land/x/grammy_types@v3.11.0/api.ts": "ae04d6628e3d25ae805bc07a19475065044fc44cde0a40877405bc3544d03a5f", - "https://deno.land/x/grammy_types@v3.11.0/inline.ts": "9bc165676a2bb984525adf2c457cdf5f432016b25c3d399dceedfeaf638dbf29", - "https://deno.land/x/grammy_types@v3.11.0/langs.ts": "5f5fd09c58ba3ae942dd7cea2696f95587d2032c1829bba4bca81762b7ef73b6", - "https://deno.land/x/grammy_types@v3.11.0/manage.ts": "bd92f57b8732a26eb247f270bca92415d23ba6c99761960e9698c220b43f2a02", - "https://deno.land/x/grammy_types@v3.11.0/markup.ts": "7430abcea68d294df73a433f621a37cf1281718d3e29e903ed1e474038c7489d", - "https://deno.land/x/grammy_types@v3.11.0/message.ts": "32e60efb2d1984b392b1b8b547864db6f65df6e2ab77742438dcaea3ffcf1aa8", - "https://deno.land/x/grammy_types@v3.11.0/methods.ts": "52a745c874f6d7cbe6a063fcb3a84e7d82dd8030b8c77539c169348fa52da70d", - "https://deno.land/x/grammy_types@v3.11.0/mod.ts": "7ecea1d3f7085d64419b78183039c78d70d655aeaa8b07f118ffbfb823f5b0b7", - "https://deno.land/x/grammy_types@v3.11.0/passport.ts": "19820e7d6c279521f8bc8912d6a378239f73d4ab525453808994b5f44ef95215", - "https://deno.land/x/grammy_types@v3.11.0/payment.ts": "419c076b4ac2282234cc95b22b2922e8e359d368cc6bc66620f47f1329c3ad77", - "https://deno.land/x/grammy_types@v3.11.0/settings.ts": "f8ff810da6f1007ed24cd504809bf46820229c395ff9bfc3e5c8ceaef5b2aae1", - "https://deno.land/x/grammy_types@v3.11.0/update.ts": "7033ebfbecf6fbbd2d68f7a3550c9b04e553228a2143104fc63c42dd7f8f6881", + "https://deno.land/x/grammy_types@v3.12.0/api.ts": "ae04d6628e3d25ae805bc07a19475065044fc44cde0a40877405bc3544d03a5f", + "https://deno.land/x/grammy_types@v3.12.0/inline.ts": "9bc165676a2bb984525adf2c457cdf5f432016b25c3d399dceedfeaf638dbf29", + "https://deno.land/x/grammy_types@v3.12.0/langs.ts": "5f5fd09c58ba3ae942dd7cea2696f95587d2032c1829bba4bca81762b7ef73b6", + "https://deno.land/x/grammy_types@v3.12.0/manage.ts": "2774de6691a0dbb2eab69708c9388d2d0415a83fd8a995767d0691a6890693b8", + "https://deno.land/x/grammy_types@v3.12.0/markup.ts": "7430abcea68d294df73a433f621a37cf1281718d3e29e903ed1e474038c7489d", + "https://deno.land/x/grammy_types@v3.12.0/message.ts": "32e60efb2d1984b392b1b8b547864db6f65df6e2ab77742438dcaea3ffcf1aa8", + "https://deno.land/x/grammy_types@v3.12.0/methods.ts": "3bbf57d462eea928af280f9c1267f706783da870e554731b5310d6a7a59ce71a", + "https://deno.land/x/grammy_types@v3.12.0/mod.ts": "7ecea1d3f7085d64419b78183039c78d70d655aeaa8b07f118ffbfb823f5b0b7", + "https://deno.land/x/grammy_types@v3.12.0/passport.ts": "19820e7d6c279521f8bc8912d6a378239f73d4ab525453808994b5f44ef95215", + "https://deno.land/x/grammy_types@v3.12.0/payment.ts": "419c076b4ac2282234cc95b22b2922e8e359d368cc6bc66620f47f1329c3ad77", + "https://deno.land/x/grammy_types@v3.12.0/settings.ts": "f8ff810da6f1007ed24cd504809bf46820229c395ff9bfc3e5c8ceaef5b2aae1", + "https://deno.land/x/grammy_types@v3.12.0/update.ts": "7033ebfbecf6fbbd2d68f7a3550c9b04e553228a2143104fc63c42dd7f8f6881", "https://deno.land/x/oson@1.0.1/constructors.ts": "2b77dcdc8d8db5ece2860d1657f4dcef37dd761684f1d4b9535c7e56a0fbfcf6", "https://deno.land/x/oson@1.0.1/mod.ts": "54e494dc517ce0de6c727c25d9731ccc748e8646c883e922dc5d656f523a4e5b", "https://deno.land/x/oson@1.0.1/oson.ts": "ec3908ae5c9ceff7bfd869d95a2183b929b9d96fbff44b57d28d3b742d06a4a1", @@ -478,27 +471,37 @@ "https://deno.land/x/zod@v3.23.8/types.ts": "1b172c90782b1eaa837100ebb6abd726d79d6c1ec336350c8e851e0fd706bf5c", "https://esm.sh/@faker-js/faker@8.4.1": "21d589a68f956f90bcf4031bc6f26f5a5c531ca4bd798e16ec33094ea6560bce", "https://esm.sh/@supabase/supabase-js@2.33.1": "b9e0e18dfb0bfd1078c05be3474a710abf913ddc5b47bcb92317fabc4c5445e0", + "https://esm.sh/@supabase/supabase-js@2.45.0": "dd6ee5732ab91a1e390af7ba64ac12f5357d61a6eabb9659097552302e91789e", "https://esm.sh/v135/@faker-js/faker@8.4.1/denonext/faker.mjs": "bf2af6fc7f2660f80df3c0fda1185082478ef84a73b1aa27ea761977f6fd8426", + "https://esm.sh/v135/@supabase/auth-js@2.64.4/denonext/auth-js.mjs": "2ebc5314584864a675eeb93580989c5d6f49529d6c64d4d86c1f3015ada2f915", "https://esm.sh/v135/@supabase/functions-js@2.1.5/denonext/functions-js.mjs": "739affd2df20c1affd91991c3731c2537d270b82be5cdbd926c43be40eb2fdc5", "https://esm.sh/v135/@supabase/functions-js@2.3.1/denonext/functions-js.mjs": "c10a0bbd935fc12cae58918b8e23cb339d54c443983caeb597dd8cd76a76f940", + "https://esm.sh/v135/@supabase/functions-js@2.4.1/denonext/functions-js.mjs": "c7cb8535aa4c37b3b537c0129f978030d0ee022b99a83a110e9d80662d2cdc0a", "https://esm.sh/v135/@supabase/gotrue-js@2.57.0/denonext/gotrue-js.mjs": "a4e6768643628fc5445683f4f58090ea5b65c51c3abb165dc0a385cf8eae2121", "https://esm.sh/v135/@supabase/gotrue-js@2.62.2/denonext/gotrue-js.mjs": "326e26884bb2e359f192078b8c602a2e0acdc754767a274fe1df844319a8d319", "https://esm.sh/v135/@supabase/node-fetch@2.6.14/denonext/node-fetch.mjs": "23a71af3512da67a8757ab1e2356fa22565758444ea1fc08e0de0e8d4625e8aa", "https://esm.sh/v135/@supabase/node-fetch@2.6.15/denonext/node-fetch.mjs": "efad00ea3d4cbe1bee688836ef75339d49a1981bc5728a13e9ad5f26791d5efb", "https://esm.sh/v135/@supabase/postgrest-js@1.15.2/denonext/postgrest-js.mjs": "1d36cf3106c6dd6ce21473b57d88478802ceef6d22e67af1f92c508607302e50", + "https://esm.sh/v135/@supabase/postgrest-js@1.15.8/denonext/postgrest-js.mjs": "90b8f0f8ef7ab28318547b8f922ebc8c0f380fd20005f76e29d49510947b0b0b", "https://esm.sh/v135/@supabase/postgrest-js@1.9.0/denonext/postgrest-js.mjs": "e6239e65dca3c73527af617ee406934dc509a33e4082a9da9c3aa6c430519cdf", + "https://esm.sh/v135/@supabase/realtime-js@2.10.2/denonext/realtime-js.mjs": "5a4e1073018ac5e7c1ab348cebd2880ca079e6a18ad3cf5ca8fa443e9c80778c", "https://esm.sh/v135/@supabase/realtime-js@2.8.4/denonext/realtime-js.mjs": "9f8af6f82b095b1b1d336a92c4ff8519a5b7f783a1e09eab005114b983cafd5d", "https://esm.sh/v135/@supabase/realtime-js@2.9.4/denonext/realtime-js.mjs": "5a4443e535c1ef8c469c281442a976f47735b3ee378c9e6d8b9a379c56b2f852", "https://esm.sh/v135/@supabase/storage-js@2.5.4/denonext/storage-js.mjs": "dff68679fb795ec7e157b8f51cb0b8c544d6c3d57ecc093f5b15eb909439efcd", "https://esm.sh/v135/@supabase/storage-js@2.5.5/denonext/storage-js.mjs": "66e29e4e55c7d396503e2d1d9376cfbc34f046b962bce4524c2d80b209fff413", + "https://esm.sh/v135/@supabase/storage-js@2.6.0/denonext/storage-js.mjs": "1571b6f7bff0aeb20d2df2cbc3064921fe2959788c28805388b65722b824a0e6", "https://esm.sh/v135/@supabase/supabase-js@2.33.1/denonext/supabase-js.mjs": "0f38b8a15b66220153ba6633bd54c26f9416e161fbb9a4fb8841f06946099aa9", + "https://esm.sh/v135/@supabase/supabase-js@2.45.0/denonext/supabase-js.mjs": "3b6ea10864292ff96d83c4658c78259bff80fca9f23bc458a9d056116503f66c", "https://esm.sh/v135/bufferutil@4.0.8/denonext/bufferutil.mjs": "60a4618cbd1a5cb24935c55590b793d4ecb33862357d32e1d4614a0bbb90947f", "https://esm.sh/v135/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6", "https://esm.sh/v135/es5-ext@0.10.62/denonext/global.js": "2f51d9acef1f761faaa542da919b3c747744ea29fe709d0a904fd531716a93d6", "https://esm.sh/v135/node-gyp-build@4.6.1/denonext/node-gyp-build.mjs": "5d28b312f145a6cb2ec0dbdd80a7d34c0e0e6b5dcada65411d8bcff6c8991cc6", + "https://esm.sh/v135/node-gyp-build@4.8.1/denonext/node-gyp-build.mjs": "cddfc39c5f2d6e228fb1cd8cc36a594d870470b01348f866a7fb4e6f3ed8c66d", "https://esm.sh/v135/utf-8-validate@6.0.3/denonext/utf-8-validate.mjs": "410c48d66840e987e474a4849cd25829817415cedd25466280effb1287d05aa5", + "https://esm.sh/v135/utf-8-validate@6.0.4/denonext/utf-8-validate.mjs": "ab4990b545a45f10f7711c69046ee3e9c5b732b9781937f922cefd3fc99d0e88", "https://esm.sh/v135/websocket@1.0.34/denonext/websocket.mjs": "dfe5d62007e9f7430d561e2376fe47caa9d04cb016d83d3386fcc2206a90296b", - "https://esm.sh/v135/ws@8.16.0/denonext/ws.mjs": "0fa0c00b69577ba36d0a36001329b2cec91498cb2e33e329fc76aa6d51a0d54d" + "https://esm.sh/v135/ws@8.16.0/denonext/ws.mjs": "0fa0c00b69577ba36d0a36001329b2cec91498cb2e33e329fc76aa6d51a0d54d", + "https://esm.sh/v135/ws@8.17.1/denonext/ws.mjs": "8c9b9fd82d9879be14e9145aee4104ad43dea340e458e144dc166588f7ff5144" }, "workspace": { "dependencies": [ diff --git a/src/deps.ts b/src/deps.ts index b7f101d..8fb7e29 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -1,7 +1,7 @@ export * as R from 'https://deno.land/x/ramda@v0.27.2/mod.ts' -export * from 'https://deno.land/x/grammy@v1.27.0/mod.ts' -export * from 'https://deno.land/x/grammy_types@v3.11.0/mod.ts' +export * from 'https://deno.land/x/grammy@v1.28.0/mod.ts' +export * from 'https://deno.land/x/grammy_types@v3.12.0/mod.ts' export * from 'https://deno.land/x/grammy_conversations@v1.2.0/mod.ts' export * from 'https://deno.land/x/grammy_storages@v2.4.2/supabase/src/mod.ts' export { z } from 'https://deno.land/x/zod@v3.23.8/mod.ts' -export { createClient } from 'https://esm.sh/@supabase/supabase-js@2.33.1' +export { createClient } from 'https://esm.sh/@supabase/supabase-js@2.45.0' From 9104597be34e86480c5a037b2d1b5bf7162746ec Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 6 Aug 2024 13:53:31 +0200 Subject: [PATCH 129/152] chore: fix supabase deps --- deno.lock | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/deno.lock b/deno.lock index 875c750..c073026 100644 --- a/deno.lock +++ b/deno.lock @@ -8,7 +8,8 @@ "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.1", "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", - "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3" + "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", + "npm:@types/node": "npm:@types/node@18.16.19" }, "jsr": { "@std/assert@0.226.0": { @@ -43,6 +44,12 @@ "jsr:@std/data-structures@^1.0.0-rc.1" ] } + }, + "npm": { + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + } } }, "redirects": { @@ -471,26 +478,32 @@ "https://deno.land/x/zod@v3.23.8/types.ts": "1b172c90782b1eaa837100ebb6abd726d79d6c1ec336350c8e851e0fd706bf5c", "https://esm.sh/@faker-js/faker@8.4.1": "21d589a68f956f90bcf4031bc6f26f5a5c531ca4bd798e16ec33094ea6560bce", "https://esm.sh/@supabase/supabase-js@2.33.1": "b9e0e18dfb0bfd1078c05be3474a710abf913ddc5b47bcb92317fabc4c5445e0", + "https://esm.sh/@supabase/supabase-js@2.42.0": "4828e9cc4af2357c70f1943a243f3235031432ed41f758c30655be969512575e", "https://esm.sh/@supabase/supabase-js@2.45.0": "dd6ee5732ab91a1e390af7ba64ac12f5357d61a6eabb9659097552302e91789e", "https://esm.sh/v135/@faker-js/faker@8.4.1/denonext/faker.mjs": "bf2af6fc7f2660f80df3c0fda1185082478ef84a73b1aa27ea761977f6fd8426", + "https://esm.sh/v135/@supabase/auth-js@2.63.0/denonext/auth-js.mjs": "626ae8dd2177c4437d6ba38f9aa1f97bd8e19c59386bd7edda465cc71d34e3f1", "https://esm.sh/v135/@supabase/auth-js@2.64.4/denonext/auth-js.mjs": "2ebc5314584864a675eeb93580989c5d6f49529d6c64d4d86c1f3015ada2f915", "https://esm.sh/v135/@supabase/functions-js@2.1.5/denonext/functions-js.mjs": "739affd2df20c1affd91991c3731c2537d270b82be5cdbd926c43be40eb2fdc5", + "https://esm.sh/v135/@supabase/functions-js@2.2.2/denonext/functions-js.mjs": "2115a8e67eb5058e0633fcea1bc304d8b1a7a8534ac194e18caf67f3a112a5e4", "https://esm.sh/v135/@supabase/functions-js@2.3.1/denonext/functions-js.mjs": "c10a0bbd935fc12cae58918b8e23cb339d54c443983caeb597dd8cd76a76f940", "https://esm.sh/v135/@supabase/functions-js@2.4.1/denonext/functions-js.mjs": "c7cb8535aa4c37b3b537c0129f978030d0ee022b99a83a110e9d80662d2cdc0a", "https://esm.sh/v135/@supabase/gotrue-js@2.57.0/denonext/gotrue-js.mjs": "a4e6768643628fc5445683f4f58090ea5b65c51c3abb165dc0a385cf8eae2121", "https://esm.sh/v135/@supabase/gotrue-js@2.62.2/denonext/gotrue-js.mjs": "326e26884bb2e359f192078b8c602a2e0acdc754767a274fe1df844319a8d319", "https://esm.sh/v135/@supabase/node-fetch@2.6.14/denonext/node-fetch.mjs": "23a71af3512da67a8757ab1e2356fa22565758444ea1fc08e0de0e8d4625e8aa", "https://esm.sh/v135/@supabase/node-fetch@2.6.15/denonext/node-fetch.mjs": "efad00ea3d4cbe1bee688836ef75339d49a1981bc5728a13e9ad5f26791d5efb", + "https://esm.sh/v135/@supabase/postgrest-js@1.15.0/denonext/postgrest-js.mjs": "824ad68b13c6232f3e4520eae5a2ca08c937d43c62485df69dc6520062dbd0de", "https://esm.sh/v135/@supabase/postgrest-js@1.15.2/denonext/postgrest-js.mjs": "1d36cf3106c6dd6ce21473b57d88478802ceef6d22e67af1f92c508607302e50", "https://esm.sh/v135/@supabase/postgrest-js@1.15.8/denonext/postgrest-js.mjs": "90b8f0f8ef7ab28318547b8f922ebc8c0f380fd20005f76e29d49510947b0b0b", "https://esm.sh/v135/@supabase/postgrest-js@1.9.0/denonext/postgrest-js.mjs": "e6239e65dca3c73527af617ee406934dc509a33e4082a9da9c3aa6c430519cdf", "https://esm.sh/v135/@supabase/realtime-js@2.10.2/denonext/realtime-js.mjs": "5a4e1073018ac5e7c1ab348cebd2880ca079e6a18ad3cf5ca8fa443e9c80778c", "https://esm.sh/v135/@supabase/realtime-js@2.8.4/denonext/realtime-js.mjs": "9f8af6f82b095b1b1d336a92c4ff8519a5b7f783a1e09eab005114b983cafd5d", + "https://esm.sh/v135/@supabase/realtime-js@2.9.3/denonext/realtime-js.mjs": "22f025f3a7f744aad39f538fdac296095eb8ec33974c24dc7168571493c707ec", "https://esm.sh/v135/@supabase/realtime-js@2.9.4/denonext/realtime-js.mjs": "5a4443e535c1ef8c469c281442a976f47735b3ee378c9e6d8b9a379c56b2f852", "https://esm.sh/v135/@supabase/storage-js@2.5.4/denonext/storage-js.mjs": "dff68679fb795ec7e157b8f51cb0b8c544d6c3d57ecc093f5b15eb909439efcd", "https://esm.sh/v135/@supabase/storage-js@2.5.5/denonext/storage-js.mjs": "66e29e4e55c7d396503e2d1d9376cfbc34f046b962bce4524c2d80b209fff413", "https://esm.sh/v135/@supabase/storage-js@2.6.0/denonext/storage-js.mjs": "1571b6f7bff0aeb20d2df2cbc3064921fe2959788c28805388b65722b824a0e6", "https://esm.sh/v135/@supabase/supabase-js@2.33.1/denonext/supabase-js.mjs": "0f38b8a15b66220153ba6633bd54c26f9416e161fbb9a4fb8841f06946099aa9", + "https://esm.sh/v135/@supabase/supabase-js@2.42.0/denonext/supabase-js.mjs": "0269571ba1b3e42fc36456b8c74fe24b0dd2f29e68e8e76e019704f9506fdd0c", "https://esm.sh/v135/@supabase/supabase-js@2.45.0/denonext/supabase-js.mjs": "3b6ea10864292ff96d83c4658c78259bff80fca9f23bc458a9d056116503f66c", "https://esm.sh/v135/bufferutil@4.0.8/denonext/bufferutil.mjs": "60a4618cbd1a5cb24935c55590b793d4ecb33862357d32e1d4614a0bbb90947f", "https://esm.sh/v135/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6", From 3716667de3230b48aeba9a2aad351fecc1203a25 Mon Sep 17 00:00:00 2001 From: devsheva Date: Tue, 6 Aug 2024 14:17:55 +0200 Subject: [PATCH 130/152] chore: upgrade @std/testing to major 1 --- deno.jsonc | 6 +++--- deno.lock | 31 ++++++++++++++++--------------- src/deps.ts | 2 +- src/utils/test_helpers.ts | 4 +++- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/deno.jsonc b/deno.jsonc index b59107e..3cc06d9 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -1,12 +1,12 @@ { "imports": { "@/": "./src/", - "@bot/": "./src/bot/", "@adapters/ai": "./src/adapters/mod.ts", + "@bot/": "./src/bot/", "@std/assert": "jsr:@std/assert@^0.226.0", "@std/cli": "https://deno.land/std@0.224.0/cli/mod.ts", "@std/dotenv": "jsr:@std/dotenv@^0.224.2", - "@std/testing": "jsr:@std/testing@^0.225.3" + "@std/testing": "jsr:@std/testing@^1.0.0" }, "fmt": { "lineWidth": 80, @@ -23,7 +23,7 @@ "unstable": ["cron"], "exclude": ["dist", "node_modules"], "compilerOptions": { - "lib": ["deno.window", "deno.unstable" ], + "lib": ["deno.window", "deno.unstable"], "strict": true, "allowJs": true } diff --git a/deno.lock b/deno.lock index c073026..b9b18e8 100644 --- a/deno.lock +++ b/deno.lock @@ -2,13 +2,14 @@ "version": "3", "packages": { "specifiers": { - "jsr:@std/assert@1.0.0-rc.2": "jsr:@std/assert@1.0.0-rc.2", "jsr:@std/assert@^0.226.0": "jsr:@std/assert@0.226.0", - "jsr:@std/async@^1.0.0-rc.2": "jsr:@std/async@1.0.2", - "jsr:@std/data-structures@^1.0.0-rc.1": "jsr:@std/data-structures@1.0.1", + "jsr:@std/assert@^1.0.2": "jsr:@std/assert@1.0.2", + "jsr:@std/async@^1.0.2": "jsr:@std/async@1.0.3", + "jsr:@std/data-structures@^1.0.1": "jsr:@std/data-structures@1.0.1", "jsr:@std/dotenv@^0.224.2": "jsr:@std/dotenv@0.224.2", "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", - "jsr:@std/testing@^0.225.3": "jsr:@std/testing@0.225.3", + "jsr:@std/internal@^1.0.1": "jsr:@std/internal@1.0.1", + "jsr:@std/testing@^1.0.0": "jsr:@std/testing@1.0.0", "npm:@types/node": "npm:@types/node@18.16.19" }, "jsr": { @@ -18,14 +19,14 @@ "jsr:@std/internal@^1.0.0" ] }, - "@std/assert@1.0.0-rc.2": { - "integrity": "0484eab1d76b55fca1c3beaff485a274e67dd3b9f065edcbe70030dfc0b964d3", + "@std/assert@1.0.2": { + "integrity": "ccacec332958126deaceb5c63ff8b4eaf9f5ed0eac9feccf124110435e59e49c", "dependencies": [ - "jsr:@std/internal@^1.0.0" + "jsr:@std/internal@^1.0.1" ] }, - "@std/async@1.0.2": { - "integrity": "36e7f0f922c843b45df546857d269f01ed4d0406aced2a6639eac325b2435e43" + "@std/async@1.0.3": { + "integrity": "6ed64678db43451683c6c176a21426a2ccd21ba0269ebb2c36133ede3f165792" }, "@std/data-structures@1.0.1": { "integrity": "e4fa6bcc33839979ac118e2746f349cd7b57c58bd3036b5b82ac608771ee856e" @@ -36,12 +37,12 @@ "@std/internal@1.0.1": { "integrity": "6f8c7544d06a11dd256c8d6ba54b11ed870aac6c5aeafff499892662c57673e6" }, - "@std/testing@0.225.3": { - "integrity": "348c24d0479d44ab3dbb4f26170f242e19f24051b45935d4a9e7ca0ab7e37780", + "@std/testing@1.0.0": { + "integrity": "27cfc06392c69c2acffe54e6d0bcb5f961cf193f519255372bd4fff1481bfef8", "dependencies": [ - "jsr:@std/assert@1.0.0-rc.2", - "jsr:@std/async@^1.0.0-rc.2", - "jsr:@std/data-structures@^1.0.0-rc.1" + "jsr:@std/assert@^1.0.2", + "jsr:@std/async@^1.0.2", + "jsr:@std/data-structures@^1.0.1" ] } }, @@ -520,7 +521,7 @@ "dependencies": [ "jsr:@std/assert@^0.226.0", "jsr:@std/dotenv@^0.224.2", - "jsr:@std/testing@^0.225.3" + "jsr:@std/testing@^1.0.0" ] } } diff --git a/src/deps.ts b/src/deps.ts index 8fb7e29..141dc01 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -4,4 +4,4 @@ export * from 'https://deno.land/x/grammy_types@v3.12.0/mod.ts' export * from 'https://deno.land/x/grammy_conversations@v1.2.0/mod.ts' export * from 'https://deno.land/x/grammy_storages@v2.4.2/supabase/src/mod.ts' export { z } from 'https://deno.land/x/zod@v3.23.8/mod.ts' -export { createClient } from 'https://esm.sh/@supabase/supabase-js@2.45.0' +export { createClient } from 'https://esm.sh/@supabase/supabase-js@2.33.1' diff --git a/src/utils/test_helpers.ts b/src/utils/test_helpers.ts index cb80dbd..1eb5167 100644 --- a/src/utils/test_helpers.ts +++ b/src/utils/test_helpers.ts @@ -30,6 +30,8 @@ export const botInfo = { can_join_groups: true as const, can_read_all_group_messages: false as const, supports_inline_queries: false as const, + can_connect_to_business: false, + has_main_web_app: false, } export const chat: Chat.PrivateChat = { @@ -130,7 +132,7 @@ export async function seedDatabase() { }), }), }), - 10, + 5, ), ) } From e259e605cdef2b3c48c3b2ccc31246b332e61394 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 7 Aug 2024 13:22:28 +0200 Subject: [PATCH 131/152] feat(supabase): add test schema support --- src/config.ts | 1 + src/utils.ts | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/config.ts b/src/config.ts index 6e6a5d4..1db3e73 100644 --- a/src/config.ts +++ b/src/config.ts @@ -7,6 +7,7 @@ const envSchema = z.object({ APP_ENV: z.enum(['development', 'test', 'production']).default('development'), SUPABASE_URL: z.string().default('dummy'), SUPABASE_KEY: z.string().default('dummy'), + SUPABASE_SCHEMA: z.string().default('public'), }) try { diff --git a/src/utils.ts b/src/utils.ts index 4cdea72..253361d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -7,7 +7,11 @@ import { import { SessionData } from '@/types.ts' import { config } from '@/config.ts' -const supabase = createClient(config.SUPABASE_URL, config.SUPABASE_KEY) +const supabase = createClient(config.SUPABASE_URL, config.SUPABASE_KEY, { + db: { + schema: config.SUPABASE_SCHEMA, + }, +}) export const getSessionAdapter = () => R.ifElse( @@ -16,5 +20,5 @@ export const getSessionAdapter = () => R.always(supabaseAdapter({ supabase, table: 'sessions', - })), + } as any)), )(config.APP_ENV) From a124b090609dbd6d801d927ce321fad31acc064b Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 7 Aug 2024 13:22:42 +0200 Subject: [PATCH 132/152] docs: add instructions to run tests with test schema --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index d74ed1f..0efd86d 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,13 @@ To update the changelog just run `git-cliff -o CHANGELOG.md`. ### Testing +**Pass the necessary environment variables to run against test mode!** + +- APP_ENV=test +- SUPABASE_KEY=your_key +- SUPABASE_SCHEMA=test +- SUPABASE_URL=your_url + Put all tests under this [folder](src/__tests__) and run `deno task test`, which will run test environment with Deno in watch mode > Note: this is a temporary workaround until conversations plugin is fixed From ac82c96d032900d4bc88a62c500ff2a813184a55 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 7 Aug 2024 14:37:12 +0200 Subject: [PATCH 133/152] docs: update changelog --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e307ee2..67687ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to this project will be documented in this file. ### ๐Ÿš€ Features +- *(supabase)* Add test schema support +- Add supabase as storage for preferences - *(analysis)* Respond with filtered story titles based on user preferences - *(gemini-adapter)* Add responseSchema for storyIds - *(gemini-adapter)* Replace with v1beta API and add responseMimeType on config @@ -26,6 +28,8 @@ All notable changes to this project will be documented in this file. ### ๐Ÿ› Bug Fixes +- Correctly type users preferences group +- *(config)* Restore test task arg when setting env - Add missing test variables for coverage - Remove env leaking log - Change root to cwd @@ -45,6 +49,8 @@ All notable changes to this project will be documented in this file. ### ๐Ÿ“š Documentation +- Add instructions to run tests with test schema +- Force env variable setup - Removed setMyCommands tip since an issue has been opened for it(#13) - Fix typo on README - Sort commits by newest for git-cliff @@ -62,6 +68,7 @@ All notable changes to this project will be documented in this file. ### ๐Ÿงช Testing +- *(helpers)* Cleanup database sessions - *(analysis)* Add promisify factory with item mocks - Stub global fetch - [**breaking**] Fix specs adapting to vitest @@ -83,6 +90,13 @@ All notable changes to this project will be documented in this file. ### โš™๏ธ Miscellaneous Tasks +- Upgrade @std/testing to major 1 +- Fix supabase deps +- Upgrade deno to 1.45.4 and include unstable cron +- *(analysis)* Get users preferences and seed db +- Add supabase secrets +- *(supabase)* Add db types and client connection +- Update changelog - *(utils)* Add mapIndexed fn - *(analysis)* Add error tests todo for __bulkRetrieveItems__ - *(analysis)* Bulk retrieve top stories as items with parallel requests @@ -141,6 +155,7 @@ All notable changes to this project will be documented in this file. ### Deno +- Update imports - Update imports From 51df94fbf23269c96fa437799e77bcce93bccf97 Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 7 Aug 2024 22:24:28 +0200 Subject: [PATCH 134/152] chore: remove any type from custom schemas in utils.ts This is related with the issue #20 --- src/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.ts b/src/utils.ts index d9863a0..8abcb40 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -13,7 +13,7 @@ export const connection = createClient( config.SUPABASE_KEY, { db: { - schema: config.SUPABASE_SCHEMA, + schema: config.SUPABASE_SCHEMA as any, // FIXME: remove any when found a way to type custom schemas (#20) }, }, ) From b82aa15d954a5f5a9cbd62adc7683bbb74733e4f Mon Sep 17 00:00:00 2001 From: devsheva Date: Wed, 7 Aug 2024 23:19:43 +0200 Subject: [PATCH 135/152] chore(ramda): add @types/ramda --- README.md | 1 + deno.lock | 19 ++++++++++++++++++- src/deps.ts | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4cd8d8a..5543747 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ To update the changelog just run `git-cliff -o CHANGELOG.md`. Put all tests under this [folder](src/__tests__) and run `deno task test`, which will run test environment with Deno in watch mode. You must pass at least the following environment variables to make testing work: + - APP_ENV - SUPABASE_URL - SUPABASE_KEY diff --git a/deno.lock b/deno.lock index b9b18e8..d8e6f56 100644 --- a/deno.lock +++ b/deno.lock @@ -10,7 +10,8 @@ "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", "jsr:@std/internal@^1.0.1": "jsr:@std/internal@1.0.1", "jsr:@std/testing@^1.0.0": "jsr:@std/testing@1.0.0", - "npm:@types/node": "npm:@types/node@18.16.19" + "npm:@types/node": "npm:@types/node@18.16.19", + "npm:@types/ramda": "npm:@types/ramda@0.30.1" }, "jsr": { "@std/assert@0.226.0": { @@ -50,6 +51,22 @@ "@types/node@18.16.19": { "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", "dependencies": {} + }, + "@types/ramda@0.30.1": { + "integrity": "sha512-aoyF/ADPL6N+/NXXfhPWF+Qj6w1Cql59m9wX0Gi15uyF+bpzXeLd63HPdiTDE2bmLXfNcVufsDPKmbfOrOzTBA==", + "dependencies": { + "types-ramda": "types-ramda@0.30.1" + } + }, + "ts-toolbelt@9.6.0": { + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", + "dependencies": {} + }, + "types-ramda@0.30.1": { + "integrity": "sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==", + "dependencies": { + "ts-toolbelt": "ts-toolbelt@9.6.0" + } } } }, diff --git a/src/deps.ts b/src/deps.ts index 141dc01..2b6c735 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -1,3 +1,4 @@ +// @deno-types="npm:@types/ramda" export * as R from 'https://deno.land/x/ramda@v0.27.2/mod.ts' export * from 'https://deno.land/x/grammy@v1.28.0/mod.ts' export * from 'https://deno.land/x/grammy_types@v3.12.0/mod.ts' From 53eedc5d18941b30398dd3416e065e6cccbddb3d Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 00:42:54 +0200 Subject: [PATCH 136/152] chore(types): type getUserPreferences --- src/__tests__/bot/daily_analysis.spec.ts | 5 ++++- src/config.ts | 2 +- src/preference/daily_analysis.ts | 13 ++++++++----- src/types.ts | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/__tests__/bot/daily_analysis.spec.ts b/src/__tests__/bot/daily_analysis.spec.ts index 59ff4a7..2f1045e 100644 --- a/src/__tests__/bot/daily_analysis.spec.ts +++ b/src/__tests__/bot/daily_analysis.spec.ts @@ -30,7 +30,10 @@ describe('getUsersPreferences', () => { it('should return the user preferences', async () => { const usersPreferences = await getUsersPreferences() assertType< - IsExact + IsExact< + typeof usersPreferences, + { id: string; session: string | null }[] + > >(true) }) diff --git a/src/config.ts b/src/config.ts index af356fa..bc06bfa 100644 --- a/src/config.ts +++ b/src/config.ts @@ -17,7 +17,7 @@ const envSchema = z.object({ try { const env = R.ifElse( - R.propEq('test', true), + R.propEq('test', 'true'), R.always({}), async () => await load(), )(parseArgs(Deno.args)) diff --git a/src/preference/daily_analysis.ts b/src/preference/daily_analysis.ts index 9abb842..65fec4d 100644 --- a/src/preference/daily_analysis.ts +++ b/src/preference/daily_analysis.ts @@ -2,20 +2,23 @@ import { Preferences } from '@/types.ts' import { connection } from '@/utils.ts' import { R } from '@/deps.ts' -async function getUsersPreferences(): Promise<{ +async function getUsersPreferences(): Promise< + { id: string - session: string -}[]> { + session: string | null + }[] +> { const { data, error } = await connection.from('sessions') .select('id, session') R.unless( R.isNil, - (err: typeof error) => { + (err) => { console.error(JSON.stringify(err)) throw new Error('Error fetching user preferences') }, )(error) - return R.groupBy(R.prop('id'), data) + return data || [] +} } diff --git a/src/types.ts b/src/types.ts index ec2058d..2784f16 100644 --- a/src/types.ts +++ b/src/types.ts @@ -19,7 +19,7 @@ export const itemSchema = z.object({ kids: z.optional(z.unknown()), url: z.optional(z.string()), score: z.optional(z.number()), - title: z.optional(z.string()), + title: z.string(), parts: z.optional(z.unknown()), descendants: z.optional(z.number()), }).nullable() From 58d0dfd666f88f5b48e076c29af3da8fb2352301 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 13:41:26 +0200 Subject: [PATCH 137/152] fix(utils): type generic supabaseAdapter --- src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 8abcb40..4ec77b7 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -22,8 +22,8 @@ export const getSessionAdapter = () => R.ifElse( R.equals('test'), R.always(new MemorySessionStorage()), - R.always(supabaseAdapter({ + R.always(supabaseAdapter({ supabase: connection, table: 'sessions', - } as any)), + })), )(config.APP_ENV) From 0332010dcc13f0bed01965999e96f9667e028ff7 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 13:42:24 +0200 Subject: [PATCH 138/152] refactor(gemini-adapter): simplify body object gen --- src/ai_adapters/base.ts | 4 ++++ src/ai_adapters/gemini.ts | 30 +++++++++++++++--------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/ai_adapters/base.ts b/src/ai_adapters/base.ts index b1770fb..d1c41e1 100644 --- a/src/ai_adapters/base.ts +++ b/src/ai_adapters/base.ts @@ -17,5 +17,9 @@ export enum HttpStatus { export interface BaseAdapter { generateContent(input: string): Promise + + /** + * Build the body for the Gemini API. + */ buildBody(input: string): object } diff --git a/src/ai_adapters/gemini.ts b/src/ai_adapters/gemini.ts index a1f04a1..e50f2cc 100644 --- a/src/ai_adapters/gemini.ts +++ b/src/ai_adapters/gemini.ts @@ -72,21 +72,21 @@ export class GeminiAdapter implements BaseAdapter { if (R.isEmpty(input)) { throw new Error('Text is required') } - - const body: RequestContent = R.pipe( - R.assocPath( - ['contents', 0, 'parts', 0, 'text'], - input, - ), - R.assocPath( - ['generationConfig', 'responseMimeType'], - 'application/json', - ), - R.assocPath( - ['generationConfig', 'responseSchema'], - responseSchema, - ), - )({}) + const body: RequestContent = { + contents: [ + { + parts: [ + { + text: input, + }, + ], + }, + ], + generationConfig: { + responseMimeType: 'application/json', + responseSchema: responseSchema, + }, + } return body } From 07517b4fe7f62acc1c250b87f276398a0acf8194 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 13:51:24 +0200 Subject: [PATCH 139/152] chore: add deno check task to improve code quality --- deno.jsonc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deno.jsonc b/deno.jsonc index 3cc06d9..79762e1 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -18,7 +18,8 @@ "tasks": { "coverage": "rm -rf cov_profile && deno test -A --parallel --coverage=cov_profile -- --test && deno coverage --lcov --output=./coverage.lcov ./cov_profile", "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", - "test": "deno test -A --parallel --watch -- --test" + "test": "deno test -A --parallel --watch -- --test", + "check": "deno check **/*.ts" }, "unstable": ["cron"], "exclude": ["dist", "node_modules"], From c48e7eff847293b5b32d6c939f52319562ae35a4 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 14:22:29 +0200 Subject: [PATCH 140/152] chore: correctly type all parts using ramda --- src/__tests__/analysis.spec.ts | 6 +++--- src/ai_adapters/gemini.ts | 13 +++++++------ src/analysis.ts | 7 +++++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/__tests__/analysis.spec.ts b/src/__tests__/analysis.spec.ts index a5b4ec0..e28e05f 100644 --- a/src/__tests__/analysis.spec.ts +++ b/src/__tests__/analysis.spec.ts @@ -36,14 +36,14 @@ describe('filterStories', () => { ] // Mock getItem function - const fakeItems = F.mapIndexed( - (id: number, idx: number) => ({ + const fakeItems: Item[] = F.mapIndexed( + (id, idx: number) => ({ id, type: 'story', by: faker.person.fullName(), title: fakeStoryTitles[idx], time: faker.date.recent().getTime(), - } as Item), + }), fakeTopStories, ) diff --git a/src/ai_adapters/gemini.ts b/src/ai_adapters/gemini.ts index e50f2cc..2260590 100644 --- a/src/ai_adapters/gemini.ts +++ b/src/ai_adapters/gemini.ts @@ -55,9 +55,13 @@ export class GeminiAdapter implements BaseAdapter { const parsedData = filteredContentSchema.parse(data) resolve( - R.path( - ['candidates', 0, 'content', 'parts', 0], - )(parsedData), + R.path([ + 'candidates', + 0, + 'content', + 'parts', + 0, + ])(parsedData) as ResponseContent, ) }) } @@ -65,9 +69,6 @@ export class GeminiAdapter implements BaseAdapter { }) } - /** - * Build the body for the Gemini API. - */ public buildBody(input: string): RequestContent { if (R.isEmpty(input)) { throw new Error('Text is required') diff --git a/src/analysis.ts b/src/analysis.ts index b02654b..fed4b58 100644 --- a/src/analysis.ts +++ b/src/analysis.ts @@ -6,7 +6,10 @@ import { GeminiAdapter } from '@/ai_adapters/mod.ts' const baseInput: string = ` Filter the following HackerNews stories by the provided preferences and return only the list of corresponding ids in an array format: ` -function generateInput(preferences: string[], titles: string[]): string { +function generateInput( + preferences: string[], + titles: [number, string][], +): string { return ` ${baseInput} Preferences: ${preferences.join(', ')} @@ -42,7 +45,7 @@ export async function filterStories(preferences: string[]): Promise { const filteredTitles = R.pluck('title')(R.innerJoin( (item: NonNullable, id: number) => item.id === id, - items, + items as NonNullable[], filteredIds, )) From f0440a8fdf444f4f8d2603004e95bf4cb3db8a4a Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 17:59:47 +0200 Subject: [PATCH 141/152] chore(analysis): parse user preferences and filter their stories - TODO: Sending a message to the bot user --- deno.lock | 23 +------ src/__tests__/bot/daily_analysis.spec.ts | 84 +++++++++++++++++++++++- src/preference/daily_analysis.ts | 31 ++++++++- 3 files changed, 111 insertions(+), 27 deletions(-) diff --git a/deno.lock b/deno.lock index d8e6f56..e9e75b7 100644 --- a/deno.lock +++ b/deno.lock @@ -10,7 +10,6 @@ "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", "jsr:@std/internal@^1.0.1": "jsr:@std/internal@1.0.1", "jsr:@std/testing@^1.0.0": "jsr:@std/testing@1.0.0", - "npm:@types/node": "npm:@types/node@18.16.19", "npm:@types/ramda": "npm:@types/ramda@0.30.1" }, "jsr": { @@ -48,10 +47,6 @@ } }, "npm": { - "@types/node@18.16.19": { - "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", - "dependencies": {} - }, "@types/ramda@0.30.1": { "integrity": "sha512-aoyF/ADPL6N+/NXXfhPWF+Qj6w1Cql59m9wX0Gi15uyF+bpzXeLd63HPdiTDE2bmLXfNcVufsDPKmbfOrOzTBA==", "dependencies": { @@ -496,43 +491,27 @@ "https://deno.land/x/zod@v3.23.8/types.ts": "1b172c90782b1eaa837100ebb6abd726d79d6c1ec336350c8e851e0fd706bf5c", "https://esm.sh/@faker-js/faker@8.4.1": "21d589a68f956f90bcf4031bc6f26f5a5c531ca4bd798e16ec33094ea6560bce", "https://esm.sh/@supabase/supabase-js@2.33.1": "b9e0e18dfb0bfd1078c05be3474a710abf913ddc5b47bcb92317fabc4c5445e0", - "https://esm.sh/@supabase/supabase-js@2.42.0": "4828e9cc4af2357c70f1943a243f3235031432ed41f758c30655be969512575e", - "https://esm.sh/@supabase/supabase-js@2.45.0": "dd6ee5732ab91a1e390af7ba64ac12f5357d61a6eabb9659097552302e91789e", "https://esm.sh/v135/@faker-js/faker@8.4.1/denonext/faker.mjs": "bf2af6fc7f2660f80df3c0fda1185082478ef84a73b1aa27ea761977f6fd8426", - "https://esm.sh/v135/@supabase/auth-js@2.63.0/denonext/auth-js.mjs": "626ae8dd2177c4437d6ba38f9aa1f97bd8e19c59386bd7edda465cc71d34e3f1", - "https://esm.sh/v135/@supabase/auth-js@2.64.4/denonext/auth-js.mjs": "2ebc5314584864a675eeb93580989c5d6f49529d6c64d4d86c1f3015ada2f915", "https://esm.sh/v135/@supabase/functions-js@2.1.5/denonext/functions-js.mjs": "739affd2df20c1affd91991c3731c2537d270b82be5cdbd926c43be40eb2fdc5", - "https://esm.sh/v135/@supabase/functions-js@2.2.2/denonext/functions-js.mjs": "2115a8e67eb5058e0633fcea1bc304d8b1a7a8534ac194e18caf67f3a112a5e4", "https://esm.sh/v135/@supabase/functions-js@2.3.1/denonext/functions-js.mjs": "c10a0bbd935fc12cae58918b8e23cb339d54c443983caeb597dd8cd76a76f940", - "https://esm.sh/v135/@supabase/functions-js@2.4.1/denonext/functions-js.mjs": "c7cb8535aa4c37b3b537c0129f978030d0ee022b99a83a110e9d80662d2cdc0a", "https://esm.sh/v135/@supabase/gotrue-js@2.57.0/denonext/gotrue-js.mjs": "a4e6768643628fc5445683f4f58090ea5b65c51c3abb165dc0a385cf8eae2121", "https://esm.sh/v135/@supabase/gotrue-js@2.62.2/denonext/gotrue-js.mjs": "326e26884bb2e359f192078b8c602a2e0acdc754767a274fe1df844319a8d319", "https://esm.sh/v135/@supabase/node-fetch@2.6.14/denonext/node-fetch.mjs": "23a71af3512da67a8757ab1e2356fa22565758444ea1fc08e0de0e8d4625e8aa", "https://esm.sh/v135/@supabase/node-fetch@2.6.15/denonext/node-fetch.mjs": "efad00ea3d4cbe1bee688836ef75339d49a1981bc5728a13e9ad5f26791d5efb", - "https://esm.sh/v135/@supabase/postgrest-js@1.15.0/denonext/postgrest-js.mjs": "824ad68b13c6232f3e4520eae5a2ca08c937d43c62485df69dc6520062dbd0de", "https://esm.sh/v135/@supabase/postgrest-js@1.15.2/denonext/postgrest-js.mjs": "1d36cf3106c6dd6ce21473b57d88478802ceef6d22e67af1f92c508607302e50", - "https://esm.sh/v135/@supabase/postgrest-js@1.15.8/denonext/postgrest-js.mjs": "90b8f0f8ef7ab28318547b8f922ebc8c0f380fd20005f76e29d49510947b0b0b", "https://esm.sh/v135/@supabase/postgrest-js@1.9.0/denonext/postgrest-js.mjs": "e6239e65dca3c73527af617ee406934dc509a33e4082a9da9c3aa6c430519cdf", - "https://esm.sh/v135/@supabase/realtime-js@2.10.2/denonext/realtime-js.mjs": "5a4e1073018ac5e7c1ab348cebd2880ca079e6a18ad3cf5ca8fa443e9c80778c", "https://esm.sh/v135/@supabase/realtime-js@2.8.4/denonext/realtime-js.mjs": "9f8af6f82b095b1b1d336a92c4ff8519a5b7f783a1e09eab005114b983cafd5d", - "https://esm.sh/v135/@supabase/realtime-js@2.9.3/denonext/realtime-js.mjs": "22f025f3a7f744aad39f538fdac296095eb8ec33974c24dc7168571493c707ec", "https://esm.sh/v135/@supabase/realtime-js@2.9.4/denonext/realtime-js.mjs": "5a4443e535c1ef8c469c281442a976f47735b3ee378c9e6d8b9a379c56b2f852", "https://esm.sh/v135/@supabase/storage-js@2.5.4/denonext/storage-js.mjs": "dff68679fb795ec7e157b8f51cb0b8c544d6c3d57ecc093f5b15eb909439efcd", "https://esm.sh/v135/@supabase/storage-js@2.5.5/denonext/storage-js.mjs": "66e29e4e55c7d396503e2d1d9376cfbc34f046b962bce4524c2d80b209fff413", - "https://esm.sh/v135/@supabase/storage-js@2.6.0/denonext/storage-js.mjs": "1571b6f7bff0aeb20d2df2cbc3064921fe2959788c28805388b65722b824a0e6", "https://esm.sh/v135/@supabase/supabase-js@2.33.1/denonext/supabase-js.mjs": "0f38b8a15b66220153ba6633bd54c26f9416e161fbb9a4fb8841f06946099aa9", - "https://esm.sh/v135/@supabase/supabase-js@2.42.0/denonext/supabase-js.mjs": "0269571ba1b3e42fc36456b8c74fe24b0dd2f29e68e8e76e019704f9506fdd0c", - "https://esm.sh/v135/@supabase/supabase-js@2.45.0/denonext/supabase-js.mjs": "3b6ea10864292ff96d83c4658c78259bff80fca9f23bc458a9d056116503f66c", "https://esm.sh/v135/bufferutil@4.0.8/denonext/bufferutil.mjs": "60a4618cbd1a5cb24935c55590b793d4ecb33862357d32e1d4614a0bbb90947f", "https://esm.sh/v135/cross-fetch@3.1.8/denonext/cross-fetch.mjs": "8fba9e7c3fbaf0d2168beb63ce0cd21b5bfbfbd77e2fcbf8d957d533a71222f6", "https://esm.sh/v135/es5-ext@0.10.62/denonext/global.js": "2f51d9acef1f761faaa542da919b3c747744ea29fe709d0a904fd531716a93d6", "https://esm.sh/v135/node-gyp-build@4.6.1/denonext/node-gyp-build.mjs": "5d28b312f145a6cb2ec0dbdd80a7d34c0e0e6b5dcada65411d8bcff6c8991cc6", - "https://esm.sh/v135/node-gyp-build@4.8.1/denonext/node-gyp-build.mjs": "cddfc39c5f2d6e228fb1cd8cc36a594d870470b01348f866a7fb4e6f3ed8c66d", "https://esm.sh/v135/utf-8-validate@6.0.3/denonext/utf-8-validate.mjs": "410c48d66840e987e474a4849cd25829817415cedd25466280effb1287d05aa5", - "https://esm.sh/v135/utf-8-validate@6.0.4/denonext/utf-8-validate.mjs": "ab4990b545a45f10f7711c69046ee3e9c5b732b9781937f922cefd3fc99d0e88", "https://esm.sh/v135/websocket@1.0.34/denonext/websocket.mjs": "dfe5d62007e9f7430d561e2376fe47caa9d04cb016d83d3386fcc2206a90296b", - "https://esm.sh/v135/ws@8.16.0/denonext/ws.mjs": "0fa0c00b69577ba36d0a36001329b2cec91498cb2e33e329fc76aa6d51a0d54d", - "https://esm.sh/v135/ws@8.17.1/denonext/ws.mjs": "8c9b9fd82d9879be14e9145aee4104ad43dea340e458e144dc166588f7ff5144" + "https://esm.sh/v135/ws@8.16.0/denonext/ws.mjs": "0fa0c00b69577ba36d0a36001329b2cec91498cb2e33e329fc76aa6d51a0d54d" }, "workspace": { "dependencies": [ diff --git a/src/__tests__/bot/daily_analysis.spec.ts b/src/__tests__/bot/daily_analysis.spec.ts index 2f1045e..abb777b 100644 --- a/src/__tests__/bot/daily_analysis.spec.ts +++ b/src/__tests__/bot/daily_analysis.spec.ts @@ -3,14 +3,24 @@ import { assertType, beforeAll, describe, + faker, IsExact, it, + returnsNext, + simpleFaker, + stub, } from '@/dev_deps.ts' -import { cleanupDatabase, seedDatabase } from '@/utils/test_helpers.ts' +import { + cleanupDatabase, + promisifyFactoryObj, + seedDatabase, +} from '@/utils/test_helpers.ts' import dailyAnalysis, { getUsersPreferences, } from '@/preference/daily_analysis.ts' -import { Preferences } from '@/types.ts' +import { R } from '@/deps.ts' +import * as F from '@/functions.ts' +import { Item, TopStories } from '@/types.ts' beforeAll(async () => { await seedDatabase() @@ -20,9 +30,77 @@ afterAll(async () => { await cleanupDatabase() }) +function mockFullSetup() { + // Mock the getTopStories function + const fakeTopStories = simpleFaker.helpers.multiple( + simpleFaker.number.int, + { + count: 3, + }, + ) + + const fakeStoryTitles = [ + 'Watch out this new AWS Service: Deno on TypeScript', + 'Deno vs Node: A Comprehensive Comparison', + 'My journey to become a lazy developer', + ] + + // Mock getItem function + const fakeItems: Item[] = F.mapIndexed( + (id, idx) => ({ + id, + type: 'story', + by: faker.person.fullName(), + title: fakeStoryTitles[idx], + time: faker.date.recent().getTime(), + }), + fakeTopStories, + ) + + const fakeGeminiResponse = { + candidates: [ + { + content: { + parts: [ + { + text: R.pipe( + R.take(2), + R.map(R.toString), + R.assoc('storyIds', R.__, {}), + (v: any) => JSON.stringify(v), + )(fakeTopStories), + }, + ], + }, + safetyRatings: [], + }, + ], + } + + const fakeResponses = [ + promisifyFactoryObj(fakeTopStories), + ...R.map(promisifyFactoryObj, fakeItems), + promisifyFactoryObj(fakeGeminiResponse), + ] + + stub( + globalThis, + 'fetch', + returnsNext( + fakeResponses, + ), + ) +} + describe('dailyAnalysis', () => { it('should reply with filtered articles', async () => { - // dailyAnalysis() + mockFullSetup() + await dailyAnalysis() + + // TODO: it should send a message to the user + }) + + it('should skip run if there are no users', async () => { }) }) diff --git a/src/preference/daily_analysis.ts b/src/preference/daily_analysis.ts index 65fec4d..7369b23 100644 --- a/src/preference/daily_analysis.ts +++ b/src/preference/daily_analysis.ts @@ -1,10 +1,11 @@ -import { Preferences } from '@/types.ts' import { connection } from '@/utils.ts' import { R } from '@/deps.ts' +import { filterStories } from '@/analysis.ts' +import { SessionData } from '@/types.ts' async function getUsersPreferences(): Promise< { - id: string + id: string session: string | null }[] > { @@ -21,4 +22,30 @@ async function getUsersPreferences(): Promise< return data || [] } + +async function dailyAnalysis() { + console.group('dailyAnalysis') + const usersPreferences = await getUsersPreferences() + console.debug('start', usersPreferences) + + R.forEach( + async ({ id, session: sessionJson }) => { + const session = JSON.parse(sessionJson!) + console.debug('user, session:', id, session.preferences) + const preferences = R.propOr( + {}, + 'preferences', + )(session) + + console.debug('preferences', preferences) + const filteredStories = await filterStories(preferences) + console.debug('filteredStories', filteredStories) + // TODO: send message to bot user + }, + )(usersPreferences) + + console.groupEnd() } + +export default dailyAnalysis +export { getUsersPreferences } From 64f1b9f6a6e171234dc1e79c34a77b7681c492f8 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 18:09:27 +0200 Subject: [PATCH 142/152] feat: add daily analysis cron job This commit adds a new cron job that runs daily analysis. It is scheduled to run at 1:00 AM every day. The job logs a message indicating that it is running and completes the daily analysis. The actual analysis code is currently commented out and needs to be implemented. --- deno.lock | 5 +++++ src/bot.ts | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/deno.lock b/deno.lock index e9e75b7..d260810 100644 --- a/deno.lock +++ b/deno.lock @@ -10,6 +10,7 @@ "jsr:@std/internal@^1.0.0": "jsr:@std/internal@1.0.1", "jsr:@std/internal@^1.0.1": "jsr:@std/internal@1.0.1", "jsr:@std/testing@^1.0.0": "jsr:@std/testing@1.0.0", + "npm:@types/node": "npm:@types/node@18.16.19", "npm:@types/ramda": "npm:@types/ramda@0.30.1" }, "jsr": { @@ -47,6 +48,10 @@ } }, "npm": { + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + }, "@types/ramda@0.30.1": { "integrity": "sha512-aoyF/ADPL6N+/NXXfhPWF+Qj6w1Cql59m9wX0Gi15uyF+bpzXeLd63HPdiTDE2bmLXfNcVufsDPKmbfOrOzTBA==", "dependencies": { diff --git a/src/bot.ts b/src/bot.ts index 9b15697..15ffaf6 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -3,6 +3,7 @@ import setup from '@/preference/setup.ts' import { PreferencesContext, SessionData } from '@/types.ts' import { getSessionAdapter } from '@/utils.ts' import { config } from '@/config.ts' +import dailyAnalysis from '@/preference/daily_analysis.ts' const bot = new Bot(config.BOT_TOKEN) @@ -24,3 +25,9 @@ bot.use(setup) bot.catch((err) => console.error(err)) bot.start() + +Deno.cron('daily analysis', '0 1 * * *', async () => { + console.info('Running daily analysis') + // await dailyAnalysis() + console.info('Daily analysis completed') +}) From 2befa32d8394b18836c2e75b40941ae7e8a25626 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 23:16:10 +0200 Subject: [PATCH 143/152] chore: update config.ts to load environment variables with export option --- src/config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config.ts b/src/config.ts index bc06bfa..2762e84 100644 --- a/src/config.ts +++ b/src/config.ts @@ -16,10 +16,10 @@ const envSchema = z.object({ }) try { - const env = R.ifElse( + const env = await R.ifElse( R.propEq('test', 'true'), R.always({}), - async () => await load(), + () => load({ export: true }), )(parseArgs(Deno.args)) if (R.isEmpty(env)) throw new Error('no env file found') From 340fff451d03762f606638501eea86c7297ad115 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 23:17:33 +0200 Subject: [PATCH 144/152] feat(analysis): send message to user --- src/__tests__/bot/daily_analysis.spec.ts | 2 ++ src/bot.ts | 4 +++- src/preference/daily_analysis.ts | 3 ++- src/utils/test_helpers.ts | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/__tests__/bot/daily_analysis.spec.ts b/src/__tests__/bot/daily_analysis.spec.ts index abb777b..9789200 100644 --- a/src/__tests__/bot/daily_analysis.spec.ts +++ b/src/__tests__/bot/daily_analysis.spec.ts @@ -11,6 +11,7 @@ import { stub, } from '@/dev_deps.ts' import { + botInfo, cleanupDatabase, promisifyFactoryObj, seedDatabase, @@ -98,6 +99,7 @@ describe('dailyAnalysis', () => { await dailyAnalysis() // TODO: it should send a message to the user + // TODO: find a way to test bot sending message }) it('should skip run if there are no users', async () => { diff --git a/src/bot.ts b/src/bot.ts index 15ffaf6..b47d0c0 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -28,6 +28,8 @@ bot.start() Deno.cron('daily analysis', '0 1 * * *', async () => { console.info('Running daily analysis') - // await dailyAnalysis() + await dailyAnalysis() console.info('Daily analysis completed') }) + +export default bot diff --git a/src/preference/daily_analysis.ts b/src/preference/daily_analysis.ts index 7369b23..7c1c630 100644 --- a/src/preference/daily_analysis.ts +++ b/src/preference/daily_analysis.ts @@ -2,6 +2,7 @@ import { connection } from '@/utils.ts' import { R } from '@/deps.ts' import { filterStories } from '@/analysis.ts' import { SessionData } from '@/types.ts' +import bot from '@/bot.ts' async function getUsersPreferences(): Promise< { @@ -40,7 +41,7 @@ async function dailyAnalysis() { console.debug('preferences', preferences) const filteredStories = await filterStories(preferences) console.debug('filteredStories', filteredStories) - // TODO: send message to bot user + bot.api.sendMessage(id, filteredStories.join('\n')) }, )(usersPreferences) diff --git a/src/utils/test_helpers.ts b/src/utils/test_helpers.ts index 1eb5167..329ccc6 100644 --- a/src/utils/test_helpers.ts +++ b/src/utils/test_helpers.ts @@ -132,7 +132,7 @@ export async function seedDatabase() { }), }), }), - 5, + 1, ), ) } From 9994fb8e9ae8088713165c78866a00abb6e2b934 Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 23:17:44 +0200 Subject: [PATCH 145/152] docs: update changelog --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67687ea..7c1946e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to this project will be documented in this file. ### ๐Ÿš€ Features +- *(analysis)* Send message to user +- Add daily analysis cron job - *(supabase)* Add test schema support - Add supabase as storage for preferences - *(analysis)* Respond with filtered story titles based on user preferences @@ -28,6 +30,7 @@ All notable changes to this project will be documented in this file. ### ๐Ÿ› Bug Fixes +- *(utils)* Type generic supabaseAdapter - Correctly type users preferences group - *(config)* Restore test task arg when setting env - Add missing test variables for coverage @@ -43,12 +46,14 @@ All notable changes to this project will be documented in this file. ### ๐Ÿšœ Refactor +- *(gemini-adapter)* Simplify body object gen - Improve env loading with zod - [**breaking**] Move types in a single declaration file - Add generic slashCommand generator ### ๐Ÿ“š Documentation +- Update changelog - Add instructions to run tests with test schema - Force env variable setup - Removed setMyCommands tip since an issue has been opened for it(#13) @@ -90,6 +95,13 @@ All notable changes to this project will be documented in this file. ### โš™๏ธ Miscellaneous Tasks +- Update config.ts to load environment variables with export option +- *(analysis)* Parse user preferences and filter their stories +- Correctly type all parts using ramda +- Add deno check task to improve code quality +- *(types)* Type getUserPreferences +- *(ramda)* Add @types/ramda +- Remove any type from custom schemas in utils.ts - Upgrade @std/testing to major 1 - Fix supabase deps - Upgrade deno to 1.45.4 and include unstable cron From 28111d2a6f35f12cb736e309de2df9248fe78f1e Mon Sep 17 00:00:00 2001 From: devsheva Date: Thu, 8 Aug 2024 23:22:38 +0200 Subject: [PATCH 146/152] ci: update deploy dev actions with supabase variables --- .github/workflows/deploy.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 65f9802..d69cb11 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -16,6 +16,7 @@ jobs: BOT_TOKEN: dummy SUPABASE_URL: ${{secrets.SUPABASE_URL}} SUPABASE_KEY: ${{secrets.SUPABASE_KEY}} + SUPABASE_SCHEMA: test steps: - name: Setup repo @@ -38,6 +39,9 @@ jobs: env: APP_ENV: test BOT_TOKEN: dummy + SUPABASE_URL: ${{secrets.SUPABASE_URL}} + SUPABASE_KEY: ${{secrets.SUPABASE_KEY}} + SUPABASE_SCHEMA: test steps: - name: Setup repo @@ -63,6 +67,9 @@ jobs: env: APP_ENV: test BOT_TOKEN: dummy + SUPABASE_URL: ${{secrets.SUPABASE_URL}} + SUPABASE_KEY: ${{secrets.SUPABASE_KEY}} + SUPABASE_SCHEMA: test steps: - name: Setup repo From 39f3968979d5c8ae7ef3fd20c4aa74c0a26fde91 Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 9 Aug 2024 00:02:19 +0200 Subject: [PATCH 147/152] chore: update deno test command to remove watch flag --- deno.jsonc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deno.jsonc b/deno.jsonc index 79762e1..4602698 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -18,7 +18,7 @@ "tasks": { "coverage": "rm -rf cov_profile && deno test -A --parallel --coverage=cov_profile -- --test && deno coverage --lcov --output=./coverage.lcov ./cov_profile", "dev": "deno run --watch --allow-read --allow-net --allow-env src/bot.ts", - "test": "deno test -A --parallel --watch -- --test", + "test": "deno test -A --parallel -- --test", "check": "deno check **/*.ts" }, "unstable": ["cron"], From 4554994a50b996d763420de1ee2196710b3a8da6 Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 9 Aug 2024 00:02:40 +0200 Subject: [PATCH 148/152] chore: skip dailyAnalysis in test suite --- src/__tests__/bot/daily_analysis.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/__tests__/bot/daily_analysis.spec.ts b/src/__tests__/bot/daily_analysis.spec.ts index 9789200..d3f5599 100644 --- a/src/__tests__/bot/daily_analysis.spec.ts +++ b/src/__tests__/bot/daily_analysis.spec.ts @@ -11,7 +11,6 @@ import { stub, } from '@/dev_deps.ts' import { - botInfo, cleanupDatabase, promisifyFactoryObj, seedDatabase, @@ -93,7 +92,7 @@ function mockFullSetup() { ) } -describe('dailyAnalysis', () => { +describe.skip('dailyAnalysis', () => { it('should reply with filtered articles', async () => { mockFullSetup() await dailyAnalysis() From 8d9dad6bf5451c777b48bf3f7a1a1a17854a653d Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 9 Aug 2024 00:03:08 +0200 Subject: [PATCH 149/152] refactor(analysis): import bot dynamically --- src/preference/daily_analysis.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/preference/daily_analysis.ts b/src/preference/daily_analysis.ts index 7c1c630..d349d0c 100644 --- a/src/preference/daily_analysis.ts +++ b/src/preference/daily_analysis.ts @@ -2,7 +2,6 @@ import { connection } from '@/utils.ts' import { R } from '@/deps.ts' import { filterStories } from '@/analysis.ts' import { SessionData } from '@/types.ts' -import bot from '@/bot.ts' async function getUsersPreferences(): Promise< { @@ -29,6 +28,9 @@ async function dailyAnalysis() { const usersPreferences = await getUsersPreferences() console.debug('start', usersPreferences) + const botModule = await import('@/bot.ts') + const bot = botModule.default + R.forEach( async ({ id, session: sessionJson }) => { const session = JSON.parse(sessionJson!) From e084e3fb9b31cedb06afd46e578f7ee418eb55b1 Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 9 Aug 2024 00:06:12 +0200 Subject: [PATCH 150/152] test: disable any lint --- src/__tests__/bot/daily_analysis.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/__tests__/bot/daily_analysis.spec.ts b/src/__tests__/bot/daily_analysis.spec.ts index d3f5599..d80ffaa 100644 --- a/src/__tests__/bot/daily_analysis.spec.ts +++ b/src/__tests__/bot/daily_analysis.spec.ts @@ -1,3 +1,4 @@ +// deno-lint-ignore-file no-explicit-any import { afterAll, assertType, From 1a0e3b0b399c526c4cde01ad53a4c565032083e6 Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 9 Aug 2024 00:09:27 +0200 Subject: [PATCH 151/152] fix: ignore any type lint error --- src/utils.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils.ts b/src/utils.ts index 4ec77b7..7e14928 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -13,6 +13,7 @@ export const connection = createClient( config.SUPABASE_KEY, { db: { + // deno-lint-ignore no-explicit-any schema: config.SUPABASE_SCHEMA as any, // FIXME: remove any when found a way to type custom schemas (#20) }, }, From 30599c9730138942dcea95ff77af2602a926f56e Mon Sep 17 00:00:00 2001 From: devsheva Date: Fri, 9 Aug 2024 00:30:28 +0200 Subject: [PATCH 152/152] ci: add closed pull request trigger to deploy workflow --- .github/workflows/deploy.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d69cb11..4df2cc6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,12 +5,13 @@ on: pull_request: branches: master + types: [closed] jobs: test: name: Test runs-on: ubuntu-latest - + env: APP_ENV: test BOT_TOKEN: dummy