From adc19dfb915485a8cace6d043b6753ad137026fe Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 4 Jan 2025 00:36:32 +0530 Subject: [PATCH 01/21] feat: add copy to clipboard functionality for username and decrypted password in Vault --- client/src/pages/vault/Vault.jsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/client/src/pages/vault/Vault.jsx b/client/src/pages/vault/Vault.jsx index 4e005d4..1b91ac8 100644 --- a/client/src/pages/vault/Vault.jsx +++ b/client/src/pages/vault/Vault.jsx @@ -131,6 +131,11 @@ export default function Vault() { } } + const copyToClipboard = (text) => { + navigator.clipboard.writeText(text); + toast.success('Copied to clipboard!'); + } + return ( {openAdd && } @@ -196,10 +201,16 @@ export default function Vault() { {index + 1} {data.title} - {data.username} + + copyToClipboard(data.username)}> + {data.username} + + {currentId == data._id ? ( - <>{decrypted} + copyToClipboard(decrypted)}> + {decrypted} + ) : ( handleDecrypt(data._id)} /> From 0e28e4b27718a8dbf193e41ae9a767c2382afc5d Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 4 Jan 2025 00:36:46 +0530 Subject: [PATCH 02/21] feat: add deleteUser function to remove user and associated data from Vault and Journal --- server/src/controller/user.controller.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/server/src/controller/user.controller.js b/server/src/controller/user.controller.js index 8886672..483fe82 100644 --- a/server/src/controller/user.controller.js +++ b/server/src/controller/user.controller.js @@ -3,6 +3,8 @@ const jwt = require("jsonwebtoken"); const validator = require("validator"); const UserModel = require("../model/user.model.js"); +const VaultModel = require("../model/vault.model.js"); +const JournalModel = require("../model/journal.model.js"); const { validateFields } = require("../service/validation.service.js"); const SecretKey = process.env.SECRET_KEY; @@ -158,5 +160,23 @@ const changePassword = async (req, res, next) => { }; +// function to delete user and all its data +const deleteUser = async (req, res, next) => { + try { + const user = await UserModel.findById(req.currentUser); + if (!user) { + return res.status(400).json({ message: "Bad Credentials!" }); + } + + await VaultModel.deleteMany({ createdBy: req.currentUser }); + await JournalModel.deleteMany({ createdBy: req.currentUser }); + await user.deleteOne(); + return res.status(204).send(); + } catch (error) { + next(error); + } +}; + + // exporting functions -module.exports = { userLogin, userRegister, forgetPassword, getUserData, updateUser, changePassword }; +module.exports = { userLogin, userRegister, forgetPassword, getUserData, updateUser, changePassword, deleteUser }; From f4a348814b21064002d6d7fb0047cf03a917fcbd Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 4 Jan 2025 00:37:02 +0530 Subject: [PATCH 03/21] feat: add deleteUser route to allow user deletion via API --- server/src/app.router.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/app.router.js b/server/src/app.router.js index 18f7551..0af8a7e 100644 --- a/server/src/app.router.js +++ b/server/src/app.router.js @@ -4,7 +4,7 @@ const AuthSession = require("./app.middleware.js"); const { setVerifyText, resetPin, verifyText } = require("./controller/pin.controller.js"); const { getVault, addVault, updateVault, deleteVault, decryptVault } = require("./controller/vault.controller.js"); const { getJournal, addJournal, updateJournal, deleteJournal, decryptJournal } = require("./controller/journal.controller.js"); -const { userLogin, userRegister, forgetPassword, getUserData, updateUser, changePassword } = require("./controller/user.controller.js"); +const { userLogin, userRegister, forgetPassword, getUserData, updateUser, changePassword, deleteUser } = require("./controller/user.controller.js"); const router = express.Router(); @@ -16,6 +16,7 @@ router.post('/auth/register', userRegister); router.patch('/auth/forget', forgetPassword); router.get('/auth/user', AuthSession, getUserData); router.patch('/auth/user/update', AuthSession, updateUser); +router.delete('/auth/user/delete', AuthSession, deleteUser); router.patch('/auth/user/changePassword', AuthSession, changePassword); From 3f69757454851edac854710e51b852b6775c548e Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sun, 5 Jan 2025 22:51:31 +0530 Subject: [PATCH 04/21] feat: reset decrypted state before decryption and improve accessibility for copy actions --- client/src/pages/journal/Journal.jsx | 2 +- client/src/pages/vault/Vault.jsx | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/client/src/pages/journal/Journal.jsx b/client/src/pages/journal/Journal.jsx index 07c40f0..c8940f7 100644 --- a/client/src/pages/journal/Journal.jsx +++ b/client/src/pages/journal/Journal.jsx @@ -120,11 +120,11 @@ export default function Journal() { const handleDecrypt = async (id) => { try { setExpanded(id); + setDecrypted(''); setLoading(true); const response = await http.post(`/journal/${id}`, { key: localStorage.getItem('eKey') }); setDecrypted(response.data); } catch (error) { - setDecrypted(''); console.error(error); if (error.response) { toast.error(error.response.data.message); } else { toast.error('Something went wrong!'); } diff --git a/client/src/pages/vault/Vault.jsx b/client/src/pages/vault/Vault.jsx index 1b91ac8..16f9b84 100644 --- a/client/src/pages/vault/Vault.jsx +++ b/client/src/pages/vault/Vault.jsx @@ -109,13 +109,12 @@ export default function Vault() { const handleDecrypt = async (id) => { try { + setDecrypted(''); setLoading(true); setCurrentId(id); const response = await http.post(`/vault/${id}`, { key: localStorage.getItem('eKey') }); setDecrypted(response.data); - return response.data; } catch (error) { - setDecrypted(''); console.error(error); if (error.response) { toast.error(error.response.data.message); } else { toast.error('Something went wrong!'); } @@ -202,13 +201,23 @@ export default function Vault() { {index + 1} {data.title} - copyToClipboard(data.username)}> + copyToClipboard(data.username)} + > {data.username} {currentId == data._id ? ( - copyToClipboard(decrypted)}> + copyToClipboard(decrypted)} + > {decrypted} ) : ( From bf58811314a569997da426eeab2dfa2cea8abf97 Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sun, 5 Jan 2025 23:12:13 +0530 Subject: [PATCH 05/21] feat: enhance accessibility for copy actions in Vault with keyboard support --- client/src/pages/vault/Vault.jsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/client/src/pages/vault/Vault.jsx b/client/src/pages/vault/Vault.jsx index 16f9b84..b5b160f 100644 --- a/client/src/pages/vault/Vault.jsx +++ b/client/src/pages/vault/Vault.jsx @@ -202,10 +202,16 @@ export default function Vault() { {data.title} copyToClipboard(data.username)} + onKeyDown={(event) => { + if (event.key === 'Enter' || event.key === ' ') { + copyToClipboard(data.username); + } + }} > {data.username} @@ -213,10 +219,16 @@ export default function Vault() { {currentId == data._id ? ( copyToClipboard(decrypted)} + onKeyDown={(event) => { + if (event.key === 'Enter' || event.key === ' ') { + copyToClipboard(decrypted); + } + }} > {decrypted} From 5e7ac26eeed33bc4bdc416d431a29fea83dcbcac Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sun, 5 Jan 2025 23:12:22 +0530 Subject: [PATCH 06/21] feat: update CircularProgress color to primary in Loading component --- client/src/components/loading/Loading.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/components/loading/Loading.jsx b/client/src/components/loading/Loading.jsx index e677b08..96014f5 100644 --- a/client/src/components/loading/Loading.jsx +++ b/client/src/components/loading/Loading.jsx @@ -1,5 +1,6 @@ -import CircularProgress from '@mui/material/CircularProgress'; import Box from '@mui/material/Box'; +import CircularProgress from '@mui/material/CircularProgress'; + import { useLoading } from './useLoading'; export default function Loading() { @@ -23,7 +24,7 @@ export default function Loading() { backdropFilter: 'blur(1px)', backgroundColor: 'rgba(255, 255, 255, 0.5)', }}> - + ); } From 5525e392961901d845424b8b9e386c4282b011b8 Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sun, 5 Jan 2025 23:24:44 +0530 Subject: [PATCH 07/21] SONAR: [FIX] enhance button accessibility and styling in Vault component --- client/src/pages/vault/Vault.css | 5 +++++ client/src/pages/vault/Vault.jsx | 30 +++++++----------------------- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/client/src/pages/vault/Vault.css b/client/src/pages/vault/Vault.css index 3171b28..34529be 100644 --- a/client/src/pages/vault/Vault.css +++ b/client/src/pages/vault/Vault.css @@ -7,4 +7,9 @@ .vault-table-cell { text-align: center !important; + + button:hover { + font-weight: bold; + scale: 1.02; + } } \ No newline at end of file diff --git a/client/src/pages/vault/Vault.jsx b/client/src/pages/vault/Vault.jsx index b5b160f..c8118c7 100644 --- a/client/src/pages/vault/Vault.jsx +++ b/client/src/pages/vault/Vault.jsx @@ -201,37 +201,21 @@ export default function Vault() { {index + 1} {data.title} - copyToClipboard(data.username)} - onKeyDown={(event) => { - if (event.key === 'Enter' || event.key === ' ') { - copyToClipboard(data.username); - } - }} > {data.username} - + {currentId == data._id ? ( - copyToClipboard(decrypted)} - onKeyDown={(event) => { - if (event.key === 'Enter' || event.key === ' ') { - copyToClipboard(decrypted); - } - }} + ) : ( handleDecrypt(data._id)} /> From 4f430f9941e88fb305a2ba5a1ae26ccdd38f670c Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sun, 26 Jan 2025 23:31:58 +0530 Subject: [PATCH 08/21] feat: update CI/CD pipeline configuration for improved deployment process --- .github/workflows/pipeline.yml | 262 ++++++++++++++++----------------- 1 file changed, 131 insertions(+), 131 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index d61e3aa..39726cb 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -1,131 +1,131 @@ -name: CI/CD Pipeline for SonarCloud, Azure Web App, and Cloudflare Pages - -on: - push: - branches: - - main - - dev - pull_request: - branches: - - main - workflow_dispatch: - -jobs: - # 1. SonarCloud Analysis Job - sonarcloud-analysis: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - node-version: '20.x' - - - name: Install dependencies - run: npm install - working-directory: ./client - - - name: Run SonarCloud analysis - uses: SonarSource/sonarcloud-github-action@4006f663ecaf1f8093e8e4abb9227f6041f52216 - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - with: - args: - -Dsonar.projectKey=amankrs21_Secure-Vault - -Dsonar.organization=amankrs21 - projectBaseDir: . - - - # 2. Express App Hosting Job (depends on SonarCloud success, but only runs on push to `main`) - express-deployment: - runs-on: ubuntu-latest - needs: sonarcloud-analysis - if: github.ref == 'refs/heads/main' - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - node-version: '20.x' - - - name: Install dependencies for Express app - run: npm install - working-directory: ./server - - - name: Zip artifact for deployment - run: zip release.zip ./* -r - - - name: Upload artifact for deployment job - uses: actions/upload-artifact@v4 - with: - name: node-app - path: release.zip - - - # 3. Deploy to Azure Web App (depends on Express app deployment success) - deploy-to-azure: - runs-on: ubuntu-latest - needs: express-deployment - environment: - name: 'Production' - url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} - permissions: - id-token: write - if: github.ref == 'refs/heads/main' - - steps: - - name: Download artifact from build job - uses: actions/download-artifact@v4 - with: - name: node-app - - - name: Unzip artifact for deployment - run: unzip release.zip - - - name: Login to Azure - uses: azure/login@v2 - with: - client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_E50E2B172F2A4C83B498DFFF0F3BA19B }} - tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_5C92EA594F3548D9B537751239275D14 }} - subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_3FC292CDD1DB4032B184C9B43ABDAB1C }} - - - name: 'Deploy to Azure Web App' - id: deploy-to-webapp - uses: azure/webapps-deploy@v3 - with: - app-name: 'secure-vault' - slot-name: 'Production' - package: ./server - - - # 4. React App Hosting to Cloudflare (depends on Azure Web App deployment success) - react-deployment: - runs-on: ubuntu-latest - needs: deploy-to-azure - if: github.ref == 'refs/heads/main' - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Install dependencies for React app - run: npm install - working-directory: ./client - - - name: Build React app - run: npm run build - working-directory: ./client - - - name: Deploy to Cloudflare Pages - uses: cloudflare/pages-action@v1 - with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - projectName: 'securevault' - directory: 'client/dist' +name: CI/CD Pipeline for SonarCloud, Azure Web App, and Cloudflare Pages + +on: + push: + branches: + - main + - dev + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + # 1. SonarCloud Analysis Job + sonarcloud-analysis: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: '20.x' + + - name: Install dependencies + run: npm install + working-directory: ./client + + - name: Run SonarCloud analysis + uses: SonarSource/sonarcloud-github-action@4006f663ecaf1f8093e8e4abb9227f6041f52216 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: + -Dsonar.projectKey=amankrs21_Secure-Vault + -Dsonar.organization=amankrs21 + projectBaseDir: . + + + # 2. Express App Hosting Job (depends on SonarCloud success, but only runs on push to `main`) + express-deployment: + runs-on: ubuntu-latest + needs: sonarcloud-analysis + if: github.ref == 'refs/heads/main' + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: '20.x' + + - name: Install dependencies for Express app + run: npm install + working-directory: ./server + + - name: Zip artifact for deployment + run: zip release.zip ./* -r + + - name: Upload artifact for deployment job + uses: actions/upload-artifact@v4 + with: + name: node-app + path: release.zip + + + # 3. Deploy to Azure Web App (depends on Express app deployment success) + deploy-to-azure: + runs-on: ubuntu-latest + needs: express-deployment + environment: + name: 'Production' + url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} + permissions: + id-token: write + if: github.ref == 'refs/heads/main' + + steps: + - name: Download artifact from build job + uses: actions/download-artifact@v4 + with: + name: node-app + + - name: Unzip artifact for deployment + run: unzip release.zip + + - name: Login to Azure + uses: azure/login@v2 + with: + client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_E50E2B172F2A4C83B498DFFF0F3BA19B }} + tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_5C92EA594F3548D9B537751239275D14 }} + subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_3FC292CDD1DB4032B184C9B43ABDAB1C }} + + - name: 'Deploy to Azure Web App' + id: deploy-to-webapp + uses: azure/webapps-deploy@v3 + with: + app-name: 'secure-vault' + slot-name: 'Production' + package: ./server + + + # 4. React App Hosting to Cloudflare (depends on Azure Web App deployment success) + react-deployment: + runs-on: ubuntu-latest + needs: deploy-to-azure + if: github.ref == 'refs/heads/main' + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install dependencies for React app + run: npm install + working-directory: ./client + + - name: Build React app + run: npm run build + working-directory: ./client + + - name: Deploy to Cloudflare Pages + uses: cloudflare/pages-action@v1 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + projectName: 'securevault' + directory: 'client/dist' From 28fda038624e088618de85a44b526db653a70c1f Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Thu, 13 Feb 2025 23:50:58 +0530 Subject: [PATCH 09/21] feat: add meta tags for author, keywords, and description in index.html --- client/index.html | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/index.html b/client/index.html index 923da79..bec40e2 100644 --- a/client/index.html +++ b/client/index.html @@ -3,8 +3,15 @@ - + + + + + + SecureVault From 196e641102f342ff107560c03c5927664ccd6a39 Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Fri, 14 Feb 2025 23:54:27 +0530 Subject: [PATCH 10/21] feat: update package.json to include test script and devDependencies for improved development workflow --- client/package-lock.json | 401 +- server/package-lock.json | 8181 ++++++++++++++++++++++++++++---------- server/package.json | 49 +- 3 files changed, 6292 insertions(+), 2339 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 0055a30..cc7daa7 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -485,9 +485,9 @@ "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", "cpu": [ "ppc64" ], @@ -502,9 +502,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", "cpu": [ "arm" ], @@ -519,9 +519,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", "cpu": [ "arm64" ], @@ -536,9 +536,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", "cpu": [ "x64" ], @@ -553,9 +553,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", "cpu": [ "arm64" ], @@ -570,9 +570,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", "cpu": [ "x64" ], @@ -587,9 +587,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", "cpu": [ "arm64" ], @@ -604,9 +604,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", "cpu": [ "x64" ], @@ -621,9 +621,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", "cpu": [ "arm" ], @@ -638,9 +638,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", "cpu": [ "arm64" ], @@ -655,9 +655,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", "cpu": [ "ia32" ], @@ -672,9 +672,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", "cpu": [ "loong64" ], @@ -689,9 +689,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", "cpu": [ "mips64el" ], @@ -706,9 +706,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", "cpu": [ "ppc64" ], @@ -723,9 +723,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", "cpu": [ "riscv64" ], @@ -740,9 +740,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", "cpu": [ "s390x" ], @@ -757,9 +757,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", "cpu": [ "x64" ], @@ -773,10 +773,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", "cpu": [ "x64" ], @@ -791,9 +808,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", "cpu": [ "arm64" ], @@ -808,9 +825,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", "cpu": [ "x64" ], @@ -825,9 +842,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", "cpu": [ "x64" ], @@ -842,9 +859,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", "cpu": [ "arm64" ], @@ -859,9 +876,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", "cpu": [ "ia32" ], @@ -876,9 +893,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", "cpu": [ "x64" ], @@ -1414,9 +1431,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.0.tgz", - "integrity": "sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.6.tgz", + "integrity": "sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg==", "cpu": [ "arm" ], @@ -1428,9 +1445,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.0.tgz", - "integrity": "sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.6.tgz", + "integrity": "sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA==", "cpu": [ "arm64" ], @@ -1442,9 +1459,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.0.tgz", - "integrity": "sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.6.tgz", + "integrity": "sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg==", "cpu": [ "arm64" ], @@ -1456,9 +1473,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.0.tgz", - "integrity": "sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.6.tgz", + "integrity": "sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg==", "cpu": [ "x64" ], @@ -1470,9 +1487,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.0.tgz", - "integrity": "sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.6.tgz", + "integrity": "sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ==", "cpu": [ "arm64" ], @@ -1484,9 +1501,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.0.tgz", - "integrity": "sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.6.tgz", + "integrity": "sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ==", "cpu": [ "x64" ], @@ -1498,9 +1515,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.0.tgz", - "integrity": "sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.6.tgz", + "integrity": "sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==", "cpu": [ "arm" ], @@ -1512,9 +1529,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.0.tgz", - "integrity": "sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.6.tgz", + "integrity": "sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==", "cpu": [ "arm" ], @@ -1526,9 +1543,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.0.tgz", - "integrity": "sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.6.tgz", + "integrity": "sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==", "cpu": [ "arm64" ], @@ -1540,9 +1557,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.0.tgz", - "integrity": "sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.6.tgz", + "integrity": "sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==", "cpu": [ "arm64" ], @@ -1553,10 +1570,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.6.tgz", + "integrity": "sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.0.tgz", - "integrity": "sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.6.tgz", + "integrity": "sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==", "cpu": [ "ppc64" ], @@ -1568,9 +1599,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.0.tgz", - "integrity": "sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.6.tgz", + "integrity": "sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==", "cpu": [ "riscv64" ], @@ -1582,9 +1613,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.0.tgz", - "integrity": "sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.6.tgz", + "integrity": "sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==", "cpu": [ "s390x" ], @@ -1596,9 +1627,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.0.tgz", - "integrity": "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.6.tgz", + "integrity": "sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==", "cpu": [ "x64" ], @@ -1610,9 +1641,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.0.tgz", - "integrity": "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.6.tgz", + "integrity": "sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==", "cpu": [ "x64" ], @@ -1624,9 +1655,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.0.tgz", - "integrity": "sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.6.tgz", + "integrity": "sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==", "cpu": [ "arm64" ], @@ -1638,9 +1669,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.0.tgz", - "integrity": "sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.6.tgz", + "integrity": "sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA==", "cpu": [ "ia32" ], @@ -1652,9 +1683,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz", - "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.6.tgz", + "integrity": "sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w==", "cpu": [ "x64" ], @@ -2614,9 +2645,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2627,30 +2658,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" } }, "node_modules/escalade": { @@ -4205,9 +4237,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", "dev": true, "funding": [ { @@ -4225,7 +4257,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -4455,9 +4487,9 @@ } }, "node_modules/rollup": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz", - "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==", + "version": "4.34.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.6.tgz", + "integrity": "sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4471,24 +4503,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.28.0", - "@rollup/rollup-android-arm64": "4.28.0", - "@rollup/rollup-darwin-arm64": "4.28.0", - "@rollup/rollup-darwin-x64": "4.28.0", - "@rollup/rollup-freebsd-arm64": "4.28.0", - "@rollup/rollup-freebsd-x64": "4.28.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", - "@rollup/rollup-linux-arm-musleabihf": "4.28.0", - "@rollup/rollup-linux-arm64-gnu": "4.28.0", - "@rollup/rollup-linux-arm64-musl": "4.28.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", - "@rollup/rollup-linux-riscv64-gnu": "4.28.0", - "@rollup/rollup-linux-s390x-gnu": "4.28.0", - "@rollup/rollup-linux-x64-gnu": "4.28.0", - "@rollup/rollup-linux-x64-musl": "4.28.0", - "@rollup/rollup-win32-arm64-msvc": "4.28.0", - "@rollup/rollup-win32-ia32-msvc": "4.28.0", - "@rollup/rollup-win32-x64-msvc": "4.28.0", + "@rollup/rollup-android-arm-eabi": "4.34.6", + "@rollup/rollup-android-arm64": "4.34.6", + "@rollup/rollup-darwin-arm64": "4.34.6", + "@rollup/rollup-darwin-x64": "4.34.6", + "@rollup/rollup-freebsd-arm64": "4.34.6", + "@rollup/rollup-freebsd-x64": "4.34.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.6", + "@rollup/rollup-linux-arm-musleabihf": "4.34.6", + "@rollup/rollup-linux-arm64-gnu": "4.34.6", + "@rollup/rollup-linux-arm64-musl": "4.34.6", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.6", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.6", + "@rollup/rollup-linux-riscv64-gnu": "4.34.6", + "@rollup/rollup-linux-s390x-gnu": "4.34.6", + "@rollup/rollup-linux-x64-gnu": "4.34.6", + "@rollup/rollup-linux-x64-musl": "4.34.6", + "@rollup/rollup-win32-arm64-msvc": "4.34.6", + "@rollup/rollup-win32-ia32-msvc": "4.34.6", + "@rollup/rollup-win32-x64-msvc": "4.34.6", "fsevents": "~2.3.2" } }, @@ -4938,15 +4971,15 @@ } }, "node_modules/vite": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.2.tgz", - "integrity": "sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.0.tgz", + "integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.24.0", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.24.2", + "postcss": "^8.5.1", + "rollup": "^4.30.1" }, "bin": { "vite": "bin/vite.js" diff --git a/server/package-lock.json b/server/package-lock.json index 7158675..22b008f 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,2134 +1,6047 @@ -{ - "name": "express", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "express", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "bcrypt": "^5.1.1", - "cors": "^2.8.5", - "dotenv": "^16.4.5", - "express": "^4.21.0", - "jsonwebtoken": "^9.0.2", - "mongoose": "^8.0.0", - "nodemon": "^3.0.1", - "validator": "^13.12.0" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "license": "BSD-3-Clause", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", - "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", - "license": "MIT", - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", - "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", - "license": "MIT" - }, - "node_modules/@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", - "license": "MIT", - "dependencies": { - "@types/webidl-conversions": "*" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/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==", - "license": "MIT" - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "license": "ISC" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/bcrypt": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", - "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.11", - "node-addon-api": "^5.0.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "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.13.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": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bson": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", - "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", - "license": "Apache-2.0", - "engines": { - "node": ">=16.20.1" - } - }, - "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==", - "license": "BSD-3-Clause" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "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" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "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/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "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==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.0.tgz", - "integrity": "sha512-TtLgOcKaF1nMP2ijJnITkE4nRhbpshHhmzKiuhmSniiwWzovoqwqQ8rNuhf0mXJOqIY5iU+QkUe0CkJYrLsG9w==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "license": "ISC" - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "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==", - "license": "MIT", - "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/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "license": "ISC" - }, - "node_modules/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.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/kareem": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", - "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "license": "MIT" - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", - "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.1", - "mongodb-connection-string-url": "^3.0.0" - }, - "engines": { - "node": ">=16.20.1" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", - "gcp-metadata": "^5.2.0", - "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", - "socks": "^2.7.1" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", - "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", - "license": "Apache-2.0", - "dependencies": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^13.0.0" - } - }, - "node_modules/mongoose": { - "version": "8.9.3", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.9.3.tgz", - "integrity": "sha512-G50GNPdMqhoiRAJ/24GYAzg13yxXDD3FOOFeYiFwtHmHpAJem3hxbYIxAhLJGWbYEiUZL0qFMu2LXYkgGAmo+Q==", - "license": "MIT", - "dependencies": { - "bson": "^6.10.1", - "kareem": "2.6.3", - "mongodb": "~6.12.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "17.1.3" - }, - "engines": { - "node": ">=16.20.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/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==", - "license": "MIT" - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "license": "MIT", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mquery/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mquery/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==", - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/nodemon": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", - "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/nodemon/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==", - "license": "MIT" - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "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==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "license": "MIT" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "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/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "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/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "license": "ISC" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sift": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", - "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==", - "license": "MIT" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "license": "MIT", - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "license": "MIT" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", - "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", - "license": "MIT", - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "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==", - "license": "ISC" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - } - } -} +{ + "name": "express", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "express", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "bcrypt": "^5.1.1", + "cors": "^2.8.5", + "dotenv": "^16.4.5", + "express": "^4.21.0", + "jsonwebtoken": "^9.0.2", + "mongoose": "^8.0.0", + "nodemon": "^3.0.1", + "validator": "^13.12.0" + }, + "devDependencies": { + "cross-env": "^7.0.3", + "jest": "^29.7.0", + "mongodb-memory-server": "^10.1.3", + "supertest": "^7.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/types": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "license": "MIT", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "license": "MIT", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/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==", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.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, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.1.tgz", + "integrity": "sha512-Bw2PgKSrZ3uCuSV9WQ998c/GTJTd+9bWj97n7aDQMP8dP/exAZQlJeswPty0ISy+HZD+9Ex+C7CCnc9Q5QJFmQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "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.13.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": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "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==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/bson": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", + "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "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==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001690", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "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, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.76", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", + "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "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-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", + "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^2.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==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.0.tgz", + "integrity": "sha512-TtLgOcKaF1nMP2ijJnITkE4nRhbpshHhmzKiuhmSniiwWzovoqwqQ8rNuhf0mXJOqIY5iU+QkUe0CkJYrLsG9w==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexoid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", + "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/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==", + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "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==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "license": "ISC" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/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==", + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-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, + "license": "MIT", + "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, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "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.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^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-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "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, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kareem": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "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==", + "dev": true, + "license": "MIT", + "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", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", + "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.1", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongodb-memory-server": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-10.1.3.tgz", + "integrity": "sha512-QCUjsIIXSYv/EgkpDAjfhlqRKo6N+qR6DD43q4lyrCVn24xQmvlArdWHW/Um5RS4LkC9YWC3XveSncJqht2Hbg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "mongodb-memory-server-core": "10.1.3", + "tslib": "^2.7.0" + }, + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/mongodb-memory-server-core": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-10.1.3.tgz", + "integrity": "sha512-ayBQHeV74wRHhgcAKpxHYI4th9Ufidy/m3XhJnLFRufKsOyDsyHYU3Zxv5Fm4hxsWE6wVd0GAVcQ7t7XNkivOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-mutex": "^0.5.0", + "camelcase": "^6.3.0", + "debug": "^4.3.7", + "find-cache-dir": "^3.3.2", + "follow-redirects": "^1.15.9", + "https-proxy-agent": "^7.0.5", + "mongodb": "^6.9.0", + "new-find-package-json": "^2.0.0", + "semver": "^7.6.3", + "tar-stream": "^3.1.7", + "tslib": "^2.7.0", + "yauzl": "^3.1.3" + }, + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/mongodb-memory-server-core/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/mongodb-memory-server-core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mongodb-memory-server-core/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mongodb-memory-server-core/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/mongodb-memory-server-core/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/mongoose": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.10.0.tgz", + "integrity": "sha512-nLhk3Qrv6q/HpD2k1O7kbBqsq+/kmKpdv5KJ+LLhQlII3e1p/SSLoLP6jMuSiU6+iLK7zFw4T1niAk3mA3QVug==", + "license": "MIT", + "dependencies": { + "bson": "^6.10.1", + "kareem": "2.6.3", + "mongodb": "~6.13.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "17.1.3" + }, + "engines": { + "node": ">=16.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/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==", + "license": "MIT" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "license": "MIT", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/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==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/new-find-package-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz", + "integrity": "sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/new-find-package-json/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/new-find-package-json/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", + "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/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==", + "license": "MIT" + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "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==", + "license": "ISC", + "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, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "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==", + "dev": true, + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==", + "license": "MIT" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamx": { + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", + "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "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, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/supertest": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.0.0.tgz", + "integrity": "sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^9.0.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "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", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "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, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "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==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "license": "MIT", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz", + "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/server/package.json b/server/package.json index 0d71782..2427ad9 100644 --- a/server/package.json +++ b/server/package.json @@ -1,22 +1,29 @@ -{ - "name": "express", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "node app.prod.js", - "dev": "nodemon app.dev.js" - }, - "author": "amankrs21", - "license": "ISC", - "dependencies": { - "bcrypt": "^5.1.1", - "cors": "^2.8.5", - "dotenv": "^16.4.5", - "express": "^4.21.0", - "jsonwebtoken": "^9.0.2", - "mongoose": "^8.0.0", - "nodemon": "^3.0.1", - "validator": "^13.12.0" - } +{ + "name": "express", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "node src/index.js", + "dev": "cross-env NODE_ENV=development nodemon src/index.js", + "test": "jest src/test/app.test.js" + }, + "author": "amankrs21", + "license": "ISC", + "dependencies": { + "bcrypt": "^5.1.1", + "cors": "^2.8.5", + "dotenv": "^16.4.5", + "express": "^4.21.0", + "jsonwebtoken": "^9.0.2", + "mongoose": "^8.0.0", + "nodemon": "^3.0.1", + "validator": "^13.12.0" + }, + "devDependencies": { + "cross-env": "^7.0.3", + "jest": "^29.7.0", + "mongodb-memory-server": "^10.1.3", + "supertest": "^7.0.0" + } } \ No newline at end of file From fdbd976916d01cc1a3aafa058ae7aa3678c06e12 Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 00:22:13 +0530 Subject: [PATCH 11/21] feat: replace TopLogo.png with new header images and update AuthProvider and ErrorBoundary components --- client/public/TopLogo.png | Bin 12728 -> 0 bytes client/public/head-main.png | Bin 0 -> 11934 bytes client/public/header-icon.png | Bin 0 -> 26725 bytes client/src/middleware/AuthProvider.jsx | 186 ++++++++++++------------ client/src/middleware/ErrorBoundary.jsx | 70 ++++----- client/src/pages/error/ErrorPage.css | 66 ++++----- 6 files changed, 161 insertions(+), 161 deletions(-) delete mode 100644 client/public/TopLogo.png create mode 100644 client/public/head-main.png create mode 100644 client/public/header-icon.png diff --git a/client/public/TopLogo.png b/client/public/TopLogo.png deleted file mode 100644 index 4b3816108ef117ea8474e97ed4a4885a84a2f505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12728 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 bcakV=0X1l{jkEj literal 0 HcmV?d00001 diff --git a/client/src/middleware/AuthProvider.jsx b/client/src/middleware/AuthProvider.jsx index 3e502cd..62a9101 100644 --- a/client/src/middleware/AuthProvider.jsx +++ b/client/src/middleware/AuthProvider.jsx @@ -1,93 +1,93 @@ -import axios from "axios"; -import { jwtDecode } from "jwt-decode"; -import { useState, useEffect } from "react"; -import { useNavigate } from "react-router-dom"; - - -// Use environment variables for base URL -const baseURL = import.meta.env?.MODE === "development" - ? window.location.origin.replace(":5173", ":3000") + "/api/" - : import.meta.env?.VITE_API_URL || "https://secure-vault.azurewebsites.net/api/"; - - -// Axios instance with default configurations -const http = axios.create({ - baseURL, - headers: { - "Content-Type": "application/json", - }, - xsrfCookieName: "csrftoken", - xsrfHeaderName: "X-CSRFToken", - withCredentials: true, -}); - -// Axios response interceptor to handle errors -http.interceptors.response.use( - (response) => response, - (error) => { - if (!error.response && error.message === "Network Error") { - localStorage.clear(); - setTimeout(() => { window.location.href = "/503"; }, 2000); - } - if (error.response.status === 401) { - localStorage.clear(); - setTimeout(() => { window.location.href = "/"; }, 1500); - } - return Promise.reject(error); - } -); - -export default function AuthProvider() { - const navigate = useNavigate(); - const [token, setToken] = useState(null); - const [userName, setUserName] = useState(null); - - useEffect(() => { - (async () => { - const token = localStorage.getItem("token"); - if (token && await isValidToken(token)) { - setToken(token); - http.defaults.headers.common.Authorization = `Bearer ${token}`; - } else { localStorage.clear(); } - })(); - }, []); - - // Save the token in localStorage and set headers - const saveToken = async (token) => { - if (await isValidToken(token)) { - setToken(token); - localStorage.setItem("token", token); - http.defaults.headers.common.Authorization = `Bearer ${token}`; - } - }; - - // Validate if the token is not expired - const isValidToken = async (token) => { - if (token) { - try { - const decodedToken = jwtDecode(token); - const currentTime = Date.now() / 1000; - if (decodedToken.exp < currentTime) { - alert("Session expired. Please log in again."); - localStorage.clear(); - navigate("/"); - return false; - } - setUserName(decodedToken.name); - return true; - } catch (error) { - console.error("Error decoding token:", error); - return false; - } - } - return false; - }; - - return { - setToken: saveToken, - isValidToken, - userName, - token, - http, - }; -} +import axios from "axios"; +import { jwtDecode } from "jwt-decode"; +import { useState, useEffect } from "react"; +import { useNavigate } from "react-router-dom"; + + +// Use environment variables for base URL +const baseURL = import.meta.env?.MODE === "development" + ? window.location.origin.replace(":5173", ":3000") + "/api/" + : import.meta.env?.VITE_API_URL || "https://secure-vault.azurewebsites.net/api/"; + + +// Axios instance with default configurations +const http = axios.create({ + baseURL, + headers: { + "Content-Type": "application/json", + }, + xsrfCookieName: "csrftoken", + xsrfHeaderName: "X-CSRFToken", + withCredentials: true, +}); + +// Axios response interceptor to handle errors +http.interceptors.response.use( + (response) => response, + (error) => { + if (!error.response && error.message === "Network Error") { + localStorage.clear(); + setTimeout(() => { window.location.href = "/503"; }, 2000); + } + if (error.response.status === 401) { + localStorage.clear(); + setTimeout(() => { window.location.href = "/"; }, 1500); + } + return Promise.reject(error); + } +); + +export default function AuthProvider() { + const navigate = useNavigate(); + const [token, setToken] = useState(null); + const [userName, setUserName] = useState(null); + + useEffect(() => { + (async () => { + const token = localStorage.getItem("token"); + if (token && await isValidToken(token)) { + setToken(token); + http.defaults.headers.common.Authorization = `Bearer ${token}`; + } else { localStorage.clear(); } + })(); + }, []); + + // Save the token in localStorage and set headers + const saveToken = async (token) => { + if (await isValidToken(token)) { + setToken(token); + localStorage.setItem("token", token); + http.defaults.headers.common.Authorization = `Bearer ${token}`; + } + }; + + // Validate if the token is not expired + const isValidToken = async (token) => { + if (token) { + try { + const decodedToken = jwtDecode(token); + const currentTime = Date.now() / 1000; + if (decodedToken.exp < currentTime) { + alert("Session expired. Please log in again."); + localStorage.clear(); + navigate("/"); + return false; + } + setUserName(decodedToken.name); + return true; + } catch (error) { + console.error("Error decoding token:", error); + return false; + } + } + return false; + }; + + return { + setToken: saveToken, + isValidToken, + userName, + token, + http, + }; +} diff --git a/client/src/middleware/ErrorBoundary.jsx b/client/src/middleware/ErrorBoundary.jsx index da317ef..9cb9a0c 100644 --- a/client/src/middleware/ErrorBoundary.jsx +++ b/client/src/middleware/ErrorBoundary.jsx @@ -1,35 +1,35 @@ -import { Component } from "react"; -import PropTypes from "prop-types"; - -class ErrorBoundary extends Component { - constructor(props) { - super(props); - this.state = { hasError: false }; - } - - static getDerivedStateFromError() { - // Update state to display the fallback UI - return { hasError: true }; - } - - // // Implement componentDidCatch if needed - // componentDidCatch(error, errorInfo) { - // // Log the error to an error reporting service if needed - // console.error("Error caught by ErrorBoundary:", error, errorInfo); - // } - - render() { - if (this.state.hasError) { - return this.props.fallback; - } - - return this.props.children; - } -} - -ErrorBoundary.propTypes = { - fallback: PropTypes.node.isRequired, - children: PropTypes.node.isRequired, -}; - -export default ErrorBoundary; +import { Component } from "react"; +import PropTypes from "prop-types"; + +class ErrorBoundary extends Component { + constructor(props) { + super(props); + this.state = { hasError: false }; + } + + static getDerivedStateFromError() { + // Update state to display the fallback UI + return { hasError: true }; + } + + // // Implement componentDidCatch if needed + // componentDidCatch(error, errorInfo) { + // // Log the error to an error reporting service if needed + // console.error("Error caught by ErrorBoundary:", error, errorInfo); + // } + + render() { + if (this.state.hasError) { + return this.props.fallback; + } + + return this.props.children; + } +} + +ErrorBoundary.propTypes = { + fallback: PropTypes.node.isRequired, + children: PropTypes.node.isRequired, +}; + +export default ErrorBoundary; diff --git a/client/src/pages/error/ErrorPage.css b/client/src/pages/error/ErrorPage.css index afa7e62..c05e934 100644 --- a/client/src/pages/error/ErrorPage.css +++ b/client/src/pages/error/ErrorPage.css @@ -1,34 +1,34 @@ -.error-page { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - height: 100vh; - text-align: center; - background-color: #f8f9fa; -} - -.error-page h1 { - font-size: 2.5rem; - color: #dc3545; -} - -.error-page p { - margin: 1rem 0; - font-size: 1.2rem; - color: #6c757d; -} - -.error-page button { - padding: 0.5rem 1rem; - font-size: 1rem; - background-color: #007bff; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; -} - -.error-page button:hover { - background-color: #0056b3; +.error-page { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 100vh; + text-align: center; + background-color: #f8f9fa; +} + +.error-page h1 { + font-size: 2.5rem; + color: #dc3545; +} + +.error-page p { + margin: 1rem 0; + font-size: 1.2rem; + color: #6c757d; +} + +.error-page button { + padding: 0.5rem 1rem; + font-size: 1rem; + background-color: #007bff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} + +.error-page button:hover { + background-color: #0056b3; } \ No newline at end of file From fbe1aafc95b7f4b14a7888deecca4eade0a061e8 Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 00:22:43 +0530 Subject: [PATCH 12/21] feat: implement account deletion functionality with confirmation dialog --- client/src/pages/account/Account.css | 118 ++++----- client/src/pages/account/Account.jsx | 134 +++++----- client/src/pages/account/AccountDelete.jsx | 63 +++++ client/src/pages/account/AccountPass.jsx | 276 ++++++++++---------- client/src/pages/account/AccountProfile.jsx | 230 ++++++++-------- client/src/pages/error/ErrorPage.jsx | 32 +-- 6 files changed, 463 insertions(+), 390 deletions(-) create mode 100644 client/src/pages/account/AccountDelete.jsx diff --git a/client/src/pages/account/Account.css b/client/src/pages/account/Account.css index f1d0d32..6ce9747 100644 --- a/client/src/pages/account/Account.css +++ b/client/src/pages/account/Account.css @@ -1,60 +1,60 @@ -.account { - margin: 20px 0; -} - -.account-header { - display: flex; - text-align: center; - align-items: center; - justify-content: center; -} - -.account-header-img { - width: 100px; - height: 100px; - border-radius: 50%; - margin-right: 20px; - overflow: hidden; - border: 2px solid #1976d2; - - img { - width: 100%; - height: 100%; - object-fit: cover; - } -} - -.account-header-name { - b { - color: #1976d2; - } -} - -.account-main { - gap: 20px; - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -.account-profile, -.account-pass { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - /* Ensures full width on small screens */ - max-width: 500px; - /* Restricts width on larger screens */ -} - -.account-profile-main, -.account-pass-main { - width: 90%; -} - -hr { - opacity: 0.7; - margin: 20px 0; - background: #1976d2; +.account { + margin: 20px 0; +} + +.account-header { + display: flex; + text-align: center; + align-items: center; + justify-content: center; +} + +.account-header-img { + width: 100px; + height: 100px; + border-radius: 50%; + margin-right: 20px; + overflow: hidden; + border: 2px solid #1976d2; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } +} + +.account-header-name { + b { + color: #1976d2; + } +} + +.account-main { + gap: 20px; + display: flex; + flex-wrap: wrap; + justify-content: center; +} + +.account-profile, +.account-pass { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + /* Ensures full width on small screens */ + max-width: 500px; + /* Restricts width on larger screens */ +} + +.account-profile-main, +.account-pass-main { + width: 90%; +} + +hr { + opacity: 0.7; + margin: 20px 0; + background: #1976d2; } \ No newline at end of file diff --git a/client/src/pages/account/Account.jsx b/client/src/pages/account/Account.jsx index 0b5657d..15a88e3 100644 --- a/client/src/pages/account/Account.jsx +++ b/client/src/pages/account/Account.jsx @@ -1,62 +1,72 @@ -import { useEffect, useState } from 'react'; -import Grid from '@mui/material/Grid2'; -import { Container } from '@mui/material'; -import { toast } from 'react-toastify'; - -import "./Account.css"; -import AuthProvider from '../../middleware/AuthProvider'; -import AccountProfile from './AccountProfile'; -import AccountPass from './AccountPass'; -import { useLoading } from '../../components/loading/useLoading'; - -export default function Account() { - document.title = "SecureVault | Account"; - - const { http } = AuthProvider(); - const [userData, setUserData] = useState({}); - const { setLoading } = useLoading(); - - useEffect(() => { - const token = localStorage.getItem('token'); - if (!token) { return; } - const fetchUserData = async () => { - try { - setLoading(true); - const response = await http.get('/auth/user'); - setUserData(response.data); - } catch (error) { - console.error(error); - toast.error("Failed to fetch user data"); - } finally { - setLoading(false); - } - }; - - fetchUserData(); - }, [http, setLoading]); - - - return ( - -
-
- {userData.name} -
-
-

Hi {userData ? userData.name : "User"} 👋

-
-

created on: {new Date(userData?.createdAt).toDateString()}

-
-
- - - {userData && } - -
- - - -
-
- ); -} +import { useEffect, useState } from 'react'; +import Grid from '@mui/material/Grid2'; +import { Button, Container } from '@mui/material'; +import { toast } from 'react-toastify'; + +import "./Account.css"; +import AuthProvider from '../../middleware/AuthProvider'; +import AccountProfile from './AccountProfile'; +import AccountPass from './AccountPass'; +import { useLoading } from '../../components/loading/useLoading'; +import AccountDelete from './AccountDelete'; + +export default function Account() { + document.title = "SecureVault | Account"; + + const { http } = AuthProvider(); + const { setLoading } = useLoading(); + const [userData, setUserData] = useState({}); + const [openDelete, setOpenDelete] = useState(false); + + useEffect(() => { + const token = localStorage.getItem('token'); + if (!token) { return; } + const fetchUserData = async () => { + try { + setLoading(true); + const response = await http.get('/auth/user'); + setUserData(response.data); + } catch (error) { + console.error(error); + toast.error("Failed to fetch user data"); + } finally { + setLoading(false); + } + }; + + fetchUserData(); + }, [http, setLoading]); + + + return ( + + {openDelete && } +
+
+ {userData.name} +
+
+

Hi {userData ? userData.name : "User"} 👋

+
+

created on: {new Date(userData?.createdAt).toDateString()}

+
+
+ + + {userData && } + +
+ + + +
+ +
+ ); +} diff --git a/client/src/pages/account/AccountDelete.jsx b/client/src/pages/account/AccountDelete.jsx new file mode 100644 index 0000000..f5df3e2 --- /dev/null +++ b/client/src/pages/account/AccountDelete.jsx @@ -0,0 +1,63 @@ +import { + Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle +} from '@mui/material'; +import PropTypes from 'prop-types'; +import { toast } from 'react-toastify'; +import { useNavigate } from 'react-router-dom'; + +import AuthProvider from '../../middleware/AuthProvider'; +import { useLoading } from '../../components/loading/useLoading'; + +export default function AccountDelete({ openDelete, setOpenDelete }) { + const navigate = useNavigate(); + const { http } = AuthProvider(); + const { setLoading } = useLoading(); + + const handleDeleteUser = async () => { + try { + setLoading(true); + await http.delete('/auth/user/delete'); + setOpenDelete(false); + toast.success("Account deleted successfully"); + localStorage.clear(); + navigate('/login'); + navigate('/login'); + } catch (error) { + console.error(error); + toast.error("Failed to delete account"); + } finally { + setLoading(false); + } + } + + return ( + setOpenDelete(false)} + > + + {"Confirm Delete?"} + + + + Are you sure want to delete your account...??
+ All your data will be lost permanently and cannot be recovered. +
+
+
+ + + + +
+ ) +} + +AccountDelete.propTypes = { + openDelete: PropTypes.bool.isRequired, + setOpenDelete: PropTypes.func.isRequired, +} diff --git a/client/src/pages/account/AccountPass.jsx b/client/src/pages/account/AccountPass.jsx index 37d7e22..75c0bd2 100644 --- a/client/src/pages/account/AccountPass.jsx +++ b/client/src/pages/account/AccountPass.jsx @@ -1,138 +1,138 @@ -import { useState } from 'react'; -import Box from '@mui/material/Box'; -import { TextField, Button, InputAdornment, IconButton, Typography } from '@mui/material'; -import { Visibility, VisibilityOff } from '@mui/icons-material'; - -import AuthProvider from '../../middleware/AuthProvider'; -import { useLoading } from '../../components/loading/useLoading'; -import { toast } from 'react-toastify'; - -export default function AccountPass() { - - const { http } = AuthProvider(); - const { setLoading } = useLoading(); - const [btnDisabled, setBtnDisabled] = useState(true); - - const [passwords, setPasswords] = useState({ - oldPassword: '', - newPassword: '', - confirmPassword: '', - }); - - const [showPassword, setShowPassword] = useState({ - current: false, - new: false, - confirm: false, - }); - - const handleChange = (e) => { - const { name, value } = e.target; - setPasswords((prev) => ({ ...prev, [name]: value })); - setBtnDisabled(false); // Enable the button when there's input - }; - - const handleTogglePassword = (field) => { - setShowPassword((prev) => ({ ...prev, [field]: !prev[field] })); - }; - - const handleSubmit = async (e) => { - e.preventDefault(); - const { oldPassword, newPassword, confirmPassword } = passwords; - if (newPassword !== confirmPassword) { - toast.error("New password and confirm password do not match."); - return; - } - - try { - setLoading(true); - const response = await http.patch('/auth/user/changePassword', { oldPassword, newPassword }); - setPasswords({ oldPassword: '', newPassword: '', confirmPassword: '' }); - toast.success(response.data.message); - setBtnDisabled(true); - } catch (error) { - console.error(error); - toast.error(error.response.data.message); - } finally { setLoading(false); } - }; - - return ( -
- - *You can update your password here. - - - - handleTogglePassword('current')}> - {showPassword.current ? : } - - - ), - } - }} - /> - - handleTogglePassword('new')}> - {showPassword.new ? : } - - - ), - } - }} - /> - - handleTogglePassword('confirm')}> - {showPassword.confirm ? : } - - - ), - } - }} - /> - - -
- ); -} +import { useState } from 'react'; +import Box from '@mui/material/Box'; +import { TextField, Button, InputAdornment, IconButton, Typography } from '@mui/material'; +import { Visibility, VisibilityOff } from '@mui/icons-material'; + +import AuthProvider from '../../middleware/AuthProvider'; +import { useLoading } from '../../components/loading/useLoading'; +import { toast } from 'react-toastify'; + +export default function AccountPass() { + + const { http } = AuthProvider(); + const { setLoading } = useLoading(); + const [btnDisabled, setBtnDisabled] = useState(true); + + const [passwords, setPasswords] = useState({ + oldPassword: '', + newPassword: '', + confirmPassword: '', + }); + + const [showPassword, setShowPassword] = useState({ + current: false, + new: false, + confirm: false, + }); + + const handleChange = (e) => { + const { name, value } = e.target; + setPasswords((prev) => ({ ...prev, [name]: value })); + setBtnDisabled(false); // Enable the button when there's input + }; + + const handleTogglePassword = (field) => { + setShowPassword((prev) => ({ ...prev, [field]: !prev[field] })); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + const { oldPassword, newPassword, confirmPassword } = passwords; + if (newPassword !== confirmPassword) { + toast.error("New password and confirm password do not match."); + return; + } + + try { + setLoading(true); + const response = await http.patch('/auth/user/changePassword', { oldPassword, newPassword }); + setPasswords({ oldPassword: '', newPassword: '', confirmPassword: '' }); + toast.success(response.data.message); + setBtnDisabled(true); + } catch (error) { + console.error(error); + toast.error(error.response.data.message); + } finally { setLoading(false); } + }; + + return ( +
+ + *You can update your password here. + + + + handleTogglePassword('current')}> + {showPassword.current ? : } + + + ), + } + }} + /> + + handleTogglePassword('new')}> + {showPassword.new ? : } + + + ), + } + }} + /> + + handleTogglePassword('confirm')}> + {showPassword.confirm ? : } + + + ), + } + }} + /> + + +
+ ); +} diff --git a/client/src/pages/account/AccountProfile.jsx b/client/src/pages/account/AccountProfile.jsx index f232798..5b87a0b 100644 --- a/client/src/pages/account/AccountProfile.jsx +++ b/client/src/pages/account/AccountProfile.jsx @@ -1,115 +1,115 @@ -import PropTypes from 'prop-types'; -import Box from '@mui/material/Box'; -import { toast } from 'react-toastify'; -import { useEffect, useState } from 'react'; -import { TextField, Button } from '@mui/material'; - -import AuthProvider from '../../middleware/AuthProvider'; -import { useLoading } from '../../components/loading/useLoading'; - - -export default function AccountProfile({ userData }) { - - const { http } = AuthProvider(); - const { setLoading } = useLoading(); - const [btnDisabled, setBtnDisabled] = useState(true); - - const [formValues, setFormValues] = useState({ - id: '', - name: '', - dateOfBirth: '', - secretAnswer: '', - }); - - useEffect(() => { - if (userData) { - setFormValues({ - id: userData._id || '', - name: userData?.name || '', - dateOfBirth: userData?.dateOfBirth || '', - secretAnswer: userData?.secretAnswer ? atob(userData.secretAnswer) : '', - }); - } - }, [userData]); - - const handleChange = (e) => { - btnDisabled && setBtnDisabled(false); - const { name, value } = e.target; - setFormValues((prevValues) => ({ - ...prevValues, - [name]: value, - })); - }; - - const handleSubmit = async (e) => { - e.preventDefault(); - if (formValues.secretAnswer.length < 3) { - toast.warning("Favorite place should be atleast 3 characters long."); - return; - } - try { - setLoading(true); - const response = await http.patch('/auth/user/update', formValues); - toast.success(response.data.message); - setBtnDisabled(true); - } catch (error) { - console.error(error); - toast.error(error.response.data.message); - } finally { setLoading(false); } - }; - - return ( -
- - - - - - - -
- ); -} - -AccountProfile.propTypes = { - userData: PropTypes.object, -}; +import PropTypes from 'prop-types'; +import Box from '@mui/material/Box'; +import { toast } from 'react-toastify'; +import { useEffect, useState } from 'react'; +import { TextField, Button } from '@mui/material'; + +import AuthProvider from '../../middleware/AuthProvider'; +import { useLoading } from '../../components/loading/useLoading'; + + +export default function AccountProfile({ userData }) { + + const { http } = AuthProvider(); + const { setLoading } = useLoading(); + const [btnDisabled, setBtnDisabled] = useState(true); + + const [formValues, setFormValues] = useState({ + id: '', + name: '', + dateOfBirth: '', + secretAnswer: '', + }); + + useEffect(() => { + if (userData) { + setFormValues({ + id: userData._id || '', + name: userData?.name || '', + dateOfBirth: userData?.dateOfBirth || '', + secretAnswer: userData?.secretAnswer ? atob(userData.secretAnswer) : '', + }); + } + }, [userData]); + + const handleChange = (e) => { + btnDisabled && setBtnDisabled(false); + const { name, value } = e.target; + setFormValues((prevValues) => ({ + ...prevValues, + [name]: value, + })); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + if (formValues.secretAnswer.length < 3) { + toast.warning("Favorite place should be atleast 3 characters long."); + return; + } + try { + setLoading(true); + const response = await http.patch('/auth/user/update', formValues); + toast.success(response.data.message); + setBtnDisabled(true); + } catch (error) { + console.error(error); + toast.error(error.response.data.message); + } finally { setLoading(false); } + }; + + return ( +
+ + + + + + + +
+ ); +} + +AccountProfile.propTypes = { + userData: PropTypes.object, +}; diff --git a/client/src/pages/error/ErrorPage.jsx b/client/src/pages/error/ErrorPage.jsx index fc8e317..e09cccf 100644 --- a/client/src/pages/error/ErrorPage.jsx +++ b/client/src/pages/error/ErrorPage.jsx @@ -1,16 +1,16 @@ -import "./ErrorPage.css"; - -export default function ErrorPage() { - - const redirectToHome = () => { - window.location.href = "/"; - }; - - return ( -
-

Oops! Something Went Wrong

-

We encountered an error while loading this page. Please try again.

- -
- ); -} +import "./ErrorPage.css"; + +export default function ErrorPage() { + + const redirectToHome = () => { + window.location.href = "/"; + }; + + return ( +
+

Oops! Something Went Wrong

+

We encountered an error while loading this page. Please try again.

+ +
+ ); +} From d017a761c41baf0850fe46f35e0fa6586840d48c Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 00:24:06 +0530 Subject: [PATCH 13/21] feat: update header component with new logo and styling adjustments --- client/src/pages/header/Header.css | 5 +++++ client/src/pages/header/Header.jsx | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/client/src/pages/header/Header.css b/client/src/pages/header/Header.css index fa51340..4b79a7c 100644 --- a/client/src/pages/header/Header.css +++ b/client/src/pages/header/Header.css @@ -1,3 +1,8 @@ +.logo { + height: 2%; + width: 3%; +} + .logout-button { border-radius: 20px !important; } diff --git a/client/src/pages/header/Header.jsx b/client/src/pages/header/Header.jsx index 003f27f..05d879d 100644 --- a/client/src/pages/header/Header.jsx +++ b/client/src/pages/header/Header.jsx @@ -5,7 +5,6 @@ import { AppBar, Toolbar, Collapse, Typography, Container, Button, Tooltip, MenuItem, IconButton, Menu, Avatar } from '@mui/material'; -import AdbIcon from '@mui/icons-material/Adb'; import MenuIcon from '@mui/icons-material/Menu'; import CloseIcon from '@mui/icons-material/Close'; import HomeIcon from '@mui/icons-material/Home'; @@ -45,13 +44,14 @@ export default function Header() { else if (setting === 'Logout') setOpenLogout(true); }; + return ( {openLogout && } - - + +  Secure Vault @@ -80,7 +80,7 @@ export default function Header() { - +  Secure Vault From 36589fe52998938feff88c8f8aab94697b417c9e Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 00:24:54 +0530 Subject: [PATCH 14/21] feat: set up Express server with MongoDB connection and CORS configuration --- server/app.dev.js | 69 --------- server/app.prod.js | 61 -------- server/src/app.js | 74 +++++++++ server/src/db.config.js | 4 +- server/src/index.js | 11 ++ server/src/test/app.test.js | 25 +++ .../controller/journal.controller.test.js | 21 +++ .../test/controller/pin.controller.test.js | 17 +++ .../test/controller/user.controller.test.js | 143 ++++++++++++++++++ .../test/controller/vault.controller.test.js | 22 +++ 10 files changed, 316 insertions(+), 131 deletions(-) delete mode 100644 server/app.dev.js delete mode 100644 server/app.prod.js create mode 100644 server/src/app.js create mode 100644 server/src/index.js create mode 100644 server/src/test/app.test.js create mode 100644 server/src/test/controller/journal.controller.test.js create mode 100644 server/src/test/controller/pin.controller.test.js create mode 100644 server/src/test/controller/user.controller.test.js create mode 100644 server/src/test/controller/vault.controller.test.js diff --git a/server/app.dev.js b/server/app.dev.js deleted file mode 100644 index d27d581..0000000 --- a/server/app.dev.js +++ /dev/null @@ -1,69 +0,0 @@ -require("dotenv").config(); -const cors = require("cors"); -const http = require("http"); -const express = require("express"); - -const router = require("./src/app.router.js"); -const mongoConnect = require("./src/db.config.js"); -const errorHandler = require("./src/error.handler.js"); - - -const app = express(); -const port = process.env.PORT ?? 3000; - -// Disable x-powered-by header to prevent version disclosure -app.disable("x-powered-by"); - -// command to parse the incoming request -app.use(express.json()); - - -// check if all the keys are provided -if (!process.env.MONGO_URL || !process.env.SECRET_KEY || !process.env.PASSWORD_KEY) { - console.error("Please provide all the .env keys!!"); - console.error("MONGO_URI, SECRET_KEY, PASSWORD_KEY"); - process.exit(1); -} - - -// connect to the database -mongoConnect(); - - -// Middleware to log all the requests -app.use((req, res, next) => { - console.info(`${Date().slice(4, 24)} [${req.method}] http://${req.ip}${req.url}`); - next() -}) - - -// setting up cors -const allowedOrigins = [ - "http://localhost:5173", - "http://192.168.1.39:5173", - "https://securevault.pages.dev" -] -const corsOptions = { - credentials: true, - origin: allowedOrigins, - exposedHeaders: "Authorization", - methods: "GET,PATCH,POST,DELETE", - allowedHeaders: "Content-Type,Authorization", -}; -app.use(cors(corsOptions)); - - -// setting up router -app.use("/api", router); -app.get('/health', (req, res) => { res.json({ message: 'Health of Secure-Vault Server is up and running!!' }) }); - - -// error-handling middleware -app.use(errorHandler); - - -// creating server with Express app and http -const server = http.createServer(app); -server.listen(port, '0.0.0.0', () => { - console.info(`Dev Server running at http://localhost:${port}`); -}); diff --git a/server/app.prod.js b/server/app.prod.js deleted file mode 100644 index b2d33bd..0000000 --- a/server/app.prod.js +++ /dev/null @@ -1,61 +0,0 @@ -require("dotenv").config(); -const cors = require("cors"); -const http = require("http"); -const express = require("express"); - -const router = require("./src/app.router.js"); -const mongoConnect = require("./src/db.config.js"); -const errorHandler = require("./src/error.handler.js"); - - -const app = express(); -const port = process.env.PORT ?? 3000; - -// Disable x-powered-by header to prevent version disclosure -app.disable("x-powered-by"); - -// command to parse the incoming request -app.use(express.json()); - - -// check if all the keys are provided -if (!process.env.MONGO_URL || !process.env.SECRET_KEY || !process.env.PASSWORD_KEY) { - console.error("Please provide all the .env keys!!"); - console.error("MONGO_URI, SECRET_KEY, PASSWORD_KEY"); - process.exit(1); -} - - -// connect to the database -mongoConnect(); - - -// setting up cors -const allowedOrigins = [ - "https://securevault.pages.dev", - "https://dev.securevault.pages.dev", -] -const corsOptions = { - credentials: true, - origin: allowedOrigins, - exposedHeaders: "Authorization", - methods: "GET,PATCH,POST,DELETE", - allowedHeaders: "Content-Type,Authorization", -}; -app.use(cors(corsOptions)) - - -// setting up router -app.use("/api", router); -app.get('/health', (req, res) => { res.json({ message: 'Health of Secure-Vault Server is up and running!!' }) }); - - -// error-handling middleware -app.use(errorHandler); - - -// creating server with Express app and http -const server = http.createServer(app); -server.listen(port, () => { - console.info(`Prod Server started on the PORT ${port}`); -}); diff --git a/server/src/app.js b/server/src/app.js new file mode 100644 index 0000000..7ac5183 --- /dev/null +++ b/server/src/app.js @@ -0,0 +1,74 @@ +require("dotenv").config(); +const cors = require("cors"); +const express = require("express"); + +const router = require("./app.router"); +const mongoConnect = require("./db.config"); +const errorHandler = require("./error.handler"); + + +const app = express(); + +// Disable x-powered-by header to prevent version disclosure +app.disable("x-powered-by"); + +// Parse incoming JSON requests +app.use(express.json()); + + +// Check if all the necessary environment keys are provided +const requiredEnvVars = ["MONGO_URL", "SECRET_KEY", "PASSWORD_KEY"]; +requiredEnvVars.forEach((key) => { + if (!process.env[key]) { + console.error(`Missing environment variable: ${key}`); + process.exit(1); + } +}); + + +// Connect to the database +mongoConnect(); + + +// Middleware to log all requests +app.use((req, res, next) => { + if (req.method !== "OPTIONS" && process.env.NODE_ENV === "development") { + console.info(`${Date().slice(4, 24)} [${req.method}] http://${req.ip}${req.url}`); + } + next(); +}); + + +// Configure CORS +const allowedOrigins = process.env.NODE_ENV === "development" + ? [ + "http://localhost:5173", + "http://192.168.1.39:5173" + ] : [ + "https://securevault.pages.dev", + "https://dev.securevault.pages.dev" + ]; + +const corsOptions = { + credentials: true, + origin: allowedOrigins, + exposedHeaders: "Authorization", + methods: "GET,PATCH,POST,DELETE", + allowedHeaders: "Content-Type,Authorization", +}; +app.use(cors(corsOptions)); + + +// Set up routes +app.use("/api", router); +app.get("/health", (req, res) => { + res.json({ message: "Health of Secure-Vault Server is up and running!" }); +}); + + +// Error-handling middleware +app.use(errorHandler); + + +// Export the Express app +module.exports = app; diff --git a/server/src/db.config.js b/server/src/db.config.js index fee62fe..c2dfa38 100644 --- a/server/src/db.config.js +++ b/server/src/db.config.js @@ -1,8 +1,10 @@ const mongoose = require('mongoose'); +const MONGO_URL = process.env.NODE_ENV === "test" ? process.env.MONGO_URL_TEST : process.env.MONGO_URL; + const mongoConnect = async () => { try { - await mongoose.connect(process.env.MONGO_URL); + await mongoose.connect(MONGO_URL, { retryWrites: true, w: 'majority' }); console.info('MongoDB Connected Successfully!!'); } catch (error) { diff --git a/server/src/index.js b/server/src/index.js new file mode 100644 index 0000000..78809a3 --- /dev/null +++ b/server/src/index.js @@ -0,0 +1,11 @@ +const http = require("http"); + +const app = require('./app'); + +const port = process.env.PORT ?? 3000; + +// Create server with Express app and HTTP +const server = http.createServer(app); +server.listen(port, "0.0.0.0", () => { + console.info(`Express Server started on PORT: ${port}`); +}); diff --git a/server/src/test/app.test.js b/server/src/test/app.test.js new file mode 100644 index 0000000..06bc92c --- /dev/null +++ b/server/src/test/app.test.js @@ -0,0 +1,25 @@ +require("dotenv").config(); +const mongoose = require('mongoose'); +const mongoConnect = require('../db.config'); + +describe('Controller Tests', () => { + beforeAll(async () => { + await mongoConnect(); // Wait for DB connection + }); + + // Disconnect DB after all tests + afterAll(async () => { + // Drop the test database after tests + if (mongoose.connection.db) { + await mongoose.connection.db.dropDatabase(); + console.log("Test database dropped"); + } + // Disconnect the mongoose connection + await mongoose.disconnect(); + }); + + require('./controller/user.controller.test'); + // require('./controller/pin.controller.test'); + // require('./controller/journal.controller.test'); + // require('./controller/vault.controller.test'); +}); diff --git a/server/src/test/controller/journal.controller.test.js b/server/src/test/controller/journal.controller.test.js new file mode 100644 index 0000000..9a5a672 --- /dev/null +++ b/server/src/test/controller/journal.controller.test.js @@ -0,0 +1,21 @@ +const request = require('supertest'); +const app = require('../../app'); // Adjust path as needed + +describe('Journal Controller Tests', () => { + describe('Add Journal', () => { + it('should add a journal successfully', async () => { + const res = await request(app) + .post('/api/journal/add') + .send({ + key: 'samplekey', + title: 'Test Journal', + content: 'Sample content', + }); + + expect(res.status).toBe(201); + expect(res.body.message).toBe('Journal Added Successfully!'); + }); + }); + + // Add more tests for getJournal, updateJournal, deleteJournal, decryptJournal, etc. +}); diff --git a/server/src/test/controller/pin.controller.test.js b/server/src/test/controller/pin.controller.test.js new file mode 100644 index 0000000..81380f8 --- /dev/null +++ b/server/src/test/controller/pin.controller.test.js @@ -0,0 +1,17 @@ +const request = require('supertest'); +const app = require('../../app'); // Adjust path as needed + +describe('Pin Controller Tests', () => { + describe('Verify Encryption Key', () => { + it('should verify encryption key successfully', async () => { + const res = await request(app) + .post('/api/pin/verify') + .send({ key: 'samplekey' }); + + expect(res.status).toBe(200); + expect(res.body.message).toBe('Encryption Key is verified successfully!'); + }); + }); + + // Add more tests for setVerifyText, resetPin, etc. +}); diff --git a/server/src/test/controller/user.controller.test.js b/server/src/test/controller/user.controller.test.js new file mode 100644 index 0000000..bfedcfd --- /dev/null +++ b/server/src/test/controller/user.controller.test.js @@ -0,0 +1,143 @@ +const request = require('supertest'); +const app = require('../../app'); + +describe('User Controller Tests', () => { + + let token; + + describe('User Registration', () => { + it('should register successfully with valid credentials', async () => { + const res = await request(app) + .post('/api/auth/register') + .send({ + name: 'Test User', + email: 'test@example.com', + dob: '1990-01-01', + answer: 'test answer', + password: 'password123' + }); + + expect(res.status).toBe(201); + expect(res.body.message).toBe('User Registered Successfully!!'); + }); + + it('should fail registration with existing email', async () => { + const res = await request(app) + .post('/api/auth/register') + .send({ + name: 'Test User', + email: 'test@example.com', + dob: '1990-01-01', + answer: 'test answer', + password: 'password123' + }); + + expect(res.status).toBe(409); + expect(res.body.message).toBe('Email Already Exist!!'); + }); + }); + + + describe('User Login', () => { + it('should login successfully with valid credentials', async () => { + const res = await request(app) + .post('/api/auth/login') + .send({ email: 'test@example.com', password: 'password123' }); + + expect(res.status).toBe(200); + expect(res.body).toHaveProperty('token'); + token = res.body.token; + }); + + it('should fail login with invalid credentials', async () => { + const res = await request(app) + .post('/api/auth/login') + .send({ email: 'wrong@example.com', password: 'wrongpassword' }); + + expect(res.status).toBe(400); + expect(res.body.message).toBe('Bad Credentials!'); + }); + }); + + describe('Forget Password', () => { + it('should change password successfully with valid credentials', async () => { + const res = await request(app) + .patch('/api/auth/forget') + .send({ + email: 'test@example.com', + dob: '1990-01-01', + answer: 'test answer', + password: 'newpassword123' + }); + + expect(res.status).toBe(200); + expect(res.body.message).toBe('Password Changed Successfully!'); + }); + + it('should fail to change password with invalid credentials', async () => { + const res = await request(app) + .patch('/api/auth/forget') + .send({ + email: 'wrong@example.com', + dob: '1990-01-01', + answer: 'wrong answer', + password: 'newpassword123' + }); + + expect(res.status).toBe(400); + expect(res.body.message).toBe('Bad Credentials!'); + }); + }); + + describe('Get User Data', () => { + it('should return user data successfully', async () => { + const res = await request(app) + .get('/api/auth/user') + .set('Authorization', `Bearer ${token}`); + + expect(res.status).toBe(200); + expect(res.body).toHaveProperty('email', 'test@example.com'); + }); + }); + + describe('Update User', () => { + it('should update user successfully with valid data', async () => { + const res = await request(app) + .patch('/api/auth/user/update') + .set('Authorization', `Bearer ${token}`) + .send({ + name: 'Updated User', + dateOfBirth: '1990-01-01', + secretAnswer: 'updated answer' + }); + + expect(res.status).toBe(200); + expect(res.body.message).toBe('User Updated Successfully!!'); + }); + }); + + describe('Change Password', () => { + it('should change password successfully with valid data', async () => { + const res = await request(app) + .patch('/api/auth/user/changePassword') + .set('Authorization', `Bearer ${token}`) + .send({ + oldPassword: 'newpassword123', + newPassword: 'newpassword' + }); + + expect(res.status).toBe(200); + expect(res.body.message).toBe('Password Changed Successfully!'); + }); + }); + + describe('Delete User', () => { + it('should delete user successfully', async () => { + const res = await request(app) + .delete('/api/auth/user/delete') + .set('Authorization', `Bearer ${token}`); + + expect(res.status).toBe(204); + }); + }); +}); diff --git a/server/src/test/controller/vault.controller.test.js b/server/src/test/controller/vault.controller.test.js new file mode 100644 index 0000000..0ebb878 --- /dev/null +++ b/server/src/test/controller/vault.controller.test.js @@ -0,0 +1,22 @@ +const request = require('supertest'); +const app = require('../../app'); // Adjust path as needed + +describe('Vault Controller Tests', () => { + describe('Add Vault Entry', () => { + it('should add a vault entry successfully', async () => { + const res = await request(app) + .post('/api/vault/add') + .send({ + key: 'samplekey', + title: 'Test Vault', + username: 'testuser', + password: 'samplepassword', + }); + + expect(res.status).toBe(201); + expect(res.body.message).toBe('Vault Added Successfully!'); + }); + }); + + // Add more tests for getVault, updateVault, deleteVault, decryptVault, etc. +}); From 701339b29ed7452e1b0748fb811f7ce6b7f49222 Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 00:32:16 +0530 Subject: [PATCH 15/21] feat: enhance vault functionality with password decryption and UI improvements --- client/src/pages/vault/Vault.jsx | 21 +++++++++------------ server/src/controller/vault.controller.js | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/client/src/pages/vault/Vault.jsx b/client/src/pages/vault/Vault.jsx index c8118c7..9799694 100644 --- a/client/src/pages/vault/Vault.jsx +++ b/client/src/pages/vault/Vault.jsx @@ -113,7 +113,8 @@ export default function Vault() { setLoading(true); setCurrentId(id); const response = await http.post(`/vault/${id}`, { key: localStorage.getItem('eKey') }); - setDecrypted(response.data); + setDecrypted(atob(response.data)); + setTimeout(() => { setDecrypted(''); setCurrentId(null); }, 5000); } catch (error) { console.error(error); if (error.response) { toast.error(error.response.data.message); } @@ -132,7 +133,7 @@ export default function Vault() { const copyToClipboard = (text) => { navigator.clipboard.writeText(text); - toast.success('Copied to clipboard!'); + toast.success('Text Copied to clipboard!'); } return ( @@ -201,21 +202,17 @@ export default function Vault() { {index + 1} {data.title} - +
{currentId == data._id ? ( - + ) : ( handleDecrypt(data._id)} /> diff --git a/server/src/controller/vault.controller.js b/server/src/controller/vault.controller.js index 57116c8..87a39ef 100644 --- a/server/src/controller/vault.controller.js +++ b/server/src/controller/vault.controller.js @@ -93,7 +93,7 @@ const decryptVault = async (req, res, next) => { if (vault.password) { vault.password = decrypt(vault.password, key); } - return res.status(200).json(vault.password); + return res.status(200).json(btoa(vault.password)); } catch (error) { next(error); } From 61dffe3025fd0f4d7e23b1bf437c333430549553 Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 01:01:40 +0530 Subject: [PATCH 16/21] feat: enhance loading component with dynamic message and improved styling --- client/src/components/loading/Loading.jsx | 46 +++++++++++++------ .../src/components/loading/LoadingContext.jsx | 7 ++- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/client/src/components/loading/Loading.jsx b/client/src/components/loading/Loading.jsx index 96014f5..cacc81b 100644 --- a/client/src/components/loading/Loading.jsx +++ b/client/src/components/loading/Loading.jsx @@ -1,30 +1,50 @@ import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; import CircularProgress from '@mui/material/CircularProgress'; +import { useEffect, useState } from 'react'; import { useLoading } from './useLoading'; export default function Loading() { const { loading } = useLoading(); + const [loadingMessage, setLoadingMessage] = useState("Loading..."); + + // Change the loading message after 3 seconds + useEffect(() => { + let timer; + if (loading) { + timer = setTimeout(() => { + setLoadingMessage("Please wait, it's taking longer than usual."); + }, 3000); + } + return () => clearTimeout(timer); + }, [loading]); if (!loading) { return null; } return ( - + + + {loadingMessage} + ); } diff --git a/client/src/components/loading/LoadingContext.jsx b/client/src/components/loading/LoadingContext.jsx index b802ed2..141aaa6 100644 --- a/client/src/components/loading/LoadingContext.jsx +++ b/client/src/components/loading/LoadingContext.jsx @@ -1,8 +1,13 @@ import PropTypes from "prop-types"; import { createContext, useState, useMemo } from "react"; -export const LoadingContext = createContext(); +// Create a new context +const LoadingContext = createContext(); +export { LoadingContext }; + + +// Create a provider that will pass the loading export const LoadingProvider = ({ children }) => { const [loading, setLoading] = useState(false); const value = useMemo(() => ({ loading, setLoading }), [loading, setLoading]); From 46bcc7e32080ceb03a0cd188907c718f8692f8af Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 01:01:49 +0530 Subject: [PATCH 17/21] feat: enhance header component with tooltips and improved logout functionality --- client/src/pages/header/Header.jsx | 58 ++++++++++++++++++------------ 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/client/src/pages/header/Header.jsx b/client/src/pages/header/Header.jsx index 05d879d..c1842d8 100644 --- a/client/src/pages/header/Header.jsx +++ b/client/src/pages/header/Header.jsx @@ -6,8 +6,9 @@ import { IconButton, Menu, Avatar } from '@mui/material'; import MenuIcon from '@mui/icons-material/Menu'; -import CloseIcon from '@mui/icons-material/Close'; import HomeIcon from '@mui/icons-material/Home'; +import CloseIcon from '@mui/icons-material/Close'; +import PersonIcon from '@mui/icons-material/Person'; import DescriptionIcon from '@mui/icons-material/Description'; import EnhancedEncryptionIcon from '@mui/icons-material/EnhancedEncryption'; import ConnectWithoutContactIcon from '@mui/icons-material/ConnectWithoutContact'; @@ -24,7 +25,6 @@ export default function Header() { const [popUser, setPopUser] = useState(null); const [openLogout, setOpenLogout] = useState(false); - const settings = ['Account', 'Logout']; const isActive = (page) => location.pathname === '/' + page; const toggleDrawer = (page) => { @@ -40,8 +40,7 @@ export default function Header() { const handleCloseUserMenu = (setting) => { setPopUser(null); - if (setting === 'Account') navigate('/account'); - else if (setting === 'Logout') setOpenLogout(true); + if (setting === 'logout') setOpenLogout(true); }; @@ -50,24 +49,39 @@ export default function Header() { {openLogout && } - + + +  Secure Vault - navigate('/home')} className={isActive('home') ? "active-route" : "non-active-route"}> -  Home - - navigate('/vault')} className={isActive('vault') ? "active-route" : "non-active-route"}> -  Vault - - navigate('/journal')} className={isActive('journal') ? "active-route" : "non-active-route"}> -  Journal - - navigate('/collaborate')} className={isActive('collaborate') ? "active-route" : "non-active-route"}> -  Collaborate - + + navigate('/home')} className={isActive('home') ? "active-route" : "non-active-route"}> +  Home + + + + navigate('/vault')} className={isActive('vault') ? "active-route" : "non-active-route"}> +  Vault + + + + navigate('/journal')} className={isActive('journal') ? "active-route" : "non-active-route"}> +  Journal + + + + navigate('/account')} className={isActive('account') ? "active-route" : "non-active-route"}> +  MyAccount + + + + navigate('/collaborate')} className={isActive('collaborate') ? "active-route" : "non-active-route"}> +  Collaborate + + @@ -86,7 +100,7 @@ export default function Header() { - + @@ -107,11 +121,9 @@ export default function Header() { open={Boolean(popUser)} onClose={handleCloseUserMenu} > - {settings.map((setting) => ( - handleCloseUserMenu(setting)}> - {setting} - - ))} + handleCloseUserMenu("logout")}> + Logout + From 12928653a0597dc5d11aae23f430920c87862dde Mon Sep 17 00:00:00 2001 From: Aman Singh Date: Sat, 15 Feb 2025 01:32:33 +0530 Subject: [PATCH 18/21] feat: add dynamic background images to login and register pages --- client/public/{login2.jpg => first-image.jpg} | Bin client/public/login1.jpg | Bin 7120010 -> 0 bytes client/src/pages/login/Login.jsx | 38 +++++++++++++----- client/src/pages/register/Register.jsx | 22 +++++++++- 4 files changed, 47 insertions(+), 13 deletions(-) rename client/public/{login2.jpg => first-image.jpg} (100%) delete mode 100644 client/public/login1.jpg diff --git a/client/public/login2.jpg b/client/public/first-image.jpg similarity index 100% rename from client/public/login2.jpg rename to client/public/first-image.jpg diff --git a/client/public/login1.jpg b/client/public/login1.jpg deleted file mode 100644 index d895879c204651f15308c2edfe103c0a56b3c0e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7120010 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