diff --git a/.github/workflows/deploy.staging.yml b/.github/workflows/deploy.staging.yml index 545c61c..87296ba 100644 --- a/.github/workflows/deploy.staging.yml +++ b/.github/workflows/deploy.staging.yml @@ -4,6 +4,7 @@ on: push: branches: - ORAKEI-Staging + - ORAKEI-Fly-Volume jobs: # remove these tests in production - Anton test-vars: @@ -27,28 +28,29 @@ jobs: # remove these tests in production - Anton run: echo "Notion Homepage is ${{ secrets.NOTION_PROJECTS_ID}}" deploy-web: - name: Deploy Web - runs-on: ubuntu-latest - environment: Notion - env: - # This is probably not needed I just have it here for testing - Anton - FLY_API_TOKEN: ${{ secrets.FLY_STAGING_API_TOKEN }} - ANTON: ${{ secrets.ANTON }} - AntonVar: ${{ vars.ANTONVAR }} - NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} - NOTION_MEMBERS_ID: ${{ secrets.NOTION_MEMBERS_ID }} - NOTION_HOMEPAGE_ID: ${{ secrets.NOTION_HOMEPAGE_ID}} - NOTION_TEAMS_ID: ${{ secrets.NOTION_TEAMS_ID }} - WEBFORMS_TOKEN: ${{ secrets.WEBFORMS_TOKEN }} - NOTION_PROJECTS_ID: ${{ secrets.NOTION_PROJECTS_ID}} - NOTION_REFRESH_ID: ${{ secrets.NOTION_REFRESH_ID }} - steps: - - - name: actions checkout v3 - uses: actions/checkout@v3 - - - name: setup flyctl - uses: superfly/flyctl-actions/setup-flyctl@master + name: Deploy Web + runs-on: ubuntu-latest + environment: Notion + env: + FLY_API_TOKEN: ${{ secrets.FLY_STAGING_API_TOKEN }} + ANTON: ${{ secrets.ANTON }} + AntonVar: ${{ vars.ANTONVAR }} + NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} + NOTION_MEMBERS_ID: ${{ secrets.NOTION_MEMBERS_ID }} + NOTION_HOMEPAGE_ID: ${{ secrets.NOTION_HOMEPAGE_ID }} + NOTION_TEAMS_ID: ${{ secrets.NOTION_TEAMS_ID }} + WEBFORMS_TOKEN: ${{ secrets.WEBFORMS_TOKEN }} + NOTION_PROJECTS_ID: ${{ secrets.NOTION_PROJECTS_ID }} + NOTION_REFRESH_ID: ${{ secrets.NOTION_REFRESH_ID }} + DATABASE_URL: ${{ secrets.DATABASE_URL }} + DIRECT_URL: ${{ secrets.DIRECT_URL }} + SERVICE_KEY: ${{ secrets.SERVICE_KEY }} + SUPABASE_URL: ${{ secrets.SUPABASE_URL }} + steps: + - name: actions checkout v3 + uses: actions/checkout@v3 + - name: setup flyctl + uses: superfly/flyctl-actions/setup-flyctl@master - - name: Fly deploy - run: flyctl deploy --build-arg ANTON=${{ secrets.ANTON }} --build-arg WEBFORMS_TOKEN=${{ secrets.WEBFORMS_TOKEN }} --build-arg NOTION_MEMBERS_ID=${{ secrets.NOTION_MEMBERS_ID }} --build-arg NOTION_TOKEN=${{ secrets.NOTION_TOKEN }} --build-arg NOTION_PROJECTS_ID=${{ secrets.NOTION_PROJECTS_ID }} --build-arg NOTION_TEAMS_ID=${{ secrets.NOTION_TEAMS_ID}} --build-arg NOTION_HOMEPAGE_ID=${{ secrets.NOTION_HOMEPAGE_ID}} --build-arg NOTION_REFRESH_ID=${{ secrets.NOTION_REFRESH_ID}} --remote-only --config fly.staging.toml \ No newline at end of file + - name: Fly deploy + run: flyctl deploy --build-arg ANTON=${{ secrets.ANTON }} --build-arg WEBFORMS_TOKEN=${{ secrets.WEBFORMS_TOKEN }} --build-arg NOTION_MEMBERS_ID=${{ secrets.NOTION_MEMBERS_ID }} --build-arg NOTION_TOKEN=${{ secrets.NOTION_TOKEN }} --build-arg NOTION_PROJECTS_ID=${{ secrets.NOTION_PROJECTS_ID }} --build-arg NOTION_TEAMS_ID=${{ secrets.NOTION_TEAMS_ID }} --build-arg NOTION_HOMEPAGE_ID=${{ secrets.NOTION_HOMEPAGE_ID }} --build-arg NOTION_REFRESH_ID=${{ secrets.NOTION_REFRESH_ID }} --build-arg DATABASE_URL=${{ secrets.DATABASE_URL }} --build-arg DIRECT_URL=${{ secrets.DIRECT_URL }} --build-arg SUPABASE_URL=${{ secrets.SUPABASE_URL }} --build-arg SERVICE_KEY=${{ secrets.SERVICE_KEY }} --remote-only --config fly.staging.toml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 0107ccd..9412f19 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,10 @@ ARG NOTION_PROJECTS_ID ARG NOTION_TEAMS_ID ARG NOTION_HOMEPAGE_ID ARG NOTION_REFRESH_ID - +ARG DATABASE_URL +ARG DIRECT_URL +ARG SUPABASE_URL +ARG SERVICE_KEY # Set build-time environment variables ENV ANTON=${ANTON} @@ -34,36 +37,47 @@ ENV NOTION_PROJECTS_ID=${NOTION_PROJECTS_ID} ENV NOTION_TEAMS_ID=${NOTION_TEAMS_ID} ENV NOTION_HOMEPAGE_ID=${NOTION_HOMEPAGE_ID} ENV NOTION_REFRESH_ID=${NOTION_REFRESH_ID} - - +ENV DATABASE_URL=${DATABASE_URL} +ENV DIRECT_URL=${DIRECT_URL} +ENV SUPABASE_URL=${SUPABASE_URL} +ENV SERVICE_KEY=${SERVICE_KEY} # Throw-away build stage to reduce size of final image FROM base as build -# Install packages needed to build node modules +# Install packages needed to build node modules and for Prisma (including OpenSSL) RUN apt-get update -qq && \ - apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3 + apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3 openssl # Install node modules -COPY --link package.json yarn.lock ./ +COPY --link package.json yarn.lock ./ RUN yarn install --frozen-lockfile --production=false # Copy application code COPY --link . . +# Generate Prisma client and run migrations +RUN npx prisma generate && \ + npx prisma migrate deploy && \ + npx prisma migrate status + # Build application RUN yarn run build -# Remove development dependencies +# Remove development dependencies to keep the final image small RUN yarn install --production=true # Final stage for app image FROM base +# Install OpenSSL in the final image (since Prisma needs it to run) +RUN apt-get update -qq && apt-get install --no-install-recommends -y openssl + # Copy built application COPY --from=build /app/dist /app/dist + # Copy node modules COPY --from=build /app/node_modules /app/node_modules # Start the server by default, this can be overwritten at runtime -CMD [ "node", "/app/dist/server/entry.mjs" ] \ No newline at end of file +CMD [ "node", "/app/dist/server/entry.mjs" ] diff --git a/README.md b/README.md index e4b3746..d5bacc3 100644 --- a/README.md +++ b/README.md @@ -45,15 +45,18 @@ All commands are run from the root of the project, from a terminal: | `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | | `npm run astro -- --help` | Get help using the Astro CLI | +## Contributors - Team Houston + +| Member | Photo | +| :------------------------ | :----------------------------------------------- | +| Chris Valenzuela | Placeholder | +| Yash Kumar | Placeholder | +| Eleanor Crellin | Placeholder | +| Becky Cheng | Placeholder | +| Emmanuel Araba | Placeholder | +| Anna Lin | Placeholder | +| Kimberley Zhu | Placeholder | +| Owen Li | Placeholder | +| Anton Garay | Placeholder | +| Andrew Qiu | Placeholder | -Houston -Chris Valenzuela -Yash Kumar -Eleanor Crellin -Becky Cheng -Emmanuel Araba -Anna Lin -Kimberley Zhu -Owen Li -Anton Garay -Andrew Qiu diff --git a/package-lock.json b/package-lock.json index 5e32835..c6be3a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,18 +8,22 @@ "name": "ssr-template", "version": "0.0.1", "dependencies": { - "@astrojs/check": "^0.5.5", - "@astrojs/node": "^8.2.0", - "@astrojs/react": "^3.6.0", - "@astrojs/tailwind": "^5.1.0", + "@astrojs/check": "^0.9.4", + "@astrojs/node": "^8.3.4", + "@astrojs/react": "^3.6.2", + "@astrojs/tailwind": "^5.1.2", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", + "@headlessui/react": "^2.1.8", + "@heroicons/react": "^2.1.5", "@mui/icons-material": "^5.16.4", "@mui/material": "^5.16.4", "@notionhq/client": "^2.2.15", + "@prisma/client": "^5.20.0", + "@supabase/supabase-js": "^2.45.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "astro": "^4.15.7", + "astro": "^4.16.2", "axios": "^1.7.7", "dotenv": "^16.4.5", "notion-client": "^6.16.0", @@ -27,7 +31,6 @@ "react-dom": "^18.3.1", "react-notion-x": "^6.16.0", "sharp": "^0.33.5", - "tailwindcss": "^3.4.1", "typescript": "^5.3.3", "vitest": "^1.4.0", "yarn": "^1.22.22" @@ -35,13 +38,15 @@ "devDependencies": { "@flydotio/dockerfile": "^0.5.2", "@types/bcrypt": "^5.0.2", - "@types/node": "^20.11.30" + "@types/node": "^20.11.30", + "prisma": "^5.20.0" } }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "peer": true, "engines": { "node": ">=10" }, @@ -62,13 +67,13 @@ } }, "node_modules/@astrojs/check": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.5.5.tgz", - "integrity": "sha512-05LjyUB14Cv2mkLNqY4r2igI2eu0bq/HcKCfFNIoBPLyNW7VUDr9tciD9VJXXT3s0e6JHneIs6bQW5ipjmaRcw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.4.tgz", + "integrity": "sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==", + "license": "MIT", "dependencies": { - "@astrojs/language-server": "^2.7.5", - "chokidar": "^3.5.3", - "fast-glob": "^3.3.1", + "@astrojs/language-server": "^2.15.0", + "chokidar": "^4.0.1", "kleur": "^4.1.5", "yargs": "^17.7.2" }, @@ -79,38 +84,67 @@ "typescript": "^5.0.0" } }, + "node_modules/@astrojs/check/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@astrojs/check/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@astrojs/compiler": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.3.tgz", - "integrity": "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==", - "license": "MIT" + "integrity": "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==" }, "node_modules/@astrojs/internal-helpers": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.1.tgz", - "integrity": "sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==", - "license": "MIT" + "integrity": "sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==" }, "node_modules/@astrojs/language-server": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.7.5.tgz", - "integrity": "sha512-iMfZ3UaqTgIL+z/eUDOppRa1bGUAteWRihbWq5mGAgvr/hu384ZXUKJcqV3BBux0MBsRXwjxzrC2dJu9IpAaoA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.15.0.tgz", + "integrity": "sha512-wJHSjGApm5X8Rg1GvkevoatZBfvaFizY4kCPvuSYgs3jGCobuY3KstJGKC1yNLsRJlDweHruP+J54iKn9vEKoA==", + "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.4.0", + "@astrojs/compiler": "^2.10.3", + "@astrojs/yaml2ts": "^0.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", - "@volar/kit": "~2.0.4", - "@volar/language-core": "~2.0.4", - "@volar/language-server": "~2.0.4", - "@volar/language-service": "~2.0.4", - "@volar/typescript": "~2.0.4", + "@volar/kit": "~2.4.5", + "@volar/language-core": "~2.4.5", + "@volar/language-server": "~2.4.5", + "@volar/language-service": "~2.4.5", "fast-glob": "^3.2.12", - "volar-service-css": "0.0.30", - "volar-service-emmet": "0.0.30", - "volar-service-html": "0.0.30", - "volar-service-prettier": "0.0.30", - "volar-service-typescript": "0.0.30", - "volar-service-typescript-twoslash-queries": "0.0.30", - "vscode-html-languageservice": "^5.1.2", + "muggle-string": "^0.4.1", + "volar-service-css": "0.0.61", + "volar-service-emmet": "0.0.61", + "volar-service-html": "0.0.61", + "volar-service-prettier": "0.0.61", + "volar-service-typescript": "0.0.61", + "volar-service-typescript-twoslash-queries": "0.0.61", + "volar-service-yaml": "0.0.61", + "vscode-html-languageservice": "^5.2.0", "vscode-uri": "^3.0.8" }, "bin": { @@ -130,38 +164,38 @@ } }, "node_modules/@astrojs/markdown-remark": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.2.0.tgz", - "integrity": "sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.3.0.tgz", + "integrity": "sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg==", "license": "MIT", "dependencies": { "@astrojs/prism": "3.1.0", "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.1", + "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.0", + "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.0", "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.0", + "remark-rehype": "^11.1.1", "remark-smartypants": "^3.0.2", - "shiki": "^1.10.3", + "shiki": "^1.22.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.2" + "vfile": "^6.0.3" } }, "node_modules/@astrojs/node": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-8.3.3.tgz", - "integrity": "sha512-idrKhnnPSi0ABV+PCQsRQqVNwpOvVDF/+fkwcIiE8sr9J8EMvW9g/oyAt8T4X2OBJ8FUzYPL8klfCdG7r0eB5g==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-8.3.4.tgz", + "integrity": "sha512-xzQs39goN7xh9np9rypGmbgZj3AmmjNxEMj9ZWz5aBERlqqFF3n8A/w/uaJeZ/bkHS60l1BXVS0tgsQt9MFqBA==", "license": "MIT", "dependencies": { - "send": "^0.18.0", + "send": "^0.19.0", "server-destroy": "^1.0.1" }, "peerDependencies": { @@ -184,6 +218,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-3.6.2.tgz", "integrity": "sha512-fK29lYI7zK/KG4ZBy956x4dmauZcZ18osFkuyGa8r3gmmCQa2NZ9XNu9WaVYEUm0j89f4Gii4tbxLoyM8nk2MA==", + "license": "MIT", "dependencies": { "@vitejs/plugin-react": "^4.3.1", "ultrahtml": "^1.5.3" @@ -199,16 +234,17 @@ } }, "node_modules/@astrojs/tailwind": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.0.tgz", - "integrity": "sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.2.tgz", + "integrity": "sha512-IvOF0W/dtHElcXvhrPR35nHmhyV3cfz1EzPitMGtU7sYy9Hci3BNK1To6FWmVuuNKPxza1IgCGetSynJZL7fOg==", + "license": "MIT", "dependencies": { - "autoprefixer": "^10.4.15", - "postcss": "^8.4.28", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", "postcss-load-config": "^4.0.2" }, "peerDependencies": { - "astro": "^3.0.0 || ^4.0.0", + "astro": "^3.0.0 || ^4.0.0 || ^5.0.0-beta.0", "tailwindcss": "^3.0.24" } }, @@ -216,7 +252,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.1.0.tgz", "integrity": "sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==", - "license": "MIT", "dependencies": { "ci-info": "^4.0.0", "debug": "^4.3.4", @@ -230,12 +265,21 @@ "node": "^18.17.1 || ^20.3.0 || >=21.0.0" } }, + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.1.tgz", + "integrity": "sha512-CBaNwDQJz20E5WxzQh4thLVfhB3JEEGz72wRA+oJp6fQR37QLAqXZJU0mHC+yqMOQ6oj0GfRPJrz6hjf+zm6zA==", + "license": "MIT", + "dependencies": { + "yaml": "^2.5.0" + } + }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/highlight": "^7.25.7", "picocolors": "^1.0.0" }, "engines": { @@ -243,28 +287,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", + "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -280,39 +324,38 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", "dependencies": { - "@babel/types": "^7.25.6", + "@babel/types": "^7.25.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "license": "MIT", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -321,26 +364,26 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -350,67 +393,67 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -465,11 +508,11 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", "dependencies": { - "@babel/types": "^7.25.6" + "@babel/types": "^7.25.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -479,12 +522,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "license": "MIT", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", + "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -494,16 +536,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", - "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", - "license": "MIT", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", + "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", "dependencies": { - "@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/types": "^7.25.2" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -552,28 +593,28 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -582,12 +623,12 @@ } }, "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -598,6 +639,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "license": "MIT", "dependencies": { "@emmetio/scanner": "^1.0.4" } @@ -606,14 +648,47 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "license": "MIT", "dependencies": { "@emmetio/scanner": "^1.0.4" } }, + "node_modules/@emmetio/css-parser": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.0.tgz", + "integrity": "sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==", + "license": "MIT", + "dependencies": { + "@emmetio/stream-reader": "^2.2.0", + "@emmetio/stream-reader-utils": "^0.1.0" + } + }, + "node_modules/@emmetio/html-matcher": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz", + "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==", + "license": "ISC", + "dependencies": { + "@emmetio/scanner": "^1.0.0" + } + }, "node_modules/@emmetio/scanner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", - "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==" + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==", + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz", + "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==", + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz", + "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==", + "license": "MIT" }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", @@ -764,163 +839,568 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, - "node_modules/@esbuild/win32-x64": { + "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ - "x64" + "ppc64" ], - "license": "MIT", "optional": true, "os": [ - "win32" + "aix" ], "engines": { "node": ">=12" } }, - "node_modules/@fisch0920/medium-zoom": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@fisch0920/medium-zoom/-/medium-zoom-1.0.7.tgz", - "integrity": "sha512-hPUrgVM/QvsZdZzDTPyL1C1mOtEw03RqTLmK7ZlJ8S/64u4O4O5BvPvjB/9kyLtE6iVaS9UDRAMSwmM9uh2JIw==" + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@flydotio/dockerfile": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@flydotio/dockerfile/-/dockerfile-0.5.2.tgz", - "integrity": "sha512-2IQ32c6Eeag1gUD35wNLfdJw7CK1HanwESQKBkHdVjsT1eakMFgP/9QJ7a88QkfPBmzQFU2yNci/bxQZBpAucw==", - "dev": true, - "dependencies": { - "chalk": "^5.3.0", - "diff": "^5.1.0", - "ejs": "^3.1.9", - "shell-quote": "^1.8.1", - "yargs": "^17.7.2" - }, - "bin": { - "dockerfile": "index.js" - }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=16.0.0" + "node": ">=12" } }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "win32" + "android" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": ">=12" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fisch0920/medium-zoom": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@fisch0920/medium-zoom/-/medium-zoom-1.0.7.tgz", + "integrity": "sha512-hPUrgVM/QvsZdZzDTPyL1C1mOtEw03RqTLmK7ZlJ8S/64u4O4O5BvPvjB/9kyLtE6iVaS9UDRAMSwmM9uh2JIw==" + }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", + "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.24", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.24.tgz", + "integrity": "sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + }, + "node_modules/@flydotio/dockerfile": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@flydotio/dockerfile/-/dockerfile-0.5.2.tgz", + "integrity": "sha512-2IQ32c6Eeag1gUD35wNLfdJw7CK1HanwESQKBkHdVjsT1eakMFgP/9QJ7a88QkfPBmzQFU2yNci/bxQZBpAucw==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "diff": "^5.1.0", + "ejs": "^3.1.9", + "shell-quote": "^1.8.1", + "yargs": "^17.7.2" + }, + "bin": { + "dockerfile": "index.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@headlessui/react": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.1.9.tgz", + "integrity": "sha512-ckWw7vlKtnoa1fL2X0fx1a3t/Li9MIKDVXn3SgG65YlxvDAsNrY39PPCxVM7sQRA7go2fJsuHSSauKFNaJHH7A==", + "dependencies": { + "@floating-ui/react": "^0.26.16", + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@tanstack/react-virtual": "^3.8.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^18", + "react-dom": "^18" + } + }, + "node_modules/@heroicons/react": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.5.tgz", + "integrity": "sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==", + "peerDependencies": { + "react": ">= 16" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "peer": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "peer": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "peer": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } @@ -1208,16 +1688,16 @@ } }, "node_modules/@oslojs/encoding": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-0.4.1.tgz", - "integrity": "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q==", - "license": "MIT" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "optional": true, + "peer": true, "engines": { "node": ">=14" } @@ -1231,11 +1711,150 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@prisma/client": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.20.0.tgz", + "integrity": "sha512-CLv55ZuMuUawMsxoqxGtLT3bEZoa2W8L3Qnp6rDIFWy+ZBrUcOFKdoeGPSnbBqxc3SkdxJrF+D1veN/WNynZYA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.20.0.tgz", + "integrity": "sha512-oCx79MJ4HSujokA8S1g0xgZUGybD4SyIOydoHMngFYiwEwYDQ5tBQkK5XoEHuwOYDKUOKRn/J0MEymckc4IgsQ==", + "devOptional": true + }, + "node_modules/@prisma/engines": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.20.0.tgz", + "integrity": "sha512-DtqkP+hcZvPEbj8t8dK5df2b7d3B8GNauKqaddRRqQBBlgkbdhJkxhoJTrOowlS3vaRt2iMCkU0+CSNn0KhqAQ==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.20.0", + "@prisma/engines-version": "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284", + "@prisma/fetch-engine": "5.20.0", + "@prisma/get-platform": "5.20.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284.tgz", + "integrity": "sha512-Lg8AS5lpi0auZe2Mn4gjuCg081UZf88k3cn0RCwHgR+6cyHHpttPZBElJTHf83ZGsRNAmVCZCfUGA57WB4u4JA==", + "devOptional": true + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.20.0.tgz", + "integrity": "sha512-JVcaPXC940wOGpCOwuqQRTz6I9SaBK0c1BAyC1pcz9xBi+dzFgUu3G/p9GV1FhFs9OKpfSpIhQfUJE9y00zhqw==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.20.0", + "@prisma/engines-version": "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284", + "@prisma/get-platform": "5.20.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.20.0.tgz", + "integrity": "sha512-8/+CehTZZNzJlvuryRgc77hZCWrUDYd/PmlZ7p2yNXtmf2Una4BWnTbak3us6WVdqoz5wmptk6IhsXdG2v5fmA==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.20.0" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.3.tgz", + "integrity": "sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw==", + "dependencies": { + "@react-aria/interactions": "^3.22.3", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.22.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.3.tgz", + "integrity": "sha512-RRUb/aG+P0IKTIWikY/SylB6bIbLZeztnZY2vbe7RAG5MgVaCgn5HQ45SI15GlTmhsFG8CnF6slJsUFJiNHpbQ==", + "dependencies": { + "@react-aria/ssr": "^3.9.6", + "@react-aria/utils": "^3.25.3", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.6.tgz", + "integrity": "sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.25.3", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.3.tgz", + "integrity": "sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==", + "dependencies": { + "@react-aria/ssr": "^3.9.6", + "@react-stately/utils": "^3.10.4", + "@react-types/shared": "^3.25.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.4.tgz", + "integrity": "sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@react-types/shared": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.25.0.tgz", + "integrity": "sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "license": "MIT", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -1256,71 +1875,249 @@ "node_modules/@rollup/pluginutils/node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", - "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@shikijs/core": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.7.tgz", - "integrity": "sha512-ZnIDxFu/yvje3Q8owSHaEHd+bu/jdWhHAaJ17ggjXofHx5rc4bhpCSW+OjC6smUBi5s5dd023jWtZ1gzMu/yrw==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.0.tgz", + "integrity": "sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.17.7", - "@shikijs/engine-oniguruma": "1.17.7", - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/engine-javascript": "1.22.0", + "@shikijs/engine-oniguruma": "1.22.0", + "@shikijs/types": "1.22.0", + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.2" + "hast-util-to-html": "^9.0.3" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.7.tgz", - "integrity": "sha512-wwSf7lKPsm+hiYQdX+1WfOXujtnUG6fnN4rCmExxa4vo+OTmvZ9B1eKauilvol/LHUPrQgW12G3gzem7pY5ckw==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.0.tgz", + "integrity": "sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/types": "1.22.0", + "@shikijs/vscode-textmate": "^9.3.0", "oniguruma-to-js": "0.4.3" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.7.tgz", - "integrity": "sha512-pvSYGnVeEIconU28NEzBXqSQC/GILbuNbAHwMoSfdTBrobKAsV1vq2K4cAgiaW1TJceLV9QMGGh18hi7cCzbVQ==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.0.tgz", + "integrity": "sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2" + "@shikijs/types": "1.22.0", + "@shikijs/vscode-textmate": "^9.3.0" } }, "node_modules/@shikijs/types": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.7.tgz", - "integrity": "sha512-+qA4UyhWLH2q4EFd+0z4K7GpERDU+c+CN2XYD3sC+zjvAr5iuwD1nToXZMt1YODshjkEGEDV86G7j66bKjqDdg==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.0.tgz", + "integrity": "sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==", "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz", - "integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", + "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", "license": "MIT" }, "node_modules/@sinclair/typebox": { @@ -1339,6 +2136,81 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@supabase/auth-js": { + "version": "2.65.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.65.0.tgz", + "integrity": "sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz", + "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.16.1.tgz", + "integrity": "sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.2.tgz", + "integrity": "sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14", + "@types/phoenix": "^1.5.4", + "@types/ws": "^8.5.10", + "ws": "^8.14.2" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.0.tgz", + "integrity": "sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.45.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.45.4.tgz", + "integrity": "sha512-E5p8/zOLaQ3a462MZnmnz03CrduA5ySH9hZyL03Y+QZLIOO4/Gs8Rdy4ZCKDHsN7x0xdanVEWWFN3pJFQr9/hg==", + "dependencies": { + "@supabase/auth-js": "2.65.0", + "@supabase/functions-js": "2.4.1", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "1.16.1", + "@supabase/realtime-js": "2.10.2", + "@supabase/storage-js": "2.7.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -1350,6 +2222,31 @@ "node": ">=10" } }, + "node_modules/@tanstack/react-virtual": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.10.8.tgz", + "integrity": "sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA==", + "dependencies": { + "@tanstack/virtual-core": "3.10.8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.10.8", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.10.8.tgz", + "integrity": "sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1411,8 +2308,7 @@ "node_modules/@types/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT" + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" }, "node_modules/@types/debug": { "version": "4.1.12", @@ -1424,9 +2320,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" }, "node_modules/@types/hast": { "version": "3.0.4", @@ -1460,9 +2356,9 @@ } }, "node_modules/@types/mdast": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", - "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "dependencies": { "@types/unist": "*" } @@ -1504,6 +2400,11 @@ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, + "node_modules/@types/phoenix": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz", + "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==" + }, "node_modules/@types/prop-types": { "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", @@ -1543,9 +2444,17 @@ } }, "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", @@ -1635,12 +2544,13 @@ } }, "node_modules/@volar/kit": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.0.4.tgz", - "integrity": "sha512-USRx/o0jKz7o8+lEKWMxWqbqvC46XFrf3IE6CZBYzRo9kM7RERQLwUYaoT2bOcHt5DQWublpnTgdgHMm37Gysg==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.6.tgz", + "integrity": "sha512-OaMtpmLns6IYD1nOSd0NdG/F5KzJ7Jr4B7TLeb4byPzu+ExuuRVeO56Dn1C7Frnw6bGudUQd90cpQAmxdB+RlQ==", + "license": "MIT", "dependencies": { - "@volar/language-service": "2.0.4", - "@volar/typescript": "2.0.4", + "@volar/language-service": "2.4.6", + "@volar/typescript": "2.4.6", "typesafe-path": "^0.2.2", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" @@ -1650,23 +2560,23 @@ } }, "node_modules/@volar/language-core": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.0.4.tgz", - "integrity": "sha512-VhC8i03P0x9LKGLTBi81xNTNWm40yxQ/Iba8IpH+LFr+Yb7c/D7fF90Cvf31MzPDM4G5rjIOlCfs+eQKPBkwQw==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.6.tgz", + "integrity": "sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==", + "license": "MIT", "dependencies": { - "@volar/source-map": "2.0.4" + "@volar/source-map": "2.4.6" } }, "node_modules/@volar/language-server": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.0.4.tgz", - "integrity": "sha512-VnljhooQjT6RhmvwwJK9+3YYs2ovFmav4IVNHiQgnTMfiOiyABzcghwvJrJrI39rJDI6LNOWF7BYUJq7K07BKQ==", - "dependencies": { - "@volar/language-core": "2.0.4", - "@volar/language-service": "2.0.4", - "@volar/snapshot-document": "2.0.4", - "@volar/typescript": "2.0.4", - "@vscode/l10n": "^0.0.16", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.6.tgz", + "integrity": "sha512-ARIbMXapEUPj9UFbZqWqw/iZ+ZuxUcY+vY212+2uutZVo/jrdzhLPu2TfZd9oB9akX8XXuslinT3051DyHLLRA==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.6", + "@volar/language-service": "2.4.6", + "@volar/typescript": "2.4.6", "path-browserify": "^1.0.1", "request-light": "^0.7.0", "vscode-languageserver": "^9.0.1", @@ -1676,46 +2586,39 @@ } }, "node_modules/@volar/language-service": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.0.4.tgz", - "integrity": "sha512-DoanyU9I9Nl85lUytDl8jgyk+nrUDR5CFNVMrxWXGXclP4WTqBayBgSFAeF1L/5AwP3MywmWoK4GLAEVvl8D+Q==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.6.tgz", + "integrity": "sha512-wNeEVBgBKgpP1MfMYPrgTf1K8nhOGEh3ac0+9n6ECyk2N03+j0pWCpQ2i99mRWT/POvo1PgizDmYFH8S67bZOA==", + "license": "MIT", "dependencies": { - "@volar/language-core": "2.0.4", + "@volar/language-core": "2.4.6", "vscode-languageserver-protocol": "^3.17.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" } }, - "node_modules/@volar/snapshot-document": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@volar/snapshot-document/-/snapshot-document-2.0.4.tgz", - "integrity": "sha512-YzgdmvpdRFxiBFCOVWga67naAtbPtKmPaFtGnmxWx+KXrjGkpUXT/2tzeKn5FLdtoYV+DRTdpMdP/45ArnVwZQ==", - "dependencies": { - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11" - } - }, "node_modules/@volar/source-map": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.0.4.tgz", - "integrity": "sha512-BbxUinEMoJZqrHsSj1aBa0boCBnN3BoXnf7j9IBwjxosxGXOhCvqmH2L9raJemadaKjeVR8ZQLhV7AOhyoHt/Q==", - "dependencies": { - "muggle-string": "^0.4.0" - } + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.6.tgz", + "integrity": "sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==", + "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.0.4.tgz", - "integrity": "sha512-KF7yh7GIo4iWuAQOKf/ONeFHdQA+wFriitW8LtGZB4iOOT6MdlRlYNsRL8do7XxmXvsBKcs4jTMtGn+uZRwlWg==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.6.tgz", + "integrity": "sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==", + "license": "MIT", "dependencies": { - "@volar/language-core": "2.0.4", - "path-browserify": "^1.0.1" + "@volar/language-core": "2.4.6", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" } }, "node_modules/@vscode/emmet-helper": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.2.tgz", - "integrity": "sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==", + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.3.tgz", + "integrity": "sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==", + "license": "MIT", "dependencies": { "emmet": "^2.4.3", "jsonc-parser": "^2.3.0", @@ -1727,12 +2630,14 @@ "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", - "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==" + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "license": "MIT" }, "node_modules/@vscode/l10n": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.16.tgz", - "integrity": "sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==" + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "license": "MIT" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -1901,7 +2806,6 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2034,12 +2938,14 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "peer": true }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2051,7 +2957,8 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "peer": true }, "node_modules/argparse": { "version": "2.0.1", @@ -2059,11 +2966,11 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dependencies": { - "dequal": "^2.0.3" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "engines": { + "node": ">= 0.4" } }, "node_modules/array-iterate": { @@ -2085,42 +2992,41 @@ } }, "node_modules/astro": { - "version": "4.15.7", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.15.7.tgz", - "integrity": "sha512-RGZjGpLcR3jcnXA1+g56i73O77krmqs7VjpoBOfk9UVP8Js5T2YSeUBAyComOUb6vj31wEw1vgRgOEN0MzYc8w==", + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.16.2.tgz", + "integrity": "sha512-Dfkpyt6sA+nv6LnOJr+7bt+gQF5Qh02yqVgyes4c4SvcPScteq1bLX22/z/XW+VU0vlciJOMiM8GWtcDiF6gUQ==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.10.3", "@astrojs/internal-helpers": "0.4.1", - "@astrojs/markdown-remark": "5.2.0", + "@astrojs/markdown-remark": "5.3.0", "@astrojs/telemetry": "3.1.0", - "@babel/core": "^7.25.2", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/types": "^7.25.6", - "@oslojs/encoding": "^0.4.1", - "@rollup/pluginutils": "^5.1.0", + "@babel/core": "^7.25.7", + "@babel/plugin-transform-react-jsx": "^7.25.7", + "@babel/types": "^7.25.7", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.1.2", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", "acorn": "^8.12.1", - "aria-query": "^5.3.0", + "aria-query": "^5.3.2", "axobject-query": "^4.1.0", - "boxen": "7.1.1", + "boxen": "8.0.1", "ci-info": "^4.0.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", - "cookie": "^0.6.0", + "cookie": "^0.7.2", "cssesc": "^3.0.0", "debug": "^4.3.7", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.0.0", + "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", - "dset": "^3.1.3", + "dset": "^3.1.4", "es-module-lexer": "^1.5.4", "esbuild": "^0.21.5", "estree-walker": "^3.0.3", "fast-glob": "^3.3.2", - "fastq": "^1.17.1", "flattie": "^1.1.1", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", @@ -2136,25 +3042,22 @@ "ora": "^8.1.0", "p-limit": "^6.1.0", "p-queue": "^8.0.1", - "path-to-regexp": "6.2.2", "preferred-pm": "^4.0.0", "prompts": "^2.4.2", - "rehype": "^13.0.1", + "rehype": "^13.0.2", "semver": "^7.6.3", - "shiki": "^1.16.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", + "shiki": "^1.22.0", "tinyexec": "^0.3.0", "tsconfck": "^3.1.3", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3", - "vite": "^5.4.3", + "vite": "^5.4.8", "vitefu": "^1.0.2", "which-pm": "^3.0.0", "xxhash-wasm": "^1.0.2", "yargs-parser": "^21.1.1", "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.2", + "zod-to-json-schema": "^3.23.3", "zod-to-ts": "^1.2.0" }, "bin": { @@ -2173,7 +3076,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.1.0.tgz", "integrity": "sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==", - "license": "MIT", "dependencies": { "yocto-queue": "^1.1.1" }, @@ -2188,7 +3090,6 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2208,9 +3109,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/autoprefixer": { - "version": "10.4.17", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", - "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -2225,12 +3126,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.22.2", - "caniuse-lite": "^1.0.30001578", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -2257,7 +3159,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -2307,50 +3208,46 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "peer": true, "engines": { "node": ">=8" } }, "node_modules/boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", "dependencies": { "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/brace-expansion": { @@ -2376,9 +3273,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "funding": [ { "type": "opencollective", @@ -2394,8 +3291,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", "node-releases": "^2.0.18", "update-browserslist-db": "^1.1.0" }, @@ -2479,11 +3376,11 @@ } }, "node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2493,14 +3390,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "peer": true, "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001655", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", - "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", + "version": "1.0.30001667", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", + "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", "funding": [ { "type": "opencollective", @@ -2596,6 +3494,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "peer": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2667,7 +3566,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "license": "MIT", "dependencies": { "restore-cursor": "^5.0.0" }, @@ -2682,7 +3580,6 @@ "version": "2.9.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "license": "MIT", "engines": { "node": ">=6" }, @@ -2858,6 +3755,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "peer": true, "engines": { "node": ">= 6" } @@ -2879,9 +3777,9 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "engines": { "node": ">= 0.6" } @@ -2978,7 +3876,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -3049,6 +3946,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3065,6 +3963,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -3091,10 +3990,9 @@ } }, "node_modules/devalue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", - "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", - "license": "MIT" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" }, "node_modules/devlop": { "version": "1.1.0", @@ -3111,7 +4009,8 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "peer": true }, "node_modules/diff": { "version": "5.2.0", @@ -3158,7 +4057,6 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -3166,12 +4064,14 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "peer": true }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", @@ -3190,14 +4090,21 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", - "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" + "version": "1.5.33", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.33.tgz", + "integrity": "sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==" }, "node_modules/emmet": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.6.tgz", - "integrity": "sha512-dJfbdY/hfeTyf/Ef7Y7ubLYzkBvPQ912wPaeVYpAxvFxkEBf/+hJu4H6vhAvFN6HlxqedlfVn2x1S44FfQ97pg==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", + "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], "dependencies": { "@emmetio/abbreviation": "^2.3.3", "@emmetio/css-abbreviation": "^2.1.8" @@ -3206,8 +4113,7 @@ "node_modules/emoji-regex": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -3218,9 +4124,10 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3281,15 +4188,13 @@ "node_modules/es-module-lexer": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "license": "MIT" + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3333,7 +4238,8 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "5.0.0", @@ -3413,6 +4319,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3504,6 +4411,12 @@ "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" }, + "node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", + "license": "MIT" + }, "node_modules/fastest-stable-stringify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", @@ -3587,7 +4500,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3600,7 +4512,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", - "license": "MIT", "engines": { "node": ">=18" }, @@ -3612,7 +4523,6 @@ "version": "1.2.16", "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", - "license": "Apache-2.0", "dependencies": { "micromatch": "^4.0.2", "pkg-dir": "^4.2.0" @@ -3622,7 +4532,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -3650,6 +4559,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "peer": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -3678,6 +4588,7 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", "engines": { "node": "*" }, @@ -3690,10 +4601,24 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3722,7 +4647,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", - "license": "MIT", "engines": { "node": ">=18" }, @@ -3759,6 +4683,7 @@ "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -3797,6 +4722,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -3805,6 +4731,7 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3906,9 +4833,9 @@ } }, "node_modules/hast-util-from-html": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", - "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", @@ -3967,9 +4894,10 @@ } }, "node_modules/hast-util-raw": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz", - "integrity": "sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", + "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3994,7 +4922,6 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", - "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -4017,6 +4944,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -4116,6 +5044,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -4191,7 +5120,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/inline-style-prefixer": { "version": "7.0.1", @@ -4218,6 +5148,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "peer": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4240,7 +5171,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -4290,7 +5220,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -4308,7 +5237,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -4351,7 +5279,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "license": "MIT", "engines": { "node": ">=18" }, @@ -4374,7 +5301,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -4394,6 +5320,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -4519,6 +5446,7 @@ "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -4545,14 +5473,14 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -4584,7 +5512,8 @@ "node_modules/jsonc-parser": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", - "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==" + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "license": "MIT" }, "node_modules/katex": { "version": "0.15.6", @@ -4653,7 +5582,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.13.0", @@ -4668,7 +5596,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -4677,7 +5604,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4690,7 +5616,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", "engines": { "node": ">=6" } @@ -4736,7 +5661,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -4744,11 +5668,16 @@ "node": ">=8" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "license": "MIT", "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" @@ -4764,7 +5693,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -4821,7 +5749,6 @@ "version": "0.30.11", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -4830,7 +5757,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", - "license": "MIT", "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", @@ -5045,9 +5971,9 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", - "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -5056,7 +5982,8 @@ "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", @@ -5724,6 +6651,18 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -5758,7 +6697,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "license": "MIT", "engines": { "node": ">=18" }, @@ -5793,6 +6731,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "peer": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -5812,7 +6751,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "license": "MIT", "engines": { "node": ">=10" } @@ -5820,18 +6758,19 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/muggle-string": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "license": "MIT" }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "peer": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -5889,7 +6828,6 @@ "version": "0.6.18", "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", - "license": "MIT", "engines": { "node": ">= 10" } @@ -5935,6 +6873,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -5943,6 +6882,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6058,6 +6998,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "peer": true, "engines": { "node": ">= 6" } @@ -6066,6 +7007,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -6111,7 +7053,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.0.tgz", "integrity": "sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==", - "license": "MIT", "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", @@ -6164,7 +7105,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -6176,7 +7116,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6231,7 +7170,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", "engines": { "node": ">=6" } @@ -6296,13 +7234,13 @@ "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6324,6 +7262,7 @@ "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "peer": true, "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -6339,16 +7278,11 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "peer": true, "engines": { "node": "14 || >=16.14" } }, - "node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", - "license": "MIT" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -6386,8 +7320,7 @@ "node_modules/picocolors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "license": "ISC" + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -6404,6 +7337,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6412,6 +7346,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "peer": true, "engines": { "node": ">= 6" } @@ -6420,7 +7355,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -6461,7 +7395,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -6475,6 +7408,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "peer": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -6491,6 +7425,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "peer": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -6543,6 +7478,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "peer": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -6561,6 +7497,7 @@ "version": "6.0.15", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -6578,7 +7515,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.0.0.tgz", "integrity": "sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==", - "license": "MIT", "dependencies": { "find-up-simple": "^1.0.0", "find-yarn-workspace-root2": "1.2.16", @@ -6588,6 +7524,23 @@ "node": ">=18.12" } }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "license": "MIT", + "optional": true, + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -6612,6 +7565,25 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/prisma": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.20.0.tgz", + "integrity": "sha512-6obb3ucKgAnsGS9x9gLOe8qa51XxvJ3vLQtmyf52CTey1Qcez3A6W6ROH5HIz5Q5bW+0VpmZb8WBohieMFGpig==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "5.20.0" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + } + }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", @@ -6656,9 +7628,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/property-information": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz", - "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6729,6 +7701,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6948,6 +7921,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "peer": true, "dependencies": { "pify": "^2.3.0" } @@ -6956,6 +7930,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "peer": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -6969,15 +7944,15 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regex": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz", - "integrity": "sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", + "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", "license": "MIT" }, "node_modules/rehype": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz", - "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", @@ -6990,9 +7965,9 @@ } }, "node_modules/rehype-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", - "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", @@ -7019,9 +7994,9 @@ } }, "node_modules/rehype-stringify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", - "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", @@ -7067,9 +8042,9 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", - "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -7116,7 +8091,8 @@ "node_modules/request-light": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", - "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==" + "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==", + "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", @@ -7126,6 +8102,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", @@ -7175,7 +8160,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "license": "MIT", "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" @@ -7191,7 +8175,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "license": "MIT", "dependencies": { "mimic-function": "^5.0.0" }, @@ -7234,9 +8217,9 @@ } }, "node_modules/retext-smartypants": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.1.1.tgz", - "integrity": "sha512-onsHf34i/GzgElJgtT1K2V+31yEhWs7NJboKNxXJcmVMMPxLpgxZ9iADoMdydd6j/bHic5F/aNq0CGqElEtu2g==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", @@ -7273,12 +8256,11 @@ } }, "node_modules/rollup": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", - "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", - "license": "MIT", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -7288,22 +8270,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.3", - "@rollup/rollup-android-arm64": "4.21.3", - "@rollup/rollup-darwin-arm64": "4.21.3", - "@rollup/rollup-darwin-x64": "4.21.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", - "@rollup/rollup-linux-arm-musleabihf": "4.21.3", - "@rollup/rollup-linux-arm64-gnu": "4.21.3", - "@rollup/rollup-linux-arm64-musl": "4.21.3", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", - "@rollup/rollup-linux-riscv64-gnu": "4.21.3", - "@rollup/rollup-linux-s390x-gnu": "4.21.3", - "@rollup/rollup-linux-x64-gnu": "4.21.3", - "@rollup/rollup-linux-x64-musl": "4.21.3", - "@rollup/rollup-win32-arm64-msvc": "4.21.3", - "@rollup/rollup-win32-ia32-msvc": "4.21.3", - "@rollup/rollup-win32-x64-msvc": "4.21.3", + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", "fsevents": "~2.3.2" } }, @@ -7414,14 +8396,15 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", @@ -7440,6 +8423,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7447,18 +8431,8 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/serialize-javascript": { "version": "6.0.2", @@ -7485,7 +8459,8 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/sharp": { "version": "0.33.5", @@ -7567,16 +8542,16 @@ } }, "node_modules/shiki": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.7.tgz", - "integrity": "sha512-Zf6hNtWhFyF4XP5OOsXkBTEx9JFPiN0TQx4wSe+Vqeuczewgk2vT4IZhF4gka55uelm052BD5BaHavNqUNZd+A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.0.tgz", + "integrity": "sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==", "license": "MIT", "dependencies": { - "@shikijs/core": "1.17.7", - "@shikijs/engine-javascript": "1.17.7", - "@shikijs/engine-oniguruma": "1.17.7", - "@shikijs/types": "1.17.7", - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/core": "1.22.0", + "@shikijs/engine-javascript": "1.22.0", + "@shikijs/engine-oniguruma": "1.22.0", + "@shikijs/types": "1.22.0", + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } }, @@ -7621,7 +8596,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7708,6 +8682,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7721,7 +8696,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", - "license": "MIT", "engines": { "node": ">=18" }, @@ -7733,7 +8707,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -7751,6 +8724,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7764,6 +8738,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true, "engines": { "node": ">=8" } @@ -7771,12 +8746,14 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "peer": true }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7785,9 +8762,9 @@ } }, "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -7816,6 +8793,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7827,6 +8805,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true, "engines": { "node": ">=8" } @@ -7835,7 +8814,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -7884,6 +8862,7 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -7923,10 +8902,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, "node_modules/tailwindcss": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", + "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -7963,6 +8948,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -7974,6 +8960,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "peer": true, "engines": { "node": ">=10" } @@ -8049,6 +9036,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "peer": true, "dependencies": { "any-promise": "^1.0.0" } @@ -8057,6 +9045,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "peer": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -8090,8 +9079,7 @@ "node_modules/tinyexec": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", - "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", - "license": "MIT" + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==" }, "node_modules/tinypool": { "version": "0.8.2", @@ -8138,6 +9126,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -8173,13 +9162,13 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "peer": true }, "node_modules/tsconfck": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", - "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" }, @@ -8209,11 +9198,11 @@ } }, "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "engines": { - "node": ">=12.20" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8222,7 +9211,8 @@ "node_modules/typesafe-path": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", - "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==" + "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==", + "license": "MIT" }, "node_modules/typescript": { "version": "5.3.3", @@ -8237,31 +9227,19 @@ } }, "node_modules/typescript-auto-import-cache": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.2.tgz", - "integrity": "sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.3.tgz", + "integrity": "sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==", + "license": "MIT", "dependencies": { "semver": "^7.3.8" } }, - "node_modules/typescript-auto-import-cache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/typescript-auto-import-cache/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -8269,11 +9247,6 @@ "node": ">=10" } }, - "node_modules/typescript-auto-import-cache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/ufo": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.2.tgz", @@ -8293,7 +9266,6 @@ "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -8471,13 +9443,13 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "peer": true }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" @@ -8488,9 +9460,9 @@ } }, "node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -8514,10 +9486,9 @@ } }, "node_modules/vite": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", - "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", - "license": "MIT", + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", + "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -8597,11 +9568,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.2.tgz", "integrity": "sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==", - "license": "MIT", - "workspaces": [ - "tests/deps/*", - "tests/projects/*" - ], "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, @@ -8676,15 +9642,17 @@ } }, "node_modules/volar-service-css": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.30.tgz", - "integrity": "sha512-jui+1N0HBfjW43tRfhyZp0axhBee4997BRyX4os8xQm/7cjD2KjAuyz92nMIPRt1QDoG4/7uQT28xNhy0TPJTA==", + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.61.tgz", + "integrity": "sha512-Ct9L/w+IB1JU8F4jofcNCGoHy6TF83aiapfZq9A0qYYpq+Kk5dH+ONS+rVZSsuhsunq8UvAuF8Gk6B8IFLfniw==", + "license": "MIT", "dependencies": { - "vscode-css-languageservice": "^6.2.10", + "vscode-css-languageservice": "^6.3.0", + "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.0.1" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8693,15 +9661,18 @@ } }, "node_modules/volar-service-emmet": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.30.tgz", - "integrity": "sha512-HEeIrmqQ/DTfuQDI9ER5+YReXXjE9f7W6MlBmn5biUuPyizVTGfuILN8pJhmYvmPHCA7qHhU7CJqwE9DAh9AJg==", + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.61.tgz", + "integrity": "sha512-iiYqBxjjcekqrRruw4COQHZME6EZYWVbkHjHDbULpml3g8HGJHzpAMkj9tXNCPxf36A+f1oUYjsvZt36qPg4cg==", + "license": "MIT", "dependencies": { - "@vscode/emmet-helper": "^2.9.2", - "volar-service-html": "0.0.30" + "@emmetio/css-parser": "^0.4.0", + "@emmetio/html-matcher": "^1.3.0", + "@vscode/emmet-helper": "^2.9.3", + "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.0.1" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8710,15 +9681,17 @@ } }, "node_modules/volar-service-html": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.30.tgz", - "integrity": "sha512-wW3TEeRTeHv/3mC8Ik6T62SwewMWFungb8ydyEK/2GDHEntBEG/J9wtuh01/J0kYqPerhlT9zhdGB6PGYHAGuA==", + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.61.tgz", + "integrity": "sha512-yFE+YmmgqIL5HI4ORqP++IYb1QaGcv+xBboI0WkCxJJ/M35HZj7f5rbT3eQ24ECLXFbFCFanckwyWJVz5KmN3Q==", + "license": "MIT", "dependencies": { - "vscode-html-languageservice": "^5.1.0", + "vscode-html-languageservice": "^5.3.0", + "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.0.1" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8727,14 +9700,15 @@ } }, "node_modules/volar-service-prettier": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.30.tgz", - "integrity": "sha512-Qdc5Zc0y4hJmJbpIQ52cSDjs0uvVug/e2nuL/XZWPJM6Cr5/3RjjoRVKtDQbKItFYlGk+JH+LSXvwQeD5TXZqg==", + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.61.tgz", + "integrity": "sha512-F612nql5I0IS8HxXemCGvOR2Uxd4XooIwqYVUvk7WSBxP/+xu1jYvE3QJ7EVpl8Ty3S4SxPXYiYTsG3bi+gzIQ==", + "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.0.1", + "@volar/language-service": "~2.4.0", "prettier": "^2.2 || ^3.0" }, "peerDependenciesMeta": { @@ -8747,20 +9721,20 @@ } }, "node_modules/volar-service-typescript": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.30.tgz", - "integrity": "sha512-jA8c0Mhy9rgAsrgtwocK95Smws1M2E0MxlQ/SVo/rmOGH32cX9UGgI0IENWKa3yagp/khfoemOIQDz/KNhI3zg==", + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.61.tgz", + "integrity": "sha512-4kRHxVbW7wFBHZWRU6yWxTgiKETBDIJNwmJUAWeP0mHaKpnDGj/astdRFKqGFRYVeEYl45lcUPhdJyrzanjsdQ==", + "license": "MIT", "dependencies": { "path-browserify": "^1.0.1", - "semver": "^7.5.4", - "typescript-auto-import-cache": "^0.3.1", + "semver": "^7.6.2", + "typescript-auto-import-cache": "^0.3.3", "vscode-languageserver-textdocument": "^1.0.11", "vscode-nls": "^5.2.0", "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.0.1", - "@volar/typescript": "~2.0.1" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8769,11 +9743,15 @@ } }, "node_modules/volar-service-typescript-twoslash-queries": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.30.tgz", - "integrity": "sha512-ahj6woBxhkZu7icQR58x5TnUaS8ZRKn7a+UvY+andmiTWsOaSu85zj36+LPZgZQi1MG+BtjNwUjKoxtZiN51PA==", + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.61.tgz", + "integrity": "sha512-99FICGrEF0r1E2tV+SvprHPw9Knyg7BdW2fUch0tf59kG+KG+Tj4tL6tUg+cy8f23O/VXlmsWFMIE+bx1dXPnQ==", + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8" + }, "peerDependencies": { - "@volar/language-service": "~2.0.1" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8781,72 +9759,87 @@ } } }, - "node_modules/volar-service-typescript/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" + "node_modules/volar-service-typescript/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/volar-service-typescript/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "node_modules/volar-service-yaml": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.61.tgz", + "integrity": "sha512-L+gbDiLDQQ1rZUbJ3mf3doDsoQUa8OZM/xdpk/unMg1Vz24Zmi2Ign8GrZyBD7bRoIQDwOH9gdktGDKzRPpUNw==", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "vscode-uri": "^3.0.8", + "yaml-language-server": "~1.15.0" }, - "bin": { - "semver": "bin/semver.js" + "peerDependencies": { + "@volar/language-service": "~2.4.0" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } } }, - "node_modules/volar-service-typescript/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/vscode-css-languageservice": { - "version": "6.2.12", - "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.2.12.tgz", - "integrity": "sha512-PS9r7HgNjqzRl3v91sXpCyZPc8UDotNo6gntFNtGCKPhGA9Frk7g/VjX1Mbv3F00pn56D+rxrFzR9ep4cawOgA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.1.tgz", + "integrity": "sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==", + "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", - "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "3.17.5", "vscode-uri": "^3.0.8" } }, - "node_modules/vscode-css-languageservice/node_modules/@vscode/l10n": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", - "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==" - }, "node_modules/vscode-html-languageservice": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.1.2.tgz", - "integrity": "sha512-wkWfEx/IIR3s2P5yD4aTGHiOb8IAzFxgkSt1uSC3itJ4oDAm23yG7o0L29JljUdnXDDgLafPAvhv8A2I/8riHw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz", + "integrity": "sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==", + "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", - "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "^3.17.5", "vscode-uri": "^3.0.8" } }, - "node_modules/vscode-html-languageservice/node_modules/@vscode/l10n": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", - "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==" + "node_modules/vscode-json-languageservice": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz", + "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==", + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2" + }, + "engines": { + "npm": ">=7.0.0" + } + }, + "node_modules/vscode-json-languageservice/node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" }, "node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -8855,6 +9848,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, @@ -8866,30 +9860,35 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", - "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==" + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" }, "node_modules/vscode-nls": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", - "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==" + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==", + "license": "MIT" }, "node_modules/vscode-uri": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" }, "node_modules/warning": { "version": "4.0.3", @@ -9008,7 +10007,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz", "integrity": "sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==", - "license": "MIT", "dependencies": { "load-yaml-file": "^0.2.0" }, @@ -9020,7 +10018,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "license": "MIT", "engines": { "node": ">=4" } @@ -9041,35 +10038,14 @@ } }, "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "string-width": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9079,6 +10055,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "peer": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -9096,6 +10073,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9112,6 +10090,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true, "engines": { "node": ">=8" } @@ -9120,6 +10099,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -9133,12 +10113,14 @@ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "peer": true }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9152,6 +10134,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9162,12 +10145,14 @@ "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "peer": true }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "peer": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -9185,11 +10170,30 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xxhash-wasm": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", - "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", - "license": "MIT" + "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==" }, "node_modules/y18n": { "version": "5.0.8", @@ -9205,9 +10209,127 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yaml-language-server": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.15.0.tgz", + "integrity": "sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==", + "license": "MIT", + "dependencies": { + "ajv": "^8.11.0", + "lodash": "4.17.21", + "request-light": "^0.5.7", + "vscode-json-languageservice": "4.1.8", + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2", + "yaml": "2.2.2" + }, + "bin": { + "yaml-language-server": "bin/yaml-language-server" + }, + "optionalDependencies": { + "prettier": "2.8.7" + } + }, + "node_modules/yaml-language-server/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/yaml-language-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/yaml-language-server/node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "license": "MIT", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/yaml-language-server/node_modules/request-light": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", + "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", + "license": "MIT" + }, + "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "license": "MIT", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/yaml-language-server/node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.16.0" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/yaml-language-server/node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", + "license": "MIT" + }, + "node_modules/yaml-language-server/node_modules/yaml": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "license": "ISC", "engines": { "node": ">= 14" } @@ -9291,7 +10413,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "license": "MIT", "engines": { "node": ">=12.20" }, @@ -9303,7 +10424,6 @@ "version": "3.23.8", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -9312,7 +10432,6 @@ "version": "3.23.3", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.3.tgz", "integrity": "sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==", - "license": "ISC", "peerDependencies": { "zod": "^3.23.3" } diff --git a/package.json b/package.json index ddf7dac..529e96f 100644 --- a/package.json +++ b/package.json @@ -6,23 +6,27 @@ "dev": "astro dev", "start": "astro dev", "test": "vitest", - "build": "astro check && astro build", + "build": "npx prisma generate && astro check && astro build ", "preview": "astro preview", "astro": "astro" }, "dependencies": { - "@astrojs/check": "^0.5.5", - "@astrojs/node": "^8.2.0", - "@astrojs/react": "^3.6.0", - "@astrojs/tailwind": "^5.1.0", + "@astrojs/check": "^0.9.4", + "@astrojs/node": "^8.3.4", + "@astrojs/react": "^3.6.2", + "@astrojs/tailwind": "^5.1.2", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", + "@headlessui/react": "^2.1.8", + "@heroicons/react": "^2.1.5", "@mui/icons-material": "^5.16.4", "@mui/material": "^5.16.4", "@notionhq/client": "^2.2.15", + "@prisma/client": "^5.20.0", + "@supabase/supabase-js": "^2.45.4", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "astro": "^4.15.7", + "astro": "^4.16.2", "axios": "^1.7.7", "dotenv": "^16.4.5", "notion-client": "^6.16.0", @@ -30,7 +34,6 @@ "react-dom": "^18.3.1", "react-notion-x": "^6.16.0", "sharp": "^0.33.5", - "tailwindcss": "^3.4.1", "typescript": "^5.3.3", "vitest": "^1.4.0", "yarn": "^1.22.22" @@ -38,6 +41,7 @@ "devDependencies": { "@flydotio/dockerfile": "^0.5.2", "@types/bcrypt": "^5.0.2", - "@types/node": "^20.11.30" + "@types/node": "^20.11.30", + "prisma": "^5.20.0" } } diff --git a/prisma/migrations/20241001101516_init/migration.sql b/prisma/migrations/20241001101516_init/migration.sql new file mode 100644 index 0000000..80ab2a1 --- /dev/null +++ b/prisma/migrations/20241001101516_init/migration.sql @@ -0,0 +1,114 @@ +-- CreateTable +CREATE TABLE "Member" ( + "id" SERIAL NOT NULL, + "team" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT NOT NULL, + "cover" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Member_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "HomepageDescription" ( + "id" SERIAL NOT NULL, + "heading" TEXT NOT NULL, + "subheadings" TEXT[], + "paragraphs" TEXT[], + "images" TEXT[], + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "HomepageDescription_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Project" ( + "id" TEXT NOT NULL, + "title" TEXT NOT NULL, + "date" TIMESTAMP(3), + "description" TEXT NOT NULL, + "cover" TEXT NOT NULL, + "team" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Project_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Tag" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + + CONSTRAINT "Tag_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TeamDescription" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "TeamDescription_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TeamTag" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + + CONSTRAINT "TeamTag_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_ProjectToTag" ( + "A" TEXT NOT NULL, + "B" INTEGER NOT NULL +); + +-- CreateTable +CREATE TABLE "_TeamDescriptionTags" ( + "A" INTEGER NOT NULL, + "B" INTEGER NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "HomepageDescription_heading_key" ON "HomepageDescription"("heading"); + +-- CreateIndex +CREATE UNIQUE INDEX "Tag_name_key" ON "Tag"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "TeamDescription_name_key" ON "TeamDescription"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "TeamTag_name_key" ON "TeamTag"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "_ProjectToTag_AB_unique" ON "_ProjectToTag"("A", "B"); + +-- CreateIndex +CREATE INDEX "_ProjectToTag_B_index" ON "_ProjectToTag"("B"); + +-- CreateIndex +CREATE UNIQUE INDEX "_TeamDescriptionTags_AB_unique" ON "_TeamDescriptionTags"("A", "B"); + +-- CreateIndex +CREATE INDEX "_TeamDescriptionTags_B_index" ON "_TeamDescriptionTags"("B"); + +-- AddForeignKey +ALTER TABLE "_ProjectToTag" ADD CONSTRAINT "_ProjectToTag_A_fkey" FOREIGN KEY ("A") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_ProjectToTag" ADD CONSTRAINT "_ProjectToTag_B_fkey" FOREIGN KEY ("B") REFERENCES "Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_TeamDescriptionTags" ADD CONSTRAINT "_TeamDescriptionTags_A_fkey" FOREIGN KEY ("A") REFERENCES "TeamDescription"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_TeamDescriptionTags" ADD CONSTRAINT "_TeamDescriptionTags_B_fkey" FOREIGN KEY ("B") REFERENCES "TeamTag"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..fbffa92 --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..f814c10 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,70 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? +// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") + directUrl = env("DIRECT_URL") +} + +model Member { + id Int @id @default(autoincrement()) + team String + name String + description String + cover String? // URL of the cover image (optional) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model HomepageDescription { + id Int @id @default(autoincrement()) + heading String @unique // Add this line to make heading unique + subheadings String[] + paragraphs String[] + images String[] + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model Project { + id String @id @default(cuid()) // Unique ID (e.g., Notion project ID) + title String + date DateTime? // Optional in case some projects don't have a date + description String + cover String // Store the cover URL + team String + tags Tag[] @relation("ProjectToTag") // Many-to-many relation with Tag + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model Tag { + id Int @id @default(autoincrement()) // Auto-generated unique tag ID + name String @unique + projects Project[] @relation("ProjectToTag") +} + +// schema.prisma + +model TeamDescription { + id Int @id @default(autoincrement()) // Unique identifier for each team description + name String @unique // Name of the team (must be unique) + description String? // Description of the team (optional) + tags TeamTag[] @relation("TeamDescriptionTags") // Many-to-many relationship with TeamTag + createdAt DateTime @default(now()) // Timestamp when the record was created + updatedAt DateTime @updatedAt // Timestamp when the record was last updated +} + +model TeamTag { + id Int @id @default(autoincrement()) // Unique identifier for each tag + name String @unique // Name of the tag (must be unique) + teamDescriptions TeamDescription[] @relation("TeamDescriptionTags") // Relation back to TeamDescription +} diff --git a/public/error404.svg b/public/error404.svg new file mode 100644 index 0000000..3d8784f --- /dev/null +++ b/public/error404.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/homepage/carousel_item_1_image_0.webp b/public/homepage/carousel_item_1_image_0.webp deleted file mode 100644 index d4d3514..0000000 Binary files a/public/homepage/carousel_item_1_image_0.webp and /dev/null differ diff --git a/public/homepage/carousel_item_2_image_0.webp b/public/homepage/carousel_item_2_image_0.webp deleted file mode 100644 index 5d1fbab..0000000 Binary files a/public/homepage/carousel_item_2_image_0.webp and /dev/null differ diff --git a/public/homepage/carousel_item_3_image_0.webp b/public/homepage/carousel_item_3_image_0.webp deleted file mode 100644 index 7f95fb3..0000000 Binary files a/public/homepage/carousel_item_3_image_0.webp and /dev/null differ diff --git a/public/homepage/homepageData.json b/public/homepage/homepageData.json deleted file mode 100644 index 2428aa1..0000000 --- a/public/homepage/homepageData.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "About Us": { - "heading": "About Us", - "subheadings": [ - "Who we are", - "What we do" - ], - "paragraphs": [ - "A group of 26 young leaders (aged 12-24) from the Ōrākei Local Board area who are determined to make a positive impact in our community. As a group we help provide a voice to the youth in our community. The youth council is supported by the Ōrākei Local Board.", - "The Youth of Ōrākei not only organises and supports events, but they equip and engage youth. But it is also our priority to give a voice to the youth in the community for the future of Ōrākei and wider Auckland by advising and submitting on council policies.", - "", - "" - ], - "images": [] - }, - "Carousel Item #1": { - "heading": "Carousel Item #1", - "subheadings": [ - "Beach Cleanup" - ], - "paragraphs": [ - "2nd September, 12:30 - 3:30PM", - "Come join us to clean the local beach and save our environment!", - "" - ], - "images": [ - "/homepage/carousel_item_1_image_0.webp" - ] - }, - "Carousel Item #2": { - "heading": "Carousel Item #2", - "subheadings": [ - "Art Gallery" - ], - "paragraphs": [ - "2nd August, 12:30 - 3:30PM", - "Come along and view some fine art! Maybe even meet some new friends!" - ], - "images": [ - "/homepage/carousel_item_2_image_0.webp" - ] - }, - "Carousel Item #3": { - "heading": "Carousel Item #3", - "subheadings": [ - "Quiz Night" - ], - "paragraphs": [ - "2nd July 12:30 - 3:30PM", - "This is a description about quizzes at YOO. Quizzes are good to learn from." - ], - "images": [ - "/homepage/carousel_item_3_image_0.webp" - ] - }, - "Goals": { - "heading": "Goals", - "subheadings": [ - "Support", - "Connect", - "Empower" - ], - "paragraphs": [ - "We support Ōrākei youth with networks, friends, and community-building events that help both our members and the wider Ōrākei community. We represent the voice of Ōrākei youth in scenarios that involve leaders from all across Auckland.", - "We have a mission to connect young people from around the region with each other to promote learning and community. Our teams work on group activities and engagements that build positive relationships across all of Ōrākei.", - "We help empower Ōrākei youth to do amazing things, with events, activities, and meetups designed to foster positive engagement and wellbeing." - ], - "images": [] - }, - "Hero": { - "heading": "Hero", - "subheadings": [ - "Youth of Ōrākei", - "Empowering and engaging Ōrākei youth to promote their wellbeing" - ], - "paragraphs": [ - "", - "We’re the Youth of Ōrākei, a group of 26 young leaders (aged 12-24) from the Ōrākei Local Board area who are determined to make a positive impact in our community.", - "" - ], - "images": [] - } -} \ No newline at end of file diff --git a/public/members/_zzz.webp b/public/members/_zzz.webp deleted file mode 100644 index 1a87a0f..0000000 Binary files a/public/members/_zzz.webp and /dev/null differ diff --git a/public/members/communication_team_katerina.webp b/public/members/communication_team_katerina.webp deleted file mode 100644 index 069664e..0000000 Binary files a/public/members/communication_team_katerina.webp and /dev/null differ diff --git a/public/members/communication_team_saffron.webp b/public/members/communication_team_saffron.webp deleted file mode 100644 index 379ada7..0000000 Binary files a/public/members/communication_team_saffron.webp and /dev/null differ diff --git a/public/members/communication_team_stella.webp b/public/members/communication_team_stella.webp deleted file mode 100644 index a5dcef4..0000000 Binary files a/public/members/communication_team_stella.webp and /dev/null differ diff --git a/public/members/communication_team_thanishka.webp b/public/members/communication_team_thanishka.webp deleted file mode 100644 index cb18e8f..0000000 Binary files a/public/members/communication_team_thanishka.webp and /dev/null differ diff --git a/public/members/houston_anna.webp b/public/members/houston_anna.webp deleted file mode 100644 index c10f7d1..0000000 Binary files a/public/members/houston_anna.webp and /dev/null differ diff --git a/public/members/houston_chris.webp b/public/members/houston_chris.webp deleted file mode 100644 index 3c0a4b5..0000000 Binary files a/public/members/houston_chris.webp and /dev/null differ diff --git a/public/members/houston_emmanuel.webp b/public/members/houston_emmanuel.webp deleted file mode 100644 index d638e53..0000000 Binary files a/public/members/houston_emmanuel.webp and /dev/null differ diff --git a/public/members/leadership_team_ben.webp b/public/members/leadership_team_ben.webp deleted file mode 100644 index 535bfa9..0000000 Binary files a/public/members/leadership_team_ben.webp and /dev/null differ diff --git a/public/members/leadership_team_ishita.webp b/public/members/leadership_team_ishita.webp deleted file mode 100644 index 8e32466..0000000 Binary files a/public/members/leadership_team_ishita.webp and /dev/null differ diff --git a/public/members/leadership_team_joshua_(left).webp b/public/members/leadership_team_joshua_(left).webp deleted file mode 100644 index 3247637..0000000 Binary files a/public/members/leadership_team_joshua_(left).webp and /dev/null differ diff --git a/public/members/leadership_team_rashmi.webp b/public/members/leadership_team_rashmi.webp deleted file mode 100644 index b4b8ea2..0000000 Binary files a/public/members/leadership_team_rashmi.webp and /dev/null differ diff --git a/public/members/leadership_team_thanishka.webp b/public/members/leadership_team_thanishka.webp deleted file mode 100644 index cb18e8f..0000000 Binary files a/public/members/leadership_team_thanishka.webp and /dev/null differ diff --git a/public/members/leadership_team_yixuan.webp b/public/members/leadership_team_yixuan.webp deleted file mode 100644 index fc6c3e7..0000000 Binary files a/public/members/leadership_team_yixuan.webp and /dev/null differ diff --git a/public/members/membersData.json b/public/members/membersData.json index 0dcafe0..3b186e9 100644 --- a/public/members/membersData.json +++ b/public/members/membersData.json @@ -32,8 +32,8 @@ { "team": "Projects: Fermata", "desc": "Project Member", - "name": "AntonCACHE", - "cover": "" + "name": "ANTONSTAGINGTEST", + "cover": "/members/projects_fermata_antonstagingtest.webp" }, { "team": "Houston", @@ -161,6 +161,12 @@ "name": "Paidashe", "cover": "/members/projects_schmetterlinge_paidashe.webp" }, + { + "team": "Projects: Fermata", + "desc": "Project Member", + "name": "pog", + "cover": "" + }, { "team": "Leadership Team", "desc": "Council Engagement Lead", @@ -173,6 +179,12 @@ "name": "Saffron", "cover": "/members/communication_team_saffron.webp" }, + { + "team": "Projects: Fermata", + "desc": "Project Member", + "name": "sdasdas", + "cover": "" + }, { "team": "Projects: Schmetterlinge", "desc": "Project Member", @@ -227,6 +239,12 @@ "name": "Tommy", "cover": "/members/projects_the_gaggle_tommy.webp" }, + { + "team": "Projects: Fermata", + "desc": "Project Member", + "name": "TULZATEST", + "cover": "" + }, { "team": "Projects: Schmetterlinge", "desc": "Project Member", @@ -246,9 +264,9 @@ "cover": "/members/leadership_team_yixuan.webp" }, { - "team": "", - "desc": "", - "name": "zzz", - "cover": "/members/_zzz.webp" + "team": "Yas team", + "desc": "Member", + "name": "yues", + "cover": "" } ] \ No newline at end of file diff --git a/public/members/projects_fermata_aaron.webp b/public/members/projects_fermata_aaron.webp deleted file mode 100644 index f302a4f..0000000 Binary files a/public/members/projects_fermata_aaron.webp and /dev/null differ diff --git a/public/members/projects_fermata_anton.webp b/public/members/projects_fermata_anton.webp deleted file mode 100644 index 8e26220..0000000 Binary files a/public/members/projects_fermata_anton.webp and /dev/null differ diff --git a/public/members/projects_fermata_antonstagingtest.webp b/public/members/projects_fermata_antonstagingtest.webp new file mode 100644 index 0000000..db46c90 Binary files /dev/null and b/public/members/projects_fermata_antonstagingtest.webp differ diff --git a/public/members/projects_fermata_david.webp b/public/members/projects_fermata_david.webp deleted file mode 100644 index 20d189e..0000000 Binary files a/public/members/projects_fermata_david.webp and /dev/null differ diff --git a/public/members/projects_fermata_dhivya.webp b/public/members/projects_fermata_dhivya.webp deleted file mode 100644 index a130dd0..0000000 Binary files a/public/members/projects_fermata_dhivya.webp and /dev/null differ diff --git a/public/members/projects_fermata_emily.webp b/public/members/projects_fermata_emily.webp deleted file mode 100644 index 20f8bbb..0000000 Binary files a/public/members/projects_fermata_emily.webp and /dev/null differ diff --git a/public/members/projects_fermata_jessica.webp b/public/members/projects_fermata_jessica.webp deleted file mode 100644 index 1f5e02a..0000000 Binary files a/public/members/projects_fermata_jessica.webp and /dev/null differ diff --git a/public/members/projects_legato_ella.webp b/public/members/projects_legato_ella.webp deleted file mode 100644 index e5497c2..0000000 Binary files a/public/members/projects_legato_ella.webp and /dev/null differ diff --git a/public/members/projects_legato_james.webp b/public/members/projects_legato_james.webp deleted file mode 100644 index d064792..0000000 Binary files a/public/members/projects_legato_james.webp and /dev/null differ diff --git a/public/members/projects_legato_leo.webp b/public/members/projects_legato_leo.webp deleted file mode 100644 index f11d7dd..0000000 Binary files a/public/members/projects_legato_leo.webp and /dev/null differ diff --git a/public/members/projects_legato_olivia.webp b/public/members/projects_legato_olivia.webp deleted file mode 100644 index ee7ccf7..0000000 Binary files a/public/members/projects_legato_olivia.webp and /dev/null differ diff --git a/public/members/projects_legato_toby.webp b/public/members/projects_legato_toby.webp deleted file mode 100644 index 227c0f7..0000000 Binary files a/public/members/projects_legato_toby.webp and /dev/null differ diff --git a/public/members/projects_schmetterlinge_enya.webp b/public/members/projects_schmetterlinge_enya.webp deleted file mode 100644 index dc66c00..0000000 Binary files a/public/members/projects_schmetterlinge_enya.webp and /dev/null differ diff --git a/public/members/projects_schmetterlinge_olivia.webp b/public/members/projects_schmetterlinge_olivia.webp deleted file mode 100644 index ee7ccf7..0000000 Binary files a/public/members/projects_schmetterlinge_olivia.webp and /dev/null differ diff --git a/public/members/projects_schmetterlinge_paidashe.webp b/public/members/projects_schmetterlinge_paidashe.webp deleted file mode 100644 index bc6fc4f..0000000 Binary files a/public/members/projects_schmetterlinge_paidashe.webp and /dev/null differ diff --git a/public/members/projects_schmetterlinge_sebastian.webp b/public/members/projects_schmetterlinge_sebastian.webp deleted file mode 100644 index cec52cd..0000000 Binary files a/public/members/projects_schmetterlinge_sebastian.webp and /dev/null differ diff --git a/public/members/projects_schmetterlinge_william.webp b/public/members/projects_schmetterlinge_william.webp deleted file mode 100644 index 4c3a724..0000000 Binary files a/public/members/projects_schmetterlinge_william.webp and /dev/null differ diff --git a/public/members/projects_the_gaggle_jamie.webp b/public/members/projects_the_gaggle_jamie.webp deleted file mode 100644 index 95085cd..0000000 Binary files a/public/members/projects_the_gaggle_jamie.webp and /dev/null differ diff --git a/public/members/projects_the_gaggle_olivia.webp b/public/members/projects_the_gaggle_olivia.webp deleted file mode 100644 index 9516969..0000000 Binary files a/public/members/projects_the_gaggle_olivia.webp and /dev/null differ diff --git a/public/members/projects_the_gaggle_shreevali.webp b/public/members/projects_the_gaggle_shreevali.webp deleted file mode 100644 index 06f6847..0000000 Binary files a/public/members/projects_the_gaggle_shreevali.webp and /dev/null differ diff --git a/public/members/projects_the_gaggle_tessa.webp b/public/members/projects_the_gaggle_tessa.webp deleted file mode 100644 index 1238266..0000000 Binary files a/public/members/projects_the_gaggle_tessa.webp and /dev/null differ diff --git a/public/members/projects_the_gaggle_tommy.webp b/public/members/projects_the_gaggle_tommy.webp deleted file mode 100644 index b10085d..0000000 Binary files a/public/members/projects_the_gaggle_tommy.webp and /dev/null differ diff --git a/public/membersData.json b/public/membersData.json deleted file mode 100644 index 28dbf17..0000000 --- a/public/membersData.json +++ /dev/null @@ -1,254 +0,0 @@ -[ - { - "team": "Houston", - "desc": "Developer", - "name": "✨ andrew ✨", - "cover": "" - }, - { - "team": "Houston", - "desc": "Developer", - "name": "⭐Kimberley⭐🐮", - "cover": "" - }, - { - "team": "Projects: Fermata", - "desc": "Team Lead", - "name": "Aaron", - "cover": "/members/projects_fermata_aaron.webp" - }, - { - "team": "Houston", - "desc": "Developer", - "name": "Anna", - "cover": "/members/houston_anna.webp" - }, - { - "team": "Projects: Fermata", - "desc": "Developer", - "name": "Anton", - "cover": "/members/projects_fermata_anton.webp" - }, - { - "team": "", - "desc": "", - "name": "asdf", - "cover": "/members/_asdf.webp" - }, - { - "team": "", - "desc": "", - "name": "asdf", - "cover": "/members/_asdf.webp" - }, - { - "team": "Houston", - "desc": "Developer", - "name": "Becky Pog", - "cover": "" - }, - { - "team": "Leadership Team", - "desc": "Treasurer", - "name": "Ben", - "cover": "/members/leadership_team_ben.webp" - }, - { - "team": "Houston", - "desc": "Exec & Tech Lead", - "name": "Chris", - "cover": "/members/houston_chris.webp" - }, - { - "team": "Projects: Fermata", - "desc": "Project Member", - "name": "David", - "cover": "/members/projects_fermata_david.webp" - }, - { - "team": "Projects: Fermata", - "desc": "Project Member", - "name": "Dhivya", - "cover": "/members/projects_fermata_dhivya.webp" - }, - { - "team": "Projects: Legato", - "desc": "Project Member", - "name": "Ella", - "cover": "/members/projects_legato_ella.webp" - }, - { - "team": "Projects: Fermata", - "desc": "Project Member", - "name": "Emily", - "cover": "/members/projects_fermata_emily.webp" - }, - { - "team": "Houston", - "desc": "Developer", - "name": "Emmanuel", - "cover": "/members/houston_emmanuel.webp" - }, - { - "team": "Projects: Schmetterlinge", - "desc": "Team Lead", - "name": "Enya", - "cover": "/members/projects_schmetterlinge_enya.webp" - }, - { - "team": "Leadership Team", - "desc": "Co-chair", - "name": "Ishita", - "cover": "/members/leadership_team_ishita.webp" - }, - { - "team": "Projects: Legato", - "desc": "Project Member", - "name": "James", - "cover": "/members/projects_legato_james.webp" - }, - { - "team": "Projects: The Gaggle", - "desc": "Team Lead", - "name": "Jamie", - "cover": "/members/projects_the_gaggle_jamie.webp" - }, - { - "team": "Projects: Fermata", - "desc": "Project Member", - "name": "Jessica", - "cover": "/members/projects_fermata_jessica.webp" - }, - { - "team": "Leadership Team", - "desc": "Co-chair", - "name": "Joshua (Left)", - "cover": "/members/leadership_team_joshua_(left).webp" - }, - { - "team": "Communication Team", - "desc": "Communications Member", - "name": "Katerina", - "cover": "/members/communication_team_katerina.webp" - }, - { - "team": "Projects: Legato", - "desc": "Project Member", - "name": "Leo", - "cover": "/members/projects_legato_leo.webp" - }, - { - "team": "Projects: Schmetterlinge", - "desc": "Project Member", - "name": "Olivia", - "cover": "/members/projects_schmetterlinge_olivia.webp" - }, - { - "team": "Projects: Legato", - "desc": "Project Member", - "name": "Olivia", - "cover": "/members/projects_legato_olivia.webp" - }, - { - "team": "Projects: The Gaggle", - "desc": "Project Member", - "name": "Olivia", - "cover": "/members/projects_the_gaggle_olivia.webp" - }, - { - "team": "Houston", - "desc": "Developer", - "name": "Owen", - "cover": "" - }, - { - "team": "Projects: Schmetterlinge", - "desc": "Project Member", - "name": "Paidashe", - "cover": "/members/projects_schmetterlinge_paidashe.webp" - }, - { - "team": "Leadership Team", - "desc": "Council Engagement Lead", - "name": "Rashmi", - "cover": "/members/leadership_team_rashmi.webp" - }, - { - "team": "Communication Team", - "desc": "Communications Member", - "name": "Saffron", - "cover": "/members/communication_team_saffron.webp" - }, - { - "team": "Projects: Schmetterlinge", - "desc": "Project Member", - "name": "Sebastian", - "cover": "/members/projects_schmetterlinge_sebastian.webp" - }, - { - "team": "Projects: The Gaggle", - "desc": "Project Member", - "name": "Shreevali", - "cover": "/members/projects_the_gaggle_shreevali.webp" - }, - { - "team": "Communication Team", - "desc": "Communications Member", - "name": "Stella", - "cover": "/members/communication_team_stella.webp" - }, - { - "team": "Projects: The Gaggle", - "desc": "Project Member", - "name": "Tessa", - "cover": "/members/projects_the_gaggle_tessa.webp" - }, - { - "team": "Communication Team", - "desc": "Communications Lead", - "name": "Thanishka", - "cover": "/members/communication_team_thanishka.webp" - }, - { - "team": "Leadership Team", - "desc": "Communications Lead", - "name": "Thanishka", - "cover": "/members/leadership_team_thanishka.webp" - }, - { - "team": "Projects: Legato", - "desc": "Team Lead", - "name": "Toby", - "cover": "/members/projects_legato_toby.webp" - }, - { - "team": "Projects: The Gaggle", - "desc": "Project Member", - "name": "Tommy", - "cover": "/members/projects_the_gaggle_tommy.webp" - }, - { - "team": "Projects: Schmetterlinge", - "desc": "Project Member", - "name": "William", - "cover": "/members/projects_schmetterlinge_william.webp" - }, - { - "team": "Houston", - "desc": "Project Manager", - "name": "Yash the mekanic", - "cover": "" - }, - { - "team": "Leadership Team", - "desc": "Secretary", - "name": "Yixuan", - "cover": "/members/leadership_team_yixuan.webp" - }, - { - "team": "", - "desc": "", - "name": "zzz", - "cover": "/members/_zzz.webp" - } -] \ No newline at end of file diff --git a/public/projects/beach_clean_up_cover.webp b/public/projects/beach_clean_up_cover.webp deleted file mode 100644 index a6b6550..0000000 Binary files a/public/projects/beach_clean_up_cover.webp and /dev/null differ diff --git a/public/projects/board_game_night_cover.webp b/public/projects/board_game_night_cover.webp deleted file mode 100644 index 77e5f57..0000000 Binary files a/public/projects/board_game_night_cover.webp and /dev/null differ diff --git a/public/projects/careers_workshop_cover.webp b/public/projects/careers_workshop_cover.webp deleted file mode 100644 index bfa5322..0000000 Binary files a/public/projects/careers_workshop_cover.webp and /dev/null differ diff --git a/public/projects/carouselList.json b/public/projects/carouselList.json index 3319aff..470d6f9 100644 --- a/public/projects/carouselList.json +++ b/public/projects/carouselList.json @@ -1,17 +1,4 @@ [ - { - "heading": "Quiz Night", - "subheadings": [ - "Quiz Night" - ], - "paragraphs": [ - "2nd July 12:30 - 3:30PM", - "This is a description about quizzes at YOO. Quizzes are good to learn from." - ], - "images": [ - "/projects/carousel_content_2_image_0.webp" - ] - }, { "heading": "YOO meeting", "subheadings": [ @@ -37,5 +24,18 @@ "images": [ "/projects/carousel_content_1_image_0.webp" ] + }, + { + "heading": "Quiz Night", + "subheadings": [ + "Quiz Night" + ], + "paragraphs": [ + "2nd July 12:30 - 3:30PM", + "This is a description about quizzes at YOO. Quizzes are good to learn from." + ], + "images": [ + "/projects/carousel_content_2_image_0.webp" + ] } ] \ No newline at end of file diff --git a/public/projects/carousel_content_1_image_0.webp b/public/projects/carousel_content_1_image_0.webp deleted file mode 100644 index 5d1fbab..0000000 Binary files a/public/projects/carousel_content_1_image_0.webp and /dev/null differ diff --git a/public/projects/carousel_content_2_image_0.webp b/public/projects/carousel_content_2_image_0.webp deleted file mode 100644 index 7f95fb3..0000000 Binary files a/public/projects/carousel_content_2_image_0.webp and /dev/null differ diff --git a/public/projects/carousel_content_3_image_0.webp b/public/projects/carousel_content_3_image_0.webp deleted file mode 100644 index b2a2f06..0000000 Binary files a/public/projects/carousel_content_3_image_0.webp and /dev/null differ diff --git a/public/projects/kahoot_games_night_cover.webp b/public/projects/kahoot_games_night_cover.webp deleted file mode 100644 index 9c270f6..0000000 Binary files a/public/projects/kahoot_games_night_cover.webp and /dev/null differ diff --git a/public/projects/kahoot_night_cover.webp b/public/projects/kahoot_night_cover.webp deleted file mode 100644 index 7330fb8..0000000 Binary files a/public/projects/kahoot_night_cover.webp and /dev/null differ diff --git a/public/projects/life_skills_workshop_cover.webp b/public/projects/life_skills_workshop_cover.webp deleted file mode 100644 index aa0399f..0000000 Binary files a/public/projects/life_skills_workshop_cover.webp and /dev/null differ diff --git a/public/projects/music_showcase_cover.webp b/public/projects/music_showcase_cover.webp deleted file mode 100644 index 9c270f6..0000000 Binary files a/public/projects/music_showcase_cover.webp and /dev/null differ diff --git a/public/projects/orakei_youth_expo_cover.webp b/public/projects/orakei_youth_expo_cover.webp deleted file mode 100644 index b2a2f06..0000000 Binary files a/public/projects/orakei_youth_expo_cover.webp and /dev/null differ diff --git a/public/projects/projectsData.json b/public/projects/projectsData.json index 7ea22a7..808ce50 100644 --- a/public/projects/projectsData.json +++ b/public/projects/projectsData.json @@ -1,14 +1,14 @@ [ { - "title": "propject 4", - "date": "2024-09-24", - "description": "desc", - "cover": "", - "team": "tean 43", + "title": "Test", + "date": "2024-09-19", + "description": "Placeholder project description.", + "cover": "/projects/test_cover.webp", + "team": "Team 4", "tags": [ - "volunteering" + "music" ], - "id": "10339839-0b9f-8011-971c-c5ae9a87cce2" + "id": "10639839-0b9f-804f-ace5-e09ed60e9ca1" }, { "title": "Board Game Night", diff --git a/public/projects/quiz_night_cover.webp b/public/projects/quiz_night_cover.webp deleted file mode 100644 index 34267b9..0000000 Binary files a/public/projects/quiz_night_cover.webp and /dev/null differ diff --git a/public/projects/quizex_-_quiz_night_cover.webp b/public/projects/quizex_-_quiz_night_cover.webp deleted file mode 100644 index cf1e41f..0000000 Binary files a/public/projects/quizex_-_quiz_night_cover.webp and /dev/null differ diff --git a/public/projects/sportathon_cover.webp b/public/projects/sportathon_cover.webp deleted file mode 100644 index 9937e28..0000000 Binary files a/public/projects/sportathon_cover.webp and /dev/null differ diff --git a/public/projects/student_leadership_conference_cover.webp b/public/projects/student_leadership_conference_cover.webp deleted file mode 100644 index 7d2d695..0000000 Binary files a/public/projects/student_leadership_conference_cover.webp and /dev/null differ diff --git a/public/projects/film_festival_cover.webp b/public/projects/test_cover.webp similarity index 100% rename from public/projects/film_festival_cover.webp rename to public/projects/test_cover.webp diff --git a/src/components/AdminPage/RefreshSection.tsx b/src/components/AdminPage/RefreshSection.tsx index f565828..80547d7 100644 --- a/src/components/AdminPage/RefreshSection.tsx +++ b/src/components/AdminPage/RefreshSection.tsx @@ -1,36 +1,92 @@ -import { useState } from 'react'; +import React, { useState, useEffect, useRef } from 'react'; +import '../../styles/refresh.css'; interface RefreshSectionProps { newPassword: string; setNewPassword: (value: string) => void; setErrorMessage: (message: string) => void; handleKeyDown: (event: React.KeyboardEvent, formId: string) => void; - password: string; // Receive the password from LoginForm + password: string; } -const RefreshSection = ({ +interface LogMessage { + message: string; + timestamp: number; +} + +const RefreshSection: React.FC = ({ newPassword, setNewPassword, setErrorMessage, handleKeyDown, - password, // Use the passed password -}: RefreshSectionProps) => { - const [passwordChanged, setPasswordChanged] = useState(false); // State for password changed message + password, +}) => { + const [passwordChanged, setPasswordChanged] = useState(false); + const [logs, setLogs] = useState([]); + const [isRefreshing, setIsRefreshing] = useState(false); + const abortControllerRef = useRef(null); + + useEffect(() => { + return () => { + if (abortControllerRef.current) { + abortControllerRef.current.abort(); + } + }; + }, []); const handleRefresh = async () => { - const response = await fetch('/api/refresh-login', { - method: 'POST', - body: JSON.stringify({ action: 'refresh', password }), // Send stored password - headers: { - 'Content-Type': 'application/json', - }, - }); + setIsRefreshing(true); + setLogs([]); - const result = await response.json(); - if (result.success) { + if (abortControllerRef.current) { + abortControllerRef.current.abort(); + } + + abortControllerRef.current = new AbortController(); + + try { + const response = await fetch('/api/refresh-login', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ action: 'refresh', password }), + signal: abortControllerRef.current.signal, + }); + + const reader = response.body?.getReader(); + if (!reader) { + throw new Error('Failed to get response reader'); + } + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + + const chunk = new TextDecoder().decode(value); + const messages = chunk.split('\n\n'); + messages.forEach((message) => { + if (message.startsWith('data: ')) { + try { + const logMessage = JSON.parse(message.slice(6)); + setLogs((prevLogs) => [...prevLogs, logMessage]); + } catch (error) { + console.error('Error parsing log message:', error); + } + } + }); + } + + setIsRefreshing(false); window.location.href = '/'; - } else { - setErrorMessage('Failed to refresh. Try again.'); + } catch (error: any) { + if (error.name === 'AbortError') { + console.log('Fetch aborted'); + } else { + console.error('Error during refresh:', error); + setErrorMessage('Failed to refresh. Try again.'); + } + setIsRefreshing(false); } }; @@ -39,7 +95,7 @@ const RefreshSection = ({ const response = await fetch('/api/refresh-login', { method: 'POST', - body: JSON.stringify({ action: 'change-password', password, newPassword }), // Send both the stored password and the new password + body: JSON.stringify({ action: 'change-password', password, newPassword }), headers: { 'Content-Type': 'application/json', }, @@ -49,18 +105,18 @@ const RefreshSection = ({ if (result.success) { setErrorMessage('Password updated successfully.'); setNewPassword(''); - setPasswordChanged(true); // Set password changed state to true - setTimeout(() => setPasswordChanged(false), 3000); // Reset message after 3 seconds + setPasswordChanged(true); + setTimeout(() => setPasswordChanged(false), 3000); } else { setErrorMessage('Failed to update password. Try again.'); } }; return ( -
-

