From e895a2d48400674357e7cf140dcb5d5be8e619cb Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:19:47 +0700 Subject: [PATCH 001/110] feat: setup database --- server/.gitignore | 2 + server/config/config.json | 23 + server/package-lock.json | 2249 +++++++++++++++++++++++++++++++++++++ server/package.json | 23 + 4 files changed, 2297 insertions(+) create mode 100644 server/.gitignore create mode 100644 server/config/config.json create mode 100644 server/package-lock.json create mode 100644 server/package.json diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 00000000..1dcef2d9 --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,2 @@ +node_modules +.env \ No newline at end of file diff --git a/server/config/config.json b/server/config/config.json new file mode 100644 index 00000000..c8ee3092 --- /dev/null +++ b/server/config/config.json @@ -0,0 +1,23 @@ +{ + "development": { + "username": "postgres", + "password": "admin1234", + "database": "yugioh_db", + "host": "127.0.0.1", + "dialect": "postgres" + }, + "test": { + "username": "root", + "password": null, + "database": "database_test", + "host": "127.0.0.1", + "dialect": "mysql" + }, + "production": { + "username": "root", + "password": null, + "database": "database_production", + "host": "127.0.0.1", + "dialect": "mysql" + } +} diff --git a/server/package-lock.json b/server/package-lock.json new file mode 100644 index 00000000..047fcf13 --- /dev/null +++ b/server/package-lock.json @@ -0,0 +1,2249 @@ +{ + "name": "server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "server", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "bcryptjs": "^2.4.3", + "express": "^4.19.2", + "jsonwebtoken": "^9.0.2", + "pg": "^8.12.0", + "sequelize": "^6.37.3" + }, + "devDependencies": { + "dotenv": "^16.4.5", + "sequelize-cli": "^6.6.2" + } + }, + "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==", + "dev": true, + "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/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", + "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/validator": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.1.tgz", + "integrity": "sha512-w0URwf7BQb0rD/EuiG12KP0bailHKHP5YVviJG9zw3ykAokL0TuxU2TUqMB7EwZ59bDHYdeTIvjI5m0S7qHfOA==" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.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==", + "dev": true + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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 + }, + "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, + "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/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, + "dependencies": { + "ansi-regex": "^5.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, + "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/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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dottie": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "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==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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 + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.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==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/pg": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "dependencies": { + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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, + "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==", + "dev": true, + "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/retry-as-promised": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" + }, + "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" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/sequelize": { + "version": "6.37.3", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.37.3.tgz", + "integrity": "sha512-V2FTqYpdZjPy3VQrZvjTPnOoLm0KudCRXfGWp48QwhyPPp2yW8z0p0sCYZd/em847Tl2dVxJJ1DR+hF+O77T7A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "dependencies": { + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.9.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-cli": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.6.2.tgz", + "integrity": "sha512-V8Oh+XMz2+uquLZltZES6MVAD+yEnmMfwfn+gpXcDiwE3jyQygLt4xoI0zG8gKt6cRcs84hsKnXAKDQjG/JAgg==", + "dev": true, + "dependencies": { + "cli-color": "^2.0.3", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.5", + "lodash": "^4.17.21", + "resolve": "^1.22.1", + "umzug": "^2.3.0", + "yargs": "^16.2.0" + }, + "bin": { + "sequelize": "lib/sequelize", + "sequelize-cli": "lib/sequelize" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/sequelize/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/sequelize/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/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true, + "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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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, + "engines": { + "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==", + "dev": true + }, + "node_modules/string-width-cjs/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/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, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "dev": true, + "dependencies": { + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "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==", + "dev": true, + "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/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, + "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/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?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==", + "dev": true + }, + "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==", + "dev": true, + "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-cjs/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "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, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/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, + "engines": { + "node": ">=8" + } + }, + "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 + }, + "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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + } + } +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 00000000..b10c9475 --- /dev/null +++ b/server/package.json @@ -0,0 +1,23 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "bcryptjs": "^2.4.3", + "express": "^4.19.2", + "jsonwebtoken": "^9.0.2", + "pg": "^8.12.0", + "sequelize": "^6.37.3" + }, + "devDependencies": { + "dotenv": "^16.4.5", + "sequelize-cli": "^6.6.2" + } +} From a20e4057ee8d8f1266b9ea44e4e0294d738fa96c Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:20:01 +0700 Subject: [PATCH 002/110] feat: add migrations --- .../migrations/20240902115704-create-card.js | 55 +++++++++++++++++++ .../20240902115726-create-card-set.js | 47 ++++++++++++++++ .../20240902115734-create-card-price.js | 47 ++++++++++++++++ .../migrations/20240902115748-create-user.js | 35 ++++++++++++ .../20240902115754-create-favorite.js | 39 +++++++++++++ 5 files changed, 223 insertions(+) create mode 100644 server/migrations/20240902115704-create-card.js create mode 100644 server/migrations/20240902115726-create-card-set.js create mode 100644 server/migrations/20240902115734-create-card-price.js create mode 100644 server/migrations/20240902115748-create-user.js create mode 100644 server/migrations/20240902115754-create-favorite.js diff --git a/server/migrations/20240902115704-create-card.js b/server/migrations/20240902115704-create-card.js new file mode 100644 index 00000000..c4721be1 --- /dev/null +++ b/server/migrations/20240902115704-create-card.js @@ -0,0 +1,55 @@ +'use strict'; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable('Cards', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + name: { + type: Sequelize.STRING + }, + type: { + type: Sequelize.STRING + }, + frameType: { + type: Sequelize.STRING + }, + desc: { + type: Sequelize.TEXT + }, + atk: { + type: Sequelize.INTEGER + }, + def: { + type: Sequelize.INTEGER + }, + level: { + type: Sequelize.INTEGER + }, + race: { + type: Sequelize.STRING + }, + attribute: { + type: Sequelize.STRING + }, + image_url: { + type: Sequelize.STRING + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE + } + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable('Cards'); + } +}; \ No newline at end of file diff --git a/server/migrations/20240902115726-create-card-set.js b/server/migrations/20240902115726-create-card-set.js new file mode 100644 index 00000000..a17a018d --- /dev/null +++ b/server/migrations/20240902115726-create-card-set.js @@ -0,0 +1,47 @@ +"use strict"; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable("CardSets", { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + cardId: { + type: Sequelize.INTEGER, + references: { + model: "Cards", + key: "id", + }, + }, + set_name: { + type: Sequelize.STRING, + }, + set_code: { + type: Sequelize.STRING, + }, + set_rarity: { + type: Sequelize.STRING, + }, + set_rarity_code: { + type: Sequelize.STRING, + }, + set_price: { + type: Sequelize.FLOAT, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + }, + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable("CardSets"); + }, +}; diff --git a/server/migrations/20240902115734-create-card-price.js b/server/migrations/20240902115734-create-card-price.js new file mode 100644 index 00000000..ac657f55 --- /dev/null +++ b/server/migrations/20240902115734-create-card-price.js @@ -0,0 +1,47 @@ +"use strict"; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable("CardPrices", { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + cardId: { + type: Sequelize.INTEGER, + references: { + model: "Cards", + key: "id", + }, + }, + cardmarket_price: { + type: Sequelize.FLOAT, + }, + tcgplayer_price: { + type: Sequelize.FLOAT, + }, + ebay_price: { + type: Sequelize.FLOAT, + }, + amazon_price: { + type: Sequelize.FLOAT, + }, + coolstuffinc_price: { + type: Sequelize.FLOAT, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + }, + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable("CardPrices"); + }, +}; diff --git a/server/migrations/20240902115748-create-user.js b/server/migrations/20240902115748-create-user.js new file mode 100644 index 00000000..908f57db --- /dev/null +++ b/server/migrations/20240902115748-create-user.js @@ -0,0 +1,35 @@ +"use strict"; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable("Users", { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + username: { + type: Sequelize.STRING, + }, + email: { + type: Sequelize.STRING, + unique: true, + }, + password: { + type: Sequelize.STRING, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + }, + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable("Users"); + }, +}; diff --git a/server/migrations/20240902115754-create-favorite.js b/server/migrations/20240902115754-create-favorite.js new file mode 100644 index 00000000..3d1762fa --- /dev/null +++ b/server/migrations/20240902115754-create-favorite.js @@ -0,0 +1,39 @@ +"use strict"; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable("Favorites", { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + userId: { + type: Sequelize.INTEGER, + references: { + model: "Users", + key: "id", + }, + }, + cardId: { + type: Sequelize.INTEGER, + references: { + model: "Cards", + key: "id", + }, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + }, + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable("Favorites"); + }, +}; From 2a7af9d3cf4f401acf37b2edba096dbad25f1a1b Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:20:10 +0700 Subject: [PATCH 003/110] feat: add models --- server/models/card.js | 135 +++++++++++++++++++++++++++++++++++++ server/models/cardprice.js | 30 +++++++++ server/models/cardset.js | 30 +++++++++ server/models/favorite.js | 27 ++++++++ server/models/index.js | 43 ++++++++++++ server/models/user.js | 67 ++++++++++++++++++ 6 files changed, 332 insertions(+) create mode 100644 server/models/card.js create mode 100644 server/models/cardprice.js create mode 100644 server/models/cardset.js create mode 100644 server/models/favorite.js create mode 100644 server/models/index.js create mode 100644 server/models/user.js diff --git a/server/models/card.js b/server/models/card.js new file mode 100644 index 00000000..0fe51cce --- /dev/null +++ b/server/models/card.js @@ -0,0 +1,135 @@ +"use strict"; +const { Model } = require("sequelize"); +module.exports = (sequelize, DataTypes) => { + class Card extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + Card.hasMany(models.CardSet); + Card.hasOne(models.CardPrice); + Card.hasMany(models.Favorite); + } + } + Card.init( + { + name: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notEmpty: { + msg: "Name tidak boleh kosong", + }, + notNull: { + msg: "Name tidak boleh kosong", + }, + }, + }, + type: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notEmpty: { + msg: "Type tidak boleh kosong", + }, + notNull: { + msg: "Type tidak boleh kosong", + }, + }, + }, + frameType: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notEmpty: { + msg: "FrameType tidak boleh kosong", + }, + notNull: { + msg: "FrameType tidak boleh kosong", + }, + }, + }, + desc: { + type: DataTypes.TEXT, + allowNull: false, + validate: { + notEmpty: { + msg: "Description tidak boleh kosong", + }, + notNull: { + msg: "Description tidak boleh kosong", + }, + }, + }, + atk: { + type: DataTypes.INTEGER, + allowNull: false, + validate: { + notEmpty: { + msg: "Attack tidak boleh kosong", + }, + notNull: { + msg: "Attack tidak boleh kosong", + }, + }, + }, + def: { + type: DataTypes.INTEGER, + allowNull: false, + validate: { + notEmpty: { + msg: "Defense tidak boleh kosong", + }, + notNull: { + msg: "Defense tidak boleh kosong", + }, + }, + }, + level: { + type: DataTypes.INTEGER, + allowNull: false, + validate: { + notEmpty: { + msg: "Level tidak boleh kosong", + }, + notNull: { + msg: "Level tidak boleh kosong", + }, + }, + }, + race: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notEmpty: { + msg: "Race tidak boleh kosong", + }, + notNull: { + msg: "Race tidak boleh kosong", + }, + }, + }, + attribute: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notEmpty: { + msg: "Attribute tidak boleh kosong", + }, + notNull: { + msg: "Attribute tidak boleh kosong", + }, + }, + }, + image_url: DataTypes.STRING, + }, + { + sequelize, + modelName: "Card", + } + ); + return Card; +}; diff --git a/server/models/cardprice.js b/server/models/cardprice.js new file mode 100644 index 00000000..b7946e5b --- /dev/null +++ b/server/models/cardprice.js @@ -0,0 +1,30 @@ +"use strict"; +const { Model } = require("sequelize"); +module.exports = (sequelize, DataTypes) => { + class CardPrice extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + CardPrice.hasOne(models.Card); + } + } + CardPrice.init( + { + cardId: DataTypes.INTEGER, + cardmarket_price: DataTypes.FLOAT, + tcgplayer_price: DataTypes.FLOAT, + ebay_price: DataTypes.FLOAT, + amazon_price: DataTypes.FLOAT, + coolstuffinc_price: DataTypes.FLOAT, + }, + { + sequelize, + modelName: "CardPrice", + } + ); + return CardPrice; +}; diff --git a/server/models/cardset.js b/server/models/cardset.js new file mode 100644 index 00000000..64c83d24 --- /dev/null +++ b/server/models/cardset.js @@ -0,0 +1,30 @@ +"use strict"; +const { Model } = require("sequelize"); +module.exports = (sequelize, DataTypes) => { + class CardSet extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + CardSet.belongsTo(models.Card); + } + } + CardSet.init( + { + cardId: DataTypes.INTEGER, + set_name: DataTypes.STRING, + set_code: DataTypes.STRING, + set_rarity: DataTypes.STRING, + set_rarity_code: DataTypes.STRING, + set_price: DataTypes.FLOAT, + }, + { + sequelize, + modelName: "CardSet", + } + ); + return CardSet; +}; diff --git a/server/models/favorite.js b/server/models/favorite.js new file mode 100644 index 00000000..00ed2d3a --- /dev/null +++ b/server/models/favorite.js @@ -0,0 +1,27 @@ +"use strict"; +const { Model } = require("sequelize"); +module.exports = (sequelize, DataTypes) => { + class Favorite extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + Favorite.belongsTo(models.Card); + Favorite.belongsTo(models.User); + } + } + Favorite.init( + { + userId: DataTypes.INTEGER, + cardId: DataTypes.INTEGER, + }, + { + sequelize, + modelName: "Favorite", + } + ); + return Favorite; +}; diff --git a/server/models/index.js b/server/models/index.js new file mode 100644 index 00000000..024200ec --- /dev/null +++ b/server/models/index.js @@ -0,0 +1,43 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const Sequelize = require('sequelize'); +const process = require('process'); +const basename = path.basename(__filename); +const env = process.env.NODE_ENV || 'development'; +const config = require(__dirname + '/../config/config.json')[env]; +const db = {}; + +let sequelize; +if (config.use_env_variable) { + sequelize = new Sequelize(process.env[config.use_env_variable], config); +} else { + sequelize = new Sequelize(config.database, config.username, config.password, config); +} + +fs + .readdirSync(__dirname) + .filter(file => { + return ( + file.indexOf('.') !== 0 && + file !== basename && + file.slice(-3) === '.js' && + file.indexOf('.test.js') === -1 + ); + }) + .forEach(file => { + const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes); + db[model.name] = model; + }); + +Object.keys(db).forEach(modelName => { + if (db[modelName].associate) { + db[modelName].associate(db); + } +}); + +db.sequelize = sequelize; +db.Sequelize = Sequelize; + +module.exports = db; diff --git a/server/models/user.js b/server/models/user.js new file mode 100644 index 00000000..0e653548 --- /dev/null +++ b/server/models/user.js @@ -0,0 +1,67 @@ +"use strict"; +const { Model } = require("sequelize"); +module.exports = (sequelize, DataTypes) => { + class User extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + User.hasMany(models.Favorite); + } + } + User.init( + { + username: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notEmpty: { + msg: "Username tidak boleh kosong", + }, + notNull: { + msg: "Username tidak boleh kosong", + }, + }, + }, + email: { + type: DataTypes.STRING, + allowNull: false, + unique: { + name: "email", + msg: "Email harus unik", + }, + validate: { + notEmpty: { + msg: "Email tidak boleh kosong", + }, + notNull: { + msg: "Email tidak boleh kosong", + }, + isEmail: { + msg: "Harus dalam format email", + }, + }, + }, + password: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notEmpty: { + msg: "Password tidak boleh kosong", + }, + notNull: { + msg: "Password tidak boleh kosong", + }, + }, + }, + }, + { + sequelize, + modelName: "User", + } + ); + return User; +}; From a3f61c943cc2e20147cd2e0f8d7a7a46e0b4236f Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:27:25 +0700 Subject: [PATCH 004/110] refactor: add cascade on delete for cardSet and cardPrice --- server/migrations/20240902115726-create-card-set.js | 1 + server/migrations/20240902115734-create-card-price.js | 1 + 2 files changed, 2 insertions(+) diff --git a/server/migrations/20240902115726-create-card-set.js b/server/migrations/20240902115726-create-card-set.js index a17a018d..9007c446 100644 --- a/server/migrations/20240902115726-create-card-set.js +++ b/server/migrations/20240902115726-create-card-set.js @@ -15,6 +15,7 @@ module.exports = { model: "Cards", key: "id", }, + onDelete: "CASCADE", }, set_name: { type: Sequelize.STRING, diff --git a/server/migrations/20240902115734-create-card-price.js b/server/migrations/20240902115734-create-card-price.js index ac657f55..a993e1b8 100644 --- a/server/migrations/20240902115734-create-card-price.js +++ b/server/migrations/20240902115734-create-card-price.js @@ -15,6 +15,7 @@ module.exports = { model: "Cards", key: "id", }, + onDelete: "CASCADE", }, cardmarket_price: { type: Sequelize.FLOAT, From 66e648358d2a043bbd47d84dd33a41e12c913f65 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:33:45 +0700 Subject: [PATCH 005/110] feat: configuring app.js --- server/app.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 server/app.js diff --git a/server/app.js b/server/app.js new file mode 100644 index 00000000..7c89a044 --- /dev/null +++ b/server/app.js @@ -0,0 +1,17 @@ +if (process.env.NODE_ENV !== "production") { + require("dotenv").config(); +} + +const express = require("express"); +const errorHandler = require("./middlewares/errorHandler"); + +const app = express(); + +app.use(express.urlencoded({ extended: true })); +app.use(express.json()); + +//route + +app.use(errorHandler); + +module.exports = app; \ No newline at end of file From 574f5aef89127cbd47ed1340b85d7febf9ce70e2 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:33:59 +0700 Subject: [PATCH 006/110] feat: configuring bin/www --- server/bin/www | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 server/bin/www diff --git a/server/bin/www b/server/bin/www new file mode 100644 index 00000000..e5b571b2 --- /dev/null +++ b/server/bin/www @@ -0,0 +1,10 @@ +if (process.env.NODE_ENV !== "production") { + require("dotenv").config(); +} + +const app = require('../app'); +const port = process.env.PORT || 3000; + +app.listen(port, () => { + console.log(`Listening to http://localhost:${port}`); +}); \ No newline at end of file From 8aff222309c99f222eef601bca027fabd593da39 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:34:12 +0700 Subject: [PATCH 007/110] feat: add helpers and middleware --- server/helpers/bcrypt.js | 17 +++++++++++++++++ server/helpers/jwt.js | 15 +++++++++++++++ server/middlewares/authentication.js | 27 +++++++++++++++++++++++++++ server/middlewares/errorHandler.js | 26 ++++++++++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 server/helpers/bcrypt.js create mode 100644 server/helpers/jwt.js create mode 100644 server/middlewares/authentication.js create mode 100644 server/middlewares/errorHandler.js diff --git a/server/helpers/bcrypt.js b/server/helpers/bcrypt.js new file mode 100644 index 00000000..20621eb3 --- /dev/null +++ b/server/helpers/bcrypt.js @@ -0,0 +1,17 @@ +const bcrypt = require("bcryptjs"); + +function hashPassword(password) { + const salt = bcrypt.genSaltSync(10); + const hash = bcrypt.hashSync(password, salt); + return hash; +} + +function comparePassword(password, hash) { + const isValidPassword = bcrypt.compareSync(password, hash); + return isValidPassword; +} + +module.exports = { + hashPassword, + comparePassword, +}; diff --git a/server/helpers/jwt.js b/server/helpers/jwt.js new file mode 100644 index 00000000..357bd40b --- /dev/null +++ b/server/helpers/jwt.js @@ -0,0 +1,15 @@ +const jwt = require("jsonwebtoken"); +const JWT_SECRET = process.env.JWT_SECRET; + +const signToken = (data) => { + return jwt.sign(data, JWT_SECRET); +}; + +const verifyToken = (token) => { + return jwt.verify(token, JWT_SECRET); +}; + +module.exports = { + signToken, + verifyToken, +}; diff --git a/server/middlewares/authentication.js b/server/middlewares/authentication.js new file mode 100644 index 00000000..be66fa20 --- /dev/null +++ b/server/middlewares/authentication.js @@ -0,0 +1,27 @@ +const { verifyToken } = require("../helpers/jwt"); +const { User } = require("../models"); + +module.exports = async function authentication(req, res, next) { + const bearerToken = req.headers.authorization; + if (!bearerToken) { + return next({ name: "Unauthorized", message: "Invalid token" }); + } + + const [, token] = bearerToken.split(" "); + if (!token) { + return next({ name: "Unauthorized", message: "Invalid token" }); + } + + try { + const data = verifyToken(token); + const user = await User.findByPk(data.id); + if (!user) { + return next({ name: "Unauthorized", message: "Invalid token" }); + } + + req.user = user; + next(); + } catch (err) { + next(err); + } +}; diff --git a/server/middlewares/errorHandler.js b/server/middlewares/errorHandler.js new file mode 100644 index 00000000..ee34c4cd --- /dev/null +++ b/server/middlewares/errorHandler.js @@ -0,0 +1,26 @@ +module.exports = function errorHandler(err, req, res, next) { + // console.log("🚀 ~ errorHandler ~ err:", err); + switch (err.name) { + case "SequelizeValidationError": + case "SequelizeUniqueConstraintError": + res.status(400).json({ message: err.errors[0].message }); + return; + case "BadRequest": + res.status(400).json({ message: err.message }); + return; + case "Unauthorized": + res.status(401).json({ message: err.message }); + return; + case "Forbidden": + res.status(403).json({ message: err.message }); + return; + case "NotFound": + res.status(404).json({ message: err.message }); + return; + case "JsonWebTokenError": + res.status(401).json({ message: "Invalid token" }); + return; + default: + res.status(500).json({ message: "ISE" }); + } +}; From 44315ebd926f769a22e8717f7f7706f306e2c5ee Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 19:34:29 +0700 Subject: [PATCH 008/110] refactor: add npm run dev --- server/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/package.json b/server/package.json index b10c9475..f895d263 100644 --- a/server/package.json +++ b/server/package.json @@ -4,7 +4,8 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "nodemon bin/www" }, "keywords": [], "author": "", From 2354c1edd1fbee758e3d8c4de6bc4c840e9bc01f Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 20:39:12 +0700 Subject: [PATCH 009/110] refactor: remove cardPrice and CardSet from database, add CardController to fetch all card data --- server/app.js | 19 ++- server/controllers/CardController.js | 35 +++++ server/controllers/UserController.js | 50 +++++++ server/middlewares/errorHandler.js | 4 +- .../20240902115726-create-card-set.js | 48 ------- .../20240902115734-create-card-price.js | 48 ------- server/models/card.js | 123 ++---------------- server/models/cardprice.js | 30 ----- server/models/cardset.js | 30 ----- server/models/favorite.js | 4 +- server/models/user.js | 7 +- server/package-lock.json | 72 ++++++++++ server/package.json | 1 + 13 files changed, 197 insertions(+), 274 deletions(-) create mode 100644 server/controllers/CardController.js create mode 100644 server/controllers/UserController.js delete mode 100644 server/migrations/20240902115726-create-card-set.js delete mode 100644 server/migrations/20240902115734-create-card-price.js delete mode 100644 server/models/cardprice.js delete mode 100644 server/models/cardset.js diff --git a/server/app.js b/server/app.js index 7c89a044..f10034d3 100644 --- a/server/app.js +++ b/server/app.js @@ -4,14 +4,29 @@ if (process.env.NODE_ENV !== "production") { const express = require("express"); const errorHandler = require("./middlewares/errorHandler"); +const UserController = require("./controllers/UserController"); +const CardController = require("./controllers/CardController"); +const authentication = require("./middlewares/authentication"); const app = express(); app.use(express.urlencoded({ extended: true })); app.use(express.json()); -//route +// Register & Login +app.post("/register", UserController.register); +app.post("/login", UserController.login); + +app.use(authentication); +// +app.get("/cards", CardController.getAllCard); +app.post("/cards"); + +app.get("/cards/:id"); +app.put("/cards/:id"); + +app.delete("/cards/:id"); app.use(errorHandler); -module.exports = app; \ No newline at end of file +module.exports = app; diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js new file mode 100644 index 00000000..31d8c73f --- /dev/null +++ b/server/controllers/CardController.js @@ -0,0 +1,35 @@ +const { Card } = require("../models"); +const axios = require("axios"); + +class CardController { + static async getAllCard(req, res, next) { + try { + const response = await axios.get( + "https://db.ygoprodeck.com/api/v7/cardinfo.php" + ); + const cardsFromApi = response.data.data; + + const processedCards = cardsFromApi.map((card) => ({ + id: card.id, + name: card.name, + type: card.type, + frameType: card.frameType, + desc: card.desc, + atk: card.atk || null, + def: card.def || null, + level: card.level || null, + race: card.race || null, + attribute: card.attribute || null, + image_url: card.card_images[0]?.image_url || null, + })); + + const cards = await Card.findAll(); + + res.status(200).json(processedCards.concat(cards)); + } catch (err) { + next(err); + } + } +} + +module.exports = CardController; diff --git a/server/controllers/UserController.js b/server/controllers/UserController.js new file mode 100644 index 00000000..a8544e4b --- /dev/null +++ b/server/controllers/UserController.js @@ -0,0 +1,50 @@ +const { comparePassword } = require("../helpers/bcrypt"); +const { signToken } = require("../helpers/jwt"); +const { User } = require("../models"); + +class UserController { + static async register(req, res, next) { + const { username, email, password } = req.body; + try { + const user = await User.create({ + username, + email, + password, + }); + res.status(201).json({ + id: user.id, + email: user.email, + }); + } catch (err) { + next(err); + } + } + + static async login(req, res, next) { + const { email, password } = req.body; + try { + if (!email) { + throw { name: "BadRequest", message: "Email tidak boleh kosong" }; + } + if (!password) { + throw { name: "BadRequest", message: "Password tidak boleh kosong" }; + } + const user = await User.findOne({ where: { email } }); + if (!user) { + throw { name: "Unauthorized", message: "Invalid email or password" }; + } + const isValidPassword = comparePassword(password, user.password); + if (!isValidPassword) { + throw { name: "Unauthorized", message: "Invalid email or password" }; + } + + const access_token = signToken({ id: user.id }); + + res.status(200).json({ access_token }); + } catch (err) { + next(err); + } + } +} + +module.exports = UserController; diff --git a/server/middlewares/errorHandler.js b/server/middlewares/errorHandler.js index ee34c4cd..0a99c6e6 100644 --- a/server/middlewares/errorHandler.js +++ b/server/middlewares/errorHandler.js @@ -1,5 +1,5 @@ module.exports = function errorHandler(err, req, res, next) { - // console.log("🚀 ~ errorHandler ~ err:", err); + console.log("🚀 ~ errorHandler ~ err:", err); switch (err.name) { case "SequelizeValidationError": case "SequelizeUniqueConstraintError": @@ -21,6 +21,6 @@ module.exports = function errorHandler(err, req, res, next) { res.status(401).json({ message: "Invalid token" }); return; default: - res.status(500).json({ message: "ISE" }); + res.status(500).json({ message: "Internal Server Error" }); } }; diff --git a/server/migrations/20240902115726-create-card-set.js b/server/migrations/20240902115726-create-card-set.js deleted file mode 100644 index 9007c446..00000000 --- a/server/migrations/20240902115726-create-card-set.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -/** @type {import('sequelize-cli').Migration} */ -module.exports = { - async up(queryInterface, Sequelize) { - await queryInterface.createTable("CardSets", { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER, - }, - cardId: { - type: Sequelize.INTEGER, - references: { - model: "Cards", - key: "id", - }, - onDelete: "CASCADE", - }, - set_name: { - type: Sequelize.STRING, - }, - set_code: { - type: Sequelize.STRING, - }, - set_rarity: { - type: Sequelize.STRING, - }, - set_rarity_code: { - type: Sequelize.STRING, - }, - set_price: { - type: Sequelize.FLOAT, - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - }, - }); - }, - async down(queryInterface, Sequelize) { - await queryInterface.dropTable("CardSets"); - }, -}; diff --git a/server/migrations/20240902115734-create-card-price.js b/server/migrations/20240902115734-create-card-price.js deleted file mode 100644 index a993e1b8..00000000 --- a/server/migrations/20240902115734-create-card-price.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -/** @type {import('sequelize-cli').Migration} */ -module.exports = { - async up(queryInterface, Sequelize) { - await queryInterface.createTable("CardPrices", { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER, - }, - cardId: { - type: Sequelize.INTEGER, - references: { - model: "Cards", - key: "id", - }, - onDelete: "CASCADE", - }, - cardmarket_price: { - type: Sequelize.FLOAT, - }, - tcgplayer_price: { - type: Sequelize.FLOAT, - }, - ebay_price: { - type: Sequelize.FLOAT, - }, - amazon_price: { - type: Sequelize.FLOAT, - }, - coolstuffinc_price: { - type: Sequelize.FLOAT, - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - }, - }); - }, - async down(queryInterface, Sequelize) { - await queryInterface.dropTable("CardPrices"); - }, -}; diff --git a/server/models/card.js b/server/models/card.js index 0fe51cce..dd101461 100644 --- a/server/models/card.js +++ b/server/models/card.js @@ -9,121 +9,22 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - Card.hasMany(models.CardSet); - Card.hasOne(models.CardPrice); - Card.hasMany(models.Favorite); + // Card.hasMany(models.CardSet, { foreignKey: "cardId" }); + // Card.belongsTo(models.CardPrice, { foreignKey: "cardId" }); + Card.hasMany(models.Favorite, { foreignKey: "cardId" }); } } Card.init( { - name: { - type: DataTypes.STRING, - allowNull: false, - validate: { - notEmpty: { - msg: "Name tidak boleh kosong", - }, - notNull: { - msg: "Name tidak boleh kosong", - }, - }, - }, - type: { - type: DataTypes.STRING, - allowNull: false, - validate: { - notEmpty: { - msg: "Type tidak boleh kosong", - }, - notNull: { - msg: "Type tidak boleh kosong", - }, - }, - }, - frameType: { - type: DataTypes.STRING, - allowNull: false, - validate: { - notEmpty: { - msg: "FrameType tidak boleh kosong", - }, - notNull: { - msg: "FrameType tidak boleh kosong", - }, - }, - }, - desc: { - type: DataTypes.TEXT, - allowNull: false, - validate: { - notEmpty: { - msg: "Description tidak boleh kosong", - }, - notNull: { - msg: "Description tidak boleh kosong", - }, - }, - }, - atk: { - type: DataTypes.INTEGER, - allowNull: false, - validate: { - notEmpty: { - msg: "Attack tidak boleh kosong", - }, - notNull: { - msg: "Attack tidak boleh kosong", - }, - }, - }, - def: { - type: DataTypes.INTEGER, - allowNull: false, - validate: { - notEmpty: { - msg: "Defense tidak boleh kosong", - }, - notNull: { - msg: "Defense tidak boleh kosong", - }, - }, - }, - level: { - type: DataTypes.INTEGER, - allowNull: false, - validate: { - notEmpty: { - msg: "Level tidak boleh kosong", - }, - notNull: { - msg: "Level tidak boleh kosong", - }, - }, - }, - race: { - type: DataTypes.STRING, - allowNull: false, - validate: { - notEmpty: { - msg: "Race tidak boleh kosong", - }, - notNull: { - msg: "Race tidak boleh kosong", - }, - }, - }, - attribute: { - type: DataTypes.STRING, - allowNull: false, - validate: { - notEmpty: { - msg: "Attribute tidak boleh kosong", - }, - notNull: { - msg: "Attribute tidak boleh kosong", - }, - }, - }, + name: DataTypes.STRING, + type: DataTypes.STRING, + frameType: DataTypes.STRING, + desc: DataTypes.TEXT, + atk: DataTypes.INTEGER, + def: DataTypes.INTEGER, + level: DataTypes.INTEGER, + race: DataTypes.STRING, + attribute: DataTypes.STRING, image_url: DataTypes.STRING, }, { diff --git a/server/models/cardprice.js b/server/models/cardprice.js deleted file mode 100644 index b7946e5b..00000000 --- a/server/models/cardprice.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -const { Model } = require("sequelize"); -module.exports = (sequelize, DataTypes) => { - class CardPrice extends Model { - /** - * Helper method for defining associations. - * This method is not a part of Sequelize lifecycle. - * The `models/index` file will call this method automatically. - */ - static associate(models) { - // define association here - CardPrice.hasOne(models.Card); - } - } - CardPrice.init( - { - cardId: DataTypes.INTEGER, - cardmarket_price: DataTypes.FLOAT, - tcgplayer_price: DataTypes.FLOAT, - ebay_price: DataTypes.FLOAT, - amazon_price: DataTypes.FLOAT, - coolstuffinc_price: DataTypes.FLOAT, - }, - { - sequelize, - modelName: "CardPrice", - } - ); - return CardPrice; -}; diff --git a/server/models/cardset.js b/server/models/cardset.js deleted file mode 100644 index 64c83d24..00000000 --- a/server/models/cardset.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -const { Model } = require("sequelize"); -module.exports = (sequelize, DataTypes) => { - class CardSet extends Model { - /** - * Helper method for defining associations. - * This method is not a part of Sequelize lifecycle. - * The `models/index` file will call this method automatically. - */ - static associate(models) { - // define association here - CardSet.belongsTo(models.Card); - } - } - CardSet.init( - { - cardId: DataTypes.INTEGER, - set_name: DataTypes.STRING, - set_code: DataTypes.STRING, - set_rarity: DataTypes.STRING, - set_rarity_code: DataTypes.STRING, - set_price: DataTypes.FLOAT, - }, - { - sequelize, - modelName: "CardSet", - } - ); - return CardSet; -}; diff --git a/server/models/favorite.js b/server/models/favorite.js index 00ed2d3a..76231204 100644 --- a/server/models/favorite.js +++ b/server/models/favorite.js @@ -9,8 +9,8 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - Favorite.belongsTo(models.Card); - Favorite.belongsTo(models.User); + Favorite.belongsTo(models.Card, { foreignKey: "cardId" }); + Favorite.belongsTo(models.User, { foreignKey: "userId" }); } } Favorite.init( diff --git a/server/models/user.js b/server/models/user.js index 0e653548..99089fd3 100644 --- a/server/models/user.js +++ b/server/models/user.js @@ -1,5 +1,6 @@ "use strict"; const { Model } = require("sequelize"); +const { hashPassword } = require("../helpers/bcrypt"); module.exports = (sequelize, DataTypes) => { class User extends Model { /** @@ -9,7 +10,7 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - User.hasMany(models.Favorite); + User.hasMany(models.Favorite, { foreignKey: "userId" }); } } User.init( @@ -63,5 +64,9 @@ module.exports = (sequelize, DataTypes) => { modelName: "User", } ); + + User.beforeCreate(async (instance, option) => { + instance.password = hashPassword(instance.password); + }); return User; }; diff --git a/server/package-lock.json b/server/package-lock.json index 047fcf13..13f3640d 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "axios": "^1.7.7", "bcryptjs": "^2.4.3", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", @@ -129,6 +130,11 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -138,6 +144,16 @@ "node": ">= 4.0.0" } }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "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", @@ -336,6 +352,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", @@ -438,6 +465,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -708,6 +743,25 @@ "node": ">= 0.8" } }, + "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" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", @@ -724,6 +778,19 @@ "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==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -1485,6 +1552,11 @@ "node": ">= 0.10" } }, + "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==" + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", diff --git a/server/package.json b/server/package.json index f895d263..97aceec2 100644 --- a/server/package.json +++ b/server/package.json @@ -11,6 +11,7 @@ "author": "", "license": "ISC", "dependencies": { + "axios": "^1.7.7", "bcryptjs": "^2.4.3", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", From 32faeb6c43825ef7905b38879e555b7280cc5ac4 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Mon, 2 Sep 2024 21:06:25 +0700 Subject: [PATCH 010/110] feat: add route getCardById --- server/app.js | 2 +- server/controllers/CardController.js | 30 ++++++++++++++ .../migrations/20240902115704-create-card.js | 41 ++++++++++--------- server/models/card.js | 1 + 4 files changed, 54 insertions(+), 20 deletions(-) diff --git a/server/app.js b/server/app.js index f10034d3..bb5aec2a 100644 --- a/server/app.js +++ b/server/app.js @@ -22,7 +22,7 @@ app.use(authentication); app.get("/cards", CardController.getAllCard); app.post("/cards"); -app.get("/cards/:id"); +app.get("/cards/:id", CardController.getCardById); app.put("/cards/:id"); app.delete("/cards/:id"); diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index 31d8c73f..850a70bb 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -21,6 +21,7 @@ class CardController { race: card.race || null, attribute: card.attribute || null, image_url: card.card_images[0]?.image_url || null, + price: card.card_prices[0]?.cardmarket_price || null, })); const cards = await Card.findAll(); @@ -30,6 +31,35 @@ class CardController { next(err); } } + + static async getCardById(req, res, next) { + const { id } = req.params; + try { + const response = await axios.get( + `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${id}` + ); + const card = response.data.data[0]; + + const cardDetail = { + id: card.id, + name: card.name, + type: card.type, + frameType: card.frameType, + desc: card.desc, + atk: card.atk || null, + def: card.def || null, + level: card.level || null, + race: card.race || null, + attribute: card.attribute || null, + image_url: card.card_images[0]?.image_url || null, + price: card.card_prices[0]?.cardmarket_price || null, + }; + + res.status(200).json(cardDetail); + } catch (err) { + next(err); + } + } } module.exports = CardController; diff --git a/server/migrations/20240902115704-create-card.js b/server/migrations/20240902115704-create-card.js index c4721be1..613dca04 100644 --- a/server/migrations/20240902115704-create-card.js +++ b/server/migrations/20240902115704-create-card.js @@ -1,55 +1,58 @@ -'use strict'; +"use strict"; /** @type {import('sequelize-cli').Migration} */ module.exports = { async up(queryInterface, Sequelize) { - await queryInterface.createTable('Cards', { + await queryInterface.createTable("Cards", { id: { allowNull: false, autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.INTEGER, }, name: { - type: Sequelize.STRING + type: Sequelize.STRING, }, type: { - type: Sequelize.STRING + type: Sequelize.STRING, }, frameType: { - type: Sequelize.STRING + type: Sequelize.STRING, }, desc: { - type: Sequelize.TEXT + type: Sequelize.TEXT, }, atk: { - type: Sequelize.INTEGER + type: Sequelize.INTEGER, }, def: { - type: Sequelize.INTEGER + type: Sequelize.INTEGER, }, level: { - type: Sequelize.INTEGER + type: Sequelize.INTEGER, }, race: { - type: Sequelize.STRING + type: Sequelize.STRING, }, attribute: { - type: Sequelize.STRING + type: Sequelize.STRING, }, image_url: { - type: Sequelize.STRING + type: Sequelize.STRING, + }, + price: { + type: Sequelize.FLOAT, }, createdAt: { allowNull: false, - type: Sequelize.DATE + type: Sequelize.DATE, }, updatedAt: { allowNull: false, - type: Sequelize.DATE - } + type: Sequelize.DATE, + }, }); }, async down(queryInterface, Sequelize) { - await queryInterface.dropTable('Cards'); - } -}; \ No newline at end of file + await queryInterface.dropTable("Cards"); + }, +}; diff --git a/server/models/card.js b/server/models/card.js index dd101461..3a7631d1 100644 --- a/server/models/card.js +++ b/server/models/card.js @@ -26,6 +26,7 @@ module.exports = (sequelize, DataTypes) => { race: DataTypes.STRING, attribute: DataTypes.STRING, image_url: DataTypes.STRING, + price: DataTypes.FLOAT, }, { sequelize, From bb63ab86904be528c412b8fb160de0e9c84fa215 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 10:24:13 +0700 Subject: [PATCH 011/110] refactor: add archetype in card model --- server/controllers/CardController.js | 1 + server/migrations/20240902115704-create-card.js | 3 +++ server/models/card.js | 1 + 3 files changed, 5 insertions(+) diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index 850a70bb..7beb385b 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -19,6 +19,7 @@ class CardController { def: card.def || null, level: card.level || null, race: card.race || null, + archetype: card.archetype || null, attribute: card.attribute || null, image_url: card.card_images[0]?.image_url || null, price: card.card_prices[0]?.cardmarket_price || null, diff --git a/server/migrations/20240902115704-create-card.js b/server/migrations/20240902115704-create-card.js index 613dca04..de7007d1 100644 --- a/server/migrations/20240902115704-create-card.js +++ b/server/migrations/20240902115704-create-card.js @@ -33,6 +33,9 @@ module.exports = { race: { type: Sequelize.STRING, }, + archetype: { + type: Sequelize.STRING, + }, attribute: { type: Sequelize.STRING, }, diff --git a/server/models/card.js b/server/models/card.js index 3a7631d1..57a457d4 100644 --- a/server/models/card.js +++ b/server/models/card.js @@ -24,6 +24,7 @@ module.exports = (sequelize, DataTypes) => { def: DataTypes.INTEGER, level: DataTypes.INTEGER, race: DataTypes.STRING, + archetype: DataTypes.STRING, attribute: DataTypes.STRING, image_url: DataTypes.STRING, price: DataTypes.FLOAT, From bdb3ad07a916c896e53a2c85dc56ef811c49c1c0 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 10:47:02 +0700 Subject: [PATCH 012/110] refactor: add stock in favorite model --- server/migrations/20240902115754-create-favorite.js | 4 ++++ server/models/favorite.js | 1 + 2 files changed, 5 insertions(+) diff --git a/server/migrations/20240902115754-create-favorite.js b/server/migrations/20240902115754-create-favorite.js index 3d1762fa..cd39a49a 100644 --- a/server/migrations/20240902115754-create-favorite.js +++ b/server/migrations/20240902115754-create-favorite.js @@ -23,6 +23,10 @@ module.exports = { key: "id", }, }, + stock: { + type: Sequelize.INTEGER, + defaultValue: 0, + }, createdAt: { allowNull: false, type: Sequelize.DATE, diff --git a/server/models/favorite.js b/server/models/favorite.js index 76231204..b867da77 100644 --- a/server/models/favorite.js +++ b/server/models/favorite.js @@ -17,6 +17,7 @@ module.exports = (sequelize, DataTypes) => { { userId: DataTypes.INTEGER, cardId: DataTypes.INTEGER, + stock: DataTypes.INTEGER, }, { sequelize, From bcb0a79835bd27f3daff47aeb1004330c1adced6 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 11:51:10 +0700 Subject: [PATCH 013/110] feat: add favorite card route, add favorite, update favorite, delete favorite --- server/app.js | 10 +- server/controllers/CardController.js | 92 ++++++++++++++++++- .../migrations/20240902115704-create-card.js | 61 ------------ .../20240902115754-create-favorite.js | 4 - server/models/card.js | 38 -------- server/models/favorite.js | 1 - 6 files changed, 94 insertions(+), 112 deletions(-) delete mode 100644 server/migrations/20240902115704-create-card.js delete mode 100644 server/models/card.js diff --git a/server/app.js b/server/app.js index bb5aec2a..8fbf8b76 100644 --- a/server/app.js +++ b/server/app.js @@ -18,14 +18,16 @@ app.post("/register", UserController.register); app.post("/login", UserController.login); app.use(authentication); -// + +// Need login first to access app.get("/cards", CardController.getAllCard); -app.post("/cards"); app.get("/cards/:id", CardController.getCardById); -app.put("/cards/:id"); -app.delete("/cards/:id"); +app.get("/cards/favorite/", CardController.getFavorites); +app.post("/cards/favorite/add/:cardId", CardController.createFavorite); +app.put("/cards/favorite/edit/:favoriteId", CardController.updateFavorite); +app.delete("/cards/favorite/delete/:favoriteId", CardController.deleteFavorite); app.use(errorHandler); diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index 7beb385b..adc6a1fc 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -1,4 +1,4 @@ -const { Card } = require("../models"); +const { Favorite } = require("../models"); const axios = require("axios"); class CardController { @@ -25,9 +25,7 @@ class CardController { price: card.card_prices[0]?.cardmarket_price || null, })); - const cards = await Card.findAll(); - - res.status(200).json(processedCards.concat(cards)); + res.status(200).json(processedCards); } catch (err) { next(err); } @@ -39,6 +37,9 @@ class CardController { const response = await axios.get( `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${id}` ); + if (!response) { + throw { name: "NotFound", message: "Card not found" }; + } const card = response.data.data[0]; const cardDetail = { @@ -51,6 +52,7 @@ class CardController { def: card.def || null, level: card.level || null, race: card.race || null, + archetype: card.archetype || null, attribute: card.attribute || null, image_url: card.card_images[0]?.image_url || null, price: card.card_prices[0]?.cardmarket_price || null, @@ -61,6 +63,88 @@ class CardController { next(err); } } + + static async getFavorites(req, res, next) { + try { + const favorites = await Favorite.findAll({ + where: { + userId: req.user.id, + }, + }); + const data = []; + for (const favorite in favorites) { + const response = await axios.get( + `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${favorite.cardId}` + ); + const card = response.data.data[0]; + + const cardDetail = { + id: card.id, + name: card.name, + type: card.type, + frameType: card.frameType, + desc: card.desc, + atk: card.atk || null, + def: card.def || null, + level: card.level || null, + race: card.race || null, + archetype: card.archetype || null, + attribute: card.attribute || null, + image_url: card.card_images[0]?.image_url || null, + price: card.card_prices[0]?.cardmarket_price || null, + }; + + data.push(cardDetail); + } + + res.status(200).json(data); + } catch (err) { + next(err); + } + } + + static async createFavorite(req, res, next) { + try { + const favorite = await Favorite.create({ + userId: req.user.id, + cardId: req.params.cardId, + }); + + res.status(200).json(favorite); + } catch (err) { + next(err); + } + } + + static async updateFavorite(req, res, next) { + try { + const favorite = await Favorite.findByPk(req.params.id); + if (!favorite) { + throw { name: "NotFound", message: "Favorite Card not found" }; + } + await favorite.update({ + stock: req.body.stock, + }); + + res.status(200).json({ data: favorite, message: "Stock updated" }); + } catch (err) { + next(err); + } + } + + static async deleteFavorite(req, res, next) { + try { + const favorite = await Favorite.findByPk(req.params.id); + if (!favorite) { + throw { name: "NotFound", message: "Favorite Card not found" }; + } + await favorite.destroy(); + + res.status(200).json({ message: "Favorite Card deleted" }); + } catch (err) { + next(err); + } + } } module.exports = CardController; diff --git a/server/migrations/20240902115704-create-card.js b/server/migrations/20240902115704-create-card.js deleted file mode 100644 index de7007d1..00000000 --- a/server/migrations/20240902115704-create-card.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -/** @type {import('sequelize-cli').Migration} */ -module.exports = { - async up(queryInterface, Sequelize) { - await queryInterface.createTable("Cards", { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER, - }, - name: { - type: Sequelize.STRING, - }, - type: { - type: Sequelize.STRING, - }, - frameType: { - type: Sequelize.STRING, - }, - desc: { - type: Sequelize.TEXT, - }, - atk: { - type: Sequelize.INTEGER, - }, - def: { - type: Sequelize.INTEGER, - }, - level: { - type: Sequelize.INTEGER, - }, - race: { - type: Sequelize.STRING, - }, - archetype: { - type: Sequelize.STRING, - }, - attribute: { - type: Sequelize.STRING, - }, - image_url: { - type: Sequelize.STRING, - }, - price: { - type: Sequelize.FLOAT, - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - }, - }); - }, - async down(queryInterface, Sequelize) { - await queryInterface.dropTable("Cards"); - }, -}; diff --git a/server/migrations/20240902115754-create-favorite.js b/server/migrations/20240902115754-create-favorite.js index cd39a49a..d61959e5 100644 --- a/server/migrations/20240902115754-create-favorite.js +++ b/server/migrations/20240902115754-create-favorite.js @@ -18,10 +18,6 @@ module.exports = { }, cardId: { type: Sequelize.INTEGER, - references: { - model: "Cards", - key: "id", - }, }, stock: { type: Sequelize.INTEGER, diff --git a/server/models/card.js b/server/models/card.js deleted file mode 100644 index 57a457d4..00000000 --- a/server/models/card.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -const { Model } = require("sequelize"); -module.exports = (sequelize, DataTypes) => { - class Card extends Model { - /** - * Helper method for defining associations. - * This method is not a part of Sequelize lifecycle. - * The `models/index` file will call this method automatically. - */ - static associate(models) { - // define association here - // Card.hasMany(models.CardSet, { foreignKey: "cardId" }); - // Card.belongsTo(models.CardPrice, { foreignKey: "cardId" }); - Card.hasMany(models.Favorite, { foreignKey: "cardId" }); - } - } - Card.init( - { - name: DataTypes.STRING, - type: DataTypes.STRING, - frameType: DataTypes.STRING, - desc: DataTypes.TEXT, - atk: DataTypes.INTEGER, - def: DataTypes.INTEGER, - level: DataTypes.INTEGER, - race: DataTypes.STRING, - archetype: DataTypes.STRING, - attribute: DataTypes.STRING, - image_url: DataTypes.STRING, - price: DataTypes.FLOAT, - }, - { - sequelize, - modelName: "Card", - } - ); - return Card; -}; diff --git a/server/models/favorite.js b/server/models/favorite.js index b867da77..641db9cc 100644 --- a/server/models/favorite.js +++ b/server/models/favorite.js @@ -9,7 +9,6 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - Favorite.belongsTo(models.Card, { foreignKey: "cardId" }); Favorite.belongsTo(models.User, { foreignKey: "userId" }); } } From 94ab9406edab51307778984e3fa87561f82231fd Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 11:54:34 +0700 Subject: [PATCH 014/110] fix: change req params of delete and update --- server/controllers/CardController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index adc6a1fc..06cc9601 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -118,7 +118,7 @@ class CardController { static async updateFavorite(req, res, next) { try { - const favorite = await Favorite.findByPk(req.params.id); + const favorite = await Favorite.findByPk(req.params.favoriteId); if (!favorite) { throw { name: "NotFound", message: "Favorite Card not found" }; } @@ -134,7 +134,7 @@ class CardController { static async deleteFavorite(req, res, next) { try { - const favorite = await Favorite.findByPk(req.params.id); + const favorite = await Favorite.findByPk(req.params.favoriteId); if (!favorite) { throw { name: "NotFound", message: "Favorite Card not found" }; } From e7bd4cf384e52611344c387f9b9adee1bac91897 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 12:48:58 +0700 Subject: [PATCH 015/110] fix: change route path arragement --- server/app.js | 3 ++- server/controllers/CardController.js | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/server/app.js b/server/app.js index 8fbf8b76..78331e9b 100644 --- a/server/app.js +++ b/server/app.js @@ -22,9 +22,10 @@ app.use(authentication); // Need login first to access app.get("/cards", CardController.getAllCard); +app.get("/cards/favorite", CardController.getFavorites); + app.get("/cards/:id", CardController.getCardById); -app.get("/cards/favorite/", CardController.getFavorites); app.post("/cards/favorite/add/:cardId", CardController.createFavorite); app.put("/cards/favorite/edit/:favoriteId", CardController.updateFavorite); app.delete("/cards/favorite/delete/:favoriteId", CardController.deleteFavorite); diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index 06cc9601..8e4f638d 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -72,7 +72,7 @@ class CardController { }, }); const data = []; - for (const favorite in favorites) { + for (const favorite of favorites) { const response = await axios.get( `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${favorite.cardId}` ); @@ -97,7 +97,7 @@ class CardController { data.push(cardDetail); } - res.status(200).json(data); + res.status(200).json(favorites); } catch (err) { next(err); } @@ -109,7 +109,7 @@ class CardController { userId: req.user.id, cardId: req.params.cardId, }); - + res.status(200).json(favorite); } catch (err) { next(err); From d03fb8f9b95318faa93a5f4faf55d2b68ce0bbe5 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 14:02:45 +0700 Subject: [PATCH 016/110] fix: change json to data in getFavorites --- server/controllers/CardController.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index 8e4f638d..a6e03a6f 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -97,7 +97,7 @@ class CardController { data.push(cardDetail); } - res.status(200).json(favorites); + res.status(200).json(data); } catch (err) { next(err); } @@ -105,11 +105,18 @@ class CardController { static async createFavorite(req, res, next) { try { + const response = await axios.get( + `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${req.params.cardId}` + ); + const card = response.data.data[0]; + if (!card) { + throw { name: "NotFound", message: "Card not found" }; + } const favorite = await Favorite.create({ userId: req.user.id, cardId: req.params.cardId, }); - + res.status(200).json(favorite); } catch (err) { next(err); From 1930b5447f1a7c738747e16a1d292b1bc5262d00 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 15:02:11 +0700 Subject: [PATCH 017/110] feat: add testing for user --- server/__test__/user.test.js | 108 + server/config/config.json | 14 +- server/controllers/UserController.js | 4 +- server/models/user.js | 20 +- server/package-lock.json | 4913 ++++++++++++++++++++++---- server/package.json | 7 +- 6 files changed, 4328 insertions(+), 738 deletions(-) create mode 100644 server/__test__/user.test.js diff --git a/server/__test__/user.test.js b/server/__test__/user.test.js new file mode 100644 index 00000000..5fe3c82d --- /dev/null +++ b/server/__test__/user.test.js @@ -0,0 +1,108 @@ +const { + test, + expect, + beforeAll, + afterAll, + describe, +} = require("@jest/globals"); +const request = require("supertest"); +const app = require("../app"); +const { User } = require("../models"); + +afterAll(async () => { + await User.destroy({ + truncate: true, + restartIdentity: true, + cascade: true, + }); +}); + +describe("User Routes Test", () => { + describe("Membuat testing untuk register (POST /register)", () => { + test("Berhasil register", async () => { + const user = { + username: "foresto", + email: "forestoay@gmail.com", + password: "test1234", + }; + const response = await request(app).post("/register").send(user); + + expect(response.status).toBe(201); + expect(response.body).toHaveProperty("id", expect.any(Number)); + expect(response.body).toHaveProperty("email", user.email); + }); + + test("Gagal register karena email tidak ada", async () => { + const response = await request(app).post("/register").send({ + username: "test", + password: "qweqwe", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty("message", "Email is required"); + }); + + test("Gagal register karena email tidak unik", async () => { + const response = await request(app).post("/register").send({ + username: "awsd", + email: "forestoay@gmail.com", + password: "test1234", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty("message", "Email must be unique"); + }); + + test("Gagal register karena salah format email", async () => { + const response = await request(app).post("/register").send({ + username: "awsde", + email: "forestoay123", + password: "test1234", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty("message", "Invalid email format"); + }); + + test("Gagal register karena password kurang dari 5 karakter", async () => { + const response = await request(app).post("/register").send({ + username: "test", + email: "test@gmail.com", + password: "1234", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty( + "message", + "The password must have a minimum of 5 characters" + ); + }); + }); + + describe("Membuat testing untuk login (POST /login)", () => { + test("Berhasil login", async () => { + const user = { + username: "foresto", + email: "forestoay@gmail.com", + password: "test1234", + }; + const response = await request(app).post("/login").send(user); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("access_token", expect.any(String)); + }); + + test("Gagal login karena salah email / password", async () => { + const response = await request(app).post("/login").send({ + email: "forestoay@gmail.com", + password: "hahahehe", + }); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty( + "message", + "Invalid email or password" + ); + }); + }); +}); diff --git a/server/config/config.json b/server/config/config.json index c8ee3092..fc42af1b 100644 --- a/server/config/config.json +++ b/server/config/config.json @@ -7,17 +7,13 @@ "dialect": "postgres" }, "test": { - "username": "root", - "password": null, - "database": "database_test", + "username": "postgres", + "password": "admin1234", + "database": "yugioh_db_test", "host": "127.0.0.1", - "dialect": "mysql" + "dialect": "postgres" }, "production": { - "username": "root", - "password": null, - "database": "database_production", - "host": "127.0.0.1", - "dialect": "mysql" + "use_env_variable": "DATABASE_URL" } } diff --git a/server/controllers/UserController.js b/server/controllers/UserController.js index a8544e4b..c7a422f6 100644 --- a/server/controllers/UserController.js +++ b/server/controllers/UserController.js @@ -24,10 +24,10 @@ class UserController { const { email, password } = req.body; try { if (!email) { - throw { name: "BadRequest", message: "Email tidak boleh kosong" }; + throw { name: "BadRequest", message: "Email is required" }; } if (!password) { - throw { name: "BadRequest", message: "Password tidak boleh kosong" }; + throw { name: "BadRequest", message: "Password is required" }; } const user = await User.findOne({ where: { email } }); if (!user) { diff --git a/server/models/user.js b/server/models/user.js index 99089fd3..bceb944a 100644 --- a/server/models/user.js +++ b/server/models/user.js @@ -20,10 +20,10 @@ module.exports = (sequelize, DataTypes) => { allowNull: false, validate: { notEmpty: { - msg: "Username tidak boleh kosong", + msg: "Username is required", }, notNull: { - msg: "Username tidak boleh kosong", + msg: "Username is required", }, }, }, @@ -32,17 +32,17 @@ module.exports = (sequelize, DataTypes) => { allowNull: false, unique: { name: "email", - msg: "Email harus unik", + msg: "Email must be unique", }, validate: { notEmpty: { - msg: "Email tidak boleh kosong", + msg: "Email is required", }, notNull: { - msg: "Email tidak boleh kosong", + msg: "Email is required", }, isEmail: { - msg: "Harus dalam format email", + msg: "Invalid email format", }, }, }, @@ -51,10 +51,14 @@ module.exports = (sequelize, DataTypes) => { allowNull: false, validate: { notEmpty: { - msg: "Password tidak boleh kosong", + msg: "Password is required", }, notNull: { - msg: "Password tidak boleh kosong", + msg: "Password is required", + }, + len: { + args: [5], + msg: "The password must have a minimum of 5 characters", }, }, }, diff --git a/server/package-lock.json b/server/package-lock.json index 13f3640d..ab46c493 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@jest/globals": "^29.7.0", "axios": "^1.7.7", "bcryptjs": "^2.4.3", "express": "^4.19.2", @@ -18,1043 +19,3765 @@ }, "devDependencies": { "dotenv": "^16.4.5", - "sequelize-cli": "^6.6.2" + "jest": "^29.7.0", + "sequelize-cli": "^6.6.2", + "supertest": "^7.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==", - "dev": true, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "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" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=12" + "node": ">=6.0.0" } }, - "node_modules/@one-ini/wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true + "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==", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.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==", - "dev": true, - "optional": true, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dependencies": { - "@types/ms": "*" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "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/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" - }, - "node_modules/@types/node": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", - "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { - "undici-types": "~6.19.2" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@types/validator": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.1.tgz", - "integrity": "sha512-w0URwf7BQb0rD/EuiG12KP0bailHKHP5YVviJG9zw3ykAokL0TuxU2TUqMB7EwZ59bDHYdeTIvjI5m0S7qHfOA==" + "node_modules/@babel/core/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/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.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==", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@babel/generator": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "@babel/types": "^7.25.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { - "node": ">= 0.6" + "node": ">=6.9.0" } }, - "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==", - "dev": true, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, "engines": { - "node": ">=12" + "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==", + "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==", + "bin": { + "semver": "bin/semver.js" + } + }, + "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==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=6.9.0" } }, - "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==", - "dev": true, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "engines": { - "node": ">= 4.0.0" + "node": ">=6.9.0" } }, - "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "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==", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.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==", - "dev": true + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/bcryptjs": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", - "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + "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==", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "node_modules/@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=6.9.0" } }, - "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==", - "dev": true, + "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==", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=6.9.0" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "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==", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/cli-color": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", - "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", - "dev": true, + "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==", "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.64", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=0.10" + "node": ">=4" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "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==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "color-name": "1.1.3" } }, - "node_modules/cliui/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, + "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==" + }, + "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==", "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/cliui/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==", - "dev": true, + "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==", + "engines": { + "node": ">=4" + } + }, + "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==", "dependencies": { - "color-convert": "^2.0.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "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 - }, - "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, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/cliui/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==", - "dev": true, + "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==", "dependencies": { - "ansi-regex": "^5.0.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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, + "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==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=10" + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-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==", - "dev": true, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", - "dev": true - }, - "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==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "dependencies": { - "delayed-stream": "~1.0.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { - "node": ">= 0.8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, + "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==", "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "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==", "dependencies": { - "safe-buffer": "5.2.1" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { - "node": ">= 0.6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "engines": { - "node": ">= 0.6" + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "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, + "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==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "dev": true, + "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==", "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=0.12" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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==", "dependencies": { - "ms": "2.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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/@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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, "engines": { - "node": ">= 0.8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=6.9.0" } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/@babel/traverse": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", + "globals": "^11.1.0" }, - "funding": { - "url": "https://dotenvx.com" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/dottie": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", - "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "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==", - "dev": true + "node_modules/@babel/traverse/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/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dependencies": { - "safe-buffer": "^5.0.1" + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "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 + }, + "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==", "dev": true, "dependencies": { - "@one-ini/wasm": "0.1.1", - "commander": "^10.0.0", - "minimatch": "9.0.1", - "semver": "^7.5.3" - }, - "bin": { - "editorconfig": "bin/editorconfig" + "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": ">=14" + "node": ">=12" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "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==", + "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/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "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, + "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, + "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/core/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "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==", + "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==", + "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==", + "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==", + "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, + "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/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "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/reporters/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==", + "dev": true, + "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": ">=10" + } + }, + "node_modules/@jest/reporters/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@jest/reporters/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "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, + "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, + "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, + "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==", + "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==", + "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==", + "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==", + "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==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "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==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "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==", + "dev": true, + "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==" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "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==", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "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, + "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, + "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, + "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, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "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==", + "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==" + }, + "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==", + "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==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", + "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "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==" + }, + "node_modules/@types/validator": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.1.tgz", + "integrity": "sha512-w0URwf7BQb0rD/EuiG12KP0bailHKHP5YVviJG9zw3ykAokL0TuxU2TUqMB7EwZ59bDHYdeTIvjI5m0S7qHfOA==" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "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==" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.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, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "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, + "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==", + "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-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, + "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.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "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, + "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==" + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.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==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "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" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "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 + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001655", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", + "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", + "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" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?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, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.0.tgz", + "integrity": "sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g==", + "dev": true + }, + "node_modules/cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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 + }, + "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, + "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/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, + "dependencies": { + "ansi-regex": "^5.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, + "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/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "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 + }, + "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==", + "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==" + }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "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==" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "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, + "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/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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "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, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "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==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dottie": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" + }, + "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, + "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==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "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, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "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==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "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/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "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==" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "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==", + "dependencies": { + "bser": "2.1.1" + } + }, + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.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==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "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==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", + "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==" + }, + "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, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "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==", + "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==", + "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, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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 + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "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==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "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.", + "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==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "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 + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "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, + "engines": { + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "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/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "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, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/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 }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "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, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4" + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "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, + "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": ">= 0.4" + "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/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "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, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "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, - "hasInstallScript": true, "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "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, "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "@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_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "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, "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=0.12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "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, "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "@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": "^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/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/jest-cli/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, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "node_modules/jest-cli/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "node_modules/jest-cli/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, "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=12" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/jest-cli/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 + }, + "node_modules/jest-cli/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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "node_modules/jest-cli/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==", "dev": true, "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "node_modules/jest-cli/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, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "node_modules/jest-cli/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, "dependencies": { - "type": "^2.7.2" + "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/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, + "node_modules/jest-cli/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, "engines": { - "node": ">= 0.8" + "node": ">=12" } }, - "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-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, + "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" + }, "engines": { - "node": ">=4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "debug": { + "@types/node": { + "optional": true + }, + "ts-node": { "optional": true } } }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "node_modules/jest-config/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, "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "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": ">=14" + "node": "*" }, "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==", + "node_modules/jest-config/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, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 6" + "node": "*" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "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==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">= 0.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "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, + "dependencies": { + "detect-newline": "^3.0.0" + }, "engines": { - "node": ">= 0.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "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, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@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": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.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==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "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, + "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_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, + "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==", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "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==", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^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": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "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, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, + "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==", "dependencies": { - "brace-expansion": "^2.0.1" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "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/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "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==", "dependencies": { - "get-intrinsic": "^1.1.3" + "@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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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 - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "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==", "dependencies": { - "es-define-property": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "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, "engines": { - "node": ">= 0.4" + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "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==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "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, "dependencies": { - "function-bind": "^1.1.2" + "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": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "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, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "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, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@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": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", - "engines": [ - "node >= 0.4.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==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "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, + "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" + }, "engines": { - "node": ">= 0.10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "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, "dependencies": { - "hasown": "^2.0.2" + "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": ">= 0.4" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/jest-runtime/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, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true + "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==", + "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" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "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==", + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "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, "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "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" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.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==", + "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_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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/js-beautify": { @@ -1087,6 +3810,51 @@ "node": ">=14" } }, + "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/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==", + "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==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "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 + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -1144,6 +3912,41 @@ "safe-buffer": "^5.0.1" } }, + "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, + "engines": { + "node": ">=6" + } + }, + "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, + "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 + }, + "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==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1199,6 +4002,29 @@ "es5-ext": "~0.10.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, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1231,6 +4057,11 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "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==" + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -1239,6 +4070,18 @@ "node": ">= 0.6" } }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -1269,6 +4112,15 @@ "node": ">= 0.6" } }, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", @@ -1317,6 +4169,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -1331,6 +4188,16 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, + "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==" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, "node_modules/nopt": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", @@ -1346,6 +4213,26 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "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==", + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/object-inspect": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", @@ -1368,12 +4255,86 @@ "node": ">= 0.8" } }, + "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==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "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==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", "dev": true }, + "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, + "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/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1382,6 +4343,22 @@ "node": ">= 0.8" } }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "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", @@ -1499,6 +4476,42 @@ "split2": "^4.1.0" } }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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==", + "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, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -1528,10 +4541,47 @@ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "dependencies": { - "xtend": "^4.0.0" + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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==", + "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, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, "node_modules/proto-list": { @@ -1557,6 +4607,22 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "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" + } + ] + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -1593,6 +4659,11 @@ "node": ">= 0.8" } }, + "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/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -1619,6 +4690,35 @@ "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, + "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==", + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=10" + } + }, "node_modules/retry-as-promised": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", @@ -1884,6 +4984,39 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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, + "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, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", @@ -1892,6 +5025,22 @@ "node": ">= 10.x" } }, + "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/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -1900,6 +5049,40 @@ "node": ">= 0.8" } }, + "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, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -1996,6 +5179,115 @@ "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, + "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", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superagent": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", + "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^3.5.1", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/superagent/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/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 + }, + "node_modules/supertest": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.0.0.tgz", + "integrity": "sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^9.0.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "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==", + "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", @@ -2008,6 +5300,59 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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", + "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/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/timers-ext": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", @@ -2021,6 +5366,30 @@ "node": ">=0.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/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==", + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -2040,6 +5409,26 @@ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "dev": 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==", + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -2086,6 +5475,35 @@ "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "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" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -2102,6 +5520,20 @@ "uuid": "dist/bin/uuid" } }, + "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==", + "dev": true, + "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/validator": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", @@ -2118,6 +5550,14 @@ "node": ">= 0.8" } }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2232,6 +5672,28 @@ "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==" + }, + "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==", + "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==" + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -2249,6 +5711,11 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -2316,6 +5783,18 @@ "engines": { "node": ">=8" } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/server/package.json b/server/package.json index 97aceec2..b2cec7ac 100644 --- a/server/package.json +++ b/server/package.json @@ -4,13 +4,14 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", + "test": "jest --runInBand --forceExit --verbose --detectOpenHandles", "dev": "nodemon bin/www" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { + "@jest/globals": "^29.7.0", "axios": "^1.7.7", "bcryptjs": "^2.4.3", "express": "^4.19.2", @@ -20,6 +21,8 @@ }, "devDependencies": { "dotenv": "^16.4.5", - "sequelize-cli": "^6.6.2" + "jest": "^29.7.0", + "sequelize-cli": "^6.6.2", + "supertest": "^7.0.0" } } From cd84b14dc52419a5943d69ff74251503bf1e7fc4 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 15:23:57 +0700 Subject: [PATCH 018/110] feat: add axios error handler for bad request --- server/controllers/CardController.js | 3 +++ server/middlewares/errorHandler.js | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index a6e03a6f..e28e6044 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -37,6 +37,7 @@ class CardController { const response = await axios.get( `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${id}` ); + if (!response) { throw { name: "NotFound", message: "Card not found" }; } @@ -60,6 +61,8 @@ class CardController { res.status(200).json(cardDetail); } catch (err) { + console.log(err.code, "<<<😀😀😀😀😀"); + next(err); } } diff --git a/server/middlewares/errorHandler.js b/server/middlewares/errorHandler.js index 0a99c6e6..d20f8fe4 100644 --- a/server/middlewares/errorHandler.js +++ b/server/middlewares/errorHandler.js @@ -1,5 +1,17 @@ module.exports = function errorHandler(err, req, res, next) { console.log("🚀 ~ errorHandler ~ err:", err); + if (err.code == "ERR_BAD_REQUEST") { + switch (err.response.statusText) { + case "Bad Request": + res + .status(400) + .json({ message: "No card matching was found in the database" }); + return; + default: + res.status(500).json({ message: "Internal Server Error" }); + } + } + switch (err.name) { case "SequelizeValidationError": case "SequelizeUniqueConstraintError": @@ -20,6 +32,8 @@ module.exports = function errorHandler(err, req, res, next) { case "JsonWebTokenError": res.status(401).json({ message: "Invalid token" }); return; + case "AxiosError": + return; default: res.status(500).json({ message: "Internal Server Error" }); } From 02249bf10781896b3c372d6420fd21ea9073d9fb Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 16:33:02 +0700 Subject: [PATCH 019/110] feat: add testing for card --- server/__test__/card.test.js | 235 +++++++++++++++++++++++++++ server/__test__/user.test.js | 26 ++- server/controllers/CardController.js | 2 - 3 files changed, 245 insertions(+), 18 deletions(-) create mode 100644 server/__test__/card.test.js diff --git a/server/__test__/card.test.js b/server/__test__/card.test.js new file mode 100644 index 00000000..0fbf0527 --- /dev/null +++ b/server/__test__/card.test.js @@ -0,0 +1,235 @@ +const { + test, + expect, + beforeAll, + afterAll, + describe, +} = require("@jest/globals"); +const request = require("supertest"); +const app = require("../app"); +const { User, Favorite } = require("../models"); +const { signToken } = require("../helpers/jwt"); + +let access_token; + +const userTest = { + username: "testuser", + email: "testuser@gmail.com", + password: "usertest1", +}; + +beforeAll(async () => { + try { + const user = await User.create(userTest); + access_token = signToken({ id: user.id }); + } catch (err) { + console.log(err, "<<< err in beforeAll"); + } +}); + +afterAll(async () => { + await User.destroy({ + truncate: true, + restartIdentity: true, + cascade: true, + }); + + await Favorite.destroy({ + truncate: true, + restartIdentity: true, + cascade: true, + }); +}); + +describe("GET /cards", () => { + test("200 success get cards", async () => { + const response = await request(app) + .get("/cards") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(Array.isArray(response.body)).toBeTruthy(); + expect(response.body.length).toBeGreaterThan(0); + }); + + test("401 get cards with invalid token", async () => { + const response = await request(app) + .get("/cards") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); + + test("401 get cards without token", async () => { + const response = await request(app).get("/cards"); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); +}); + +describe("GET /cards/:id", () => { + test("200 success get cards by id", async () => { + const response = await request(app) + .get("/cards/6983839") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("id", expect.any(Number)); + expect(response.body).toHaveProperty("name", expect.any(String)); + }); + + test("400 get card detail with wrong card id", async () => { + const response = await request(app) + .get("/cards/1") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty( + "message", + "No card matching was found in the database" + ); + }); + + test("401 get card detail with invalid token", async () => { + const response = await request(app) + .get("/cards") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); +}); + +describe("POST /cards/favorite/add/:cardId", () => { + test("200 success POST favorite card", async () => { + const response = await request(app) + .post("/cards/favorite/add/23771716") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("id", expect.any(Number)); + expect(response.body).toHaveProperty("userId", expect.any(Number)); + expect(response.body).toHaveProperty("cardId", expect.any(Number)); + expect(response.body).toHaveProperty("stock", 0); + }); + + test("400 post favorite card with invalid card id", async () => { + const response = await request(app) + .post("/cards/favorite/add/2") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty( + "message", + "No card matching was found in the database" + ); + }); + + test("401 post favorite card with invalid token", async () => { + const response = await request(app) + .post("/cards/favorite/add/23771716") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); +}); + +describe("GET /cards/favorite", () => { + test("200 success GET favorite card", async () => { + const response = await request(app) + .get("/cards/favorite") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(Array.isArray(response.body)).toBeTruthy(); + }); + + test("401 GET favorite card with invalid token", async () => { + const response = await request(app) + .get("/cards/favorite") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); +}); + +describe("PUT /cards/favorite/edit/:favoriteId", () => { + test("200 success PUT favorite card", async () => { + const response = await request(app) + .put("/cards/favorite/edit/1") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("data"); + expect(response.body).toHaveProperty("message", "Stock updated"); + }); + + test("401 PUT favorite card with invalid token", async () => { + const response = await request(app) + .put("/cards/favorite/edit/1") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); + + test("404 PUT favorite card with invalid id card", async () => { + const response = await request(app) + .put("/cards/favorite/edit/5") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(404); + expect(response.body).toHaveProperty("message", "Favorite Card not found"); + }); +}); + +describe("DELETE /cards/favorite/delete/:favoriteId", () => { + test("404 PUT favorite card with invalid id card", async () => { + const response = await request(app) + .delete("/cards/favorite/delete/5") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(404); + expect(response.body).toHaveProperty("message", "Favorite Card not found"); + }); + + test("200 success PUT favorite card", async () => { + const response = await request(app) + .delete("/cards/favorite/delete/1") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("message", "Favorite Card deleted"); + }); + + test("401 PUT favorite card with invalid token", async () => { + const response = await request(app) + .delete("/cards/favorite/delete/1") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); +}); diff --git a/server/__test__/user.test.js b/server/__test__/user.test.js index 5fe3c82d..32322597 100644 --- a/server/__test__/user.test.js +++ b/server/__test__/user.test.js @@ -1,10 +1,4 @@ -const { - test, - expect, - beforeAll, - afterAll, - describe, -} = require("@jest/globals"); +const { test, expect, afterAll, describe } = require("@jest/globals"); const request = require("supertest"); const app = require("../app"); const { User } = require("../models"); @@ -18,8 +12,8 @@ afterAll(async () => { }); describe("User Routes Test", () => { - describe("Membuat testing untuk register (POST /register)", () => { - test("Berhasil register", async () => { + describe("POST /register - create new user", () => { + test("201 Success register - should create new User", async () => { const user = { username: "foresto", email: "forestoay@gmail.com", @@ -32,7 +26,7 @@ describe("User Routes Test", () => { expect(response.body).toHaveProperty("email", user.email); }); - test("Gagal register karena email tidak ada", async () => { + test("400 Failed register - should return error if email is null", async () => { const response = await request(app).post("/register").send({ username: "test", password: "qweqwe", @@ -42,7 +36,7 @@ describe("User Routes Test", () => { expect(response.body).toHaveProperty("message", "Email is required"); }); - test("Gagal register karena email tidak unik", async () => { + test("400 Failed register - should return error if email is already exists", async () => { const response = await request(app).post("/register").send({ username: "awsd", email: "forestoay@gmail.com", @@ -53,7 +47,7 @@ describe("User Routes Test", () => { expect(response.body).toHaveProperty("message", "Email must be unique"); }); - test("Gagal register karena salah format email", async () => { + test("400 Failed register - should return error if wrong email format", async () => { const response = await request(app).post("/register").send({ username: "awsde", email: "forestoay123", @@ -64,7 +58,7 @@ describe("User Routes Test", () => { expect(response.body).toHaveProperty("message", "Invalid email format"); }); - test("Gagal register karena password kurang dari 5 karakter", async () => { + test("400 Failed register - should return an error if the password has less than 5 characters", async () => { const response = await request(app).post("/register").send({ username: "test", email: "test@gmail.com", @@ -79,8 +73,8 @@ describe("User Routes Test", () => { }); }); - describe("Membuat testing untuk login (POST /login)", () => { - test("Berhasil login", async () => { + describe("POST /login - user login", () => { + test("200 Success login - should return access_token", async () => { const user = { username: "foresto", email: "forestoay@gmail.com", @@ -92,7 +86,7 @@ describe("User Routes Test", () => { expect(response.body).toHaveProperty("access_token", expect.any(String)); }); - test("Gagal login karena salah email / password", async () => { + test("401 Failed login - invalid email or password", async () => { const response = await request(app).post("/login").send({ email: "forestoay@gmail.com", password: "hahahehe", diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index e28e6044..d2c86d0b 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -61,8 +61,6 @@ class CardController { res.status(200).json(cardDetail); } catch (err) { - console.log(err.code, "<<<😀😀😀😀😀"); - next(err); } } From 1bdf5608cb0c07c3972a558e844e7d2c2bfc0cd5 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Tue, 3 Sep 2024 20:28:33 +0700 Subject: [PATCH 020/110] feat: add testing coverage --- server/__test__/card.test.js | 103 ++++++++++++++++++++++++++- server/__test__/user.test.js | 51 +++++++++++++ server/app.js | 2 + server/controllers/CardController.js | 68 +++++++++++++++--- server/package.json | 3 +- 5 files changed, 216 insertions(+), 11 deletions(-) diff --git a/server/__test__/card.test.js b/server/__test__/card.test.js index 0fbf0527..bc53ef00 100644 --- a/server/__test__/card.test.js +++ b/server/__test__/card.test.js @@ -48,8 +48,82 @@ describe("GET /cards", () => { .set("Authorization", `Bearer ${access_token}`); expect(response.status).toBe(200); - expect(Array.isArray(response.body)).toBeTruthy(); - expect(response.body.length).toBeGreaterThan(0); + expect(response.body).toHaveProperty("totalCards", expect.any(Number)); + expect(response.body).toHaveProperty("totalPages", expect.any(Number)); + expect(response.body).toHaveProperty("currentPage", expect.any(Number)); + expect(response.body).toHaveProperty("pageSize", expect.any(Number)); + expect(Array.isArray(response.body.cards)).toBeTruthy(); + expect(response.body.cards.length).toBeGreaterThan(0); + }); + + test("200 success get cards with archetype filter", async () => { + const response = await request(app) + .get("/cards?archetype=Sky Striker") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("totalCards", expect.any(Number)); + expect(response.body).toHaveProperty("totalPages", expect.any(Number)); + expect(response.body).toHaveProperty("currentPage", expect.any(Number)); + expect(response.body).toHaveProperty("pageSize", expect.any(Number)); + expect(Array.isArray(response.body.cards)).toBeTruthy(); + expect(response.body.cards.length).toBeGreaterThan(0); + }); + + test("200 success get cards with search by name", async () => { + const response = await request(app) + .get("/cards?name=blue-eyes") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("totalCards", expect.any(Number)); + expect(response.body).toHaveProperty("totalPages", expect.any(Number)); + expect(response.body).toHaveProperty("currentPage", expect.any(Number)); + expect(response.body).toHaveProperty("pageSize", expect.any(Number)); + expect(Array.isArray(response.body.cards)).toBeTruthy(); + expect(response.body.cards.length).toBeGreaterThan(0); + }); + + test("200 success get cards with search by name", async () => { + const response = await request(app) + .get("/cards?sort=desc") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("totalCards", expect.any(Number)); + expect(response.body).toHaveProperty("totalPages", expect.any(Number)); + expect(response.body).toHaveProperty("currentPage", expect.any(Number)); + expect(response.body).toHaveProperty("pageSize", expect.any(Number)); + expect(Array.isArray(response.body.cards)).toBeTruthy(); + expect(response.body.cards.length).toBeGreaterThan(0); + }); + + test("200 success get cards with current pages", async () => { + const response = await request(app) + .get("/cards?page=5") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("totalCards", expect.any(Number)); + expect(response.body).toHaveProperty("totalPages", expect.any(Number)); + expect(response.body).toHaveProperty("currentPage", 5); + expect(response.body).toHaveProperty("pageSize", expect.any(Number)); + expect(Array.isArray(response.body.cards)).toBeTruthy(); + expect(response.body.cards.length).toBeGreaterThan(0); + }); + + test("200 success get cards with limit page size", async () => { + const response = await request(app) + .get("/cards?pageSize=5") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("totalCards", expect.any(Number)); + expect(response.body).toHaveProperty("totalPages", expect.any(Number)); + expect(response.body).toHaveProperty("currentPage", expect.any(Number)); + expect(response.body).toHaveProperty("pageSize", 5); + expect(Array.isArray(response.body.cards)).toBeTruthy(); + expect(response.body.cards.length).toBe(5); }); test("401 get cards with invalid token", async () => { @@ -233,3 +307,28 @@ describe("DELETE /cards/favorite/delete/:favoriteId", () => { expect(response.body).toHaveProperty("message", "Invalid token"); }); }); + +describe("GET /archetype", () => { + test("200 success get archetype", async () => { + const response = await request(app) + .get("/archetype") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(Array.isArray(response.body)).toBeTruthy(); + expect(response.body[0]).toHaveProperty("name", expect.any(String)); + expect(response.body.length).toBeGreaterThan(0); + }); + + test("401 get archetype with invalid token", async () => { + const response = await request(app) + .get("/archetype") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); +}); diff --git a/server/__test__/user.test.js b/server/__test__/user.test.js index 32322597..7dd73f7e 100644 --- a/server/__test__/user.test.js +++ b/server/__test__/user.test.js @@ -26,6 +26,26 @@ describe("User Routes Test", () => { expect(response.body).toHaveProperty("email", user.email); }); + test("400 Failed register - should return error if username is null", async () => { + const response = await request(app).post("/register").send({ + email: "testing@gmail.com", + password: "123456", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty("message", "Username is required"); + }); + + test("400 Failed register - should return error if password is null", async () => { + const response = await request(app).post("/register").send({ + username: "test", + email: "testing@gmail.com", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty("message", "Password is required"); + }); + test("400 Failed register - should return error if email is null", async () => { const response = await request(app).post("/register").send({ username: "test", @@ -86,6 +106,37 @@ describe("User Routes Test", () => { expect(response.body).toHaveProperty("access_token", expect.any(String)); }); + test("401 Failed login - email is empty", async () => { + const response = await request(app).post("/login").send({ + password: "hahahehe", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty("message", "Email is required"); + }); + + test("401 Failed login - password is empty", async () => { + const response = await request(app).post("/login").send({ + email: "forestoay23@gmail.com", + }); + + expect(response.status).toBe(400); + expect(response.body).toHaveProperty("message", "Password is required"); + }); + + test("401 Failed login - invalid email or password", async () => { + const response = await request(app).post("/login").send({ + email: "forestoay23@gmail.com", + password: "hahahehe", + }); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty( + "message", + "Invalid email or password" + ); + }); + test("401 Failed login - invalid email or password", async () => { const response = await request(app).post("/login").send({ email: "forestoay@gmail.com", diff --git a/server/app.js b/server/app.js index 78331e9b..6ae5f2e3 100644 --- a/server/app.js +++ b/server/app.js @@ -30,6 +30,8 @@ app.post("/cards/favorite/add/:cardId", CardController.createFavorite); app.put("/cards/favorite/edit/:favoriteId", CardController.updateFavorite); app.delete("/cards/favorite/delete/:favoriteId", CardController.deleteFavorite); +app.get("/archetype", CardController.getCardArchetype); + app.use(errorHandler); module.exports = app; diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index d2c86d0b..5ad9f945 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -4,12 +4,47 @@ const axios = require("axios"); class CardController { static async getAllCard(req, res, next) { try { + const { + query: { archetype, name, sort = "asc", page = 1, pageSize = 10 }, + } = req; + const response = await axios.get( "https://db.ygoprodeck.com/api/v7/cardinfo.php" ); - const cardsFromApi = response.data.data; + let cardsFromApi = response.data.data; + + // Filter by archetype if provided + if (archetype) { + cardsFromApi = cardsFromApi.filter( + (card) => card.archetype === archetype + ); + } + + // Search by name if provided + if (name) { + cardsFromApi = cardsFromApi.filter((card) => + card.name.toLowerCase().includes(name.toLowerCase()) + ); + } - const processedCards = cardsFromApi.map((card) => ({ + // Sort by level if provided + if (sort === "asc") { + cardsFromApi.sort((a, b) => (a.level || 0) - (b.level || 0)); + } else if (sort === "desc") { + cardsFromApi.sort((a, b) => (b.level || 0) - (a.level || 0)); + } + + // Pagination + const pageNumber = parseInt(page, 10) || 1; + const pageSizeNumber = parseInt(pageSize, 10) || 10; + const totalCards = cardsFromApi.length; + const offset = (pageNumber - 1) * pageSizeNumber; + const paginatedCards = cardsFromApi.slice( + offset, + offset + pageSizeNumber + ); + + const processedCards = paginatedCards.map((card) => ({ id: card.id, name: card.name, type: card.type, @@ -25,7 +60,13 @@ class CardController { price: card.card_prices[0]?.cardmarket_price || null, })); - res.status(200).json(processedCards); + res.status(200).json({ + totalCards, + totalPages: Math.ceil(totalCards / pageSizeNumber), + currentPage: pageNumber, + pageSize: pageSizeNumber, + cards: processedCards, + }); } catch (err) { next(err); } @@ -106,13 +147,9 @@ class CardController { static async createFavorite(req, res, next) { try { - const response = await axios.get( + await axios.get( `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${req.params.cardId}` ); - const card = response.data.data[0]; - if (!card) { - throw { name: "NotFound", message: "Card not found" }; - } const favorite = await Favorite.create({ userId: req.user.id, cardId: req.params.cardId, @@ -153,6 +190,21 @@ class CardController { next(err); } } + + static async getCardArchetype(req, res, next) { + try { + const response = await axios.get( + "https://db.ygoprodeck.com/api/v7/archetypes.php" + ); + + let archetypeApi = response.data.map((archetype) => ({ + name: archetype.archetype_name, + })); + res.status(200).json(archetypeApi); + } catch (err) { + next(err); + } + } } module.exports = CardController; diff --git a/server/package.json b/server/package.json index b2cec7ac..c7863c11 100644 --- a/server/package.json +++ b/server/package.json @@ -5,7 +5,8 @@ "main": "index.js", "scripts": { "test": "jest --runInBand --forceExit --verbose --detectOpenHandles", - "dev": "nodemon bin/www" + "dev": "nodemon bin/www", + "test:coverage": "jest --coverage --runInBand --forceExit --verbose --detectOpenHandles" }, "keywords": [], "author": "", From 2ea23e4867d4a55587a8c1b9fc76461154f4a7eb Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 08:15:56 +0700 Subject: [PATCH 021/110] feat: vite project setup with tailwindcss --- client/.gitignore | 24 + client/README.md | 8 + client/eslint.config.js | 38 + client/index.html | 13 + client/package-lock.json | 5348 +++++++++++++++++++++++++++++++++ client/package.json | 33 + client/postcss.config.js | 6 + client/public/vite.svg | 1 + client/src/App.jsx | 8 + client/src/assets/react.svg | 1 + client/src/helper/baseUrl.jsx | 5 + client/src/index.css | 3 + client/src/main.jsx | 10 + client/src/router.jsx | 39 + client/tailwind.config.js | 8 + client/vite.config.js | 7 + 16 files changed, 5552 insertions(+) create mode 100644 client/.gitignore create mode 100644 client/README.md create mode 100644 client/eslint.config.js create mode 100644 client/index.html create mode 100644 client/package-lock.json create mode 100644 client/package.json create mode 100644 client/postcss.config.js create mode 100644 client/public/vite.svg create mode 100644 client/src/App.jsx create mode 100644 client/src/assets/react.svg create mode 100644 client/src/helper/baseUrl.jsx create mode 100644 client/src/index.css create mode 100644 client/src/main.jsx create mode 100644 client/src/router.jsx create mode 100644 client/tailwind.config.js create mode 100644 client/vite.config.js diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/client/README.md b/client/README.md new file mode 100644 index 00000000..f768e33f --- /dev/null +++ b/client/README.md @@ -0,0 +1,8 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/client/eslint.config.js b/client/eslint.config.js new file mode 100644 index 00000000..238d2e4e --- /dev/null +++ b/client/eslint.config.js @@ -0,0 +1,38 @@ +import js from '@eslint/js' +import globals from 'globals' +import react from 'eslint-plugin-react' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + settings: { react: { version: '18.3' } }, + plugins: { + react, + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + ...reactHooks.configs.recommended.rules, + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/client/index.html b/client/index.html new file mode 100644 index 00000000..0c589ecc --- /dev/null +++ b/client/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/client/package-lock.json b/client/package-lock.json new file mode 100644 index 00000000..790b92e7 --- /dev/null +++ b/client/package-lock.json @@ -0,0 +1,5348 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "client", + "version": "0.0.0", + "dependencies": { + "axios": "^1.7.7", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.26.1" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "eslint": "^9.9.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "postcss": "^8.4.44", + "tailwindcss": "^3.4.10", + "vite": "^5.4.1" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.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, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "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/generator": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.6", + "@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-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "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", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "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, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" + }, + "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", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "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" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "dev": true, + "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.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "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, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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, + "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, + "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, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "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, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@remix-run/router": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", + "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", + "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", + "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", + "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", + "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", + "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", + "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", + "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", + "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", + "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", + "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", + "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", + "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", + "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", + "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", + "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", + "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "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, + "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, + "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, + "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, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "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 + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", + "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "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, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "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", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "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, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "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" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001655", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", + "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", + "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" + } + ] + }, + "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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "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/chokidar/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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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, + "dependencies": { + "color-name": "1.1.3" + } + }, + "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 + }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "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 + }, + "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 + }, + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "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.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.35.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", + "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.1.0-rc-fb9a90fa48-20240614", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz", + "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.11.tgz", + "integrity": "sha512-wrAKxMbVr8qhXTtIKfXqAn5SAtRZt0aXxe5P23Fh4pUAdC6XEsybGLB8P0PI4j1yYqOgUEUlzKAGDfo7rJOjcw==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/eslint/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.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==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/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, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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 + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.8.tgz", + "integrity": "sha512-xgrmBhBToVKay1q2Tao5LI26B83UhrB/vM1avwVSDzt8rx3rO6AizBAaF46EgksTVr+rFTQaqZZ9MVBfUe4nig==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "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==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "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, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "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, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "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, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "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/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "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, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "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, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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 + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "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, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "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", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "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" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "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/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": 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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.44", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz", + "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-import/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, + "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/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "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/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", + "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", + "dependencies": { + "@remix-run/router": "1.19.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", + "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", + "dependencies": { + "@remix-run/router": "1.19.1", + "react-router": "6.26.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz", + "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", + "dev": true, + "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.21.2", + "@rollup/rollup-android-arm64": "4.21.2", + "@rollup/rollup-darwin-arm64": "4.21.2", + "@rollup/rollup-darwin-x64": "4.21.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", + "@rollup/rollup-linux-arm-musleabihf": "4.21.2", + "@rollup/rollup-linux-arm64-gnu": "4.21.2", + "@rollup/rollup-linux-arm64-musl": "4.21.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", + "@rollup/rollup-linux-riscv64-gnu": "4.21.2", + "@rollup/rollup-linux-s390x-gnu": "4.21.2", + "@rollup/rollup-linux-x64-gnu": "4.21.2", + "@rollup/rollup-linux-x64-musl": "4.21.2", + "@rollup/rollup-win32-arm64-msvc": "4.21.2", + "@rollup/rollup-win32-ia32-msvc": "4.21.2", + "@rollup/rollup-win32-x64-msvc": "4.21.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", + "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/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, + "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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "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, + "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, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "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" + } + ], + "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", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/vite": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz", + "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.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": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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/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, + "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/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 00000000..7787a54b --- /dev/null +++ b/client/package.json @@ -0,0 +1,33 @@ +{ + "name": "client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.7.7", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.26.1" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "eslint": "^9.9.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "postcss": "^8.4.44", + "tailwindcss": "^3.4.10", + "vite": "^5.4.1" + } +} diff --git a/client/postcss.config.js b/client/postcss.config.js new file mode 100644 index 00000000..2e7af2b7 --- /dev/null +++ b/client/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/client/public/vite.svg b/client/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/App.jsx b/client/src/App.jsx new file mode 100644 index 00000000..6e7a27cd --- /dev/null +++ b/client/src/App.jsx @@ -0,0 +1,8 @@ +import { RouterProvider } from "react-router-dom"; +import { router } from "./router"; + +function App() { + return ; +} + +export default App; diff --git a/client/src/assets/react.svg b/client/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/client/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/helper/baseUrl.jsx b/client/src/helper/baseUrl.jsx new file mode 100644 index 00000000..a6a28635 --- /dev/null +++ b/client/src/helper/baseUrl.jsx @@ -0,0 +1,5 @@ +import axios from "axios"; + +export const baseUrl = axios.create({ + baseURL: "https://yugioh.forestoay.xyz/", +}); diff --git a/client/src/index.css b/client/src/index.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/client/src/index.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/client/src/main.jsx b/client/src/main.jsx new file mode 100644 index 00000000..89f91e54 --- /dev/null +++ b/client/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import App from './App.jsx' +import './index.css' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/client/src/router.jsx b/client/src/router.jsx new file mode 100644 index 00000000..d71b1d7c --- /dev/null +++ b/client/src/router.jsx @@ -0,0 +1,39 @@ +import { createBrowserRouter, redirect } from "react-router-dom"; + +export const router = createBrowserRouter([ + { + path: "/", + // loader: () => { + // const access_token = localStorage.getItem("access_token"); + // if (access_token) { + // throw redirect("/"); + // } + // return null; + // }, + children: [ + { + path: "/register", + element:

Register Page

, + }, + { + path: "/login", + element:

Login Page

, + }, + ], + }, + { + path: "/", + // loader: () => { + // const access_token = localStorage.getItem("access_token"); + // if (access_token) { + // return null; + // } + // throw redirect("/login"); + // }, + children: [ + { + path: "/cards", + }, + ], + }, +]); diff --git a/client/tailwind.config.js b/client/tailwind.config.js new file mode 100644 index 00000000..614c86b4 --- /dev/null +++ b/client/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/client/vite.config.js b/client/vite.config.js new file mode 100644 index 00000000..5a33944a --- /dev/null +++ b/client/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 8c861484912eeea1692e6bcb24f1b7819cd80275 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:29:23 +0700 Subject: [PATCH 022/110] feat: add tailwind css --- client/package-lock.json | 34 ++++++++++++++++++++++++++++++++-- client/package.json | 4 +++- client/src/index.css | 4 ++++ client/tailwind.config.js | 1 + 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 790b92e7..9db5ed22 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9,9 +9,11 @@ "version": "0.0.0", "dependencies": { "axios": "^1.7.7", + "cors": "^2.8.5", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.26.1" + "react-router-dom": "^6.26.1", + "sweetalert2": "^11.13.1" }, "devDependencies": { "@eslint/js": "^9.9.0", @@ -1798,6 +1800,18 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3689,7 +3703,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4772,6 +4785,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sweetalert2": { + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.13.1.tgz", + "integrity": "sha512-YO6StPWC+6WmXJbPDHIiOhi5ZNU9Lb2XnWo3odKGwbFOtfCOBqzExNcLK85HS2GzIMjpl8Wl6CLiMQdhRXHN0g==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, "node_modules/tailwindcss": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", @@ -5025,6 +5047,14 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vite": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz", diff --git a/client/package.json b/client/package.json index 7787a54b..c41ff364 100644 --- a/client/package.json +++ b/client/package.json @@ -11,9 +11,11 @@ }, "dependencies": { "axios": "^1.7.7", + "cors": "^2.8.5", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.26.1" + "react-router-dom": "^6.26.1", + "sweetalert2": "^11.13.1" }, "devDependencies": { "@eslint/js": "^9.9.0", diff --git a/client/src/index.css b/client/src/index.css index b5c61c95..3f7ae6d0 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -1,3 +1,7 @@ @tailwind base; @tailwind components; @tailwind utilities; + +body { + @apply bg-white dark:bg-gray-900; +} diff --git a/client/tailwind.config.js b/client/tailwind.config.js index 614c86b4..2adfb707 100644 --- a/client/tailwind.config.js +++ b/client/tailwind.config.js @@ -4,5 +4,6 @@ export default { theme: { extend: {}, }, + darkMode: "class", plugins: [], }; From 43c723606f7caa834037506809bb17ac0e80ef7c Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:30:50 +0700 Subject: [PATCH 023/110] feat: add navbar in components --- client/src/components/Navbar.jsx | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 client/src/components/Navbar.jsx diff --git a/client/src/components/Navbar.jsx b/client/src/components/Navbar.jsx new file mode 100644 index 00000000..4a2d94ba --- /dev/null +++ b/client/src/components/Navbar.jsx @@ -0,0 +1,33 @@ +import { Link } from "react-router-dom"; +import DarkModeToggle from "./DarkModeToggle"; + +export default function Navbar() { + return ( + + ); +} From dc3b44ac4a2afb86a64de4091795c74cdf8d4bfe Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:31:04 +0700 Subject: [PATCH 024/110] add dark mode toggle in components --- client/src/components/DarkModeToggle.css | 71 ++++++++ client/src/components/DarkModeToggle.jsx | 205 +++++++++++++++++++++++ 2 files changed, 276 insertions(+) create mode 100644 client/src/components/DarkModeToggle.css create mode 100644 client/src/components/DarkModeToggle.jsx diff --git a/client/src/components/DarkModeToggle.css b/client/src/components/DarkModeToggle.css new file mode 100644 index 00000000..73c90953 --- /dev/null +++ b/client/src/components/DarkModeToggle.css @@ -0,0 +1,71 @@ +/* The switch - the box around the slider */ +#theme-toggle-button { + font-size: 17px; + position: relative; + display: inline-block; + width: 7em; + cursor: pointer; +} + +/* Hide default HTML checkbox */ +#toggle { + opacity: 0; + width: 0; + height: 0; +} + +#container, +#patches, +#stars, +#button, +#sun, +#moon, +#cloud { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 0.25s; +} + +/* night sky background */ +#toggle:checked + svg #container { + fill: #2b4360; +} + +/* move button to right when checked */ +#toggle:checked + svg #button { + transform: translate(28px, 2.333px); +} + +/* show/hide sun and moon based on checkbox state */ +#sun { + opacity: 1; +} + +#toggle:checked + svg #sun { + opacity: 0; +} + +#moon { + opacity: 0; +} + +#toggle:checked + svg #moon { + opacity: 1; +} + +/* show or hide background items on checkbox state */ +#cloud { + opacity: 1; +} + +#toggle:checked + svg #cloud { + opacity: 0; +} + +#stars { + opacity: 0; +} + +#toggle:checked + svg #stars { + opacity: 1; +} diff --git a/client/src/components/DarkModeToggle.jsx b/client/src/components/DarkModeToggle.jsx new file mode 100644 index 00000000..52b26d06 --- /dev/null +++ b/client/src/components/DarkModeToggle.jsx @@ -0,0 +1,205 @@ +import { useState, useEffect } from "react"; +import "./DarkModeToggle.css"; + +export default function DarkModeToggle() { + const [darkMode, setDarkMode] = useState(true); + + useEffect(() => { + if (darkMode) { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); + } + }, [darkMode]); + + return ( +
+ +
+ ); +} From 012925a7d748d60c71dadeb27d8bb6e94d56629d Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:32:47 +0700 Subject: [PATCH 025/110] refactor: remove cors from package --- client/package-lock.json | 22 +--------------------- client/package.json | 1 - 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 9db5ed22..5d29315d 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9,7 +9,6 @@ "version": "0.0.0", "dependencies": { "axios": "^1.7.7", - "cors": "^2.8.5", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.26.1", @@ -1800,18 +1799,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3703,6 +3690,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5047,14 +5035,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vite": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz", diff --git a/client/package.json b/client/package.json index c41ff364..c6b4d649 100644 --- a/client/package.json +++ b/client/package.json @@ -11,7 +11,6 @@ }, "dependencies": { "axios": "^1.7.7", - "cors": "^2.8.5", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.26.1", From 134202a74a9dffceee31d72533a7c43e23e85ffe Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:37:39 +0700 Subject: [PATCH 026/110] add cors on server --- server/app.js | 2 ++ server/package-lock.json | 21 +++++++++++++++++++++ server/package.json | 1 + 3 files changed, 24 insertions(+) diff --git a/server/app.js b/server/app.js index 6ae5f2e3..73058919 100644 --- a/server/app.js +++ b/server/app.js @@ -9,9 +9,11 @@ const CardController = require("./controllers/CardController"); const authentication = require("./middlewares/authentication"); const app = express(); +const cors = require("cors"); app.use(express.urlencoded({ extended: true })); app.use(express.json()); +app.use(cors()); // Register & Login app.post("/register", UserController.register); diff --git a/server/package-lock.json b/server/package-lock.json index ab46c493..213d0be1 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -12,6 +12,7 @@ "@jest/globals": "^29.7.0", "axios": "^1.7.7", "bcryptjs": "^2.4.3", + "cors": "^2.8.5", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", "pg": "^8.12.0", @@ -1871,6 +1872,18 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -4233,6 +4246,14 @@ "node": ">=8" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", diff --git a/server/package.json b/server/package.json index c7863c11..83ba74ae 100644 --- a/server/package.json +++ b/server/package.json @@ -15,6 +15,7 @@ "@jest/globals": "^29.7.0", "axios": "^1.7.7", "bcryptjs": "^2.4.3", + "cors": "^2.8.5", "express": "^4.19.2", "jsonwebtoken": "^9.0.2", "pg": "^8.12.0", From a188d35ce2fa1cd4df85d972de1f24548046254b Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:46:47 +0700 Subject: [PATCH 027/110] chore: update .gitignore --- server/.gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/.gitignore b/server/.gitignore index 1dcef2d9..cbb72318 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -1,2 +1,3 @@ node_modules -.env \ No newline at end of file +.env +coverage \ No newline at end of file From dfaca028aed127ba4ffb2319007f28f7d5b418c0 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:49:15 +0700 Subject: [PATCH 028/110] feat: add register page --- client/src/pages/RegisterPage.jsx | 115 ++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 client/src/pages/RegisterPage.jsx diff --git a/client/src/pages/RegisterPage.jsx b/client/src/pages/RegisterPage.jsx new file mode 100644 index 00000000..51e9a53e --- /dev/null +++ b/client/src/pages/RegisterPage.jsx @@ -0,0 +1,115 @@ +import { useState } from "react"; +import { Link, useNavigate } from "react-router-dom"; +import { baseUrl } from "../helper/baseUrl"; +import Swal from "sweetalert2"; + +export default function RegisterPage() { + const [username, setUsername] = useState(""); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + + const navigate = useNavigate(); + + const handleOnRegister = async (e) => { + e.preventDefault(); + try { + await baseUrl.post("/register", { + username, + email, + password, + }); + + setUsername(""); + setEmail(""); + setPassword(""); + navigate("/login"); + } catch (err) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response.data.error, + }); + console.log(err); + } + }; + + return ( + <> +
+
+

Register Page

+
+
+
+ setUsername(e.target.value)} + /> + +
+
+ setEmail(e.target.value)} + /> + +
+
+ setPassword(e.target.value)} + /> + +
+
+

