diff --git a/.env.example b/.env.example index 03d1412e..6ad2c22f 100644 --- a/.env.example +++ b/.env.example @@ -30,12 +30,12 @@ SMTP_EMAIL_ADDRESS= SMTP_PASSWORD= FROM_EMAIL="your-name " -MINIO_ENDPOINT= -MINIO_PORT= -MINIO_ACCESS_KEY= -MINIO_SECRET_KEY= -MINIO_USE_SSL= -MINIO_BUCKET_NAME= +MINIO_ENDPOINT='localhost' +MINIO_PORT=9000 +MINIO_ACCESS_KEY= +MINIO_SECRET_KEY= +MINIO_USE_SSL=false +MINIO_BUCKET_NAME= JWT_SECRET=secret diff --git a/.github/workflows/auto-assign.yaml b/.github/workflows/auto-assign.yaml index a882dfc4..be0a7689 100644 --- a/.github/workflows/auto-assign.yaml +++ b/.github/workflows/auto-assign.yaml @@ -15,40 +15,7 @@ jobs: const comment = context.payload.comment; const issue = context.issue; const owner = "keyshade-xyz"; - const repo = "keyshade"; - - async function updateProjectStatus(issueNumber) { - const projectsResponse = await github.rest.projects.listForRepo({ - owner, - repo, - per_page: 100, - }); - - for (const project of projectsResponse.data) { - const columnsResponse = await github.rest.projects.listColumns({ - project_id: project.id, - per_page: 100, - }); - - const inProgressColumn = columnsResponse.data.find(column => column.name === "In Progress"); - if (!inProgressColumn) continue; - - const cardsResponse = await github.rest.projects.listCards({ - column_id: inProgressColumn.id, - per_page: 100, - }); - - const issueCardExists = cardsResponse.data.some(card => card.content_id === issueNumber && card.content_type === "Issue"); - - if (!issueCardExists) { - await github.rest.projects.createCard({ - column_id: inProgressColumn.id, - content_id: issueNumber, - content_type: "Issue", - }); - } - } - } + const repo = "keyshade" if (comment.body.startsWith('/attempt')) { if (!issue.assignee) { @@ -56,23 +23,20 @@ jobs: owner, repo, issue_number: issue.number, - assignees: [comment.user.login], + assignees: [comment.user.login] }); - await github.rest.issues.createComment({ owner, repo, issue_number: issue.number, - body: `Assigned the issue to @${comment.user.login}!`, + body: `Assigned the issue to @${comment.user.login}!` }); - - await updateProjectStatus(issue.number); } else { await github.rest.issues.createComment({ owner, repo, issue_number: issue.number, - body: 'This issue is already assigned. Tag a maintainer if you need to take over.', + body: 'This issue is already assigned. Tag a maintainer if you need to take over.' }); } } diff --git a/.github/workflows/deploy-api.yml b/.github/workflows/deploy-api.yml index 0271908f..45ce9a95 100644 --- a/.github/workflows/deploy-api.yml +++ b/.github/workflows/deploy-api.yml @@ -17,78 +17,78 @@ jobs: - name: Checkout uses: actions/checkout@v4 - # - name: Configure AWS credentials - # uses: aws-actions/configure-aws-credentials@v4 - # with: - # aws-access-key-id: ${{ secrets.ACCESS_KEY }} - # aws-secret-access-key: ${{ secrets.SECRET_KEY }} - # aws-region: ap-south-1 + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.SECRET_KEY }} + aws-region: ap-south-1 - # - name: Login to Amazon ECR - # id: login-ecr - # uses: aws-actions/amazon-ecr-login@v2 + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 - # - name: Build Docker image - # id: build - # env: - # ECR_REGISTRY: ${{ vars.ECR_REGISTRY }} - # ECR_REPOSITORY: ${{ vars.ECR_API_REPOSITORY }} - # run: | - # # Build a docker container and push it to ECR - # aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin $ECR_REGISTRY - # docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} -t $ECR_REGISTRY/$ECR_REPOSITORY:latest -f ./apps/api/Dockerfile . - # echo "Pushing image to ECR..." - # docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest - # docker push $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} - # echo "name=image::$ECR_REGISTRY/$ECR_REPOSITORY:latest" >> $GITHUB_OUTPUT + - name: Build Docker image + id: build + env: + ECR_REGISTRY: ${{ vars.ECR_REGISTRY }} + ECR_REPOSITORY: ${{ vars.ECR_API_REPOSITORY }} + run: | + # Build a docker container and push it to ECR + aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin $ECR_REGISTRY + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} -t $ECR_REGISTRY/$ECR_REPOSITORY:latest -f ./apps/api/Dockerfile . + echo "Pushing image to ECR..." + docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest + docker push $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} + echo "name=image::$ECR_REGISTRY/$ECR_REPOSITORY:latest" >> $GITHUB_OUTPUT - # setup-database: - # needs: build - # name: Setup Database - # runs-on: ubuntu-latest - # environment: alpha + setup-database: + needs: build + name: Setup Database + runs-on: ubuntu-latest + environment: alpha - # steps: - # - name: Checkout - # uses: actions/checkout@v4 + steps: + - name: Checkout + uses: actions/checkout@v4 - # - name: Install Node.js - # uses: actions/setup-node@v4 - # with: - # node-version: 20 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 - # - name: Install pnpm - # uses: pnpm/action-setup@v4 - # with: - # version: 9.2.0 - # run_install: false + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9.2.0 + run_install: false - # - name: Deploy migrations - # env: - # DATABASE_URL: ${{ secrets.DATABASE_URL }} - # run: pnpm db:deploy-migrations + - name: Deploy migrations + env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} + run: pnpm db:deploy-migrations - # deploy: - # needs: [build, setup-database] - # runs-on: ubuntu-latest - # environment: alpha - # name: Deploy API docker image for release + deploy: + needs: [build, setup-database] + runs-on: ubuntu-latest + environment: alpha + name: Deploy API docker image for release - # steps: - # - name: Checkout - # uses: actions/checkout@v4 + steps: + - name: Checkout + uses: actions/checkout@v4 - # - name: Configure AWS credentials - # uses: aws-actions/configure-aws-credentials@v4 - # with: - # aws-access-key-id: ${{ secrets.ACCESS_KEY }} - # aws-secret-access-key: ${{ secrets.SECRET_KEY }} - # aws-region: ap-south-1 + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.SECRET_KEY }} + aws-region: ap-south-1 - # - name: Force re-deploy task in service - # id: force-redeploy - # env: - # ECS_CLUSTER: ${{ vars.ECS_CLUSTER }} - # ECS_SERVICE: ${{ vars.ECS_API_SERVICE }} - # run: | - # aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment + - name: Force re-deploy task in service + id: force-redeploy + env: + ECS_CLUSTER: ${{ vars.ECS_CLUSTER }} + ECS_SERVICE: ${{ vars.ECS_API_SERVICE }} + run: | + aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment diff --git a/.github/workflows/deploy-platform.yml b/.github/workflows/deploy-platform.yml index 8ac2eeb5..74f293bf 100644 --- a/.github/workflows/deploy-platform.yml +++ b/.github/workflows/deploy-platform.yml @@ -22,52 +22,52 @@ jobs: - name: Checkout uses: actions/checkout@v4 - # - name: Configure AWS credentials - # uses: aws-actions/configure-aws-credentials@v4 - # with: - # aws-access-key-id: ${{ secrets.ACCESS_KEY }} - # aws-secret-access-key: ${{ secrets.SECRET_KEY }} - # aws-region: ap-south-1 + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.SECRET_KEY }} + aws-region: ap-south-1 - # - name: Login to Amazon ECR - # id: login-ecr - # uses: aws-actions/amazon-ecr-login@v2 + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 - # - name: Build Docker image - # id: build - # env: - # ECR_REGISTRY: ${{ vars.ECR_REGISTRY }} - # ECR_REPOSITORY: ${{ vars.ECR_PLATFORM_REPOSITORY }} - # run: | - # # Build a docker container and push it to ECR - # aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin $ECR_REGISTRY - # docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} -t $ECR_REGISTRY/$ECR_REPOSITORY:latest -f ./apps/platform/Dockerfile . - # echo "Pushing image to ECR..." - # docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest - # docker push $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} - # echo "name=image::$ECR_REGISTRY/$ECR_REPOSITORY:latest" >> $GITHUB_OUTPUT + - name: Build Docker image + id: build + env: + ECR_REGISTRY: ${{ vars.ECR_REGISTRY }} + ECR_REPOSITORY: ${{ vars.ECR_PLATFORM_REPOSITORY }} + run: | + # Build a docker container and push it to ECR + aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin $ECR_REGISTRY + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} -t $ECR_REGISTRY/$ECR_REPOSITORY:latest -f ./apps/platform/Dockerfile . + echo "Pushing image to ECR..." + docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest + docker push $ECR_REGISTRY/$ECR_REPOSITORY:${GITHUB_SHA::6} + echo "name=image::$ECR_REGISTRY/$ECR_REPOSITORY:latest" >> $GITHUB_OUTPUT - # deploy: - # needs: build - # runs-on: ubuntu-latest - # environment: alpha - # name: Deploy Platform docker image for release + deploy: + needs: build + runs-on: ubuntu-latest + environment: alpha + name: Deploy Platform docker image for release - # steps: - # - name: Checkout - # uses: actions/checkout@v4 + steps: + - name: Checkout + uses: actions/checkout@v4 - # - name: Configure AWS credentials - # uses: aws-actions/configure-aws-credentials@v4 - # with: - # aws-access-key-id: ${{ secrets.ACCESS_KEY }} - # aws-secret-access-key: ${{ secrets.SECRET_KEY }} - # aws-region: ap-south-1 + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.SECRET_KEY }} + aws-region: ap-south-1 - # - name: Force re-deploy task in service - # id: force-redeploy - # env: - # ECS_CLUSTER: ${{ vars.ECS_CLUSTER }} - # ECS_SERVICE: ${{ vars.ECS_PLATFORM_SERVICE }} - # run: | - # aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment + - name: Force re-deploy task in service + id: force-redeploy + env: + ECS_CLUSTER: ${{ vars.ECS_CLUSTER }} + ECS_SERVICE: ${{ vars.ECS_PLATFORM_SERVICE }} + run: | + aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml deleted file mode 100644 index 08ecf7ca..00000000 --- a/.github/workflows/docker-ci.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Docker Check - -on: - push: - paths: - - '**Dockerfile' - pull_request: - paths: - - '**Dockerfile' -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Build Docker Image - run: | - for dir in app/*/ ; do - if [ -f "$dir/Dockerfile" ]; then - docker build -f "$dir/Dockerfile" "$dir" - fi - done diff --git a/.github/workflows/validate-api-client.yaml b/.github/workflows/validate-api-client.yaml index 796504a3..a5246a5a 100644 --- a/.github/workflows/validate-api-client.yaml +++ b/.github/workflows/validate-api-client.yaml @@ -52,10 +52,6 @@ jobs: run: | pnpm run lint:api-client - - name: Build - run: | - pnpm run build:api-client - - name: Test run: | pnpm run test:api-client diff --git a/.github/workflows/validate-cli.yaml b/.github/workflows/validate-cli.yaml deleted file mode 100644 index 81ac44d1..00000000 --- a/.github/workflows/validate-cli.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: Validate CLI - -on: - push: - branches: - - '!develop' - - '!main' - paths: - [ - 'apps/cli/**', - '.github/workflows/validate-cli.yml', - '.github/workflows/deploy-cli.yml' - ] - pull_request: - paths: - [ - 'apps/cli/**', - '.github/workflows/deploy-cli.yml', - '.github/workflows/validate-cli.yml' - ] - -jobs: - validate: - runs-on: ubuntu-latest - name: Validate Cli - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 9.2.0 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install packages - run: | - pnpm i - - - name: Lint - run: | - pnpm run lint:cli - - - name: Build - run: | - pnpm run build:cli diff --git a/.github/workflows/validate-platform.yaml b/.github/workflows/validate-platform.yaml deleted file mode 100644 index c29b2b67..00000000 --- a/.github/workflows/validate-platform.yaml +++ /dev/null @@ -1,61 +0,0 @@ -name: Validate Platform - -on: - push: - branches: - - '!develop' - - '!main' - paths: - [ - 'apps/platform/**', - '.github/workflows/validate-platform.yml', - '.github/workflows/deploy-platform.yml' - ] - pull_request: - paths: - [ - 'apps/platform/**', - '.github/workflows/deploy-platform.yml', - '.github/workflows/validate-platform.yml' - ] - -jobs: - validate: - runs-on: ubuntu-latest - name: Validate Platform - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 9.2.0 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install packages - run: | - pnpm i - - - name: Lint - run: | - pnpm run lint:platform \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit index ed3f04a6..f1fdd725 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -pnpm lint && pnpm format && pnpm test:api && pnpm test:api-client +pnpm lint && pnpm format && pnpm test:api && pnpm test:api-client \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 85c33727..ef833e58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,64 +1,3 @@ -## [2.3.0](https://github.com/keyshade-xyz/keyshade/compare/v2.2.0...v2.3.0) (2024-07-29) - -### 🚀 Features - -* **api:** Add pagination metadata to Environment module ([#382](https://github.com/keyshade-xyz/keyshade/issues/382)) ([9baa344](https://github.com/keyshade-xyz/keyshade/commit/9baa344e662e8034ab184f9db2218b8d8b279c61)) -* **api:** Add pagination metadata to Event module ([#394](https://github.com/keyshade-xyz/keyshade/issues/394)) ([60010b4](https://github.com/keyshade-xyz/keyshade/commit/60010b434a15082b90b9b858e0dd9c09748661fb)) -* **api:** Add pagination metadata to Integration module ([#391](https://github.com/keyshade-xyz/keyshade/issues/391)) ([0372e36](https://github.com/keyshade-xyz/keyshade/commit/0372e3629d4d96df7d7263215f866ad8a3e70bc0)) -* **api:** Add pagination metadata to Project module ([#393](https://github.com/keyshade-xyz/keyshade/issues/393)) ([bc274fd](https://github.com/keyshade-xyz/keyshade/commit/bc274fdc241395c022fd6f209c0e951ab4c7694f)) -* **api:** Add pagination metadata to Secret module ([#389](https://github.com/keyshade-xyz/keyshade/issues/389)) ([c4cc667](https://github.com/keyshade-xyz/keyshade/commit/c4cc6676f566c6216ba2e196834aea164c682e51)) -* **api:** Add pagination metadata to Variable module ([#390](https://github.com/keyshade-xyz/keyshade/issues/390)) ([be6aabf](https://github.com/keyshade-xyz/keyshade/commit/be6aabfe218b039d65b62aa01518240487bb5836)) -* **api:** Add pagination metadata to Workspace module ([#387](https://github.com/keyshade-xyz/keyshade/issues/387)) ([a08c924](https://github.com/keyshade-xyz/keyshade/commit/a08c924dbc52ea45e793d639170333f8824eae2c)) -* **api:** Add pagination metadata to Workspace Role module ([#388](https://github.com/keyshade-xyz/keyshade/issues/388)) ([d8e8f49](https://github.com/keyshade-xyz/keyshade/commit/d8e8f491d966cb794057536922c7469ed4f8f448)) -* **api:** Create a paginate method ([#379](https://github.com/keyshade-xyz/keyshade/issues/379)) ([09576f1](https://github.com/keyshade-xyz/keyshade/commit/09576f130900ea8d89454332bef9353bfe09a0b2)) -* **api:** Create endpoint for fetching all revisions of a [secure] ([#303](https://github.com/keyshade-xyz/keyshade/issues/303)) ([de2b602](https://github.com/keyshade-xyz/keyshade/commit/de2b602dcd5bdab104d910b12761a6ec778103b8)) -* **api:** Create endpoint for fetching all revisions of a variable ([#304](https://github.com/keyshade-xyz/keyshade/issues/304)) ([9abddc1](https://github.com/keyshade-xyz/keyshade/commit/9abddc11691146045e727078b3b963f8b9c2e990)) -* **cli:** Improved the DX for list profile ([#334](https://github.com/keyshade-xyz/keyshade/issues/334)) ([6bff496](https://github.com/keyshade-xyz/keyshade/commit/6bff4964493f9919b221a5dc6fcc578bc47b2832)) -* **platform:** Add warning sonner toast for invalid otp ([#335](https://github.com/keyshade-xyz/keyshade/issues/335)) ([21513f5](https://github.com/keyshade-xyz/keyshade/commit/21513f5be6d36b308cd5926e7ad1b475f96cb668)) - -### 🐛 Bug Fixes - -* **cli:** Added parent directory check ([#359](https://github.com/keyshade-xyz/keyshade/issues/359)) ([538ea7f](https://github.com/keyshade-xyz/keyshade/commit/538ea7f2654e4f3ea06fde9fe653342ca769ce44)) -* **platform:** Platform types fixes ([#374](https://github.com/keyshade-xyz/keyshade/issues/374)) ([8e9d9ff](https://github.com/keyshade-xyz/keyshade/commit/8e9d9ffac0af1f93bb5513bf94aa3a75fb3c31c6)) - -### 📚 Documentation - -* Added docker details in setting-things-up.md ([#358](https://github.com/keyshade-xyz/keyshade/issues/358)) ([ed5093a](https://github.com/keyshade-xyz/keyshade/commit/ed5093ac5df17f8dbf4c7e286af739121b51a692)) -* Update postman workspace link ([d6aba27](https://github.com/keyshade-xyz/keyshade/commit/d6aba270a97f03f16e35b5cde75ff472641fe1a7)) -* Updated env and cli docs ([1213d2a](https://github.com/keyshade-xyz/keyshade/commit/1213d2a9b5689d44a260eff9c2e0eb8e6968c7da)) - -### 🔧 Miscellaneous Chores - -* Added next backend url in .env.example ([5695254](https://github.com/keyshade-xyz/keyshade/commit/5695254b64d3c504f7ca7cd17681f42947fef232)) -* **api-client:** Added pagination structure ([a70e957](https://github.com/keyshade-xyz/keyshade/commit/a70e957afc828be1e72d0ea958de8ba860a04b9c)) -* **api-client:** Fixed test script ([ad70819](https://github.com/keyshade-xyz/keyshade/commit/ad708190771f40596646b54fdda49a01c4742644)) -* **api-client:** Removed try-catch from tests in environment ([a64e48c](https://github.com/keyshade-xyz/keyshade/commit/a64e48cb171b3996bddb74f2cf256d4760e3ccb3)) -* **api:** Add user cache for optimization ([#386](https://github.com/keyshade-xyz/keyshade/issues/386)) ([8d730b5](https://github.com/keyshade-xyz/keyshade/commit/8d730b58830a8a0e6be6bf0fe86b3021a2d473eb)) -* **api:** Alter cache rehydration interval ([f5f9eec](https://github.com/keyshade-xyz/keyshade/commit/f5f9eec5c81b29d7f8eb1e233c4e80e4d36eb0cf)) -* **api:** Fixed naming error in variable controller ([0c5a380](https://github.com/keyshade-xyz/keyshade/commit/0c5a380fba843a2eb8a84753cfbe8b3ef86b6e31)) -* **api:** Improve handling of edge cases for paginate module ([#402](https://github.com/keyshade-xyz/keyshade/issues/402)) ([8591487](https://github.com/keyshade-xyz/keyshade/commit/8591487623c5e817ff31aedd6e8cd15074bcfc1c)) -* **api:** Minor updates to user service ([249d778](https://github.com/keyshade-xyz/keyshade/commit/249d778b94a5587b6c7da6d7afe04b9bfee5c0d6)) -* **api:** Skip workspace creation when user is admin ([#376](https://github.com/keyshade-xyz/keyshade/issues/376)) ([13f6c59](https://github.com/keyshade-xyz/keyshade/commit/13f6c59fda07e4a8b6f991e670ab055964fb2fb1)) -* **ci:** Add docker check ([#383](https://github.com/keyshade-xyz/keyshade/issues/383)) ([3119001](https://github.com/keyshade-xyz/keyshade/commit/311900177b85035d777acb6d86549cfffc71dbef)) -* **ci:** Add names to CI files ([1a7e5f6](https://github.com/keyshade-xyz/keyshade/commit/1a7e5f6c2b4e4a5aced5955a2a394f0540776cb1)) -* **ci:** Add validate CLI pipeline ([#373](https://github.com/keyshade-xyz/keyshade/issues/373)) ([a91df6c](https://github.com/keyshade-xyz/keyshade/commit/a91df6c6eedbb3e79dd77cbe42ca4836a714e8a3)) -* **ci:** Adding validate pipeline ([#372](https://github.com/keyshade-xyz/keyshade/issues/372)) ([23cf3b3](https://github.com/keyshade-xyz/keyshade/commit/23cf3b3b12719297ac00c07a20d0b57462440fef)) -* **ci:** Disabled platform and api deployments ([74d601a](https://github.com/keyshade-xyz/keyshade/commit/74d601a576986f6436314dd6631f86ee49185109)) -* **ci:** Fixed deployment scripts ([12e35db](https://github.com/keyshade-xyz/keyshade/commit/12e35db8a5d454db59c8eadaa6bd0fa0525b90b5)) -* **ci:** Fixed platform script ([d783f2a](https://github.com/keyshade-xyz/keyshade/commit/d783f2ab16c63c711a8022b145e0af085cc011de)) -* **CI:** Include migration deployment in API deploy pipeline ([dbd5222](https://github.com/keyshade-xyz/keyshade/commit/dbd5222a5081d769e47cd32231cc515bb311666b)) -* **CI:** Separated deployment and docker build jobs ([090e193](https://github.com/keyshade-xyz/keyshade/commit/090e193cb4af3771e523dd371364f2d21dd3cd03)) -* **CI:** Setup inter-job dependency ([1756727](https://github.com/keyshade-xyz/keyshade/commit/1756727849a2bfabf9d58a81e95d7b6f6c159f4a)) -* **ci:** Update auto-assign.yaml ([#375](https://github.com/keyshade-xyz/keyshade/issues/375)) ([91e0ec1](https://github.com/keyshade-xyz/keyshade/commit/91e0ec12da8c22b8b2ecec8a35aef48fc5fecc9d)) -* **cli:** Changed objects to classes ([#306](https://github.com/keyshade-xyz/keyshade/issues/306)) ([c83f2db](https://github.com/keyshade-xyz/keyshade/commit/c83f2db56ddc3256ed4df35169325cc5427b4978)) -* Removed Minio config ([8feb83a](https://github.com/keyshade-xyz/keyshade/commit/8feb83aae23b5817d5038235a3d0e59c5d12a0ff)) -* Updated deployment scripts and added health check in platform ([fcc1c3f](https://github.com/keyshade-xyz/keyshade/commit/fcc1c3fb50679073c7d3791fedafe25b1287ad0a)) - -### 🔨 Code Refactoring - -* **api:** Updated path of some endpoints in project controller ([9502678](https://github.com/keyshade-xyz/keyshade/commit/95026787df5156147a209c7f6e6b8970b33df5aa)) -* **api:** Updated Redis provider ([33491a1](https://github.com/keyshade-xyz/keyshade/commit/33491a199c5ae7f822e44936eebab964f7f93ac5)) - ## [2.2.0](https://github.com/keyshade-xyz/keyshade/compare/v2.1.0...v2.2.0) (2024-07-11) ### 🚀 Features diff --git a/apps/api/package.json b/apps/api/package.json index 2bba3faf..b4f083c0 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -16,7 +16,7 @@ "db:format": "pnpm dlx prisma format --schema=src/prisma/schema.prisma", "db:reset": "pnpx dotenv-cli -e ../../.env -- pnpm dlx prisma migrate reset --force --schema=src/prisma/schema.prisma", "sourcemaps": "sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload ./dist || echo 'Failed to upload source maps to Sentry'", - "e2e:prepare": "cd ../../ && docker compose down && docker compose -f docker-compose-test.yml up -d && sleep 3 && cd apps/api && pnpm db:generate-types && cross-env NODE_ENV='e2e' DATABASE_URL='postgresql://prisma:prisma@localhost:5432/tests' pnpm run db:deploy-migrations", + "e2e:prepare": "cd ../../ && docker compose down && docker compose -f docker-compose-test.yml up -d && cd apps/api && pnpm db:generate-types && cross-env NODE_ENV='e2e' DATABASE_URL='postgresql://prisma:prisma@localhost:5432/tests' pnpm run db:deploy-migrations", "e2e": "pnpm run e2e:prepare && cross-env NODE_ENV='e2e' DATABASE_URL='postgresql://prisma:prisma@localhost:5432/tests' jest --runInBand --config=jest.e2e-config.ts --coverage --coverageDirectory=../../coverage-e2e/api --coverageReporters=json && pnpm run e2e:teardown", "e2e:teardown": "cd ../../ && docker compose -f docker-compose-test.yml down", "unit": "pnpm db:generate-types && jest --config=jest.config.ts" @@ -70,7 +70,8 @@ "source-map-support": "^0.5.21", "supertest": "^6.3.3", "ts-jest": "^29.1.0", - "ts-loader": "^9.4.3" + "ts-loader": "^9.4.3", + "typescript": "^5.1.3" }, "jest": { "moduleFileExtensions": [ diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 0bc84ee0..2f492558 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -23,7 +23,6 @@ import { ScheduleModule } from '@nestjs/schedule' import { EnvSchema } from '../common/env/env.schema' import { IntegrationModule } from '../integration/integration.module' import { FeedbackModule } from '../feedback/feedback.module' -import { CacheModule } from '../cache/cache.module' @Module({ controllers: [AppController], @@ -54,8 +53,7 @@ import { CacheModule } from '../cache/cache.module' SocketModule, ProviderModule, IntegrationModule, - FeedbackModule, - CacheModule + FeedbackModule ], providers: [ { diff --git a/apps/api/src/auth/controller/auth.controller.spec.ts b/apps/api/src/auth/controller/auth.controller.spec.ts index a8721683..d51abbd4 100644 --- a/apps/api/src/auth/controller/auth.controller.spec.ts +++ b/apps/api/src/auth/controller/auth.controller.spec.ts @@ -10,8 +10,6 @@ import { ConfigService } from '@nestjs/config' import { GithubOAuthStrategyFactory } from '../../config/factory/github/github-strategy.factory' import { GoogleOAuthStrategyFactory } from '../../config/factory/google/google-strategy.factory' import { GitlabOAuthStrategyFactory } from '../../config/factory/gitlab/gitlab-strategy.factory' -import { CacheService } from '../../cache/cache.service' -import { REDIS_CLIENT } from '../../provider/redis.provider' describe('AuthController', () => { let controller: AuthController @@ -27,20 +25,7 @@ describe('AuthController', () => { ConfigService, { provide: MAIL_SERVICE, useClass: MockMailService }, JwtService, - PrismaService, - CacheService, - { - provide: REDIS_CLIENT, - useValue: { - publisher: { - setEx: jest.fn(), - set: jest.fn(), - get: jest.fn(), - del: jest.fn(), - keys: jest.fn() - } - } - } + PrismaService ] }) .overrideProvider(PrismaService) diff --git a/apps/api/src/auth/guard/auth/auth.guard.spec.ts b/apps/api/src/auth/guard/auth/auth.guard.spec.ts index c018193d..2da36533 100644 --- a/apps/api/src/auth/guard/auth/auth.guard.spec.ts +++ b/apps/api/src/auth/guard/auth/auth.guard.spec.ts @@ -2,6 +2,6 @@ import { AuthGuard } from './auth.guard' describe('AuthGuard', () => { it('should be defined', () => { - expect(new AuthGuard(null, null, null, null)).toBeDefined() + expect(new AuthGuard(null, null, null)).toBeDefined() }) }) diff --git a/apps/api/src/auth/guard/auth/auth.guard.ts b/apps/api/src/auth/guard/auth/auth.guard.ts index c0248c55..ffdff70a 100644 --- a/apps/api/src/auth/guard/auth/auth.guard.ts +++ b/apps/api/src/auth/guard/auth/auth.guard.ts @@ -13,7 +13,6 @@ import { ONBOARDING_BYPASSED } from '../../../decorators/bypass-onboarding.decor import { AuthenticatedUserContext } from '../../auth.types' import { toSHA256 } from '../../../common/to-sha256' import { EnvSchema } from '../../../common/env/env.schema' -import { CacheService } from '../../../cache/cache.service' const X_E2E_USER_EMAIL = 'x-e2e-user-email' const X_KEYSHADE_TOKEN = 'x-keyshade-token' @@ -25,8 +24,7 @@ export class AuthGuard implements CanActivate { constructor( private readonly jwtService: JwtService, private readonly prisma: PrismaService, - private reflector: Reflector, - private cache: CacheService + private reflector: Reflector ) {} async canActivate(context: ExecutionContext): Promise { @@ -106,15 +104,11 @@ export class AuthGuard implements CanActivate { secret: process.env.JWT_SECRET }) - const cachedUser = await this.cache.getUser(payload['id']) - if (cachedUser) user = cachedUser - else { - user = await this.prisma.user.findUnique({ - where: { - id: payload['id'] - } - }) - } + user = await this.prisma.user.findUnique({ + where: { + id: payload['id'] + } + }) } catch { throw new ForbiddenException() } diff --git a/apps/api/src/auth/service/auth.service.spec.ts b/apps/api/src/auth/service/auth.service.spec.ts index 34cd05dc..57c89764 100644 --- a/apps/api/src/auth/service/auth.service.spec.ts +++ b/apps/api/src/auth/service/auth.service.spec.ts @@ -5,8 +5,6 @@ import { MAIL_SERVICE } from '../../mail/services/interface.service' import { JwtService } from '@nestjs/jwt' import { PrismaService } from '../../prisma/prisma.service' import { mockDeep } from 'jest-mock-extended' -import { CacheService } from '../../cache/cache.service' -import { REDIS_CLIENT } from '../../provider/redis.provider' describe('AuthService', () => { let service: AuthService @@ -17,20 +15,7 @@ describe('AuthService', () => { AuthService, { provide: MAIL_SERVICE, useClass: MockMailService }, JwtService, - PrismaService, - CacheService, - { - provide: REDIS_CLIENT, - useValue: { - publisher: { - setEx: jest.fn(), - set: jest.fn(), - get: jest.fn(), - del: jest.fn(), - keys: jest.fn() - } - } - } + PrismaService ] }) .overrideProvider(PrismaService) diff --git a/apps/api/src/auth/service/auth.service.ts b/apps/api/src/auth/service/auth.service.ts index 1c82a738..5dac0e89 100644 --- a/apps/api/src/auth/service/auth.service.ts +++ b/apps/api/src/auth/service/auth.service.ts @@ -18,7 +18,6 @@ import { PrismaService } from '../../prisma/prisma.service' import createUser from '../../common/create-user' import { AuthProvider } from '@prisma/client' import generateOtp from '../../common/generate-otp' -import { CacheService } from '../../cache/cache.service' @Injectable() export class AuthService { @@ -27,8 +26,7 @@ export class AuthService { constructor( @Inject(MAIL_SERVICE) private mailService: IMailService, private readonly prisma: PrismaService, - private jwt: JwtService, - private cache: CacheService + private jwt: JwtService ) { this.logger = new Logger(AuthService.name) } @@ -84,7 +82,7 @@ export class AuthService { } } }) - this.cache.setUser(user) // Save user to cache + this.logger.log(`User logged in: ${email}`) const token = await this.generateToken(user.id) diff --git a/apps/api/src/cache/cache.module.ts b/apps/api/src/cache/cache.module.ts deleted file mode 100644 index c8dddd24..00000000 --- a/apps/api/src/cache/cache.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Global, Module } from '@nestjs/common' -import { CacheService } from './cache.service' - -@Global() -@Module({ - exports: [CacheService], - providers: [CacheService] -}) -export class CacheModule {} diff --git a/apps/api/src/cache/cache.service.spec.ts b/apps/api/src/cache/cache.service.spec.ts deleted file mode 100644 index de3d09bd..00000000 --- a/apps/api/src/cache/cache.service.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing' -import { CacheService } from './cache.service' -import { REDIS_CLIENT } from '../provider/redis.provider' - -describe('CacheService', () => { - let service: CacheService - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [ - CacheService, - { - provide: REDIS_CLIENT, - useValue: { - publisher: { - // Add minimal mock methods as needed - setEx: jest.fn(), - set: jest.fn(), - get: jest.fn(), - del: jest.fn(), - keys: jest.fn() - } - } - } - ] - }).compile() - - service = module.get(CacheService) - }) - - it('should be defined', () => { - expect(service).toBeDefined() - }) -}) diff --git a/apps/api/src/cache/cache.service.ts b/apps/api/src/cache/cache.service.ts deleted file mode 100644 index d5ecced3..00000000 --- a/apps/api/src/cache/cache.service.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { Inject, Injectable, OnModuleDestroy } from '@nestjs/common' -import { RedisClientType } from 'redis' -import { User } from '@prisma/client' -import { REDIS_CLIENT } from '../provider/redis.provider' - -@Injectable() -export class CacheService implements OnModuleDestroy { - private static readonly USER_PREFIX = 'user-' - - constructor( - @Inject(REDIS_CLIENT) private redisClient: { publisher: RedisClientType } - ) {} - - private getUserKey(userId: string): string { - return `${CacheService.USER_PREFIX}${userId}` - } - - async setUser(user: User, expirationInSeconds?: number): Promise { - const key = this.getUserKey(user.id) - const userJson = JSON.stringify(user) - if (expirationInSeconds) { - await this.redisClient.publisher.setEx(key, expirationInSeconds, userJson) - } else { - await this.redisClient.publisher.set(key, userJson) - } - } - - async getUser(userId: string): Promise { - const key = this.getUserKey(userId) - const userData = await this.redisClient.publisher.get(key) - if (userData) { - return JSON.parse(userData) as User - } - return null - } - - async deleteUser(userId: string): Promise { - const key = this.getUserKey(userId) - return await this.redisClient.publisher.del(key) - } - - async clearAllUserCache(): Promise { - const keys = await this.redisClient.publisher.keys( - `${CacheService.USER_PREFIX}*` - ) - if (keys.length > 0) { - await this.redisClient.publisher.del(keys) - } - } - - async onModuleDestroy() { - await this.redisClient.publisher.quit() - } -} diff --git a/apps/api/src/common/create-user.ts b/apps/api/src/common/create-user.ts index 89632822..032d167d 100644 --- a/apps/api/src/common/create-user.ts +++ b/apps/api/src/common/create-user.ts @@ -7,7 +7,11 @@ import { Logger } from '@nestjs/common' const createUser = async ( dto: Partial & { authProvider: AuthProvider }, prisma: PrismaService -): Promise => { +): Promise< + User & { + defaultWorkspace: Workspace + } +> => { const logger = new Logger('createUser') // Create the user @@ -23,11 +27,6 @@ const createUser = async ( } }) - if (user.isAdmin) { - logger.log(`Created admin user ${user.id}`) - return user - } - // Create the user's default workspace const workspace = await createWorkspace( user, diff --git a/apps/api/src/common/paginate.spec.ts b/apps/api/src/common/paginate.spec.ts deleted file mode 100644 index 6c06b844..00000000 --- a/apps/api/src/common/paginate.spec.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { paginate } from './paginate' - -describe('paginate', () => { - it('should paginate without default query', () => { - const totalCount = 100 - const relativeUrl = '/items' - const query = { page: 2, limit: 10 } - - const result = paginate(totalCount, relativeUrl, query) - - expect(result).toBeDefined() - expect(result).toEqual( - expect.objectContaining({ - page: 2, - perPage: 10, - pageCount: 10, - totalCount: 100 - }) - ) - expect(result.links.self).toEqual('/items?page=2&limit=10') - expect(result.links.first).toEqual('/items?page=0&limit=10') - expect(result.links.previous).toEqual('/items?page=1&limit=10') - expect(result.links.next).toEqual('/items?page=3&limit=10') - expect(result.links.last).toEqual('/items?page=9&limit=10') - }) - - it('should paginate with default query', () => { - const totalCount = 100 - const relativeUrl = '/items' - const query = { page: 5, limit: 10 } - const defaultQuery = { pricing: 'pro', filter: 'admin' } - - const result = paginate(totalCount, relativeUrl, query, defaultQuery) - - expect(result).toBeDefined() - expect(result).toEqual( - expect.objectContaining({ - page: 5, - perPage: 10, - pageCount: 10, - totalCount: 100 - }) - ) - expect(result.links.self).toEqual( - '/items?filter=admin&pricing=pro&page=5&limit=10' - ) - expect(result.links.first).toEqual( - '/items?filter=admin&pricing=pro&page=0&limit=10' - ) - expect(result.links.previous).toEqual( - '/items?filter=admin&pricing=pro&page=4&limit=10' - ) - expect(result.links.next).toEqual( - '/items?filter=admin&pricing=pro&page=6&limit=10' - ) - expect(result.links.last).toEqual( - '/items?filter=admin&pricing=pro&page=9&limit=10' - ) - }) - - it('should paginate correctly edge cases where pervious or next is null', () => { - const totalCount = 10 - const relativeUrl = '/items' - const query = { page: 0, limit: 10 } - - const result = paginate(totalCount, relativeUrl, query) - - expect(result).toBeDefined() - expect(result).toEqual( - expect.objectContaining({ - page: 0, - perPage: 10, - pageCount: 1, - totalCount: 10 - }) - ) - expect(result.links.self).toEqual('/items?page=0&limit=10') - expect(result.links.first).toEqual('/items?page=0&limit=10') - expect(result.links.previous).toBeNull() - expect(result.links.next).toBeNull() - expect(result.links.last).toEqual('/items?page=0&limit=10') - }) - - it('should receive empty object when page is greater than maximum page limit', () => { - const totalCount = 4 - const relativeUrl = '/items' - const query = { page: 3, limit: 2 } - - const result = paginate(totalCount, relativeUrl, query) - - expect(result).toBeDefined() - expect(result).toEqual({}) - }) - - it('should receive empty object when limit is 0 or undefined', () => { - const totalCount = 10 - const relativeUrl = '/items' - const query = { page: 0, limit: 0 } - const result = paginate(totalCount, relativeUrl, query) - - expect(result).toBeDefined() - expect(result).toEqual({}) - }) -}) diff --git a/apps/api/src/common/paginate.ts b/apps/api/src/common/paginate.ts deleted file mode 100644 index b25f43c3..00000000 --- a/apps/api/src/common/paginate.ts +++ /dev/null @@ -1,76 +0,0 @@ -export interface PaginatedMetadata { - page: number - perPage: number - pageCount: number - totalCount: number - links: { - self: string - first: string - previous: string | null - next: string | null - last: string - } -} - -interface QueryOptions { - page: number - limit: number - sort?: string - order?: string - search?: string -} - -//convert query object to query string to use in links -const getQueryString = (query: QueryOptions) => { - return Object.keys(query) - .map((key) => `${key}=${query[key]}`) - .join('&') -} - -export const paginate = ( - totalCount: number, - relativeUrl: string, - query: QueryOptions, - defaultQuery?: Record -) => { - if (!query.limit) return {} as PaginatedMetadata - let defaultQueryStr = '' - if (defaultQuery) { - //sorting entries to make sure the order is consistent and predictable during tests - const sortedEntries = Object.entries(defaultQuery).sort(([keyA], [keyB]) => - keyA.localeCompare(keyB) - ) - //ignore keys with undefined values. Undefined values may occur when qury params are optional - defaultQueryStr = sortedEntries.reduce((res, [key, value]) => { - if (value !== undefined) { - res += `${key}=${value}&` - } - return res - }, '') - } - - const metadata = {} as PaginatedMetadata - metadata.page = query.page - metadata.perPage = query.limit - metadata.pageCount = Math.ceil(totalCount / query.limit) - metadata.totalCount = totalCount - - if (query.page >= metadata.pageCount) return {} as PaginatedMetadata - - //create links from relativeUrl , defalutQueryStr and query of type QueryOptions - metadata.links = { - self: `${relativeUrl}?${defaultQueryStr + getQueryString(query)}`, - first: `${relativeUrl}?${defaultQueryStr + getQueryString({ ...query, page: 0 })}`, - previous: - query.page === 0 - ? null - : `${relativeUrl}?${defaultQueryStr + getQueryString({ ...query, page: query.page - 1 })}`, - next: - query.page === metadata.pageCount - 1 - ? null - : `${relativeUrl}?${defaultQueryStr + getQueryString({ ...query, page: query.page + 1 })}`, - last: `${relativeUrl}?${defaultQueryStr + getQueryString({ ...query, page: metadata.pageCount - 1 })}` - } - - return metadata -} diff --git a/apps/api/src/environment/controller/environment.controller.ts b/apps/api/src/environment/controller/environment.controller.ts index 31d5be19..f0f09f52 100644 --- a/apps/api/src/environment/controller/environment.controller.ts +++ b/apps/api/src/environment/controller/environment.controller.ts @@ -57,7 +57,7 @@ export class EnvironmentController { async getEnvironmentsOfProject( @CurrentUser() user: User, @Param('projectId') projectId: string, - @Query('page') page: number = 0, + @Query('page') page: number = 1, @Query('limit') limit: number = 10, @Query('sort') sort: string = 'name', @Query('order') order: string = 'asc', diff --git a/apps/api/src/environment/environment.e2e.spec.ts b/apps/api/src/environment/environment.e2e.spec.ts index af8504d5..02279063 100644 --- a/apps/api/src/environment/environment.e2e.spec.ts +++ b/apps/api/src/environment/environment.e2e.spec.ts @@ -27,7 +27,6 @@ import { EventService } from '../event/service/event.service' import { EnvironmentService } from './service/environment.service' import { UserModule } from '../user/user.module' import { UserService } from '../user/service/user.service' -import { QueryTransformPipe } from '../common/query.transform.pipe' describe('Environment Controller Tests', () => { let app: NestFastifyApplication @@ -65,8 +64,6 @@ describe('Environment Controller Tests', () => { environmentService = moduleRef.get(EnvironmentService) userService = moduleRef.get(UserService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() }) @@ -238,7 +235,7 @@ describe('Environment Controller Tests', () => { EventSource.ENVIRONMENT ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.ENVIRONMENT) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -347,7 +344,7 @@ describe('Environment Controller Tests', () => { EventSource.ENVIRONMENT ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.ENVIRONMENT) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -402,27 +399,13 @@ describe('Environment Controller Tests', () => { it('should be able to fetch all environments of a project', async () => { const response = await app.inject({ method: 'GET', - url: `/environment/all/${project1.id}?page=0&limit=10`, + url: `/environment/all/${project1.id}`, headers: { 'x-e2e-user-email': user1.email } }) expect(response.statusCode).toBe(200) - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(2) - expect(metadata.links.self).toBe( - `/environment/all/${project1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toBe( - `/environment/all/${project1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toBe( - `/environment/all/${project1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) }) it('should not be able to fetch all environments of a project that does not exist', async () => { @@ -476,7 +459,7 @@ describe('Environment Controller Tests', () => { EventSource.ENVIRONMENT ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.ENVIRONMENT) expect(event.triggerer).toBe(EventTriggerer.USER) diff --git a/apps/api/src/environment/service/environment.service.ts b/apps/api/src/environment/service/environment.service.ts index 199ab3f9..4ae10629 100644 --- a/apps/api/src/environment/service/environment.service.ts +++ b/apps/api/src/environment/service/environment.service.ts @@ -17,7 +17,6 @@ import { UpdateEnvironment } from '../dto/update.environment/update.environment' import { PrismaService } from '../../prisma/prisma.service' import createEvent from '../../common/create-event' import { AuthorityCheckerService } from '../../common/authority-checker.service' -import { paginate } from '../../common/paginate' @Injectable() export class EnvironmentService { @@ -172,8 +171,8 @@ export class EnvironmentService { prisma: this.prisma }) - // Get the environments for the required page - const items = await this.prisma.environment.findMany({ + // Get the environments + return await this.prisma.environment.findMany({ where: { projectId, name: { @@ -201,24 +200,6 @@ export class EnvironmentService { [sort]: order } }) - // Calculate metadata for pagination - const totalCount = await this.prisma.environment.count({ - where: { - projectId, - name: { - contains: search - } - } - }) - const metadata = paginate(totalCount, `/environment/all/${projectId}`, { - page, - limit, - sort, - order, - search - }) - - return { items, metadata } } async deleteEnvironment(user: User, environmentId: Environment['id']) { diff --git a/apps/api/src/event/event.e2e.spec.ts b/apps/api/src/event/event.e2e.spec.ts index 747a3d71..3ee3aa4a 100644 --- a/apps/api/src/event/event.e2e.spec.ts +++ b/apps/api/src/event/event.e2e.spec.ts @@ -35,7 +35,6 @@ import { EnvironmentModule } from '../environment/environment.module' import createEvent from '../common/create-event' import { VariableService } from '../variable/service/variable.service' import { VariableModule } from '../variable/variable.module' -import { QueryTransformPipe } from '../common/query.transform.pipe' describe('Event Controller Tests', () => { let app: NestFastifyApplication @@ -81,8 +80,6 @@ describe('Event Controller Tests', () => { secretService = moduleRef.get(SecretService) variableService = moduleRef.get(VariableService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() @@ -118,8 +115,9 @@ describe('Event Controller Tests', () => { 'x-e2e-user-email': user.email } }) + expect(response.statusCode).toBe(200) - const event = response.json().items[0] + const event = response.json()[0] expect(event.id).toBeDefined() expect(event.title).toBeDefined() @@ -131,21 +129,6 @@ describe('Event Controller Tests', () => { expect(event.itemId).toBe(newWorkspace.id) expect(event.userId).toBe(user.id) expect(event.workspaceId).toBe(newWorkspace.id) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/event/${newWorkspace.id}?source=WORKSPACE&page=0&limit=10&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${newWorkspace.id}?source=WORKSPACE&page=0&limit=10&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${newWorkspace.id}?source=WORKSPACE&page=0&limit=10&search=` - ) }) it('should be able to fetch a project event', async () => { @@ -169,7 +152,7 @@ describe('Event Controller Tests', () => { }) expect(response.statusCode).toBe(200) - const event = response.json().items[0] + const event = response.json()[0] expect(event.id).toBeDefined() expect(event.title).toBeDefined() @@ -181,21 +164,6 @@ describe('Event Controller Tests', () => { expect(event.itemId).toBe(newProject.id) expect(event.userId).toBe(user.id) expect(event.workspaceId).toBe(workspace.id) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/event/${workspace.id}?source=PROJECT&page=0&limit=10&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${workspace.id}?source=PROJECT&page=0&limit=10&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${workspace.id}?source=PROJECT&page=0&limit=10&search=` - ) }) it('should be able to fetch an environment event', async () => { @@ -220,7 +188,7 @@ describe('Event Controller Tests', () => { }) expect(response.statusCode).toBe(200) - const event = response.json().items[0] + const event = response.json()[0] expect(event.id).toBeDefined() expect(event.title).toBeDefined() @@ -232,21 +200,6 @@ describe('Event Controller Tests', () => { expect(event.itemId).toBe(newEnvironment.id) expect(event.userId).toBe(user.id) expect(event.workspaceId).toBe(workspace.id) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/event/${workspace.id}?source=ENVIRONMENT&page=0&limit=10&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${workspace.id}?source=ENVIRONMENT&page=0&limit=10&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${workspace.id}?source=ENVIRONMENT&page=0&limit=10&search=` - ) }) it('should be able to fetch a secret event', async () => { @@ -277,7 +230,7 @@ describe('Event Controller Tests', () => { }) expect(response.statusCode).toBe(200) - const event = response.json().items[0] + const event = response.json()[0] expect(event.id).toBeDefined() expect(event.title).toBeDefined() @@ -289,21 +242,6 @@ describe('Event Controller Tests', () => { expect(event.itemId).toBe(newSecret.id) expect(event.userId).toBe(user.id) expect(event.workspaceId).toBe(workspace.id) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/event/${workspace.id}?source=SECRET&page=0&limit=10&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${workspace.id}?source=SECRET&page=0&limit=10&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${workspace.id}?source=SECRET&page=0&limit=10&search=` - ) }) it('should be able to fetch a variable event', async () => { @@ -334,7 +272,7 @@ describe('Event Controller Tests', () => { expect(response.statusCode).toBe(200) // expect(response.json()).toBe({}) - const event = response.json().items[0] + const event = response.json()[0] expect(event.id).toBeDefined() expect(event.title).toBeDefined() @@ -346,21 +284,6 @@ describe('Event Controller Tests', () => { expect(event.itemId).toBe(newVariable.id) expect(event.userId).toBe(user.id) expect(event.workspaceId).toBe(workspace.id) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/event/${workspace.id}?source=VARIABLE&page=0&limit=10&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${workspace.id}?source=VARIABLE&page=0&limit=10&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${workspace.id}?source=VARIABLE&page=0&limit=10&search=` - ) }) it('should be able to fetch a workspace role event', async () => { @@ -387,7 +310,7 @@ describe('Event Controller Tests', () => { }) expect(response.statusCode).toBe(200) - const event = response.json().items[0] + const event = response.json()[0] expect(event.id).toBeDefined() expect(event.title).toBeDefined() @@ -399,21 +322,6 @@ describe('Event Controller Tests', () => { expect(event.itemId).toBe(newWorkspaceRole.id) expect(event.userId).toBe(user.id) expect(event.workspaceId).toBe(workspace.id) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/event/${workspace.id}?source=WORKSPACE_ROLE&page=0&limit=10&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${workspace.id}?source=WORKSPACE_ROLE&page=0&limit=10&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${workspace.id}?source=WORKSPACE_ROLE&page=0&limit=10&search=` - ) }) it('should be able to fetch all events', async () => { @@ -426,52 +334,7 @@ describe('Event Controller Tests', () => { }) expect(response.statusCode).toBe(200) - expect(response.json().items).toHaveLength(6) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(6) - expect(metadata.links.self).toEqual( - `/event/${workspace.id}?page=0&limit=10&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${workspace.id}?page=0&limit=10&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${workspace.id}?page=0&limit=10&search=` - ) - }) - - it('should be able to fetch 2nd page of all events', async () => { - const response = await app.inject({ - method: 'GET', - url: `/event/${workspace.id}?page=1&limit=3&`, - headers: { - 'x-e2e-user-email': user.email - } - }) - - expect(response.statusCode).toBe(200) - expect(response.json().items).toHaveLength(3) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(6) - expect(metadata.links.self).toEqual( - `/event/${workspace.id}?page=1&limit=3&search=` - ) - expect(metadata.links.first).toEqual( - `/event/${workspace.id}?page=0&limit=3&search=` - ) - expect(metadata.links.previous).toEqual( - `/event/${workspace.id}?page=0&limit=3&search=` - ) - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/event/${workspace.id}?page=1&limit=3&search=` - ) + expect(response.json()).toHaveLength(6) }) it('should throw an error with wrong severity value', async () => { diff --git a/apps/api/src/event/service/event.service.ts b/apps/api/src/event/service/event.service.ts index c354f688..9f540d9c 100644 --- a/apps/api/src/event/service/event.service.ts +++ b/apps/api/src/event/service/event.service.ts @@ -2,7 +2,6 @@ import { BadRequestException, Injectable } from '@nestjs/common' import { Authority, EventSeverity, EventSource, User } from '@prisma/client' import { PrismaService } from '../../prisma/prisma.service' import { AuthorityCheckerService } from '../../common/authority-checker.service' -import { paginate } from '../../common/paginate' @Injectable() export class EventService { @@ -55,24 +54,6 @@ export class EventService { } // @ts-expect-error - Prisma does not have a type for severity - const items = await this.prisma.event.findMany(query) - - //calculate metadata for pagination - const totalCount = await this.prisma.event.count({ - where: query.where - }) - - const metadata = paginate( - totalCount, - `/event/${workspaceId}`, - { - page, - limit, - search - }, - { source } - ) - - return { items, metadata } + return await this.prisma.event.findMany(query) } } diff --git a/apps/api/src/integration/controller/integration.controller.ts b/apps/api/src/integration/controller/integration.controller.ts index 8aa1c2de..ef6abd6e 100644 --- a/apps/api/src/integration/controller/integration.controller.ts +++ b/apps/api/src/integration/controller/integration.controller.ts @@ -66,12 +66,13 @@ export class IntegrationController { } /* istanbul ignore next */ + // The e2e tests are not working, but the API calls work as expected @Get('all/:workspaceId') @RequiredApiKeyAuthorities(Authority.READ_INTEGRATION) async getAllIntegrations( @CurrentUser() user: User, @Param('workspaceId') workspaceId: string, - @Query('page') page: number = 0, + @Query('page') page: number = 1, @Query('limit') limit: number = 10, @Query('sort') sort: string = 'name', @Query('order') order: string = 'asc', diff --git a/apps/api/src/integration/integration.e2e.spec.ts b/apps/api/src/integration/integration.e2e.spec.ts index ec15adaa..1e5b4dc9 100644 --- a/apps/api/src/integration/integration.e2e.spec.ts +++ b/apps/api/src/integration/integration.e2e.spec.ts @@ -26,7 +26,6 @@ import { MAIL_SERVICE } from '../mail/services/interface.service' import { MockMailService } from '../mail/services/mock.service' import { EnvironmentModule } from '../environment/environment.module' import { EnvironmentService } from '../environment/service/environment.service' -import { QueryTransformPipe } from '../common/query.transform.pipe' describe('Integration Controller Tests', () => { let app: NestFastifyApplication @@ -67,8 +66,6 @@ describe('Integration Controller Tests', () => { projectService = moduleRef.get(ProjectService) environmentService = moduleRef.get(EnvironmentService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() }) @@ -602,34 +599,6 @@ describe('Integration Controller Tests', () => { expect(result.json().id).toEqual(integration1.id) }) - it('should be able to fetch all integrations on first page', async () => { - const result = await app.inject({ - method: 'GET', - url: `/integration/all/${workspace1.id}?page=0&limit=10`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(result.statusCode).toEqual(200) - expect(result.json().items).toHaveLength(1) - - //check metadata - const metadata = result.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/integration/all/${workspace1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/integration/all/${workspace1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/integration/all/${workspace1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - }) - it('should not be able to fetch an integration that does not exist', async () => { const result = await app.inject({ method: 'GET', diff --git a/apps/api/src/integration/service/integration.service.ts b/apps/api/src/integration/service/integration.service.ts index e54f0b0e..d1f7bab2 100644 --- a/apps/api/src/integration/service/integration.service.ts +++ b/apps/api/src/integration/service/integration.service.ts @@ -18,7 +18,6 @@ import { UpdateIntegration } from '../dto/update.integration/update.integration' import { AuthorityCheckerService } from '../../common/authority-checker.service' import createEvent from '../../common/create-event' import IntegrationFactory from '../plugins/factory/integration.factory' -import { paginate } from '../../common/paginate' @Injectable() export class IntegrationService { @@ -303,34 +302,7 @@ export class IntegrationService { } }) - //calculate metadata for pagination - const totalCount = await this.prisma.integration.count({ - where: { - name: { - contains: search - }, - workspaceId, - OR: [ - { - projectId: null - }, - { - projectId: { - in: projectIds - } - } - ] - } - }) - const metadata = paginate(totalCount, `/integration/all/${workspaceId}`, { - page, - limit, - sort, - order, - search - }) - - return { items: integrations, metadata } + return integrations } async deleteIntegration(user: User, integrationId: Integration['id']) { diff --git a/apps/api/src/project/controller/project.controller.ts b/apps/api/src/project/controller/project.controller.ts index 7c947dc0..bcc8fa51 100644 --- a/apps/api/src/project/controller/project.controller.ts +++ b/apps/api/src/project/controller/project.controller.ts @@ -68,7 +68,7 @@ export class ProjectController { return await this.service.forkProject(user, projectId, forkMetadata) } - @Put(':projectId/fork') + @Put(':projectId/sync-fork') @RequiredApiKeyAuthorities(Authority.READ_PROJECT, Authority.UPDATE_PROJECT) async syncFork( @CurrentUser() user: User, @@ -78,7 +78,7 @@ export class ProjectController { return await this.service.syncFork(user, projectId, hardSync) } - @Delete(':projectId/fork') + @Put(':projectId/unlink-fork') @RequiredApiKeyAuthorities(Authority.UPDATE_PROJECT) async unlinkFork( @CurrentUser() user: User, diff --git a/apps/api/src/project/project.e2e.spec.ts b/apps/api/src/project/project.e2e.spec.ts index 1869bc06..698dfb6e 100644 --- a/apps/api/src/project/project.e2e.spec.ts +++ b/apps/api/src/project/project.e2e.spec.ts @@ -38,7 +38,6 @@ import { VariableService } from '../variable/service/variable.service' import { VariableModule } from '../variable/variable.module' import { SecretModule } from '../secret/secret.module' import { EnvironmentModule } from '../environment/environment.module' -import { QueryTransformPipe } from '../common/query.transform.pipe' describe('Project Controller Tests', () => { let app: NestFastifyApplication @@ -87,8 +86,6 @@ describe('Project Controller Tests', () => { secretService = moduleRef.get(SecretService) variableService = moduleRef.get(VariableService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() }) @@ -225,7 +222,7 @@ describe('Project Controller Tests', () => { EventSource.PROJECT ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.PROJECT) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -401,7 +398,7 @@ describe('Project Controller Tests', () => { EventSource.PROJECT ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.PROJECT) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -466,29 +463,14 @@ describe('Project Controller Tests', () => { it('should be able to fetch all projects of a workspace', async () => { const response = await app.inject({ method: 'GET', - url: `/project/all/${workspace1.id}?page=0&limit=10`, + url: `/project/all/${workspace1.id}?page=0`, headers: { 'x-e2e-user-email': user1.email } }) expect(response.statusCode).toBe(200) - expect(response.json().items.length).toEqual(2) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(2) - expect(metadata.links.self).toBe( - `/project/all/${workspace1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toBe( - `/project/all/${workspace1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toEqual(null) - expect(metadata.links.next).toEqual(null) - expect(metadata.links.last).toBe( - `/project/all/${workspace1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) + expect(response.json().length).toEqual(2) }) it('should not be able to fetch all projects of a non existing workspace', async () => { @@ -650,7 +632,7 @@ describe('Project Controller Tests', () => { EventSource.PROJECT ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.PROJECT) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -1459,7 +1441,7 @@ describe('Project Controller Tests', () => { // Sync the fork await app.inject({ method: 'PUT', - url: `/project/${forkedProject.id}/fork`, + url: `/project/${forkedProject.id}/sync-fork`, headers: { 'x-e2e-user-email': user2.email } @@ -1649,7 +1631,7 @@ describe('Project Controller Tests', () => { // Sync the fork await app.inject({ method: 'PUT', - url: `/project/${forkedProject.id}/fork?hardSync=true`, + url: `/project/${forkedProject.id}/sync-fork?hardSync=true`, headers: { 'x-e2e-user-email': user2.email } @@ -1684,7 +1666,7 @@ describe('Project Controller Tests', () => { it('should not be able to sync a project that is not forked', async () => { const response = await app.inject({ method: 'PUT', - url: `/project/${project3.id}/fork`, + url: `/project/${project3.id}/sync-fork`, headers: { 'x-e2e-user-email': user1.email } @@ -1708,8 +1690,8 @@ describe('Project Controller Tests', () => { ) const response = await app.inject({ - method: 'DELETE', - url: `/project/${forkedProject.id}/fork`, + method: 'PUT', + url: `/project/${forkedProject.id}/unlink-fork`, headers: { 'x-e2e-user-email': user2.email } @@ -1740,22 +1722,9 @@ describe('Project Controller Tests', () => { 'x-e2e-user-email': user2.email } }) - expect(response.statusCode).toBe(200) - expect(response.json().items).toHaveLength(1) - //check metadata - const metadata = response.json().metadata - expect(metadata.links.self).toBe( - `/project/${project3.id}/forks?page=0&limit=10` - ) - expect(metadata.links.first).toBe( - `/project/${project3.id}/forks?page=0&limit=10` - ) - expect(metadata.links.previous).toEqual(null) - expect(metadata.links.next).toEqual(null) - expect(metadata.links.last).toBe( - `/project/${project3.id}/forks?page=0&limit=10` - ) + expect(response.statusCode).toBe(200) + expect(response.json()).toHaveLength(1) }) it('should not contain a forked project that has access level other than GLOBAL', async () => { @@ -1785,7 +1754,7 @@ describe('Project Controller Tests', () => { }) expect(response.statusCode).toBe(200) - expect(response.json().items).toHaveLength(1) + expect(response.json()).toHaveLength(1) }) }) }) diff --git a/apps/api/src/project/service/project.service.ts b/apps/api/src/project/service/project.service.ts index d3bde362..18253372 100644 --- a/apps/api/src/project/service/project.service.ts +++ b/apps/api/src/project/service/project.service.ts @@ -2,9 +2,7 @@ import { BadRequestException, ConflictException, Injectable, - Logger, - NotFoundException, - UnauthorizedException + Logger } from '@nestjs/common' import { Authority, @@ -31,7 +29,6 @@ import createEvent from '../../common/create-event' import { ProjectWithSecrets } from '../project.types' import { AuthorityCheckerService } from '../../common/authority-checker.service' import { ForkProject } from '../dto/fork.project/fork.project' -import { paginate } from '../../common/paginate' @Injectable() export class ProjectService { @@ -338,27 +335,13 @@ export class ProjectService { projectId: Project['id'], forkMetadata: ForkProject ) { - const project = await this.prisma.project.findUnique({ - where: { id: projectId }, - select: { - id: true, - name: true, - description: true, - storePrivateKey: true, - accessLevel: true, - privateKey: true - } - }) - - if (!project) { - throw new NotFoundException(`Project with id ${projectId} not found`) - } - - if (project.accessLevel !== ProjectAccessLevel.GLOBAL) { - throw new UnauthorizedException( - `User with id ${user.id} does not have the authority in the project with id ${project.id}` - ) - } + const project = + await this.authorityCheckerService.checkAuthorityOverProject({ + userId: user.id, + entity: { id: projectId }, + authority: Authority.READ_PROJECT, + prisma: this.prisma + }) let workspaceId = forkMetadata.workspaceId @@ -610,30 +593,19 @@ export class ProjectService { } }) - const forksAllowed = forks.filter(async (fork) => { - const allowed = - (await this.authorityCheckerService.checkAuthorityOverProject({ - userId: user.id, - entity: { id: fork.id }, - authority: Authority.READ_PROJECT, - prisma: this.prisma - })) != null - - return allowed - }) - - const items = forksAllowed.slice(page * limit, (page + 1) * limit) - //calculate metadata - const metadata = paginate( - forksAllowed.length, - `/project/${projectId}/forks`, - { - page, - limit - } - ) - - return { items, metadata } + return forks + .slice(page * limit, (page + 1) * limit) + .filter(async (fork) => { + const allowed = + (await this.authorityCheckerService.checkAuthorityOverProject({ + userId: user.id, + entity: { id: fork.id }, + authority: Authority.READ_PROJECT, + prisma: this.prisma + })) != null + + return allowed + }) } async getProjectById(user: User, projectId: Project['id']) { @@ -666,8 +638,7 @@ export class ProjectService { prisma: this.prisma }) - //fetch projects with required properties - const items = ( + return ( await this.prisma.project.findMany({ skip: page * limit, take: limit, @@ -698,42 +669,6 @@ export class ProjectService { } }) ).map((project) => excludeFields(project, 'privateKey', 'publicKey')) - - //calculate metadata - const totalCount = await this.prisma.project.count({ - where: { - workspaceId, - OR: [ - { - name: { - contains: search - } - }, - { - description: { - contains: search - } - } - ], - workspace: { - members: { - some: { - userId: user.id - } - } - } - } - }) - - const metadata = paginate(totalCount, `/project/all/${workspaceId}`, { - page, - limit, - sort, - order, - search - }) - - return { items, metadata } } private async projectExists( diff --git a/apps/api/src/secret/controller/secret.controller.ts b/apps/api/src/secret/controller/secret.controller.ts index 16274f11..59f36993 100644 --- a/apps/api/src/secret/controller/secret.controller.ts +++ b/apps/api/src/secret/controller/secret.controller.ts @@ -101,24 +101,4 @@ export class SecretController { environmentId ) } - - @Get(':secretId/revisions/:environmentId') - @RequiredApiKeyAuthorities(Authority.READ_SECRET) - async getRevisionsOfSecret( - @CurrentUser() user: User, - @Param('secretId') secretId: string, - @Param('environmentId') environmentId: string, - @Query('page') page: number = 0, - @Query('limit') limit: number = 10, - @Query('order') order: string = 'desc' - ) { - return await this.secretService.getRevisionsOfSecret( - user, - secretId, - environmentId, - page, - limit, - order - ) - } } diff --git a/apps/api/src/secret/secret.e2e.spec.ts b/apps/api/src/secret/secret.e2e.spec.ts index 96a8eff3..dec86537 100644 --- a/apps/api/src/secret/secret.e2e.spec.ts +++ b/apps/api/src/secret/secret.e2e.spec.ts @@ -36,7 +36,6 @@ import { RedisClientType } from 'redis' import { mockDeep } from 'jest-mock-extended' import { UserService } from '../user/service/user.service' import { UserModule } from '../user/user.module' -import { QueryTransformPipe } from '../common/query.transform.pipe' describe('Secret Controller Tests', () => { let app: NestFastifyApplication @@ -82,8 +81,6 @@ describe('Secret Controller Tests', () => { eventService = moduleRef.get(EventService) userService = moduleRef.get(UserService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() }) @@ -291,7 +288,7 @@ describe('Secret Controller Tests', () => { EventSource.SECRET ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.SECRET) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -410,7 +407,7 @@ describe('Secret Controller Tests', () => { EventSource.SECRET ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.SECRET) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -599,16 +596,16 @@ describe('Secret Controller Tests', () => { it('should be able to fetch all secrets', async () => { const response = await app.inject({ method: 'GET', - url: `/secret/${project1.id}?page=0&limit=10`, + url: `/secret/${project1.id}`, headers: { 'x-e2e-user-email': user1.email } }) expect(response.statusCode).toBe(200) - expect(response.json().items.length).toBe(1) + expect(response.json().length).toBe(1) - const { secret, values } = response.json().items[0] + const { secret, values } = response.json()[0] expect(secret.id).toBeDefined() expect(secret.name).toBeDefined() expect(secret.note).toBeDefined() @@ -618,36 +615,21 @@ describe('Secret Controller Tests', () => { const value = values[0] expect(value.environment).toBeDefined() expect(value.value).not.toEqual('Secret 1 value') - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/secret/${project1.id}?decryptValue=false&page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/secret/${project1.id}?decryptValue=false&page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/secret/${project1.id}?decryptValue=false&page=0&limit=10&sort=name&order=asc&search=` - ) }) it('should be able to fetch all secrets decrypted', async () => { const response = await app.inject({ method: 'GET', - url: `/secret/${project1.id}?decryptValue=true&page=0&limit=10`, + url: `/secret/${project1.id}?decryptValue=true`, headers: { 'x-e2e-user-email': user1.email } }) expect(response.statusCode).toBe(200) - expect(response.json().items.length).toBe(1) + expect(response.json().length).toBe(1) - const { secret, values } = response.json().items[0] + const { secret, values } = response.json()[0] expect(secret.id).toBeDefined() expect(secret.name).toBeDefined() expect(secret.note).toBeDefined() @@ -657,21 +639,6 @@ describe('Secret Controller Tests', () => { const value = values[0] expect(value.environment).toBeDefined() expect(value.value).toEqual('Secret 1 value') - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/secret/${project1.id}?decryptValue=true&page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/secret/${project1.id}?decryptValue=true&page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/secret/${project1.id}?decryptValue=true&page=0&limit=10&sort=name&order=asc&search=` - ) }) it('should not be able to fetch all secrets decrypted if the project does not store the private key', async () => { @@ -911,7 +878,7 @@ describe('Secret Controller Tests', () => { EventSource.SECRET ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.SECRET) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -920,108 +887,4 @@ describe('Secret Controller Tests', () => { expect(event.workspaceId).toBe(workspace1.id) expect(event.itemId).toBe(secret1.id) }) - - //revisions test - it('should be able to fetch all revisions of secrets', async () => { - // create two more entries,totalling three versions - // checks if its able to fetch multiple revisions - await secretService.updateSecret(user1, secret1.id, { - entries: [ - { - value: 'Updated Secret 1 value', - environmentId: environment1.id - } - ] - }) - - await secretService.updateSecret(user1, secret1.id, { - entries: [ - { - value: 'Updated Secret 1 value 2', - environmentId: environment1.id - } - ] - }) - - const response = await app.inject({ - method: 'GET', - url: `/secret/${secret1.id}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(200) - expect(response.json().length).toBe(3) - }) - - it('should return [] if the secret has no revision', async () => { - //returns [] if secret has no revision - await prisma.secretVersion.deleteMany({ - where: { - secretId: secret1.id - } - }) - - const response = await app.inject({ - method: 'GET', - url: `/secret/${secret1.id}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(200) - expect(response.json().length).toBe(0) - }) - - it('should return error if secret doesnt exist', async () => { - //return error if secret doesnt exist - const secretid = 'nonexistentsecret' - const response = await app.inject({ - method: 'GET', - url: `/secret/${secretid}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(404) - expect(response.json().message).toEqual( - `Secret with id ${secretid} not found` - ) - }) - - it('should return error if environment doesnt exist', async () => { - //return error if environment doesnt exist - const environmentid = 'nonexistentenv' - const response = await app.inject({ - method: 'GET', - url: `/secret/${secret1.id}/revisions/${environmentid}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(404) - expect(response.json().message).toEqual( - `Environment with id ${environmentid} not found` - ) - }) - - it('returns error if secret isnt accessible', async () => { - //return error if user has no access to secret - const response = await app.inject({ - method: 'GET', - url: `/secret/${secret1.id}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user2.email - } - }) - - expect(response.statusCode).toBe(401) - expect(response.json().message).toEqual( - `User ${user2.id} does not have the required authorities` - ) - }) }) diff --git a/apps/api/src/secret/service/secret.service.ts b/apps/api/src/secret/service/secret.service.ts index 156c5238..2b38d3bf 100644 --- a/apps/api/src/secret/service/secret.service.ts +++ b/apps/api/src/secret/service/secret.service.ts @@ -31,7 +31,6 @@ import { ChangeNotification, ChangeNotificationEvent } from 'src/socket/socket.types' -import { paginate } from '../../common/paginate' @Injectable() export class SecretService { @@ -492,45 +491,6 @@ export class SecretService { return response } - async getRevisionsOfSecret( - user: User, - secretId: Secret['id'], - environmentId: Environment['id'], - page: number, - limit: number, - order: string - ) { - // assign order to variable dynamically - const sortOrder = order === 'asc' ? 'asc' : 'desc' - //check access to secret - await this.authorityCheckerService.checkAuthorityOverSecret({ - userId: user.id, - entity: { id: secretId }, - authority: Authority.READ_SECRET, - prisma: this.prisma - }) - - await this.authorityCheckerService.checkAuthorityOverEnvironment({ - userId: user.id, - entity: { id: environmentId }, - authority: Authority.READ_ENVIRONMENT, - prisma: this.prisma - }) - - // get the revisions - const revisions = await this.prisma.secretVersion.findMany({ - where: { - secretId: secretId, - environmentId: environmentId - }, - skip: page * limit, - take: limit, - orderBy: { - version: sortOrder - } - }) - return revisions - } async getAllSecretsOfProject( user: User, @@ -655,32 +615,7 @@ export class SecretService { } } - const items = Array.from(secretsWithEnvironmentalValues.values()) - - //Calculate pagination metadata - const totalCount = await this.prisma.secret.count({ - where: { - projectId, - name: { - contains: search - } - } - }) - - const metadata = paginate( - totalCount, - `/secret/${projectId}`, - { - page, - limit, - sort, - order, - search - }, - { decryptValue } - ) - - return { items, metadata } + return Array.from(secretsWithEnvironmentalValues.values()) } private async secretExists( diff --git a/apps/api/src/user/dto/create.user/create.user.ts b/apps/api/src/user/dto/create.user/create.user.ts index 0f744249..aea94c1d 100644 --- a/apps/api/src/user/dto/create.user/create.user.ts +++ b/apps/api/src/user/dto/create.user/create.user.ts @@ -1,27 +1,77 @@ +import { ApiProperty } from '@nestjs/swagger' import { IsBoolean, IsEmail, IsOptional, IsString } from 'class-validator' export class CreateUserDto { @IsString() @IsOptional() + @ApiProperty({ + name: 'name', + description: 'Full name of the user', + required: false, + type: String, + example: 'John Doe', + default: null + }) name?: string @IsString() @IsEmail() + @ApiProperty({ + name: 'email', + description: 'Email of the user', + required: true, + type: String, + example: 'johndoe@keyshade.xyz', + format: 'email', + uniqueItems: true + }) email: string @IsString() @IsOptional() + @ApiProperty({ + name: 'profilePictureUrl', + description: 'URL of the user profile picture', + required: false, + type: String, + example: 'https://example.com/profile.jpg', + default: null + }) profilePictureUrl?: string @IsBoolean() @IsOptional() + @ApiProperty({ + name: 'isActive', + description: 'Is the user active', + required: false, + type: Boolean, + example: true, + default: true + }) isActive?: boolean @IsBoolean() @IsOptional() + @ApiProperty({ + name: 'isOnboardingFinished', + description: 'Is the user onboarding finished', + required: false, + type: Boolean, + example: true, + default: false + }) isOnboardingFinished?: boolean @IsBoolean() @IsOptional() + @ApiProperty({ + name: 'isAdmin', + description: 'Is the user an admin', + required: false, + type: Boolean, + example: false, + default: false + }) isAdmin?: boolean } diff --git a/apps/api/src/user/service/user.service.ts b/apps/api/src/user/service/user.service.ts index 2b1437e6..84ba3d6d 100644 --- a/apps/api/src/user/service/user.service.ts +++ b/apps/api/src/user/service/user.service.ts @@ -72,12 +72,14 @@ export class UserService { } this.log.log(`Updating user ${user.id} with data ${dto}`) - return this.prisma.user.update({ + const updatedUser = await this.prisma.user.update({ where: { id: user.id }, data }) + + return updatedUser } async updateUser(userId: string, dto: UpdateUserDto) { @@ -114,7 +116,7 @@ export class UserService { } this.log.log(`Updating user ${userId} with data ${dto}`) - return this.prisma.user.update({ + return await this.prisma.user.update({ where: { id: userId }, @@ -200,7 +202,7 @@ export class UserService { } async getUserById(userId: string) { - return this.prisma.user.findUnique({ + return await this.prisma.user.findUnique({ where: { id: userId } @@ -214,7 +216,7 @@ export class UserService { order: string, search: string ): Promise { - return this.prisma.user.findMany({ + return await this.prisma.user.findMany({ skip: (page - 1) * limit, take: limit, orderBy: { @@ -238,11 +240,11 @@ export class UserService { } async deleteSelf(user: User) { - await this.deleteUserById(user.id) + this.deleteUserById(user.id) } async deleteUser(userId: User['id']) { - await this.deleteUserById(userId) + this.deleteUserById(userId) } private async deleteUserById(userId: User['id']) { diff --git a/apps/api/src/user/user.e2e.spec.ts b/apps/api/src/user/user.e2e.spec.ts index aef66a6d..2550153c 100644 --- a/apps/api/src/user/user.e2e.spec.ts +++ b/apps/api/src/user/user.e2e.spec.ts @@ -130,26 +130,6 @@ describe('User Controller Tests', () => { expect(workspace.ownerId).toEqual(createUserResponse.id) }) - it('should skip workspace creation for admin users', async () => { - const createAdminUserResponse = await userService.createUser({ - email: '', - isAdmin: true, - isOnboardingFinished: true, - profilePictureUrl: null - }) - - expect(createAdminUserResponse.defaultWorkspace).toBeUndefined() - - const workspace = await prisma.workspace.findFirst({ - where: { - ownerId: createAdminUserResponse.id, - isDefault: true - } - }) - - expect(workspace).toBeNull() - }) - test('regular user should not be able to access other routes if onboarding is not finished', async () => { // Flip the user's onboarding status to false await prisma.user.update({ diff --git a/apps/api/src/variable/controller/variable.controller.ts b/apps/api/src/variable/controller/variable.controller.ts index a890813a..bff96153 100644 --- a/apps/api/src/variable/controller/variable.controller.ts +++ b/apps/api/src/variable/controller/variable.controller.ts @@ -88,7 +88,7 @@ export class VariableController { @Get('/:projectId/:environmentId') @RequiredApiKeyAuthorities(Authority.READ_VARIABLE) - async getAllVariablesOfEnvironment( + async getAllSecretsOfEnvironment( @CurrentUser() user: User, @Param('projectId') projectId: string, @Param('environmentId') environmentId: string @@ -99,24 +99,4 @@ export class VariableController { environmentId ) } - - @Get('/:variableId/revisions/:environmentId') - @RequiredApiKeyAuthorities(Authority.READ_VARIABLE) - async getRevisionsOfVariable( - @CurrentUser() user: User, - @Param('variableId') variableId: string, - @Param('environmentId') environmentId: string, - @Query('page') page: number = 0, - @Query('limit') limit: number = 10, - @Query('order') order: 'asc' | 'desc' = 'desc' - ) { - return await this.variableService.getRevisionsOfVariable( - user, - variableId, - environmentId, - page, - limit, - order - ) - } } diff --git a/apps/api/src/variable/service/variable.service.ts b/apps/api/src/variable/service/variable.service.ts index 38f8598e..32981ff1 100644 --- a/apps/api/src/variable/service/variable.service.ts +++ b/apps/api/src/variable/service/variable.service.ts @@ -28,7 +28,6 @@ import { ChangeNotification, ChangeNotificationEvent } from 'src/socket/socket.types' -import { paginate } from '../../common/paginate' @Injectable() export class VariableService { @@ -602,64 +601,7 @@ export class VariableService { } } - const items = Array.from(variablesWithEnvironmentalValues.values()) - - //calculate metadata - const totalCount = await this.prisma.variable.count({ - where: { - projectId, - name: { - contains: search - } - } - }) - - const metadata = paginate(totalCount, `/variable/${projectId}`, { - page, - limit, - sort, - order, - search - }) - - return { items, metadata } - } - - async getRevisionsOfVariable( - user: User, - variableId: Variable['id'], - environmentId: Environment['id'], - page: number, - limit: number, - order: 'asc' | 'desc' - ) { - await this.authorityCheckerService.checkAuthorityOverVariable({ - userId: user.id, - entity: { id: variableId }, - authority: Authority.READ_VARIABLE, - prisma: this.prisma - }) - - await this.authorityCheckerService.checkAuthorityOverEnvironment({ - userId: user.id, - entity: { id: environmentId }, - authority: Authority.READ_ENVIRONMENT, - prisma: this.prisma - }) - - const revisions = await this.prisma.variableVersion.findMany({ - where: { - variableId: variableId, - environmentId: environmentId - }, - skip: page * limit, - take: limit, - orderBy: { - version: order - } - }) - - return revisions + return Array.from(variablesWithEnvironmentalValues.values()) } private async variableExists( diff --git a/apps/api/src/variable/variable.e2e.spec.ts b/apps/api/src/variable/variable.e2e.spec.ts index e999b58a..adcd6f3b 100644 --- a/apps/api/src/variable/variable.e2e.spec.ts +++ b/apps/api/src/variable/variable.e2e.spec.ts @@ -36,7 +36,6 @@ import { mockDeep } from 'jest-mock-extended' import { RedisClientType } from 'redis' import { UserService } from '../user/service/user.service' import { UserModule } from '../user/user.module' -import { QueryTransformPipe } from '../common/query.transform.pipe' describe('Variable Controller Tests', () => { let app: NestFastifyApplication @@ -84,8 +83,6 @@ describe('Variable Controller Tests', () => { eventService = moduleRef.get(EventService) userService = moduleRef.get(UserService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() }) @@ -292,7 +289,7 @@ describe('Variable Controller Tests', () => { EventSource.VARIABLE ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.VARIABLE) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -430,7 +427,7 @@ describe('Variable Controller Tests', () => { EventSource.VARIABLE ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.VARIABLE) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -556,7 +553,7 @@ describe('Variable Controller Tests', () => { ) }) - it('should not create a variable version entity if value-environmentId is not provided during creation', async () => { + it('should not create a secret version entity if value-environmentId is not provided during creation', async () => { const variable = await variableService.createVariable( user1, { @@ -578,16 +575,16 @@ describe('Variable Controller Tests', () => { it('should be able to fetch all variables', async () => { const response = await app.inject({ method: 'GET', - url: `/variable/${project1.id}?page=0&limit=10`, + url: `/variable/${project1.id}`, headers: { 'x-e2e-user-email': user1.email } }) expect(response.statusCode).toBe(200) - expect(response.json().items.length).toBe(1) + expect(response.json().length).toBe(1) - const { variable, values } = response.json().items[0] + const { variable, values } = response.json()[0] expect(variable).toBeDefined() expect(values).toBeDefined() expect(values.length).toBe(1) @@ -595,21 +592,6 @@ describe('Variable Controller Tests', () => { expect(values[0].environment.id).toBe(environment1.id) expect(variable.id).toBe(variable1.id) expect(variable.name).toBe('Variable 1') - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/variable/${project1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/variable/${project1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/variable/${project1.id}?page=0&limit=10&sort=name&order=asc&search=` - ) }) it('should not be able to fetch all variables if the user has no access to the project', async () => { @@ -755,7 +737,7 @@ describe('Variable Controller Tests', () => { EventSource.VARIABLE ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.VARIABLE) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -764,108 +746,4 @@ describe('Variable Controller Tests', () => { expect(event.workspaceId).toBe(workspace1.id) expect(event.itemId).toBeDefined() }) - - //revisions test - it('should be able to fetch all revisions of variables', async () => { - // create two more entries,totalling three versions - // checks if its able to fetch multiple revisions - await variableService.updateVariable(user1, variable1.id, { - entries: [ - { - value: 'Updated Variable 1 value', - environmentId: environment1.id - } - ] - }) - - await variableService.updateVariable(user1, variable1.id, { - entries: [ - { - value: 'Updated variable 1 value 2', - environmentId: environment1.id - } - ] - }) - - const response = await app.inject({ - method: 'GET', - url: `/variable/${variable1.id}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(200) - expect(response.json().length).toBe(3) - }) - - it('should return [] if the variable has no revision', async () => { - //returns [] if variable has no revision - await prisma.variableVersion.deleteMany({ - where: { - variableId: variable1.id - } - }) - - const response = await app.inject({ - method: 'GET', - url: `/variable/${variable1.id}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(200) - expect(response.json().length).toBe(0) - }) - - it('should return error if variable doesnt exist', async () => { - //return error if variable doesnt exist - const variableid = 'nonexistentvariable' - const response = await app.inject({ - method: 'GET', - url: `/variable/${variableid}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(404) - expect(response.json().message).toEqual( - `Variable with id ${variableid} not found` - ) - }) - - it('should return error if environment doesnt exist', async () => { - //return error if environment doesnt exist - const environmentid = 'nonexistentenvironment' - const response = await app.inject({ - method: 'GET', - url: `/variable/${variable1.id}/revisions/${environmentid}`, - headers: { - 'x-e2e-user-email': user1.email - } - }) - - expect(response.statusCode).toBe(404) - expect(response.json().message).toEqual( - `Environment with id ${environmentid} not found` - ) - }) - - it('returns error if variable isnt accessible', async () => { - //return error if user has no access to variable - const response = await app.inject({ - method: 'GET', - url: `/variable/${variable1.id}/revisions/${environment1.id}`, - headers: { - 'x-e2e-user-email': user2.email - } - }) - - expect(response.statusCode).toBe(401) - expect(response.json().message).toEqual( - `User ${user2.id} does not have the required authorities` - ) - }) }) diff --git a/apps/api/src/workspace-role/service/workspace-role.service.ts b/apps/api/src/workspace-role/service/workspace-role.service.ts index 6212dc42..164fc496 100644 --- a/apps/api/src/workspace-role/service/workspace-role.service.ts +++ b/apps/api/src/workspace-role/service/workspace-role.service.ts @@ -22,7 +22,6 @@ import createEvent from '../../common/create-event' import { WorkspaceRoleWithProjects } from '../workspace-role.types' import { v4 } from 'uuid' import { AuthorityCheckerService } from '../../common/authority-checker.service' -import { paginate, PaginatedMetadata } from '../../common/paginate' @Injectable() export class WorkspaceRoleService { @@ -304,51 +303,28 @@ export class WorkspaceRoleService { sort: string, order: string, search: string - ): Promise<{ items: WorkspaceRole[]; metadata: PaginatedMetadata }> { + ): Promise { await this.authorityCheckerService.checkAuthorityOverWorkspace({ userId: user.id, entity: { id: workspaceId }, authority: Authority.READ_WORKSPACE_ROLE, prisma: this.prisma }) - //get workspace roles of a workspace for given page and limit - const items = await this.prisma.workspaceRole.findMany({ + + return await this.prisma.workspaceRole.findMany({ where: { workspaceId, name: { contains: search } }, + skip: page * limit, take: limit, orderBy: { [sort]: order } }) - - //calculate metadata - const totalCount = await this.prisma.workspaceRole.count({ - where: { - workspaceId, - name: { - contains: search - } - } - }) - - const metadata = paginate( - totalCount, - `/workspace-role/${workspaceId}/all`, - { - page, - limit, - sort, - order, - search - } - ) - - return { items, metadata } } private async getWorkspaceRoleWithAuthority( diff --git a/apps/api/src/workspace-role/workspace-role.e2e.spec.ts b/apps/api/src/workspace-role/workspace-role.e2e.spec.ts index c110cbf8..95eefeca 100644 --- a/apps/api/src/workspace-role/workspace-role.e2e.spec.ts +++ b/apps/api/src/workspace-role/workspace-role.e2e.spec.ts @@ -26,7 +26,6 @@ import { EventModule } from '../event/event.module' import { WorkspaceRoleService } from './service/workspace-role.service' import { UserService } from '../user/service/user.service' import { UserModule } from '../user/user.module' -import { QueryTransformPipe } from '../common/query.transform.pipe' describe('Workspace Role Controller Tests', () => { let app: NestFastifyApplication @@ -59,8 +58,6 @@ describe('Workspace Role Controller Tests', () => { workspaceRoleService = moduleRef.get(WorkspaceRoleService) userService = moduleRef.get(UserService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() }) @@ -253,7 +250,7 @@ describe('Workspace Role Controller Tests', () => { EventSource.WORKSPACE_ROLE ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.WORKSPACE_ROLE) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -407,7 +404,7 @@ describe('Workspace Role Controller Tests', () => { EventSource.WORKSPACE_ROLE ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.WORKSPACE_ROLE) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -628,7 +625,7 @@ describe('Workspace Role Controller Tests', () => { EventSource.WORKSPACE_ROLE ) - const event = response.items[0] + const event = response[0] expect(event.source).toBe(EventSource.WORKSPACE_ROLE) expect(event.triggerer).toBe(EventTriggerer.USER) @@ -728,22 +725,7 @@ describe('Workspace Role Controller Tests', () => { }) expect(response.statusCode).toBe(200) - expect(response.json().items).toEqual(expect.arrayContaining(roles)) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toBe(roles.length) - expect(metadata.links.self).toEqual( - `/workspace-role/${workspaceAlice.id}/all?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/workspace-role/${workspaceAlice.id}/all?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/workspace-role/${workspaceAlice.id}/all?page=0&limit=10&sort=name&order=asc&search=` - ) + expect(response.json()).toEqual(expect.arrayContaining(roles)) }) it('should be able to fetch all the roles of a workspace with READ_WORKSPACE_ROLE role', async () => { @@ -784,22 +766,7 @@ describe('Workspace Role Controller Tests', () => { }) expect(response.statusCode).toBe(200) - expect(response.json().items).toEqual(expect.arrayContaining(roles)) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toBe(roles.length) - expect(metadata.links.self).toEqual( - `/workspace-role/${workspaceAlice.id}/all?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/workspace-role/${workspaceAlice.id}/all?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/workspace-role/${workspaceAlice.id}/all?page=0&limit=10&sort=name&order=asc&search=` - ) + expect(response.json()).toEqual(expect.arrayContaining(roles)) }) it('should not be able to fetch all the roles of a workspace without READ_WORKSPACE_ROLE role', async () => { diff --git a/apps/api/src/workspace/service/workspace.service.ts b/apps/api/src/workspace/service/workspace.service.ts index 38753e38..2a6b9319 100644 --- a/apps/api/src/workspace/service/workspace.service.ts +++ b/apps/api/src/workspace/service/workspace.service.ts @@ -31,7 +31,6 @@ import { v4 } from 'uuid' import createEvent from '../../common/create-event' import createWorkspace from '../../common/create-workspace' import { AuthorityCheckerService } from '../../common/authority-checker.service' -import { paginate } from '../../common/paginate' @Injectable() export class WorkspaceService { @@ -465,8 +464,8 @@ export class WorkspaceService { authority: Authority.READ_USERS, prisma: this.prisma }) - //get all members of workspace for page with limit - const items = await this.prisma.workspaceMember.findMany({ + + return this.prisma.workspaceMember.findMany({ skip: page * limit, take: limit, orderBy: { @@ -515,37 +514,6 @@ export class WorkspaceService { } } }) - - //calculate metadata for pagination - const totalCount = await this.prisma.workspaceMember.count({ - where: { - workspaceId, - user: { - OR: [ - { - name: { - contains: search - } - }, - { - email: { - contains: search - } - } - ] - } - } - }) - - const metadata = paginate(totalCount, `/workspace/${workspaceId}/members`, { - page, - limit, - sort, - order, - search - }) - - return { items, metadata } } async acceptInvitation( @@ -760,10 +728,9 @@ export class WorkspaceService { order: string, search: string ) { - //get all workspaces of user for page with limit - const items = await this.prisma.workspace.findMany({ + return this.prisma.workspace.findMany({ skip: page * limit, - take: Number(limit), + take: limit, orderBy: { [sort]: order }, @@ -787,40 +754,6 @@ export class WorkspaceService { ] } }) - - // get total count of workspaces of the user - const totalCount = await this.prisma.workspace.count({ - where: { - members: { - some: { - userId: user.id - } - }, - OR: [ - { - name: { - contains: search - } - }, - { - description: { - contains: search - } - } - ] - } - }) - - //calculate metadata for pagination - const metadata = paginate(totalCount, `/workspace`, { - page: Number(page), - limit: Number(limit), - sort, - order, - search - }) - - return { items, metadata } } async exportData(user: User, workspaceId: Workspace['id']) { diff --git a/apps/api/src/workspace/workspace.e2e.spec.ts b/apps/api/src/workspace/workspace.e2e.spec.ts index c50e34aa..e40c546c 100644 --- a/apps/api/src/workspace/workspace.e2e.spec.ts +++ b/apps/api/src/workspace/workspace.e2e.spec.ts @@ -24,7 +24,6 @@ import { EventModule } from '../event/event.module' import { UserModule } from '../user/user.module' import { UserService } from '../user/service/user.service' import { WorkspaceService } from './service/workspace.service' -import { QueryTransformPipe } from '../common/query.transform.pipe' const createMembership = async ( adminRoleId: string, @@ -76,8 +75,6 @@ describe('Workspace Controller Tests', () => { userService = moduleRef.get(UserService) workspaceService = moduleRef.get(WorkspaceService) - app.useGlobalPipes(new QueryTransformPipe()) - await app.init() await app.getHttpAdapter().getInstance().ready() }) @@ -225,7 +222,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -343,7 +340,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -488,7 +485,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -566,7 +563,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -644,7 +641,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -722,7 +719,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -834,7 +831,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -898,7 +895,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -967,7 +964,7 @@ describe('Workspace Controller Tests', () => { EventSource.WORKSPACE ) - const event = response.items[0] + const event = response[0] expect(event).toBeDefined() expect(event.source).toBe(EventSource.WORKSPACE) @@ -1036,23 +1033,8 @@ describe('Workspace Controller Tests', () => { }) expect(response.statusCode).toBe(200) - expect(response.json().items).toBeInstanceOf(Array) - expect(response.json().items).toHaveLength(1) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(1) - expect(metadata.links.self).toEqual( - `/workspace/${workspace1.id}/members?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/workspace/${workspace1.id}/members?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/workspace/${workspace1.id}/members?page=0&limit=10&sort=name&order=asc&search=` - ) + expect(response.json()).toBeInstanceOf(Array) + expect(response.json()).toHaveLength(1) }) it('should not be able to get all the members of the workspace if user is not a member', async () => { @@ -1168,53 +1150,7 @@ describe('Workspace Controller Tests', () => { }) expect(response.statusCode).toBe(200) - expect(response.json().items.length).toEqual(2) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toBe(2) - expect(metadata.links.self).toEqual( - `/workspace?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/workspace?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toBeNull() - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/workspace?page=0&limit=10&sort=name&order=asc&search=` - ) - }) - - it('should be able to fetch the 2nd page of the workspaces the user is a member of', async () => { - await createMembership(memberRole.id, user2.id, workspace1.id, prisma) - const response = await app.inject({ - method: 'GET', - headers: { - 'x-e2e-user-email': user2.email - }, - url: '/workspace?page=1&limit=1' - }) - - expect(response.statusCode).toBe(200) - expect(response.json().items).toHaveLength(1) - - //check metadata - const metadata = response.json().metadata - expect(metadata.totalCount).toEqual(2) - expect(metadata.links.self).toEqual( - `/workspace?page=1&limit=1&sort=name&order=asc&search=` - ) - expect(metadata.links.first).toEqual( - `/workspace?page=0&limit=1&sort=name&order=asc&search=` - ) - expect(metadata.links.previous).toEqual( - `/workspace?page=0&limit=1&sort=name&order=asc&search=` - ) - expect(metadata.links.next).toBeNull() - expect(metadata.links.last).toEqual( - `/workspace?page=1&limit=1&sort=name&order=asc&search=` - ) + expect(response.json().length).toEqual(2) }) it('should be able to transfer the ownership of the workspace', async () => { diff --git a/apps/cli/package.json b/apps/cli/package.json index d957c8f6..1c53fa22 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -3,7 +3,6 @@ "version": "1.0.0", "description": "CLI for keyshade", "main": "index.js", - "private": false, "type": "commonjs", "scripts": { "build": "tsup", @@ -21,21 +20,19 @@ "cli-table": "^0.3.11", "colors": "^1.4.0", "commander": "^12.1.0", - "eccrypto": "^1.1.6", "figlet": "^1.7.0", "fs": "0.0.1-security", "glob": "^11.0.0", "nodemon": "^3.1.4", "secret-scan": "workspace:*", "socket.io-client": "^4.7.5", - "@keyshade/api-client": "workspace:../../packages/api-client" + "typescript": "^5.5.2" }, "devDependencies": { "@swc/cli": "^0.4.0", "@swc/core": "^1.6.13", "@types/cli-table": "^0.3.4", "@types/figlet": "^1.5.8", - "@types/eccrypto": "^1.1.6", "@types/node": "^20.14.10", "eslint-config-standard-with-typescript": "^43.0.1", "tsup": "^8.1.2" diff --git a/apps/cli/src/commands/environment.command.ts b/apps/cli/src/commands/environment.command.ts deleted file mode 100644 index 27cd7f47..00000000 --- a/apps/cli/src/commands/environment.command.ts +++ /dev/null @@ -1,26 +0,0 @@ -import BaseCommand from './base.command' -import { CreateEnvironment } from './environment/create.environment' -import { DeleteEnvironment } from './environment/delete.environment' -import { GetEnvironment } from './environment/get.environment' -import { ListEnvironment } from './environment/list.environment' -import { UpdateEnvironment } from './environment/update.environment' - -export default class EnvironmentCommand extends BaseCommand { - getName(): string { - return 'environment' - } - - getDescription(): string { - return 'Manage your environments in keyshade.' - } - - getSubCommands(): BaseCommand[] { - return [ - new CreateEnvironment(), - new DeleteEnvironment(), - new GetEnvironment(), - new ListEnvironment(), - new UpdateEnvironment() - ] - } -} diff --git a/apps/cli/src/commands/environment/create.environment.ts b/apps/cli/src/commands/environment/create.environment.ts deleted file mode 100644 index b5e8882f..00000000 --- a/apps/cli/src/commands/environment/create.environment.ts +++ /dev/null @@ -1,97 +0,0 @@ -import BaseCommand from '../base.command' -import { text } from '@clack/prompts' -import { - type CommandActionData, - type CommandArgument, - type CommandOption -} from 'src/types/command/command.types' -import { EnvironmentController } from '@keyshade/api-client' -import { Logger } from '@/util/logger' -export class CreateEnvironment extends BaseCommand { - getName(): string { - return 'create' - } - - getDescription(): string { - return 'Create a new environment' - } - - getOptions(): CommandOption[] { - return [ - { - short: '-n', - long: '--name ', - description: 'Name of the Environment' - }, - { - short: '-d', - long: '--description ', - description: 'Description about the Environment' - } - ] - } - - getArguments(): CommandArgument[] { - return [ - { - name: '', - description: - 'ID of the project under which you want to add the environment' - } - ] - } - - async action({ options, args }: CommandActionData): Promise { - const [projectId] = args - const { name, description } = await this.parseInput(options) - - if (!projectId) { - Logger.error('Project ID is required') - return - } - - const apiKey = this.apiKey - - const environmentData = { - name, - description, - projectId - } - - const headers = { - 'x-keyshade-token': apiKey - } - - const environmentController = new EnvironmentController(this.baseUrl) - Logger.info('Creating Environment...') - - const { - data: environment, - error, - success - } = await environmentController.createEnvironment(environmentData, headers) - - if (success) { - Logger.info(`Environment created:${environment.name} (${environment.id})`) - } else { - Logger.error(`Failed to create environment: ${error.message}`) - } - } - - private async parseInput(options: CommandActionData['options']): Promise<{ - name: string - description?: string - }> { - let { name } = options - const { description } = options - - if (!name) { - name = await text({ - message: 'Enter the name of the Environment', - placeholder: 'env' - }) - } - - return { name, description } - } -} diff --git a/apps/cli/src/commands/environment/delete.environment.ts b/apps/cli/src/commands/environment/delete.environment.ts deleted file mode 100644 index a4874360..00000000 --- a/apps/cli/src/commands/environment/delete.environment.ts +++ /dev/null @@ -1,55 +0,0 @@ -import BaseCommand from '../base.command' -import { EnvironmentController } from '@keyshade/api-client' -import { - type CommandActionData, - type CommandArgument -} from 'src/types/command/command.types' -import { Logger } from '@/util/logger' - -export class DeleteEnvironment extends BaseCommand { - getName(): string { - return 'delete' - } - - getDescription(): string { - return 'Delete an environment' - } - - getArguments(): CommandArgument[] { - return [ - { - name: '', - description: 'ID of the environment which you want to delete.' - } - ] - } - - async action({ args }: CommandActionData): Promise { - const [environmentId] = args - - if (!environmentId) { - Logger.error('Environment ID is required') - return - } - - const apiKey = this.apiKey - - const headers = { - 'x-keyshade-token': apiKey - } - - const environmentController = new EnvironmentController(this.baseUrl) - Logger.info('Deleting Environment...') - - const { success, error } = await environmentController.deleteEnvironment( - { id: environmentId }, - headers - ) - - if (success) { - Logger.info('Environment deleted successfully') - } else { - Logger.error(error.message) - } - } -} diff --git a/apps/cli/src/commands/environment/get.environment.ts b/apps/cli/src/commands/environment/get.environment.ts deleted file mode 100644 index 8e543725..00000000 --- a/apps/cli/src/commands/environment/get.environment.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Logger } from '@/util/logger' -import BaseCommand from '../base.command' -import { EnvironmentController } from '@keyshade/api-client' -import { - type CommandActionData, - type CommandArgument -} from 'src/types/command/command.types' - -export class GetEnvironment extends BaseCommand { - getName(): string { - return 'get' - } - - getDescription(): string { - return 'Get an environment' - } - - getArguments(): CommandArgument[] { - return [ - { - name: '', - description: 'ID of the environment which you want to fetch.' - } - ] - } - - async action({ args }: CommandActionData): Promise { - const [environmentId] = args - - if (!environmentId) { - Logger.error('Environment ID is required') - return - } - - const apiKey = this.apiKey - - const headers = { - 'x-keyshade-token': apiKey - } - - const environmentController = new EnvironmentController(this.baseUrl) - Logger.info('Fetching Environment...') - - const { - success, - error, - data: environment - } = await environmentController.getEnvironmentById( - { id: environmentId }, - headers - ) - - if (success) { - Logger.info('Environment fetched successfully:') - Logger.info( - `Environment ID: ${environment.id}, Name: ${environment.name}, Description: ${environment.description}` - ) - } else { - Logger.error(error.message) - } - } -} diff --git a/apps/cli/src/commands/environment/list.environment.ts b/apps/cli/src/commands/environment/list.environment.ts deleted file mode 100644 index 85adcec6..00000000 --- a/apps/cli/src/commands/environment/list.environment.ts +++ /dev/null @@ -1,69 +0,0 @@ -import BaseCommand from '../base.command' -import { EnvironmentController } from '@keyshade/api-client' -import { - type CommandActionData, - type CommandArgument -} from 'src/types/command/command.types' -import { Logger } from '@/util/logger' - -export class ListEnvironment extends BaseCommand { - getName(): string { - return 'list' - } - - getDescription(): string { - return 'List all environments under a project' - } - - getArguments(): CommandArgument[] { - return [ - { - name: '', - description: 'ID of the project whose environments you want.' - } - ] - } - - async action({ args }: CommandActionData): Promise { - const [projectId] = args - - if (!projectId) { - Logger.error('Project ID is required') - return - } - - const apiKey = this.apiKey - - const headers = { - 'x-keyshade-token': apiKey - } - - if (!apiKey) { - Logger.error('Base URL and API Key must be set as environment variables') - return - } - - const environmentController = new EnvironmentController(this.baseUrl) - Logger.info('Fetching all environments...') - - const { - success, - data: environments, - error - } = await environmentController.getAllEnvironmentsOfProject( - { projectId }, - headers - ) - - if (success) { - Logger.info('Fetched environments:') - environments.items.forEach((environment) => { - Logger.info( - `- ID: ${environment.id}, Name: ${environment.name}, Description: ${environment.description}` - ) - }) - } else { - Logger.error(`Failed to fetch environments: ${error.message}`) - } - } -} diff --git a/apps/cli/src/commands/environment/update.environment.ts b/apps/cli/src/commands/environment/update.environment.ts deleted file mode 100644 index b1638ba6..00000000 --- a/apps/cli/src/commands/environment/update.environment.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { Logger } from '@/util/logger' -import BaseCommand from '../base.command' -import { EnvironmentController } from '@keyshade/api-client' -import { - type CommandActionData, - type CommandArgument, - type CommandOption -} from 'src/types/command/command.types' - -export class UpdateEnvironment extends BaseCommand { - getName(): string { - return 'update' - } - - getDescription(): string { - return 'Update a environment' - } - - getOptions(): CommandOption[] { - return [ - { - short: '-n', - long: '--name ', - description: 'Name of the Environment' - }, - { - short: '-d', - long: '--description ', - description: 'Description about the Environment' - } - ] - } - - getArguments(): CommandArgument[] { - return [ - { - name: '', - description: 'ID of the environment which you want to update.' - } - ] - } - - async action({ options, args }: CommandActionData): Promise { - const [environmentId] = args - const { name, description } = options - - if (!environmentId) { - Logger.error('Environment ID is required') - return - } - - const apiKey = this.apiKey - - const headers = { - 'x-keyshade-token': apiKey - } - - const environmentData = { - name, - description, - id: environmentId - } - - const environmentController = new EnvironmentController(this.baseUrl) - Logger.info('Updating Environment...') - - const { - success, - error, - data: environment - } = await environmentController.updateEnvironment(environmentData, headers) - - if (success) { - Logger.info('Environment updated successfully') - Logger.info( - `Environment ID: ${environment.id}, Name: ${environment.name}, Description: ${environment.description}` - ) - } else { - Logger.error(error.message) - } - } -} diff --git a/apps/cli/src/commands/init.command.ts b/apps/cli/src/commands/init.command.ts index d422c0a4..5f9806ab 100644 --- a/apps/cli/src/commands/init.command.ts +++ b/apps/cli/src/commands/init.command.ts @@ -38,12 +38,6 @@ export default class InitCommand extends BaseCommand { long: '--overwrite', description: 'Overwrite existing configuration', defaultValue: false - }, - { - short: '-q', - long: '--quit-on-decryption-failure', - description: 'Quit on decryption failure', - defaultValue: false } ] } @@ -58,7 +52,7 @@ export default class InitCommand extends BaseCommand { async action({ options }: CommandActionData): Promise { let { workspace, project, environment, privateKey } = options - const { overwrite, quitOnDecryptionFailure } = options + const { overwrite } = options intro('Configure the project for live-updates') @@ -91,8 +85,7 @@ export default class InitCommand extends BaseCommand { await writeProjectRootConfig({ workspace, project, - environment, - quitOnDecryptionFailure + environment }) await writePrivateKeyConfig({ diff --git a/apps/cli/src/commands/run.command.ts b/apps/cli/src/commands/run.command.ts index 0feda2bf..a1e9e867 100644 --- a/apps/cli/src/commands/run.command.ts +++ b/apps/cli/src/commands/run.command.ts @@ -15,12 +15,9 @@ import { import { Logger } from '@/util/logger' import type { ClientRegisteredResponse, - Configuration, - RunData + Configuration } from '@/types/command/run.types' -import { decrypt } from '@/util/decrypt' - export default class RunCommand extends BaseCommand { private processEnvironmentalVariables = {} @@ -54,9 +51,10 @@ export default class RunCommand extends BaseCommand { await this.executeCommand(args[0]) } - private async fetchConfigurations(): Promise { - const { environment, project, workspace, quitOnDecryptionFailure } = - await fetchProjectRootConfig() + private async fetchConfigurations(): Promise< + ProjectRootConfig & { privateKey: string } + > { + const { environment, project, workspace } = await fetchProjectRootConfig() const privateKeyConfig = await fetchPrivateKeyConfig() const privateKey = privateKeyConfig[`${workspace}_${project}_${environment}`] @@ -69,8 +67,7 @@ export default class RunCommand extends BaseCommand { environment, project, workspace, - privateKey, - quitOnDecryptionFailure + privateKey } } @@ -81,12 +78,10 @@ export default class RunCommand extends BaseCommand { return 'ws' } - private async connectToSocket(data: RunData) { + private async connectToSocket(data: ProjectRootConfig) { Logger.info('Connecting to socket...') const host = this.baseUrl.substring(this.baseUrl.lastIndexOf('/') + 1) const websocketUrl = `${this.getWebsocketType(this.baseUrl)}://${host}/change-notifier` - const privateKey = data.privateKey - const quitOnDecryptionFailure = data.quitOnDecryptionFailure const ioClient = io(websocketUrl, { autoConnect: false, @@ -107,27 +102,8 @@ export default class RunCommand extends BaseCommand { ioClient.on('configuration-updated', async (data: Configuration) => { Logger.info( - `Configuration change received from API (name: ${data.name})` + `Configuration change received from API (name: ${data.name}, value: ${data.value})` ) - - if (!data.isPlaintext) { - try { - data.value = await decrypt(privateKey, data.value) - } catch (error) { - if (quitOnDecryptionFailure) { - Logger.error( - `Decryption failed for ${data.name}. Stopping the process.` - ) - process.exit(1) - } else { - Logger.warn( - `Decryption failed for ${data.name}. Skipping this configuration.` - ) - return - } - } - } - this.processEnvironmentalVariables[data.name] = data.value this.shouldRestart = true }) diff --git a/apps/cli/src/http/auth.ts b/apps/cli/src/http/auth.ts index d53108f7..bd8d9b41 100644 --- a/apps/cli/src/http/auth.ts +++ b/apps/cli/src/http/auth.ts @@ -1,10 +1,7 @@ import { Logger } from '@/util/logger' -class AuthController { - static async checkApiKeyValidity( - baseUrl: string, - apiKey: string - ): Promise { +const AuthController = { + async checkApiKeyValidity(baseUrl: string, apiKey: string): Promise { Logger.info('Checking API key validity...') const response = await fetch(`${baseUrl}/api/api-key/access/live-updates`, { headers: { diff --git a/apps/cli/src/http/project.ts b/apps/cli/src/http/project.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/cli/src/http/secret.ts b/apps/cli/src/http/secret.ts index a5a9d0e6..80eabf09 100644 --- a/apps/cli/src/http/secret.ts +++ b/apps/cli/src/http/secret.ts @@ -1,7 +1,7 @@ import type { Configuration } from '@/types/command/run.types' -class SecretController { - static async fetchSecrets( +const SecretController = { + async fetchSecrets( baseUrl: string, apiKey: string, projectId: string, diff --git a/apps/cli/src/http/variable.ts b/apps/cli/src/http/variable.ts index cc3a4363..03e0d210 100644 --- a/apps/cli/src/http/variable.ts +++ b/apps/cli/src/http/variable.ts @@ -1,7 +1,7 @@ import type { Configuration } from '@/types/command/run.types' -class VariableController { - static async fetchVariables( +const VariableController = { + async fetchVariables( baseUrl: string, apiKey: string, projectId: string, diff --git a/apps/cli/src/index.ts b/apps/cli/src/index.ts index 697192ce..1e974b4b 100644 --- a/apps/cli/src/index.ts +++ b/apps/cli/src/index.ts @@ -4,7 +4,6 @@ import ProfileCommand from '@/commands/profile.command' import InitCommand from '@/commands/init.command' import RunCommand from '@/commands/run.command' import ScanCommand from '@/commands/scan.command' -import EnvironmentCommand from '@/commands/environment.command' const program = new Command() @@ -16,8 +15,7 @@ const COMMANDS: BaseCommand[] = [ new RunCommand(), new InitCommand(), new ProfileCommand(), - new ScanCommand(), - new EnvironmentCommand() + new ScanCommand() ] COMMANDS.forEach((command) => { diff --git a/apps/cli/src/types/command/run.types.d.ts b/apps/cli/src/types/command/run.types.d.ts index 3bb79469..79da8314 100644 --- a/apps/cli/src/types/command/run.types.d.ts +++ b/apps/cli/src/types/command/run.types.d.ts @@ -1,5 +1,3 @@ -import { ProjectRootConfig } from '../index.types' - export interface Configuration { name: string value: string @@ -11,7 +9,3 @@ export interface ClientRegisteredResponse { projectId: string environmentId: string } - -export interface RunData extends ProjectRootConfig { - privateKey: string -} diff --git a/apps/cli/src/types/index.types.d.ts b/apps/cli/src/types/index.types.d.ts index 561e65ef..5ec40ef6 100644 --- a/apps/cli/src/types/index.types.d.ts +++ b/apps/cli/src/types/index.types.d.ts @@ -2,7 +2,6 @@ export interface ProjectRootConfig { workspace: string project: string environment: string - quitOnDecryptionFailure: boolean } export interface ProfileConfig { @@ -13,21 +12,4 @@ export interface ProfileConfig { } } -export interface Page { - items: T[] - metadata: { - page: number - perPage: number - pageCount: number - totalCount: number - links: { - self: string - first: string - previous: string | null - next: string | null - last: string - } - } -} - export type PrivateKeyConfig = Record diff --git a/apps/cli/src/util/configuration.ts b/apps/cli/src/util/configuration.ts index 241667ee..bedb2a47 100644 --- a/apps/cli/src/util/configuration.ts +++ b/apps/cli/src/util/configuration.ts @@ -4,7 +4,7 @@ import type { ProjectRootConfig } from '@/types/index.types' import { existsSync } from 'fs' -import { readFile, readdir, writeFile, mkdir } from 'fs/promises' +import { readFile, readdir, writeFile } from 'fs/promises' export const getOsType = (): 'unix' | 'windows' => { return process.platform === 'win32' ? 'windows' : 'unix' @@ -59,7 +59,6 @@ export const writeProfileConfig = async ( config: ProfileConfig ): Promise => { const path = getProfileConfigurationFilePath() - await ensureDirectoryExists(path) await writeFile(path, JSON.stringify(config, null, 2), 'utf8') } @@ -67,7 +66,6 @@ export const writePrivateKeyConfig = async ( config: PrivateKeyConfig ): Promise => { const path = getPrivateKeyConfigurationFilePath() - await ensureDirectoryExists(path) await writeFile(path, JSON.stringify(config, null, 2), 'utf8') } @@ -84,11 +82,3 @@ export const fetchUserRootConfigurationFiles = async (): Promise => { const files = await readdir(path) return `- ${files.join('\n- ')}` } - -const ensureDirectoryExists = async (path: string) => { - // Create the parent directory if it doesn't exist - const parentDirectory = path.split('/').slice(0, -1).join('/') - if (!existsSync(parentDirectory)) { - await mkdir(parentDirectory, { recursive: true }) - } -} diff --git a/apps/cli/src/util/decrypt.ts b/apps/cli/src/util/decrypt.ts deleted file mode 100644 index 6db7932e..00000000 --- a/apps/cli/src/util/decrypt.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -import * as eccrypto from 'eccrypto' - -export const decrypt = async ( - privateKey: string, - data: string -): Promise => { - const parsed = JSON.parse(data) - - const eicesData = { - iv: Buffer.from(parsed.iv), - ephemPublicKey: Buffer.from(parsed.ephemPublicKey), - ciphertext: Buffer.from(parsed.ciphertext), - mac: Buffer.from(parsed.mac) - } - - const decrypted = await eccrypto.decrypt( - Buffer.from(privateKey, 'hex'), - eicesData - ) - - return decrypted.toString() -} diff --git a/apps/cli/tsconfig.json b/apps/cli/tsconfig.json index 54e6e45a..c0d28519 100644 --- a/apps/cli/tsconfig.json +++ b/apps/cli/tsconfig.json @@ -11,8 +11,7 @@ "outDir": "./dist", "baseUrl": ".", "paths": { - "@/*": ["./src/*"], - "@keyshade/api-client": ["../../packages/api-client/src/index.ts"] + "@/*": ["./src/*"] }, "skipLibCheck": true, "strictNullChecks": false, @@ -21,9 +20,6 @@ "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true }, - "ts-node": { - "require": ["tsconfig-paths/register"] - }, "include": ["src/**/*.ts", "tsup.config.ts"], "exclude": ["node_modules"] } diff --git a/apps/platform/package.json b/apps/platform/package.json index b5eaaeeb..cf917e4c 100644 --- a/apps/platform/package.json +++ b/apps/platform/package.json @@ -51,7 +51,6 @@ "@next/eslint-plugin-next": "^13.5.6", "@svgr/webpack": "^8.1.0", "@tailwindcss/forms": "^0.5.7", - "@types/dayjs-precise-range": "^1.0.5", "@types/js-cookie": "^3.0.6", "@types/react": "^18.3.1", "@types/react-dom": "^18.3.0", @@ -59,6 +58,7 @@ "eslint-config-custom": "workspace:*", "postcss": "^8.4.31", "tailwindcss": "^3.3.3", - "tsconfig": "workspace:*" + "tsconfig": "workspace:*", + "typescript": "^4.5.3" } } diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index 5e3d5a7e..f7c47d80 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -28,7 +28,6 @@ COPY --from=builder /app/out/full/ . COPY turbo.json turbo.json - RUN pnpm turbo build --filter=web... FROM base AS runner diff --git a/apps/web/package.json b/apps/web/package.json index 0a190369..ccd603aa 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -36,6 +36,7 @@ "eslint-config-custom": "workspace:*", "postcss": "^8.4.31", "tailwindcss": "^3.3.3", - "tsconfig": "workspace:*" + "tsconfig": "workspace:*", + "typescript": "^4.5.3" } } diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 185380fb..54efb77e 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -23,7 +23,7 @@ - [Setting things up](contributing-to-keyshade/setting-things-up.md) - [Running things locally](contributing-to-keyshade/running-things-locally/README.md) - [Running the API](contributing-to-keyshade/running-things-locally/running-the-api.md) - - [Running the Web](contributing-to-keyshade/running-things-locally/running-the-web-app.md) + - [Running the Web](contributing-to-keyshade/running-things-locally/running-the-web.md) - [Running the CLI](contributing-to-keyshade/running-things-locally/running-the-cli.md) - [API Testing](contributing-to-keyshade/running-things-locally/api-testing.md) diff --git a/docs/contributing-to-keyshade/environment-variables.md b/docs/contributing-to-keyshade/environment-variables.md index d20a5af9..b8f10807 100644 --- a/docs/contributing-to-keyshade/environment-variables.md +++ b/docs/contributing-to-keyshade/environment-variables.md @@ -4,31 +4,15 @@ description: Get to know the environment you are working with # Environment Variables -In order to run our application properly, we will need to set up some environment variables. These variables are used to configure the application and are used to connect to various services like the database, SMTP server, OAuth providers, etc. - -The environmental variables are split into two parts: Required and Optional variables. The required variables are necessary for the application to run, while the optional variables, if specified, trigger the initialization of certain services. - ## .env.example Here's the description of the environment variables used in the project. You can find the values for these variables in \`.env.example\`. -### Required - **DATABASE_URL**: The URL of the PSQL database to connect to. This is used by the [Prisma Client](https://www.prisma.io/docs/orm/prisma-client) to connect to the database. - **SMTP_HOST**: This is used to send out emails from the backend. - **SMTP_PORT:** The SMTP port as specified by your SMTP provider. - **SMTP_EMAIL_ADDRESS:** The email address you want to be sending out the emails from. - **SMTP_PASSWORD:** The app password for your email account. -- **JWT_SECRET**: The secret used to sign the JWT tokens. It is insignificant in the development environment. -- **WEB_FRONTEND_URL, WORKSPACE_FRONTEND_URL**: The URLs of the web and workspace frontend respectively. These are used in the emails sometimes and in other spaces of the application too. -- **API_PORT**: The environmental variable that specifies the port number on which the API server should listen for incoming connections. If not explicitly set, it defaults to port 4200. -- **REDIS_URL**: The required parameter URL that is used by the API to connect to the Redis instance. -- **FEEDBACK_FORWARD_EMAIL**: Feedbacks submitted by the user would be sent to this email address for the concerned authorities to view it. Ideally, in development environment, this would be your personal email address -- **NEXT_PUBLIC_BACKEND_URL**: The URL of the backend server. This is used by the frontend to make API requests to the backend. -- **FROM_EMAIL**: The display of the email sender title. - -### Optional - - - **GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, GITHUB_CALLBACK_URL:** These settings can be configured by adding an OAuth app in your GitHub account's developer section. Please note that it's not mandatory, until and unless you want to support GitHub OAuth. - **GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_CALLBACK_URL:** These settings can be configured by adding an OAuth app in your Google account's cloud platform. Please note that it's not mandatory, until and unless you want to support Google OAuth. - **GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRET, GITLAB_CALLBACK_URL:** These settings can be configured by adding an OAuth app in your GitLab account's application section. Please note that it's not mandatory, until and unless you want to support GitLab OAuth. @@ -38,10 +22,19 @@ Here's the description of the environment variables used in the project. You can - **SENTRY_TRACES_SAMPLE_RATE**: The sample rate for collecting transaction traces in Sentry. It determines the percentage of transactions to capture traces for. - **SENTRY_PROFILES_SAMPLE_RATE**: The sample rate for collecting performance profiles in Sentry. It determines the percentage of requests to capture performance profiles for. - **SENTRY_ENV**: The environment in which the app is running. It can be either 'development', 'production', or 'test'. Please note that it's not mandatory, it will default to "production" enviroment for the sentry configuration. +- **FROM_EMAIL**: The display of the email sender title. +- **JWT_SECRET**: The secret used to sign the JWT tokens. It is insignificant in the development environment. +- **WEB_FRONTEND_URL, WORKSPACE_FRONTEND_URL**: The URLs of the web and workspace frontend respectively. These are used in the emails sometimes and in other spaces of the application too. +- **API_PORT**: The environmental variable that specifies the port number on which the API server should listen for incoming connections. If not explicitly set, it defaults to port 4200. + - **MINIO_ENDPOINT**: This is the endpoint of the Minio server. Minio is an open-source object storage server. - **MINIO_PORT**: The port on which the Minio server is running. - **MINIO_ACCESS_KEY**: The access key to the Minio server. - **MINIO_SECRET_KEY**: The secret key to the Minio server. - **MINIO_USE_SSL**: Whether to use SSL for the Minio connection or not. - **MINIO_BUCKET_NAME**: The name of the bucket in the Minio server where the files are stored. +- **REDIS_URL**: The required parameter URL that is used by the API to connect to the Redis instance. +- **FEEDBACK_FORWARD_EMAIL**: Feedbacks submitted by the user would be sent to this email address for the concerned authorities to view it. Ideally, in development environment, this would be your personal email address + +- **NEXT_PUBLIC_BACKEND_URL**: The URL of the backend server. This is used by the frontend to make API requests to the backend. diff --git a/docs/contributing-to-keyshade/running-things-locally/running-the-cli.md b/docs/contributing-to-keyshade/running-things-locally/running-the-cli.md index 7d46d416..fe4d93ac 100644 --- a/docs/contributing-to-keyshade/running-things-locally/running-the-cli.md +++ b/docs/contributing-to-keyshade/running-things-locally/running-the-cli.md @@ -15,8 +15,14 @@ You can get started with developing the CLI using the following steps: pnpm dev:api ``` -- To make a quick check of the features you have just built, run: +- Run the build command to continuously build the code: ```bash - pnpm dev:cli -- - ``` \ No newline at end of file + cd apps/cli && pnpm build:cli + ``` + +- Run the CLI: + + ```bash + cd apps/cli && node dist/index.js [subcommand] [options] + ``` diff --git a/package.json b/package.json index 6bfe4fad..fd845f09 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "keyshade-xyz", - "version": "2.3.0", + "version": "2.2.0", "license": "MPL-2.0", "private": true, "engineStrict": false, @@ -103,14 +103,12 @@ "lint:api": "turbo run lint --filter=api", "lint:web": "turbo run lint --filter=web", "lint:platform": "turbo run lint --filter=platform", - "lint:cli": "turbo run lint --filter=cli", "lint:api-client": "pnpm run --filter=api-client lint", "build": "turbo run build", "build:api": "pnpm db:generate-types && turbo run build --filter=api", "build:web": "turbo run build --filter=web", "build:platform": "turbo run build --filter=platform", "build:cli": "turbo run build --filter=cli", - "build:api-client": "pnpm run --filter=api-client build", "start": "turbo run start", "start:api": "turbo run start --filter=api", "start:web": "turbo run start --filter=web", @@ -142,7 +140,6 @@ "devDependencies": { "@sentry/cli": "^2.28.6", "@sentry/webpack-plugin": "^2.14.2", - "@types/jest": "^29.5.2", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "cross-env": "^7.0.3", @@ -151,13 +148,14 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.0.0", "husky": "^9.0.11", - "jest": "^29.7.0", "prettier": "^3.0.0", "prettier-plugin-tailwindcss": "^0.5.11", - "ts-jest": "^29.1.0", "tsconfig": "workspace:*", - "tsconfig-paths": "^4.2.0", - "turbo": "^1.12.4" + "turbo": "^1.12.4", + "@types/jest": "^29.5.2", + "jest": "^29.5.0", + "ts-jest": "^29.1.0", + "tsconfig-paths": "^4.2.0" }, "dependencies": { "@semantic-release/changelog": "^6.0.3", @@ -178,7 +176,6 @@ "sharp": "^0.33.3", "tailwind-merge": "^2.3.0", "ts-node": "^10.9.2", - "zod": "^3.23.6", - "typescript": "^5.5.2" + "zod": "^3.23.6" } } diff --git a/packages/api-client/package-lock.json b/packages/api-client/package-lock.json deleted file mode 100644 index 8f8b3168..00000000 --- a/packages/api-client/package-lock.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "api-client", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "api-client", - "version": "1.0.0" - } - } -} diff --git a/packages/api-client/package.json b/packages/api-client/package.json index cc2e290a..0d1f1919 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -1,7 +1,6 @@ { - "name": "@keyshade/api-client", + "name": "api-client", "version": "1.0.0", - "main": "dist/src/index.js", "description": "This package holds all the API request logic", "private": true, "scripts": { @@ -9,7 +8,7 @@ "watch": "tsc -w", "start": "node dist/index.js", "dev": "npx tsc && node dist/index.js", - "test": "cross-env BACKEND_URL=http://localhost:4200 jest", + "test": "BACKEND_URL=http://localhost:4200 jest", "lint": "eslint \"{src,tests}/**/*.ts\" --fix", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"" }, diff --git a/packages/api-client/src/core/client.ts b/packages/api-client/src/client.ts similarity index 56% rename from packages/api-client/src/core/client.ts rename to packages/api-client/src/client.ts index 3ff85d6c..aa724dd1 100644 --- a/packages/api-client/src/core/client.ts +++ b/packages/api-client/src/client.ts @@ -1,8 +1,38 @@ -export class APIClient { - constructor(private readonly baseUrl: string) {} +interface ErrorWithResponse extends Error { + status: number + response: Record +} + +class APIClient { + private baseUrl: string - async request(url: string, options: RequestInit): Promise { - return await fetch(`${this.baseUrl}${url}`, options) + private static instance: APIClient | null = null + + constructor(baseUrl: string) { + this.baseUrl = baseUrl + } + + static getInstance(): APIClient { + if (!this.instance) { + this.instance = new APIClient(process.env.BACKEND_URL as string) + } + return this.instance + } + + async request(url: string, options: RequestInit): Promise { + const response = await fetch(`${this.baseUrl}${url}`, options) + if (!response.ok) { + const error = new Error(response.statusText) as ErrorWithResponse + error.status = response.status + error.response = (await response.json()) as Record + throw error + } + + try { + return (await response.json()) as T + } catch (e) { + return response as T + } } /** @@ -10,8 +40,8 @@ export class APIClient { * @param url - The URL to send the GET request to. * @returns A Promise that resolves to the response data. */ - get(url: string, headers?: Record): Promise { - return this.request(url, { + get(url: string, headers?: Record): Promise { + return this.request(url, { method: 'GET', headers: { 'Content-Type': 'application/json', @@ -28,12 +58,12 @@ export class APIClient { * @param data - The data to send in the request body. * @returns A Promise that resolves to the response data. */ - post( + post( url: string, data: any, headers?: Record - ): Promise { - return this.request(url, { + ): Promise { + return this.request(url, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -51,12 +81,8 @@ export class APIClient { * @param data - The data to be sent in the request body. * @returns A Promise that resolves to the response data. */ - put( - url: string, - data: any, - headers?: Record - ): Promise { - return this.request(url, { + put(url: string, data: any, headers?: Record): Promise { + return this.request(url, { method: 'PUT', headers: { 'Content-Type': 'application/json', @@ -73,8 +99,8 @@ export class APIClient { * @param url - The URL to send the DELETE request to. * @returns A Promise that resolves to the response data. */ - delete(url: string, headers?: Record): Promise { - return this.request(url, { + delete(url: string, headers?: Record): Promise { + return this.request(url, { method: 'DELETE', headers: { 'Content-Type': 'application/json', @@ -84,3 +110,7 @@ export class APIClient { }) } } + +const client = APIClient.getInstance() + +export default client diff --git a/packages/api-client/src/controllers/environment/environment.ts b/packages/api-client/src/controllers/environment/environment.ts index ca57000b..70ec208d 100644 --- a/packages/api-client/src/controllers/environment/environment.ts +++ b/packages/api-client/src/controllers/environment/environment.ts @@ -1,6 +1,4 @@ -import { ClientResponse } from '../../types/index.types' -import { APIClient } from '../../core/client' -import { parseResponse } from '../../core/response-parser' +import client from '@package/client' import { CreateEnvironmentRequest, CreateEnvironmentResponse, @@ -12,57 +10,48 @@ import { GetEnvironmentByIdResponse, UpdateEnvironmentRequest, UpdateEnvironmentResponse -} from '../../types/environment.types' +} from '@package/types/environment.types' export default class EnvironmentController { - private apiClient: APIClient + private static apiClient = client - constructor(private readonly backendUrl: string) { - this.apiClient = new APIClient(this.backendUrl) - } - - async createEnvironment( + static async createEnvironment( request: CreateEnvironmentRequest, headers?: Record - ): Promise> { - const response = await this.apiClient.post( + ): Promise { + return this.apiClient.post( `/api/environment/${request.projectId}`, request, headers ) - - return await parseResponse(response) } - async updateEnvironment( + static async updateEnvironment( request: UpdateEnvironmentRequest, headers?: Record - ): Promise> { - const response = await this.apiClient.put( + ): Promise { + return this.apiClient.put( `/api/environment/${request.id}`, request, headers ) - - return await parseResponse(response) } - async getEnvironmentById( + static async getEnvironmentById( request: GetEnvironmentByIdRequest, + headers?: Record - ): Promise> { - const response = await this.apiClient.get( + ): Promise { + return this.apiClient.get( `/api/environment/${request.id}`, headers ) - - return await parseResponse(response) } - async getAllEnvironmentsOfProject( + static async getAllEnvironmentsOfProject( request: GetAllEnvironmentsOfProjectRequest, headers?: Record - ): Promise> { + ): Promise { let url = `/api/environment/all/${request.projectId}?` request.page && (url += `page=${request.page}&`) request.limit && (url += `limit=${request.limit}&`) @@ -70,20 +59,16 @@ export default class EnvironmentController { request.order && (url += `order=${request.order}&`) request.search && (url += `search=${request.search}&`) - const response = await this.apiClient.get(url, headers) - - return await parseResponse(response) + return this.apiClient.get(url, headers) } - async deleteEnvironment( + static async deleteEnvironment( request: DeleteEnvironmentRequest, headers?: Record - ): Promise> { - const response = await this.apiClient.delete( + ): Promise { + return this.apiClient.delete( `/api/environment/${request.id}`, headers ) - - return await parseResponse(response) } } diff --git a/packages/api-client/src/core/response-parser.ts b/packages/api-client/src/core/response-parser.ts deleted file mode 100644 index ce17508d..00000000 --- a/packages/api-client/src/core/response-parser.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ClientResponse, ResponseError } from '../types/index.types' - -export async function parseResponse( - response: Response -): Promise> { - if (!response.ok) { - const error = (await response.json()) as ResponseError - return { - success: false, - data: null, - error - } as ClientResponse - } - - let data: any = null - - try { - data = await response.json() - } catch (error) {} - - return { - success: true, - data, - error: null - } as ClientResponse -} diff --git a/packages/api-client/src/index.ts b/packages/api-client/src/index.ts index f146eff7..e69de29b 100644 --- a/packages/api-client/src/index.ts +++ b/packages/api-client/src/index.ts @@ -1,3 +0,0 @@ -import EnvironmentController from './controllers/environment/environment' - -export { EnvironmentController } diff --git a/packages/api-client/src/types/environment.types.d.ts b/packages/api-client/src/types/environment.types.d.ts index ed140704..14b44839 100644 --- a/packages/api-client/src/types/environment.types.d.ts +++ b/packages/api-client/src/types/environment.types.d.ts @@ -1,5 +1,3 @@ -import { Page } from '../../../../apps/cli/src/types/index.types' - export interface CreateEnvironmentRequest { name: string description?: string @@ -55,8 +53,8 @@ export interface GetAllEnvironmentsOfProjectRequest { search?: string } -export interface GetAllEnvironmentsOfProjectResponse - extends Page<{ +export interface GetAllEnvironmentsOfProjectResponse { + items: { id: string name: string description: string | null @@ -68,7 +66,8 @@ export interface GetAllEnvironmentsOfProjectResponse email: string profilePictureUrl: string | null } - }> {} + }[] +} export interface DeleteEnvironmentRequest { id: string diff --git a/packages/api-client/src/types/index.types.d.ts b/packages/api-client/src/types/index.types.d.ts deleted file mode 100644 index 3b787f86..00000000 --- a/packages/api-client/src/types/index.types.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -export interface Page { - items: T[] - metadata: { - page: number - perPage: number - pageCount: number - totalCount: number - links: { - self: string - first: string - previous: string | null - next: string | null - last: string - } - } -} - -export interface ResponseError { - message: string - error: string - statusCode: number -} - -export interface ClientResponse { - success: boolean - error: ResponseError | null - data: T | null -} diff --git a/packages/api-client/tests/environment.spec.ts b/packages/api-client/tests/environment.spec.ts index c652f67d..be06923f 100644 --- a/packages/api-client/tests/environment.spec.ts +++ b/packages/api-client/tests/environment.spec.ts @@ -1,21 +1,16 @@ -import { APIClient } from '../src/core/client' -import EnvironmentController from '../src/controllers/environment/environment' +import client from '@package/client' +import EnvironmentController from '@package/controllers/environment/environment' describe('Get Environments Tests', () => { - const backendUrl = process.env.BACKEND_URL - - const client = new APIClient(backendUrl) - const environmentController = new EnvironmentController(backendUrl) - const email = 'johndoe@example.com' let projectId: string | null let workspaceId: string | null let environment: any beforeAll(async () => { - //Create the user's workspace - const workspaceResponse = (await ( - await client.post( + try { + //Create the user's workspace + const workspaceResponse = (await client.post( '/api/workspace', { name: 'My Workspace' @@ -23,14 +18,12 @@ describe('Get Environments Tests', () => { { 'x-e2e-user-email': email } - ) - ).json()) as any + )) as any - workspaceId = workspaceResponse.id + workspaceId = workspaceResponse.id - // Create a project - const projectResponse = (await ( - await client.post( + // Create a project + const projectResponse = (await client.post( `/api/project/${workspaceId}`, { name: 'Project', @@ -39,32 +32,38 @@ describe('Get Environments Tests', () => { { 'x-e2e-user-email': email } - ) - ).json()) as any + )) as any - projectId = projectResponse.id + projectId = projectResponse.id + } catch (error) { + console.error(error) + process.exit(1) + } }) afterAll(async () => { - // Delete the workspace - await client.delete(`/api/workspace/${workspaceId}`, { - 'x-e2e-user-email': email - }) + try { + // Delete the workspace + await client.delete(`/api/workspace/${workspaceId}`, { + 'x-e2e-user-email': email + }) + } catch (error) { + console.error(error) + process.exit(1) + } }) beforeEach(async () => { // Create an environment - const createEnvironmentResponse = (await ( - await client.post( - `/api/environment/${projectId}`, - { - name: 'Dev' - }, - { - 'x-e2e-user-email': email - } - ) - ).json()) as any + const createEnvironmentResponse = await client.post( + `/api/environment/${projectId}`, + { + name: 'Dev' + }, + { + 'x-e2e-user-email': email + } + ) environment = createEnvironmentResponse }) @@ -77,153 +76,145 @@ describe('Get Environments Tests', () => { }) it('should return a list of environments', async () => { - const environments = ( - await environmentController.getAllEnvironmentsOfProject( - { - projectId, - page: 0, - limit: 10 - }, - { - 'x-e2e-user-email': email - } - ) - ).data - - expect(environments.items).toHaveLength(2) - expect(environments.items[0].name).toBe('Default') - - //check metadata - expect(environments.metadata.totalCount).toEqual(2) - expect(environments.metadata.links.self).toBe( - `/environment/all/${projectId}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(environments.metadata.links.first).toBe( - `/environment/all/${projectId}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(environments.metadata.links.previous).toBeNull() - expect(environments.metadata.links.next).toBeNull() - expect(environments.metadata.links.last).toBe( - `/environment/all/${projectId}?page=0&limit=10&sort=name&order=asc&search=` - ) + try { + const environments = + await EnvironmentController.getAllEnvironmentsOfProject( + { + projectId + }, + { + 'x-e2e-user-email': email + } + ) + + expect(environments).toHaveLength(2) + expect(environments[0].name).toBe('Default') + } catch (error) { + console.error(error) + process.exit(1) + } }) it('should be able to fetch environment by ID', async () => { - const environmentResponse = ( - await environmentController.getEnvironmentById( - { - id: environment.id - }, - { - 'x-e2e-user-email': email - } - ) - ).data - - expect(environmentResponse.id).toBe(environment.id) - expect(environmentResponse.name).toBe('Dev') + try { + const environmentResponse = + await EnvironmentController.getEnvironmentById( + { + id: environment.id + }, + { + 'x-e2e-user-email': email + } + ) + + expect(environmentResponse.id).toBe(environment.id) + expect(environmentResponse.name).toBe('Dev') + } catch (error) { + console.error(error) + process.exit(1) + } }) it('should be able to create an environment', async () => { - const createEnvironmentResponse = ( - await environmentController.createEnvironment( - { - projectId, - name: 'Prod' - }, + try { + const createEnvironmentResponse = + await EnvironmentController.createEnvironment( + { + projectId, + name: 'Prod' + }, + { + 'x-e2e-user-email': email + } + ) + + expect(createEnvironmentResponse.name).toBe('Prod') + + const fetchEnvironmentResponse = (await client.get( + `/api/environment/${createEnvironmentResponse.id}`, { 'x-e2e-user-email': email } - ) - ).data + )) as any - expect(createEnvironmentResponse.name).toBe('Prod') + expect(fetchEnvironmentResponse.name).toBe('Prod') - const fetchEnvironmentResponse = (await ( - await client.get(`/api/environment/${createEnvironmentResponse.id}`, { + // Delete the environment + await client.delete(`/api/environment/${createEnvironmentResponse.id}`, { 'x-e2e-user-email': email }) - ).json()) as any - - expect(fetchEnvironmentResponse.name).toBe('Prod') - - // Delete the environment - await client.delete(`/api/environment/${createEnvironmentResponse.id}`, { - 'x-e2e-user-email': email - }) + } catch (error) { + console.error(error) + process.exit(1) + } }) it('should be able to update an environment', async () => { - const updateEnvironmentResponse = ( - await environmentController.updateEnvironment( - { - id: environment.id, - name: 'Prod' - }, + try { + const updateEnvironmentResponse = + await EnvironmentController.updateEnvironment( + { + id: environment.id, + name: 'Prod' + }, + { + 'x-e2e-user-email': email + } + ) + + expect(updateEnvironmentResponse.name).toBe('Prod') + + const fetchEnvironmentResponse = (await client.get( + `/api/environment/${environment.id}`, { 'x-e2e-user-email': email } - ) - ).data - - expect(updateEnvironmentResponse.name).toBe('Prod') - - const fetchEnvironmentResponse = (await ( - await client.get(`/api/environment/${environment.id}`, { - 'x-e2e-user-email': email - }) - ).json()) as any + )) as any - expect(fetchEnvironmentResponse.name).toBe('Prod') + expect(fetchEnvironmentResponse.name).toBe('Prod') + } catch (error) { + console.error(error) + process.exit(1) + } }) it('should be able to delete an environment', async () => { // Create an environment - const createEnvironmentResponse = (await ( - await client.post( - `/api/environment/${projectId}`, - { - name: 'Prod' - }, - { - 'x-e2e-user-email': email - } - ) - ).json()) as any - - await environmentController.deleteEnvironment( + const createEnvironmentResponse = (await client.post( + `/api/environment/${projectId}`, { - id: createEnvironmentResponse.id + name: 'Prod' }, { 'x-e2e-user-email': email } - ) + )) as any - // Check if the environment is deleted - const environments = ( - await environmentController.getAllEnvironmentsOfProject( + try { + await EnvironmentController.deleteEnvironment( { - projectId + id: createEnvironmentResponse.id }, { 'x-e2e-user-email': email } ) - ).data - expect(environments.items).toHaveLength(2) - expect(environments.metadata.totalCount).toEqual(2) - expect(environments.metadata.links.self).toBe( - `/environment/all/${projectId}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(environments.metadata.links.first).toBe( - `/environment/all/${projectId}?page=0&limit=10&sort=name&order=asc&search=` - ) - expect(environments.metadata.links.previous).toBeNull() - expect(environments.metadata.links.next).toBeNull() - expect(environments.metadata.links.last).toBe( - `/environment/all/${projectId}?page=0&limit=10&sort=name&order=asc&search=` - ) + // Check if the environment is deleted + const environments = + await EnvironmentController.getAllEnvironmentsOfProject( + { + projectId + }, + { + 'x-e2e-user-email': email + } + ) + + expect(environments).toHaveLength(2) + } catch (error) { + console.error(error) + process.exit(1) + } }) }) diff --git a/packages/api-client/tsconfig.json b/packages/api-client/tsconfig.json index b7b14a6a..17ad1248 100644 --- a/packages/api-client/tsconfig.json +++ b/packages/api-client/tsconfig.json @@ -16,8 +16,11 @@ "noImplicitAny": false, "strictBindCallApply": false, "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + "paths": { + "@package/*": ["src/*"] + } }, "include": ["src/**/*.ts", "tests/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e5f9aa2..5f5b3f60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,19 +10,19 @@ importers: dependencies: '@semantic-release/changelog': specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.0.0(typescript@5.5.4)) + version: 6.0.3(semantic-release@24.0.0) '@semantic-release/commit-analyzer': specifier: ^12.0.0 - version: 12.0.0(semantic-release@24.0.0(typescript@5.5.4)) + version: 12.0.0(semantic-release@24.0.0) '@semantic-release/git': specifier: ^10.0.1 - version: 10.0.1(semantic-release@24.0.0(typescript@5.5.4)) + version: 10.0.1(semantic-release@24.0.0) '@semantic-release/github': specifier: ^10.0.3 - version: 10.1.3(semantic-release@24.0.0(typescript@5.5.4)) + version: 10.1.0(semantic-release@24.0.0) '@semantic-release/release-notes-generator': specifier: ^14.0.0 - version: 14.0.1(semantic-release@24.0.0(typescript@5.5.4)) + version: 14.0.1(semantic-release@24.0.0) '@sentry/node': specifier: ^7.102.0 version: 7.118.0 @@ -31,7 +31,7 @@ importers: version: 7.118.0 '@types/node': specifier: ^20.14.10 - version: 20.14.13 + version: 20.14.11 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -46,7 +46,7 @@ importers: version: 8.0.0 framer-motion: specifier: ^11.2.9 - version: 11.3.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.3.6(react-dom@18.3.1)(react@18.3.1) million: specifier: ^3.0.5 version: 3.1.11 @@ -61,29 +61,26 @@ importers: version: 2.4.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4) - typescript: - specifier: ^5.5.2 - version: 5.5.4 + version: 10.9.2(@types/node@20.14.11)(typescript@5.5.3) zod: specifier: ^3.23.6 version: 3.23.8 devDependencies: '@sentry/cli': specifier: ^2.28.6 - version: 2.33.0 + version: 2.32.2 '@sentry/webpack-plugin': specifier: ^2.14.2 - version: 2.21.1(webpack@5.92.1(@swc/core@1.7.3)) + version: 2.21.1(webpack@5.93.0) '@types/jest': specifier: ^29.5.2 version: 29.5.12 '@typescript-eslint/eslint-plugin': specifier: ^6.0.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': specifier: ^6.0.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.5.4) + version: 6.21.0(eslint@8.57.0)(typescript@5.5.3) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -98,13 +95,13 @@ importers: version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.0.0 - version: 5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) + version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3) husky: specifier: ^9.0.11 - version: 9.1.4 + version: 9.0.11 jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + specifier: ^29.5.0 + version: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) prettier: specifier: ^3.0.0 version: 3.3.3 @@ -113,7 +110,7 @@ importers: version: 0.5.14(prettier@3.3.3) ts-jest: specifier: ^29.1.0 - version: 29.2.3(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(typescript@5.5.4) + version: 29.2.2(@babel/core@7.24.9)(jest@29.7.0)(typescript@5.5.3) tsconfig: specifier: workspace:* version: link:packages/tsconfig @@ -131,40 +128,40 @@ importers: version: 10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/config': specifier: ^3.2.0 - version: 3.2.3(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(rxjs@7.8.1) + version: 3.2.3(@nestjs/common@10.3.10)(rxjs@7.8.1) '@nestjs/core': specifier: ^10.0.0 - version: 10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1) + version: 10.3.10(@nestjs/common@10.3.10)(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/jwt': specifier: ^10.2.0 - version: 10.2.0(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1)) + version: 10.2.0(@nestjs/common@10.3.10) '@nestjs/passport': specifier: ^10.0.3 - version: 10.0.3(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(passport@0.7.0) + version: 10.0.3(@nestjs/common@10.3.10)(passport@0.7.0) '@nestjs/platform-express': specifier: ^10.0.0 - version: 10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10) + version: 10.3.10(@nestjs/common@10.3.10)(@nestjs/core@10.3.10) '@nestjs/platform-fastify': specifier: ^10.3.3 - version: 10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1)) + version: 10.3.10(@nestjs/common@10.3.10)(@nestjs/core@10.3.10) '@nestjs/platform-socket.io': specifier: ^10.3.7 - version: 10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/websockets@10.3.10)(rxjs@7.8.1) + version: 10.3.10(@nestjs/common@10.3.10)(@nestjs/websockets@10.3.10)(rxjs@7.8.1) '@nestjs/schedule': specifier: ^4.0.1 - version: 4.1.0(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1)) + version: 4.1.0(@nestjs/common@10.3.10)(@nestjs/core@10.3.10) '@nestjs/swagger': specifier: ^7.3.0 - version: 7.4.0(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2) + version: 7.4.0(@nestjs/common@10.3.10)(@nestjs/core@10.3.10)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2) '@nestjs/websockets': specifier: ^10.3.7 - version: 10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10)(@nestjs/platform-socket.io@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1) + version: 10.3.10(@nestjs/common@10.3.10)(@nestjs/core@10.3.10)(@nestjs/platform-socket.io@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@socket.io/redis-adapter': specifier: ^8.3.0 version: 8.3.0(socket.io-adapter@2.5.5) '@supabase/supabase-js': specifier: ^2.39.6 - version: 2.45.0 + version: 2.44.4 class-transformer: specifier: ^0.5.1 version: 0.5.1 @@ -194,7 +191,7 @@ importers: version: 2.0.0 redis: specifier: ^4.6.13 - version: 4.7.0 + version: 4.6.15 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -207,13 +204,13 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.0.0 - version: 10.4.2(@swc/cli@0.4.0(@swc/core@1.7.3)(chokidar@3.6.0))(@swc/core@1.7.3) + version: 10.4.2 '@nestjs/schematics': specifier: ^10.0.0 - version: 10.1.3(chokidar@3.6.0)(typescript@5.3.3) + version: 10.1.2(typescript@5.5.3) '@nestjs/testing': specifier: ^10.0.0 - version: 10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10)) + version: 10.3.10(@nestjs/common@10.3.10)(@nestjs/core@10.3.10)(@nestjs/platform-express@10.3.10) '@prisma/client': specifier: ^5.13.0 version: 5.17.0(prisma@5.13.0) @@ -243,10 +240,10 @@ importers: version: 7.4.2 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) + version: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) jest-mock-extended: specifier: ^3.0.5 - version: 3.0.7(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)))(typescript@5.3.3) + version: 3.0.7(jest@29.7.0)(typescript@5.5.3) prettier: specifier: ^3.0.0 version: 3.3.3 @@ -264,10 +261,13 @@ importers: version: 6.3.4 ts-jest: specifier: ^29.1.0 - version: 29.2.3(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)))(typescript@5.3.3) + version: 29.2.2(@babel/core@7.24.9)(jest@29.7.0)(typescript@5.5.3) ts-loader: specifier: ^9.4.3 - version: 9.5.1(typescript@5.3.3)(webpack@5.92.1(@swc/core@1.7.3)) + version: 9.5.1(typescript@5.5.3)(webpack@5.93.0) + typescript: + specifier: ^5.1.3 + version: 5.5.3 apps/cli: dependencies: @@ -277,9 +277,6 @@ importers: '@clack/prompts': specifier: ^0.7.0 version: 0.7.0 - '@keyshade/api-client': - specifier: workspace:../../packages/api-client - version: link:../../packages/api-client chalk: specifier: ^4.1.2 version: 4.1.2 @@ -292,9 +289,6 @@ importers: commander: specifier: ^12.1.0 version: 12.1.0 - eccrypto: - specifier: ^1.1.6 - version: 1.1.6 figlet: specifier: ^1.7.0 version: 1.7.0 @@ -313,85 +307,88 @@ importers: socket.io-client: specifier: ^4.7.5 version: 4.7.5 + typescript: + specifier: ^5.5.2 + version: 5.5.3 devDependencies: '@swc/cli': specifier: ^0.4.0 - version: 0.4.0(@swc/core@1.7.3(@swc/helpers@0.5.2))(chokidar@3.6.0) + version: 0.4.0(@swc/core@1.6.13) '@swc/core': specifier: ^1.6.13 - version: 1.7.3(@swc/helpers@0.5.2) + version: 1.6.13 '@types/cli-table': specifier: ^0.3.4 version: 0.3.4 - '@types/eccrypto': - specifier: ^1.1.6 - version: 1.1.6 '@types/figlet': specifier: ^1.5.8 version: 1.5.8 '@types/node': specifier: ^20.14.10 - version: 20.14.13 + version: 20.14.11 eslint-config-standard-with-typescript: specifier: ^43.0.1 - version: 43.0.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4) + version: 43.0.1(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0)(typescript@5.5.3) + tsup: + specifier: ^8.1.2 + version: 8.1.2(@swc/core@1.6.13)(typescript@5.5.3) apps/platform: dependencies: '@radix-ui/react-accordion': specifier: ^1.2.0 - version: 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-avatar': specifier: ^1.0.4 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-checkbox': specifier: ^1.0.4 - version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-context-menu': specifier: ^2.1.5 - version: 2.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-dialog': specifier: ^1.0.5 - version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-direction': specifier: ^1.0.1 version: 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-dropdown-menu': specifier: ^2.0.6 - version: 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-icons': specifier: ^1.3.0 version: 1.3.0(react@18.3.1) '@radix-ui/react-label': specifier: ^2.0.2 - version: 2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-menubar': specifier: ^1.0.4 - version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-popover': specifier: ^1.0.7 - version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-scroll-area': specifier: ^1.0.5 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-separator': specifier: ^1.0.3 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-slot': specifier: ^1.0.2 version: 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-switch': specifier: ^1.0.3 - version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-tooltip': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@tanstack/react-table': specifier: ^8.16.0 - version: 8.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 8.19.3(react-dom@18.3.1)(react@18.3.1) avvvatars-react: specifier: ^0.4.2 - version: 0.4.2(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.4.2(csstype@3.1.3)(react-dom@18.3.1)(react@18.3.1) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -400,25 +397,25 @@ importers: version: 2.1.1 cmdk: specifier: ^1.0.0 - version: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) dayjs: specifier: ^1.11.11 - version: 1.11.12 + version: 1.11.11 env-cmd: specifier: ^10.1.0 version: 10.1.0 framer-motion: specifier: ^11.1.7 - version: 11.3.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.3.6(react-dom@18.3.1)(react@18.3.1) geist: specifier: ^1.2.2 - version: 1.3.1(next@13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.3.1(next@13.5.6) input-otp: specifier: ^1.2.4 - version: 1.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.4(react-dom@18.3.1)(react@18.3.1) jotai: specifier: ^2.8.0 - version: 2.9.1(@types/react@18.3.3)(react@18.3.1) + version: 2.9.0(@types/react@18.3.3)(react@18.3.1) js-cookie: specifier: ^3.0.5 version: 3.0.5 @@ -427,10 +424,10 @@ importers: version: 0.340.0(react@18.3.1) next: specifier: ^13.5.6 - version: 13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 13.5.6(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) next-themes: specifier: ^0.3.0 - version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.3.0(react-dom@18.3.1)(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -439,13 +436,13 @@ importers: version: 18.3.1(react@18.3.1) sonner: specifier: ^1.4.41 - version: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.5.0(react-dom@18.3.1)(react@18.3.1) tailwind-merge: specifier: ^2.2.2 version: 2.4.0 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4))) + version: 1.0.7(tailwindcss@3.4.6) zod: specifier: ^3.23.8 version: 3.23.8 @@ -455,13 +452,10 @@ importers: version: 13.5.6 '@svgr/webpack': specifier: ^8.1.0 - version: 8.1.0(typescript@5.5.4) + version: 8.1.0(typescript@4.9.5) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4))) - '@types/dayjs-precise-range': - specifier: ^1.0.5 - version: 1.0.5 + version: 0.5.7(tailwindcss@3.4.6) '@types/js-cookie': specifier: ^3.0.6 version: 3.0.6 @@ -473,37 +467,40 @@ importers: version: 18.3.0 autoprefixer: specifier: ^10.4.16 - version: 10.4.19(postcss@8.4.40) + version: 10.4.19(postcss@8.4.39) eslint-config-custom: specifier: workspace:* version: link:../../packages/eslint-config-custom postcss: specifier: ^8.4.31 - version: 8.4.40 + version: 8.4.39 tailwindcss: specifier: ^3.3.3 - version: 3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + version: 3.4.6(ts-node@10.9.2) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig + typescript: + specifier: ^4.5.3 + version: 4.9.5 apps/web: dependencies: '@mdx-js/loader': specifier: ^3.0.1 - version: 3.0.1(webpack@5.92.1(@swc/core@1.7.3)) + version: 3.0.1(webpack@5.93.0) '@mdx-js/react': specifier: ^3.0.1 version: 3.0.1(@types/react@18.3.3)(react@18.3.1) '@next/mdx': specifier: ^14.2.3 - version: 14.2.5(@mdx-js/loader@3.0.1(webpack@5.92.1(@swc/core@1.7.3)))(@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1)) + version: 14.2.5(@mdx-js/loader@3.0.1)(@mdx-js/react@3.0.1) '@tsparticles/engine': specifier: ^3.3.0 version: 3.5.0 '@tsparticles/react': specifier: ^3.0.0 - version: 3.0.0(@tsparticles/engine@3.5.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.0.0(@tsparticles/engine@3.5.0)(react-dom@18.3.1)(react@18.3.1) '@tsparticles/slim': specifier: ^3.3.0 version: 3.5.0 @@ -515,13 +512,13 @@ importers: version: 2.1.1 framer-motion: specifier: ^11.2.9 - version: 11.3.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 11.3.6(react-dom@18.3.1)(react@18.3.1) geist: specifier: ^1.2.2 - version: 1.3.1(next@13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.3.1(next@13.5.6) next: specifier: ^13.5.6 - version: 13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 13.5.6(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) react: specifier: ^18.2.0 version: 18.3.1 @@ -533,7 +530,7 @@ importers: version: 0.33.4 sonner: specifier: ^1.4.41 - version: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.5.0(react-dom@18.3.1)(react@18.3.1) tailwind-merge: specifier: ^2.2.1 version: 2.4.0 @@ -543,10 +540,10 @@ importers: version: 13.5.6 '@svgr/webpack': specifier: ^8.1.0 - version: 8.1.0(typescript@5.5.4) + version: 8.1.0(typescript@4.9.5) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4))) + version: 0.5.7(tailwindcss@3.4.6) '@types/react': specifier: ^18.0.22 version: 18.3.3 @@ -555,19 +552,22 @@ importers: version: 18.3.0 autoprefixer: specifier: ^10.4.16 - version: 10.4.19(postcss@8.4.40) + version: 10.4.19(postcss@8.4.39) eslint-config-custom: specifier: workspace:* version: link:../../packages/eslint-config-custom postcss: specifier: ^8.4.31 - version: 8.4.40 + version: 8.4.39 tailwindcss: specifier: ^3.3.3 - version: 3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + version: 3.4.6(ts-node@10.9.2) tsconfig: specifier: workspace:* version: link:../../packages/tsconfig + typescript: + specifier: ^4.5.3 + version: 4.9.5 packages/api-client: {} @@ -575,7 +575,7 @@ importers: devDependencies: '@vercel/style-guide': specifier: ^5.0.0 - version: 5.2.0(@next/eslint-plugin-next@13.5.6)(eslint@8.57.0)(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(prettier@3.3.3)(typescript@4.9.5) + version: 5.2.0(eslint@8.57.0)(jest@29.7.0)(prettier@3.3.3)(typescript@4.9.5) eslint-config-turbo: specifier: ^1.10.12 version: 1.13.4(eslint@8.57.0) @@ -648,23 +648,23 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/compat-data@7.24.9': + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + '@babel/core@7.24.9': + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} engines: {node: '>=6.9.0'} - '@babel/eslint-parser@7.25.1': - resolution: {integrity: sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==} + '@babel/eslint-parser@7.24.8': + resolution: {integrity: sha512-nYAikI4XTGokU2QX7Jx+v4rxZKhKivaQaREZjuW3mrJrbdWJ5yUfohnoUULge+zEEaKjPYNxhoRgUKktjXtbwA==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + '@babel/generator@7.24.10': + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': @@ -675,18 +675,18 @@ packages: resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + '@babel/helper-compilation-targets@7.24.8': + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.0': - resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + '@babel/helper-create-class-features-plugin@7.24.8': + resolution: {integrity: sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.25.2': - resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + '@babel/helper-create-regexp-features-plugin@7.24.7': + resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -696,6 +696,18 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.24.8': resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} @@ -704,8 +716,8 @@ packages: resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helper-module-transforms@7.24.9': + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -718,14 +730,14 @@ packages: resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.25.0': - resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + '@babel/helper-remap-async-to-generator@7.24.7': + resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.0': - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + '@babel/helper-replace-supers@7.24.7': + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -738,6 +750,10 @@ packages: resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} @@ -750,37 +766,31 @@ packages: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.0': - resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + '@babel/helper-wrap-function@7.24.7': + resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + '@babel/helpers@7.24.8': + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.0': - resolution: {integrity: sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==} + '@babel/parser@7.24.8': + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.0': - resolution: {integrity: sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7': + resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': - resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': - resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7': + resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -791,8 +801,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': - resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7': + resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -922,8 +932,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.25.0': - resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + '@babel/plugin-transform-async-generator-functions@7.24.7': + resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -940,8 +950,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.25.0': - resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + '@babel/plugin-transform-block-scoping@7.24.7': + resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -958,8 +968,8 @@ packages: peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.25.0': - resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + '@babel/plugin-transform-classes@7.24.8': + resolution: {integrity: sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -988,12 +998,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': - resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-transform-dynamic-import@7.24.7': resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} @@ -1018,8 +1022,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.25.1': - resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + '@babel/plugin-transform-function-name@7.24.7': + resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1030,8 +1034,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.25.2': - resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + '@babel/plugin-transform-literals@7.24.7': + resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1060,8 +1064,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.25.0': - resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} + '@babel/plugin-transform-modules-systemjs@7.24.7': + resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1144,8 +1148,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-constant-elements@7.25.1': - resolution: {integrity: sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==} + '@babel/plugin-transform-react-constant-elements@7.24.7': + resolution: {integrity: sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1162,8 +1166,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.25.2': - resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + '@babel/plugin-transform-react-jsx@7.24.7': + resolution: {integrity: sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1216,8 +1220,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.25.2': - resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + '@babel/plugin-transform-typescript@7.24.8': + resolution: {integrity: sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1246,8 +1250,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.25.2': - resolution: {integrity: sha512-Y2Vkwy3ITW4id9c6KXshVV/x5yCGK7VdJmKkzOzNsDZMojRKfSA/033rRbLqlRozmhRXCejxWHLSJOg/wUHfzw==} + '@babel/preset-env@7.24.8': + resolution: {integrity: sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1272,20 +1276,20 @@ packages: '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + '@babel/runtime@7.24.8': + resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.2': - resolution: {integrity: sha512-s4/r+a7xTnny2O6FcZzqgT6nE4/GHEdcqj4qAeglbUOh0TeglEfmNJFAd/OLoVtGd6ZhAO8GCVvCNUO5t/VJVQ==} + '@babel/traverse@7.24.8': + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + '@babel/types@7.24.9': + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -1310,6 +1314,288 @@ packages: '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1349,11 +1635,11 @@ packages: '@fastify/middie@8.3.1': resolution: {integrity: sha512-qrQ8U3iCdjNum3+omnIvAyz21ifFx+Pp5jYW7PJJ7b9ueKTCPXsH6vEvaZQrjEZvOpTnWte+CswfBODWD0NqYQ==} - '@floating-ui/core@1.6.5': - resolution: {integrity: sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==} + '@floating-ui/core@1.6.4': + resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==} - '@floating-ui/dom@1.6.8': - resolution: {integrity: sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==} + '@floating-ui/dom@1.6.7': + resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==} '@floating-ui/react-dom@2.1.1': resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} @@ -1361,8 +1647,8 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.5': - resolution: {integrity: sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==} + '@floating-ui/utils@0.2.4': + resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} @@ -1732,8 +2018,8 @@ packages: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 - '@nestjs/schematics@10.1.3': - resolution: {integrity: sha512-aLJ4Nl/K/u6ZlgLa0NjKw5CuBOIgc6vudF42QvmGueu5FaMGM6IJrAuEvB5T2kr0PAfVwYmDFBBHCWdYhTw4Tg==} + '@nestjs/schematics@10.1.2': + resolution: {integrity: sha512-S0bMtZM5U4mAiqkhRyZkXgjmOHBS5P/lp/vEydgMR4F7csOShc3jFeKVs1Eghd9xCFezGKy3SHy7hFT6dpPhWQ==} peerDependencies: typescript: '>=4.8.2' @@ -2585,8 +2871,8 @@ packages: peerDependencies: '@redis/client': ^1.0.0 - '@redis/client@1.6.0': - resolution: {integrity: sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==} + '@redis/client@1.5.17': + resolution: {integrity: sha512-IPvU9A31qRCZ7lds/x+ksuK/UMndd0EASveAvCvEtFFKIZjZ+m/a4a0L7S28KEWoR5ka8526hlSghDo4Hrc2Hg==} engines: {node: '>=14'} '@redis/graph@1.1.1': @@ -2594,18 +2880,18 @@ packages: peerDependencies: '@redis/client': ^1.0.0 - '@redis/json@1.0.7': - resolution: {integrity: sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==} + '@redis/json@1.0.6': + resolution: {integrity: sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==} peerDependencies: '@redis/client': ^1.0.0 - '@redis/search@1.2.0': - resolution: {integrity: sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==} + '@redis/search@1.1.6': + resolution: {integrity: sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==} peerDependencies: '@redis/client': ^1.0.0 - '@redis/time-series@1.1.0': - resolution: {integrity: sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==} + '@redis/time-series@1.0.5': + resolution: {integrity: sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==} peerDependencies: '@redis/client': ^1.0.0 @@ -2618,8 +2904,88 @@ packages: rollup: optional: true - '@rushstack/eslint-patch@1.10.4': - resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + '@rollup/rollup-android-arm-eabi@4.18.1': + resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.1': + resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.1': + resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.1': + resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.1': + resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.1': + resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.1': + resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.1': + resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.1': + resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.1': + resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.1': + resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.1': + resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.1': + resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.1': + resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} + cpu: [x64] + os: [win32] + + '@rushstack/eslint-patch@1.10.3': + resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -2656,8 +3022,8 @@ packages: peerDependencies: semantic-release: '>=18.0.0' - '@semantic-release/github@10.1.3': - resolution: {integrity: sha512-QVw7YT3J4VqyVjOnlRsFA3OCERAJHER4QbSPupbav3ER0fawrs2BAWbQFjsr24OAD4KTTKMZsVzF+GYFWCDtaQ==} + '@semantic-release/github@10.1.0': + resolution: {integrity: sha512-g4RHBaCWJjGcEy95TeTdajlmUoP5jAaF5trGkFXHKsT/VpCwawhZbNW66+sUr0c2CIAdfpCxxmK+E7GyWBWJDw==} engines: {node: '>=20.8.1'} peerDependencies: semantic-release: '>=20.1.0' @@ -2686,49 +3052,49 @@ packages: resolution: {integrity: sha512-F8FdL/bS8cy1SY1Gw0Mfo3ROTqlrq9Lvt5QGvhXi22dpVcDkWmoTWE2k+sMEnXOa8SdThMc/gyC8lMwHGd3kFQ==} engines: {node: '>= 14'} - '@sentry/cli-darwin@2.33.0': - resolution: {integrity: sha512-LQFvD7uCOQ2P/vYru7IBKqJDHwJ9Rr2vqqkdjbxe2YCQS/N3NPXvi3eVM9hDJ284oyV/BMZ5lrmVTuIicf/hhw==} + '@sentry/cli-darwin@2.32.2': + resolution: {integrity: sha512-GDtePIavx3FKSRowdPdtIssahn46MfFFYNN+s7a9MjlhFwJtvC9A1bSDw7ksEtDaQolepUwmLPHaVe19y0T/zw==} engines: {node: '>=10'} os: [darwin] - '@sentry/cli-linux-arm64@2.33.0': - resolution: {integrity: sha512-mR2ZhqpU8RBVGLF5Ji19iOmVznk1B7Bzg5VhA8bVPuKsQmFN/3SyqE87IPMhwKoAsSRXyctwmbAkKs4240fxGA==} + '@sentry/cli-linux-arm64@2.32.2': + resolution: {integrity: sha512-VECLVC1rLyvXk6rTVUfmfs4vhANjMgm4BVKGlA3rydmf2PJw2/NfipH3KeyijdE2vEoyLri+/6HH883pP0iniQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux, freebsd] - '@sentry/cli-linux-arm@2.33.0': - resolution: {integrity: sha512-gY1bFE7wjDJc7WiNq1AS0WrILqLLJUw6Ou4pFQS45KjaH3/XJ1eohHhGJNy/UBHJ/Gq32b/BA9vsnWTXClZJ7g==} + '@sentry/cli-linux-arm@2.32.2': + resolution: {integrity: sha512-u9s08wr8bDDqsAl6pk9iGGlOHtU+T8btU6voNKy71QzeIBpV9c8VVk/OnmP9aswp/ea4NY416yjnzcTvCrFKAw==} engines: {node: '>=10'} cpu: [arm] os: [linux, freebsd] - '@sentry/cli-linux-i686@2.33.0': - resolution: {integrity: sha512-XPIy0XpqgAposHtWsy58qsX85QnZ8q0ktBuT4skrsCrLMzfhoQg4Ua+YbUr3RvE814Rt8Hzowx2ar2Rl3pyCyw==} + '@sentry/cli-linux-i686@2.32.2': + resolution: {integrity: sha512-XhofQz32OqLrQK1DEOsryhT7d29Df6VkccvxueGoIt2gpXEXtgRczsUwZjZqquDdkNCt+HPj9eUGcj8pY8JkmQ==} engines: {node: '>=10'} cpu: [x86, ia32] os: [linux, freebsd] - '@sentry/cli-linux-x64@2.33.0': - resolution: {integrity: sha512-qe1DdCUv4tmqS03s8RtCkEX9vCW2G+NgOxX6jZ5jN/sKDwjUlquljqo7JHUGSupkoXmymnNPm5By3rNr6VyNHg==} + '@sentry/cli-linux-x64@2.32.2': + resolution: {integrity: sha512-anyng4Qqt7zX4ZY4IzDH1RJWAVZNBe6sUHcuciNy7giCU3B4/XnxAHlwYmBSN5txpaumsWdstPgRKEUJG6AOSA==} engines: {node: '>=10'} cpu: [x64] os: [linux, freebsd] - '@sentry/cli-win32-i686@2.33.0': - resolution: {integrity: sha512-VEXWtJ69C3b+kuSmXQJRwdQ0ypPGH88hpqyQuosbAOIqh/sv4g9B/u1ETHZc+whLdFDpPcTLVMbLDbXTGug0Yg==} + '@sentry/cli-win32-i686@2.32.2': + resolution: {integrity: sha512-/auqx7QXG7F556fNK7vaB26pX7Far1CQMfI65iV4u/VWg6gV2WfvJWXB4iowhjqkYv56sZ+zOymLkEVF0R8wtg==} engines: {node: '>=10'} cpu: [x86, ia32] os: [win32] - '@sentry/cli-win32-x64@2.33.0': - resolution: {integrity: sha512-GIUKysZ1xbSklY9h1aVaLMSYLsnMSd+JuwQLR+0wKw2wJC4O5kNCPFSGikhiOZM/kvh3GO1WnXNyazFp8nLAzw==} + '@sentry/cli-win32-x64@2.32.2': + resolution: {integrity: sha512-w7hW2sEWVYQquqdILBSFhcVW+HdoyLqVPPkLPAXRSLTwBnuni9nQEIdXr0h/7db+K3cm7PvWndp5ixVyswLHZA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@sentry/cli@2.33.0': - resolution: {integrity: sha512-9MOzQy1UunVBhPOfEuO0JH2ofWAMmZVavTTR/Bo2CkJwI1qjyVF0UKLTXE3l4ujiJnFufOoBsVyKmYWXFerbCw==} + '@sentry/cli@2.32.2': + resolution: {integrity: sha512-m/6Z3FWu+rTd8jepVlJPKQhvbT8vCjt0N7BSWZiEUVW/8mhwAYJiwO0b+Ch/u4IqbBg1dp3805q5TFPl4AdrNw==} engines: {node: '>= 10'} hasBin: true @@ -2812,8 +3178,8 @@ packages: '@supabase/storage-js@2.6.0': resolution: {integrity: sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==} - '@supabase/supabase-js@2.45.0': - resolution: {integrity: sha512-j66Mfs8RhzCQCKxKogAFQYH9oNhRmgIdKk6pexguI2Oc7hi+nL9UNJug5aL1tKnBdaBM3h65riPLQSdL6sWa3Q==} + '@supabase/supabase-js@2.44.4': + resolution: {integrity: sha512-vqtUp8umqcgj+RPUc7LiEcQmgsEWFDPJdJizRJF/5tf2zSlVB+3YbUwyQE/hLagYA8TLvGXe7oAqtYyFde6llw==} '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} @@ -2904,68 +3270,68 @@ packages: chokidar: optional: true - '@swc/core-darwin-arm64@1.7.3': - resolution: {integrity: sha512-CTkHa6MJdov9t41vuV2kmQIMu+Q19LrEHGIR/UiJYH06SC/sOu35ZZH8DyfLp9ZoaCn21gwgWd61ixOGQlwzTw==} + '@swc/core-darwin-arm64@1.6.13': + resolution: {integrity: sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.7.3': - resolution: {integrity: sha512-mun623y6rCoZ2EFIYfIRqXYRFufJOopoYSJcxYhZUrfTpAvQ1zLngjQpWCUU1krggXR2U0PQj+ls0DfXUTraNg==} + '@swc/core-darwin-x64@1.6.13': + resolution: {integrity: sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.7.3': - resolution: {integrity: sha512-4Jz4UcIcvZNMp9qoHbBx35bo3rjt8hpYLPqnR4FFq6gkAsJIMFC56UhRZwdEQoDuYiOFMBnnrsg31Fyo6YQypA==} + '@swc/core-linux-arm-gnueabihf@1.6.13': + resolution: {integrity: sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.3': - resolution: {integrity: sha512-p+U/M/oqV7HC4erQ5TVWHhJU1984QD+wQBPxslAYq751bOQGm0R/mXK42GjugqjnR6yYrAiwKKbpq4iWVXNePA==} + '@swc/core-linux-arm64-gnu@1.6.13': + resolution: {integrity: sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.7.3': - resolution: {integrity: sha512-s6VzyaJwaRGTi2mz2h6Ywxfmgpkc69IxhuMzl+sl34plH0V0RgnZDm14HoCGIKIzRk4+a2EcBV1ZLAfWmPACQg==} + '@swc/core-linux-arm64-musl@1.6.13': + resolution: {integrity: sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.7.3': - resolution: {integrity: sha512-IrFY48C356Z2dU2pjYg080yvMXzmSV3Lmm/Wna4cfcB1nkVLjWsuYwwRAk9CY7E19c+q8N1sMNggubAUDYoX2g==} + '@swc/core-linux-x64-gnu@1.6.13': + resolution: {integrity: sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.7.3': - resolution: {integrity: sha512-qoLgxBlBnnyUEDu5vmRQqX90h9jldU1JXI96e6eh2d1gJyKRA0oSK7xXmTzorv1fGHiHulv9qiJOUG+g6uzJWg==} + '@swc/core-linux-x64-musl@1.6.13': + resolution: {integrity: sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.7.3': - resolution: {integrity: sha512-OAd7jVVJ7nb0Ev80VAa1aeK+FldPeC4eZ35H4Qn6EICzIz0iqJo2T33qLKkSZiZEBKSoF4KcwrqYfkjLOp5qWg==} + '@swc/core-win32-arm64-msvc@1.6.13': + resolution: {integrity: sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.3': - resolution: {integrity: sha512-31+Le1NyfSnILFV9+AhxfFOG0DK0272MNhbIlbcv4w/iqpjkhaOnNQnLsYJD1Ow7lTX1MtIZzTjOhRlzSviRWg==} + '@swc/core-win32-ia32-msvc@1.6.13': + resolution: {integrity: sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.7.3': - resolution: {integrity: sha512-jVQPbYrwcuueI4QB0fHC29SVrkFOBcfIspYDlgSoHnEz6tmLMqUy+txZUypY/ZH/KaK0HEY74JkzgbRC1S6LFQ==} + '@swc/core-win32-x64-msvc@1.6.13': + resolution: {integrity: sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.7.3': - resolution: {integrity: sha512-HHAlbXjWI6Kl9JmmUW1LSygT1YbblXgj2UvvDzMkTBPRzYMhW6xchxdO8HbtMPtFYRt/EQq9u1z7j4ttRSrFsA==} + '@swc/core@1.6.13': + resolution: {integrity: sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -2979,8 +3345,8 @@ packages: '@swc/helpers@0.5.2': resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - '@swc/types@0.1.12': - resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} + '@swc/types@0.1.9': + resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} @@ -3166,9 +3532,6 @@ packages: '@types/cors@2.8.17': resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} - '@types/dayjs-precise-range@1.0.5': - resolution: {integrity: sha512-KP1jZqjEaUcdJ5JZKU5x12RsUdOG+G7XtaAMBYyhDYTIbJB//RAAOL6n4HKELzzG9OrWC+j2Ko5sa+dbSlj7bA==} - '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -3178,8 +3541,8 @@ packages: '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@9.6.0': - resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} + '@types/eslint@8.56.10': + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -3262,8 +3625,8 @@ packages: '@types/multer@1.4.11': resolution: {integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==} - '@types/node@20.14.13': - resolution: {integrity: sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==} + '@types/node@20.14.11': + resolution: {integrity: sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -3301,8 +3664,8 @@ packages: '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/superagent@8.1.8': - resolution: {integrity: sha512-nTqHJ2OTa7PFEpLahzSEEeFeqbMpmcN7OeayiOc7v+xk+/vyTKljRe+o4MPqSnPeRCMvtxuLG+5QqluUVQJOnA==} + '@types/superagent@8.1.7': + resolution: {integrity: sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==} '@types/supertest@6.0.2': resolution: {integrity: sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==} @@ -3319,8 +3682,8 @@ packages: '@types/validator@13.12.0': resolution: {integrity: sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==} - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + '@types/ws@8.5.11': + resolution: {integrity: sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==} '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -3684,6 +4047,9 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} + array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + array.prototype.tosorted@1.1.4: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} @@ -3732,8 +4098,8 @@ packages: react: '>= 16' react-dom: '>= 16' - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + axe-core@4.9.1: + resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} engines: {node: '>=4'} axobject-query@3.1.1: @@ -3900,6 +4266,12 @@ packages: builtins@5.1.0: resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -3908,6 +4280,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -3936,8 +4312,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001645: - resolution: {integrity: sha512-GFtY2+qt91kzyMk6j48dJcwJVq5uTkk71XxE3RtScx7XWRLsO7bU44LOFkOZYR8w9YMS0UhPSYpN/6rAMImmLw==} + caniuse-lite@1.0.30001642: + resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4342,8 +4718,8 @@ packages: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} - dayjs@1.11.12: - resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -4361,8 +4737,8 @@ packages: supports-color: optional: true - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -4558,8 +4934,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.4: - resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + electron-to-chromium@1.4.829: + resolution: {integrity: sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==} elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -4595,8 +4971,8 @@ packages: resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -4852,8 +5228,8 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-promise@6.6.0: - resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} + eslint-plugin-promise@6.4.0: + resolution: {integrity: sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -4864,11 +5240,11 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.35.0: - resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} + eslint-plugin-react@7.34.4: + resolution: {integrity: sha512-Np+jo9bUwJNxCsT12pXtrGhJgT3T44T1sHhn1Ssr42XFn8TES0267wPGo5nNrMHi8qkyimDAX2BUmkf9pSaVzA==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 eslint-plugin-testing-library@6.2.2: resolution: {integrity: sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==} @@ -5075,8 +5451,8 @@ packages: fast-uri@3.0.1: resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + fast-xml-parser@4.4.0: + resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} hasBin: true fastify-plugin@4.5.1: @@ -5209,8 +5585,8 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.3.19: - resolution: {integrity: sha512-+luuQdx4AsamyMcvzW7jUAJYIKvQs1KE7oHvKkW3eNzmo0S+3PSDWjBuQkuIP9WyneGnKGMLUSuHs8OP7jKpQg==} + framer-motion@11.3.6: + resolution: {integrity: sha512-olpX48qfoSIDjhw0RbolhOGBQmdMAXHHpSI0PFdTj5LeXChcf5F4ApShs0mQ6FPEPOj7dnEvSyB07UgRK5G9Jw==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -5327,8 +5703,8 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.6: - resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} @@ -5356,6 +5732,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} deprecated: Glob versions prior to v9 are no longer supported @@ -5536,8 +5917,8 @@ packages: resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==} engines: {node: '>=18.18.0'} - husky@9.1.4: - resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} + husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} engines: {node: '>=18'} hasBin: true @@ -5566,8 +5947,8 @@ packages: resolution: {integrity: sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==} engines: {node: '>=16.20'} - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -5682,8 +6063,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.15.0: - resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} engines: {node: '>= 0.4'} is-data-view@1.0.1: @@ -5755,6 +6136,10 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -5872,8 +6257,12 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + jackspeak@4.0.1: + resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} + engines: {node: 20 || >=22} + + jake@10.9.1: + resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} engines: {node: '>=10'} hasBin: true @@ -6027,8 +6416,8 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - jotai@2.9.1: - resolution: {integrity: sha512-t4Q7FIqQB3N/1art4OcqdlEtPmQ2h4DNIzTFhvt06WE0kCpQ1QoG+1A1IGTaQBi2KdDRsnywj+ojmHHKgw6PDA==} + jotai@2.9.0: + resolution: {integrity: sha512-MioTpMvR78IGfJ+W8EwQj3kwTkb+u0reGnTyg3oJZMWK9rK9v8NBSC9Rhrg9jrrFYA6bGZtzJa96zsuAYF6W3w==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=17.0.0' @@ -6155,8 +6544,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libphonenumber-js@1.11.5: - resolution: {integrity: sha512-TwHR5BZxGRODtAfz03szucAkjT5OArXr+94SMtAM2pYXIlQNVMrxvb6uSCbnaJJV6QXEyICk7+l6QPgn72WHhg==} + libphonenumber-js@1.11.4: + resolution: {integrity: sha512-F/R50HQuWWYcmU/esP5jrH5LiWYaN7DpN0a/99U8+mnGGtnx8kmRE+649dQh3v+CowXXZc8vpkf5AmYkO0AQ7Q==} lie@3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} @@ -6271,6 +6660,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.0.0: + resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} + engines: {node: 20 || >=22} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -6477,10 +6870,6 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - engines: {node: '>= 0.6'} - mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -6688,8 +7077,8 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.17: + resolution: {integrity: sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==} nodemailer@6.9.14: resolution: {integrity: sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==} @@ -7110,8 +7499,8 @@ packages: pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.3.2: - resolution: {integrity: sha512-WtARBjgZ7LNEkrGWxMBN/jvlFiE17LTbBoH0konmBU684Kd0uIiDwBXlcTCW7iJnA6HfIKwUssS/2AC6cDEanw==} + pino@9.3.1: + resolution: {integrity: sha512-afSfrq/hUiW/MFmQcLEwV9Zh8Ry6MrMTOyBU53o/fc0gEl+1OZ/Fks/xQCM2nOC0C/OfDtQMnT2d8c3kpcfSzA==} hasBin: true pirates@4.0.6: @@ -7161,8 +7550,26 @@ packages: ts-node: optional: true - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 @@ -7178,8 +7585,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -7259,8 +7666,8 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-ms@9.1.0: - resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} + pretty-ms@9.0.0: + resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} engines: {node: '>=18'} prisma@5.13.0: @@ -7274,9 +7681,6 @@ packages: process-warning@3.0.0: resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} - process-warning@4.0.0: - resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} - process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -7343,6 +7747,10 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + randexp@0.5.3: + resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==} + engines: {node: '>=4'} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -7455,8 +7863,8 @@ packages: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} - redis@4.7.0: - resolution: {integrity: sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==} + redis@4.6.15: + resolution: {integrity: sha512-2NtuOpMW3tnYzBw6S8mbXSX7RPzvVFCA2wFJq9oErushO2UeBkxObk+uvo7gv7n0rhWeOj/IzrHO8TjcFlRSOg==} reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} @@ -8076,8 +8484,8 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@3.4.7: - resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} + tailwindcss@3.4.6: + resolution: {integrity: sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==} engines: {node: '>=14.0.0'} hasBin: true @@ -8220,8 +8628,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-jest@29.2.3: - resolution: {integrity: sha512-yCcfVdiBFngVz9/keHin9EnsrQtQtEu3nRykNy9RVp+FiPFFbPJ3Sg6Qg4+TkmH0vMP5qsTKgXSsk80HRwvdgQ==} + ts-jest@29.2.2: + resolution: {integrity: sha512-sSW7OooaKT34AAngP6k1VS669a0HdLxkQZnlC7T76sckGCokXFnvJ3yRlQZGRTAoV5K19HfSgCiSwWOSIfcYlg==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -8378,8 +8786,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.23.0: - resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==} + type-fest@4.22.0: + resolution: {integrity: sha512-hxMO1k4ip1uTVGgPbs1hVpYyhz2P91A6tQyH2H9POx3U6T3MdhIcfY8L2hRu/LRmzPFdfduOS0RIDjFlP2urPw==} engines: {node: '>=16'} type-is@1.6.18: @@ -8415,13 +8823,13 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} hasBin: true - uglify-js@3.19.1: - resolution: {integrity: sha512-y/2wiW+ceTYR2TSSptAhfnEtpLaQ4Ups5zrjB2d3kuVxHj16j/QJwPl5PvuGy9uARb39J0+iKxcRPvtpsx4A4A==} + uglify-js@3.19.0: + resolution: {integrity: sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==} engines: {node: '>=0.8.0'} hasBin: true @@ -8445,8 +8853,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@6.19.5: - resolution: {integrity: sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==} + undici@6.19.2: + resolution: {integrity: sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==} engines: {node: '>=18.17'} unicode-canonical-property-names-ecmascript@2.0.0: @@ -8515,8 +8923,8 @@ packages: unplugin@1.0.1: resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} - unplugin@1.12.0: - resolution: {integrity: sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==} + unplugin@1.11.0: + resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} engines: {node: '>=14.0.0'} update-browserslist-db@1.1.0: @@ -8660,8 +9068,8 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} engines: {node: '>= 0.4'} which-collection@1.0.2: @@ -8763,8 +9171,8 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} hasBin: true @@ -8851,173 +9259,194 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.25.2': {} + '@babel/compat-data@7.24.9': {} - '@babel/core@7.25.2': + '@babel/core@7.24.9': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.0 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.2 - '@babel/types': 7.25.2 + '@babel/generator': 7.24.10 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 convert-source-map: 2.0.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@8.57.0)': + '@babel/eslint-parser@7.24.8(@babel/core@7.24.9)(eslint@8.57.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.57.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/generator@7.25.0': + '@babel/generator@7.24.10': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.25.2 - '@babel/types': 7.25.2 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color - '@babel/helper-compilation-targets@7.25.2': + '@babel/helper-compilation-targets@7.24.8': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.24.9 '@babel/helper-validator-option': 7.24.8 browserslist: 4.23.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.2 + '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': + '@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.24.9 + + '@babel/helper-function-name@7.24.7': + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + + '@babel/helper-hoist-variables@7.24.7': + dependencies: + '@babel/types': 7.24.9 + '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.25.2 - '@babel/types': 7.25.2 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.2 - '@babel/types': 7.25.2 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + '@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': + '@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-wrap-function': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.2 - '@babel/types': 7.25.2 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.2 - '@babel/types': 7.25.2 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.24.9 + '@babel/helper-string-parser@7.24.8': {} '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.24.8': {} - '@babel/helper-wrap-function@7.25.0': + '@babel/helper-wrap-function@7.24.7': dependencies: - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.2 - '@babel/types': 7.25.2 + '@babel/helper-function-name': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color - '@babel/helpers@7.25.0': + '@babel/helpers@7.24.8': dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 '@babel/highlight@7.24.7': dependencies: @@ -9026,673 +9455,658 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/parser@7.25.0': + '@babel/parser@7.24.8': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.2 - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.2 + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-classes@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.2 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-split-export-declaration': 7.24.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 - - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.24.7 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': + '@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-function-name': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.2 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.9) - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-constant-elements@7.25.1(@babel/core@7.25.2)': + '@babel/plugin-transform-react-constant-elements@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.2 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/types': 7.24.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-typescript@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.9) '@babel/helper-plugin-utils': 7.24.8 - '@babel/preset-env@7.25.2(@babel/core@7.25.2)': + '@babel/preset-env@7.24.8(@babel/core@7.24.9)': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 + '@babel/compat-data': 7.24.9 + '@babel/core': 7.24.9 + '@babel/helper-compilation-targets': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.9) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-classes': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.9) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.9) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.9) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.9) core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 esutils: 2.0.3 - '@babel/preset-react@7.24.7(@babel/core@7.25.2)': + '@babel/preset-react@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/preset-typescript@7.24.7(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.9) + '@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.9) transitivePeerDependencies: - supports-color '@babel/regjsgen@0.8.0': {} - '@babel/runtime@7.25.0': + '@babel/runtime@7.24.8': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.25.0': + '@babel/template@7.24.7': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.0 - '@babel/types': 7.25.2 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 - '@babel/traverse@7.25.2': + '@babel/traverse@7.24.8': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.0 - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - debug: 4.3.6(supports-color@5.5.0) + '@babel/generator': 7.24.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.2': + '@babel/types@7.24.9': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -9874,7 +10288,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -9920,27 +10334,27 @@ snapshots: path-to-regexp: 6.2.2 reusify: 1.0.4 - '@floating-ui/core@1.6.5': + '@floating-ui/core@1.6.4': dependencies: - '@floating-ui/utils': 0.2.5 + '@floating-ui/utils': 0.2.4 - '@floating-ui/dom@1.6.8': + '@floating-ui/dom@1.6.7': dependencies: - '@floating-ui/core': 1.6.5 - '@floating-ui/utils': 0.2.5 + '@floating-ui/core': 1.6.4 + '@floating-ui/utils': 0.2.4 '@floating-ui/react-dom@2.1.1(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.6.8 + '@floating-ui/dom': 1.6.7 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@floating-ui/utils@0.2.5': {} + '@floating-ui/utils@0.2.4': {} '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -10046,62 +10460,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3))': + '@jest/core@29.7.0(ts-node@10.9.2)': 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': 20.14.13 + '@types/node': 20.14.11 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - 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.7 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4))': - 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': 20.14.13 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -10126,7 +10505,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -10144,7 +10523,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.14.13 + '@types/node': 20.14.11 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -10166,7 +10545,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.14.13 + '@types/node': 20.14.11 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -10213,7 +10592,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -10236,7 +10615,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -10273,11 +10652,11 @@ snapshots: '@lukeed/csprng@1.1.0': {} - '@mdx-js/loader@3.0.1(webpack@5.92.1(@swc/core@1.7.3))': + '@mdx-js/loader@3.0.1(webpack@5.93.0)': dependencies: '@mdx-js/mdx': 3.0.1 source-map: 0.7.4 - webpack: 5.92.1(@swc/core@1.7.3) + webpack: 5.93.0 transitivePeerDependencies: - supports-color @@ -10337,17 +10716,17 @@ snapshots: got: 11.8.6 os-filter-obj: 2.0.0 - '@nestjs/cli@10.4.2(@swc/cli@0.4.0(@swc/core@1.7.3)(chokidar@3.6.0))(@swc/core@1.7.3)': + '@nestjs/cli@10.4.2': dependencies: '@angular-devkit/core': 17.3.8(chokidar@3.6.0) '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) '@angular-devkit/schematics-cli': 17.3.8(chokidar@3.6.0) - '@nestjs/schematics': 10.1.3(chokidar@3.6.0)(typescript@5.3.3) + '@nestjs/schematics': 10.1.2(chokidar@3.6.0)(typescript@5.3.3) chalk: 4.1.2 chokidar: 3.6.0 cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.92.1(@swc/core@1.7.3)) + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.92.1) glob: 10.4.2 inquirer: 8.2.6 node-emoji: 1.11.0 @@ -10356,11 +10735,8 @@ snapshots: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.3.3 - webpack: 5.92.1(@swc/core@1.7.3) + webpack: 5.92.1 webpack-node-externals: 3.0.0 - optionalDependencies: - '@swc/cli': 0.4.0(@swc/core@1.7.3(@swc/helpers@0.5.2))(chokidar@3.6.0) - '@swc/core': 1.7.3(@swc/helpers@0.5.2) transitivePeerDependencies: - esbuild - uglify-js @@ -10454,14 +10830,14 @@ snapshots: - supports-color - utf-8-validate - '@nestjs/schedule@4.1.0(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1))': + '@nestjs/schedule@4.1.0(@nestjs/common@10.3.10)(@nestjs/core@10.3.10)': dependencies: '@nestjs/common': 10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.3.10(@nestjs/common@10.3.10)(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1) cron: 3.1.7 uuid: 10.0.0 - '@nestjs/schematics@10.1.3(chokidar@3.6.0)(typescript@5.3.3)': + '@nestjs/schematics@10.1.2(chokidar@3.6.0)(typescript@5.3.3)': dependencies: '@angular-devkit/core': 17.3.8(chokidar@3.6.0) '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) @@ -10472,7 +10848,18 @@ snapshots: transitivePeerDependencies: - chokidar - '@nestjs/swagger@7.4.0(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.3.10(@nestjs/common@10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.3.10)(@nestjs/websockets@10.3.10)(reflect-metadata@0.2.2)(rxjs@7.8.1))(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)': + '@nestjs/schematics@10.1.2(typescript@5.5.3)': + dependencies: + '@angular-devkit/core': 17.3.8(chokidar@3.6.0) + '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) + comment-json: 4.2.3 + jsonc-parser: 3.3.1 + pluralize: 8.0.0 + typescript: 5.5.3 + transitivePeerDependencies: + - chokidar + + '@nestjs/swagger@7.4.0(@nestjs/common@10.3.10)(@nestjs/core@10.3.10)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)': dependencies: '@microsoft/tsdoc': 0.15.0 '@nestjs/common': 10.3.10(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) @@ -10510,11 +10897,9 @@ snapshots: dependencies: glob: 7.1.7 - '@next/mdx@14.2.5(@mdx-js/loader@3.0.1(webpack@5.92.1(@swc/core@1.7.3)))(@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1))': + '@next/mdx@14.2.5(@mdx-js/loader@3.0.1)(@mdx-js/react@3.0.1)': dependencies: - source-map: 0.7.4 - optionalDependencies: - '@mdx-js/loader': 3.0.1(webpack@5.92.1(@swc/core@1.7.3)) + '@mdx-js/loader': 3.0.1(webpack@5.93.0) '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) source-map: 0.7.4 @@ -10645,7 +11030,7 @@ snapshots: config-chain: 1.1.13 '@prisma/client@5.17.0(prisma@5.13.0)': - optionalDependencies: + dependencies: prisma: 5.13.0 '@prisma/debug@5.13.0': {} @@ -10673,7 +11058,7 @@ snapshots: '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/primitive@1.1.0': {} @@ -10755,9 +11140,7 @@ snapshots: '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: + '@babel/runtime': 7.24.8 '@types/react': 18.3.3 react: 18.3.1 @@ -10781,9 +11164,7 @@ snapshots: '@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: + '@babel/runtime': 7.24.8 '@types/react': 18.3.3 react: 18.3.1 @@ -10794,7 +11175,7 @@ snapshots: '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) @@ -10842,7 +11223,7 @@ snapshots: '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) @@ -10881,9 +11262,7 @@ snapshots: '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: + '@babel/runtime': 7.24.8 '@types/react': 18.3.3 react: 18.3.1 @@ -10894,7 +11273,7 @@ snapshots: '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) @@ -10919,7 +11298,7 @@ snapshots: '@radix-ui/react-id@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 react: 18.3.1 @@ -11016,11 +11395,6 @@ snapshots: '@radix-ui/rect': 1.1.0 '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.25.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11044,7 +11418,7 @@ snapshots: '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 @@ -11063,7 +11437,7 @@ snapshots: '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) '@types/react': 18.3.3 '@types/react-dom': 18.3.0 @@ -11120,166 +11494,150 @@ snapshots: '@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 - '@radix-ui/react-switch@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-switch@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-tooltip@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tooltip@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@types/react': 18.3.3 '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: + '@babel/runtime': 7.24.8 '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 - react: 18.3.1 - optionalDependencies: + '@babel/runtime': 7.24.8 '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/rect': 1.1.0 - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: '@types/react': 18.3.3 + react: 18.3.1 - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@types/react': 18.3.3 '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@radix-ui/rect@1.1.0': {} - '@redis/bloom@1.2.0(@redis/client@1.6.0)': + '@redis/bloom@1.2.0(@redis/client@1.5.17)': dependencies: - '@redis/client': 1.6.0 + '@redis/client': 1.5.17 - '@redis/client@1.6.0': + '@redis/client@1.5.17': dependencies: cluster-key-slot: 1.1.2 generic-pool: 3.9.0 yallist: 4.0.0 - '@redis/graph@1.1.1(@redis/client@1.6.0)': + '@redis/graph@1.1.1(@redis/client@1.5.17)': dependencies: - '@redis/client': 1.6.0 + '@redis/client': 1.5.17 - '@redis/json@1.0.7(@redis/client@1.6.0)': + '@redis/json@1.0.6(@redis/client@1.5.17)': dependencies: - '@redis/client': 1.6.0 + '@redis/client': 1.5.17 - '@redis/search@1.2.0(@redis/client@1.6.0)': + '@redis/search@1.1.6(@redis/client@1.5.17)': dependencies: - '@redis/client': 1.6.0 + '@redis/client': 1.5.17 - '@redis/time-series@1.1.0(@redis/client@1.6.0)': + '@redis/time-series@1.0.5(@redis/client@1.5.17)': dependencies: - '@redis/client': 1.6.0 + '@redis/client': 1.5.17 '@rollup/pluginutils@5.1.0': dependencies: @@ -11287,42 +11645,90 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rushstack/eslint-patch@1.10.4': {} + '@rollup/rollup-android-arm-eabi@4.18.1': + optional: true + + '@rollup/rollup-android-arm64@4.18.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.1': + optional: true + + '@rollup/rollup-darwin-x64@4.18.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.1': + optional: true + + '@rushstack/eslint-patch@1.10.3': {} '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@24.0.0(typescript@5.5.4))': + '@semantic-release/changelog@6.0.3(semantic-release@24.0.0)': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.2.0 lodash: 4.17.21 - semantic-release: 24.0.0(typescript@5.5.4) + semantic-release: 24.0.0(typescript@5.5.3) - '@semantic-release/commit-analyzer@12.0.0(semantic-release@24.0.0(typescript@5.5.4))': + '@semantic-release/commit-analyzer@12.0.0(semantic-release@24.0.0)': dependencies: conventional-changelog-angular: 7.0.0 conventional-commits-filter: 4.0.0 conventional-commits-parser: 5.0.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) import-from-esm: 1.3.4 lodash-es: 4.17.21 micromatch: 4.0.7 - semantic-release: 24.0.0(typescript@5.5.4) + semantic-release: 24.0.0(typescript@5.5.3) transitivePeerDependencies: - supports-color - '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.0.0(typescript@5.5.4))': + '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.0.0)': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) import-from-esm: 1.3.4 lodash-es: 4.17.21 micromatch: 4.0.7 - semantic-release: 24.0.0(typescript@5.5.4) + semantic-release: 24.0.0(typescript@5.5.3) transitivePeerDependencies: - supports-color @@ -11330,21 +11736,21 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/git@10.0.1(semantic-release@24.0.0(typescript@5.5.4))': + '@semantic-release/git@10.0.1(semantic-release@24.0.0)': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) dir-glob: 3.0.1 execa: 5.1.1 lodash: 4.17.21 micromatch: 4.0.7 p-reduce: 2.1.0 - semantic-release: 24.0.0(typescript@5.5.4) + semantic-release: 24.0.0(typescript@5.5.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@10.1.3(semantic-release@24.0.0(typescript@5.5.4))': + '@semantic-release/github@10.1.0(semantic-release@24.0.0)': dependencies: '@octokit/core': 6.1.2 '@octokit/plugin-paginate-rest': 11.3.3(@octokit/core@6.1.2) @@ -11352,7 +11758,7 @@ snapshots: '@octokit/plugin-throttling': 9.3.1(@octokit/core@6.1.2) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) dir-glob: 3.0.1 globby: 14.0.2 http-proxy-agent: 7.0.2 @@ -11361,12 +11767,12 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 24.0.0(typescript@5.5.4) + semantic-release: 24.0.0(typescript@5.5.3) url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@12.0.1(semantic-release@24.0.0(typescript@5.5.4))': + '@semantic-release/npm@12.0.1(semantic-release@24.0.0)': dependencies: '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 @@ -11379,23 +11785,23 @@ snapshots: rc: 1.2.8 read-pkg: 9.0.1 registry-auth-token: 5.0.2 - semantic-release: 24.0.0(typescript@5.5.4) + semantic-release: 24.0.0(typescript@5.5.3) semver: 7.6.3 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.0.1(semantic-release@24.0.0(typescript@5.5.4))': + '@semantic-release/release-notes-generator@14.0.1(semantic-release@24.0.0)': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) get-stream: 7.0.1 import-from-esm: 1.3.4 into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.0.0(typescript@5.5.4) + semantic-release: 24.0.0(typescript@5.5.3) transitivePeerDependencies: - supports-color @@ -11409,9 +11815,9 @@ snapshots: '@sentry/bundler-plugin-core@2.21.1': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@sentry/babel-plugin-component-annotate': 2.21.1 - '@sentry/cli': 2.33.0 + '@sentry/cli': 2.32.2 dotenv: 16.4.5 find-up: 5.0.0 glob: 9.3.5 @@ -11421,28 +11827,28 @@ snapshots: - encoding - supports-color - '@sentry/cli-darwin@2.33.0': + '@sentry/cli-darwin@2.32.2': optional: true - '@sentry/cli-linux-arm64@2.33.0': + '@sentry/cli-linux-arm64@2.32.2': optional: true - '@sentry/cli-linux-arm@2.33.0': + '@sentry/cli-linux-arm@2.32.2': optional: true - '@sentry/cli-linux-i686@2.33.0': + '@sentry/cli-linux-i686@2.32.2': optional: true - '@sentry/cli-linux-x64@2.33.0': + '@sentry/cli-linux-x64@2.32.2': optional: true - '@sentry/cli-win32-i686@2.33.0': + '@sentry/cli-win32-i686@2.32.2': optional: true - '@sentry/cli-win32-x64@2.33.0': + '@sentry/cli-win32-x64@2.32.2': optional: true - '@sentry/cli@2.33.0': + '@sentry/cli@2.32.2': dependencies: https-proxy-agent: 5.0.1 node-fetch: 2.7.0 @@ -11450,13 +11856,13 @@ snapshots: proxy-from-env: 1.1.0 which: 2.0.2 optionalDependencies: - '@sentry/cli-darwin': 2.33.0 - '@sentry/cli-linux-arm': 2.33.0 - '@sentry/cli-linux-arm64': 2.33.0 - '@sentry/cli-linux-i686': 2.33.0 - '@sentry/cli-linux-x64': 2.33.0 - '@sentry/cli-win32-i686': 2.33.0 - '@sentry/cli-win32-x64': 2.33.0 + '@sentry/cli-darwin': 2.32.2 + '@sentry/cli-linux-arm': 2.32.2 + '@sentry/cli-linux-arm64': 2.32.2 + '@sentry/cli-linux-i686': 2.32.2 + '@sentry/cli-linux-x64': 2.32.2 + '@sentry/cli-win32-i686': 2.32.2 + '@sentry/cli-win32-x64': 2.32.2 transitivePeerDependencies: - encoding - supports-color @@ -11492,12 +11898,12 @@ snapshots: dependencies: '@sentry/types': 7.118.0 - '@sentry/webpack-plugin@2.21.1(webpack@5.92.1(@swc/core@1.7.3))': + '@sentry/webpack-plugin@2.21.1(webpack@5.93.0)': dependencies: '@sentry/bundler-plugin-core': 2.21.1 unplugin: 1.0.1 uuid: 9.0.1 - webpack: 5.92.1(@swc/core@1.7.3) + webpack: 5.93.0 transitivePeerDependencies: - encoding - supports-color @@ -11522,7 +11928,7 @@ snapshots: '@socket.io/redis-adapter@8.3.0(socket.io-adapter@2.5.5)': dependencies: - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) notepack.io: 3.0.1 socket.io-adapter: 2.5.5 uid2: 1.0.0 @@ -11549,7 +11955,7 @@ snapshots: dependencies: '@supabase/node-fetch': 2.6.15 '@types/phoenix': 1.6.5 - '@types/ws': 8.5.12 + '@types/ws': 8.5.11 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -11559,7 +11965,7 @@ snapshots: dependencies: '@supabase/node-fetch': 2.6.15 - '@supabase/supabase-js@2.45.0': + '@supabase/supabase-js@2.44.4': dependencies: '@supabase/auth-js': 2.64.4 '@supabase/functions-js': 2.4.1 @@ -11571,56 +11977,56 @@ snapshots: - bufferutil - utf-8-validate - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.25.2)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 - '@svgr/babel-preset@8.1.0(@babel/core@7.25.2)': + '@svgr/babel-preset@8.1.0(@babel/core@7.24.9)': dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.25.2) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.24.9) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.9) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.9) - '@svgr/core@8.1.0(typescript@5.5.4)': + '@svgr/core@8.1.0(typescript@4.9.5)': dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.24.9) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.5.4) + cosmiconfig: 8.3.6(typescript@4.9.5) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -11628,46 +12034,46 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0)': dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) - '@svgr/core': 8.1.0(typescript@5.5.4) + '@babel/core': 7.24.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.24.9) + '@svgr/core': 8.1.0(typescript@4.9.5) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))(typescript@5.5.4)': + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@4.9.5)': dependencies: - '@svgr/core': 8.1.0(typescript@5.5.4) - cosmiconfig: 8.3.6(typescript@5.5.4) + '@svgr/core': 8.1.0(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@4.9.5) deepmerge: 4.3.1 svgo: 3.3.2 transitivePeerDependencies: - typescript - '@svgr/webpack@8.1.0(typescript@5.5.4)': + '@svgr/webpack@8.1.0(typescript@4.9.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-constant-elements': 7.25.1(@babel/core@7.25.2) - '@babel/preset-env': 7.25.2(@babel/core@7.25.2) - '@babel/preset-react': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@svgr/core': 8.1.0(typescript@5.5.4) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4))(typescript@5.5.4) + '@babel/core': 7.24.9 + '@babel/plugin-transform-react-constant-elements': 7.24.7(@babel/core@7.24.9) + '@babel/preset-env': 7.24.8(@babel/core@7.24.9) + '@babel/preset-react': 7.24.7(@babel/core@7.24.9) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.9) + '@svgr/core': 8.1.0(typescript@4.9.5) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@4.9.5) transitivePeerDependencies: - supports-color - typescript - '@swc/cli@0.4.0(@swc/core@1.7.3(@swc/helpers@0.5.2))(chokidar@3.6.0)': + '@swc/cli@0.4.0(@swc/core@1.6.13)': dependencies: '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.7.3(@swc/helpers@0.5.2) + '@swc/core': 1.6.13 '@swc/counter': 0.1.3 commander: 8.3.0 fast-glob: 3.3.2 @@ -11676,55 +12082,52 @@ snapshots: semver: 7.6.3 slash: 3.0.0 source-map: 0.7.4 - optionalDependencies: - chokidar: 3.6.0 - '@swc/core-darwin-arm64@1.7.3': + '@swc/core-darwin-arm64@1.6.13': optional: true - '@swc/core-darwin-x64@1.7.3': + '@swc/core-darwin-x64@1.6.13': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.3': + '@swc/core-linux-arm-gnueabihf@1.6.13': optional: true - '@swc/core-linux-arm64-gnu@1.7.3': + '@swc/core-linux-arm64-gnu@1.6.13': optional: true - '@swc/core-linux-arm64-musl@1.7.3': + '@swc/core-linux-arm64-musl@1.6.13': optional: true - '@swc/core-linux-x64-gnu@1.7.3': + '@swc/core-linux-x64-gnu@1.6.13': optional: true - '@swc/core-linux-x64-musl@1.7.3': + '@swc/core-linux-x64-musl@1.6.13': optional: true - '@swc/core-win32-arm64-msvc@1.7.3': + '@swc/core-win32-arm64-msvc@1.6.13': optional: true - '@swc/core-win32-ia32-msvc@1.7.3': + '@swc/core-win32-ia32-msvc@1.6.13': optional: true - '@swc/core-win32-x64-msvc@1.7.3': + '@swc/core-win32-x64-msvc@1.6.13': optional: true - '@swc/core@1.7.3(@swc/helpers@0.5.2)': + '@swc/core@1.6.13': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.12 + '@swc/types': 0.1.9 optionalDependencies: - '@swc/core-darwin-arm64': 1.7.3 - '@swc/core-darwin-x64': 1.7.3 - '@swc/core-linux-arm-gnueabihf': 1.7.3 - '@swc/core-linux-arm64-gnu': 1.7.3 - '@swc/core-linux-arm64-musl': 1.7.3 - '@swc/core-linux-x64-gnu': 1.7.3 - '@swc/core-linux-x64-musl': 1.7.3 - '@swc/core-win32-arm64-msvc': 1.7.3 - '@swc/core-win32-ia32-msvc': 1.7.3 - '@swc/core-win32-x64-msvc': 1.7.3 - '@swc/helpers': 0.5.2 + '@swc/core-darwin-arm64': 1.6.13 + '@swc/core-darwin-x64': 1.6.13 + '@swc/core-linux-arm-gnueabihf': 1.6.13 + '@swc/core-linux-arm64-gnu': 1.6.13 + '@swc/core-linux-arm64-musl': 1.6.13 + '@swc/core-linux-x64-gnu': 1.6.13 + '@swc/core-linux-x64-musl': 1.6.13 + '@swc/core-win32-arm64-msvc': 1.6.13 + '@swc/core-win32-ia32-msvc': 1.6.13 + '@swc/core-win32-x64-msvc': 1.6.13 '@swc/counter@0.1.3': {} @@ -11732,7 +12135,7 @@ snapshots: dependencies: tslib: 2.6.3 - '@swc/types@0.1.12': + '@swc/types@0.1.9': dependencies: '@swc/counter': 0.1.3 @@ -11740,12 +12143,12 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/forms@0.5.7(tailwindcss@3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))': + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.6)': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + tailwindcss: 3.4.6(ts-node@10.9.2) - '@tanstack/react-table@8.19.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-table@8.19.3(react-dom@18.3.1)(react@18.3.1)': dependencies: '@tanstack/table-core': 8.19.3 react: 18.3.1 @@ -11841,7 +12244,7 @@ snapshots: dependencies: '@tsparticles/engine': 3.5.0 - '@tsparticles/react@3.0.0(@tsparticles/engine@3.5.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tsparticles/react@3.0.0(@tsparticles/engine@3.5.0)(react-dom@18.3.1)(react@18.3.1)': dependencies: '@tsparticles/engine': 3.5.0 react: 18.3.1 @@ -11938,42 +12341,42 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.0 - '@babel/types': 7.25.2 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.0 - '@babel/types': 7.25.2 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.24.9 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/responselike': 1.0.3 '@types/cli-table@0.3.4': {} '@types/connect@3.4.38': dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/cookie-parser@1.4.7': dependencies: @@ -11985,11 +12388,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 20.14.13 - - '@types/dayjs-precise-range@1.0.5': - dependencies: - dayjs: 1.11.12 + '@types/node': 20.14.11 '@types/debug@4.1.12': dependencies: @@ -11998,14 +12397,14 @@ snapshots: '@types/eccrypto@1.1.6': dependencies: '@types/expect': 1.20.4 - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 9.6.0 + '@types/eslint': 8.56.10 '@types/estree': 1.0.5 - '@types/eslint@9.6.0': + '@types/eslint@8.56.10': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -12020,7 +12419,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -12036,7 +12435,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/hast@3.0.4': dependencies: @@ -12069,11 +12468,11 @@ snapshots: '@types/jsonwebtoken@9.0.5': dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/keyv@3.1.4': dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/luxon@3.4.2': {} @@ -12087,13 +12486,15 @@ snapshots: '@types/mime@1.3.5': {} + '@types/mocha@10.0.7': {} + '@types/ms@0.7.34': {} '@types/multer@1.4.11': dependencies: '@types/express': 4.17.21 - '@types/node@20.14.13': + '@types/node@20.14.11': dependencies: undici-types: 5.26.5 @@ -12118,34 +12519,33 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/semver@7.5.8': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/send': 0.17.4 '@types/stack-utils@2.0.3': {} - '@types/superagent@8.1.8': + '@types/superagent@8.1.7': dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 20.14.13 - form-data: 4.0.0 + '@types/node': 20.14.11 '@types/supertest@6.0.2': dependencies: '@types/methods': 1.1.4 - '@types/superagent': 8.1.8 + '@types/superagent': 8.1.7 '@types/unist@2.0.10': {} @@ -12155,9 +12555,9 @@ snapshots: '@types/validator@13.12.0': {} - '@types/ws@8.5.12': + '@types/ws@8.5.11': dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 '@types/yargs-parser@21.0.3': {} @@ -12165,7 +12565,7 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@4.9.5) @@ -12173,35 +12573,33 @@ snapshots: '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@4.9.5) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.3 ts-api-utils: 1.3.0(typescript@4.9.5) - optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12211,23 +12609,21 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 - optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) eslint: 8.57.0 - optionalDependencies: - typescript: 5.5.4 + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12245,23 +12641,21 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@4.9.5) - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@4.9.5) - optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.6(supports-color@5.5.0) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.3) + debug: 4.3.5(supports-color@5.5.0) eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12273,12 +12667,11 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 tsutils: 3.21.0(typescript@4.9.5) - optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -12287,29 +12680,27 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.3 ts-api-utils: 1.3.0(typescript@4.9.5) - optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.5.3)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color @@ -12342,14 +12733,14 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.3) eslint: 8.57.0 semver: 7.6.3 transitivePeerDependencies: @@ -12368,31 +12759,29 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vercel/style-guide@5.2.0(@next/eslint-plugin-next@13.5.6)(eslint@8.57.0)(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(prettier@3.3.3)(typescript@4.9.5)': + '@vercel/style-guide@5.2.0(eslint@8.57.0)(jest@29.7.0)(prettier@3.3.3)(typescript@4.9.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/eslint-parser': 7.25.1(@babel/core@7.25.2)(eslint@8.57.0) - '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5) + '@babel/core': 7.24.9 + '@babel/eslint-parser': 7.24.8(@babel/core@7.24.9)(eslint@8.57.0) + '@rushstack/eslint-patch': 1.10.3 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@4.9.5) '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@4.9.5) + eslint: 8.57.0 eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(typescript@4.9.5) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0)(jest@29.7.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) - eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(typescript@4.9.5))(eslint@8.57.0) - eslint-plugin-react: 7.35.0(eslint@8.57.0) + eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0)(eslint@8.57.0) + eslint-plugin-react: 7.34.4(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) eslint-plugin-testing-library: 6.2.2(eslint@8.57.0)(typescript@4.9.5) eslint-plugin-tsdoc: 0.2.17 eslint-plugin-unicorn: 48.0.1(eslint@8.57.0) - prettier-plugin-packagejson: 2.5.1(prettier@3.3.3) - optionalDependencies: - '@next/eslint-plugin-next': 13.5.6 - eslint: 8.57.0 prettier: 3.3.3 + prettier-plugin-packagejson: 2.5.1(prettier@3.3.3) typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-node @@ -12517,13 +12906,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -12538,15 +12927,15 @@ snapshots: indent-string: 5.0.0 ajv-formats@2.1.1(ajv@8.12.0): - optionalDependencies: + dependencies: ajv: 8.12.0 ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: + dependencies: ajv: 8.17.1 ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: + dependencies: ajv: 8.17.1 ajv-keywords@3.5.2(ajv@6.12.6): @@ -12692,6 +13081,13 @@ snapshots: es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + array.prototype.toreversed@1.1.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.7 @@ -12723,14 +13119,14 @@ snapshots: atomic-sleep@1.0.0: {} - autoprefixer@10.4.19(postcss@8.4.40): + autoprefixer@10.4.19(postcss@8.4.39): dependencies: browserslist: 4.23.2 - caniuse-lite: 1.0.30001645 + caniuse-lite: 1.0.30001642 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -12742,7 +13138,7 @@ snapshots: '@fastify/error': 3.4.1 fastq: 1.17.1 - avvvatars-react@0.4.2(csstype@3.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + avvvatars-react@0.4.2(csstype@3.1.3)(react-dom@18.3.1)(react@18.3.1): dependencies: goober: 2.1.14(csstype@3.1.3) react: 18.3.1 @@ -12750,19 +13146,19 @@ snapshots: transitivePeerDependencies: - csstype - axe-core@4.10.0: {} + axe-core@4.9.1: {} axobject-query@3.1.1: dependencies: deep-equal: 2.2.3 - babel-jest@29.7.0(@babel/core@7.25.2): + babel-jest@29.7.0(@babel/core@7.24.9): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.25.2) + babel-preset-jest: 29.6.3(@babel/core@7.24.9) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -12781,56 +13177,56 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.9): dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/compat-data': 7.24.9 + '@babel/core': 7.24.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.9) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.9): dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.9) core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.9): dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/core': 7.24.9 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.9) transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - - babel-preset-jest@29.6.3(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.9): + dependencies: + '@babel/core': 7.24.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.9) + + babel-preset-jest@29.6.3(@babel/core@7.24.9): + dependencies: + '@babel/core': 7.24.9 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.9) bail@2.0.2: {} @@ -12922,6 +13318,8 @@ snapshots: browser-or-node@2.1.1: {} + browser-stdout@1.3.1: {} + browserify-aes@1.2.0: dependencies: buffer-xor: 1.0.3 @@ -12934,9 +13332,9 @@ snapshots: browserslist@4.23.2: dependencies: - caniuse-lite: 1.0.30001645 - electron-to-chromium: 1.5.4 - node-releases: 2.0.18 + caniuse-lite: 1.0.30001642 + electron-to-chromium: 1.4.829 + node-releases: 2.0.17 update-browserslist-db: 1.1.0(browserslist@4.23.2) bs-logger@0.2.6: @@ -12972,12 +13370,19 @@ snapshots: dependencies: semver: 7.6.3 + bundle-require@5.0.0(esbuild@0.23.0): + dependencies: + esbuild: 0.23.0 + load-tsconfig: 0.2.5 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 bytes@3.1.2: {} + cac@6.7.14: {} + cacheable-lookup@5.0.4: {} cacheable-request@7.0.4: @@ -13006,7 +13411,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001645: {} + caniuse-lite@1.0.30001642: {} ccount@2.0.1: {} @@ -13064,7 +13469,7 @@ snapshots: class-validator@0.14.1: dependencies: '@types/validator': 13.12.0 - libphonenumber-js: 1.11.5 + libphonenumber-js: 1.11.4 validator: 13.12.0 class-variance-authority@0.7.0: @@ -13136,10 +13541,10 @@ snapshots: cluster-key-slot@1.1.2: {} - cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -13225,6 +13630,8 @@ snapshots: consola@2.15.3: {} + consola@3.2.3: {} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -13296,32 +13703,29 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@8.3.6(typescript@5.3.3): + cosmiconfig@8.3.6(typescript@4.9.5): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - optionalDependencies: - typescript: 5.3.3 + typescript: 4.9.5 - cosmiconfig@8.3.6(typescript@5.5.4): + cosmiconfig@8.3.6(typescript@5.3.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - optionalDependencies: - typescript: 5.5.4 + typescript: 5.3.3 - cosmiconfig@9.0.0(typescript@5.5.4): + cosmiconfig@9.0.0(typescript@5.5.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - optionalDependencies: - typescript: 5.5.4 + typescript: 5.5.3 create-hash@1.2.0: dependencies: @@ -13342,28 +13746,13 @@ snapshots: sha.js: 2.4.11 optional: true - create-jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)): + create-jest@29.7.0(@types/node@20.14.11)(ts-node@10.9.2): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -13447,7 +13836,7 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.1 - dayjs@1.11.12: {} + dayjs@1.11.11: {} debug@2.6.9: dependencies: @@ -13457,12 +13846,18 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.6(supports-color@5.5.0): + debug@4.3.5(supports-color@5.5.0): dependencies: ms: 2.1.2 - optionalDependencies: supports-color: 5.5.0 + debug@4.3.5(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + + decamelize@4.0.0: {} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -13553,6 +13948,8 @@ snapshots: diff@4.0.2: {} + diff@5.2.0: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -13607,6 +14004,8 @@ snapshots: dotenv@16.4.5: {} + drange@1.1.1: {} + drbg.js@1.0.1: dependencies: browserify-aes: 1.2.0 @@ -13637,9 +14036,9 @@ snapshots: ejs@3.1.10: dependencies: - jake: 10.9.2 + jake: 10.9.1 - electron-to-chromium@1.5.4: {} + electron-to-chromium@1.4.829: {} elliptic@6.5.4: dependencies: @@ -13668,7 +14067,7 @@ snapshots: engine.io-client@6.5.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) engine.io-parser: 5.2.3 ws: 8.17.1 xmlhttprequest-ssl: 2.0.0 @@ -13683,12 +14082,12 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.14.13 + '@types/node': 20.14.11 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) engine.io-parser: 5.2.3 ws: 8.17.1 transitivePeerDependencies: @@ -13696,7 +14095,7 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.17.1: + enhanced-resolve@5.17.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -13829,6 +14228,59 @@ snapshots: es6-promise@4.2.8: {} + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.23.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.0 + '@esbuild/android-arm': 0.23.0 + '@esbuild/android-arm64': 0.23.0 + '@esbuild/android-x64': 0.23.0 + '@esbuild/darwin-arm64': 0.23.0 + '@esbuild/darwin-x64': 0.23.0 + '@esbuild/freebsd-arm64': 0.23.0 + '@esbuild/freebsd-x64': 0.23.0 + '@esbuild/linux-arm': 0.23.0 + '@esbuild/linux-arm64': 0.23.0 + '@esbuild/linux-ia32': 0.23.0 + '@esbuild/linux-loong64': 0.23.0 + '@esbuild/linux-mips64el': 0.23.0 + '@esbuild/linux-ppc64': 0.23.0 + '@esbuild/linux-riscv64': 0.23.0 + '@esbuild/linux-s390x': 0.23.0 + '@esbuild/linux-x64': 0.23.0 + '@esbuild/netbsd-x64': 0.23.0 + '@esbuild/openbsd-arm64': 0.23.0 + '@esbuild/openbsd-x64': 0.23.0 + '@esbuild/sunos-x64': 0.23.0 + '@esbuild/win32-arm64': 0.23.0 + '@esbuild/win32-ia32': 0.23.0 + '@esbuild/win32-x64': 0.23.0 + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -13850,53 +14302,53 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-config-standard-with-typescript@43.0.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4): + eslint-config-standard-with-typescript@43.0.1(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0)(typescript@5.5.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-promise: 6.6.0(eslint@8.57.0) - typescript: 5.5.4 + eslint-plugin-promise: 6.4.0(eslint@8.57.0) + typescript: 5.5.3 transitivePeerDependencies: - supports-color - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0): + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.4.0)(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-promise: 6.6.0(eslint@8.57.0) + eslint-plugin-promise: 6.4.0(eslint@8.57.0) eslint-config-turbo@1.13.4(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-plugin-turbo: 1.13.4(eslint@8.57.0) - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1): dependencies: - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.15.0 + is-core-module: 2.14.0 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: - debug: 4.3.6(supports-color@5.5.0) - enhanced-resolve: 5.17.1 + debug: 4.3.5(supports-color@8.1.1) + enhanced-resolve: 5.17.0 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) fast-glob: 3.3.2 - get-tsconfig: 4.7.6 - is-core-module: 2.15.0 + get-tsconfig: 4.7.5 + is-core-module: 2.14.0 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -13904,22 +14356,20 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: - debug: 3.2.7 - optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@4.9.5) + debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.3) debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -13944,35 +14394,9 @@ snapshots: eslint: 8.57.0 ignore: 5.3.1 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - dependencies: - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.15.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@4.9.5) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -13981,9 +14405,9 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.15.0 + is-core-module: 2.14.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 @@ -13991,20 +14415,17 @@ snapshots: object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(typescript@4.9.5): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0)(jest@29.7.0)(typescript@4.9.5): dependencies: + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5) eslint: 8.57.0 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5) - jest: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + jest: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) transitivePeerDependencies: - supports-color - typescript @@ -14015,7 +14436,7 @@ snapshots: array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.10.0 + axe-core: 4.9.1 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -14035,11 +14456,11 @@ snapshots: builtins: 5.1.0 eslint: 8.57.0 eslint-plugin-es-x: 7.8.0(eslint@8.57.0) - get-tsconfig: 4.7.6 + get-tsconfig: 4.7.5 globals: 13.24.0 ignore: 5.3.1 is-builtin-module: 3.2.1 - is-core-module: 2.15.0 + is-core-module: 2.14.0 minimatch: 3.1.2 resolve: 1.22.8 semver: 7.6.3 @@ -14054,23 +14475,20 @@ snapshots: resolve: 1.22.8 semver: 6.3.1 - eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(typescript@4.9.5))(eslint@8.57.0): + eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0)(eslint@8.57.0): dependencies: eslint: 8.57.0 - optionalDependencies: - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(typescript@4.9.5) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0)(jest@29.7.0)(typescript@4.9.5) - eslint-plugin-prettier@5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.3): dependencies: eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 - optionalDependencies: - '@types/eslint': 9.6.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-promise@6.6.0(eslint@8.57.0): + eslint-plugin-promise@6.4.0(eslint@8.57.0): dependencies: eslint: 8.57.0 @@ -14078,11 +14496,12 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-react@7.35.0(eslint@8.57.0): + eslint-plugin-react@7.34.4(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 @@ -14170,7 +14589,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -14310,7 +14729,7 @@ snapshots: is-plain-obj: 4.1.0 is-stream: 4.0.1 npm-run-path: 5.3.0 - pretty-ms: 9.1.0 + pretty-ms: 9.0.0 signal-exit: 4.1.0 strip-final-newline: 4.0.0 yoctocolors: 2.1.1 @@ -14367,7 +14786,7 @@ snapshots: ext-list@2.2.2: dependencies: - mime-db: 1.53.0 + mime-db: 1.52.0 ext-name@5.0.0: dependencies: @@ -14424,7 +14843,7 @@ snapshots: fast-uri@3.0.1: {} - fast-xml-parser@4.4.1: + fast-xml-parser@4.4.0: dependencies: strnum: 1.0.5 @@ -14441,7 +14860,7 @@ snapshots: fast-json-stringify: 5.16.1 find-my-way: 8.2.0 light-my-request: 5.13.0 - pino: 9.3.2 + pino: 9.3.1 process-warning: 3.0.0 proxy-addr: 2.0.7 rfdc: 1.4.1 @@ -14551,6 +14970,8 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 + flat@5.0.2: {} + flatted@3.3.1: {} for-each@0.3.3: @@ -14562,7 +14983,7 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.92.1(@swc/core@1.7.3)): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.92.1): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -14577,7 +14998,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.3.3 - webpack: 5.92.1(@swc/core@1.7.3) + webpack: 5.92.1 form-data@4.0.0: dependencies: @@ -14596,12 +15017,11 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.3.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.3.6(react-dom@18.3.1)(react@18.3.1): dependencies: - tslib: 2.6.3 - optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + tslib: 2.6.3 fresh@0.5.2: {} @@ -14644,9 +15064,9 @@ snapshots: functions-have-names@1.2.3: {} - geist@1.3.1(next@13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + geist@1.3.1(next@13.5.6): dependencies: - next: 13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 13.5.6(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) generic-pool@3.9.0: {} @@ -14691,7 +15111,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.6: + get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -14734,6 +15154,15 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 + glob@11.0.0: + dependencies: + foreground-child: 3.2.1 + jackspeak: 4.0.1 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + glob@7.1.7: dependencies: fs.realpath: 1.0.0 @@ -14743,14 +15172,22 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@7.2.3: + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 5.1.6 once: 1.4.0 - path-is-absolute: 1.0.1 glob@9.3.5: dependencies: @@ -14831,7 +15268,7 @@ snapshots: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.19.1 + uglify-js: 3.19.0 has-bigints@1.0.2: {} @@ -14914,6 +15351,8 @@ snapshots: dependencies: '@types/hast': 3.0.4 + he@1.2.0: {} + hexoid@1.0.0: {} highlight.js@10.7.3: {} @@ -14947,7 +15386,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -14959,14 +15398,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -14976,7 +15415,7 @@ snapshots: human-signals@7.0.0: {} - husky@9.1.4: {} + husky@9.0.11: {} iconv-lite@0.4.24: dependencies: @@ -14997,12 +15436,12 @@ snapshots: import-from-esm@1.3.4: dependencies: - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) import-meta-resolve: 4.1.0 transitivePeerDependencies: - supports-color - import-local@3.2.0: + import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 @@ -15030,7 +15469,7 @@ snapshots: inline-style-parser@0.2.3: {} - input-otp@1.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + input-otp@1.2.4(react-dom@18.3.1)(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -15134,7 +15573,7 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.15.0: + is-core-module@2.14.0: dependencies: hasown: 2.0.2 @@ -15186,6 +15625,8 @@ snapshots: is-plain-obj@1.1.0: {} + is-plain-obj@2.1.0: {} + is-plain-obj@4.1.0: {} is-reference@3.0.2: @@ -15260,8 +15701,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.0 + '@babel/core': 7.24.9 + '@babel/parser': 7.24.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -15270,8 +15711,8 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.0 + '@babel/core': 7.24.9 + '@babel/parser': 7.24.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -15286,7 +15727,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -15313,7 +15754,13 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.9.2: + jackspeak@4.0.1: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.1: dependencies: async: 3.2.5 chalk: 4.1.2 @@ -15334,7 +15781,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -15354,35 +15801,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-cli@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)): + jest-cli@29.7.0(@types/node@20.14.11)(ts-node@10.9.2): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + create-jest: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -15392,43 +15820,13 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)): - dependencies: - '@babel/core': 7.25.2 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - 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.7 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.13 - ts-node: 10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)): + jest-config@29.7.0(@types/node@20.14.11)(ts-node@10.9.2): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) + '@types/node': 20.14.11 + babel-jest: 29.7.0(@babel/core@7.24.9) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -15447,9 +15845,7 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.14.13 - ts-node: 10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4) + ts-node: 10.9.2(@types/node@20.14.11)(typescript@5.5.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -15478,7 +15874,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -15488,7 +15884,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.14.13 + '@types/node': 20.14.11 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -15524,20 +15920,20 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock-extended@3.0.7(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)))(typescript@5.3.3): + jest-mock-extended@3.0.7(jest@29.7.0)(typescript@5.5.3): dependencies: - jest: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - ts-essentials: 10.0.1(typescript@5.3.3) - typescript: 5.3.3 + jest: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) + ts-essentials: 10.0.1(typescript@5.5.3) + typescript: 5.5.3 jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: + dependencies: jest-resolve: 29.7.0 jest-regex-util@29.6.3: {} @@ -15568,7 +15964,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -15596,7 +15992,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 chalk: 4.1.2 cjs-module-lexer: 1.3.1 collect-v8-coverage: 1.0.2 @@ -15616,15 +16012,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.2 + '@babel/core': 7.24.9 + '@babel/generator': 7.24.10 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) + '@babel/types': 7.24.9 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.9) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -15642,7 +16038,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -15661,7 +16057,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.13 + '@types/node': 20.14.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -15670,35 +16066,23 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.14.13 + '@types/node': 20.14.11 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)): + jest@29.7.0(@types/node@20.14.11)(ts-node@10.9.2): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -15709,11 +16093,13 @@ snapshots: jju@1.4.0: {} - jotai@2.9.1(@types/react@18.3.3)(react@18.3.1): - optionalDependencies: + jotai@2.9.0(@types/react@18.3.3)(react@18.3.1): + dependencies: '@types/react': 18.3.3 react: 18.3.1 + joycon@3.1.1: {} + js-cookie@3.0.5: {} js-tokens@4.0.0: {} @@ -15819,7 +16205,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libphonenumber-js@1.11.5: {} + libphonenumber-js@1.11.4: {} lie@3.1.1: dependencies: @@ -15844,6 +16230,8 @@ snapshots: pify: 3.0.0 strip-bom: 3.0.0 + load-tsconfig@0.2.5: {} + loader-runner@4.3.0: {} localforage@1.10.0: @@ -15889,6 +16277,8 @@ snapshots: lodash.once@4.1.1: {} + lodash.sortby@4.7.0: {} + lodash.uniqby@4.7.0: {} lodash@4.17.21: {} @@ -15912,6 +16302,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.0.0: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -16270,7 +16662,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -16296,20 +16688,18 @@ snapshots: million@3.1.11: dependencies: - '@babel/core': 7.25.2 - '@babel/types': 7.25.2 + '@babel/core': 7.24.9 + '@babel/types': 7.24.9 '@rollup/pluginutils': 5.1.0 kleur: 4.1.5 - undici: 6.19.5 - unplugin: 1.12.0 + undici: 6.19.2 + unplugin: 1.11.0 transitivePeerDependencies: - rollup - supports-color mime-db@1.52.0: {} - mime-db@1.53.0: {} - mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -16336,6 +16726,10 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -16365,7 +16759,7 @@ snapshots: browser-or-node: 2.1.1 buffer-crc32: 1.0.0 eventemitter3: 5.0.1 - fast-xml-parser: 4.4.1 + fast-xml-parser: 4.4.0 ipaddr.js: 2.2.0 lodash: 4.17.21 mime-types: 2.1.35 @@ -16387,6 +16781,29 @@ snapshots: dependencies: obliterator: 2.0.4 + mocha@10.6.0: + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.6.0 + debug: 4.3.5(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + moment@2.30.1: {} ms@2.0.0: {} @@ -16427,21 +16844,21 @@ snapshots: nerf-dart@1.0.0: {} - next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-themes@0.3.0(react-dom@18.3.1)(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@13.5.6(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@13.5.6(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1): dependencies: '@next/env': 13.5.6 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001645 + caniuse-lite: 1.0.30001642 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.25.2)(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.24.9)(react@18.3.1) watchpack: 2.4.0 optionalDependencies: '@next/swc-darwin-arm64': 13.5.6 @@ -16497,14 +16914,14 @@ snapshots: node-int64@0.4.0: {} - node-releases@2.0.18: {} + node-releases@2.0.17: {} nodemailer@6.9.14: {} nodemon@3.1.4: dependencies: chokidar: 3.6.0 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 @@ -16728,7 +17145,7 @@ snapshots: dependencies: '@babel/code-frame': 7.24.7 index-to-position: 0.1.2 - type-fest: 4.23.0 + type-fest: 4.22.0 parse-ms@4.0.0: {} @@ -16789,6 +17206,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.0 + minipass: 7.1.2 + path-to-regexp@0.1.7: {} path-to-regexp@3.2.0: {} @@ -16826,14 +17248,14 @@ snapshots: pino-std-serializers@7.0.0: {} - pino@9.3.2: + pino@9.3.1: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 1.2.0 pino-std-serializers: 7.0.0 - process-warning: 4.0.0 + process-warning: 3.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 @@ -16859,29 +17281,37 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.40): + postcss-import@15.1.0(postcss@8.4.39): dependencies: - postcss: 8.4.40 + postcss: 8.4.39 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.40): + postcss-js@4.0.1(postcss@8.4.39): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.40 + postcss: 8.4.39 - postcss-load-config@4.0.2(postcss@8.4.40)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)): + postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2): + dependencies: + lilconfig: 3.1.2 + postcss: 8.4.39 + ts-node: 10.9.2(@types/node@20.14.11)(typescript@5.5.3) + yaml: 2.4.5 + + postcss-load-config@6.0.1: dependencies: lilconfig: 3.1.2 - yaml: 2.5.0 - optionalDependencies: - postcss: 8.4.40 - ts-node: 10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4) - postcss-nested@6.2.0(postcss@8.4.40): + postcss-load-config@6.0.1(tsx@4.16.2): dependencies: - postcss: 8.4.40 + lilconfig: 3.1.2 + tsx: 4.16.2 + + postcss-nested@6.0.1(postcss@8.4.39): + dependencies: + postcss: 8.4.39 postcss-selector-parser: 6.1.1 postcss-selector-parser@6.1.1: @@ -16897,7 +17327,7 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 - postcss@8.4.40: + postcss@8.4.39: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -16911,10 +17341,9 @@ snapshots: prettier-plugin-packagejson@2.5.1(prettier@3.3.3): dependencies: + prettier: 3.3.3 sort-package-json: 2.10.0 synckit: 0.9.1 - optionalDependencies: - prettier: 3.3.3 prettier-plugin-tailwindcss@0.5.14(prettier@3.3.3): dependencies: @@ -16928,7 +17357,7 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-ms@9.1.0: + pretty-ms@9.0.0: dependencies: parse-ms: 4.0.0 @@ -16940,8 +17369,6 @@ snapshots: process-warning@3.0.0: {} - process-warning@4.0.0: {} - process@0.11.10: {} progress@2.0.3: {} @@ -17002,6 +17429,11 @@ snapshots: quick-lru@5.1.1: {} + randexp@0.5.3: + dependencies: + drange: 1.1.1 + ret: 0.2.2 + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -17034,42 +17466,38 @@ snapshots: react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): dependencies: + '@types/react': 18.3.3 react: 18.3.1 react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1): dependencies: + '@types/react': 18.3.3 react: 18.3.1 react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) tslib: 2.6.3 use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): dependencies: + '@types/react': 18.3.3 react: 18.3.1 react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) tslib: 2.6.3 use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): dependencies: + '@types/react': 18.3.3 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 react@18.3.1: dependencies: @@ -17083,7 +17511,7 @@ snapshots: dependencies: find-up-simple: 1.0.0 read-pkg: 9.0.1 - type-fest: 4.23.0 + type-fest: 4.22.0 read-pkg-up@7.0.1: dependencies: @@ -17103,7 +17531,7 @@ snapshots: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 parse-json: 8.1.0 - type-fest: 4.23.0 + type-fest: 4.22.0 unicorn-magic: 0.1.0 readable-stream@2.3.8: @@ -17140,14 +17568,14 @@ snapshots: real-require@0.2.0: {} - redis@4.7.0: + redis@4.6.15: dependencies: - '@redis/bloom': 1.2.0(@redis/client@1.6.0) - '@redis/client': 1.6.0 - '@redis/graph': 1.1.1(@redis/client@1.6.0) - '@redis/json': 1.0.7(@redis/client@1.6.0) - '@redis/search': 1.2.0(@redis/client@1.6.0) - '@redis/time-series': 1.1.0(@redis/client@1.6.0) + '@redis/bloom': 1.2.0(@redis/client@1.5.17) + '@redis/client': 1.5.17 + '@redis/graph': 1.1.1(@redis/client@1.5.17) + '@redis/json': 1.0.6(@redis/client@1.5.17) + '@redis/search': 1.1.6(@redis/client@1.5.17) + '@redis/time-series': 1.0.5(@redis/client@1.5.17) reflect-metadata@0.2.2: {} @@ -17159,7 +17587,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 globalthis: 1.0.4 - which-builtin-type: 1.1.4 + which-builtin-type: 1.1.3 regenerate-unicode-properties@10.1.1: dependencies: @@ -17171,7 +17599,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.24.8 regexp-tree@0.1.27: {} @@ -17251,18 +17679,18 @@ snapshots: resolve@1.19.0: dependencies: - is-core-module: 2.15.0 + is-core-module: 2.14.0 path-parse: 1.0.7 resolve@1.22.8: dependencies: - is-core-module: 2.15.0 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.15.0 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -17275,6 +17703,8 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 + ret@0.2.2: {} + ret@0.4.3: {} reusify@1.0.4: {} @@ -17291,6 +17721,28 @@ snapshots: inherits: 2.0.4 optional: true + rollup@4.18.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.1 + '@rollup/rollup-android-arm64': 4.18.1 + '@rollup/rollup-darwin-arm64': 4.18.1 + '@rollup/rollup-darwin-x64': 4.18.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 + '@rollup/rollup-linux-arm-musleabihf': 4.18.1 + '@rollup/rollup-linux-arm64-gnu': 4.18.1 + '@rollup/rollup-linux-arm64-musl': 4.18.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 + '@rollup/rollup-linux-riscv64-gnu': 4.18.1 + '@rollup/rollup-linux-s390x-gnu': 4.18.1 + '@rollup/rollup-linux-x64-gnu': 4.18.1 + '@rollup/rollup-linux-x64-musl': 4.18.1 + '@rollup/rollup-win32-arm64-msvc': 4.18.1 + '@rollup/rollup-win32-ia32-msvc': 4.18.1 + '@rollup/rollup-win32-x64-msvc': 4.18.1 + fsevents: 2.3.3 + run-async@2.4.1: {} run-async@3.0.0: {} @@ -17354,16 +17806,16 @@ snapshots: secure-json-parse@2.7.0: {} - semantic-release@24.0.0(typescript@5.5.4): + semantic-release@24.0.0(typescript@5.5.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.0(semantic-release@24.0.0(typescript@5.5.4)) + '@semantic-release/commit-analyzer': 13.0.0(semantic-release@24.0.0) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 10.1.3(semantic-release@24.0.0(typescript@5.5.4)) - '@semantic-release/npm': 12.0.1(semantic-release@24.0.0(typescript@5.5.4)) - '@semantic-release/release-notes-generator': 14.0.1(semantic-release@24.0.0(typescript@5.5.4)) + '@semantic-release/github': 10.1.0(semantic-release@24.0.0) + '@semantic-release/npm': 12.0.1(semantic-release@24.0.0) + '@semantic-release/release-notes-generator': 14.0.1(semantic-release@24.0.0) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.5.4) - debug: 4.3.6(supports-color@5.5.0) + cosmiconfig: 9.0.0(typescript@5.5.3) + debug: 4.3.5(supports-color@8.1.1) env-ci: 11.0.0 execa: 9.3.0 figures: 6.1.0 @@ -17544,7 +17996,7 @@ snapshots: socket.io-adapter@2.5.5: dependencies: - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) ws: 8.17.1 transitivePeerDependencies: - bufferutil @@ -17554,7 +18006,7 @@ snapshots: socket.io-client@4.7.5: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) engine.io-client: 6.5.4 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -17565,7 +18017,7 @@ snapshots: socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -17574,7 +18026,7 @@ snapshots: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) engine.io: 6.5.5 socket.io-adapter: 2.5.5 socket.io-parser: 4.2.4 @@ -17587,7 +18039,7 @@ snapshots: dependencies: atomic-sleep: 1.0.0 - sonner@1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + sonner@1.5.0(react-dom@18.3.1)(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -17629,6 +18081,10 @@ snapshots: source-map@0.7.4: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + space-separated-tokens@2.0.2: {} spawn-error-forwarder@1.0.0: {} @@ -17801,12 +18257,11 @@ snapshots: dependencies: inline-style-parser: 0.2.3 - styled-jsx@5.1.1(@babel/core@7.25.2)(react@18.3.1): + styled-jsx@5.1.1(@babel/core@7.24.9)(react@18.3.1): dependencies: + '@babel/core': 7.24.9 client-only: 0.0.1 react: 18.3.1 - optionalDependencies: - '@babel/core': 7.25.2 sucrase@3.35.0: dependencies: @@ -17827,7 +18282,7 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.3.6(supports-color@5.5.0) + debug: 4.3.5(supports-color@8.1.1) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.1.2 @@ -17887,11 +18342,11 @@ snapshots: tailwind-merge@2.4.0: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.6): dependencies: - tailwindcss: 3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + tailwindcss: 3.4.6(ts-node@10.9.2) - tailwindcss@3.4.7(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)): + tailwindcss@3.4.6(ts-node@10.9.2): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -17907,11 +18362,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.40 - postcss-import: 15.1.0(postcss@8.4.40) - postcss-js: 4.0.1(postcss@8.4.40) - postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) - postcss-nested: 6.2.0(postcss@8.4.40) + postcss: 8.4.39 + postcss-import: 15.1.0(postcss@8.4.39) + postcss-js: 4.0.1(postcss@8.4.39) + postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2) + postcss-nested: 6.0.1(postcss@8.4.39) postcss-selector-parser: 6.1.1 resolve: 1.22.8 sucrase: 3.35.0 @@ -17929,16 +18384,23 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.3)(webpack@5.92.1(@swc/core@1.7.3)): + terser-webpack-plugin@5.3.10(webpack@5.92.1): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.3 - webpack: 5.92.1(@swc/core@1.7.3) - optionalDependencies: - '@swc/core': 1.7.3(@swc/helpers@0.5.2) + webpack: 5.92.1 + + terser-webpack-plugin@5.3.10(webpack@5.93.0): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.3 + webpack: 5.93.0 terser@5.31.3: dependencies: @@ -18009,6 +18471,10 @@ snapshots: tr46@0.0.3: {} + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + traverse@0.6.8: {} tree-kill@1.2.2: {} @@ -18025,109 +18491,63 @@ snapshots: dependencies: typescript: 4.9.5 - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@1.3.0(typescript@5.5.3): dependencies: - typescript: 5.5.4 + typescript: 5.5.3 - ts-essentials@10.0.1(typescript@5.3.3): - optionalDependencies: - typescript: 5.3.3 + ts-essentials@10.0.1(typescript@5.5.3): + dependencies: + typescript: 5.5.3 ts-interface-checker@0.1.13: {} - ts-jest@29.2.3(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)))(typescript@5.3.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.3 - typescript: 5.3.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.25.2 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) - - ts-jest@29.2.3(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)))(typescript@5.5.4): + ts-jest@29.2.2(@babel/core@7.24.9)(jest@29.7.0)(typescript@5.5.3): dependencies: + '@babel/core': 7.24.9 bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.13)(ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4)) + jest: 29.7.0(@types/node@20.14.11)(ts-node@10.9.2) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.3 - typescript: 5.5.4 + typescript: 5.5.3 yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.25.2 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) - ts-loader@9.5.1(typescript@5.3.3)(webpack@5.92.1(@swc/core@1.7.3)): + ts-loader@9.5.1(typescript@5.5.3)(webpack@5.93.0): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.17.0 micromatch: 4.0.7 semver: 7.6.3 source-map: 0.7.4 - typescript: 5.3.3 - webpack: 5.92.1(@swc/core@1.7.3) - - ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.3.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.14.13 - acorn: 8.12.1 - acorn-walk: 8.3.3 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.3.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.7.3(@swc/helpers@0.5.2) - optional: true + typescript: 5.5.3 + webpack: 5.93.0 - ts-node@10.9.2(@swc/core@1.7.3)(@types/node@20.14.13)(typescript@5.5.4): + ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.14.13 + '@types/node': 20.14.11 acorn: 8.12.1 acorn-walk: 8.3.3 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.4 + typescript: 5.5.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.7.3(@swc/helpers@0.5.2) tsconfig-paths-webpack-plugin@4.1.0: dependencies: chalk: 4.1.2 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.17.0 tsconfig-paths: 4.2.0 tsconfig-paths@3.15.0: @@ -18147,11 +18567,67 @@ snapshots: tslib@2.6.3: {} + tsup@8.1.2(@swc/core@1.6.13)(typescript@5.5.3): + dependencies: + '@swc/core': 1.6.13 + bundle-require: 5.0.0(esbuild@0.23.0) + cac: 6.7.14 + chokidar: 3.6.0 + consola: 3.2.3 + debug: 4.3.5(supports-color@5.5.0) + esbuild: 0.23.0 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 6.0.1 + resolve-from: 5.0.0 + rollup: 4.18.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + typescript: 5.5.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.1.2(tsx@4.16.2)(typescript@5.5.3): + dependencies: + bundle-require: 5.0.0(esbuild@0.23.0) + cac: 6.7.14 + chokidar: 3.6.0 + consola: 3.2.3 + debug: 4.3.5(supports-color@8.1.1) + esbuild: 0.23.0 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 6.0.1(tsx@4.16.2) + resolve-from: 5.0.0 + rollup: 4.18.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + typescript: 5.5.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tsutils@3.21.0(typescript@4.9.5): dependencies: tslib: 1.14.1 typescript: 4.9.5 + tsx@4.16.2: + dependencies: + esbuild: 0.21.5 + get-tsconfig: 4.7.5 + optionalDependencies: + fsevents: 2.3.3 + turbo-darwin-64@1.13.4: optional: true @@ -18197,7 +18673,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.23.0: {} + type-fest@4.22.0: {} type-is@1.6.18: dependencies: @@ -18242,9 +18718,9 @@ snapshots: typescript@5.3.3: {} - typescript@5.5.4: {} + typescript@5.5.3: {} - uglify-js@3.19.1: + uglify-js@3.19.0: optional: true uid2@0.0.4: {} @@ -18266,7 +18742,7 @@ snapshots: undici-types@5.26.5: {} - undici@6.19.5: {} + undici@6.19.2: {} unicode-canonical-property-names-ecmascript@2.0.0: {} @@ -18342,7 +18818,7 @@ snapshots: webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 - unplugin@1.12.0: + unplugin@1.11.0: dependencies: acorn: 8.12.1 chokidar: 3.6.0 @@ -18363,18 +18839,16 @@ snapshots: use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): dependencies: + '@types/react': 18.3.3 react: 18.3.1 tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: + '@types/react': 18.3.3 detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 util-deprecate@1.0.2: {} @@ -18446,6 +18920,8 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} + webpack-node-externals@3.0.0: {} webpack-sources@3.2.3: {} @@ -18454,7 +18930,38 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.92.1(@swc/core@1.7.3): + webpack@5.92.1: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.0 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.92.1) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.93.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -18465,7 +18972,7 @@ snapshots: acorn-import-attributes: 1.9.5(acorn@8.12.1) browserslist: 4.23.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.17.0 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -18477,7 +18984,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.3)(webpack@5.92.1(@swc/core@1.7.3)) + terser-webpack-plugin: 5.3.10(webpack@5.93.0) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -18490,6 +18997,12 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -18498,7 +19011,7 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-builtin-type@1.1.4: + which-builtin-type@1.1.3: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -18540,6 +19053,8 @@ snapshots: wordwrap@1.0.0: {} + workerpool@6.5.1: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -18588,12 +19103,19 @@ snapshots: yallist@4.0.0: {} - yaml@2.5.0: {} + yaml@2.4.5: {} yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + yargs@16.2.0: dependencies: cliui: 7.0.4