Logged in

-
- +
+

Logged in

+ + setNewPassword(e.target.value)} onKeyDown={(e) => handleKeyDown(e, 'change-password-form')} required - className="border rounded-lg mx-2 p-2 flex-grow" + className="password-input" /> - {passwordChanged && ( - Password changed! + Password changed! )} - + {logs.length > 0 && ( +
+

Refresh Logs:

+
    + {logs.map((log, index) => ( +
  • + {new Date(log.timestamp).toLocaleTimeString()}: {log.message} +
  • + ))} +
+
+ )}
); }; diff --git a/src/components/AdminPage/loginForm.css b/src/components/AdminPage/loginForm.css deleted file mode 100644 index de15c91..0000000 --- a/src/components/AdminPage/loginForm.css +++ /dev/null @@ -1,3 +0,0 @@ -@import "tailwindcss/base"; -@import "tailwindcss/components"; -@import "tailwindcss/utilities"; \ No newline at end of file diff --git a/src/components/AdminPage/loginForm.tsx b/src/components/AdminPage/loginForm.tsx index 4cb8653..736af99 100644 --- a/src/components/AdminPage/loginForm.tsx +++ b/src/components/AdminPage/loginForm.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import './loginForm.css'; +import '../../styles/refresh.css'; import RefreshSection from './RefreshSection'; const LoginForm = () => { @@ -41,11 +41,11 @@ const LoginForm = () => { }; return ( -
-
+
+
{!loggedIn ? ( -
- + + { required onChange={(e) => setPassword(e.target.value)} onKeyDown={(e) => handleKeyDown(e, 'login-form')} - className="border rounded-lg mx-2 p-2" + className="password-input" /> - - {errorMessage &&

{errorMessage}

} + {errorMessage &&

{errorMessage}

}
) : ( ({ src: carousel.images[0], alt: carousel.subheadings[0], diff --git a/src/components/Navbar/Navbar.tsx b/src/components/Navbar/Navbar.tsx index 53bf3e7..b07017c 100644 --- a/src/components/Navbar/Navbar.tsx +++ b/src/components/Navbar/Navbar.tsx @@ -1,27 +1,29 @@ import styles from './nav.module.css' import React from "react"; -import { Simulate } from "react-dom/test-utils"; +import {Simulate} from "react-dom/test-utils"; +import {Bars3Icon, XMarkIcon} from "@heroicons/react/20/solid"; import toggle = Simulate.toggle; -/* -New navbar (see header.astro in components folder for previous version) - */ const Navbar = () => { const [silly, setSilly] = React.useState(false); const [typedText, setTypedText] = React.useState(''); + const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false); const sillyHandler = () => { if (!silly) { if (confirm("You've found the silly animation mode toggle! \nActivating this mode causes rapid, possibly flashing motion. You can turn it off any time by clicking the same button. \n\nWould you like to continue?")) { setSilly(true); } - } - else { + } else { setSilly(false); } } + const toggleMobileMenu = () => { + setIsMobileMenuOpen(!isMobileMenuOpen); // Toggle the mobile menu + } + /* Adds the silly rotation animation to selected elements. The code is kinda scrappy for it lol */ React.useEffect(() => { console.log(`set silly animation mode to ${silly}`); @@ -85,11 +87,40 @@ const Navbar = () => { /> Youth of Ōrākei + + {/*Hamburger menu for mobile view */} + + + + {/* Mobile menu */} + + + + + {/* Mobile menu */} + + + +
+
+
+
{events[imgIndex].time}
+
+
+

{events[imgIndex].title}

+
+
+
+
{events[imgIndex].description}
+
+
+
+ + {events.map((_, index) => ( + + ))} + +
+
+ + ); +} diff --git a/src/components/projects page/projects_team_card.astro b/src/components/projectspage/projects_team_card.astro similarity index 100% rename from src/components/projects page/projects_team_card.astro rename to src/components/projectspage/projects_team_card.astro diff --git a/src/components/projects page/projects_team_container.astro b/src/components/projectspage/projects_team_container.astro similarity index 100% rename from src/components/projects page/projects_team_container.astro rename to src/components/projectspage/projects_team_container.astro diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts new file mode 100644 index 0000000..b22ea86 --- /dev/null +++ b/src/lib/prisma.ts @@ -0,0 +1,16 @@ +import { PrismaClient } from '@prisma/client' + +const client = new PrismaClient({ + log: process.env.NODE_ENV === 'development' ? ['error', 'warn'] : ['error'], +}) + +// global variable that stores the client +const globalForPrisma = globalThis as unknown as { + prisma: PrismaClient | undefined +} + +export const prisma = globalForPrisma.prisma ?? client + +if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = client + +prisma.member.findMany({}) diff --git a/src/lib/supabaseClient.ts b/src/lib/supabaseClient.ts new file mode 100644 index 0000000..e68f504 --- /dev/null +++ b/src/lib/supabaseClient.ts @@ -0,0 +1,5 @@ +import { createClient } from '@supabase/supabase-js'; + +export const supabaseUrl = process.env.SUPABASE_URL || import.meta.env.SUPABASE_URL; +export const supabaseServiceKey = process.env.SERVICE_KEY || import.meta.env.SERVICE_KEY; +export const supabase = createClient(supabaseUrl, supabaseServiceKey); diff --git a/src/pages/404.astro b/src/pages/404.astro new file mode 100644 index 0000000..d8b9dd2 --- /dev/null +++ b/src/pages/404.astro @@ -0,0 +1,33 @@ +--- +import "../styles/global.css"; +import "../styles/error404.css"; +import Layout from '../layouts/layout.astro'; +import BlobBackground from "../components/BlobBackground/BlobBackground"; +--- + + + + + + + + 404 Page + + + +
+ +
+
+ 404 +
+
+

Oops, we can't find the page you are looking for!

+
+ +
+
+
+ diff --git a/src/pages/api/refresh-login.ts b/src/pages/api/refresh-login.ts index 2c3014c..d6064ae 100644 --- a/src/pages/api/refresh-login.ts +++ b/src/pages/api/refresh-login.ts @@ -1,20 +1,26 @@ import { Client } from "@notionhq/client"; -import { getMembers } from "../../scripts/getMembers.ts"; -import { getProjects } from "../../scripts/getProjects.ts"; -import { getHomepageDescriptions } from "../../scripts/getHomepageDescriptions.ts"; +import { updateMembers } from "../../scripts/updateMembers.ts"; +import { updateProjects } from "../../scripts/updateProjects.ts"; +import { updateTeamsDescriptions } from "../../scripts/updateTeamDescription.ts"; +import { updateHomepageDescriptions } from "../../scripts/updateHomepageDescriptions.ts"; import type { APIRoute } from 'astro'; import type { passwordRow } from "../../types/passwordRow.ts"; interface NotionPassword { password: string; - newPassword?: string; + newPassword?: string; action: 'login' | 'refresh' | 'change-password'; } +interface LogMessage { + message: string; + timestamp: number; +} + export const POST: APIRoute = async ({ request }) => { const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; const NOTION_REFRESH_ID = process.env.NOTION_REFRESH_ID || import.meta.env.NOTION_REFRESH_ID; - + if (!NOTION_TOKEN || !NOTION_REFRESH_ID) { return new Response(JSON.stringify({ error: "Missing secret(s)" }), { status: 500 }); } @@ -44,35 +50,30 @@ export const POST: APIRoute = async ({ request }) => { if (!password) { return new Response(JSON.stringify({ error: "Password is required" }), { status: 400 }); } - + if (password === notionPassword) { return new Response(JSON.stringify({ success: true }), { status: 200 }); } else { return new Response(JSON.stringify({ success: false, message: "Invalid password" }), { status: 401 }); } } else if (action === 'refresh') { - if (!password) { - return new Response(JSON.stringify({ error: "Password is required" }), { status: 400 }); - } - - if (password === notionPassword) { - try { - await getMembers(); - await getProjects(); - await getHomepageDescriptions(); - return new Response(JSON.stringify({ success: true }), { status: 200 }); - } catch (err) { - console.error("Error during refresh data:", err); - return new Response(JSON.stringify({ error: "Failed to refresh data" }), { status: 500 }); + return new Response(new ReadableStream({ + start(controller) { + handleRefresh(controller, password, notionPassword); } - } else { - return new Response(JSON.stringify({ success: false, message: "Invalid password" }), { status: 401 }); - } + }), { + headers: { + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache', + 'Connection': 'keep-alive' + } + }); + } else if (action === 'change-password') { if (!newPassword) { return new Response(JSON.stringify({ error: "New password is required" }), { status: 400 }); } - + await notion.pages.update({ page_id: passwords[0].id as string, properties: { @@ -96,4 +97,50 @@ export const POST: APIRoute = async ({ request }) => { console.error("Error during request handling:", error); return new Response(JSON.stringify({ error: "Internal server error" }), { status: 500 }); } + + async function handleRefresh(controller: ReadableStreamDefaultController, password: string, notionPassword: string) { + if (!password) { + return new Response(JSON.stringify({ error: "Password is required" }), { status: 400 }); + } + + if (password === notionPassword) { + try { + sendLog(controller, "Starting refresh process"); + + sendLog(controller, "Getting members"); + await updateMembers(controller); + + sendLog(controller, "Getting projects"); + await updateProjects(controller); + + sendLog(controller, "Getting homepage descriptions"); + await updateHomepageDescriptions(controller); + + sendLog(controller, "Getting team descriptions"); + await updateTeamsDescriptions(controller); + + sendLog(controller, "Refresh process completed"); + controller.close(); + return new Response(JSON.stringify({ success: true }), { status: 200 }); + } catch (err) { + console.error("Error during refresh data:", err); + sendLog(controller, `Error during refresh: ${err}`); + return new Response(JSON.stringify({ error: "Failed to refresh data" }), { status: 500 }); + } + } else { + return new Response(JSON.stringify({ success: false, message: "Invalid password" }), { status: 401 }); + } + } + + function sendLog(controller: ReadableStreamDefaultController, message: string) { + try { + const logMessage = { + message, + timestamp: Date.now() + }; + controller.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(logMessage)}\n\n`)); + } catch (error) { + console.error("Error sending log:", error); + } + } }; diff --git a/src/pages/archive.astro b/src/pages/archive.astro index 6f85198..c34bd5a 100644 --- a/src/pages/archive.astro +++ b/src/pages/archive.astro @@ -42,6 +42,11 @@ const recordMap = await notion.getPage(pageId); .notion-wrapper { overflow-x: auto; + background-color: rgba(255, 255, 255, 0.658); + padding: 20px; + margin: 0 auto; /* Center horizontally */ + max-width: 1200px; /* Control the width */ + border-radius: 10px; /* Optional for rounded corners */ } .heading-wrapper { @@ -50,6 +55,7 @@ const recordMap = await notion.getPage(pageId); display: flex; justify-content: center; align-items: center; + } diff --git a/src/pages/index.astro b/src/pages/index.astro index 0f8f52a..aa051bf 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,5 +1,4 @@ --- - // Homepage import "../styles/global.css"; import "../styles/index.css"; @@ -10,19 +9,20 @@ import IndexAbout from "../components/index page/IndexAbout"; import IndexGoals from "../components/index page/IndexGoals"; import IndexHero from "../components/index page/IndexHero"; import BlobBackground from "../components/BlobBackground/BlobBackground"; -import descriptions from "../../public/homepage/homepageData.json" -const aboutContent = descriptions["About Us"]; -const heroContent = descriptions["Hero"]; -const goalContent = descriptions["Goals"]; -const carousel1 = descriptions["Carousel Item #1"]; -const carousel2 = descriptions["Carousel Item #2"]; -const carousel3 = descriptions["Carousel Item #3"]; +import { fetchHomepageDescriptions } from '../scripts/serveHomepageDescriptions'; // Import the fetch function +import type { HomepageDescription } from "../types/homepageDescriptions"; -const carouselContent = [carousel1, carousel2, carousel3].filter((item): item is NonNullable => item !== undefined); // temp fix +const descriptions: HomepageDescription[] = await fetchHomepageDescriptions(); +const aboutContent = descriptions.find(item => item.heading === "About Us"); +const heroContent = descriptions.find(item => item.heading === "Hero"); +const goalContent = descriptions.find(item => item.heading === "Goals"); +const carousel1 = descriptions.find(item => item.heading === "Carousel Item #1"); +const carousel2 = descriptions.find(item => item.heading === "Carousel Item #2"); +const carousel3 = descriptions.find(item => item.heading === "Carousel Item #3"); +const carouselContent = [carousel1, carousel2, carousel3].filter((item): item is NonNullable => item !== undefined); --- - @@ -33,29 +33,33 @@ const carouselContent = [carousel1, carousel2, carousel3].filter((item): item is - -
- -
+
+ +
+ +
+ + - + - +
+ +
-
- -
+ - + -
- -
+
+ +
-
- -
+
+ +
+
diff --git a/src/pages/members.astro b/src/pages/members.astro index da582ad..c48a80a 100644 --- a/src/pages/members.astro +++ b/src/pages/members.astro @@ -1,122 +1,127 @@ --- +import { sortMembersByTeam } from "../scripts/sortTeams.ts"; + import "../styles/global.css"; import "../styles/members.css"; +import { fetchMembers } from "../scripts/serveMembers"; import Layout from "../layouts/layout.astro"; -import members from "../../public/members/membersData.json" import TeamDisplayLeft from "../components/TeamDisplayLeft.astro"; import TeamDisplayRight from "../components/TeamDisplayRight.astro"; import ProjectTeam from "../components/ProjectTeam.tsx"; -import { sortMembersByTeam } from "../scripts/sortTeams.ts"; -import { getTeamsDescriptions } from "../scripts/getTeamDescription"; - -type MemberData = { - team: string; - desc: string; - name: string; - cover: string; - url?: string; -} -type TeamDescriptions = { - name: string; - description?: string; - tags?: string; -} +// Import the TeamDropdown component +import TeamDropdown from "../components/TeamDropdown"; +import type { TeamDescriptions } from "../types/teamDescriptions"; +import { serveTeamDescriptions } from "../scripts/serveTeamDescriptions"; +import type { memberData } from "../types/memberData"; type Team = { teamName: string; - members: MemberData[]; + members: memberData[]; description: string | undefined; -} +}; + +let members = await fetchMembers(); -let { teamsDict, projects } = - sortMembersByTeam(members); -let teamDescription: TeamDescriptions[] = await getTeamsDescriptions(); +let { teamsDict, projects } = sortMembersByTeam(members); -function mapTeamWithDesc(teams: {[teamName: string]: MemberData[]}, teamDescription: TeamDescriptions[]) { +let teamDescription: TeamDescriptions[] = await serveTeamDescriptions(); + +function mapTeamWithDesc( + teams: { [teamName: string]: memberData[] }, + teamDescription: TeamDescriptions[], +) { return Object.keys(teams) - .map(teamName => { - const description = teamDescription.find((desc: TeamDescriptions) => desc.name === teamName); - if (description) { - return { - teamName, - members: teams[teamName], - description: description.description - }; - } - return null; - }) - .filter(Boolean); + .map((teamName) => { + const description = teamDescription.find( + (desc: TeamDescriptions) => desc.name === teamName, + ); + if (description) { + return { + teamName, + members: teams[teamName], + description: description.description, + }; + } + return null; + }) + .filter(Boolean); } -let teamWithDesc = mapTeamWithDesc(teamsDict, teamDescription); +let teamWithDesc: (Team | null)[] = mapTeamWithDesc(teamsDict, teamDescription); --- - + - Members Page + Team Display -
- - - - - - - - + +
+ +
+ +
- - - - {teamWithDesc.map((team: Team, index: number) => ( - index % 2 === 0 ? - : - - ))} - - -
-
+ diff --git a/src/pages/projects.astro b/src/pages/projects.astro index 978315e..d3a235e 100644 --- a/src/pages/projects.astro +++ b/src/pages/projects.astro @@ -3,14 +3,14 @@ import "../styles/global.css"; import "../styles/index.css"; import "../styles/projects.css"; import Layout from "../layouts/layout.astro"; -import PastProjectsList from "../components/projects page/PastProjectsList"; -import ImageCarousel from "../components/ImageCarousel"; +import PastProjectsList from "../components/projectspage/PastProjectsList"; +import ImageCarousel from "../components/projectspage/ProjectsImageCarousel"; import IndexHeading from "../components/index page/IndexHeading"; import BlobBackground from "../components/BlobBackground/BlobBackground"; +import { serveProjects } from "../scripts/serveProjects"; +const { projects, carouselList } = await serveProjects(); +console.log(carouselList) -// Read the JSON files from the public folder -import projects from "../../public/projects/projectsData.json" -import carouselList from "../../public/projects/carouselList.json" --- @@ -23,7 +23,7 @@ import carouselList from "../../public/projects/carouselList.json"
- +
Our Past Projects diff --git a/src/pages/projects/team2.astro b/src/pages/projects/team2.astro index 256f366..8ff0c27 100644 --- a/src/pages/projects/team2.astro +++ b/src/pages/projects/team2.astro @@ -5,9 +5,9 @@ import "../../styles/index.css"; import TeamDisplay from "../../components/TeamDisplayLeft.astro"; import Layout from "../../layouts/layout.astro"; import ProjectCard from "../../components/ProjectCard.astro"; -import TeamCard from "../../components/projects page/projects_team_card.astro"; +import TeamCard from "../../components/projectspage/projects_team_card.astro"; import Carousel from "../../components/carousel.astro"; -import Container from "../../components/projects page/projects_team_container.astro"; +import Container from "../../components/projectspage/projects_team_container.astro"; --- diff --git a/src/pages/projects/team3.astro b/src/pages/projects/team3.astro index 97db4ee..837e8b5 100644 --- a/src/pages/projects/team3.astro +++ b/src/pages/projects/team3.astro @@ -5,9 +5,9 @@ import "../../styles/index.css"; import TeamDisplay from "../../components/TeamDisplayLeft.astro"; import Layout from "../../layouts/layout.astro"; import ProjectCard from "../../components/ProjectCard.astro"; -import TeamCard from "../../components/projects page/projects_team_card.astro"; +import TeamCard from "../../components/projectspage/projects_team_card.astro"; import Carousel from "../../components/carousel.astro"; -import Container from "../../components/projects page/projects_team_container.astro"; +import Container from "../../components/projectspage/projects_team_container.astro"; --- diff --git a/src/pages/projects/team4.astro b/src/pages/projects/team4.astro index f96681d..d44a20b 100644 --- a/src/pages/projects/team4.astro +++ b/src/pages/projects/team4.astro @@ -5,9 +5,9 @@ import "../../styles/index.css"; import TeamDisplay from "../../components/TeamDisplayLeft.astro"; import Layout from "../../layouts/layout.astro"; import ProjectCard from "../../components/ProjectCard.astro"; -import TeamCard from "../../components/projects page/projects_team_card.astro"; +import TeamCard from "../../components/projectspage/projects_team_card.astro"; import Carousel from "../../components/carousel.astro"; -import Container from "../../components/projects page/projects_team_container.astro"; +import Container from "../../components/projectspage/projects_team_container.astro"; --- diff --git a/src/scripts/getHomepageDescriptions.ts b/src/scripts/getHomepageDescriptions.ts deleted file mode 100644 index 2498359..0000000 --- a/src/scripts/getHomepageDescriptions.ts +++ /dev/null @@ -1,98 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import axios from 'axios'; -import sharp from 'sharp'; -import { Client } from "@notionhq/client"; -import { fetchPageBlocks } from "./fetchPageBlocks.ts"; -import { getPage } from "./getPageDescriptions.ts"; -import sanitizeFilename from '../utils/sanitizeFilename.ts'; - -type Description = { - heading: string; - subheadings: string[]; - paragraphs: string[]; - images: string[]; -}; - -async function ensureDirectoryExists(directoryPath: string): Promise { - if (!fs.existsSync(directoryPath)) { - fs.mkdirSync(directoryPath, { recursive: true }); - console.log(`Directory ${directoryPath} created.`); - } -} - -async function downloadAndProcessImage(imageUrl: string, folderPath: string, fileName: string): Promise { - const imagePath = path.join(folderPath, `${fileName}.webp`); - - // Check if the image already exists - if (!fs.existsSync(imagePath)) { - const response = await axios.get(imageUrl, { responseType: 'arraybuffer' }); - const compressedImageBuffer = await sharp(response.data) - .webp({ quality: 80 }) - .toBuffer(); - fs.writeFileSync(imagePath, new Uint8Array(compressedImageBuffer)); - console.log(`Image ${fileName}.webp downloaded, compressed, and saved.`); - } else { - console.log(`Image ${fileName}.webp already exists.`); - } - - return `/homepage/${fileName}.webp`; // Return the public path for the image -} - -export async function getHomepageDescriptions(): Promise { - const descriptions: Record = {}; - - const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; - const NOTION_HOMEPAGE_ID = process.env.NOTION_HOMEPAGE_ID || import.meta.env.NOTION_HOMEPAGE_ID; - - if (!NOTION_TOKEN || !NOTION_HOMEPAGE_ID) throw new Error("Missing secret(s)"); - - const notion = new Client({ auth: NOTION_TOKEN }); - const publicFolderPath = path.join(process.cwd(), 'public'); - const homepageFolderPath = path.join(publicFolderPath, 'homepage'); - - // Ensure the 'homepage' directory exists - await ensureDirectoryExists(homepageFolderPath); - - try { - const query = await notion.databases.query({ - database_id: NOTION_HOMEPAGE_ID, - sorts: [{ property: 'Name', direction: 'ascending' }] - }); - - for (const page of query.results) { - if ('properties' in page) { - const nameProperty = page.properties.Name; - if (nameProperty.type === 'title' && Array.isArray(nameProperty.title) && nameProperty.title.length > 0) { - const title: string = nameProperty.title[0].plain_text; - const pageId: string = page.id; - const blocks = await fetchPageBlocks(notion, pageId); - const { subheadings, paragraphs, images } = await getPage(blocks); - - // Process and store images - const sanitizedTitle = sanitizeFilename(title); - const processedImages = await Promise.all( - images.map((url, idx) => - downloadAndProcessImage(url, homepageFolderPath, `${sanitizedTitle}_image_${idx}`) - ) - ); - - descriptions[title] = { - heading: title, - subheadings, - paragraphs, - images: processedImages // Store local paths of images - }; - } - } - } - - // Save the descriptions to a JSON file - const jsonFilePath = path.join(homepageFolderPath, 'homepageData.json'); - fs.writeFileSync(jsonFilePath, JSON.stringify(descriptions, null, 2)); - console.log(`Homepage descriptions saved to ${jsonFilePath}`); - - } catch (error) { - console.error("Error retrieving or processing homepage descriptions:", error); - } -} diff --git a/src/scripts/getMembers.ts b/src/scripts/getMembers.ts deleted file mode 100644 index 6207f8d..0000000 --- a/src/scripts/getMembers.ts +++ /dev/null @@ -1,122 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import axios from 'axios'; -import sharp from 'sharp'; -import sanitizeFilename from '../utils/sanitizeFilename'; -import { Client } from "@notionhq/client"; // Notion API client -import type { memberRow } from "../types/memberRow"; - -interface Member { - team: string; - name: string; - desc: string; - cover: string; // This will store the local file path -} - -// Helper function to ensure the directory exists -async function ensureDirectoryExists(directoryPath: string): Promise { - if (!fs.existsSync(directoryPath)) { - fs.mkdirSync(directoryPath, { recursive: true }); - console.log(`Directory ${directoryPath} created.`); - } -} - -// Helper function to clean up old images not part of the current member list -async function cleanupOldImages(membersFolderPath: string, validImageNames: string[]): Promise { - const files = fs.readdirSync(membersFolderPath); - files.forEach((file: string) => { - if (!validImageNames.includes(file)) { - const filePath = path.join(membersFolderPath, file); - fs.unlinkSync(filePath); - console.log(`Deleted old image: ${file}`); - } - }); -} - -// Main function to get members, update covers, and return the sanitized members data -export async function getMembers(): Promise { - const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; - const NOTION_MEMBERS_ID = process.env.NOTION_MEMBERS_ID || import.meta.env.NOTION_MEMBERS_ID; - - if (!NOTION_TOKEN || !NOTION_MEMBERS_ID) - throw new Error("Missing secret(s)"); - - const notion = new Client({ auth: NOTION_TOKEN }); - - const query = await notion.databases.query({ - database_id: NOTION_MEMBERS_ID, - sorts: [{ - property: 'Name', - direction: 'ascending' - }] - }); - - const memberspages = query.results as memberRow[]; - const members: Member[] = memberspages.map((row) => { - return { - team: row.properties.Team.rich_text[0] ? row.properties.Team.rich_text[0].plain_text : "", - desc: row.properties.Description.rich_text[0] ? row.properties.Description.rich_text[0].plain_text : "", - name: row.properties.Name.title[0] ? row.properties.Name.title[0].plain_text : "", - cover: row.cover?.type == "external" ? row.cover?.external.url : row.cover?.file.url ?? "" - }; - }); - - const publicFolderPath = path.join(process.cwd(), 'public'); - const membersFolderPath = path.join(publicFolderPath, 'members'); // Path for storing member images - const jsonFilePath = path.join(membersFolderPath, 'membersData.json'); // Path for storing members data in JSON - - // Ensure the 'members' directory exists - await ensureDirectoryExists(membersFolderPath); - - // Filter members that have cover images - const membersWithCover = members.filter(member => member.cover); - - // Generate the list of valid image filenames - const validImageNames = membersWithCover.map((member) => { - const sanitizedFileName = sanitizeFilename(`${member.team}_${member.name}`); - return `${sanitizedFileName}.webp`; - }); - - // Clean up old images not in the current list - await cleanupOldImages(membersFolderPath, validImageNames); - - // Process each member's cover image - const downloadPromises = membersWithCover.map(async (member) => { - const sanitizedFileName = sanitizeFilename(`${member.team}_${member.name}`); - const imageName = `${sanitizedFileName}.webp`; - const imagePath = path.join(membersFolderPath, imageName); - - // Check if the image already exists, if not download and convert - if (!fs.existsSync(imagePath)) { - const response = await axios({ - url: member.cover, - method: 'GET', - responseType: 'arraybuffer', - }); - - // Convert to WebP format and save locally - const compressedImageBuffer = await sharp(response.data) - .webp({ quality: 60 }) - .resize({ width: 500 }) - .toBuffer(); - - fs.writeFileSync(imagePath, new Uint8Array(compressedImageBuffer)); - console.log(`Image ${imageName} downloaded and saved.`); - } - - // Update the member's cover to point to the local file path - member.cover = `/members/${imageName}`; - }); - - // Wait for all images to be downloaded and processed - await Promise.all(downloadPromises); - - console.log('All images downloaded and processed.'); - - // Write members to a JSON file - fs.writeFileSync(jsonFilePath, JSON.stringify(members, null, 2)); - console.log(`Members data saved to ${jsonFilePath}`); - - // Return the updated members array - return members; -} diff --git a/src/scripts/getProjects.ts b/src/scripts/getProjects.ts deleted file mode 100644 index d39c997..0000000 --- a/src/scripts/getProjects.ts +++ /dev/null @@ -1,135 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import axios from 'axios'; -import sharp from 'sharp'; -import { Client } from "@notionhq/client"; -import { fetchPageBlocks } from "./fetchPageBlocks.ts"; -import { getPage } from "./getPageDescriptions.ts"; -import type { projectRow } from '../types/projectRow.ts'; -import sanitizeFilename from '../utils/sanitizeFilename.ts'; - -type ProjectData = { - title: string; - date: string; - description: string; - cover: string; - team: string; - tags: string[]; // Make tags required as an empty array - id: string; -} - -type CarouselItem = { - heading: string; - subheadings: string[]; - paragraphs: string[]; - images: string[]; -}; - -async function ensureDirectoryExists(directoryPath: string): Promise { - if (!fs.existsSync(directoryPath)) { - fs.mkdirSync(directoryPath, { recursive: true }); - console.log(`Directory ${directoryPath} created.`); - } -} - -async function downloadAndProcessImage(imageUrl: string, folderPath: string, fileName: string): Promise { - const imagePath = path.join(folderPath, `${fileName}.webp`); - - if (!fs.existsSync(imagePath)) { - const response = await axios.get(imageUrl, { responseType: 'arraybuffer' }); - const compressedImageBuffer = await sharp(response.data) - .webp({ quality: 80 }) - .toBuffer(); - fs.writeFileSync(imagePath, new Uint8Array(compressedImageBuffer)); - console.log(`Image ${fileName}.webp downloaded, compressed, and saved.`); - } else { - console.log(`Image ${fileName}.webp already exists.`); - } - - return `/projects/${fileName}.webp`; // Return the public path for the image -} - -export async function getProjects(): Promise<{ projects: ProjectData[], carouselList: CarouselItem[] }> { - const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; - const NOTION_PROJECTS_ID = process.env.NOTION_PROJECTS_ID || import.meta.env.NOTION_PROJECTS_ID; - - if (!NOTION_TOKEN || !NOTION_PROJECTS_ID) { - throw new Error("Missing secret(s)"); - } - - const notion = new Client({ auth: NOTION_TOKEN }); - const publicFolderPath = path.join(process.cwd(), 'public'); - const projectsFolderPath = path.join(publicFolderPath, 'projects'); - - await ensureDirectoryExists(projectsFolderPath); - - const query = await notion.databases.query({ - database_id: NOTION_PROJECTS_ID, - sorts: [{ property: 'Date', direction: 'descending' }] - }); - - const projectsRows = query.results as projectRow[]; - const carouselList: CarouselItem[] = []; - - const projectPromises = projectsRows.map(async (row) => { - const title = row.properties.Name.title[0] ? row.properties.Name.title[0].plain_text : ""; - const date = row.properties.Date.date ? row.properties.Date.date.start : ""; - const description = row.properties.Description.rich_text[0] ? row.properties.Description.rich_text[0].plain_text : ""; - const coverUrl = row.cover?.type === "external" ? row.cover?.external.url : row.cover?.file.url ?? ""; - const team = row.properties.Team.rich_text[0] ? row.properties.Team.rich_text[0].plain_text : ""; - const tags = row.properties.Tags?.multi_select.map((tag) => tag.name) || []; // Ensure tags is always an array - const id = row.id || ""; - - let coverPath = ""; - - if (coverUrl) { - coverPath = await downloadAndProcessImage(coverUrl, projectsFolderPath, sanitizeFilename(title) + "_cover"); - } - - if (title.toLowerCase().includes("carousel content")) { - const pageId: string = id; - const blocks = await fetchPageBlocks(notion, pageId); - const { subheadings, paragraphs, images } = await getPage(blocks); - - carouselList.push({ - heading: subheadings[0], - subheadings, - paragraphs, - images: await Promise.all( - images.map((url, idx) => - downloadAndProcessImage(url, projectsFolderPath, `${sanitizeFilename(title)}_image_${idx}`) - ) - ) - }); - - return null; // Filter out carousel content from main projects list - } - - return { - title, - date, - description, - cover: coverPath, // Updated to point to the local path - team, - tags, // No need for type assertion here - id - }; - }); - - // Filter out null values and await all async operations - const filteredProjects = (await Promise.all(projectPromises)).filter((project): project is ProjectData => project !== null); - - // Save the projects and carousel list to JSON files - const projectsJsonPath = path.join(projectsFolderPath, 'projectsData.json'); - fs.writeFileSync(projectsJsonPath, JSON.stringify(filteredProjects, null, 2)); - console.log(`Projects data saved to ${projectsJsonPath}`); - - const carouselJsonPath = path.join(projectsFolderPath, 'carouselList.json'); - fs.writeFileSync(carouselJsonPath, JSON.stringify(carouselList, null, 2)); - console.log(`Carousel list data saved to ${carouselJsonPath}`); - - return { - projects: filteredProjects, - carouselList - }; -} diff --git a/src/scripts/getTeamDescription.ts b/src/scripts/getTeamDescription.ts deleted file mode 100644 index b5a6a91..0000000 --- a/src/scripts/getTeamDescription.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Client } from "@notionhq/client"; -import type { GetPageResponse } from "@notionhq/client/build/src/api-endpoints"; -import type { teamRow } from "../types/teamRow" - - -type TeamDescriptions = { - name: string; - description?: string; - tags?: string; -} - -export async function getTeamsDescriptions(): Promise { - const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; - const NOTION_TEAMS_ID = process.env.NOTION_TEAMS_ID || import.meta.env.NOTION_TEAMS_ID; - if (!NOTION_TOKEN || !NOTION_TEAMS_ID) - throw new Error("Missing secret(s)"); - - const notion = new Client({ auth: NOTION_TOKEN }); - - const query = await notion.databases.query({ - database_id: NOTION_TEAMS_ID, - sorts: [{ - property: 'Name', - direction: 'ascending' - }] - }); - - - const teampages = query.results as teamRow[]; - - const teams: TeamDescriptions[] = teampages.map((row) => { - return { - name: row.properties.Name.title[0] ? row.properties.Name.title[0].plain_text : "", - description: row.properties.Description.rich_text[0] ? row.properties.Description.rich_text[0].plain_text : "", - tags: row.properties.Tags.select.name ? row.properties.Tags.select.name : "", - }; - }); - - return teams; -} \ No newline at end of file diff --git a/src/scripts/serveHomepageDescriptions.ts b/src/scripts/serveHomepageDescriptions.ts new file mode 100644 index 0000000..749a95a --- /dev/null +++ b/src/scripts/serveHomepageDescriptions.ts @@ -0,0 +1,16 @@ +// src/lib/fetchHomepageDescriptions.ts +import {prisma} from "../lib/prisma"; + +/** + * Fetches homepage descriptions from the Prisma database. + * @returns {Promise} An array of homepage descriptions. + */ +export async function fetchHomepageDescriptions(): Promise { + try { + const descriptions = await prisma.homepageDescription.findMany(); + return descriptions; + } catch (error) { + console.error("Error fetching homepage descriptions:", error); + return []; + } +} diff --git a/src/scripts/serveMembers.ts b/src/scripts/serveMembers.ts new file mode 100644 index 0000000..f85bc28 --- /dev/null +++ b/src/scripts/serveMembers.ts @@ -0,0 +1,19 @@ +// scripts/fetchMembers.ts +import type { memberData } from '../types/memberData'; +import {prisma} from "../lib/prisma" + + +/** + * Fetches members from the database. + * @returns {Promise} An array of members. + */ +export async function fetchMembers(): Promise { + let members: memberData[] = []; // Explicitly type the members variable + try { + members = await prisma.member.findMany(); // Fetch all members from the database + } catch (err) { + console.error("Error fetching members data:", err); + members = []; // Fallback to an empty array + } + return members; +} diff --git a/src/scripts/serveProjects.ts b/src/scripts/serveProjects.ts new file mode 100644 index 0000000..e004695 --- /dev/null +++ b/src/scripts/serveProjects.ts @@ -0,0 +1,45 @@ +import { prisma } from "../lib/prisma"; + + + +export async function serveProjects(): Promise<{ projects: any[], carouselList: any[] }> { + try { + const projects = await prisma.project.findMany({ + include: { + tags: true, + }, + }); + + const carouselProjects: any[] = []; + + const nonCarouselProjects = projects.filter((project: typeof projects[0]) => { + const title = project.title.toLowerCase(); + + if (title.includes("carousel content")) { + const numberMatch = title.match(/carousel content #(\d+)/); + const carouselNumber = numberMatch ? parseInt(numberMatch[1], 10) : 0; + const heading = project.title.replace(/\(carousel content\)/i, '').trim(); + carouselProjects.push({ + ...project, + title: heading, + carouselNumber + }); + + return false; + } + + return true; + }); + + + const sortedCarouselProjects = carouselProjects.sort((a, b) => a.carouselNumber - b.carouselNumber); + + return { + projects: nonCarouselProjects, + carouselList: sortedCarouselProjects + }; + } catch (error) { + console.error("Error fetching projects and carousel list:", error); + throw error; + } +} diff --git a/src/scripts/serveTeamDescriptions.ts b/src/scripts/serveTeamDescriptions.ts new file mode 100644 index 0000000..4dfa78b --- /dev/null +++ b/src/scripts/serveTeamDescriptions.ts @@ -0,0 +1,40 @@ +import {prisma} from "../lib/prisma" + +// Define the structure of the team with tags included +type TeamWithTags = { + name: string; + description: string | null; + tags: { name: string }[]; // Array of tag objects with 'name' field +}; + +type TeamDescriptions = { + name: string; + description?: string; + tags?: string[]; // Array of tag names +}; + +export async function serveTeamDescriptions(): Promise { + let teamDescriptions: TeamDescriptions[] = []; + + try { + + const descriptions = await prisma.teamDescription.findMany({ + include: { + tags: true, + }, + }) as TeamWithTags[]; + + + teamDescriptions = descriptions.map((team) => ({ + name: team.name, + description: team.description ?? undefined, + tags: team.tags?.map((tag) => tag.name) || [], + })); + + } catch (err) { + console.error("Error fetching team descriptions:", err); + teamDescriptions = []; + } + + return teamDescriptions; +} diff --git a/src/scripts/sortTeams.ts b/src/scripts/sortTeams.ts index 708add8..fcb627f 100644 --- a/src/scripts/sortTeams.ts +++ b/src/scripts/sortTeams.ts @@ -1,10 +1,6 @@ -type MemberData = { - team: string; - desc: string; - name: string; - cover: string; - url?: string; -} +import type { memberData } from "../types/memberData"; + + type TeamDetails = { teamName: string; @@ -12,12 +8,12 @@ type TeamDetails = { teamId: string; }; -export function sortMembersByTeam(members: MemberData[]) { - const leadershipTeam: MemberData[] = []; - const communicationTeam: MemberData[] = []; +export function sortMembersByTeam(members: memberData[]) { + const leadershipTeam: memberData[] = []; + const communicationTeam: memberData[] = []; // const projectsMap: { [projectName: string]: MemberData[] } = {}; - const teamsDict: { [team: string]: MemberData[] } = {}; - const projectsMap: { [projectName: string]: { teamDetails: TeamDetails; members: MemberData[] } } = {}; + const teamsDict: { [team: string]: memberData[] } = {}; + const projectsMap: { [projectName: string]: { teamDetails: TeamDetails; members: memberData[] } } = {}; let nextProjectId: number = 1; // Start ID counter at 0 members.forEach(member => { @@ -30,7 +26,7 @@ export function sortMembersByTeam(members: MemberData[]) { const projectName: string = member.team.replace("Projects: ", ""); if (!projectsMap[projectName]) { projectsMap[projectName] = { - teamDetails: { teamName: projectName, description: member.desc, teamId: "team" + nextProjectId.toString() }, + teamDetails: { teamName: projectName, description: member.description, teamId: "team" + nextProjectId.toString() }, members: [] }; nextProjectId++; diff --git a/src/scripts/updateHomepageDescriptions.ts b/src/scripts/updateHomepageDescriptions.ts new file mode 100644 index 0000000..b263b59 --- /dev/null +++ b/src/scripts/updateHomepageDescriptions.ts @@ -0,0 +1,162 @@ +import { Client } from "@notionhq/client"; +import { fetchPageBlocks } from "./fetchPageBlocks.ts"; +import { getPage } from "./getPageDescriptions.ts"; +import axios from 'axios'; +import sharp from "sharp"; +import { supabase } from '../lib/supabaseClient'; +import { supabaseUrl } from '../lib/supabaseClient'; +import { prisma } from "../lib/prisma"; + +// Type for descriptions +type Description = { + heading: string; + subheadings: string[]; + paragraphs: string[]; + images: string[]; +}; + +// Function to download image from URL +async function downloadImage(url: string): Promise { + const response = await axios.get(url, { responseType: 'arraybuffer' }); + return Buffer.from(response.data, 'binary'); +} + +// Function to upload image to Supabase Storage +async function uploadImageToSupabase(imageBuffer: Buffer, filePath: string): Promise { + // Convert image to WebP format and compress it + const compressedImageBuffer = await sharp(imageBuffer) + .toFormat('webp', { quality: 35 }) + .toBuffer(); + + // Check if the file already exists + const { data: existingFiles, error: listError } = await supabase.storage.from('images').list(filePath.split('/')[0]); + + if (listError) { + throw new Error(`Failed to list files: ${listError.message}`); + } + + const existingFileName = filePath.split('/').pop(); + const existingFile = existingFiles.find(file => file.name === existingFileName); + + // If the file already exists, remove it before uploading + if (existingFile) { + console.log(`Deleting existing image: ${existingFileName}`); // Log the deletion + const { error: deleteError } = await supabase.storage.from('images').remove([filePath]); + if (deleteError) { + throw new Error(`Failed to delete existing image: ${deleteError.message}`); + } + } + + // Now upload the new image + const { data, error } = await supabase.storage.from('images').upload(filePath, compressedImageBuffer); + + // If there's an error uploading, check if it's because it already exists + if (error) { + if (error.message.includes("already exists")) { + console.warn(`Image ${filePath} already exists. Skipping upload.`); // Warn if it already exists + return `${supabaseUrl}/storage/v1/object/public/images/${filePath}`; + } + throw new Error(`Failed to upload image: ${error.message}`); + } + + // Return the public URL of the uploaded image + return `${supabaseUrl}/storage/v1/object/public/images/${filePath}`; +} + +// Function to sanitize filenames +function sanitizeFileName(fileName: string): string { + return fileName.replace(/[^a-z0-9-_.]/gi, '-'); // Replace invalid characters with hyphen +} + +// Function to log messages +function sendLog(controller: ReadableStreamDefaultController, message: string) { + try { + const logMessage = { + message, + timestamp: Date.now(), + }; + controller.enqueue(`data: ${JSON.stringify(logMessage)}\n\n`); + } catch (error) { + console.error("Error sending log:", error); + } +} + +// Update the image upload process in updateHomepageDescriptions +export async function updateHomepageDescriptions(controller: ReadableStreamDefaultController): Promise { + const descriptions: Record = {}; + + const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; + const NOTION_HOMEPAGE_ID = process.env.NOTION_HOMEPAGE_ID || import.meta.env.NOTION_HOMEPAGE_ID; + + if (!NOTION_TOKEN || !NOTION_HOMEPAGE_ID) throw new Error("Missing secret(s)"); + + const notion = new Client({ auth: NOTION_TOKEN }); + + try { + sendLog(controller, "Starting to retrieve homepage descriptions..."); + + const query = await notion.databases.query({ + database_id: NOTION_HOMEPAGE_ID, + sorts: [{ property: 'Name', direction: 'ascending' }] + }); + + for (const page of query.results) { + if ('properties' in page) { + const nameProperty = page.properties.Name; + if (nameProperty.type === 'title' && Array.isArray(nameProperty.title) && nameProperty.title.length > 0) { + const title: string = nameProperty.title[0].plain_text; + const pageId: string = page.id; + console.log(`Processing homepage description: ${title}`); // Log the project being processed + sendLog(controller, `Processing homepage description: ${title}`); + + const blocks = await fetchPageBlocks(notion, pageId); + const { subheadings, paragraphs, images } = await getPage(blocks); + + // Process images: download and upload to Supabase + const uploadedImages: string[] = []; + for (const imageUrl of images) { + try { + const imageBuffer = await downloadImage(imageUrl); // Download image + const sanitizedTitle = sanitizeFileName(title); // Sanitize title for filename + const filePath = `homepage/${sanitizedTitle}/${imageUrl.split('/').pop()}`; // Generate file path + const uploadedImageUrl = await uploadImageToSupabase(imageBuffer, filePath); // Upload to Supabase + uploadedImages.push(uploadedImageUrl); // Store the new URL + sendLog(controller, `Uploaded image for ${title}: ${uploadedImageUrl}`); + } catch (error) { + sendLog(controller, `Error processing image for ${title}: ${(error as Error).message}`); + } + } + + // Upsert the homepage description into the database + await prisma.homepageDescription.upsert({ + where: { heading: title }, + update: { + subheadings, + paragraphs, + images: uploadedImages, // Store the uploaded image URLs + }, + create: { + heading: title, + subheadings, + paragraphs, + images: uploadedImages, // Store the uploaded image URLs + }, + }); + + descriptions[title] = { + heading: title, + subheadings, + paragraphs, + images: uploadedImages, // Store the uploaded image URLs + }; + sendLog(controller, `Upserted description for ${title}`); + } + } + } + + sendLog(controller, "Homepage descriptions updated successfully."); + } catch (error) { + console.error("Error retrieving or processing homepage descriptions:", error); + sendLog(controller, `Error retrieving or processing homepage descriptions: ${(error as Error).message}`); + } +} diff --git a/src/scripts/updateMembers.ts b/src/scripts/updateMembers.ts new file mode 100644 index 0000000..29b1199 --- /dev/null +++ b/src/scripts/updateMembers.ts @@ -0,0 +1,189 @@ +import axios from 'axios'; +import sharp from "sharp"; +import { Client } from "@notionhq/client"; +import { supabase } from '../lib/supabaseClient'; +import { supabaseUrl } from '../lib/supabaseClient'; +import type { memberRow } from "../types/memberRow"; +import { prisma } from "../lib/prisma"; + +interface Member { + team: string; + name: string; + desc: string; + cover: string | null; // URL of the cover image +} + +// Function to download image from URL +async function downloadImage(url: string): Promise { + const response = await axios.get(url, { responseType: 'arraybuffer' }); + return Buffer.from(response.data, 'binary'); +} + +// Function to upload image to Supabase Storage +async function uploadImageToSupabase(imageBuffer: Buffer, filePath: string): Promise { + // Convert image to WebP format and compress it + const compressedImageBuffer = await sharp(imageBuffer) + .toFormat('webp', { quality: 35 }) + .toBuffer(); + + // Check if the file already exists + const { data: existingFiles, error: listError } = await supabase.storage.from('images').list(filePath.split('/')[0]); // List files in the folder + + if (listError) { + throw new Error(`Failed to list files: ${listError.message}`); + } + + // If the file already exists, remove it before uploading + if (existingFiles.some(file => file.name === filePath.split('/')[1])) { + const { error: deleteError } = await supabase.storage.from('images').remove([filePath]); + if (deleteError) { + throw new Error(`Failed to delete existing image: ${deleteError.message}`); + } + } + + // Now upload the new image + const { data, error } = await supabase.storage.from('images').upload(filePath, compressedImageBuffer); + + if (error) { + throw new Error(`Failed to upload image: ${error.message}`); + } + + // Return the public URL of the uploaded image + return `${supabaseUrl}/storage/v1/object/public/images/${filePath}`; +} + +// Function to delete an image from Supabase Storage +async function deleteImageFromSupabase(filePath: string): Promise { + const { error } = await supabase.storage.from('images').remove([filePath]); + + if (error) { + console.error(`Failed to delete image: ${error.message}`); + } +} + +// Main function to get members, update covers, and return the updated members data +export async function updateMembers(controller: ReadableStreamDefaultController): Promise { + const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; + const NOTION_MEMBERS_ID = process.env.NOTION_MEMBERS_ID || import.meta.env.NOTION_MEMBERS_ID; + + if (!NOTION_TOKEN || !NOTION_MEMBERS_ID) { + throw new Error("Missing secret(s)"); + } + + const notion = new Client({ auth: NOTION_TOKEN }); + + const query = await notion.databases.query({ + database_id: NOTION_MEMBERS_ID, + sorts: [{ + property: 'Name', + direction: 'ascending' + }] + }); + + const membersPages = query.results as memberRow[]; + const members: Member[] = membersPages.map((row) => ({ + team: row.properties.Team.rich_text[0]?.plain_text ?? "", + desc: row.properties.Description.rich_text[0]?.plain_text ?? "", + name: row.properties.Name.title[0]?.plain_text ?? "", + cover: row.cover?.type === "external" ? row.cover?.external.url : row.cover?.file.url ?? null + })); + + // Process each member + for (const member of members) { + try { + if (member.cover) { + const imageBuffer = await downloadImage(member.cover); // Download image + const filePath = `members/${member.team}/${member.name.replace(/\s+/g, '-')}.webp`; // Generate file path with .webp extension + member.cover = await uploadImageToSupabase(imageBuffer, filePath); // Upload to Supabase and get new URL + } + + // Check if the member already exists based on both name and team + const existingMember = await prisma.member.findFirst({ + where: { + name: member.name, + team: member.team + } + }); + + if (existingMember) { + // Store the current cover URL before updating + const currentCover = existingMember.cover; + + // Update existing member + await prisma.member.update({ + where: { id: existingMember.id }, + data: { + description: member.desc, + cover: member.cover // Store the Supabase URL + } + }); + console.log(`Member ${member.name} updated in the database.`); + + // Check if the cover URL has changed + if (currentCover && currentCover !== member.cover) { + const oldFilePath = `members/${existingMember.team}/${existingMember.name.replace(/\s+/g, '-')}.webp`; // Generate the old file path + await deleteImageFromSupabase(oldFilePath); // Delete old image + } + } else { + // Create a new member + await prisma.member.create({ + data: { + team: member.team, + name: member.name, + description: member.desc, + cover: member.cover // Store the Supabase URL + } + }); + console.log(`Member ${member.name} saved to the database.`); + } + + // Send success log for each member processed + sendLog(controller, `Processed member: ${member.name}`); + + } catch (error) { + // Type assertion to ensure 'error' is treated as an Error + const errorMessage = (error as Error).message || 'Unknown error occurred'; + // Send error log for member processing + sendLog(controller, `Error processing member ${member.name}: ${errorMessage}`); + } + } + + // Clean up members that are in the database but not in the Notion query results + const existingMembers = await prisma.member.findMany(); + const memberNamesAndTeams = members.map(member => ({ name: member.name, team: member.team })); + + for (const existingMember of existingMembers) { + const existsInNotion = memberNamesAndTeams.some( + member => member.name === existingMember.name && member.team === existingMember.team + ); + + if (!existsInNotion) { + if (existingMember.cover) { + const filePath = `members/${existingMember.team}/${existingMember.name.replace(/\s+/g, '-')}.webp`; // Generate the file path + await deleteImageFromSupabase(filePath); // Delete image + } + + await prisma.member.delete({ + where: { id: existingMember.id } + }); + console.log(`Deleted member ${existingMember.name} from the database.`); + } + } + + console.log('All members processed.'); + + return members; +} + +// Function to send log messages back to the client +function sendLog(controller: ReadableStreamDefaultController, message: string) { + try { + const logMessage = { + message, + timestamp: Date.now() + }; + controller.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(logMessage)}\n\n`)); + } catch (error) { + console.error("Error sending log:", error); + } +} diff --git a/src/scripts/updateProjects.ts b/src/scripts/updateProjects.ts new file mode 100644 index 0000000..1568eaa --- /dev/null +++ b/src/scripts/updateProjects.ts @@ -0,0 +1,171 @@ +import { Client } from "@notionhq/client"; +import type { projectRow } from '../types/projectRow.ts'; +import axios from 'axios'; +import sharp from "sharp"; +import { supabase } from '../lib/supabaseClient'; +import { supabaseUrl } from '../lib/supabaseClient'; +import { prisma } from "../lib/prisma.ts"; +import type { APIRoute } from 'astro'; + +// Function to sanitize filenames +function sanitizeFileName(fileName: string): string { + return fileName.replace(/[^a-z0-9-_.]/gi, '-'); // Replace invalid characters with hyphen +} + +// Function to download image from URL +async function downloadImage(url: string): Promise { + const response = await axios.get(url, { responseType: 'arraybuffer' }); + return Buffer.from(response.data, 'binary'); +} + +// Function to delete image from Supabase Storage +async function deleteImageFromSupabase(filePath: string): Promise { + const { error } = await supabase.storage.from('images').remove([filePath]); + + if (error) { + console.error(`Failed to delete image: ${error.message}`); + } +} + +// Function to upload image to Supabase Storage +async function uploadImageToSupabase(imageBuffer: Buffer, filePath: string): Promise { + // Convert image to WebP format and compress it + const compressedImageBuffer = await sharp(imageBuffer) + .toFormat('webp', { quality: 30 }) + .toBuffer(); + + // Attempt to delete the existing image first + await deleteImageFromSupabase(filePath); + + // Upload the new image to Supabase + const { data, error } = await supabase.storage.from('images').upload(filePath, compressedImageBuffer); + + if (error) { + throw new Error(`Failed to upload image: ${error.message}`); + } + + // Return the public URL of the uploaded image + return `${supabaseUrl}/storage/v1/object/public/images/${filePath}`; +} + +// Function to log messages +function sendLog(controller: ReadableStreamDefaultController, message: string) { + try { + const logMessage = { + message, + timestamp: Date.now(), + }; + controller.enqueue(`data: ${JSON.stringify(logMessage)}\n\n`); + } catch (error) { + console.error("Error sending log:", error); + } +} + +// Update the updateProjects function +export async function updateProjects(controller: ReadableStreamDefaultController): Promise { + const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; + const NOTION_PROJECTS_ID = process.env.NOTION_PROJECTS_ID || import.meta.env.NOTION_PROJECTS_ID; + + if (!NOTION_TOKEN || !NOTION_PROJECTS_ID) { + throw new Error("Missing secret(s)"); + } + + const notion = new Client({ auth: NOTION_TOKEN }); + + try { + sendLog(controller, "Starting to retrieve projects from Notion..."); + + const query = await notion.databases.query({ + database_id: NOTION_PROJECTS_ID, + sorts: [{ property: 'Date', direction: 'descending' }] + }); + + const projectsRows = query.results as projectRow[]; + + const projectPromises = projectsRows.map(async (row) => { + const title = row.properties.Name.title[0] ? row.properties.Name.title[0].plain_text : ""; + const dateStr = row.properties.Date.date ? row.properties.Date.date.start : ""; + const date = dateStr ? new Date(dateStr) : null; // Convert string to Date object + const description = row.properties.Description.rich_text[0] ? row.properties.Description.rich_text[0].plain_text : ""; + const coverUrl = row.cover?.type === "external" ? row.cover?.external.url : row.cover?.file.url ?? ""; + const team = row.properties.Team.rich_text[0] ? row.properties.Team.rich_text[0].plain_text : ""; + const tags = row.properties.Tags?.multi_select.map((tag) => tag.name) || []; // Ensure tags is always an array + const id = row.id || ""; // Ensure the Notion ID is being used + + // Sanitize the title for cover path + const sanitizedTitle = sanitizeFileName(title); + let coverPath = ''; + + // If a cover URL exists, download and upload the image to Supabase + if (coverUrl) { + try { + sendLog(controller, `Downloading image for project: ${title}`); + const imageBuffer = await downloadImage(coverUrl); // Download image + coverPath = await uploadImageToSupabase(imageBuffer, `projects/${sanitizedTitle}/cover.webp`); // Upload to Supabase + sendLog(controller, `Uploaded cover image for project: ${title}`); + } catch (error) { + sendLog(controller, `Error processing cover image for project ${title}: ${(error as Error).message}`); + } + } + + return { + id, // Use Notion ID as unique identifier + title, + date, + description, + cover: coverPath, // Store the Supabase URL + team, + tags, + }; + }); + + // Await all async operations + const projects = await Promise.all(projectPromises); + + // Store projects in the Prisma database + for (const project of projects) { + // Check if the project already exists in the database by ID + const existingProject = await prisma.project.findUnique({ + where: { id: project.id }, + }); + + // If project exists, update it, else create a new one + await prisma.project.upsert({ + where: { id: project.id }, + create: { + id: project.id, // Ensure the ID is passed during creation + title: project.title, + date: project.date, + description: project.description, + cover: project.cover, + team: project.team, + tags: { + connectOrCreate: project.tags.map(tag => ({ + where: { name: tag }, + create: { name: tag }, + })), + }, + }, + update: { + title: project.title, + date: project.date, + description: project.description, + cover: project.cover, + team: project.team, + tags: { + set: project.tags.map(tag => ({ + name: tag, + })), + }, + }, + }); + + sendLog(controller, `Project ${project.title} upserted in the database.`); + } + + sendLog(controller, "Projects data uploaded to Prisma database."); + } catch (error) { + console.error("Error retrieving or processing projects:", error); + sendLog(controller, `Error retrieving or processing projects: ${(error as Error).message}`); + } +} diff --git a/src/scripts/updateTeamDescription.ts b/src/scripts/updateTeamDescription.ts new file mode 100644 index 0000000..44b5d3f --- /dev/null +++ b/src/scripts/updateTeamDescription.ts @@ -0,0 +1,99 @@ +import { Client } from "@notionhq/client"; +import type { teamRow } from "../types/teamRow"; +import { prisma } from "../lib/prisma"; + +// Type for team descriptions +type TeamDescriptions = { + name: string; + description?: string; + tags?: string[]; +}; + +// Function to log messages +function sendLog(controller: ReadableStreamDefaultController, message: string) { + try { + const logMessage = { + message, + timestamp: Date.now(), + }; + controller.enqueue(`data: ${JSON.stringify(logMessage)}\n\n`); + } catch (error) { + console.error("Error sending log:", error); + } +} + +// Update the teams descriptions +export async function updateTeamsDescriptions(controller: ReadableStreamDefaultController): Promise { + const NOTION_TOKEN = process.env.NOTION_TOKEN || import.meta.env.NOTION_TOKEN; + const NOTION_TEAMS_ID = process.env.NOTION_TEAMS_ID || import.meta.env.NOTION_TEAMS_ID; + + if (!NOTION_TOKEN || !NOTION_TEAMS_ID) throw new Error("Missing secret(s)"); + + const notion = new Client({ auth: NOTION_TOKEN }); + + try { + sendLog(controller, "Starting to retrieve team descriptions..."); + + const query = await notion.databases.query({ + database_id: NOTION_TEAMS_ID, + sorts: [{ + property: 'Name', + direction: 'ascending' + }] + }); + + const teampages = query.results as teamRow[]; + + const teams: TeamDescriptions[] = teampages.map((row) => { + return { + name: row.properties.Name.title[0] ? row.properties.Name.title[0].plain_text : "", + description: row.properties.Description.rich_text[0] ? row.properties.Description.rich_text[0].plain_text : "", + tags: row.properties.Tags.multi_select?.map(tag => tag.name) || [], // Use optional chaining and provide default + }; + }); + + // Store teams in the Prisma database + for (const team of teams) { + try { + // Ensure tags is an array to avoid 'undefined' error + const tagConnections = await Promise.all( + (team.tags || []).map(async (tagName) => { // Use a fallback to an empty array if tags is undefined + const tag = await prisma.teamTag.upsert({ + where: { name: tagName }, + create: { name: tagName }, + update: {}, + }); + return { id: tag.id }; // Return the tag id for connecting + }) + ); + + // Upsert the team description + await prisma.teamDescription.upsert({ + where: { name: team.name }, + create: { + name: team.name, + description: team.description, + tags: { + connect: tagConnections, // Connect the tags + }, + }, + update: { + description: team.description, + tags: { + set: tagConnections, // Update the tags + }, + }, + }); + + sendLog(controller, `Upserted team description for: ${team.name}`); + } catch (error) { + sendLog(controller, `Error processing team ${team.name}: ${(error as Error).message}`); + } + } + + sendLog(controller, "Team descriptions uploaded to Prisma database successfully."); + } catch (error) { + console.error("Error retrieving or processing team descriptions:", error); + sendLog(controller, `Error retrieving or processing team descriptions: ${(error as Error).message}`); + } +} diff --git a/src/styles/error404.css b/src/styles/error404.css new file mode 100644 index 0000000..fd336a2 --- /dev/null +++ b/src/styles/error404.css @@ -0,0 +1,101 @@ +.error404-wrapper { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + padding: 0 20px; + overflow: hidden; +} + +.content-wrapper { + position: relative; + overflow: hidden; + margin-top: -100px; +} + +.image-wrapper { + width: 35%; + height: auto; + text-align: center; + padding-top: 100px; +} + +h1 { + font-size: 10rem; + font-weight: 900; + color: var(--YOO-Green-Primary); +} + +.error-message { + font-size: 3rem; + font-weight: 800; + margin-bottom: 2rem; + color: var(--YOO-Green-Primary); + max-width: 40vw; +} + +.home-button { + padding: 15px 40px; + font-size: 2rem; + background: var(--YOO-Green-Light); + border-radius: 20px; + color: 142601; + font-weight: 700; + line-height: 1; + text-decoration: none; + transition: all 400ms; + box-shadow: 4px 4px 6px 0px rgba(110, 172, 109, 0.15); + cursor: pointer; +} + +.home-button:hover { + opacity: 0.9; + box-shadow: 4px 4px 8px -2px hsl(188deg 100% 16% / 0.1), 12px 12px 18px -3px hsl(188deg 100% 16% / 0.1); + transform: translate(-3px, -3px); + transition: all 200ms; +} + +.home-button-wrapper { + margin-bottom: 2.5rem; +} + +/* Media Queries for Mobile */ +@media (max-width: 768px) { + .image-wrapper { + width: 60%; + } + + h1 { + font-size: 5rem; + } + + .error-message { + font-size: 2rem; + max-width: 80vw; + } + + .home-button { + font-size: 1.5rem; + padding: 10px 20px; + } +} + +@media (max-width: 480px) { + .image-wrapper { + width: 80%; + } + + h1 { + font-size: 4rem; + } + + .error-message { + font-size: 1.5rem; + } + + .home-button { + font-size: 1.2rem; + padding: 8px 16px; + } +} diff --git a/src/styles/index.css b/src/styles/index.css index c9011ef..a5fcfbb 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -10,6 +10,14 @@ pointer-events: none; } +.index-wrapper{ + position: relative; + overflow: hidden; + + margin-top: -100px; + padding-top: 100px; +} + .hero{ display: flex; flex-direction: column; diff --git a/src/styles/members.css b/src/styles/members.css index e377925..33a466d 100644 --- a/src/styles/members.css +++ b/src/styles/members.css @@ -349,7 +349,7 @@ html { /* grid-template-columns: 1fr; */ margin: 0; width: 100%; - + padding-top: 30px; display: flex; flex-wrap: wrap; justify-content: center; @@ -378,5 +378,126 @@ html { align-items: center; } + /* TeamDropdown Styles */ + +.menu-container { + position: relative; + display: inline-block; + width: 100%; + text-align: left; +} + +.menu-button { + display: inline-flex; + justify-content: space-between; + width: 100%; + padding: 0.5rem 1rem; + font-size: 0.875rem; + font-weight: 500; + color: #4a5568; + background-color: #edf2f7; + border-radius: 0.375rem; + cursor: pointer; +} + +.menu-button:hover { + background-color: #e2e8f0; +} + +.menu-icon { + width: 1.25rem; + height: 1.25rem; + color: #a0aec0; +} + +.menu-items { + position: absolute; + margin-top: 0.5rem; + width: 100%; + border-radius: 0.375rem; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + background-color: #fff; + z-index: 10; + border: 1px solid rgba(0, 0, 0, 0.05); + outline: none; +} + +.menu-item-wrapper { + padding: 0.25rem 0; +} + +.menu-item { + display: block; + width: 100%; + padding: 0.5rem 1rem; + font-size: 0.875rem; + color: #4a5568; + text-align: left; + background-color: transparent; +} + + /* Show the dropdown only on mobile */ + .dropdown-mobile-only { + display: block; + } + + /* Hide buttons on mobile */ + .nav { + display: none; + } + + /* Initially hide all team sections on mobile */ + .team-section { + display: none; + } + + /* Ensure the grid displays 2 members per row on mobile */ + .right1, .left2 { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-gap: 10px; + justify-content: center; + margin: 0; + width: 100%; + } + + .person-card { + width: 100%; + margin: 0 auto; + text-align: center; + } + + .img-wrapper { + width: 100px; + height: 100px; + margin: 0 auto; + } + + .img-wrapper img { + border-radius: 50%; + width: 100%; + height: 100%; + object-fit: cover; + } + +} + +/* Show buttons on desktop */ +@media (min-width: 801px) { + /* Hide the dropdown on desktop */ + .dropdown-mobile-only { + display: none; + } + + /* Show buttons on desktop */ + .nav { + display: flex; + justify-content: space-evenly; + } + + /* Show all team sections on desktop */ + .team-section { + display: block; + } +} -} \ No newline at end of file diff --git a/src/styles/refresh.css b/src/styles/refresh.css new file mode 100644 index 0000000..57fe095 --- /dev/null +++ b/src/styles/refresh.css @@ -0,0 +1,121 @@ +/* loginForm.css */ + +html, body { + margin: 0; + padding: 0; + box-sizing: border-box; + width: 100%; + height: 100%; + font-family: "Overpass", sans-serif; + } + +.login-container { + width: 100dvw; + height: 100dvh; + display: flex; + justify-content: center; + align-items: center; + background-color: #C8E4AE; + overflow: hidden; + } + + .login-form-wrapper { + display: flex; + flex-direction: column; + } + + .login-form { + margin-bottom: 10px; + } + + .password-label { + margin-right: 10px; + font-weight: 600; + } + + .password-input { + border: 1px solid #ccc; + border-radius: 8px; + padding: 8px; + margin-right: 10px; + } + + .login-button { + background-color: #294E03; + padding: 8px 15px; + border-radius: 999px; + color: white; + font-weight: 600; + } + + .error-message { + color: red; + } + + .refresh-section { + display: flex; + flex-direction: column; + align-items: center; + } + + .logged-in-message { + font-size: 1.25rem; + font-weight: bold; + margin-bottom: 10px; + } + + .change-password-form { + display: flex; + align-items: center; + margin-bottom: 10px; + } + + .change-password-button { + background-color: #294E03; + padding: 8px 15px; + border-radius: 999px; + color: white; + font-weight: 600; + } + + .password-changed-message { + color: #28A745; + font-weight: bold; + margin-left: 10px; + } + + .refresh-button { + background-color: #294E03; + padding: 8px 15px; + border-radius: 999px; + color: white; + font-weight: 600; + margin-top: 10px; + } + + .logs-container { + margin-top: 20px; + width: 100%; + max-width: 300px; + } + + .logs-title { + font-size: 1.125rem; + font-weight: bold; + margin-bottom: 10px; + } + + .logs-list { + list-style-type: disc; + padding-left: 20px; + max-height: 150px; + overflow-y: auto; + background-color: #F0F0F0; + padding: 10px; + border-radius: 8px; + } + + .log-message { + font-size: 0.875rem; + } + \ No newline at end of file diff --git a/src/types/homepageDescriptions.ts b/src/types/homepageDescriptions.ts new file mode 100644 index 0000000..07582fa --- /dev/null +++ b/src/types/homepageDescriptions.ts @@ -0,0 +1,9 @@ + +export interface HomepageDescription { + id: number; + heading: string; + subheadings: string[]; + paragraphs: string[]; + images: string[]; + +} diff --git a/src/types/memberData.ts b/src/types/memberData.ts index 0127bd9..06fa92f 100644 --- a/src/types/memberData.ts +++ b/src/types/memberData.ts @@ -1,7 +1,9 @@ -export type memberData = { - team: string; - desc: string; - name: string; - cover: string; - url?: string; - } \ No newline at end of file +// types/memberData.ts +export interface memberData { + id: number; + name: string; + team: string; + description: string; + cover: string | null ; + createdAt: Date; +} diff --git a/src/types/teamDescriptions.ts b/src/types/teamDescriptions.ts new file mode 100644 index 0000000..2a97f11 --- /dev/null +++ b/src/types/teamDescriptions.ts @@ -0,0 +1,5 @@ +export type TeamDescriptions = { + name: string; + description?: string; + tags?: string[]; + } \ No newline at end of file diff --git a/src/types/teamRow.ts b/src/types/teamRow.ts index fe3ce87..9d821b4 100644 --- a/src/types/teamRow.ts +++ b/src/types/teamRow.ts @@ -3,33 +3,41 @@ import type { rich_text } from "./richText"; import type { cover } from "./cover"; export type teamRow = { - object: string, - id: string, - created_time: string, - last_edited_time: string, - created_by: { object: string, id: string }, - last_edited_by: { object: string, id: string }, - cover: cover, - icon: null, + object: string; + id: string; + created_time: string; + last_edited_time: string; + created_by: { object: string; id: string }; + last_edited_by: { object: string; id: string }; + cover: cover; + icon: null; parent: { - type: string, - database_id: string - }, - archived: boolean, - in_trash: boolean, + type: string; + database_id: string; + }; + archived: boolean; + in_trash: boolean; properties: { - Name: { id: string, type: string, title: rich_text[] } - Tags: { id: string, type: string, select: - { - id: string, - name: string, - color: string - }}, - Description: { id: string, type: string, rich_text: rich_text[] }, - }, - url: string, - public_url: string, - title: Array, - description: Array, - is_inline: boolean, - }; \ No newline at end of file + Name: { id: string; type: string; title: rich_text[] }; + Tags: { + id: string; + type: "multi_select" | "select"; // Allow either multi_select or select + multi_select?: { // Define multi_select structure + id: string; + name: string; + color: string; + }[]; + select?: { // Define select structure + id: string; + name: string; + color: string; + } | null; // Allow select to be null + }; + Description: { id: string; type: string; rich_text: rich_text[] }; + }; + url: string; + public_url: string; + title: Array; + description: Array; + is_inline: boolean; +}; diff --git a/test/getHomepageDescriptions.test.ts b/test/getHomepageDescriptions.test.ts new file mode 100644 index 0000000..a8769ec --- /dev/null +++ b/test/getHomepageDescriptions.test.ts @@ -0,0 +1,65 @@ +import {describe, it, expect, vi, test} from "vitest"; +import { getHomepageDescriptions } from "../src/scripts/getHomepageDescriptions"; +import { getAnton } from "../src/scripts/getAnton"; +import { fetchPageBlocks } from "../src/scripts/fetchPageBlocks"; + +vi.mock("../src/scripts/getAnton"); +vi.mock("../src/scripts/fetchPageBlocks"); + +describe("getHomepageDescriptions", () => { + it("should return a map of homepage descriptions", async () => { + // Mock data + const mockPageBlocks = [{}, {}]; + const mockAnton = "Sample description"; + + const mockQueryResults = [ + { + id: "page1", + properties: { + Name: { + title: [{ plain_text: "Page 1" }] + } + } + }, + { + id: "page2", + properties: { + Name: { + title: [{ plain_text: "Page 2" }] + } + } + } + ]; + + // Mock fetchPageBlocks and getAnton + (fetchPageBlocks as jest.Mock).mockResolvedValue(mockPageBlocks); + (getAnton as jest.Mock).mockResolvedValue(mockAnton); + + // Mock Notion client + vi.stubEnv("NOTION_TOKEN", "test-token"); + vi.stubEnv("NOTION_MEMBERS_ID", "test-database-id"); + + const notionClientMock = { + databases: { + query: vi.fn().mockResolvedValue({ results: mockQueryResults }), + }, + }; + + const { Client } = await import("@notionhq/client"); + (Client as jest.Mock).mockReturnValue(notionClientMock); + + const descriptions = await getHomepageDescriptions(); + + expect(descriptions.size).toBe(2); + expect(descriptions.get("Page 1")).toBe("Sample description"); + expect(descriptions.get("Page 2")).toBe("Sample description"); + }); +}); + +test ("getAnton", async () => { + const descriptions = await getHomepageDescriptions(); + + expect(descriptions.size).toBe(2); + expect(descriptions.get("Page 1")).toBe("Sample description"); + expect(descriptions.get("Page 2")).toBe("Sample description"); +}); \ No newline at end of file diff --git a/test/getMembers.test.ts b/test/getMembers.test.ts deleted file mode 100644 index a4da317..0000000 --- a/test/getMembers.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { getMembers } from "../src/scripts/getMembers"; -import { assert, expect, test } from 'vitest'; - -let members = await getMembers(); - -const expected_members = [ - { team: '', desc: '', name: '✨ andrew ✨' }, - { team: '', desc: '', name: '⭐Kimberley⭐🐮' }, - { team: '', desc: '', name: 'Anna' }, - { team: '1', desc: 'Cool dude', name: 'Anton' }, - { team: '', desc: 'yes', name: 'Becky Pog' }, - { team: '', desc: '', name: 'Chris' }, - { team: '', desc: '', name: 'Emmanuel' }, - { team: '', desc: '', name: 'Owen' }, - { team: '', desc: '', name: 'Yash the mekanic' } - ] - -test("Members exists", () => { - expect(members).toBeDefined() -}) - -test("Members contains Anton", () => { - expect(members).toEqual(expect.arrayContaining([ - expect.objectContaining({ team: '1', desc: 'Cool dude', name: 'Anton' }) - ])); -}); - -test("Members contains Chris", () => { - expect(members).toEqual(expect.arrayContaining([ - expect.objectContaining({ team: '', desc: '', name: 'Chris' }) - ])); -}); - -test("Members has expected output", () => { - expect(members).toEqual(expected_members) -}) \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 032ad64..3e7076c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,12 @@ "extends": "astro/tsconfigs/strict", "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "react" + "jsxImportSource": "react", + "moduleResolution": "node", + "esModuleInterop": true, + "strict": true, + "verbatimModuleSyntax": true, + "isolatedModules": true + } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 9dc32e5..9f8bf34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,18 +15,17 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@astrojs/check@^0.5.5": - version "0.5.5" - resolved "https://registry.npmjs.org/@astrojs/check/-/check-0.5.5.tgz" - integrity sha512-05LjyUB14Cv2mkLNqY4r2igI2eu0bq/HcKCfFNIoBPLyNW7VUDr9tciD9VJXXT3s0e6JHneIs6bQW5ipjmaRcw== +"@astrojs/check@^0.9.4": + version "0.9.4" + resolved "https://registry.npmjs.org/@astrojs/check/-/check-0.9.4.tgz" + integrity sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA== dependencies: - "@astrojs/language-server" "^2.7.5" - chokidar "^3.5.3" - fast-glob "^3.3.1" + "@astrojs/language-server" "^2.15.0" + chokidar "^4.0.1" kleur "^4.1.5" yargs "^17.7.2" -"@astrojs/compiler@^2.10.3", "@astrojs/compiler@^2.4.0": +"@astrojs/compiler@^2.10.3": version "2.10.3" resolved "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.3.tgz" integrity sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw== @@ -36,58 +35,60 @@ resolved "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.1.tgz" integrity sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g== -"@astrojs/language-server@^2.7.5": - version "2.7.5" - resolved "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.7.5.tgz" - integrity sha512-iMfZ3UaqTgIL+z/eUDOppRa1bGUAteWRihbWq5mGAgvr/hu384ZXUKJcqV3BBux0MBsRXwjxzrC2dJu9IpAaoA== +"@astrojs/language-server@^2.15.0": + version "2.15.0" + resolved "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.15.0.tgz" + integrity sha512-wJHSjGApm5X8Rg1GvkevoatZBfvaFizY4kCPvuSYgs3jGCobuY3KstJGKC1yNLsRJlDweHruP+J54iKn9vEKoA== dependencies: - "@astrojs/compiler" "^2.4.0" + "@astrojs/compiler" "^2.10.3" + "@astrojs/yaml2ts" "^0.2.1" "@jridgewell/sourcemap-codec" "^1.4.15" - "@volar/kit" "~2.0.4" - "@volar/language-core" "~2.0.4" - "@volar/language-server" "~2.0.4" - "@volar/language-service" "~2.0.4" - "@volar/typescript" "~2.0.4" + "@volar/kit" "~2.4.5" + "@volar/language-core" "~2.4.5" + "@volar/language-server" "~2.4.5" + "@volar/language-service" "~2.4.5" fast-glob "^3.2.12" - volar-service-css "0.0.30" - volar-service-emmet "0.0.30" - volar-service-html "0.0.30" - volar-service-prettier "0.0.30" - volar-service-typescript "0.0.30" - volar-service-typescript-twoslash-queries "0.0.30" - vscode-html-languageservice "^5.1.2" + muggle-string "^0.4.1" + volar-service-css "0.0.61" + volar-service-emmet "0.0.61" + volar-service-html "0.0.61" + volar-service-prettier "0.0.61" + volar-service-typescript "0.0.61" + volar-service-typescript-twoslash-queries "0.0.61" + volar-service-yaml "0.0.61" + vscode-html-languageservice "^5.2.0" vscode-uri "^3.0.8" -"@astrojs/markdown-remark@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.2.0.tgz" - integrity sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw== +"@astrojs/markdown-remark@5.3.0": + version "5.3.0" + resolved "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.3.0.tgz" + integrity sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg== dependencies: "@astrojs/prism" "3.1.0" github-slugger "^2.0.0" - hast-util-from-html "^2.0.1" + hast-util-from-html "^2.0.3" hast-util-to-text "^4.0.2" import-meta-resolve "^4.1.0" mdast-util-definitions "^6.0.0" rehype-raw "^7.0.0" - rehype-stringify "^10.0.0" + rehype-stringify "^10.0.1" remark-gfm "^4.0.0" remark-parse "^11.0.0" - remark-rehype "^11.1.0" + remark-rehype "^11.1.1" remark-smartypants "^3.0.2" - shiki "^1.10.3" + shiki "^1.22.0" unified "^11.0.5" unist-util-remove-position "^5.0.0" unist-util-visit "^5.0.0" unist-util-visit-parents "^6.0.1" - vfile "^6.0.2" + vfile "^6.0.3" -"@astrojs/node@^8.2.0": - version "8.3.3" - resolved "https://registry.npmjs.org/@astrojs/node/-/node-8.3.3.tgz" - integrity sha512-idrKhnnPSi0ABV+PCQsRQqVNwpOvVDF/+fkwcIiE8sr9J8EMvW9g/oyAt8T4X2OBJ8FUzYPL8klfCdG7r0eB5g== +"@astrojs/node@^8.3.4": + version "8.3.4" + resolved "https://registry.npmjs.org/@astrojs/node/-/node-8.3.4.tgz" + integrity sha512-xzQs39goN7xh9np9rypGmbgZj3AmmjNxEMj9ZWz5aBERlqqFF3n8A/w/uaJeZ/bkHS60l1BXVS0tgsQt9MFqBA== dependencies: - send "^0.18.0" + send "^0.19.0" server-destroy "^1.0.1" "@astrojs/prism@3.1.0": @@ -97,7 +98,7 @@ dependencies: prismjs "^1.29.0" -"@astrojs/react@^3.6.0": +"@astrojs/react@^3.6.2": version "3.6.2" resolved "https://registry.npmjs.org/@astrojs/react/-/react-3.6.2.tgz" integrity sha512-fK29lYI7zK/KG4ZBy956x4dmauZcZ18osFkuyGa8r3gmmCQa2NZ9XNu9WaVYEUm0j89f4Gii4tbxLoyM8nk2MA== @@ -105,13 +106,13 @@ "@vitejs/plugin-react" "^4.3.1" ultrahtml "^1.5.3" -"@astrojs/tailwind@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.0.tgz" - integrity sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig== +"@astrojs/tailwind@^5.1.2": + version "5.1.2" + resolved "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.2.tgz" + integrity sha512-IvOF0W/dtHElcXvhrPR35nHmhyV3cfz1EzPitMGtU7sYy9Hci3BNK1To6FWmVuuNKPxza1IgCGetSynJZL7fOg== dependencies: - autoprefixer "^10.4.15" - postcss "^8.4.28" + autoprefixer "^10.4.20" + postcss "^8.4.47" postcss-load-config "^4.0.2" "@astrojs/telemetry@3.1.0": @@ -127,145 +128,152 @@ is-wsl "^3.0.0" which-pm-runs "^1.1.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== +"@astrojs/yaml2ts@^0.2.1": + version "0.2.1" + resolved "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.1.tgz" + integrity sha512-CBaNwDQJz20E5WxzQh4thLVfhB3JEEGz72wRA+oJp6fQR37QLAqXZJU0mHC+yqMOQ6oj0GfRPJrz6hjf+zm6zA== + dependencies: + yaml "^2.5.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz" + integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== dependencies: - "@babel/highlight" "^7.24.7" + "@babel/highlight" "^7.25.7" picocolors "^1.0.0" -"@babel/compat-data@^7.25.2": - version "7.25.4" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz" - integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== +"@babel/compat-data@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz" + integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.24.5", "@babel/core@^7.25.2": - version "7.25.2" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz" - integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.24.5", "@babel/core@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz" + integrity sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-module-transforms" "^7.25.2" - "@babel/helpers" "^7.25.0" - "@babel/parser" "^7.25.0" - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.2" - "@babel/types" "^7.25.2" + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.7" + "@babel/helpers" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.0", "@babel/generator@^7.25.6": - version "7.25.6" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz" - integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== +"@babel/generator@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz" + integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== dependencies: - "@babel/types" "^7.25.6" + "@babel/types" "^7.25.7" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" + jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz" - integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== +"@babel/helper-annotate-as-pure@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz" + integrity sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA== dependencies: - "@babel/types" "^7.24.7" + "@babel/types" "^7.25.7" -"@babel/helper-compilation-targets@^7.25.2": - version "7.25.2" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz" - integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== +"@babel/helper-compilation-targets@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz" + integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A== dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" + "@babel/compat-data" "^7.25.7" + "@babel/helper-validator-option" "^7.25.7" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.25.2": - version "7.25.2" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz" - integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.2" - -"@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8": - version "7.24.8" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== - -"@babel/helpers@^7.25.0": - version "7.25.6" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz" - integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== - dependencies: - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.6" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz" + integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/helper-module-transforms@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz" + integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ== + dependencies: + "@babel/helper-module-imports" "^7.25.7" + "@babel/helper-simple-access" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + "@babel/traverse" "^7.25.7" + +"@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz" + integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== + +"@babel/helper-simple-access@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz" + integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/helper-string-parser@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz" + integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== + +"@babel/helper-validator-identifier@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz" + integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== + +"@babel/helper-validator-option@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz" + integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== + +"@babel/helpers@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz" + integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA== + dependencies: + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/highlight@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz" + integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.7" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.4", "@babel/parser@^7.25.6": - version "7.25.6" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz" - integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.4", "@babel/parser@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz" + integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw== dependencies: - "@babel/types" "^7.25.6" + "@babel/types" "^7.25.7" -"@babel/plugin-syntax-jsx@^7.24.7": - version "7.24.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== +"@babel/plugin-syntax-jsx@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz" + integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-transform-react-jsx-self@^7.24.5": version "7.24.7" @@ -281,16 +289,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.25.2": - version "7.25.2" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz" - integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== +"@babel/plugin-transform-react-jsx@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz" + integrity sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q== dependencies: - "@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/types" "^7.25.2" + "@babel/helper-annotate-as-pure" "^7.25.7" + "@babel/helper-module-imports" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-syntax-jsx" "^7.25.7" + "@babel/types" "^7.25.7" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@>=7": version "7.24.8" @@ -299,35 +307,35 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.25.0": - version "7.25.0" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz" - integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": - version "7.25.6" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz" - integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.6" - "@babel/parser" "^7.25.6" - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.6" +"@babel/template@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz" + integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/traverse@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz" + integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.4", "@babel/types@^7.25.6": - version "7.25.6" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz" - integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.4", "@babel/types@^7.25.7": + version "7.25.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz" + integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ== dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" to-fast-properties "^2.0.0" "@emmetio/abbreviation@^2.3.3": @@ -344,11 +352,36 @@ dependencies: "@emmetio/scanner" "^1.0.4" -"@emmetio/scanner@^1.0.4": +"@emmetio/css-parser@^0.4.0": + version "0.4.0" + resolved "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.0.tgz" + integrity sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw== + dependencies: + "@emmetio/stream-reader" "^2.2.0" + "@emmetio/stream-reader-utils" "^0.1.0" + +"@emmetio/html-matcher@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz" + integrity sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ== + dependencies: + "@emmetio/scanner" "^1.0.0" + +"@emmetio/scanner@^1.0.0", "@emmetio/scanner@^1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz" integrity sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA== +"@emmetio/stream-reader-utils@^0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz" + integrity sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A== + +"@emmetio/stream-reader@^2.2.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz" + integrity sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw== + "@emotion/babel-plugin@^11.11.0": version "11.11.0" resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz" @@ -466,6 +499,42 @@ resolved "https://registry.npmjs.org/@fisch0920/medium-zoom/-/medium-zoom-1.0.7.tgz" integrity sha512-hPUrgVM/QvsZdZzDTPyL1C1mOtEw03RqTLmK7ZlJ8S/64u4O4O5BvPvjB/9kyLtE6iVaS9UDRAMSwmM9uh2JIw== +"@floating-ui/core@^1.6.0": + version "1.6.8" + resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz" + integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== + dependencies: + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/dom@^1.0.0": + version "1.6.11" + resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz" + integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/react-dom@^2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz" + integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/react@^0.26.16": + version "0.26.24" + resolved "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.24.tgz" + integrity sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw== + dependencies: + "@floating-ui/react-dom" "^2.1.2" + "@floating-ui/utils" "^0.2.8" + tabbable "^6.0.0" + +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== + "@flydotio/dockerfile@^0.5.2": version "0.5.2" resolved "https://registry.npmjs.org/@flydotio/dockerfile/-/dockerfile-0.5.2.tgz" @@ -477,6 +546,21 @@ shell-quote "^1.8.1" yargs "^17.7.2" +"@headlessui/react@^2.1.8": + version "2.1.9" + resolved "https://registry.npmjs.org/@headlessui/react/-/react-2.1.9.tgz" + integrity sha512-ckWw7vlKtnoa1fL2X0fx1a3t/Li9MIKDVXn3SgG65YlxvDAsNrY39PPCxVM7sQRA7go2fJsuHSSauKFNaJHH7A== + dependencies: + "@floating-ui/react" "^0.26.16" + "@react-aria/focus" "^3.17.1" + "@react-aria/interactions" "^3.21.3" + "@tanstack/react-virtual" "^3.8.1" + +"@heroicons/react@^2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@heroicons/react/-/react-2.1.5.tgz" + integrity sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA== + "@img/sharp-win32-x64@0.33.5": version "0.33.5" resolved "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz" @@ -654,10 +738,10 @@ "@types/node-fetch" "^2.5.10" node-fetch "^2.6.1" -"@oslojs/encoding@^0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/@oslojs/encoding/-/encoding-0.4.1.tgz" - integrity sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q== +"@oslojs/encoding@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz" + integrity sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ== "@pkgjs/parseargs@^0.11.0": version "0.11.0" @@ -669,61 +753,153 @@ resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@rollup/pluginutils@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz" - integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== +"@prisma/client@^5.20.0": + version "5.20.0" + resolved "https://registry.npmjs.org/@prisma/client/-/client-5.20.0.tgz" + integrity sha512-CLv55ZuMuUawMsxoqxGtLT3bEZoa2W8L3Qnp6rDIFWy+ZBrUcOFKdoeGPSnbBqxc3SkdxJrF+D1veN/WNynZYA== + +"@prisma/debug@5.20.0": + version "5.20.0" + resolved "https://registry.npmjs.org/@prisma/debug/-/debug-5.20.0.tgz" + integrity sha512-oCx79MJ4HSujokA8S1g0xgZUGybD4SyIOydoHMngFYiwEwYDQ5tBQkK5XoEHuwOYDKUOKRn/J0MEymckc4IgsQ== + +"@prisma/engines-version@5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284": + version "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284" + resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284.tgz" + integrity sha512-Lg8AS5lpi0auZe2Mn4gjuCg081UZf88k3cn0RCwHgR+6cyHHpttPZBElJTHf83ZGsRNAmVCZCfUGA57WB4u4JA== + +"@prisma/engines@5.20.0": + version "5.20.0" + resolved "https://registry.npmjs.org/@prisma/engines/-/engines-5.20.0.tgz" + integrity sha512-DtqkP+hcZvPEbj8t8dK5df2b7d3B8GNauKqaddRRqQBBlgkbdhJkxhoJTrOowlS3vaRt2iMCkU0+CSNn0KhqAQ== + dependencies: + "@prisma/debug" "5.20.0" + "@prisma/engines-version" "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284" + "@prisma/fetch-engine" "5.20.0" + "@prisma/get-platform" "5.20.0" + +"@prisma/fetch-engine@5.20.0": + version "5.20.0" + resolved "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.20.0.tgz" + integrity sha512-JVcaPXC940wOGpCOwuqQRTz6I9SaBK0c1BAyC1pcz9xBi+dzFgUu3G/p9GV1FhFs9OKpfSpIhQfUJE9y00zhqw== + dependencies: + "@prisma/debug" "5.20.0" + "@prisma/engines-version" "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284" + "@prisma/get-platform" "5.20.0" + +"@prisma/get-platform@5.20.0": + version "5.20.0" + resolved "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.20.0.tgz" + integrity sha512-8/+CehTZZNzJlvuryRgc77hZCWrUDYd/PmlZ7p2yNXtmf2Una4BWnTbak3us6WVdqoz5wmptk6IhsXdG2v5fmA== + dependencies: + "@prisma/debug" "5.20.0" + +"@react-aria/focus@^3.17.1": + version "3.18.3" + resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.3.tgz" + integrity sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw== + dependencies: + "@react-aria/interactions" "^3.22.3" + "@react-aria/utils" "^3.25.3" + "@react-types/shared" "^3.25.0" + "@swc/helpers" "^0.5.0" + clsx "^2.0.0" + +"@react-aria/interactions@^3.21.3", "@react-aria/interactions@^3.22.3": + version "3.22.3" + resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.3.tgz" + integrity sha512-RRUb/aG+P0IKTIWikY/SylB6bIbLZeztnZY2vbe7RAG5MgVaCgn5HQ45SI15GlTmhsFG8CnF6slJsUFJiNHpbQ== + dependencies: + "@react-aria/ssr" "^3.9.6" + "@react-aria/utils" "^3.25.3" + "@react-types/shared" "^3.25.0" + "@swc/helpers" "^0.5.0" + +"@react-aria/ssr@^3.9.6": + version "3.9.6" + resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.6.tgz" + integrity sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA== + dependencies: + "@swc/helpers" "^0.5.0" + +"@react-aria/utils@^3.25.3": + version "3.25.3" + resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.25.3.tgz" + integrity sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA== + dependencies: + "@react-aria/ssr" "^3.9.6" + "@react-stately/utils" "^3.10.4" + "@react-types/shared" "^3.25.0" + "@swc/helpers" "^0.5.0" + clsx "^2.0.0" + +"@react-stately/utils@^3.10.4": + version "3.10.4" + resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.4.tgz" + integrity sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw== + dependencies: + "@swc/helpers" "^0.5.0" + +"@react-types/shared@^3.25.0": + version "3.25.0" + resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.25.0.tgz" + integrity sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ== + +"@rollup/pluginutils@^5.1.2": + version "5.1.2" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz" + integrity sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-win32-x64-msvc@4.21.3": - version "4.21.3" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz" - integrity sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA== +"@rollup/rollup-win32-x64-msvc@4.24.0": + version "4.24.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz" + integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== -"@shikijs/core@1.17.7": - version "1.17.7" - resolved "https://registry.npmjs.org/@shikijs/core/-/core-1.17.7.tgz" - integrity sha512-ZnIDxFu/yvje3Q8owSHaEHd+bu/jdWhHAaJ17ggjXofHx5rc4bhpCSW+OjC6smUBi5s5dd023jWtZ1gzMu/yrw== +"@shikijs/core@1.22.0": + version "1.22.0" + resolved "https://registry.npmjs.org/@shikijs/core/-/core-1.22.0.tgz" + integrity sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q== dependencies: - "@shikijs/engine-javascript" "1.17.7" - "@shikijs/engine-oniguruma" "1.17.7" - "@shikijs/types" "1.17.7" - "@shikijs/vscode-textmate" "^9.2.2" + "@shikijs/engine-javascript" "1.22.0" + "@shikijs/engine-oniguruma" "1.22.0" + "@shikijs/types" "1.22.0" + "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" - hast-util-to-html "^9.0.2" + hast-util-to-html "^9.0.3" -"@shikijs/engine-javascript@1.17.7": - version "1.17.7" - resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.7.tgz" - integrity sha512-wwSf7lKPsm+hiYQdX+1WfOXujtnUG6fnN4rCmExxa4vo+OTmvZ9B1eKauilvol/LHUPrQgW12G3gzem7pY5ckw== +"@shikijs/engine-javascript@1.22.0": + version "1.22.0" + resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.0.tgz" + integrity sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw== dependencies: - "@shikijs/types" "1.17.7" - "@shikijs/vscode-textmate" "^9.2.2" + "@shikijs/types" "1.22.0" + "@shikijs/vscode-textmate" "^9.3.0" oniguruma-to-js "0.4.3" -"@shikijs/engine-oniguruma@1.17.7": - version "1.17.7" - resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.7.tgz" - integrity sha512-pvSYGnVeEIconU28NEzBXqSQC/GILbuNbAHwMoSfdTBrobKAsV1vq2K4cAgiaW1TJceLV9QMGGh18hi7cCzbVQ== +"@shikijs/engine-oniguruma@1.22.0": + version "1.22.0" + resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.0.tgz" + integrity sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw== dependencies: - "@shikijs/types" "1.17.7" - "@shikijs/vscode-textmate" "^9.2.2" + "@shikijs/types" "1.22.0" + "@shikijs/vscode-textmate" "^9.3.0" -"@shikijs/types@1.17.7": - version "1.17.7" - resolved "https://registry.npmjs.org/@shikijs/types/-/types-1.17.7.tgz" - integrity sha512-+qA4UyhWLH2q4EFd+0z4K7GpERDU+c+CN2XYD3sC+zjvAr5iuwD1nToXZMt1YODshjkEGEDV86G7j66bKjqDdg== +"@shikijs/types@1.22.0": + version "1.22.0" + resolved "https://registry.npmjs.org/@shikijs/types/-/types-1.22.0.tgz" + integrity sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww== dependencies: - "@shikijs/vscode-textmate" "^9.2.2" + "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" -"@shikijs/vscode-textmate@^9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz" - integrity sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg== +"@shikijs/vscode-textmate@^9.3.0": + version "9.3.0" + resolved "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz" + integrity sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -735,6 +911,70 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== +"@supabase/auth-js@2.65.0": + version "2.65.0" + resolved "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.65.0.tgz" + integrity sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/functions-js@2.4.1": + version "2.4.1" + resolved "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz" + integrity sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/node-fetch@^2.6.14", "@supabase/node-fetch@2.6.15": + version "2.6.15" + resolved "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz" + integrity sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ== + dependencies: + whatwg-url "^5.0.0" + +"@supabase/postgrest-js@1.16.1": + version "1.16.1" + resolved "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.16.1.tgz" + integrity sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/realtime-js@2.10.2": + version "2.10.2" + resolved "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.2.tgz" + integrity sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA== + dependencies: + "@supabase/node-fetch" "^2.6.14" + "@types/phoenix" "^1.5.4" + "@types/ws" "^8.5.10" + ws "^8.14.2" + +"@supabase/storage-js@2.7.0": + version "2.7.0" + resolved "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.0.tgz" + integrity sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/supabase-js@^2.45.4": + version "2.45.4" + resolved "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.45.4.tgz" + integrity sha512-E5p8/zOLaQ3a462MZnmnz03CrduA5ySH9hZyL03Y+QZLIOO4/Gs8Rdy4ZCKDHsN7x0xdanVEWWFN3pJFQr9/hg== + dependencies: + "@supabase/auth-js" "2.65.0" + "@supabase/functions-js" "2.4.1" + "@supabase/node-fetch" "2.6.15" + "@supabase/postgrest-js" "1.16.1" + "@supabase/realtime-js" "2.10.2" + "@supabase/storage-js" "2.7.0" + +"@swc/helpers@^0.5.0": + version "0.5.13" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" @@ -742,6 +982,18 @@ dependencies: defer-to-connect "^2.0.0" +"@tanstack/react-virtual@^3.8.1": + version "3.10.8" + resolved "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.10.8.tgz" + integrity sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA== + dependencies: + "@tanstack/virtual-core" "3.10.8" + +"@tanstack/virtual-core@3.10.8": + version "3.10.8" + resolved "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.10.8.tgz" + integrity sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA== + "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" @@ -804,10 +1056,10 @@ dependencies: "@types/ms" "*" -"@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@1.0.6": + version "1.0.6" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== "@types/hast@^3.0.0", "@types/hast@^3.0.4": version "3.0.4" @@ -839,9 +1091,9 @@ "@types/node" "*" "@types/mdast@^4.0.0": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz" - integrity sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== + version "4.0.4" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== dependencies: "@types/unist" "*" @@ -877,6 +1129,11 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== +"@types/phoenix@^1.5.4": + version "1.6.5" + resolved "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz" + integrity sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w== + "@types/prop-types@*", "@types/prop-types@^15.7.12": version "15.7.12" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" @@ -912,9 +1169,16 @@ "@types/node" "*" "@types/unist@*", "@types/unist@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz" - integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + +"@types/ws@^8.5.10": + version "8.5.12" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== + dependencies: + "@types/node" "*" "@ungap/structured-clone@^1.0.0": version "1.2.0" @@ -976,34 +1240,32 @@ loupe "^2.3.7" pretty-format "^29.7.0" -"@volar/kit@~2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@volar/kit/-/kit-2.0.4.tgz" - integrity sha512-USRx/o0jKz7o8+lEKWMxWqbqvC46XFrf3IE6CZBYzRo9kM7RERQLwUYaoT2bOcHt5DQWublpnTgdgHMm37Gysg== +"@volar/kit@~2.4.5": + version "2.4.6" + resolved "https://registry.npmjs.org/@volar/kit/-/kit-2.4.6.tgz" + integrity sha512-OaMtpmLns6IYD1nOSd0NdG/F5KzJ7Jr4B7TLeb4byPzu+ExuuRVeO56Dn1C7Frnw6bGudUQd90cpQAmxdB+RlQ== dependencies: - "@volar/language-service" "2.0.4" - "@volar/typescript" "2.0.4" + "@volar/language-service" "2.4.6" + "@volar/typescript" "2.4.6" typesafe-path "^0.2.2" vscode-languageserver-textdocument "^1.0.11" vscode-uri "^3.0.8" -"@volar/language-core@~2.0.4", "@volar/language-core@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-2.0.4.tgz" - integrity sha512-VhC8i03P0x9LKGLTBi81xNTNWm40yxQ/Iba8IpH+LFr+Yb7c/D7fF90Cvf31MzPDM4G5rjIOlCfs+eQKPBkwQw== +"@volar/language-core@~2.4.5", "@volar/language-core@2.4.6": + version "2.4.6" + resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.6.tgz" + integrity sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A== dependencies: - "@volar/source-map" "2.0.4" + "@volar/source-map" "2.4.6" -"@volar/language-server@~2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@volar/language-server/-/language-server-2.0.4.tgz" - integrity sha512-VnljhooQjT6RhmvwwJK9+3YYs2ovFmav4IVNHiQgnTMfiOiyABzcghwvJrJrI39rJDI6LNOWF7BYUJq7K07BKQ== - dependencies: - "@volar/language-core" "2.0.4" - "@volar/language-service" "2.0.4" - "@volar/snapshot-document" "2.0.4" - "@volar/typescript" "2.0.4" - "@vscode/l10n" "^0.0.16" +"@volar/language-server@~2.4.5": + version "2.4.6" + resolved "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.6.tgz" + integrity sha512-ARIbMXapEUPj9UFbZqWqw/iZ+ZuxUcY+vY212+2uutZVo/jrdzhLPu2TfZd9oB9akX8XXuslinT3051DyHLLRA== + dependencies: + "@volar/language-core" "2.4.6" + "@volar/language-service" "2.4.6" + "@volar/typescript" "2.4.6" path-browserify "^1.0.1" request-light "^0.7.0" vscode-languageserver "^9.0.1" @@ -1011,43 +1273,34 @@ vscode-languageserver-textdocument "^1.0.11" vscode-uri "^3.0.8" -"@volar/language-service@~2.0.1", "@volar/language-service@~2.0.4", "@volar/language-service@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@volar/language-service/-/language-service-2.0.4.tgz" - integrity sha512-DoanyU9I9Nl85lUytDl8jgyk+nrUDR5CFNVMrxWXGXclP4WTqBayBgSFAeF1L/5AwP3MywmWoK4GLAEVvl8D+Q== +"@volar/language-service@~2.4.0", "@volar/language-service@~2.4.5", "@volar/language-service@2.4.6": + version "2.4.6" + resolved "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.6.tgz" + integrity sha512-wNeEVBgBKgpP1MfMYPrgTf1K8nhOGEh3ac0+9n6ECyk2N03+j0pWCpQ2i99mRWT/POvo1PgizDmYFH8S67bZOA== dependencies: - "@volar/language-core" "2.0.4" + "@volar/language-core" "2.4.6" vscode-languageserver-protocol "^3.17.5" vscode-languageserver-textdocument "^1.0.11" vscode-uri "^3.0.8" -"@volar/snapshot-document@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@volar/snapshot-document/-/snapshot-document-2.0.4.tgz" - integrity sha512-YzgdmvpdRFxiBFCOVWga67naAtbPtKmPaFtGnmxWx+KXrjGkpUXT/2tzeKn5FLdtoYV+DRTdpMdP/45ArnVwZQ== - dependencies: - vscode-languageserver-protocol "^3.17.5" - vscode-languageserver-textdocument "^1.0.11" - -"@volar/source-map@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-2.0.4.tgz" - integrity sha512-BbxUinEMoJZqrHsSj1aBa0boCBnN3BoXnf7j9IBwjxosxGXOhCvqmH2L9raJemadaKjeVR8ZQLhV7AOhyoHt/Q== - dependencies: - muggle-string "^0.4.0" +"@volar/source-map@2.4.6": + version "2.4.6" + resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.6.tgz" + integrity sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw== -"@volar/typescript@~2.0.1", "@volar/typescript@~2.0.4", "@volar/typescript@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-2.0.4.tgz" - integrity sha512-KF7yh7GIo4iWuAQOKf/ONeFHdQA+wFriitW8LtGZB4iOOT6MdlRlYNsRL8do7XxmXvsBKcs4jTMtGn+uZRwlWg== +"@volar/typescript@2.4.6": + version "2.4.6" + resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.6.tgz" + integrity sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ== dependencies: - "@volar/language-core" "2.0.4" + "@volar/language-core" "2.4.6" path-browserify "^1.0.1" + vscode-uri "^3.0.8" -"@vscode/emmet-helper@^2.9.2": - version "2.9.2" - resolved "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.2.tgz" - integrity sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg== +"@vscode/emmet-helper@^2.9.3": + version "2.9.3" + resolved "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.3.tgz" + integrity sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw== dependencies: emmet "^2.4.3" jsonc-parser "^2.3.0" @@ -1055,11 +1308,6 @@ vscode-languageserver-types "^3.15.1" vscode-uri "^2.1.2" -"@vscode/l10n@^0.0.16": - version "0.0.16" - resolved "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.16.tgz" - integrity sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg== - "@vscode/l10n@^0.0.18": version "0.0.18" resolved "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz" @@ -1239,6 +1487,16 @@ ajv@^6.12.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.11.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-align@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" @@ -1282,7 +1540,7 @@ ansi-styles@^5.0.0: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansi-styles@^6.1.0: +ansi-styles@^6.1.0, ansi-styles@^6.2.1: version "6.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -1317,12 +1575,10 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" +aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== array-iterate@^2.0.0: version "2.0.1" @@ -1334,42 +1590,41 @@ assertion-error@^1.1.0: resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -"astro@^3.0.0 || ^4.0.0", astro@^4.15.7, astro@^4.2.0: - version "4.15.7" - resolved "https://registry.npmjs.org/astro/-/astro-4.15.7.tgz" - integrity sha512-RGZjGpLcR3jcnXA1+g56i73O77krmqs7VjpoBOfk9UVP8Js5T2YSeUBAyComOUb6vj31wEw1vgRgOEN0MzYc8w== +"astro@^3.0.0 || ^4.0.0 || ^5.0.0-beta.0", astro@^4.16.2, astro@^4.2.0: + version "4.16.2" + resolved "https://registry.npmjs.org/astro/-/astro-4.16.2.tgz" + integrity sha512-Dfkpyt6sA+nv6LnOJr+7bt+gQF5Qh02yqVgyes4c4SvcPScteq1bLX22/z/XW+VU0vlciJOMiM8GWtcDiF6gUQ== dependencies: "@astrojs/compiler" "^2.10.3" "@astrojs/internal-helpers" "0.4.1" - "@astrojs/markdown-remark" "5.2.0" + "@astrojs/markdown-remark" "5.3.0" "@astrojs/telemetry" "3.1.0" - "@babel/core" "^7.25.2" - "@babel/plugin-transform-react-jsx" "^7.25.2" - "@babel/types" "^7.25.6" - "@oslojs/encoding" "^0.4.1" - "@rollup/pluginutils" "^5.1.0" + "@babel/core" "^7.25.7" + "@babel/plugin-transform-react-jsx" "^7.25.7" + "@babel/types" "^7.25.7" + "@oslojs/encoding" "^1.1.0" + "@rollup/pluginutils" "^5.1.2" "@types/babel__core" "^7.20.5" "@types/cookie" "^0.6.0" acorn "^8.12.1" - aria-query "^5.3.0" + aria-query "^5.3.2" axobject-query "^4.1.0" - boxen "7.1.1" + boxen "8.0.1" ci-info "^4.0.0" clsx "^2.1.1" common-ancestor-path "^1.0.1" - cookie "^0.6.0" + cookie "^0.7.2" cssesc "^3.0.0" debug "^4.3.7" deterministic-object-hash "^2.0.2" - devalue "^5.0.0" + devalue "^5.1.1" diff "^5.2.0" dlv "^1.1.3" - dset "^3.1.3" + dset "^3.1.4" es-module-lexer "^1.5.4" esbuild "^0.21.5" estree-walker "^3.0.3" fast-glob "^3.3.2" - fastq "^1.17.1" flattie "^1.1.1" github-slugger "^2.0.0" gray-matter "^4.0.3" @@ -1385,25 +1640,22 @@ assertion-error@^1.1.0: ora "^8.1.0" p-limit "^6.1.0" p-queue "^8.0.1" - path-to-regexp "6.2.2" preferred-pm "^4.0.0" prompts "^2.4.2" - rehype "^13.0.1" + rehype "^13.0.2" semver "^7.6.3" - shiki "^1.16.2" - string-width "^7.2.0" - strip-ansi "^7.1.0" + shiki "^1.22.0" tinyexec "^0.3.0" tsconfck "^3.1.3" unist-util-visit "^5.0.0" vfile "^6.0.3" - vite "^5.4.3" + vite "^5.4.8" vitefu "^1.0.2" which-pm "^3.0.0" xxhash-wasm "^1.0.2" yargs-parser "^21.1.1" zod "^3.23.8" - zod-to-json-schema "^3.23.2" + zod-to-json-schema "^3.23.3" zod-to-ts "^1.2.0" optionalDependencies: sharp "^0.33.3" @@ -1418,16 +1670,16 @@ asynckit@^0.4.0: resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -autoprefixer@^10.4.15: - version "10.4.17" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz" - integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== +autoprefixer@^10.4.20: + version "10.4.20" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== dependencies: - browserslist "^4.22.2" - caniuse-lite "^1.0.30001578" + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" fraction.js "^4.3.7" normalize-range "^0.1.2" - picocolors "^1.0.0" + picocolors "^1.0.1" postcss-value-parser "^4.2.0" axios@^1.7.7: @@ -1478,19 +1730,19 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -boxen@7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz" - integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== +boxen@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz" + integrity sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw== dependencies: ansi-align "^3.0.1" - camelcase "^7.0.1" - chalk "^5.2.0" + camelcase "^8.0.0" + chalk "^5.3.0" cli-boxes "^3.0.0" - string-width "^5.1.2" - type-fest "^2.13.0" - widest-line "^4.0.1" - wrap-ansi "^8.1.0" + string-width "^7.2.0" + type-fest "^4.21.0" + widest-line "^5.0.0" + wrap-ansi "^9.0.0" brace-expansion@^1.1.7: version "1.1.11" @@ -1514,13 +1766,13 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.1, "browserslist@>= 4.21.0": - version "4.23.3" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== +browserslist@^4.21.10, browserslist@^4.23.3, browserslist@^4.24.0, "browserslist@>= 4.21.0": + version "4.24.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" node-releases "^2.0.18" update-browserslist-db "^1.1.0" @@ -1562,15 +1814,15 @@ camelcase-css@^2.0.1: resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz" - integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== +camelcase@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz" + integrity sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA== -caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001646: - version "1.0.30001655" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz" - integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg== +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663: + version "1.0.30001667" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz" + integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== ccount@^2.0.0: version "2.0.1" @@ -1607,7 +1859,7 @@ chalk@^4.0.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.2.0, chalk@^5.3.0: +chalk@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== @@ -1649,6 +1901,13 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chokidar@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz" + integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA== + dependencies: + readdirp "^4.0.1" + chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" @@ -1699,7 +1958,7 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clsx@^2.1.0, clsx@^2.1.1: +clsx@^2.0.0, clsx@^2.1.0, clsx@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -1791,10 +2050,10 @@ convert-source-map@^2.0.0: resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@^0.7.2: + version "0.7.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== copy-to-clipboard@^3.3.1: version "3.3.3" @@ -1898,7 +2157,7 @@ depd@2.0.0: resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -dequal@^2.0.0, dequal@^2.0.3: +dequal@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== @@ -1920,10 +2179,10 @@ deterministic-object-hash@^2.0.2: dependencies: base-64 "^1.0.0" -devalue@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz" - integrity sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA== +devalue@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz" + integrity sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw== devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" @@ -1965,7 +2224,7 @@ dotenv@^16.4.5: resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== -dset@^3.1.3: +dset@^3.1.3, dset@^3.1.4: version "3.1.4" resolved "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz" integrity sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA== @@ -1987,15 +2246,15 @@ ejs@^3.1.9: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.4: - version "1.5.13" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz" - integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== +electron-to-chromium@^1.5.28: + version "1.5.33" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.33.tgz" + integrity sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA== emmet@^2.4.3: - version "2.4.6" - resolved "https://registry.npmjs.org/emmet/-/emmet-2.4.6.tgz" - integrity sha512-dJfbdY/hfeTyf/Ef7Y7ubLYzkBvPQ912wPaeVYpAxvFxkEBf/+hJu4H6vhAvFN6HlxqedlfVn2x1S44FfQ97pg== + version "2.4.11" + resolved "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz" + integrity sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ== dependencies: "@emmetio/abbreviation" "^2.3.3" "@emmetio/css-abbreviation" "^2.1.8" @@ -2020,10 +2279,10 @@ emojis-list@^3.0.0: resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== end-of-stream@^1.1.0: version "1.4.4" @@ -2212,7 +2471,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.12, fast-glob@^3.3.0, fast-glob@^3.3.1, fast-glob@^3.3.2: +fast-glob@^3.2.12, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -2233,12 +2492,17 @@ fast-shallow-equal@^1.0.0: resolved "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz" integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== +fast-uri@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz" + integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row== + fastest-stable-stringify@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz" integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== -fastq@^1.17.1, fastq@^1.6.0: +fastq@^1.6.0: version "1.17.1" resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== @@ -2456,10 +2720,10 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" -hast-util-from-html@^2.0.0, hast-util-from-html@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz" - integrity sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g== +hast-util-from-html@^2.0.0, hast-util-from-html@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz" + integrity sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw== dependencies: "@types/hast" "^3.0.0" devlop "^1.1.0" @@ -2497,9 +2761,9 @@ hast-util-parse-selector@^4.0.0: "@types/hast" "^3.0.0" hast-util-raw@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz" - integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== + version "9.0.4" + resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz" + integrity sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA== dependencies: "@types/hast" "^3.0.0" "@types/unist" "^3.0.0" @@ -2515,7 +2779,7 @@ hast-util-raw@^9.0.0: web-namespaces "^2.0.0" zwitch "^2.0.0" -hast-util-to-html@^9.0.0, hast-util-to-html@^9.0.2: +hast-util-to-html@^9.0.0, hast-util-to-html@^9.0.3: version "9.0.3" resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz" integrity sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg== @@ -2842,10 +3106,10 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== json-buffer@3.0.1: version "3.0.1" @@ -2862,6 +3126,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json5@^2.1.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" @@ -2872,6 +3141,11 @@ jsonc-parser@^2.3.0: resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz" integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== +jsonc-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== + jsonc-parser@^3.2.0: version "3.2.1" resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" @@ -2960,6 +3234,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash@4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz" @@ -2999,13 +3278,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - "lru-cache@^9.1.1 || ^10.0.0": version "10.2.0" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz" @@ -3160,9 +3432,9 @@ mdast-util-phrasing@^4.0.0: unist-util-is "^6.0.0" mdast-util-to-hast@^13.0.0: - version "13.0.2" - resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz" - integrity sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og== + version "13.2.0" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz" + integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -3172,6 +3444,7 @@ mdast-util-to-hast@^13.0.0: trim-lines "^3.0.0" unist-util-position "^5.0.0" unist-util-visit "^5.0.0" + vfile "^6.0.0" mdast-util-to-markdown@^2.0.0: version "2.1.0" @@ -3596,7 +3869,7 @@ ms@2.0.0: resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -muggle-string@^0.4.0: +muggle-string@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz" integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== @@ -3916,11 +4189,6 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz" - integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== - path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -4026,7 +4294,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.28, postcss@^8.4.43, postcss@>=8.0.9: +postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.43, postcss@^8.4.47, postcss@>=8.0.9: version "8.4.47" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz" integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== @@ -4044,6 +4312,16 @@ preferred-pm@^4.0.0: find-yarn-workspace-root2 "1.2.16" which-pm "^3.0.0" +"prettier@^2.2 || ^3.0", prettier@^3.0.0: + version "3.3.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + +prettier@2.8.7: + version "2.8.7" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz" + integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== + pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" @@ -4053,6 +4331,15 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prisma@*, prisma@^5.20.0: + version "5.20.0" + resolved "https://registry.npmjs.org/prisma/-/prisma-5.20.0.tgz" + integrity sha512-6obb3ucKgAnsGS9x9gLOe8qa51XxvJ3vLQtmyf52CTey1Qcez3A6W6ROH5HIz5Q5bW+0VpmZb8WBohieMFGpig== + dependencies: + "@prisma/engines" "5.20.0" + optionalDependencies: + fsevents "2.3.3" + prismjs@^1.27.0, prismjs@^1.29.0: version "1.29.0" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" @@ -4076,9 +4363,9 @@ prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: react-is "^16.13.1" property-information@^6.0.0: - version "6.4.1" - resolved "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz" - integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== + version "6.5.0" + resolved "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz" + integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== proxy-from-env@^1.1.0: version "1.1.0" @@ -4120,7 +4407,7 @@ range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -react-dom@*, "react-dom@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react-dom@^15 || ^16", "react-dom@^16.3.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0 || ^19.0.0-beta", react-dom@^18.3.1, react-dom@>=16, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.1: +react-dom@*, "react-dom@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react-dom@^15 || ^16", "react-dom@^16.3.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18.0.0 || ^19.0.0-beta", react-dom@^18, react-dom@^18.3.1, react-dom@>=16, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=16.8.1: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -4271,7 +4558,7 @@ react-use@^17.3.1: ts-easing "^0.2.0" tslib "^2.1.0" -react@*, "react@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react@^15 || ^16", "react@^15.0.0 || ^16.0.0 || ^17.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0 || ^19.0.0-beta", react@^18.3.1, react@>=16, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=16.8.1: +react@*, "react@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react@^15 || ^16", "react@^15.0.0 || ^16.0.0 || ^17.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0", "react@^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18.0.0 || ^19.0.0-beta", react@^18, react@^18.3.1, "react@>= 16", react@>=16, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=16.8.1: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -4285,6 +4572,11 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" +readdirp@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz" + integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -4298,14 +4590,14 @@ regenerator-runtime@^0.14.0: integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regex@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/regex/-/regex-4.3.2.tgz" - integrity sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw== + version "4.3.3" + resolved "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz" + integrity sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg== rehype-parse@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz" - integrity sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw== + version "9.0.1" + resolved "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz" + integrity sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag== dependencies: "@types/hast" "^3.0.0" hast-util-from-html "^2.0.0" @@ -4320,19 +4612,19 @@ rehype-raw@^7.0.0: hast-util-raw "^9.0.0" vfile "^6.0.0" -rehype-stringify@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz" - integrity sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ== +rehype-stringify@^10.0.0, rehype-stringify@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz" + integrity sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA== dependencies: "@types/hast" "^3.0.0" hast-util-to-html "^9.0.0" unified "^11.0.0" -rehype@^13.0.1: - version "13.0.1" - resolved "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz" - integrity sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg== +rehype@^13.0.2: + version "13.0.2" + resolved "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz" + integrity sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A== dependencies: "@types/hast" "^3.0.0" rehype-parse "^9.0.0" @@ -4361,10 +4653,10 @@ remark-parse@^11.0.0: micromark-util-types "^2.0.0" unified "^11.0.0" -remark-rehype@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz" - integrity sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== +remark-rehype@^11.1.1: + version "11.1.1" + resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz" + integrity sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -4391,6 +4683,11 @@ remark-stringify@^11.0.0: mdast-util-to-markdown "^2.0.0" unified "^11.0.0" +request-light@^0.5.7: + version "0.5.8" + resolved "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz" + integrity sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg== + request-light@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz" @@ -4401,6 +4698,11 @@ require-directory@^2.1.1: resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" @@ -4450,9 +4752,9 @@ retext-latin@^4.0.0: unified "^11.0.0" retext-smartypants@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.1.1.tgz" - integrity sha512-onsHf34i/GzgElJgtT1K2V+31yEhWs7NJboKNxXJcmVMMPxLpgxZ9iADoMdydd6j/bHic5F/aNq0CGqElEtu2g== + version "6.2.0" + resolved "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz" + integrity sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ== dependencies: "@types/nlcst" "^2.0.0" nlcst-to-string "^4.0.0" @@ -4483,28 +4785,28 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^4.20.0: - version "4.21.3" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz" - integrity sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA== + version "4.24.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz" + integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== dependencies: - "@types/estree" "1.0.5" + "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.21.3" - "@rollup/rollup-android-arm64" "4.21.3" - "@rollup/rollup-darwin-arm64" "4.21.3" - "@rollup/rollup-darwin-x64" "4.21.3" - "@rollup/rollup-linux-arm-gnueabihf" "4.21.3" - "@rollup/rollup-linux-arm-musleabihf" "4.21.3" - "@rollup/rollup-linux-arm64-gnu" "4.21.3" - "@rollup/rollup-linux-arm64-musl" "4.21.3" - "@rollup/rollup-linux-powerpc64le-gnu" "4.21.3" - "@rollup/rollup-linux-riscv64-gnu" "4.21.3" - "@rollup/rollup-linux-s390x-gnu" "4.21.3" - "@rollup/rollup-linux-x64-gnu" "4.21.3" - "@rollup/rollup-linux-x64-musl" "4.21.3" - "@rollup/rollup-win32-arm64-msvc" "4.21.3" - "@rollup/rollup-win32-ia32-msvc" "4.21.3" - "@rollup/rollup-win32-x64-msvc" "4.21.3" + "@rollup/rollup-android-arm-eabi" "4.24.0" + "@rollup/rollup-android-arm64" "4.24.0" + "@rollup/rollup-darwin-arm64" "4.24.0" + "@rollup/rollup-darwin-x64" "4.24.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" + "@rollup/rollup-linux-arm-musleabihf" "4.24.0" + "@rollup/rollup-linux-arm64-gnu" "4.24.0" + "@rollup/rollup-linux-arm64-musl" "4.24.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" + "@rollup/rollup-linux-riscv64-gnu" "4.24.0" + "@rollup/rollup-linux-s390x-gnu" "4.24.0" + "@rollup/rollup-linux-x64-gnu" "4.24.0" + "@rollup/rollup-linux-x64-musl" "4.24.0" + "@rollup/rollup-win32-arm64-msvc" "4.24.0" + "@rollup/rollup-win32-ia32-msvc" "4.24.0" + "@rollup/rollup-win32-x64-msvc" "4.24.0" fsevents "~2.3.2" rtl-css-js@^1.16.1: @@ -4561,33 +4863,29 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.8: - version "7.6.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -semver@^7.5.4: - version "7.6.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" +semver@^7.6.2: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== semver@^7.6.3: version "7.6.3" resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -send@^0.18.0: - version "0.18.0" - resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@^0.19.0: + version "0.19.1" + resolved "https://registry.npmjs.org/send/-/send-0.19.1.tgz" + integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg== dependencies: debug "2.6.9" depd "2.0.0" destroy "1.2.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" @@ -4666,16 +4964,16 @@ shell-quote@^1.8.1: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== -shiki@^1.10.3, shiki@^1.16.2: - version "1.17.7" - resolved "https://registry.npmjs.org/shiki/-/shiki-1.17.7.tgz" - integrity sha512-Zf6hNtWhFyF4XP5OOsXkBTEx9JFPiN0TQx4wSe+Vqeuczewgk2vT4IZhF4gka55uelm052BD5BaHavNqUNZd+A== +shiki@^1.22.0: + version "1.22.0" + resolved "https://registry.npmjs.org/shiki/-/shiki-1.22.0.tgz" + integrity sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw== dependencies: - "@shikijs/core" "1.17.7" - "@shikijs/engine-javascript" "1.17.7" - "@shikijs/engine-oniguruma" "1.17.7" - "@shikijs/types" "1.17.7" - "@shikijs/vscode-textmate" "^9.2.2" + "@shikijs/core" "1.22.0" + "@shikijs/engine-javascript" "1.22.0" + "@shikijs/engine-oniguruma" "1.22.0" + "@shikijs/types" "1.22.0" + "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" siginfo@^2.0.0: @@ -4837,7 +5135,7 @@ string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string-width@^7.2.0: +string-width@^7.0.0, string-width@^7.2.0: version "7.2.0" resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== @@ -4847,9 +5145,9 @@ string-width@^7.2.0: strip-ansi "^7.1.0" stringify-entities@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz" - integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== + version "4.0.4" + resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== dependencies: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" @@ -4946,7 +5244,12 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -tailwindcss@^3.0.24, tailwindcss@^3.4.1: +tabbable@^6.0.0: + version "6.2.0" + resolved "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + +tailwindcss@^3.0.24: version "3.4.1" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz" integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== @@ -5101,7 +5404,7 @@ tsconfck@^3.1.3: resolved "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz" integrity sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ== -tslib@*, tslib@^2.1.0: +tslib@*, tslib@^2.1.0, tslib@^2.4.0: version "2.7.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== @@ -5111,20 +5414,20 @@ type-detect@^4.0.0, type-detect@^4.0.8: resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^2.13.0: - version "2.19.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== +type-fest@^4.21.0: + version "4.26.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz" + integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== typesafe-path@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz" integrity sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA== -typescript-auto-import-cache@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.2.tgz" - integrity sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg== +typescript-auto-import-cache@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.3.tgz" + integrity sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA== dependencies: semver "^7.3.8" @@ -5256,9 +5559,9 @@ util-deprecate@^1.0.2: integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== vfile-location@^5.0.0: - version "5.0.2" - resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz" - integrity sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== + version "5.0.3" + resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz" + integrity sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg== dependencies: "@types/unist" "^3.0.0" vfile "^6.0.0" @@ -5271,7 +5574,7 @@ vfile-message@^4.0.0: "@types/unist" "^3.0.0" unist-util-stringify-position "^4.0.0" -vfile@^6.0.0, vfile@^6.0.2, vfile@^6.0.3: +vfile@^6.0.0, vfile@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz" integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== @@ -5290,10 +5593,10 @@ vite-node@1.4.0: picocolors "^1.0.0" vite "^5.0.0" -"vite@^3.0.0 || ^4.0.0 || ^5.0.0", "vite@^4.2.0 || ^5.0.0", vite@^5.0.0, vite@^5.4.3: - version "5.4.6" - resolved "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz" - integrity sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q== +"vite@^3.0.0 || ^4.0.0 || ^5.0.0", "vite@^4.2.0 || ^5.0.0", vite@^5.0.0, vite@^5.4.8: + version "5.4.8" + resolved "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz" + integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ== dependencies: esbuild "^0.21.3" postcss "^8.4.43" @@ -5332,74 +5635,104 @@ vitest@^1.4.0: vite-node "1.4.0" why-is-node-running "^2.2.2" -volar-service-css@0.0.30: - version "0.0.30" - resolved "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.30.tgz" - integrity sha512-jui+1N0HBfjW43tRfhyZp0axhBee4997BRyX4os8xQm/7cjD2KjAuyz92nMIPRt1QDoG4/7uQT28xNhy0TPJTA== +volar-service-css@0.0.61: + version "0.0.61" + resolved "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.61.tgz" + integrity sha512-Ct9L/w+IB1JU8F4jofcNCGoHy6TF83aiapfZq9A0qYYpq+Kk5dH+ONS+rVZSsuhsunq8UvAuF8Gk6B8IFLfniw== dependencies: - vscode-css-languageservice "^6.2.10" + vscode-css-languageservice "^6.3.0" + vscode-languageserver-textdocument "^1.0.11" vscode-uri "^3.0.8" -volar-service-emmet@0.0.30: - version "0.0.30" - resolved "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.30.tgz" - integrity sha512-HEeIrmqQ/DTfuQDI9ER5+YReXXjE9f7W6MlBmn5biUuPyizVTGfuILN8pJhmYvmPHCA7qHhU7CJqwE9DAh9AJg== +volar-service-emmet@0.0.61: + version "0.0.61" + resolved "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.61.tgz" + integrity sha512-iiYqBxjjcekqrRruw4COQHZME6EZYWVbkHjHDbULpml3g8HGJHzpAMkj9tXNCPxf36A+f1oUYjsvZt36qPg4cg== dependencies: - "@vscode/emmet-helper" "^2.9.2" - volar-service-html "0.0.30" + "@emmetio/css-parser" "^0.4.0" + "@emmetio/html-matcher" "^1.3.0" + "@vscode/emmet-helper" "^2.9.3" + vscode-uri "^3.0.8" -volar-service-html@0.0.30: - version "0.0.30" - resolved "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.30.tgz" - integrity sha512-wW3TEeRTeHv/3mC8Ik6T62SwewMWFungb8ydyEK/2GDHEntBEG/J9wtuh01/J0kYqPerhlT9zhdGB6PGYHAGuA== +volar-service-html@0.0.61: + version "0.0.61" + resolved "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.61.tgz" + integrity sha512-yFE+YmmgqIL5HI4ORqP++IYb1QaGcv+xBboI0WkCxJJ/M35HZj7f5rbT3eQ24ECLXFbFCFanckwyWJVz5KmN3Q== dependencies: - vscode-html-languageservice "^5.1.0" + vscode-html-languageservice "^5.3.0" + vscode-languageserver-textdocument "^1.0.11" vscode-uri "^3.0.8" -volar-service-prettier@0.0.30: - version "0.0.30" - resolved "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.30.tgz" - integrity sha512-Qdc5Zc0y4hJmJbpIQ52cSDjs0uvVug/e2nuL/XZWPJM6Cr5/3RjjoRVKtDQbKItFYlGk+JH+LSXvwQeD5TXZqg== +volar-service-prettier@0.0.61: + version "0.0.61" + resolved "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.61.tgz" + integrity sha512-F612nql5I0IS8HxXemCGvOR2Uxd4XooIwqYVUvk7WSBxP/+xu1jYvE3QJ7EVpl8Ty3S4SxPXYiYTsG3bi+gzIQ== dependencies: vscode-uri "^3.0.8" -volar-service-typescript-twoslash-queries@0.0.30: - version "0.0.30" - resolved "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.30.tgz" - integrity sha512-ahj6woBxhkZu7icQR58x5TnUaS8ZRKn7a+UvY+andmiTWsOaSu85zj36+LPZgZQi1MG+BtjNwUjKoxtZiN51PA== +volar-service-typescript-twoslash-queries@0.0.61: + version "0.0.61" + resolved "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.61.tgz" + integrity sha512-99FICGrEF0r1E2tV+SvprHPw9Knyg7BdW2fUch0tf59kG+KG+Tj4tL6tUg+cy8f23O/VXlmsWFMIE+bx1dXPnQ== + dependencies: + vscode-uri "^3.0.8" -volar-service-typescript@0.0.30: - version "0.0.30" - resolved "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.30.tgz" - integrity sha512-jA8c0Mhy9rgAsrgtwocK95Smws1M2E0MxlQ/SVo/rmOGH32cX9UGgI0IENWKa3yagp/khfoemOIQDz/KNhI3zg== +volar-service-typescript@0.0.61: + version "0.0.61" + resolved "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.61.tgz" + integrity sha512-4kRHxVbW7wFBHZWRU6yWxTgiKETBDIJNwmJUAWeP0mHaKpnDGj/astdRFKqGFRYVeEYl45lcUPhdJyrzanjsdQ== dependencies: path-browserify "^1.0.1" - semver "^7.5.4" - typescript-auto-import-cache "^0.3.1" + semver "^7.6.2" + typescript-auto-import-cache "^0.3.3" vscode-languageserver-textdocument "^1.0.11" vscode-nls "^5.2.0" vscode-uri "^3.0.8" -vscode-css-languageservice@^6.2.10: - version "6.2.12" - resolved "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.2.12.tgz" - integrity sha512-PS9r7HgNjqzRl3v91sXpCyZPc8UDotNo6gntFNtGCKPhGA9Frk7g/VjX1Mbv3F00pn56D+rxrFzR9ep4cawOgA== +volar-service-yaml@0.0.61: + version "0.0.61" + resolved "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.61.tgz" + integrity sha512-L+gbDiLDQQ1rZUbJ3mf3doDsoQUa8OZM/xdpk/unMg1Vz24Zmi2Ign8GrZyBD7bRoIQDwOH9gdktGDKzRPpUNw== + dependencies: + vscode-uri "^3.0.8" + yaml-language-server "~1.15.0" + +vscode-css-languageservice@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.1.tgz" + integrity sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ== dependencies: "@vscode/l10n" "^0.0.18" - vscode-languageserver-textdocument "^1.0.11" + vscode-languageserver-textdocument "^1.0.12" vscode-languageserver-types "3.17.5" vscode-uri "^3.0.8" -vscode-html-languageservice@^5.1.0, vscode-html-languageservice@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.1.2.tgz" - integrity sha512-wkWfEx/IIR3s2P5yD4aTGHiOb8IAzFxgkSt1uSC3itJ4oDAm23yG7o0L29JljUdnXDDgLafPAvhv8A2I/8riHw== +vscode-html-languageservice@^5.2.0, vscode-html-languageservice@^5.3.0: + version "5.3.1" + resolved "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz" + integrity sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA== dependencies: "@vscode/l10n" "^0.0.18" - vscode-languageserver-textdocument "^1.0.11" + vscode-languageserver-textdocument "^1.0.12" vscode-languageserver-types "^3.17.5" vscode-uri "^3.0.8" +vscode-json-languageservice@4.1.8: + version "4.1.8" + resolved "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz" + integrity sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg== + dependencies: + jsonc-parser "^3.0.0" + vscode-languageserver-textdocument "^1.0.1" + vscode-languageserver-types "^3.16.0" + vscode-nls "^5.0.0" + vscode-uri "^3.0.2" + +vscode-jsonrpc@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz" + integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg== + vscode-jsonrpc@8.2.0: version "8.2.0" resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz" @@ -5413,16 +5746,36 @@ vscode-languageserver-protocol@^3.17.5, vscode-languageserver-protocol@3.17.5: vscode-jsonrpc "8.2.0" vscode-languageserver-types "3.17.5" -vscode-languageserver-textdocument@^1.0.1, vscode-languageserver-textdocument@^1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz" - integrity sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA== +vscode-languageserver-protocol@3.16.0: + version "3.16.0" + resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz" + integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A== + dependencies: + vscode-jsonrpc "6.0.0" + vscode-languageserver-types "3.16.0" + +vscode-languageserver-textdocument@^1.0.1, vscode-languageserver-textdocument@^1.0.11, vscode-languageserver-textdocument@^1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz" + integrity sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA== -vscode-languageserver-types@^3.15.1, vscode-languageserver-types@^3.17.5, vscode-languageserver-types@3.17.5: +vscode-languageserver-types@^3.15.1, vscode-languageserver-types@^3.16.0, vscode-languageserver-types@^3.17.5, vscode-languageserver-types@3.17.5: version "3.17.5" resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz" integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== +vscode-languageserver-types@3.16.0: + version "3.16.0" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz" + integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== + +vscode-languageserver@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz" + integrity sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw== + dependencies: + vscode-languageserver-protocol "3.16.0" + vscode-languageserver@^9.0.1: version "9.0.1" resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz" @@ -5430,7 +5783,7 @@ vscode-languageserver@^9.0.1: dependencies: vscode-languageserver-protocol "3.17.5" -vscode-nls@^5.2.0: +vscode-nls@^5.0.0, vscode-nls@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz" integrity sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng== @@ -5440,7 +5793,7 @@ vscode-uri@^2.1.2: resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz" integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A== -vscode-uri@^3.0.8: +vscode-uri@^3.0.2, vscode-uri@^3.0.8: version "3.0.8" resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz" integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== @@ -5539,12 +5892,12 @@ why-is-node-running@^2.2.2: siginfo "^2.0.0" stackback "0.0.2" -widest-line@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz" - integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== +widest-line@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz" + integrity sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA== dependencies: - string-width "^5.0.1" + string-width "^7.0.0" "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" @@ -5573,11 +5926,25 @@ wrap-ansi@^8.1.0: string-width "^5.0.1" strip-ansi "^7.0.1" +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +ws@^8.14.2: + version "8.18.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + xxhash-wasm@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz" @@ -5593,20 +5960,38 @@ yallist@^3.0.2: resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml-language-server@~1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.15.0.tgz" + integrity sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw== + dependencies: + ajv "^8.11.0" + lodash "4.17.21" + request-light "^0.5.7" + vscode-json-languageservice "4.1.8" + vscode-languageserver "^7.0.0" + vscode-languageserver-textdocument "^1.0.1" + vscode-languageserver-types "^3.16.0" + vscode-nls "^5.0.0" + vscode-uri "^3.0.2" + yaml "2.2.2" + optionalDependencies: + prettier "2.8.7" yaml@^1.10.0: version "1.10.2" resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.3.4: - version "2.3.4" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== +yaml@^2.3.4, yaml@^2.5.0: + version "2.5.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz" + integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== + +yaml@2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz" + integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== yargs-parser@^21.1.1: version "21.1.1" @@ -5636,7 +6021,7 @@ yocto-queue@^1.0.0, yocto-queue@^1.1.1: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz" integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== -zod-to-json-schema@^3.23.2: +zod-to-json-schema@^3.23.3: version "3.23.3" resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.3.tgz" integrity sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==