+ Have an account?{" "} + + Login here + +

+
+ +
+
+ + ); +} From bda8a7be5b279be71c188d4347cbef4e78e68a01 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:52:04 +0700 Subject: [PATCH 029/110] feat: add login page --- client/src/pages/LoginPage.jsx | 110 +++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 client/src/pages/LoginPage.jsx diff --git a/client/src/pages/LoginPage.jsx b/client/src/pages/LoginPage.jsx new file mode 100644 index 00000000..eecf081d --- /dev/null +++ b/client/src/pages/LoginPage.jsx @@ -0,0 +1,110 @@ +import { useState } from "react"; +import { Link, useNavigate } from "react-router-dom"; +import { baseUrl } from "../helper/baseUrl"; +import Swal from "sweetalert2"; + +export default function LoginPage() { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const navigate = useNavigate(); + + const handleLogin = async (e) => { + e.preventDefault(); + try { + const response = await baseUrl.post("/login", { + email, + password, + }); + + localStorage.setItem("access_token", response.data.access_token); + console.log(response.data, "<<< response data"); + const Toast = Swal.mixin({ + toast: true, + position: "top-end", + showConfirmButton: false, + timer: 3000, + timerProgressBar: true, + didOpen: (toast) => { + toast.onmouseenter = Swal.stopTimer; + toast.onmouseleave = Swal.resumeTimer; + }, + }); + Toast.fire({ + icon: "success", + title: `Signed in successfully as ${email}`, + }); + + navigate("/cards"); + } catch (err) { + console.log(err); + + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response.data.error, + }); + } + }; + + return ( + <> +
+
+

Login Page

+
+
+
+ setEmail(e.target.value)} + /> + +
+
+ setPassword(e.target.value)} + /> + +
+
+

+ Don't have an account?{" "} + + Register here + +

+
+ +
+
+ + ); +} From cd8b79102e20c87596caca13caabef7e70cdc741 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 10:52:20 +0700 Subject: [PATCH 030/110] feat: add root layout --- client/src/layouts/RootLayout.jsx | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 client/src/layouts/RootLayout.jsx diff --git a/client/src/layouts/RootLayout.jsx b/client/src/layouts/RootLayout.jsx new file mode 100644 index 00000000..705c6cdc --- /dev/null +++ b/client/src/layouts/RootLayout.jsx @@ -0,0 +1,11 @@ +import { Outlet } from "react-router-dom"; +import Navbar from "../components/Navbar"; + +export default function RootLayout() { + return ( + <> + + + + ); +} From b525caec2088bd8ba57ed459fee31d014b8d5c81 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 11:41:47 +0700 Subject: [PATCH 031/110] feat: add sidebar --- client/src/components/Sidebar.jsx | 79 +++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 client/src/components/Sidebar.jsx diff --git a/client/src/components/Sidebar.jsx b/client/src/components/Sidebar.jsx new file mode 100644 index 00000000..2623eccb --- /dev/null +++ b/client/src/components/Sidebar.jsx @@ -0,0 +1,79 @@ +import { Link } from "react-router-dom"; + +export default function Sidebar() { + return ( + + ); +} From 268bd30cdc1d5956a825dacdb47a8473a828cd61 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 11:42:13 +0700 Subject: [PATCH 032/110] style: add style to navbar and rootlayout for more scalable --- client/src/components/Navbar.jsx | 28 ++++++++++++++++++++++------ client/src/layouts/RootLayout.jsx | 6 +++++- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/client/src/components/Navbar.jsx b/client/src/components/Navbar.jsx index 4a2d94ba..8ad0f8c4 100644 --- a/client/src/components/Navbar.jsx +++ b/client/src/components/Navbar.jsx @@ -1,13 +1,19 @@ -import { Link } from "react-router-dom"; +import { Link, useNavigate } from "react-router-dom"; import DarkModeToggle from "./DarkModeToggle"; export default function Navbar() { + const navigate = useNavigate(); + const handleLogout = () => { + localStorage.removeItem("access_token"); + navigate("/login"); + }; + return ( diff --git a/client/src/layouts/RootLayout.jsx b/client/src/layouts/RootLayout.jsx index 705c6cdc..49f40acd 100644 --- a/client/src/layouts/RootLayout.jsx +++ b/client/src/layouts/RootLayout.jsx @@ -1,11 +1,15 @@ import { Outlet } from "react-router-dom"; import Navbar from "../components/Navbar"; +import Sidebar from "../components/Sidebar"; export default function RootLayout() { return ( <> - + {localStorage.getItem("access_token") && } +
+ +
); } From ffc11cdd90ddae49939e8b464e28f1c4540be122 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 11:42:29 +0700 Subject: [PATCH 033/110] feat: add logo in public images --- client/public/images/Yu-Gi-Oh_logo.png | Bin 0 -> 451220 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 client/public/images/Yu-Gi-Oh_logo.png diff --git a/client/public/images/Yu-Gi-Oh_logo.png b/client/public/images/Yu-Gi-Oh_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..752776f661f57559cc82a946db18c4a97ad4f04c GIT binary patch literal 451220 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ⓈA6|~)iBb^IPe!t9~wXKJ|1i-(bG>3)? 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�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%0D-8q^Af9}-3?SrUl(1Yq>QR{}wI;wgm-%JUI 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

5KH`GG)HWYP(h< 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 literal 0 HcmV?d00001 From bfff8b0476d7763159937c3ed7d6e992b024a966 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 11:43:14 +0700 Subject: [PATCH 034/110] style: change background color --- client/src/index.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/index.css b/client/src/index.css index 3f7ae6d0..fab2bdab 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -3,5 +3,5 @@ @tailwind utilities; body { - @apply bg-white dark:bg-gray-900; + @apply bg-gray-50 dark:bg-gray-950; } From 534e5833892d0fc88e3b512a9a78f3c2cb66dbf7 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 11:43:41 +0700 Subject: [PATCH 035/110] add loader to guard url --- client/src/router.jsx | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/client/src/router.jsx b/client/src/router.jsx index d71b1d7c..f90fd204 100644 --- a/client/src/router.jsx +++ b/client/src/router.jsx @@ -1,38 +1,45 @@ import { createBrowserRouter, redirect } from "react-router-dom"; +import RegisterPage from "./pages/RegisterPage"; +import RootLayout from "./layouts/RootLayout"; +import LoginPage from "./pages/LoginPage"; +import CardPage from "./pages/CardPage"; export const router = createBrowserRouter([ { path: "/", - // loader: () => { - // const access_token = localStorage.getItem("access_token"); - // if (access_token) { - // throw redirect("/"); - // } - // return null; - // }, + element: , + loader: () => { + const access_token = localStorage.getItem("access_token"); + if (access_token) { + throw redirect("/"); + } + return null; + }, children: [ { path: "/register", - element:

Register Page

, + element: , }, { path: "/login", - element:

Login Page

, + element: , }, ], }, { path: "/", - // loader: () => { - // const access_token = localStorage.getItem("access_token"); - // if (access_token) { - // return null; - // } - // throw redirect("/login"); - // }, + element: , + loader: () => { + const access_token = localStorage.getItem("access_token"); + if (access_token) { + return null; + } + throw redirect("/login"); + }, children: [ { path: "/cards", + element: , }, ], }, From c5e62a7e14527ef8cd1cacd7c74200c5d31ef62c Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 16:38:13 +0700 Subject: [PATCH 036/110] refactor: remove console log --- client/src/pages/LoginPage.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/src/pages/LoginPage.jsx b/client/src/pages/LoginPage.jsx index eecf081d..27b00b92 100644 --- a/client/src/pages/LoginPage.jsx +++ b/client/src/pages/LoginPage.jsx @@ -15,9 +15,8 @@ export default function LoginPage() { email, password, }); - + localStorage.setItem("access_token", response.data.access_token); - console.log(response.data, "<<< response data"); const Toast = Swal.mixin({ toast: true, position: "top-end", From c017d17d1149c615fc9b0f8ddca35a163d186f39 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 16:39:04 +0700 Subject: [PATCH 037/110] style: add style on div rootlayout --- client/src/layouts/RootLayout.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/layouts/RootLayout.jsx b/client/src/layouts/RootLayout.jsx index 49f40acd..1968b5f3 100644 --- a/client/src/layouts/RootLayout.jsx +++ b/client/src/layouts/RootLayout.jsx @@ -7,7 +7,7 @@ export default function RootLayout() { <> {localStorage.getItem("access_token") && } -
+
From 699bf4647357b315f44765535f8b8393950ddffb Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 16:39:15 +0700 Subject: [PATCH 038/110] style: change icon sidebar --- client/src/components/Sidebar.jsx | 81 +++++++++++-------------------- 1 file changed, 27 insertions(+), 54 deletions(-) diff --git a/client/src/components/Sidebar.jsx b/client/src/components/Sidebar.jsx index 2623eccb..82735d48 100644 --- a/client/src/components/Sidebar.jsx +++ b/client/src/components/Sidebar.jsx @@ -1,4 +1,8 @@ import { Link } from "react-router-dom"; +import { GiCardPlay } from "react-icons/gi"; +import { MdFavorite } from "react-icons/md"; +import { TbNumber123 } from "react-icons/tb"; +import { IoLogoGameControllerB } from "react-icons/io"; export default function Sidebar() { return ( @@ -9,67 +13,36 @@ export default function Sidebar() { >
    + +
  • +

    + + Cards +

    +
  • + + +
  • +

    + + + My Favorite + +

    +
  • +
  • - - Cards -

    -
  • -
  • -

    - - My Favorite - - Pro - -

    -
  • -
  • -

    - + Combo - - 3 -

  • - - Minigames + + + Minigames (soon) +

From 06b1397e3fd8e6f86f15e6248f321c710267f5a5 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 16:39:38 +0700 Subject: [PATCH 039/110] feat: add react icon package --- client/package-lock.json | 9 +++++++++ client/package.json | 1 + 2 files changed, 10 insertions(+) diff --git a/client/package-lock.json b/client/package-lock.json index 5d29315d..561e2acf 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -11,6 +11,7 @@ "axios": "^1.7.7", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-icons": "^5.3.0", "react-router-dom": "^6.26.1", "sweetalert2": "^11.13.1" }, @@ -4197,6 +4198,14 @@ "react": "^18.3.1" } }, + "node_modules/react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", diff --git a/client/package.json b/client/package.json index c6b4d649..99aa6ae8 100644 --- a/client/package.json +++ b/client/package.json @@ -13,6 +13,7 @@ "axios": "^1.7.7", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-icons": "^5.3.0", "react-router-dom": "^6.26.1", "sweetalert2": "^11.13.1" }, From f830662d6c30968ec50b7502d02e450116f8f7b6 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 16:39:52 +0700 Subject: [PATCH 040/110] feat: add new route for favorites --- client/src/router.jsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/client/src/router.jsx b/client/src/router.jsx index f90fd204..c007828e 100644 --- a/client/src/router.jsx +++ b/client/src/router.jsx @@ -3,6 +3,8 @@ import RegisterPage from "./pages/RegisterPage"; import RootLayout from "./layouts/RootLayout"; import LoginPage from "./pages/LoginPage"; import CardPage from "./pages/CardPage"; +import CardDetailPage from "./pages/CardDetailPage"; +import FavoritePage from "./pages/FavoritePage"; export const router = createBrowserRouter([ { @@ -16,6 +18,13 @@ export const router = createBrowserRouter([ return null; }, children: [ + { + path: "/", + index: true, + loader: () => { + throw redirect("/login"); + }, + }, { path: "/register", element: , @@ -41,6 +50,14 @@ export const router = createBrowserRouter([ path: "/cards", element: , }, + { + path: "/cards/:cardId", + element: , + }, + { + path: "/cards/favorite", + element: , + }, ], }, ]); From 9a6ba5f31d4250e8d9d36c4c63476e0b0622dba7 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 16:40:16 +0700 Subject: [PATCH 041/110] fix: fix pagination, sort --- client/src/pages/CardPage.jsx | 268 ++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 client/src/pages/CardPage.jsx diff --git a/client/src/pages/CardPage.jsx b/client/src/pages/CardPage.jsx new file mode 100644 index 00000000..8f3b3693 --- /dev/null +++ b/client/src/pages/CardPage.jsx @@ -0,0 +1,268 @@ +import { useState, useEffect } from "react"; +import axios from "axios"; +import Swal from "sweetalert2"; +import { Link } from "react-router-dom"; + +export default function CardPage() { + const [search, setSearch] = useState(""); + const [archetype, setArchetype] = useState(""); + const [sort, setSort] = useState("DESC"); + const [page, setPage] = useState(1); + const [cards, setCards] = useState({ + cards: [], + pagination: { + currentPage: 1, + totalPages: 1, + totalRows: 0, + }, + }); + const [archetypes, setArchetypes] = useState([]); + const [debouncedSearch, setDebouncedSearch] = useState(search); + + const BASE_URL = "https://yugioh.forestoay.xyz/"; + + // Fetch cards based on debounced search + const fetchCards = async () => { + const url = new URL(BASE_URL); + url.pathname = "/cards"; + + if (debouncedSearch) { + url.searchParams.append("name", debouncedSearch); + } + + if (archetype) { + url.searchParams.append("archetype", archetype); + } + + url.searchParams.append("page", page.toString()); + url.searchParams.append("sort", sort); + + try { + const response = await axios.get(url.toString(), { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + }); + + setCards({ + cards: response.data.cards, + pagination: { + currentPage: response.data.currentPage, + totalPages: response.data.totalPages, + totalRows: response.data.totalCards, + }, + }); + } catch (err) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response?.data?.message || "An error occurred", + }); + console.log(err, "<<< e - fetchCards"); + } + }; + + const fetchArchetypes = async () => { + const url = new URL(BASE_URL); + url.pathname = "/archetype"; + + try { + const response = await axios.get(url.toString(), { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + }); + + setArchetypes(response.data); + } catch (err) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response?.data?.message || "An error occurred", + }); + console.log(err, "<<< e - fetchArchetypes"); + } + }; + + useEffect(() => { + fetchArchetypes(); + }, []); + + // Debounce search input + useEffect(() => { + const handler = setTimeout(() => { + setDebouncedSearch(search); + }, 1000); + + return () => { + clearTimeout(handler); + }; + }, [search]); + + useEffect(() => { + fetchCards(); + }, [debouncedSearch, sort, page, archetype]); + + // Pagination siblings logic + const getPaginationRange = () => { + const { currentPage, totalPages } = cards.pagination; + const siblings = 2; // Number of page numbers to show around the current page + const range = []; + + if (totalPages <= siblings * 2 + 1) { + for (let i = 1; i <= totalPages; i++) { + range.push(i); + } + } else { + if (currentPage <= siblings + 1) { + for (let i = 1; i <= siblings * 2 + 1; i++) { + range.push(i); + } + range.push("..."); + range.push(totalPages); + } else if (currentPage >= totalPages - siblings) { + range.push(1); + range.push("..."); + for (let i = totalPages - siblings * 2; i <= totalPages; i++) { + range.push(i); + } + } else { + range.push(1); + range.push("..."); + for (let i = currentPage - siblings; i <= currentPage + siblings; i++) { + range.push(i); + } + range.push("..."); + range.push(totalPages); + } + } + return range; + }; + + return ( +
+ {/* Search, Filter, and Sort */} +
+ {/* Search */} + { + setSearch(e.target.value); + setPage(1); + }} + className="p-2 border border-gray-300 rounded-md" + /> + + {/* Filter */} + + + {/* Sort */} + +
+ + {/* Card List */} +
+ {cards.cards.length > 0 ? ( + cards.cards.map((card) => ( +
+ + {card.name} + +
+ )) + ) : ( +

No cards found.

+ )} +
+ + {/* Pagination */} + +
+ ); +} From d68fca2a2ace5ec7db7613a4bb94e20999024d37 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 16:50:03 +0700 Subject: [PATCH 042/110] style: make logout button dark red --- client/src/components/Navbar.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/Navbar.jsx b/client/src/components/Navbar.jsx index 8ad0f8c4..5379cd55 100644 --- a/client/src/components/Navbar.jsx +++ b/client/src/components/Navbar.jsx @@ -27,7 +27,7 @@ export default function Navbar() { {localStorage.getItem("access_token") ? ( + +
+
+ + + ); +} From 119c49bf2e4cf1c0aa2eb03b537b608f2d4d36ee Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 19:54:19 +0700 Subject: [PATCH 048/110] feat: add favorite page --- client/src/pages/FavoritePage.jsx | 107 ++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 client/src/pages/FavoritePage.jsx diff --git a/client/src/pages/FavoritePage.jsx b/client/src/pages/FavoritePage.jsx new file mode 100644 index 00000000..b3ab14f2 --- /dev/null +++ b/client/src/pages/FavoritePage.jsx @@ -0,0 +1,107 @@ +import { useState } from "react"; +import { baseUrl } from "../helper/baseUrl"; +import { useEffect } from "react"; +import { Link } from "react-router-dom"; +import Swal from "sweetalert2"; + +export default function FavoritePage() { + const [favorites, setFavorites] = useState([]); + + const fetchFavorites = async () => { + try { + const favoritesResponse = await baseUrl.get("/cards/favorite", { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + }); + + setFavorites(favoritesResponse.data); + } catch (err) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response.data.message, + }); + console.log(err, "<<< err - fetchFavorites"); + } + }; + + useEffect(() => { + fetchFavorites(); + }, []); + + const handleOnDelete = async (favoriteId) => { + try { + Swal.fire({ + title: "Are you sure want to delete this card?", + showCancelButton: true, + confirmButtonText: "Yes", + }).then(async (result) => { + if (result.isConfirmed) { + try { + await baseUrl.delete(`/cards/favorite/delete/${favoriteId}`, { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + }); + Swal.fire({ + icon: "success", + title: "Card deleted", + showConfirmButton: false, + }); + await fetchFavorites(); + } catch (err) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response.data.message, + }); + } + } + }); + } catch (err) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response.data.message, + }); + console.log(err, "<<< e - handleOnDelete"); + } + }; + + return ( +
+
+ {favorites.length > 0 ? ( + favorites.map((favorite) => ( +
+ + {favorite.name} + +

+ Stock: {favorite.stock} +

+ + + + +
+ )) + ) : ( +

No favorite cards found.

+ )} +
+
+ ); +} From a576451f3ec6c5beeec3b9db9deb44284d4ddb25 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 19:54:32 +0700 Subject: [PATCH 049/110] feat: add edit favorite page by stock --- client/src/pages/EditFavorite.jsx | 76 +++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 client/src/pages/EditFavorite.jsx diff --git a/client/src/pages/EditFavorite.jsx b/client/src/pages/EditFavorite.jsx new file mode 100644 index 00000000..d1d6dbd0 --- /dev/null +++ b/client/src/pages/EditFavorite.jsx @@ -0,0 +1,76 @@ +import { useState } from "react"; +import { useNavigate, useParams } from "react-router-dom"; +import { baseUrl } from "../helper/baseUrl"; +import Swal from "sweetalert2"; + +export default function EditFavorite() { + const [stock, setStock] = useState(""); + const { favoriteId } = useParams(); + const navigate = useNavigate(); + + const handleOnUpdate = async (e) => { + e.preventDefault(); + try { + await baseUrl.put( + `/cards/favorite/edit/${favoriteId}`, + { + stock, + }, + { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + } + ); + + Swal.fire({ + icon: "success", + title: "Stock updated", + showConfirmButton: false, + timer: 1500, + }); + navigate("/cards/favorite"); + } catch (err) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: err.response.data.message, + }); + console.log(err, "<<< e - handleOnUpdate"); + } + }; + + return ( +
+
+

Edit stock

+
+
+
+ setStock(Number(e.target.value))} + /> + +
+ +
+
+ ); +} From 061e8ad781e3994c7f1539d3015d962965c7dbf8 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 19:54:59 +0700 Subject: [PATCH 050/110] chore: update sweetalert message --- client/src/pages/CardPage.jsx | 4 ++-- client/src/pages/LoginPage.jsx | 2 +- client/src/pages/RegisterPage.jsx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/pages/CardPage.jsx b/client/src/pages/CardPage.jsx index 8f3b3693..cc7dae37 100644 --- a/client/src/pages/CardPage.jsx +++ b/client/src/pages/CardPage.jsx @@ -56,7 +56,7 @@ export default function CardPage() { Swal.fire({ icon: "error", title: "Oops...", - text: err.response?.data?.message || "An error occurred", + text: err.response.data.message, }); console.log(err, "<<< e - fetchCards"); } @@ -78,7 +78,7 @@ export default function CardPage() { Swal.fire({ icon: "error", title: "Oops...", - text: err.response?.data?.message || "An error occurred", + text: err.response.data.message, }); console.log(err, "<<< e - fetchArchetypes"); } diff --git a/client/src/pages/LoginPage.jsx b/client/src/pages/LoginPage.jsx index 27b00b92..15f7c491 100644 --- a/client/src/pages/LoginPage.jsx +++ b/client/src/pages/LoginPage.jsx @@ -40,7 +40,7 @@ export default function LoginPage() { Swal.fire({ icon: "error", title: "Oops...", - text: err.response.data.error, + text: err.response.data.message, }); } }; diff --git a/client/src/pages/RegisterPage.jsx b/client/src/pages/RegisterPage.jsx index 51e9a53e..bd74017d 100644 --- a/client/src/pages/RegisterPage.jsx +++ b/client/src/pages/RegisterPage.jsx @@ -27,7 +27,7 @@ export default function RegisterPage() { Swal.fire({ icon: "error", title: "Oops...", - text: err.response.data.error, + text: err.response.data.message, }); console.log(err); } From 0caeb663039e9e47c9d7d8d0cad64716acebdbbc Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 19:57:19 +0700 Subject: [PATCH 051/110] feat: add minigames route --- client/src/router.jsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/router.jsx b/client/src/router.jsx index 6342f3ca..67b00948 100644 --- a/client/src/router.jsx +++ b/client/src/router.jsx @@ -6,6 +6,7 @@ import CardPage from "./pages/CardPage"; import CardDetailPage from "./pages/CardDetailPage"; import FavoritePage from "./pages/FavoritePage"; import EditFavorite from "./pages/EditFavorite"; +import MinigamesPage from "./pages/MinigamesPage"; export const router = createBrowserRouter([ { @@ -63,6 +64,10 @@ export const router = createBrowserRouter([ path: "/cards/favorite/edit/:favoriteId", element: , }, + { + path: "/minigames", + element: , + }, ], }, ]); From 093f301098af0071d6476ff136111fa4879802df Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 19:57:57 +0700 Subject: [PATCH 052/110] refactor: add link to minigames, remove combo --- client/src/components/Sidebar.jsx | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/client/src/components/Sidebar.jsx b/client/src/components/Sidebar.jsx index 82735d48..68a00c33 100644 --- a/client/src/components/Sidebar.jsx +++ b/client/src/components/Sidebar.jsx @@ -1,7 +1,6 @@ import { Link } from "react-router-dom"; import { GiCardPlay } from "react-icons/gi"; import { MdFavorite } from "react-icons/md"; -import { TbNumber123 } from "react-icons/tb"; import { IoLogoGameControllerB } from "react-icons/io"; export default function Sidebar() { @@ -31,20 +30,14 @@ export default function Sidebar() {

-
  • -

    - - Combo -

    -
  • -
  • -

    - - - Minigames (soon) - -

    -
  • + +
  • +

    + + Minigames +

    +
  • + From 74d9eca45cc3a635f9ea1a475c6cbd89fc4376fe Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 20:19:51 +0700 Subject: [PATCH 053/110] feat: add new route for random card, and random card in controller --- server/app.js | 1 + server/controllers/CardController.js | 29 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/server/app.js b/server/app.js index 73058919..f52431ad 100644 --- a/server/app.js +++ b/server/app.js @@ -33,6 +33,7 @@ app.put("/cards/favorite/edit/:favoriteId", CardController.updateFavorite); app.delete("/cards/favorite/delete/:favoriteId", CardController.deleteFavorite); app.get("/archetype", CardController.getCardArchetype); +app.get("/randomcard", CardController.randomCard); app.use(errorHandler); diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index 7d60bf2a..874b732f 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -207,6 +207,35 @@ class CardController { next(err); } } + + static async randomCard(req, res, next) { + try { + const response = await axios.get( + "https://db.ygoprodeck.com/api/v7/randomcard.php" + ); + + const randomCard = response.data.data[0]; + + const guessRandomCard = { + name: randomCard.name, + type: randomCard.type, + frameType: randomCard.frameType, + race: randomCard.race, + desc: randomCard.desc, + archetype: randomCard.archetype, + card_images: randomCard.card_images[0].image_url_cropped, + cardtype: randomCard.humanReadableCardType, + atk: randomCard.atk || null, + def: randomCard.def || null, + level: randomCard.level || null, + attribute: randomCard.attribute || null, + rarity: randomCard.card_sets[0].set_rarity || null, + }; + res.status(200).json(guessRandomCard); + } catch (err) { + next(err); + } + } } module.exports = CardController; From 286ebea76ca2b62fc081e4df7ee2772cae5eb4f8 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 20:28:38 +0700 Subject: [PATCH 054/110] test: add randomcard testing --- server/__test__/card.test.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/server/__test__/card.test.js b/server/__test__/card.test.js index bc53ef00..fb4fc9e6 100644 --- a/server/__test__/card.test.js +++ b/server/__test__/card.test.js @@ -332,3 +332,29 @@ describe("GET /archetype", () => { expect(response.body).toHaveProperty("message", "Invalid token"); }); }); + +describe("GET /randomcard", () => { + test("200 success get randomcard", async () => { + const response = await request(app) + .get("/randomcard") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("name", expect.any(String)); + expect(response.body).toHaveProperty("frameType", expect.any(String)); + expect(response.body).toHaveProperty("type", expect.any(String)); + expect(response.body).toHaveProperty("desc", expect.any(String)); + }); + + test("401 get archetype with invalid token", async () => { + const response = await request(app) + .get("/randomcard") + .set( + "Authorization", + `Bearer ${access_token.substring(1, access_token.length)}` + ); + + expect(response.status).toBe(401); + expect(response.body).toHaveProperty("message", "Invalid token"); + }); +}); From 4e4c76723511e992c558503e348922a54239fd4f Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 20:42:21 +0700 Subject: [PATCH 055/110] feat: add validation can't add another same favorite card --- server/controllers/CardController.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/server/controllers/CardController.js b/server/controllers/CardController.js index 874b732f..95e782df 100644 --- a/server/controllers/CardController.js +++ b/server/controllers/CardController.js @@ -149,9 +149,21 @@ class CardController { static async createFavorite(req, res, next) { try { - await axios.get( + const response = await axios.get( `https://db.ygoprodeck.com/api/v7/cardinfo.php?id=${req.params.cardId}` ); + const responseServer = response.data.data[0]; + const sameCard = await Favorite.findOne({ + where: { + cardId: responseServer.id, + }, + }); + if (sameCard) { + throw { + name: "Forbidden", + message: "Can't add same card to favorites", + }; + } const favorite = await Favorite.create({ userId: req.user.id, cardId: req.params.cardId, From 66275d954e3281edaab0f1f3458452d43a2bd1d0 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 20:42:41 +0700 Subject: [PATCH 056/110] test: add test for post same card favorite --- server/__test__/card.test.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/__test__/card.test.js b/server/__test__/card.test.js index fb4fc9e6..997b0741 100644 --- a/server/__test__/card.test.js +++ b/server/__test__/card.test.js @@ -195,6 +195,18 @@ describe("POST /cards/favorite/add/:cardId", () => { expect(response.body).toHaveProperty("stock", 0); }); + test("403 can't POST the same card to favorite", async () => { + const response = await request(app) + .post("/cards/favorite/add/23771716") + .set("Authorization", `Bearer ${access_token}`); + + expect(response.status).toBe(403); + expect(response.body).toHaveProperty( + "message", + "Can't add same card to favorites" + ); + }); + test("400 post favorite card with invalid card id", async () => { const response = await request(app) .post("/cards/favorite/add/2") From fd242552a8a89da9dbbb87cbae8050ca260d2259 Mon Sep 17 00:00:00 2001 From: ForestoAY Date: Wed, 4 Sep 2024 20:51:18 +0700 Subject: [PATCH 057/110] refactor: add link in image logo --- client/src/components/Navbar.jsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/client/src/components/Navbar.jsx b/client/src/components/Navbar.jsx index 5379cd55..1fc596a1 100644 --- a/client/src/components/Navbar.jsx +++ b/client/src/components/Navbar.jsx @@ -12,13 +12,15 @@ export default function Navbar() {