From 74b4892640b42367e3bd72899a4a927008d30c65 Mon Sep 17 00:00:00 2001 From: DevBen <109157533+git-create-devben@users.noreply.github.com> Date: Sat, 13 Jul 2024 10:09:15 -1200 Subject: [PATCH 01/60] Create nextjs.yml --- .github/workflows/nextjs.yml | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/nextjs.yml diff --git a/.github/workflows/nextjs.yml b/.github/workflows/nextjs.yml new file mode 100644 index 0000000..974fcb9 --- /dev/null +++ b/.github/workflows/nextjs.yml @@ -0,0 +1,93 @@ +# Sample workflow for building and deploying a Next.js site to GitHub Pages +# +# To get started with Next.js see: https://nextjs.org/docs/getting-started +# +name: Deploy Next.js site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["master"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Detect package manager + id: detect-package-manager + run: | + if [ -f "${{ github.workspace }}/yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "command=install" >> $GITHUB_OUTPUT + echo "runner=yarn" >> $GITHUB_OUTPUT + exit 0 + elif [ -f "${{ github.workspace }}/package.json" ]; then + echo "manager=npm" >> $GITHUB_OUTPUT + echo "command=ci" >> $GITHUB_OUTPUT + echo "runner=npx --no-install" >> $GITHUB_OUTPUT + exit 0 + else + echo "Unable to determine package manager" + exit 1 + fi + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: ${{ steps.detect-package-manager.outputs.manager }} + - name: Setup Pages + uses: actions/configure-pages@v5 + with: + # Automatically inject basePath in your Next.js configuration file and disable + # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized). + # + # You may remove this line if you want to manage the configuration yourself. + static_site_generator: next + - name: Restore cache + uses: actions/cache@v4 + with: + path: | + .next/cache + # Generate a new cache whenever packages or source files change. + key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} + # If source files changed but packages didn't, rebuild from a prior cache. + restore-keys: | + ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}- + - name: Install dependencies + run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} + - name: Build with Next.js + run: ${{ steps.detect-package-manager.outputs.runner }} next build + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./out + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From 8df14c8bdce7caecb646986def26ea4f30ab9cb2 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Sat, 13 Jul 2024 11:11:09 -1200 Subject: [PATCH 02/60] v1 --- .gitignore | 1 + components/main.tsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fd3dbb5..00bba9b 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ yarn-error.log* # local env files .env*.local +.env # vercel .vercel diff --git a/components/main.tsx b/components/main.tsx index f42bf5e..284be81 100644 --- a/components/main.tsx +++ b/components/main.tsx @@ -200,7 +200,7 @@ const Main: React.FC = () => { /> {/* center */} -
+
{conversation.length === 0 ? ( <> From 110ff629d23aabf6239bb6f25098de4c802fa67d Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Sun, 14 Jul 2024 03:46:22 -1200 Subject: [PATCH 03/60] v1 --- package-lock.json | 1212 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 1073 insertions(+), 139 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77b3f76..4cf2f91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,14 @@ "@ai-sdk/google": "^0.0.24", "@google-cloud/vertexai": "^1.3.0", "@google/generative-ai": "^0.14.1", + "@mantine/carousel": "^7.11.2", + "@mantine/core": "^7.11.1", + "@mantine/hooks": "^7.11.1", + "@radix-ui/react-alert-dialog": "^1.1.1", "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-scroll-area": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", + "@tabler/icons-react": "^3.10.0", "@types/js-cookie": "^3.0.6", "ai": "^3.2.16", "assert": "^2.1.0", @@ -23,7 +29,8 @@ "clsx": "^2.1.1", "constants-browserify": "^1.0.0", "crypto-browserify": "^3.12.0", - "embla-carousel-react": "^8.1.6", + "embla-carousel-autoplay": "^8.1.6", + "embla-carousel-react": "^7.1.0", "firebase": "^10.12.3", "firebase-admin": "^12.2.0", "https-browserify": "^1.0.0", @@ -34,9 +41,12 @@ "next-superjson": "^0.0.4", "os-browserify": "^0.3.0", "path-browserify": "^1.0.1", + "postcss-preset-mantine": "^1.15.0", + "postcss-simple-vars": "^7.0.1", "react": "^18", "react-dom": "^18", "react-hot-toast": "^2.4.1", + "sharp": "^0.33.4", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "tailwind-merge": "^2.3.0", @@ -645,6 +655,16 @@ "node": ">=6.9.0" } }, + "node_modules/@emnapi/runtime": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "dev": true, @@ -1165,6 +1185,59 @@ "version": "1.0.1", "license": "Apache-2.0" }, + "node_modules/@floating-ui/core": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", + "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", + "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.19", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.19.tgz", + "integrity": "sha512-Jk6zITdjjIvjO/VdQFvpRaD3qPwOHH6AoDHxjhpy+oK4KFgaSP871HYWUAPdnLmx1gQ+w/pB312co3tVml+BXA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.1", + "@floating-ui/utils": "^0.2.4", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "license": "MIT", + "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.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", + "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==", + "license": "MIT" + }, "node_modules/@google-cloud/firestore": { "version": "7.9.0", "license": "Apache-2.0", @@ -1304,18 +1377,468 @@ "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=12.22" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", + "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", + "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", + "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=11", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", + "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=10.13", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", + "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", + "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", + "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", + "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", + "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", + "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", + "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", + "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", + "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.31", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", + "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", + "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", + "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", + "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.1.1" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", + "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", + "cpu": [ + "ia32" + ], + "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", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", + "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", + "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", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "license": "ISC", @@ -1450,6 +1973,59 @@ "url": "https://opencollective.com/js-sdsl" } }, + "node_modules/@mantine/carousel": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@mantine/carousel/-/carousel-7.11.2.tgz", + "integrity": "sha512-SSK8VRMNhSzKV+icfjgBpc0XyN/SlwWZMw3bZ8/pg4kfhl8mzX21omG6ZaIaDdB3hs8CPLg1jZiQDjDAMniFpA==", + "license": "MIT", + "peerDependencies": { + "@mantine/core": "7.11.2", + "@mantine/hooks": "7.11.2", + "embla-carousel-react": ">=7.0.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, + "node_modules/@mantine/core": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.11.2.tgz", + "integrity": "sha512-T64RjdgY8UPAv249miW1lQyPPot1JbCcKKsAZMNQHgcttcxLhrFpKVvglc4/48hdSoxI4LYJPNvqp7zciZmucQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.26.9", + "clsx": "^2.1.1", + "react-number-format": "^5.3.1", + "react-remove-scroll": "^2.5.7", + "react-textarea-autosize": "8.5.3", + "type-fest": "^4.12.0" + }, + "peerDependencies": { + "@mantine/hooks": "7.11.2", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, + "node_modules/@mantine/core/node_modules/type-fest": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", + "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@mantine/hooks": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.11.2.tgz", + "integrity": "sha512-jhyVe/sbDEG2U8rr2lMecUPgQxcfr5hh9HazqGfkS7ZRIMDO7uJ947yAcTMGGkp5Lxtt5TBFt1Cb6tiB2/1agg==", + "license": "MIT", + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@next/env": { "version": "14.2.4", "license": "MIT" @@ -1462,6 +2038,126 @@ "glob": "10.3.10" } }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", + "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", + "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", + "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", + "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", + "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", + "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", + "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", + "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@next/swc-win32-x64-msvc": { "version": "14.2.4", "cpu": [ @@ -1564,10 +2260,44 @@ "version": "1.1.0", "license": "BSD-3-Clause" }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, "node_modules/@radix-ui/primitive": { "version": "1.1.0", "license": "MIT" }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.1.tgz", + "integrity": "sha512-wmCoJwj7byuVuiLKqDLlX7ClSUU0vd9sdCeM+2Ls+uf13+cpSJoMgwysHq1SGVVkJj5Xn0XWi1NoRCdkMpr6Mw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dialog": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.1.0", "license": "MIT", @@ -1628,6 +2358,21 @@ } } }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-dismissable-layer": { "version": "1.1.0", "license": "MIT", @@ -1770,6 +2515,37 @@ } } }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.1.0.tgz", + "integrity": "sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-slot": { "version": "1.1.0", "license": "MIT", @@ -1873,6 +2649,32 @@ "tslib": "^2.4.0" } }, + "node_modules/@tabler/icons": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.10.0.tgz", + "integrity": "sha512-jCMO+hDTw8Gn1CNb15zIENLQ9b0UplGXtjMnEUhDoKH+Q4fta8tBLUxZpPpFtpV+q+gzGqfM76xNAoD1GBpmnA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + } + }, + "node_modules/@tabler/icons-react": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.10.0.tgz", + "integrity": "sha512-FTES0wJLIV+M9Ggng0j/6Kn/j43ZuBukR5n6DNV8Npk4woPCDcRjA+2KzKQyvSdwtPMAM6o1e8fQBPDS337Spg==", + "license": "MIT", + "dependencies": { + "@tabler/icons": "3.10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + }, + "peerDependencies": { + "react": ">= 16" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "license": "MIT", @@ -3451,6 +4253,19 @@ "periscopic": "^3.1.0" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "license": "MIT", @@ -3465,6 +4280,16 @@ "version": "1.1.4", "license": "MIT" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "license": "MIT", @@ -3792,6 +4617,15 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node-es": { "version": "1.1.0", "license": "MIT" @@ -3939,26 +4773,36 @@ }, "node_modules/embla-carousel": { "version": "8.1.6", - "license": "MIT" + "license": "MIT", + "peer": true }, - "node_modules/embla-carousel-react": { + "node_modules/embla-carousel-autoplay": { "version": "8.1.6", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.1.6.tgz", + "integrity": "sha512-e5n9f4q+DVeBPiPPT3gwzqpiqfae8aP8fQACS4OZkPFvFLdsVhnWcw+cwtewryP7snWJGKPXEMA1GOjieEKv+w==", "license": "MIT", - "dependencies": { - "embla-carousel": "8.1.6", - "embla-carousel-reactive-utils": "8.1.6" - }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.1 || ^18.0.0" + "embla-carousel": "8.1.6" } }, - "node_modules/embla-carousel-reactive-utils": { - "version": "8.1.6", + "node_modules/embla-carousel-react": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-7.1.0.tgz", + "integrity": "sha512-tbYRPRZSDNd2QLNqYDcArAakGIxtUbhS7tkP0dGXktXHGgcX+3ji3VrOUTOftBiujZrMV8kRxtrRUe/1soloIQ==", "license": "MIT", + "dependencies": { + "embla-carousel": "7.1.0" + }, "peerDependencies": { - "embla-carousel": "8.1.6" + "react": "^16.8.0 || ^17.0.1 || ^18.0.0" } }, + "node_modules/embla-carousel-react/node_modules/embla-carousel": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-7.1.0.tgz", + "integrity": "sha512-Bh8Pa8NWzgugLkf8sAGexQlBCNDFaej5BXiKgQdRJ1mUC9NWBrw9Z23YVPVGkguWoz5LMjZXXFVGCobl3UPt/Q==", + "license": "MIT" + }, "node_modules/emoji-regex": { "version": "9.2.2", "license": "MIT" @@ -5645,6 +6489,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/is-async-function": { "version": "2.0.0", "dev": true, @@ -7597,6 +8447,28 @@ "url": "https://github.com/sponsors/antonk52" } }, + "node_modules/postcss-mixins": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-9.0.4.tgz", + "integrity": "sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "postcss-js": "^4.0.0", + "postcss-simple-vars": "^7.0.0", + "sugarss": "^4.0.1" + }, + "engines": { + "node": ">=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, "node_modules/postcss-nested": { "version": "6.0.1", "license": "MIT", @@ -7614,6 +8486,19 @@ "postcss": "^8.2.14" } }, + "node_modules/postcss-preset-mantine": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/postcss-preset-mantine/-/postcss-preset-mantine-1.15.0.tgz", + "integrity": "sha512-OKPs6uoORSXlU/GFH1ZtFaslecHBPwuoSikdL5W3WKJm4ZPAQM0mw9x9m3toa/Mo1JhoBmYMM28i+zEdav5Edg==", + "license": "MIT", + "dependencies": { + "postcss-mixins": "^9.0.4", + "postcss-nested": "^6.0.1" + }, + "peerDependencies": { + "postcss": ">=8.0.0" + } + }, "node_modules/postcss-selector-parser": { "version": "6.1.0", "license": "MIT", @@ -7625,6 +8510,22 @@ "node": ">=4" } }, + "node_modules/postcss-simple-vars": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-7.0.1.tgz", + "integrity": "sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==", + "license": "MIT", + "engines": { + "node": ">=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.1" + } + }, "node_modules/postcss-value-parser": { "version": "4.2.0", "license": "MIT" @@ -7821,6 +8722,19 @@ "version": "16.13.1", "license": "MIT" }, + "node_modules/react-number-format": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.0.tgz", + "integrity": "sha512-NWdICrqLhI7rAS8yUeLVd6Wr4cN7UjJ9IBTS0f/a9i7UB4x4Ti70kGnksBtZ7o4Z7YRbvCMMR/jQmkoOBa/4fg==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-remove-scroll": { "version": "2.5.7", "license": "MIT", @@ -7885,6 +8799,23 @@ } } }, + "node_modules/react-textarea-autosize": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "license": "MIT", @@ -8309,6 +9240,58 @@ "sha.js": "bin.js" } }, + "node_modules/sharp": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz", + "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.0" + }, + "engines": { + "libvips": ">=8.15.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.4", + "@img/sharp-darwin-x64": "0.33.4", + "@img/sharp-libvips-darwin-arm64": "1.0.2", + "@img/sharp-libvips-darwin-x64": "1.0.2", + "@img/sharp-libvips-linux-arm": "1.0.2", + "@img/sharp-libvips-linux-arm64": "1.0.2", + "@img/sharp-libvips-linux-s390x": "1.0.2", + "@img/sharp-libvips-linux-x64": "1.0.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", + "@img/sharp-libvips-linuxmusl-x64": "1.0.2", + "@img/sharp-linux-arm": "0.33.4", + "@img/sharp-linux-arm64": "0.33.4", + "@img/sharp-linux-s390x": "0.33.4", + "@img/sharp-linux-x64": "0.33.4", + "@img/sharp-linuxmusl-arm64": "0.33.4", + "@img/sharp-linuxmusl-x64": "0.33.4", + "@img/sharp-wasm32": "0.33.4", + "@img/sharp-win32-ia32": "0.33.4", + "@img/sharp-win32-x64": "0.33.4" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "license": "MIT", @@ -8352,6 +9335,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "dev": true, @@ -8722,6 +9714,22 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/sugarss": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", + "integrity": "sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==", + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, "node_modules/superjson": { "version": "1.13.3", "license": "MIT", @@ -8815,6 +9823,12 @@ "vue": ">=3.2.26 < 4" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, "node_modules/tailwind-merge": { "version": "2.3.0", "license": "MIT", @@ -9320,6 +10334,46 @@ } } }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-sidecar": { "version": "1.1.2", "license": "MIT", @@ -9765,126 +10819,6 @@ "peerDependencies": { "zod": "^3.22.4" } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz", - "integrity": "sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz", - "integrity": "sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz", - "integrity": "sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz", - "integrity": "sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz", - "integrity": "sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz", - "integrity": "sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz", - "integrity": "sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz", - "integrity": "sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } } } } From 7220ca1dcf34bac2a98459803071c9ff72571eb1 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Sun, 14 Jul 2024 03:53:15 -1200 Subject: [PATCH 04/60] v1 --- bun.lockb | Bin 373710 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bun.lockb diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index 1e09da0c24dd74256a3a353a5f6bdebe36d4537a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373710 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 z 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 T7koZk>DAjR4c__x^q>C+aCN&U From bbf3476a7054e3e473b27eb1544ce1361ddc3fd9 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Mon, 15 Jul 2024 03:27:08 -1200 Subject: [PATCH 05/60] v1 --- app/api/gemini/route.ts | 4 ++-- components/loading.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 027caa4..4dc51e6 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -8,13 +8,13 @@ import { // Initialize Vertex AI with your Cloud project and location const vertexAI = new VertexAI({ - project: process.env.GCP_PROJECT_ID, + project: "loca-bc18e", location: 'us-central1', }); // Function to get local services from Google Places API async function getLocalServices(query: string, latitude: string, longitude: string) { - const apiKey = process.env.GOOGLE_PLACE_API; + const apiKey = "AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc"; if (!apiKey) { console.error('Google Places API key is not set'); diff --git a/components/loading.tsx b/components/loading.tsx index 8d5385b..6a0133e 100644 --- a/components/loading.tsx +++ b/components/loading.tsx @@ -7,9 +7,9 @@ export function SkeletonCard() { - +

- + ); } From 718a2f0d437910d8f53116932556bb72f0a8e7e0 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Mon, 15 Jul 2024 18:36:35 -1200 Subject: [PATCH 06/60] v1 --- .firebase/hosting.b3V0.cache | 47 + .firebaserc | 5 + app/api/gemini/route.ts | 9 +- firebase.json | 18 + next.config.mjs | 1 + package-lock.json | 5661 ++++++++++++++++++++++++++++++++-- package.json | 1 + 7 files changed, 5505 insertions(+), 237 deletions(-) create mode 100644 .firebase/hosting.b3V0.cache create mode 100644 .firebaserc create mode 100644 firebase.json diff --git a/.firebase/hosting.b3V0.cache b/.firebase/hosting.b3V0.cache new file mode 100644 index 0000000..d902f03 --- /dev/null +++ b/.firebase/hosting.b3V0.cache @@ -0,0 +1,47 @@ +next.svg,1720078907463,0665b9ab4493aa9d7e988b57024e28772ae543e804b8cf6b0a3633854b7c3c7f +index.html,1721108752590,18c1a30e632e106c2df9639946f964401ba16f4a59248209ae4d637c40d0e195 +404.html,1721108761920,2f33f881b7e806b53c45c679f4dc8bc2d60a3b4a5138b439fcea2bc6088048ff +favicon.ico,1721108752990,8f464a2201e59f4efcad2c7313c115aaebe88e82b0d96f746140b0375263a396 +vercel.svg,1720078907483,41e95a86eeec887b8b898097594cf4c4bc5da8f58faf05830e1229d7dcbeea59 +index.txt,1721108752580,b9c6297ec521a050b402ae498e0956d532f59158a3cd7ab472093fde72e41422 +_next/static/P1Nx25pI-8_chBsRCVYs2/_buildManifest.js,1721108744146,aab49d661705fbefd794fd4ea2a912544b2bf31823a8c67198f147a334c2b861 +_next/static/P1Nx25pI-8_chBsRCVYs2/_ssgManifest.js,1721108753470,dc28a4dc92fe352ed5d2201bd3972ce47691bc8e89e0400a68d1541d0567c6d5 +chat.txt,1721108752828,fa649c5ca646750484894a9fc08ddea483f432c1219f2dbb9abce91a98983b18 +chat.html,1721108752847,47868c81f21cb9727ce9c02a2a9f86c1f891b5031c9f10962ba5a6a3b7a55384 +_next/static/chunks/main-app-32fe7ebe92a0f16b.js,1721108744139,2a119469936135ceb11cece1397c0a921b38f0f0dd7cfbd1f738d3209c00e4c7 +_next/static/chunks/webpack-281d0fa22dd07a72.js,1721108744139,d891a562e16662afb0a81c2261944186138295290bf82a0aa148b04e9a3e7341 +_next/static/css/a81c10de441ea55b.css,1721108744147,d2df6bef3bda47d90c946988a8865d93298729340b482b8de72538a8648ca6ee +_next/static/media/4f2204fa15b9b11a-s.woff2,1721108744138,470dd2a44038d0be5a0e552823b1835df6c1e5a54ab84447f2c27e220485d66e +_next/static/media/logo-black.29edc37f.png,1721108737671,25df612956eefe829a4e21fb4da01429424792f0b4facdc5c79b20e04d9b70c7 +_next/static/chunks/726-acee4750eb23933c.js,1721108744145,011027c5ccfa6b0f635469b380440d3298c55c4999f76efd7a9aaf35dd7e825b +_next/static/chunks/195-b8abb1f443ec72c3.js,1721108744145,05874d09d126fea1cc1ef5cc996a524b89a71bdcba73ff317d03c47ff4a2bd93 +_next/static/chunks/app/page-4c38e96105ca817f.js,1721108744139,534a2d787730b569bd58e7ef06a20c86a362453ade6dcd9eae125b0aac201f6c +_next/static/chunks/app/layout-4f49777aec53c3fa.js,1721108744139,15e62102a586650db878767dcc6a8fb5e24b1d414e40d288f1a4dddeb60f706c +_next/static/chunks/pages/_app-6a626577ffa902a4.js,1721108744139,da4e577bd19ab14c18a4b8604793a7c5efecf88cabe7c531ccecb37eef84fdbb +_next/static/chunks/pages/_error-1be831200e60c5c0.js,1721108744139,cc6560c1f7aa97ce4c3af32428121dfb1d7d9a2f48aa99f3f6d9a9e2b8eab20d +_next/static/chunks/app/_not-found/page-1851a68c43307a99.js,1721108744140,1c65d7cb8f9c03005c333250d0de46931a8986ead877940b88af78a427d61350 +svg/logo-no-background.svg,1720078631740,ada015423e21cde2ef4bf6d4bbc6fd78e13ba143bea058570b2f5b9069a73f85 +svg/logo-white.svg,1720078631711,7ee1ae93e08fc765fbc680a7c9b51c0a60825d78eab90cdbd9aaa59f84dad962 +svg/logo-black.svg,1720078631636,8331392aa00eb6a9e5998195da0ae5de868aec08183f01656c9f777e5f973224 +svg/logo-color.svg,1720078631678,f38c2285da5e1b0d2439f7e4149c67ce1d18ae936022ac427914552a9e480bf7 +_next/static/chunks/app/chat/page-bfb32560dc196295.js,1721108744139,a3160c783b9d3ea605d96dc69ee270a976bfabd1b520f40862a369bd5c0d12ac +png/logo-white.png,1720078631841,8f464a2201e59f4efcad2c7313c115aaebe88e82b0d96f746140b0375263a396 +png/logo-black.png,1720078631796,25df612956eefe829a4e21fb4da01429424792f0b4facdc5c79b20e04d9b70c7 +png/logo-color.png,1720078631811,ac7b833f9aa87744217f72e7be6b11c9011c0d41a9694f2b30ca0a2cc5521dff +pdf/logo-white.pdf,1720078631953,0c9a327a4c95db73370c30b77821ab5c02b4f3a670c66854af3fc6a75ca7624c +pdf/logo-no-background.pdf,1720078631874,e43b8d19d82c47c8a68fbffe045781e0454ea850d72807e8efea6960382d77b3 +pdf/logo-color.pdf,1720078631922,0455cc77ca63007a4e31867d0b36a995baab7c9f565887b4d364ced697a712eb +pdf/logo-black.pdf,1720078631895,1b2ab5c33aab53b59cc310812819be01548adaa078e08d4e581fedd664fcce1a +_next/static/media/logo-no-background.fef91868.png,1721108737671,601e801092f36f6e13c1b5e24407fe4e9b4bb07e7e1f2560377a4bddbd8f77d1 +_next/static/media/07a54048a9278940-s.p.woff2,1721108744138,5ae154dc68f402229e92a67a1d72ed02d607dfa68e4a392ffccb8df113575c92 +png/logo-no-background.png,1720078631772,601e801092f36f6e13c1b5e24407fe4e9b4bb07e7e1f2560377a4bddbd8f77d1 +_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,1721108744145,93e304855c6f9653fea1a8f24da04735f940c4a2170e5af8a5e2de396f449d07 +_next/static/chunks/main-2bd947d30d4a370d.js,1721108744139,e40d1998f51567afa692bf51c99814019d0e655cb8e9a243043646aac87c4d00 +_next/static/chunks/46be18a3-8f27bb02c0a4aa3b.js,1721108744145,eab520951de32fde0d385efa06854d59cc630945b6d699026e709def67bddf61 +_next/static/chunks/23-63cd49dc8cd7bfb1.js,1721108744145,74880b4e07eedc25b4f3e4a113b7b9cd92e8268f962d0d801a61462db9f367dc +_next/static/chunks/446-0e1348509952c6a6.js,1721108744145,99fd14169dad741ee81cda5e5f07c86e15fa8c50b69f38519fb83a11cc8b2065 +_next/static/chunks/902-b1e1a75c353e4a16.js,1721108744145,ca05c6f5df500e508db6c88126a98c90c249cddd0c07a7cc001400def1867712 +_next/static/chunks/framework-f66176bb897dc684.js,1721108744139,b95536ab177e1a3e5dec8e463446de6222de3061fc82bfebcf738302e614056d +_next/static/chunks/fd9d1056-82fc2a82826c61b9.js,1721108744145,9bfaeeb9c40935b045e33d970fb381a6325b01f2f1483dfc0d434035f188b62d +_next/static/media/user.70030e23.png,1721108737671,0f924d0d073e90f208f43eefb79de4f3e580a5891a8681677c723e3d8c2e0be6 +png/user.png,1711460863825,0f924d0d073e90f208f43eefb79de4f3e580a5891a8681677c723e3d8c2e0be6 diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 0000000..9146f09 --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "loca-bc18e" + } +} diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 4dc51e6..eaf38d9 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -33,6 +33,8 @@ async function getLocalServices(query: string, latitude: string, longitude: stri timeout: 5000, // Reduced timeout for faster failure }); + console.log(response) + if (response.data.status === 'REQUEST_DENIED') { console.error('Google Places API request denied:', response.data.error_message); throw new Error(`Google Places API request denied: ${response.data.error_message}`); @@ -90,7 +92,7 @@ export async function POST(req: NextRequest) { ], }); - console.log('Fetching local services'); + console.log(chat + 'Fetching local services'); let services; try { services = await getLocalServices(userMessage, latitude, longitude); @@ -99,7 +101,7 @@ export async function POST(req: NextRequest) { console.error('Error fetching local services:', error); services = []; } - + console.log(services) console.log('Sending message to Vertex AI'); const contextMessage = `You are to act as a loca an AI local service finder build by devben. User is looking for local services: "${userMessage}". ${ services.length > 0 @@ -108,11 +110,12 @@ export async function POST(req: NextRequest) { }`; const result = await chat.sendMessage(contextMessage); + console.log(result) const response = await result.response; console.log('Received response from Vertex AI'); const vertexResponseText = response.candidates?.[0]?.content?.parts?.[0]?.text || 'No response from Vertex AI'; - + console.log(vertexResponseText) return NextResponse.json({ vertexResponse: vertexResponseText, services diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..ccb5318 --- /dev/null +++ b/firebase.json @@ -0,0 +1,18 @@ +{ + "hosting": { + "public": "out", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ] + }, + "emulators": { + "hosting": { + "port": 5087 + }, + "ui": { + "enabled": false + } + } +} diff --git a/next.config.mjs b/next.config.mjs index 151fbc0..57d339d 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,5 +1,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + // output:'export', images:{ remotePatterns:[ { diff --git a/package-lock.json b/package-lock.json index 4cf2f91..85911be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,6 +61,7 @@ "@types/react-dom": "^18", "eslint": "^8", "eslint-config-next": "14.2.4", + "firebase-tools": "^13.13.2", "fluid-tailwind": "^1.0.2", "literate-ts": "^2.5.0", "postcss": "^8", @@ -250,6 +251,19 @@ "node": ">=6.0.0" } }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", + "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, "node_modules/@auth/core": { "version": "0.32.0", "license": "ISC", @@ -655,6 +669,29 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", @@ -1238,6 +1275,22 @@ "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==", "license": "MIT" }, + "node_modules/@google-cloud/cloud-sql-connector": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@google-cloud/cloud-sql-connector/-/cloud-sql-connector-1.3.3.tgz", + "integrity": "sha512-Z/6haHca3bnaf1I2t/lmRgU5pCzGQTK6u9hMnD6a6sCL46QB4JRiBvRI5QMSPjnG8VYr1R7Wp1ZawvQJodEY6g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@googleapis/sqladmin": "^19.0.0", + "gaxios": "^6.1.1", + "google-auth-library": "^9.2.0", + "p-throttle": "^5.1.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@google-cloud/firestore": { "version": "7.9.0", "license": "Apache-2.0", @@ -1254,8 +1307,8 @@ }, "node_modules/@google-cloud/paginator": { "version": "5.0.2", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "arrify": "^2.0.0", "extend": "^3.0.2" @@ -1264,22 +1317,58 @@ "node": ">=14.0.0" } }, + "node_modules/@google-cloud/precise-date": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-4.0.0.tgz", + "integrity": "sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@google-cloud/projectify": { "version": "4.0.0", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=14.0.0" } }, "node_modules/@google-cloud/promisify": { "version": "4.0.0", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=14" } }, + "node_modules/@google-cloud/pubsub": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-4.5.0.tgz", + "integrity": "sha512-ptRLLDrAp1rStD1n3ZrG8FdAfpccqI6M5rCaceF6PL7DU3hqJbvQ2Y91G8MKG7c7zK+jiWv655Qf5r2IvjTzwA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/precise-date": "^4.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "@opentelemetry/api": "~1.8.0", + "@opentelemetry/semantic-conventions": "~1.21.0", + "arrify": "^2.0.0", + "extend": "^3.0.2", + "google-auth-library": "^9.3.0", + "google-gax": "^4.3.3", + "heap-js": "^2.2.0", + "is-stream-ended": "^0.1.4", + "lodash.snakecase": "^4.1.1", + "p-defer": "^3.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@google-cloud/storage": { "version": "7.11.2", "license": "Apache-2.0", @@ -1332,6 +1421,19 @@ "node": ">=18.0.0" } }, + "node_modules/@googleapis/sqladmin": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@googleapis/sqladmin/-/sqladmin-19.0.0.tgz", + "integrity": "sha512-65zgEpQLhpTZqUic+pm4BbdDByN9NsHkphfCIwzpx3fccHPc6OuKsW0XexYCq9oTUtTC4QRjFisBDLV9fChRtg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/@grpc/grpc-js": { "version": "1.9.15", "license": "Apache-2.0", @@ -1966,13 +2068,20 @@ }, "node_modules/@js-sdsl/ordered-map": { "version": "4.4.2", + "devOptional": true, "license": "MIT", - "optional": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/js-sdsl" } }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true, + "license": "MIT" + }, "node_modules/@mantine/carousel": { "version": "7.11.2", "resolved": "https://registry.npmjs.org/@mantine/carousel/-/carousel-7.11.2.tgz", @@ -2201,6 +2310,95 @@ "node": ">= 8" } }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", + "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.21.0.tgz", + "integrity": "sha512-lkC8kZYntxVKr7b8xmjCVUgE0a8xgDakPyDo9uSWavXPyYqLgYYGdEd2j8NxihRyb6UwpX3G/hFUF4/9q2V+/g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, "node_modules/@panva/hkdf": { "version": "1.2.1", "license": "MIT", @@ -2216,6 +2414,51 @@ "node": ">=14" } }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "license": "BSD-3-Clause" @@ -2677,12 +2920,19 @@ }, "node_modules/@tootallnate/once": { "version": "2.0.0", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">= 10" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/body-parser": { "version": "1.19.5", "license": "MIT", @@ -2693,8 +2943,8 @@ }, "node_modules/@types/caseless": { "version": "0.12.5", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@types/connect": { "version": "3.4.38", @@ -2780,8 +3030,8 @@ }, "node_modules/@types/long": { "version": "4.0.2", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", @@ -2831,8 +3081,8 @@ }, "node_modules/@types/request": { "version": "2.48.12", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "@types/caseless": "*", "@types/node": "*", @@ -2842,8 +3092,8 @@ }, "node_modules/@types/request/node_modules/form-data": { "version": "2.5.1", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -2872,8 +3122,15 @@ }, "node_modules/@types/tough-cookie": { "version": "4.0.5", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/parser": { "version": "7.2.0", @@ -3253,10 +3510,21 @@ "license": "Apache-2.0", "peer": true }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/abort-controller": { "version": "3.0.0", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -3264,6 +3532,20 @@ "node": ">=6.5" } }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.12.1", "license": "MIT", @@ -3300,6 +3582,21 @@ "node": ">= 14" } }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ai": { "version": "3.2.16", "license": "Apache-2.0", @@ -3373,6 +3670,48 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/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==", + "dev": true, + "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/ajv-formats/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==", + "dev": true, + "license": "MIT" + }, "node_modules/ajv-keywords": { "version": "3.5.2", "license": "MIT", @@ -3380,18 +3719,79 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" @@ -3400,6 +3800,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true, + "license": "MIT" + }, "node_modules/any-promise": { "version": "1.3.0", "license": "MIT" @@ -3415,6 +3822,78 @@ "node": ">= 8" } }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/arg": { "version": "5.0.2", "license": "MIT" @@ -3457,6 +3936,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, "node_modules/array-includes": { "version": "3.1.8", "dev": true, @@ -3605,12 +4091,19 @@ }, "node_modules/arrify": { "version": "2.0.1", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">=8" } }, + "node_modules/as-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/as-array/-/as-array-2.0.0.tgz", + "integrity": "sha512-1Sd1LrodN0XYxYeZcN1J4xYZvmvTwD5tDWaPUGPIzH1mFsmzsPnVtd2exWhecMjtZk/wYWjNZJiD3b1SLCeJqg==", + "dev": true, + "license": "MIT" + }, "node_modules/asn1.js": { "version": "4.10.1", "license": "MIT", @@ -3635,11 +4128,38 @@ "util": "^0.12.5" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/ast-types-flow": { "version": "0.0.8", "dev": true, "license": "MIT" }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-lock": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.3.2.tgz", + "integrity": "sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA==", + "dev": true, + "license": "MIT" + }, "node_modules/async-retry": { "version": "1.3.3", "license": "MIT", @@ -3690,6 +4210,13 @@ "deep-equal": "^2.0.5" } }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/babel-loader": { "version": "8.3.0", "license": "MIT", @@ -3796,6 +4323,14 @@ "version": "1.0.2", "license": "MIT" }, + "node_modules/bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, "node_modules/base64-js": { "version": "1.5.1", "funding": [ @@ -3814,6 +4349,43 @@ ], "license": "MIT" }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha512-kiV+/DTgVro4aZifY/hwRwALBISViL5NP4aReaR2EVJEObpbUBHIkdJh/YpcoEiYt7nBodZ6U2ajZeZvSxUCCg==", + "dev": true, + "license": "MIT" + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/big.js": { "version": "5.2.2", "license": "MIT", @@ -3838,10 +4410,168 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/bn.js": { "version": "5.2.1", "license": "MIT" }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "dev": true, @@ -4006,6 +4736,16 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "license": "BSD-3-Clause" @@ -4032,6 +4772,49 @@ "node": ">=10.16.0" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC", + "optional": true + }, "node_modules/call-bind": { "version": "1.0.7", "license": "MIT", @@ -4049,6 +4832,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true, + "license": "MIT" + }, "node_modules/callsites": { "version": "3.1.0", "dev": true, @@ -4057,6 +4847,19 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/camelcase-css": { "version": "2.0.1", "license": "MIT", @@ -4082,6 +4885,20 @@ ], "license": "CC-BY-4.0" }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, "node_modules/chalk": { "version": "4.1.2", "dev": true, @@ -4097,6 +4914,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, "node_modules/chokidar": { "version": "3.6.0", "license": "MIT", @@ -4129,6 +4953,16 @@ "node": ">= 6" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.4", "license": "MIT", @@ -4137,6 +4971,13 @@ "node": ">=6.0" } }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cipher-base": { "version": "1.0.4", "license": "MIT", @@ -4145,6 +4986,19 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/cjson": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.3.tgz", + "integrity": "sha512-yKNcXi/Mvi5kb1uK0sahubYiyfUO2EUgOp4NcY9+8NX5Xmc+4yeNogZuLFkpLBBj7/QI9MjRUIuXrV9XOw5kVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-parse-helpfulerror": "^1.0.3" + }, + "engines": { + "node": ">= 0.3.0" + } + }, "node_modules/class-variance-authority": { "version": "0.7.0", "license": "Apache-2.0", @@ -4162,6 +5016,30 @@ "node": ">=6" } }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-cursor": { "version": "4.0.0", "dev": true, @@ -4187,6 +5065,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, "node_modules/client-only": { "version": "0.0.1", "license": "MIT" @@ -4234,6 +5172,16 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.1", "license": "MIT", @@ -4290,6 +5238,62 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/colorspace/node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/colorspace/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/colorspace/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, "node_modules/combined-stream": { "version": "1.0.8", "license": "MIT", @@ -4316,111 +5320,510 @@ "version": "1.0.1", "license": "MIT" }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", "dev": true, - "license": "MIT" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "license": "MIT" + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "license": "MIT" + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } }, - "node_modules/cookie": { - "version": "0.6.0", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, "engines": { "node": ">= 0.6" } }, - "node_modules/copy-anything": { - "version": "3.0.5", + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "is-what": "^4.1.8" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" }, "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "node": ">= 0.8.0" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "license": "MIT" + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/create-ecdh": { - "version": "4.0.4", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "ms": "2.0.0" } }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, - "node_modules/create-hash": { - "version": "1.2.0", + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, "license": "MIT", "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/create-hmac": { - "version": "1.1.7", - "license": "MIT", + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": ">= 8" + "node": ">= 0.10.0" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.6.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "license": "MIT", + "peer": true, + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-env": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.5" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/cross-env/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-env/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/cross-env/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cross-env/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cross-env/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cross-env/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", "randomfill": "^1.0.3" }, "engines": { "node": "*" } }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/css-tree": { "version": "2.3.1", "license": "MIT", @@ -4447,11 +5850,28 @@ "version": "3.1.3", "license": "MIT" }, + "node_modules/csv-parse": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.6.tgz", + "integrity": "sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==", + "dev": true, + "license": "MIT" + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "dev": true, "license": "BSD-2-Clause" }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/data-view-buffer": { "version": "1.0.1", "dev": true, @@ -4546,11 +5966,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/deep-equal-in-any-order": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/deep-equal-in-any-order/-/deep-equal-in-any-order-2.0.6.tgz", + "integrity": "sha512-RfnWHQzph10YrUjvWwhd15Dne8ciSJcZ3U6OD7owPwiVwsdE5IFSoZGg8rlwJD11ES+9H5y8j3fCofviRHOqLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.mapvalues": "^4.6.0", + "sort-any": "^2.0.0" + } + }, "node_modules/deep-equal/node_modules/isarray": { "version": "2.0.5", "dev": true, "license": "MIT" }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==", + "dev": true, + "license": "public domain" + }, "node_modules/deep-is": { "version": "0.1.4", "dev": true, @@ -4564,6 +6012,19 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "license": "MIT", @@ -4594,6 +6055,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "license": "MIT", @@ -4601,6 +6077,16 @@ "node": ">=0.4.0" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/dequal": { "version": "2.0.3", "license": "MIT", @@ -4617,6 +6103,17 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -4662,6 +6159,13 @@ "node": ">=8" } }, + "node_modules/discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", + "dev": true, + "license": "MIT" + }, "node_modules/dlv": { "version": "1.1.3", "license": "MIT" @@ -4728,10 +6232,23 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/duplexify": { "version": "4.1.3", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", @@ -4750,6 +6267,13 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.4.816", "license": "ISC" @@ -4814,10 +6338,50 @@ "node": ">= 4" } }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "once": "^1.4.0" } @@ -4843,6 +6407,25 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/es-abstract": { "version": "1.23.3", "dev": true, @@ -5027,6 +6610,23 @@ "node": ">=6" } }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "dev": true, @@ -5038,6 +6638,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, "node_modules/eslint": { "version": "8.57.0", "dev": true, @@ -5387,6 +7009,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.5.0", "dev": true, @@ -5431,10 +7067,20 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/event-target-shim": { "version": "5.0.1", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">=6" } @@ -5442,11 +7088,17 @@ "node_modules/events": { "version": "3.3.0", "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.x" } }, + "node_modules/events-listener": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/events-listener/-/events-listener-1.1.0.tgz", + "integrity": "sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g==", + "dev": true, + "license": "MIT" + }, "node_modules/eventsource-parser": { "version": "1.1.2", "license": "MIT", @@ -5462,10 +7114,203 @@ "safe-buffer": "^5.1.1" } }, + "node_modules/exegesis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/exegesis/-/exegesis-4.2.0.tgz", + "integrity": "sha512-MOzRyqhvl+hTA4+W4p0saWRIPlu0grIx4ykjMEYgGLiqr/z9NCIlwSq2jF0gyxNjPZD3xyHgmkW6BSaLVUdctg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.3", + "ajv": "^8.3.0", + "ajv-formats": "^2.1.0", + "body-parser": "^1.18.3", + "content-type": "^1.0.4", + "deep-freeze": "0.0.1", + "events-listener": "^1.1.0", + "glob": "^10.3.10", + "json-ptr": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "lodash": "^4.17.11", + "openapi3-ts": "^3.1.1", + "promise-breaker": "^6.0.0", + "pump": "^3.0.0", + "qs": "^6.6.0", + "raw-body": "^2.3.3", + "semver": "^7.0.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">5.0.0" + } + }, + "node_modules/exegesis-express": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/exegesis-express/-/exegesis-express-4.0.0.tgz", + "integrity": "sha512-V2hqwTtYRj0bj43K4MCtm0caD97YWkqOUHFMRCBW5L1x9IjyqOEc7Xa4oQjjiFbeFOSQzzwPV+BzXsQjSz08fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "exegesis": "^4.1.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">5.0.0" + } + }, + "node_modules/exegesis/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==", + "dev": true, + "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/exegesis/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/exegesis/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/extend": { "version": "3.0.2", "license": "MIT" }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/farmhash-modern": { "version": "1.1.0", "license": "MIT", @@ -5477,6 +7322,13 @@ "version": "3.1.3", "license": "MIT" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.2", "license": "MIT", @@ -5510,6 +7362,23 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.3.2" + } + }, "node_modules/fast-xml-parser": { "version": "4.4.0", "funding": [ @@ -5548,6 +7417,39 @@ "node": ">=0.8.0" } }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true, + "license": "MIT" + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "dev": true, @@ -5559,6 +7461,16 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filesize": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", + "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/fill-range": { "version": "7.1.1", "license": "MIT", @@ -5580,6 +7492,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, "node_modules/find-cache-dir": { "version": "5.0.0", "dev": true, @@ -5677,6 +7625,318 @@ "@google-cloud/storage": "^7.7.0" } }, + "node_modules/firebase-tools": { + "version": "13.13.2", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-13.13.2.tgz", + "integrity": "sha512-pX20oZSG7+SW8Jo10/JJilQn+IB5xES45dgiAMtPrx+aJ9RRnHkcosDe6kq9AEsufiRv1/KCn430jS3NF7jtvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@google-cloud/cloud-sql-connector": "^1.2.3", + "@google-cloud/pubsub": "^4.4.0", + "abort-controller": "^3.0.0", + "ajv": "^6.12.6", + "archiver": "^7.0.0", + "async-lock": "1.3.2", + "body-parser": "^1.19.0", + "chokidar": "^3.0.2", + "cjson": "^0.3.1", + "cli-table": "0.3.11", + "colorette": "^2.0.19", + "commander": "^4.0.1", + "configstore": "^5.0.1", + "cors": "^2.8.5", + "cross-env": "^5.1.3", + "cross-spawn": "^7.0.3", + "csv-parse": "^5.0.4", + "deep-equal-in-any-order": "^2.0.6", + "exegesis": "^4.1.2", + "exegesis-express": "^4.0.0", + "express": "^4.16.4", + "filesize": "^6.1.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "fuzzy": "^0.1.3", + "gaxios": "^6.1.1", + "glob": "^10.4.1", + "google-auth-library": "^9.7.0", + "inquirer": "^8.2.6", + "inquirer-autocomplete-prompt": "^2.0.1", + "jsonwebtoken": "^9.0.0", + "leven": "^3.1.0", + "libsodium-wrappers": "^0.7.10", + "lodash": "^4.17.21", + "marked": "^4.0.14", + "marked-terminal": "^5.1.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "morgan": "^1.10.0", + "node-fetch": "^2.6.7", + "open": "^6.3.0", + "ora": "^5.4.1", + "p-limit": "^3.0.1", + "pg": "^8.11.3", + "portfinder": "^1.0.32", + "progress": "^2.0.3", + "proxy-agent": "^6.3.0", + "retry": "^0.13.1", + "rimraf": "^5.0.0", + "semver": "^7.5.2", + "sql-formatter": "^15.3.0", + "stream-chain": "^2.2.4", + "stream-json": "^1.7.3", + "strip-ansi": "^6.0.1", + "superstatic": "^9.0.3", + "tar": "^6.1.11", + "tcp-port-used": "^1.0.2", + "tmp": "^0.2.3", + "triple-beam": "^1.3.0", + "universal-analytics": "^0.5.3", + "update-notifier-cjs": "^5.1.6", + "uuid": "^8.3.2", + "winston": "^3.0.0", + "winston-transport": "^4.4.0", + "ws": "^7.2.3", + "yaml": "^2.4.1" + }, + "bin": { + "firebase": "lib/bin/firebase.js" + }, + "engines": { + "node": ">=18.0.0 || >=20.0.0" + } + }, + "node_modules/firebase-tools/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/firebase-tools/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/firebase-tools/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/firebase-tools/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/firebase-tools/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/firebase-tools/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/firebase-tools/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firebase-tools/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/firebase-tools/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firebase-tools/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/firebase-tools/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firebase-tools/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/firebase-tools/node_modules/rimraf": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", + "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "14 >=14.20 || 16 >=16.20 || >=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/firebase-tools/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/firebase-tools/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/firebase-tools/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/flat-cache": { "version": "3.2.0", "dev": true, @@ -5708,6 +7968,13 @@ "tailwindcss": "^3.2.0" } }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true, + "license": "MIT" + }, "node_modules/follow-redirects": { "version": "1.15.6", "funding": [ @@ -5750,13 +8017,33 @@ "node_modules/form-data": { "version": "4.0.0", "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">= 0.6" } }, "node_modules/fs-extra": { @@ -5772,6 +8059,20 @@ "node": ">=14.14" } }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "dev": true, @@ -5814,6 +8115,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fuzzy": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", + "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/gaxios": { "version": "6.7.0", "license": "Apache-2.0", @@ -5888,6 +8198,19 @@ "node": ">=6" } }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.2", "dev": true, @@ -5915,6 +8238,22 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/glob": { "version": "10.3.10", "license": "ISC", @@ -5945,6 +8284,25 @@ "node": ">=10.13.0" } }, + "node_modules/glob-slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz", + "integrity": "sha512-ZwFh34WZhZX28ntCMAP1mwyAJkn8+Omagvt/GvA+JQM/qgT0+MR2NPF3vhvgdshfdvDyGZXs8fPXW84K32Wjuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob-slasher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz", + "integrity": "sha512-5MUzqFiycIKLMD1B0dYOE4hGgLLUZUNGGYO4BExdwT32wUwW3DBOE7lMQars7vB1q43Fb3Tyt+HmgLKsJhDYdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-slash": "^1.0.0", + "lodash.isobject": "^2.4.1", + "toxic": "^1.0.0" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "license": "BSD-2-Clause", @@ -5970,6 +8328,22 @@ "balanced-match": "^1.0.0" } }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globals": { "version": "13.24.0", "dev": true, @@ -6059,8 +8433,8 @@ }, "node_modules/google-gax": { "version": "4.3.7", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "@grpc/grpc-js": "^1.10.9", "@grpc/proto-loader": "^0.7.13", @@ -6081,8 +8455,8 @@ }, "node_modules/google-gax/node_modules/@grpc/grpc-js": { "version": "1.10.10", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" @@ -6093,12 +8467,44 @@ }, "node_modules/google-gax/node_modules/uuid": { "version": "9.0.1", + "devOptional": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/googleapis-common": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", + "integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.7.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", - "optional": true, "bin": { "uuid": "dist/bin/uuid" } @@ -6208,6 +8614,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/hash-base": { "version": "3.0.4", "license": "MIT", @@ -6237,6 +8653,16 @@ "node": ">= 0.4" } }, + "node_modules/heap-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.5.0.tgz", + "integrity": "sha512-kUGoI3p7u6B41z/dp33G6OaL7J4DRqRYwVmeIlwLClx7yaaAy7hoDExnuejTKtuDwfcatGmddHDEOjf6EyIxtQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "license": "MIT", @@ -6320,14 +8746,39 @@ "entities": "^4.4.0" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/http-parser-js": { "version": "0.5.8", "license": "MIT" }, "node_modules/http-proxy-agent": { "version": "5.0.0", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -6339,8 +8790,8 @@ }, "node_modules/http-proxy-agent/node_modules/agent-base": { "version": "6.0.2", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "debug": "4" }, @@ -6363,83 +8814,306 @@ "node": ">= 14" } }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/idb": { "version": "7.1.1", "license": "ISC" }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/index-to-position": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer-autocomplete-prompt": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-2.0.1.tgz", + "integrity": "sha512-jUHrH0btO7j5r8DTQgANf2CBkTZChoVySD8zF/wp5fZCOLIuUbleXhf4ZY5jNBOc1owA3gdfWtfZuppfYBhcUg==", + "dev": true, + "license": "ISC", + "dependencies": { + "ansi-escapes": "^4.3.2", + "figures": "^3.2.0", + "picocolors": "^1.0.0", + "run-async": "^2.4.1", + "rxjs": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "inquirer": "^8.0.0" + } + }, + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" }, - "node_modules/ignore": { - "version": "5.3.1", + "node_modules/inquirer/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/import-fresh": { - "version": "3.3.0", + "node_modules/inquirer/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/inquirer/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/index-to-position": { - "version": "0.1.2", + "node_modules/inquirer/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inflight": { - "version": "1.0.6", + "node_modules/inquirer/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "node_modules/inherits": { - "version": "2.0.4", + "node_modules/inquirer/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, "license": "ISC" }, + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/install-artifact-from-github": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.5.tgz", + "integrity": "sha512-gZHC7f/cJgXz7MXlHFBxPVMsvIbev1OQN1uKQYKVJDydGNm9oYf9JstbU4Atnh/eSvk41WtEovoRm+8IF686xg==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "bin": { + "install-from-cache": "bin/install-from-cache.js", + "save-to-github-cache": "bin/save-to-github-cache.js" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "dev": true, @@ -6460,6 +9134,40 @@ "loose-envify": "^1.0.0" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "license": "MIT", @@ -6555,6 +9263,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, "node_modules/is-core-module": { "version": "2.14.0", "license": "MIT", @@ -6644,6 +9365,23 @@ "node": ">=0.10.0" } }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-interactive": { "version": "2.0.0", "dev": true, @@ -6655,6 +9393,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/is-map": { "version": "2.0.3", "dev": true, @@ -6691,6 +9437,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "license": "MIT", @@ -6712,6 +9471,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "dev": true, @@ -6778,6 +9547,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "dev": true, + "license": "MIT" + }, "node_modules/is-string": { "version": "1.0.7", "dev": true, @@ -6819,6 +9595,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, "node_modules/is-unicode-supported": { "version": "2.0.0", "dev": true, @@ -6830,6 +9613,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true, + "license": "MIT" + }, "node_modules/is-weakmap": { "version": "2.0.2", "dev": true, @@ -6878,6 +9668,38 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true, + "license": "MIT" + }, + "node_modules/is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "license": "MIT" @@ -6886,6 +9708,17 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, "node_modules/iterator.prototype": { "version": "1.1.2", "dev": true, @@ -6948,6 +9781,25 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" + }, + "node_modules/join-path": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/join-path/-/join-path-1.1.1.tgz", + "integrity": "sha512-jnt9OC34sLXMLJ6YfPQ2ZEKrR9mB5ZbSnQb4LPaOx1c5rTzxpR33L18jjp0r75mGGTJmsil3qwN1B5IBeTnSSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "as-array": "^2.0.0", + "url-join": "0.0.1", + "valid-url": "^1" + } + }, "node_modules/jose": { "version": "4.15.9", "license": "MIT", @@ -6977,6 +9829,13 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "license": "MIT" + }, "node_modules/jsesc": { "version": "2.5.2", "license": "MIT", @@ -7004,6 +9863,23 @@ "license": "MIT", "peer": true }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jju": "^1.1.0" + } + }, + "node_modules/json-ptr": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/json-ptr/-/json-ptr-3.1.1.tgz", + "integrity": "sha512-SiSJQ805W1sDUCD1+/t1/1BIrveq2Fe9HJqENxZmMCILmrPI7WhS/pePpIOx85v6/H2z1Vy7AI08GV2TzfXocg==", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema": { "version": "0.4.0", "license": "(AFL-2.1 OR BSD-3-Clause)" @@ -7156,6 +10032,13 @@ "json-buffer": "3.0.1" } }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true, + "license": "MIT" + }, "node_modules/language-subtag-registry": { "version": "0.3.23", "dev": true, @@ -7172,12 +10055,68 @@ "node": ">=0.10" } }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/leac": { "version": "0.6.0", "dev": true, "license": "MIT", - "funding": { - "url": "https://ko-fi.com/killymxi" + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/levn": { @@ -7192,6 +10131,23 @@ "node": ">= 0.8.0" } }, + "node_modules/libsodium": { + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.14.tgz", + "integrity": "sha512-/pOd7eO6oZrfORquRTC4284OUJFcMi8F3Vnc9xtRBT0teLfOUxWIItaBFF3odYjZ7nlJNwnLdUVEUFHxVyX/Sw==", + "dev": true, + "license": "ISC" + }, + "node_modules/libsodium-wrappers": { + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.14.tgz", + "integrity": "sha512-300TtsePizhJZ7HjLmWr6hLHAgJUxIGhapSw+EwfCtDuWaEmEdGXSQv6j6qFw0bs9l4vS2NH9BtOHfXAq6h5kQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "libsodium": "^0.7.14" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "license": "MIT", @@ -7288,6 +10244,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "license": "MIT" @@ -7312,6 +10275,16 @@ "version": "3.0.3", "license": "MIT" }, + "node_modules/lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._objecttypes": "~2.4.1" + } + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "license": "MIT" @@ -7320,6 +10293,13 @@ "version": "4.0.1", "license": "MIT" }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "dev": true, @@ -7329,6 +10309,13 @@ "version": "4.1.1", "license": "MIT" }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true, + "license": "MIT" + }, "node_modules/log-symbols": { "version": "6.0.0", "dev": true, @@ -7366,6 +10353,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/logform": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/long": { "version": "5.2.3", "license": "Apache-2.0" @@ -7434,6 +10449,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/map-obj": { "version": "5.0.2", "dev": true, @@ -7445,6 +10485,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/marked-terminal": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz", + "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.2.0", + "cli-table3": "^0.6.3", + "node-emoji": "^1.11.0", + "supports-hyperlinks": "^2.3.0" + }, + "engines": { + "node": ">=14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/md5.js": { "version": "1.3.5", "license": "MIT", @@ -7459,6 +10559,23 @@ "license": "CC0-1.0", "peer": true }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge-stream": { "version": "2.0.0", "license": "MIT", @@ -7471,6 +10588,16 @@ "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { "version": "4.0.7", "license": "MIT", @@ -7486,91 +10613,309 @@ "version": "4.0.1", "license": "MIT", "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/mime": { + "version": "3.0.0", + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" }, - "bin": { - "miller-rabin": "bin/miller-rabin" + "engines": { + "node": ">=8" } }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/mime": { - "version": "3.0.0", - "license": "MIT", + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", "optional": true, - "bin": { - "mime": "cli.js" + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/mime-db": { - "version": "1.52.0", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 8" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "license": "MIT", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", "dependencies": { - "mime-db": "1.52.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "license": "MIT" + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/minimatch": { - "version": "3.1.2", + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" }, "engines": { - "node": "*" + "node": ">= 0.8.0" } }, - "node_modules/minimist": { - "version": "1.2.8", + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/minipass": { - "version": "7.1.2", - "license": "ISC", + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.8" } }, "node_modules/ms": { "version": "2.1.2", "license": "MIT" }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, "node_modules/mz": { "version": "2.7.0", "license": "MIT", @@ -7580,6 +10925,14 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/nanoid": { "version": "3.3.7", "funding": [ @@ -7601,11 +10954,61 @@ "dev": true, "license": "MIT" }, + "node_modules/nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "node_modules/nearley/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "license": "MIT", "peer": true }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/next": { "version": "14.2.4", "license": "MIT", @@ -7719,6 +11122,23 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, "node_modules/node-fetch": { "version": "2.7.0", "license": "MIT", @@ -7744,10 +11164,95 @@ "node": ">= 6.13.0" } }, + "node_modules/node-gyp": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", + "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, "node_modules/node-releases": { "version": "2.0.14", "license": "MIT" }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/normalize-package-data": { "version": "6.0.2", "dev": true, @@ -7922,6 +11427,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "devOptional": true, @@ -7930,6 +11458,16 @@ "wrappy": "1" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/onetime": { "version": "5.1.2", "dev": true, @@ -7944,6 +11482,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/openapi3-ts": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-3.2.0.tgz", + "integrity": "sha512-/ykNWRV5Qs0Nwq7Pc0nJ78fgILvOT/60OxEmB3v7yQ8a8Bwcm43D4diaYazG/KBn6czA+52XYy931WFLMCUeSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "yaml": "^2.2.1" + } + }, "node_modules/optionator": { "version": "0.9.4", "dev": true, @@ -8022,12 +11583,63 @@ "version": "0.3.0", "license": "MIT" }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-defer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/p-limit": { "version": "3.1.0", "devOptional": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" }, "engines": { "node": ">=10" @@ -8036,15 +11648,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "5.0.0", + "node_modules/p-throttle": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-5.1.0.tgz", + "integrity": "sha512-+N+s2g01w1Zch4D0K3OpnPDqLOKmLcQ4BvIFq3JC0K29R28vUOjWpO+OJZBNt8X9i3pFCksZJZ0YXkUGjaFE6g==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8057,6 +11668,61 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "license": "(MIT AND Zlib)" @@ -8126,6 +11792,16 @@ "url": "https://ko-fi.com/killymxi" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-browserify": { "version": "1.0.1", "license": "MIT" @@ -8177,6 +11853,13 @@ "node": "14 || >=16.14" } }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "dev": true, @@ -8221,6 +11904,103 @@ "is-reference": "^3.0.0" } }, + "node_modules/pg": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.0.1", "license": "ISC" @@ -8339,6 +12119,41 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "license": "MIT", @@ -8530,6 +12345,49 @@ "version": "4.2.0", "license": "MIT" }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/preact": { "version": "10.11.3", "license": "MIT", @@ -8560,10 +12418,74 @@ "version": "3.8.0", "license": "MIT" }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "license": "MIT" }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-breaker": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-6.0.0.tgz", + "integrity": "sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/prop-types": { "version": "15.8.1", "license": "MIT", @@ -8573,37 +12495,102 @@ "react-is": "^16.13.1" } }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "license": "ISC" + }, "node_modules/proto3-json-serializer": { "version": "2.0.2", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "dependencies": { - "protobufjs": "^7.2.5" + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/protobufjs": { + "version": "7.3.2", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=14.0.0" + "node": ">= 14" } }, - "node_modules/protobufjs": { - "version": "7.3.2", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=12.0.0" + "node": ">=12" } }, "node_modules/proxy-from-env": { @@ -8626,10 +12613,34 @@ "version": "4.12.0", "license": "MIT" }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "1.4.1", "license": "MIT" }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/qs": { "version": "6.12.2", "license": "BSD-3-Clause", @@ -8661,6 +12672,13 @@ ], "license": "MIT" }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "license": "MIT" + }, "node_modules/raf": { "version": "3.4.1", "license": "MIT", @@ -8668,6 +12686,27 @@ "performance-now": "^2.1.0" } }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/randombytes": { "version": "2.1.0", "license": "MIT", @@ -8683,6 +12722,79 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/re2": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/re2/-/re2-1.21.3.tgz", + "integrity": "sha512-GI+KoGkHT4kxTaX+9p0FgNB1XUnCndO9slG5qqeEoZ7kbf6Dk6ohQVpmwKVeSp7LPLn+g6Q3BaCopz4oHuBDuQ==", + "dev": true, + "hasInstallScript": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "install-artifact-from-github": "^1.3.5", + "nan": "^2.20.0", + "node-gyp": "^10.1.0" + } + }, "node_modules/react": { "version": "18.3.1", "license": "MIT", @@ -8891,6 +13003,39 @@ "node": ">= 6" } }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/readdirp": { "version": "3.6.0", "license": "MIT", @@ -8901,6 +13046,16 @@ "node": ">=8.10.0" } }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esprima": "~4.0.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "dev": true, @@ -8942,6 +13097,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/require-directory": { "version": "2.1.1", "license": "MIT", @@ -8949,6 +13130,16 @@ "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "license": "MIT", @@ -9000,18 +13191,28 @@ "dev": true, "license": "ISC" }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, "node_modules/retry": { "version": "0.13.1", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">= 4" } }, "node_modules/retry-request": { "version": "7.0.2", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "@types/request": "^2.48.8", "extend": "^3.0.2", @@ -9070,6 +13271,59 @@ "inherits": "^2.0.1" } }, + "node_modules/router": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/router/-/router-1.3.8.tgz", + "integrity": "sha512-461UFH44NtSfIlS83PUg2N7OZo86BC/kB3dY77gJdsODsBhhw7+2uE0tzTINxrY9CahCUVk1VhpWCA5i1yoIEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "3.0.0", + "debug": "2.6.9", + "methods": "~1.1.2", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "setprototypeof": "1.2.0", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router/node_modules/array-flatten": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", + "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", + "dev": true, + "license": "MIT" + }, + "node_modules/router/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/router/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "funding": [ @@ -9091,6 +13345,16 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.2", "dev": true, @@ -9147,6 +13411,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/scheduler": { "version": "0.23.2", "license": "MIT", @@ -9192,6 +13473,81 @@ "semver": "bin/semver.js" } }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/serialize-javascript": { "version": "6.0.2", "license": "BSD-3-Clause", @@ -9200,6 +13556,22 @@ "randombytes": "^2.1.0" } }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "license": "MIT", @@ -9229,6 +13601,13 @@ "node": ">= 0.4" } }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, "node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", @@ -9352,10 +13731,60 @@ "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sort-any": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-any/-/sort-any-2.0.0.tgz", + "integrity": "sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, "node_modules/source-map": { "version": "0.6.1", "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -9404,6 +13833,52 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sql-formatter": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-15.3.2.tgz", + "integrity": "sha512-pNxSMf5DtwhpZ8gUcOGCGZIWtCcyAUx9oLgAtlO4ag7DvlfnETL0BGqXaISc84pNrXvTWmt8Wal1FWKxdTsL3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "get-stdin": "=8.0.0", + "nearley": "^2.20.1" + }, + "bin": { + "sql-formatter": "bin/sql-formatter-cli.cjs" + } + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/sswr": { "version": "2.1.0", "license": "MIT", @@ -9414,6 +13889,26 @@ "svelte": "^4.0.0 || ^5.0.0-next.0" } }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/stdin-discarder": { "version": "0.2.2", "dev": true, @@ -9444,10 +13939,17 @@ "readable-stream": "^3.5.0" } }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/stream-events": { "version": "1.0.5", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "stubs": "^3.0.0" } @@ -9462,10 +13964,20 @@ "xtend": "^4.0.2" } }, + "node_modules/stream-json": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", + "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, "node_modules/stream-shift": { "version": "1.0.3", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" }, "node_modules/streamsearch": { "version": "1.1.0", @@ -9473,6 +13985,21 @@ "node": ">=10.0.0" } }, + "node_modules/streamx": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", + "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "license": "MIT", @@ -9670,8 +14197,8 @@ }, "node_modules/stubs": { "version": "3.0.0", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" }, "node_modules/styled-jsx": { "version": "5.1.1", @@ -9741,6 +14268,95 @@ "node": ">=10" } }, + "node_modules/superstatic": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-9.0.3.tgz", + "integrity": "sha512-e/tmW0bsnQ/33ivK6y3CapJT0Ovy4pk/ohNPGhIAGU2oasoNLRQ1cv6enua09NU9w6Y0H/fBu07cjzuiWvLXxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth-connect": "^1.0.0", + "commander": "^10.0.0", + "compression": "^1.7.0", + "connect": "^3.7.0", + "destroy": "^1.0.4", + "fast-url-parser": "^1.1.3", + "glob-slasher": "^1.0.1", + "is-url": "^1.2.2", + "join-path": "^1.1.1", + "lodash": "^4.17.19", + "mime-types": "^2.1.35", + "minimatch": "^6.1.6", + "morgan": "^1.8.2", + "on-finished": "^2.2.0", + "on-headers": "^1.0.0", + "path-to-regexp": "^1.8.0", + "router": "^1.3.1", + "update-notifier-cjs": "^5.1.6" + }, + "bin": { + "superstatic": "lib/bin/server.js" + }, + "engines": { + "node": "^14.18.0 || >=16.4.0" + }, + "optionalDependencies": { + "re2": "^1.17.7" + } + }, + "node_modules/superstatic/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/superstatic/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/superstatic/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/superstatic/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/superstatic/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, "node_modules/supports-color": { "version": "7.2.0", "dev": true, @@ -9752,6 +14368,20 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "license": "MIT", @@ -9889,10 +14519,118 @@ "node": ">=6" } }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/teeny-request": { "version": "9.0.0", + "devOptional": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", @@ -9906,8 +14644,8 @@ }, "node_modules/teeny-request/node_modules/https-proxy-agent": { "version": "5.0.1", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -9918,8 +14656,8 @@ }, "node_modules/teeny-request/node_modules/https-proxy-agent/node_modules/agent-base": { "version": "6.0.2", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "debug": "4" }, @@ -9929,12 +14667,12 @@ }, "node_modules/teeny-request/node_modules/uuid": { "version": "9.0.1", + "devOptional": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", - "optional": true, "bin": { "uuid": "dist/bin/uuid" } @@ -10011,6 +14749,23 @@ "license": "MIT", "peer": true }, + "node_modules/text-decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", + "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true, + "license": "MIT" + }, "node_modules/text-table": { "version": "0.2.0", "dev": true, @@ -10033,6 +14788,13 @@ "node": ">=0.8" } }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, "node_modules/tmp": { "version": "0.2.3", "dev": true, @@ -10045,23 +14807,53 @@ "version": "2.0.0", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/toxic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz", + "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==", + "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "lodash": "^4.17.10" } }, "node_modules/tr46": { "version": "0.0.3", "license": "MIT" }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/ts-api-utils": { "version": "1.3.0", "dev": true, @@ -10125,6 +14917,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.2", "dev": true, @@ -10194,6 +15000,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/typescript": { "version": "5.5.3", "devOptional": true, @@ -10257,6 +15073,71 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universal-analytics": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.5.3.tgz", + "integrity": "sha512-HXSMyIcf2XTvwZ6ZZQLfxfViRm/yTGoRgDeTbojtq6rezeyKB0sTBcKH2fhddnteAHRcHiKgr/ACpbgjGOC6RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.1", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=12.18.2" + } + }, + "node_modules/universal-analytics/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/universalify": { "version": "2.0.1", "dev": true, @@ -10265,6 +15146,16 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.0", "funding": [ @@ -10293,6 +15184,47 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/update-notifier-cjs": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/update-notifier-cjs/-/update-notifier-cjs-5.1.6.tgz", + "integrity": "sha512-wgxdSBWv3x/YpMzsWz5G4p4ec7JWD0HCl8W6bmNB6E5Gwo+1ym5oN4hiXpLf0mPySVEJEIsYlkshnplkg2OP9A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "isomorphic-fetch": "^3.0.0", + "pupa": "^2.1.1", + "registry-auth-token": "^5.0.1", + "registry-url": "^5.1.0", + "semver": "^7.3.7", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/update-notifier-cjs/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/uri-js": { "version": "4.4.1", "license": "BSD-2-Clause", @@ -10315,6 +15247,20 @@ "qs": "^6.11.2" } }, + "node_modules/url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==", + "dev": true, + "license": "MIT" + }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==", + "dev": true, + "license": "BSD" + }, "node_modules/use-callback-ref": { "version": "1.3.2", "license": "MIT", @@ -10416,6 +15362,16 @@ "version": "1.0.2", "license": "MIT" }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/uuid": { "version": "10.0.0", "funding": [ @@ -10427,6 +15383,12 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "dev": true, @@ -10436,6 +15398,16 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vue": { "version": "3.4.31", "license": "MIT", @@ -10468,6 +15440,16 @@ "node": ">=10.13.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "license": "BSD-2-Clause" @@ -10582,6 +15564,13 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "dev": true, + "license": "MIT" + }, "node_modules/whatwg-url": { "version": "5.0.0", "license": "MIT", @@ -10682,6 +15671,89 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/winston": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.1.tgz", + "integrity": "sha512-SvZit7VFNvXRzbqGHsv5KSmgbEYR5EiQfDAL9gxYkRqa934Hnk++zze0wANKtMHcy/gI4W/3xmSDwlhf865WGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.6.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.7.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz", + "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "logform": "^2.6.1", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "dev": true, @@ -10690,6 +15762,21 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", @@ -10722,11 +15809,85 @@ "version": "8.0.0", "license": "MIT" }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "devOptional": true, "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/xtend": { "version": "4.0.2", "license": "MIT", @@ -10805,6 +15966,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/zod": { "version": "3.23.8", "license": "MIT", diff --git a/package.json b/package.json index 4cd20d8..c8e289b 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "@types/react-dom": "^18", "eslint": "^8", "eslint-config-next": "14.2.4", + "firebase-tools": "^13.13.2", "fluid-tailwind": "^1.0.2", "literate-ts": "^2.5.0", "postcss": "^8", From b9662975b36fc2b7569830f20742c55cbbaf5faa Mon Sep 17 00:00:00 2001 From: benlad636 Date: Wed, 17 Jul 2024 11:50:21 +0000 Subject: [PATCH 07/60] v1 --- .vscode/settings.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index bf46335..840c0a9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,7 @@ "Loca", "Superjson", "vertexai" - ] + ], + "IDX.aI.enableInlineCompletion": true, + "IDX.aI.enableCodebaseIndexing": true } \ No newline at end of file From dd5749fab8e73154e035a4ff6a6d8eeab101ca92 Mon Sep 17 00:00:00 2001 From: benlad636 Date: Wed, 17 Jul 2024 14:12:45 +0000 Subject: [PATCH 08/60] v1 --- .idx/integrations.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .idx/integrations.json diff --git a/.idx/integrations.json b/.idx/integrations.json new file mode 100644 index 0000000..9b90d33 --- /dev/null +++ b/.idx/integrations.json @@ -0,0 +1,3 @@ +{ + "cloud_run_deploy": {} +} \ No newline at end of file From 57e83329d7b10c9833d722b7cfb48abbf5d7bdd5 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Wed, 17 Jul 2024 16:43:23 -1200 Subject: [PATCH 09/60] v1 --- .dockerignore | 1 + DockerFile | 17 +++++++++++++++++ app/api/gemini/route.ts | 3 ++- next.config.mjs | 2 +- 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 DockerFile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/DockerFile b/DockerFile new file mode 100644 index 0000000..1b99388 --- /dev/null +++ b/DockerFile @@ -0,0 +1,17 @@ +FROM node:latest + +WORKDIR /app + +COPY package.json . + +RUN npm install + +COPY . . + +RUN npm run build + +COPY .next ./.next. + +EXPOSE 3000 + +CMD ["npm", "run", "dev"] \ No newline at end of file diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index eaf38d9..d96cd7b 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -10,6 +10,7 @@ import { const vertexAI = new VertexAI({ project: "loca-bc18e", location: 'us-central1', + }); // Function to get local services from Google Places API @@ -122,7 +123,7 @@ export async function POST(req: NextRequest) { }, { status: 200 }); } catch (error: any) { console.error('Server Error:', error.message); - let errorMessage = 'An unexpected error occurred'; + let errorMessage = 'Something went wrong on the server'; let statusCode = 500; if (error.message.includes('Google Places API Error')) { errorMessage = 'Error fetching local services. Please try again later.'; diff --git a/next.config.mjs b/next.config.mjs index 57d339d..7acb126 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,6 +1,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - // output:'export', + output:'standalone', images:{ remotePatterns:[ { From f97eff72f54107af97ce6bc9cb45b12f4b924485 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Wed, 17 Jul 2024 16:51:00 -1200 Subject: [PATCH 10/60] v1 --- app/api/gemini/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index d96cd7b..545e7e3 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -123,7 +123,7 @@ export async function POST(req: NextRequest) { }, { status: 200 }); } catch (error: any) { console.error('Server Error:', error.message); - let errorMessage = 'Something went wrong on the server'; + let errorMessage = error.message; let statusCode = 500; if (error.message.includes('Google Places API Error')) { errorMessage = 'Error fetching local services. Please try again later.'; From 9113e805455be9ae8655074b31ea6884941a3daa Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Wed, 17 Jul 2024 17:23:28 -1200 Subject: [PATCH 11/60] v1 --- app/api/gemini/route.ts | 49 ++++++----- lib/gemini.ts | 181 ++++++++++++++++++++++++++-------------- 2 files changed, 147 insertions(+), 83 deletions(-) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 545e7e3..36e295a 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -6,16 +6,30 @@ import { HarmBlockThreshold, } from '@google-cloud/vertexai'; -// Initialize Vertex AI with your Cloud project and location -const vertexAI = new VertexAI({ - project: "loca-bc18e", - location: 'us-central1', +// Function to initialize Vertex AI with JSON credentials +function initializeVertexAI() { + const credentialsJson = process.env.GOOGLE_APPLICATION_CREDENTIALS_JSON; -}); + if (!credentialsJson) { + throw new Error('GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set'); + } + + try { + const credentials = JSON.parse(credentialsJson); + return new VertexAI({ + project: credentials.project_id, + location: 'us-central1', + googleAuthOptions:credentials + }); + } catch (error) { + console.error('Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:', error); + throw new Error('Invalid GOOGLE_APPLICATION_CREDENTIALS_JSON'); + } +} // Function to get local services from Google Places API async function getLocalServices(query: string, latitude: string, longitude: string) { - const apiKey = "AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc"; + const apiKey = process.env.GOOGLE_PLACES_API_KEY; if (!apiKey) { console.error('Google Places API key is not set'); @@ -34,8 +48,6 @@ async function getLocalServices(query: string, latitude: string, longitude: stri timeout: 5000, // Reduced timeout for faster failure }); - console.log(response) - if (response.data.status === 'REQUEST_DENIED') { console.error('Google Places API request denied:', response.data.error_message); throw new Error(`Google Places API request denied: ${response.data.error_message}`); @@ -66,6 +78,7 @@ export async function POST(req: NextRequest) { } try { + const vertexAI = initializeVertexAI(); const model = vertexAI.getGenerativeModel({ model: 'gemini-1.5-pro-001' }); const chat = model.startChat({ generationConfig: { @@ -93,7 +106,7 @@ export async function POST(req: NextRequest) { ], }); - console.log(chat + 'Fetching local services'); + console.log('Fetching local services'); let services; try { services = await getLocalServices(userMessage, latitude, longitude); @@ -102,34 +115,32 @@ export async function POST(req: NextRequest) { console.error('Error fetching local services:', error); services = []; } - console.log(services) + console.log('Sending message to Vertex AI'); - const contextMessage = `You are to act as a loca an AI local service finder build by devben. User is looking for local services: "${userMessage}". ${ + const contextMessage = `You are to act as a loca an AI local service finder build by devben. User is looking for local services: "${userMessage}". ${ services.length > 0 - ? `Here are some available services: ${JSON.stringify(services)}. Please provide a helpful response based on this information, highlighting and bold the best options based on ratings and number of reviews. and If ${userMessage} don&t sound like they are looking for local service respond casually for example text like "hello what can you do" you knew you had to reply casually ` + ? `Here are some available services: ${JSON.stringify(services)}. Please provide a helpful response based on this information, highlighting and bold the best options based on ratings and number of reviews. If "${userMessage}" doesn't sound like they are looking for local service respond casually for example text like "hello what can you do" you knew you had to reply casually` : `Unfortunately, we couldn't find any local services matching the query. Please provide a general response about ${userMessage} and suggest how the user might find local services.` }`; const result = await chat.sendMessage(contextMessage); - console.log(result) - const response = await result.response; console.log('Received response from Vertex AI'); - const vertexResponseText = response.candidates?.[0]?.content?.parts?.[0]?.text || 'No response from Vertex AI'; - console.log(vertexResponseText) + const vertexResponseText = result.response?.candidates?.[0]?.content?.parts?.[0]?.text || 'No response from Vertex AI'; + return NextResponse.json({ vertexResponse: vertexResponseText, services }, { status: 200 }); } catch (error: any) { console.error('Server Error:', error.message); - let errorMessage = error.message; + let errorMessage = 'Something went wrong on the server'; let statusCode = 500; if (error.message.includes('Google Places API Error')) { errorMessage = 'Error fetching local services. Please try again later.'; statusCode = 503; // Service Unavailable - } else if (error.message.includes('Vertex AI')) { - errorMessage = 'Error communicating with AI service. Please try again later.'; + } else if (error.message.includes('Vertex AI') || error.message.includes('GOOGLE_APPLICATION_CREDENTIALS_JSON')) { + errorMessage = 'Error communicating with AI service. Please check the configuration and try again later.'; statusCode = 503; } return NextResponse.json({ error: errorMessage }, { status: statusCode }); diff --git a/lib/gemini.ts b/lib/gemini.ts index 4f96793..545e7e3 100644 --- a/lib/gemini.ts +++ b/lib/gemini.ts @@ -1,84 +1,137 @@ import { NextRequest, NextResponse } from 'next/server'; -import axios, { AxiosError } from 'axios'; -import { GoogleGenerativeAI } from '@google/generative-ai'; +import axios from 'axios'; +import { + VertexAI, + HarmCategory, + HarmBlockThreshold, +} from '@google-cloud/vertexai'; -const geminiApiKey = process.env.GEMINI_API_KEY; -const foursquareApiKey = process.env.FOURSQUARE_API_KEY; - -const genAI = new GoogleGenerativeAI(geminiApiKey as string); -const model = genAI.getGenerativeModel({ - model: 'gemini-1.5-pro', - systemInstruction: 'I\'m Loca, your friendly virtual assistant for finding local services!', +// Initialize Vertex AI with your Cloud project and location +const vertexAI = new VertexAI({ + project: "loca-bc18e", + location: 'us-central1', + }); -const generationConfig = { - temperature: 1, - topP: 0.95, - topK: 64, - maxOutputTokens: 8192, -}; +// Function to get local services from Google Places API +async function getLocalServices(query: string, latitude: string, longitude: string) { + const apiKey = "AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc"; + + if (!apiKey) { + console.error('Google Places API key is not set'); + throw new Error('Google Places API key is not configured'); + } + + try { + const response = await axios.get('https://maps.googleapis.com/maps/api/place/nearbysearch/json', { + params: { + location: `${latitude},${longitude}`, + radius: 5000, // Search within 5km radius + type: 'business', // This can be adjusted based on the specific types you're interested in + keyword: query, + key: apiKey + }, + timeout: 5000, // Reduced timeout for faster failure + }); + + console.log(response) + + if (response.data.status === 'REQUEST_DENIED') { + console.error('Google Places API request denied:', response.data.error_message); + throw new Error(`Google Places API request denied: ${response.data.error_message}`); + } + + return response.data.results.slice(0, 5).map((place: any) => ({ + name: place.name, + address: place.vicinity, + rating: place.rating, + user_ratings_total: place.user_ratings_total, + place_id: place.place_id + })); + } catch (error) { + console.error('Google Places API Error:', error); + if (axios.isAxiosError(error) && error.response) { + throw new Error(`Google Places API Error: ${error.response.status} - ${error.response.data.error_message}`); + } else { + throw new Error('Failed to fetch local services'); + } + } +} export async function POST(req: NextRequest) { const { userMessage, latitude, longitude } = await req.json(); - + if (!userMessage || !latitude || !longitude) { return NextResponse.json({ error: 'Missing required fields: userMessage, latitude, or longitude' }, { status: 400 }); } try { - // Gemini API request - const chatSession = model.startChat({ generationConfig }); - - const result = await chatSession.sendMessage(userMessage); - const geminiResponse = result.response.text(); - - // Debugging: Log the API keys and request parameters - console.log('Gemini API Key:', geminiApiKey); - console.log('Foursquare API Key:', foursquareApiKey); - console.log('User Message:', userMessage); - console.log('Latitude:', latitude); - console.log('Longitude:', longitude); - - // Foursquare API request - const foursquareResponse = await axios.get(`https://api.foursquare.com/v3/places/search`, { - params: { - query: userMessage, - ll: `${latitude},${longitude}`, - limit: 5, + const model = vertexAI.getGenerativeModel({ model: 'gemini-1.5-pro-001' }); + const chat = model.startChat({ + generationConfig: { + maxOutputTokens: 1024, + temperature: 0.7, + topP: 1, }, - headers: { - Authorization: `Bearer ${foursquareApiKey}`, // Ensure Bearer token is correctly formatted - }, - timeout: 10000 + safetySettings: [ + { + category: HarmCategory.HARM_CATEGORY_HATE_SPEECH, + threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, + }, + { + category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, + threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, + }, + { + category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, + threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, + }, + { + category: HarmCategory.HARM_CATEGORY_HARASSMENT, + threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, + }, + ], }); - const places = foursquareResponse.data.results.map((place: any) => ({ - name: place.name, - address: place.location.address, - contact: place.contact?.phone || 'N/A', - })); - - const finalResponse = { - geminiResponse, - places - }; + console.log(chat + 'Fetching local services'); + let services; + try { + services = await getLocalServices(userMessage, latitude, longitude); + console.log('Received local services'); + } catch (error) { + console.error('Error fetching local services:', error); + services = []; + } + console.log(services) + console.log('Sending message to Vertex AI'); + const contextMessage = `You are to act as a loca an AI local service finder build by devben. User is looking for local services: "${userMessage}". ${ + services.length > 0 + ? `Here are some available services: ${JSON.stringify(services)}. Please provide a helpful response based on this information, highlighting and bold the best options based on ratings and number of reviews. and If ${userMessage} don&t sound like they are looking for local service respond casually for example text like "hello what can you do" you knew you had to reply casually ` + : `Unfortunately, we couldn't find any local services matching the query. Please provide a general response about ${userMessage} and suggest how the user might find local services.` + }`; - return NextResponse.json(finalResponse, { status: 200 }); + const result = await chat.sendMessage(contextMessage); + console.log(result) + const response = await result.response; + console.log('Received response from Vertex AI'); + const vertexResponseText = response.candidates?.[0]?.content?.parts?.[0]?.text || 'No response from Vertex AI'; + console.log(vertexResponseText) + return NextResponse.json({ + vertexResponse: vertexResponseText, + services + }, { status: 200 }); } catch (error: any) { - console.error('Server Error:', error.response?.data || error.message); - let errorMessage = 'An unexpected error occurred'; - if (axios.isAxiosError(error)) { - if (error.response?.status === 401) { - errorMessage = 'Authentication failed. Please check your API keys.'; - } else if (error.code === 'ECONNABORTED') { - errorMessage = 'The request timed out. Please try again.'; - } else if (error.response) { - errorMessage = `Server responded with error: ${error.response.status}`; - } else if (error.request) { - errorMessage = 'No response received from the server'; - } + console.error('Server Error:', error.message); + let errorMessage = error.message; + let statusCode = 500; + if (error.message.includes('Google Places API Error')) { + errorMessage = 'Error fetching local services. Please try again later.'; + statusCode = 503; // Service Unavailable + } else if (error.message.includes('Vertex AI')) { + errorMessage = 'Error communicating with AI service. Please try again later.'; + statusCode = 503; } - return NextResponse.json({ error: errorMessage }, { status: 500 }); + return NextResponse.json({ error: errorMessage }, { status: statusCode }); } -} +} \ No newline at end of file From 4ad38eb2152de4cd92c23ff0bdbe9b47f186913b Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 00:33:03 -1200 Subject: [PATCH 12/60] v1 - handle errors --- app/api/gemini/route.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 36e295a..47e4901 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -134,13 +134,13 @@ export async function POST(req: NextRequest) { }, { status: 200 }); } catch (error: any) { console.error('Server Error:', error.message); - let errorMessage = 'Something went wrong on the server'; + let errorMessage = `Something went wrong on the server ${error.message}`; let statusCode = 500; if (error.message.includes('Google Places API Error')) { - errorMessage = 'Error fetching local services. Please try again later.'; + errorMessage = `Error fetching local services. Please try again later. ${error.message}`; statusCode = 503; // Service Unavailable } else if (error.message.includes('Vertex AI') || error.message.includes('GOOGLE_APPLICATION_CREDENTIALS_JSON')) { - errorMessage = 'Error communicating with AI service. Please check the configuration and try again later.'; + errorMessage = `Error communicating with AI service. Please check the configuration and try again later.${error.message}`; statusCode = 503; } return NextResponse.json({ error: errorMessage }, { status: statusCode }); From 9a4bcf03d417e9e37eb85fba2a17756d8fe348f9 Mon Sep 17 00:00:00 2001 From: benlad636 Date: Thu, 18 Jul 2024 13:51:07 +0000 Subject: [PATCH 13/60] v1 solve google auth credential error --- .idx/integrations.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.idx/integrations.json b/.idx/integrations.json index 9b90d33..c812944 100644 --- a/.idx/integrations.json +++ b/.idx/integrations.json @@ -1,3 +1,7 @@ { - "cloud_run_deploy": {} + "firebase_hosting": {}, + "cloud_run_deploy": {}, + "gemini_api": {}, + "google_maps_platform": {}, + "secrets_manager": {} } \ No newline at end of file From a198a2583b49915ef77e1fdbd0fe72f694d6932d Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 02:16:47 -1200 Subject: [PATCH 14/60] v1 --- .env | 15 +++++++++++- components/main.tsx | 58 +++++++++++++++++++++++---------------------- 2 files changed, 44 insertions(+), 29 deletions(-) diff --git a/.env b/.env index 212f281..c2288e0 100644 --- a/.env +++ b/.env @@ -1,4 +1,17 @@ GEMINI_API_KEY = AIzaSyBqefsdar7xSAdcwOrBD1Ms9Br4HwhobX8 FOURSQUARE_API_KEY = fsq3cRwyW6eIparfiN7ZENLK0nKHhRBVDp7U2whlXy3Jbjw= GCP_PROJECT_ID = loca-bc18e -GOOGLE_PLACE_API = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc \ No newline at end of file +GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc +GOOGLE_APPLICATION_CREDENTIALS_JSON = '{ + "type": "service_account", + "project_id": "loca-bc18e", + "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCceQYvnPE5jUBz\n45ERr275LpEkuYCt+797SRrp0Q8pu3fxcLhnMv+YYviukETfskYAuH+lllXfvbUa\nFqXmk3PMz4qxReDloXLEbivuuWRYW5YRwfJb5qCLIYS4/xQ8xNF+1dReDDTe0L+9\nQFtGH0hO0JbgWvqjmGLwie/ZENqdjIO56i7okaRmTFtjrc5Ee4R59Oplqimc7iVR\nyB2wFEafX7N3KEtJ9RlnJxZn/7v69iUk1/cS/PzJVbqzLelKjBaOLhQ1WlHLfycd\n7qSxSfWbEFGenkhW0wvruz6XpYyeSMQTufiu+qgeb1UURg2pgKacEb6WdpFuUcFl\n50qiwantAgMBAAECggEACISABTR+Xxsk0IopOfS6Tj8uMHkWm6HyHPRwTh0Ovb9S\nOqbfquJ4TmPI1LvOu/yY2e4xKKLj3s+VXauw8TnCmnoLuzWqFeXxeObkZlTaNQMb\nSrErj7wgriIvduCPyfUO0GA0dMAmWqCzZ0prDYijZ4LsS584OJKRhDWGBGNp+xx2\nr1+y9RuQLQy0sJrf7jvxJ6UU+qd/rdTw9l3evP+TMIdLhTHgkP512SGOG2GCq6uE\nkWghj7zBK/Obi3dqjkQxhwN5KNJEkQUMtGSieOrZH3JbPgzS4Yq5nxeDYSHavqYC\ndreaaMuETG9y0ZZSdlTy49nRAyrUibAIuSIJz51E8QKBgQDXtMg23ttJNVg+UveW\nkLFZSWbDsjhGKyAbZjGAK5LIBYD3TiuBLbPyPGqm3VjoIYErEK65ck9QeAcPuxQC\n/TL+1LnFfrrBl6rrFpVBsqlSsU5yimaq0i1/sxTb4yjOcTnr8doKivdWvNcTzO5F\nnbqTOfpmkKSGtQifiiiOQB6kxQKBgQC5s6ii+0mMoAJN+4nL1z9uRy2gYxzCKRq6\nWnfJjRgswKgoqQxzODPjkD776Bv4Zc3MH2CIhH2Hhr9mwchO4K/mYBQaKikPu7ts\n+O/pJOx7kWxtx0BEZzfH3bjCBr37BwHra1CwuOsFUfgtr5k41wmMkACIyLqiPdG7\nVriawVpTCQKBgQChg4wnCdfIiVj50cXxx4YEBSIdhmT8pW31FiAaiIXvn69hffa1\nUzNaPkLdjv/zUKMXS/aIhT8+UaF39eyWEGEOztoLN0k/jAE+5jn8Z3rBoGHNAjS9\n04KeC8minAUCD2X/dah+HG/3Uo75FImVNvVtKAyGn+eRthwu2ZRkbz6CwQKBgAzG\nCueLGXgO2Zm7n7Lhz38qbj0GFEhWw3vmFS9MAUmyxt5lInIaf5c7qNlzEdl4Rzuv\nPNinJGtaHXhYBAtI8VCLc1aJZ+GpLC9GwFntLEcjra2vcwBBiVi6K6dNB2xpAvzK\nmPZPAfuPs96QoZ2DTSjaDu9Zv1zBm9ejE3exrSDhAoGBAKpZN13iTLva/VIugPJg\n6O441S7Av8AX/wQA+zIuwrdOlablmuauoraYV2sug+2b0tEHoptkedAH5mCZhPOi\n0b8n+/uDX0eux1A2ECCfPxl/qy1OhkT06m3VZlKaMuSOAYnqn3RGcBIR41pEnyDJ\n4teyxfYdHo2KQ4Z7Klx+q86J\n-----END PRIVATE KEY-----\n", + "client_email": "loca-614@loca-bc18e.iam.gserviceaccount.com", + "client_id": "115115263008370714449", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +}' diff --git a/components/main.tsx b/components/main.tsx index 284be81..40e1774 100644 --- a/components/main.tsx +++ b/components/main.tsx @@ -187,7 +187,7 @@ const Main: React.FC = () => { return (
- + {/* navbar */}
Date: Thu, 18 Jul 2024 02:22:28 -1200 Subject: [PATCH 15/60] v1 -solve google auth credential error --- .env | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.env b/.env index c2288e0..72b39f1 100644 --- a/.env +++ b/.env @@ -2,16 +2,4 @@ GEMINI_API_KEY = AIzaSyBqefsdar7xSAdcwOrBD1Ms9Br4HwhobX8 FOURSQUARE_API_KEY = fsq3cRwyW6eIparfiN7ZENLK0nKHhRBVDp7U2whlXy3Jbjw= GCP_PROJECT_ID = loca-bc18e GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc -GOOGLE_APPLICATION_CREDENTIALS_JSON = '{ - "type": "service_account", - "project_id": "loca-bc18e", - "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCceQYvnPE5jUBz\n45ERr275LpEkuYCt+797SRrp0Q8pu3fxcLhnMv+YYviukETfskYAuH+lllXfvbUa\nFqXmk3PMz4qxReDloXLEbivuuWRYW5YRwfJb5qCLIYS4/xQ8xNF+1dReDDTe0L+9\nQFtGH0hO0JbgWvqjmGLwie/ZENqdjIO56i7okaRmTFtjrc5Ee4R59Oplqimc7iVR\nyB2wFEafX7N3KEtJ9RlnJxZn/7v69iUk1/cS/PzJVbqzLelKjBaOLhQ1WlHLfycd\n7qSxSfWbEFGenkhW0wvruz6XpYyeSMQTufiu+qgeb1UURg2pgKacEb6WdpFuUcFl\n50qiwantAgMBAAECggEACISABTR+Xxsk0IopOfS6Tj8uMHkWm6HyHPRwTh0Ovb9S\nOqbfquJ4TmPI1LvOu/yY2e4xKKLj3s+VXauw8TnCmnoLuzWqFeXxeObkZlTaNQMb\nSrErj7wgriIvduCPyfUO0GA0dMAmWqCzZ0prDYijZ4LsS584OJKRhDWGBGNp+xx2\nr1+y9RuQLQy0sJrf7jvxJ6UU+qd/rdTw9l3evP+TMIdLhTHgkP512SGOG2GCq6uE\nkWghj7zBK/Obi3dqjkQxhwN5KNJEkQUMtGSieOrZH3JbPgzS4Yq5nxeDYSHavqYC\ndreaaMuETG9y0ZZSdlTy49nRAyrUibAIuSIJz51E8QKBgQDXtMg23ttJNVg+UveW\nkLFZSWbDsjhGKyAbZjGAK5LIBYD3TiuBLbPyPGqm3VjoIYErEK65ck9QeAcPuxQC\n/TL+1LnFfrrBl6rrFpVBsqlSsU5yimaq0i1/sxTb4yjOcTnr8doKivdWvNcTzO5F\nnbqTOfpmkKSGtQifiiiOQB6kxQKBgQC5s6ii+0mMoAJN+4nL1z9uRy2gYxzCKRq6\nWnfJjRgswKgoqQxzODPjkD776Bv4Zc3MH2CIhH2Hhr9mwchO4K/mYBQaKikPu7ts\n+O/pJOx7kWxtx0BEZzfH3bjCBr37BwHra1CwuOsFUfgtr5k41wmMkACIyLqiPdG7\nVriawVpTCQKBgQChg4wnCdfIiVj50cXxx4YEBSIdhmT8pW31FiAaiIXvn69hffa1\nUzNaPkLdjv/zUKMXS/aIhT8+UaF39eyWEGEOztoLN0k/jAE+5jn8Z3rBoGHNAjS9\n04KeC8minAUCD2X/dah+HG/3Uo75FImVNvVtKAyGn+eRthwu2ZRkbz6CwQKBgAzG\nCueLGXgO2Zm7n7Lhz38qbj0GFEhWw3vmFS9MAUmyxt5lInIaf5c7qNlzEdl4Rzuv\nPNinJGtaHXhYBAtI8VCLc1aJZ+GpLC9GwFntLEcjra2vcwBBiVi6K6dNB2xpAvzK\nmPZPAfuPs96QoZ2DTSjaDu9Zv1zBm9ejE3exrSDhAoGBAKpZN13iTLva/VIugPJg\n6O441S7Av8AX/wQA+zIuwrdOlablmuauoraYV2sug+2b0tEHoptkedAH5mCZhPOi\n0b8n+/uDX0eux1A2ECCfPxl/qy1OhkT06m3VZlKaMuSOAYnqn3RGcBIR41pEnyDJ\n4teyxfYdHo2KQ4Z7Klx+q86J\n-----END PRIVATE KEY-----\n", - "client_email": "loca-614@loca-bc18e.iam.gserviceaccount.com", - "client_id": "115115263008370714449", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", - "universe_domain": "googleapis.com" -}' +GOOGLE_APPLICATION_CREDENTIALS_JSON = replacewithyourcredential \ No newline at end of file From 56040ec1caf21e90bf64c16183877f0e9b9a5473 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 02:24:22 -1200 Subject: [PATCH 16/60] v1 -solve google auth credential error --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 72b39f1..ef95619 100644 --- a/.env +++ b/.env @@ -2,4 +2,4 @@ GEMINI_API_KEY = AIzaSyBqefsdar7xSAdcwOrBD1Ms9Br4HwhobX8 FOURSQUARE_API_KEY = fsq3cRwyW6eIparfiN7ZENLK0nKHhRBVDp7U2whlXy3Jbjw= GCP_PROJECT_ID = loca-bc18e GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc -GOOGLE_APPLICATION_CREDENTIALS_JSON = replacewithyourcredential \ No newline at end of file +# GOOGLE_APPLICATION_CREDENTIALS_JSON = replacewithyourcredential \ No newline at end of file From 4ac4ee7a473e9aaaa07be89fd02b6d77d7fbac26 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 02:26:01 -1200 Subject: [PATCH 17/60] v1 -solve google auth credential error --- app/api/gemini/route.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 47e4901..48f5d3b 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -17,9 +17,11 @@ function initializeVertexAI() { try { const credentials = JSON.parse(credentialsJson); return new VertexAI({ + // use google auth project Id to run locally project: credentials.project_id, location: 'us-central1', - googleAuthOptions:credentials + // uncomment the code below to run it on server + // googleAuthOptions:credentials }); } catch (error) { console.error('Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:', error); From d9ad01674155d0e6283b9cbbcb94e99b12f236b9 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 02:26:31 -1200 Subject: [PATCH 18/60] v1 -solve google auth error --- .env | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.env b/.env index ef95619..c6a8ae5 100644 --- a/.env +++ b/.env @@ -1,5 +1,4 @@ GEMINI_API_KEY = AIzaSyBqefsdar7xSAdcwOrBD1Ms9Br4HwhobX8 FOURSQUARE_API_KEY = fsq3cRwyW6eIparfiN7ZENLK0nKHhRBVDp7U2whlXy3Jbjw= GCP_PROJECT_ID = loca-bc18e -GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc -# GOOGLE_APPLICATION_CREDENTIALS_JSON = replacewithyourcredential \ No newline at end of file +GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc \ No newline at end of file From 0c358c04d907087fa09b4e7457e47afc6b1642cc Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 03:03:12 -1200 Subject: [PATCH 19/60] v1 -solve google auth credential error --- .env | 15 ++++++++++++++- app/api/gemini/route.ts | 4 +--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.env b/.env index c6a8ae5..c2288e0 100644 --- a/.env +++ b/.env @@ -1,4 +1,17 @@ GEMINI_API_KEY = AIzaSyBqefsdar7xSAdcwOrBD1Ms9Br4HwhobX8 FOURSQUARE_API_KEY = fsq3cRwyW6eIparfiN7ZENLK0nKHhRBVDp7U2whlXy3Jbjw= GCP_PROJECT_ID = loca-bc18e -GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc \ No newline at end of file +GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc +GOOGLE_APPLICATION_CREDENTIALS_JSON = '{ + "type": "service_account", + "project_id": "loca-bc18e", + "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCceQYvnPE5jUBz\n45ERr275LpEkuYCt+797SRrp0Q8pu3fxcLhnMv+YYviukETfskYAuH+lllXfvbUa\nFqXmk3PMz4qxReDloXLEbivuuWRYW5YRwfJb5qCLIYS4/xQ8xNF+1dReDDTe0L+9\nQFtGH0hO0JbgWvqjmGLwie/ZENqdjIO56i7okaRmTFtjrc5Ee4R59Oplqimc7iVR\nyB2wFEafX7N3KEtJ9RlnJxZn/7v69iUk1/cS/PzJVbqzLelKjBaOLhQ1WlHLfycd\n7qSxSfWbEFGenkhW0wvruz6XpYyeSMQTufiu+qgeb1UURg2pgKacEb6WdpFuUcFl\n50qiwantAgMBAAECggEACISABTR+Xxsk0IopOfS6Tj8uMHkWm6HyHPRwTh0Ovb9S\nOqbfquJ4TmPI1LvOu/yY2e4xKKLj3s+VXauw8TnCmnoLuzWqFeXxeObkZlTaNQMb\nSrErj7wgriIvduCPyfUO0GA0dMAmWqCzZ0prDYijZ4LsS584OJKRhDWGBGNp+xx2\nr1+y9RuQLQy0sJrf7jvxJ6UU+qd/rdTw9l3evP+TMIdLhTHgkP512SGOG2GCq6uE\nkWghj7zBK/Obi3dqjkQxhwN5KNJEkQUMtGSieOrZH3JbPgzS4Yq5nxeDYSHavqYC\ndreaaMuETG9y0ZZSdlTy49nRAyrUibAIuSIJz51E8QKBgQDXtMg23ttJNVg+UveW\nkLFZSWbDsjhGKyAbZjGAK5LIBYD3TiuBLbPyPGqm3VjoIYErEK65ck9QeAcPuxQC\n/TL+1LnFfrrBl6rrFpVBsqlSsU5yimaq0i1/sxTb4yjOcTnr8doKivdWvNcTzO5F\nnbqTOfpmkKSGtQifiiiOQB6kxQKBgQC5s6ii+0mMoAJN+4nL1z9uRy2gYxzCKRq6\nWnfJjRgswKgoqQxzODPjkD776Bv4Zc3MH2CIhH2Hhr9mwchO4K/mYBQaKikPu7ts\n+O/pJOx7kWxtx0BEZzfH3bjCBr37BwHra1CwuOsFUfgtr5k41wmMkACIyLqiPdG7\nVriawVpTCQKBgQChg4wnCdfIiVj50cXxx4YEBSIdhmT8pW31FiAaiIXvn69hffa1\nUzNaPkLdjv/zUKMXS/aIhT8+UaF39eyWEGEOztoLN0k/jAE+5jn8Z3rBoGHNAjS9\n04KeC8minAUCD2X/dah+HG/3Uo75FImVNvVtKAyGn+eRthwu2ZRkbz6CwQKBgAzG\nCueLGXgO2Zm7n7Lhz38qbj0GFEhWw3vmFS9MAUmyxt5lInIaf5c7qNlzEdl4Rzuv\nPNinJGtaHXhYBAtI8VCLc1aJZ+GpLC9GwFntLEcjra2vcwBBiVi6K6dNB2xpAvzK\nmPZPAfuPs96QoZ2DTSjaDu9Zv1zBm9ejE3exrSDhAoGBAKpZN13iTLva/VIugPJg\n6O441S7Av8AX/wQA+zIuwrdOlablmuauoraYV2sug+2b0tEHoptkedAH5mCZhPOi\n0b8n+/uDX0eux1A2ECCfPxl/qy1OhkT06m3VZlKaMuSOAYnqn3RGcBIR41pEnyDJ\n4teyxfYdHo2KQ4Z7Klx+q86J\n-----END PRIVATE KEY-----\n", + "client_email": "loca-614@loca-bc18e.iam.gserviceaccount.com", + "client_id": "115115263008370714449", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +}' diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 48f5d3b..47e4901 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -17,11 +17,9 @@ function initializeVertexAI() { try { const credentials = JSON.parse(credentialsJson); return new VertexAI({ - // use google auth project Id to run locally project: credentials.project_id, location: 'us-central1', - // uncomment the code below to run it on server - // googleAuthOptions:credentials + googleAuthOptions:credentials }); } catch (error) { console.error('Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:', error); From 71aa8f9349b75afa5f64bd126771d010732e68bc Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 03:21:42 -1200 Subject: [PATCH 20/60] v1 -solve google auth credential error --- .env | 4 +- app/api/gemini/route.ts | 144 ++++++++++++++++++++++++++-------------- 2 files changed, 96 insertions(+), 52 deletions(-) diff --git a/.env b/.env index c2288e0..51b0139 100644 --- a/.env +++ b/.env @@ -2,7 +2,7 @@ GEMINI_API_KEY = AIzaSyBqefsdar7xSAdcwOrBD1Ms9Br4HwhobX8 FOURSQUARE_API_KEY = fsq3cRwyW6eIparfiN7ZENLK0nKHhRBVDp7U2whlXy3Jbjw= GCP_PROJECT_ID = loca-bc18e GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc -GOOGLE_APPLICATION_CREDENTIALS_JSON = '{ +GOOGLE_APPLICATION_CREDENTIALS_JSON = { "type": "service_account", "project_id": "loca-bc18e", "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", @@ -14,4 +14,4 @@ GOOGLE_APPLICATION_CREDENTIALS_JSON = '{ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", "universe_domain": "googleapis.com" -}' +} diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 47e4901..322db73 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -1,56 +1,85 @@ -import { NextRequest, NextResponse } from 'next/server'; -import axios from 'axios'; +import { NextRequest, NextResponse } from "next/server"; +import axios from "axios"; import { VertexAI, HarmCategory, HarmBlockThreshold, -} from '@google-cloud/vertexai'; +} from "@google-cloud/vertexai"; // Function to initialize Vertex AI with JSON credentials function initializeVertexAI() { - const credentialsJson = process.env.GOOGLE_APPLICATION_CREDENTIALS_JSON; - + const credentialsJson = ` + { + "type": "service_account", + "project_id": "loca-bc18e", + "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCceQYvnPE5jUBz\n45ERr275LpEkuYCt+797SRrp0Q8pu3fxcLhnMv+YYviukETfskYAuH+lllXfvbUa\nFqXmk3PMz4qxReDloXLEbivuuWRYW5YRwfJb5qCLIYS4/xQ8xNF+1dReDDTe0L+9\nQFtGH0hO0JbgWvqjmGLwie/ZENqdjIO56i7okaRmTFtjrc5Ee4R59Oplqimc7iVR\nyB2wFEafX7N3KEtJ9RlnJxZn/7v69iUk1/cS/PzJVbqzLelKjBaOLhQ1WlHLfycd\n7qSxSfWbEFGenkhW0wvruz6XpYyeSMQTufiu+qgeb1UURg2pgKacEb6WdpFuUcFl\n50qiwantAgMBAAECggEACISABTR+Xxsk0IopOfS6Tj8uMHkWm6HyHPRwTh0Ovb9S\nOqbfquJ4TmPI1LvOu/yY2e4xKKLj3s+VXauw8TnCmnoLuzWqFeXxeObkZlTaNQMb\nSrErj7wgriIvduCPyfUO0GA0dMAmWqCzZ0prDYijZ4LsS584OJKRhDWGBGNp+xx2\nr1+y9RuQLQy0sJrf7jvxJ6UU+qd/rdTw9l3evP+TMIdLhTHgkP512SGOG2GCq6uE\nkWghj7zBK/Obi3dqjkQxhwN5KNJEkQUMtGSieOrZH3JbPgzS4Yq5nxeDYSHavqYC\ndreaaMuETG9y0ZZSdlTy49nRAyrUibAIuSIJz51E8QKBgQDXtMg23ttJNVg+UveW\nkLFZSWbDsjhGKyAbZjGAK5LIBYD3TiuBLbPyPGqm3VjoIYErEK65ck9QeAcPuxQC\n/TL+1LnFfrrBl6rrFpVBsqlSsU5yimaq0i1/sxTb4yjOcTnr8doKivdWvNcTzO5F\nnbqTOfpmkKSGtQifiiiOQB6kxQKBgQC5s6ii+0mMoAJN+4nL1z9uRy2gYxzCKRq6\nWnfJjRgswKgoqQxzODPjkD776Bv4Zc3MH2CIhH2Hhr9mwchO4K/mYBQaKikPu7ts\n+O/pJOx7kWxtx0BEZzfH3bjCBr37BwHra1CwuOsFUfgtr5k41wmMkACIyLqiPdG7\nVriawVpTCQKBgQChg4wnCdfIiVj50cXxx4YEBSIdhmT8pW31FiAaiIXvn69hffa1\nUzNaPkLdjv/zUKMXS/aIhT8+UaF39eyWEGEOztoLN0k/jAE+5jn8Z3rBoGHNAjS9\n04KeC8minAUCD2X/dah+HG/3Uo75FImVNvVtKAyGn+eRthwu2ZRkbz6CwQKBgAzG\nCueLGXgO2Zm7n7Lhz38qbj0GFEhWw3vmFS9MAUmyxt5lInIaf5c7qNlzEdl4Rzuv\nPNinJGtaHXhYBAtI8VCLc1aJZ+GpLC9GwFntLEcjra2vcwBBiVi6K6dNB2xpAvzK\nmPZPAfuPs96QoZ2DTSjaDu9Zv1zBm9ejE3exrSDhAoGBAKpZN13iTLva/VIugPJg\n6O441S7Av8AX/wQA+zIuwrdOlablmuauoraYV2sug+2b0tEHoptkedAH5mCZhPOi\n0b8n+/uDX0eux1A2ECCfPxl/qy1OhkT06m3VZlKaMuSOAYnqn3RGcBIR41pEnyDJ\n4teyxfYdHo2KQ4Z7Klx+q86J\n-----END PRIVATE KEY-----\n", + "client_email": "loca-614@loca-bc18e.iam.gserviceaccount.com", + "client_id": "115115263008370714449", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +} + + `; + if (!credentialsJson) { - throw new Error('GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set'); + throw new Error( + "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" + ); } try { const credentials = JSON.parse(credentialsJson); return new VertexAI({ project: credentials.project_id, - location: 'us-central1', - googleAuthOptions:credentials + location: "us-central1", + googleAuthOptions: credentials, }); } catch (error) { - console.error('Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:', error); - throw new Error('Invalid GOOGLE_APPLICATION_CREDENTIALS_JSON'); + console.error("Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:", error); + throw new Error("Invalid GOOGLE_APPLICATION_CREDENTIALS_JSON"); } } // Function to get local services from Google Places API -async function getLocalServices(query: string, latitude: string, longitude: string) { +async function getLocalServices( + query: string, + latitude: string, + longitude: string +) { const apiKey = process.env.GOOGLE_PLACES_API_KEY; - + if (!apiKey) { - console.error('Google Places API key is not set'); - throw new Error('Google Places API key is not configured'); + console.error("Google Places API key is not set"); + throw new Error("Google Places API key is not configured"); } try { - const response = await axios.get('https://maps.googleapis.com/maps/api/place/nearbysearch/json', { - params: { - location: `${latitude},${longitude}`, - radius: 5000, // Search within 5km radius - type: 'business', // This can be adjusted based on the specific types you're interested in - keyword: query, - key: apiKey - }, - timeout: 5000, // Reduced timeout for faster failure - }); + const response = await axios.get( + "https://maps.googleapis.com/maps/api/place/nearbysearch/json", + { + params: { + location: `${latitude},${longitude}`, + radius: 5000, // Search within 5km radius + type: "business", // This can be adjusted based on the specific types you're interested in + keyword: query, + key: apiKey, + }, + timeout: 8000, // Reduced timeout for faster failure + } + ); - if (response.data.status === 'REQUEST_DENIED') { - console.error('Google Places API request denied:', response.data.error_message); - throw new Error(`Google Places API request denied: ${response.data.error_message}`); + if (response.data.status === "REQUEST_DENIED") { + console.error( + "Google Places API request denied:", + response.data.error_message + ); + throw new Error( + `Google Places API request denied: ${response.data.error_message}` + ); } return response.data.results.slice(0, 5).map((place: any) => ({ @@ -58,28 +87,33 @@ async function getLocalServices(query: string, latitude: string, longitude: stri address: place.vicinity, rating: place.rating, user_ratings_total: place.user_ratings_total, - place_id: place.place_id + place_id: place.place_id, })); } catch (error) { - console.error('Google Places API Error:', error); + console.error("Google Places API Error:", error); if (axios.isAxiosError(error) && error.response) { - throw new Error(`Google Places API Error: ${error.response.status} - ${error.response.data.error_message}`); + throw new Error( + `Google Places API Error: ${error.response.status} - ${error.response.data.error_message}` + ); } else { - throw new Error('Failed to fetch local services'); + throw new Error("Failed to fetch local services"); } } } export async function POST(req: NextRequest) { const { userMessage, latitude, longitude } = await req.json(); - + if (!userMessage || !latitude || !longitude) { - return NextResponse.json({ error: 'Missing required fields: userMessage, latitude, or longitude' }, { status: 400 }); + return NextResponse.json( + { error: "Missing required fields: userMessage, latitude, or longitude" }, + { status: 400 } + ); } try { const vertexAI = initializeVertexAI(); - const model = vertexAI.getGenerativeModel({ model: 'gemini-1.5-pro-001' }); + const model = vertexAI.getGenerativeModel({ model: "gemini-1.5-pro-001" }); const chat = model.startChat({ generationConfig: { maxOutputTokens: 1024, @@ -106,43 +140,53 @@ export async function POST(req: NextRequest) { ], }); - console.log('Fetching local services'); + console.log("Fetching local services"); let services; try { services = await getLocalServices(userMessage, latitude, longitude); - console.log('Received local services'); + console.log("Received local services"); } catch (error) { - console.error('Error fetching local services:', error); + console.error("Error fetching local services:", error); services = []; } - console.log('Sending message to Vertex AI'); + console.log("Sending message to Vertex AI"); const contextMessage = `You are to act as a loca an AI local service finder build by devben. User is looking for local services: "${userMessage}". ${ - services.length > 0 - ? `Here are some available services: ${JSON.stringify(services)}. Please provide a helpful response based on this information, highlighting and bold the best options based on ratings and number of reviews. If "${userMessage}" doesn't sound like they are looking for local service respond casually for example text like "hello what can you do" you knew you had to reply casually` + services.length > 0 + ? `Here are some available services: ${JSON.stringify( + services + )}. Please provide a helpful response based on this information, highlighting and bold the best options based on ratings and number of reviews. If "${userMessage}" doesn't sound like they are looking for local service respond casually for example text like "hello what can you do" you knew you had to reply casually` : `Unfortunately, we couldn't find any local services matching the query. Please provide a general response about ${userMessage} and suggest how the user might find local services.` }`; const result = await chat.sendMessage(contextMessage); - console.log('Received response from Vertex AI'); + console.log("Received response from Vertex AI"); - const vertexResponseText = result.response?.candidates?.[0]?.content?.parts?.[0]?.text || 'No response from Vertex AI'; + const vertexResponseText = + result.response?.candidates?.[0]?.content?.parts?.[0]?.text || + "No response from Vertex AI"; - return NextResponse.json({ - vertexResponse: vertexResponseText, - services - }, { status: 200 }); + return NextResponse.json( + { + vertexResponse: vertexResponseText, + services, + }, + { status: 200 } + ); } catch (error: any) { - console.error('Server Error:', error.message); + console.error("Server Error:", error.message); let errorMessage = `Something went wrong on the server ${error.message}`; let statusCode = 500; - if (error.message.includes('Google Places API Error')) { + if (error.message.includes("Google Places API Error")) { errorMessage = `Error fetching local services. Please try again later. ${error.message}`; statusCode = 503; // Service Unavailable - } else if (error.message.includes('Vertex AI') || error.message.includes('GOOGLE_APPLICATION_CREDENTIALS_JSON')) { + } else if ( + error.message.includes("Vertex AI") || + error.message.includes("GOOGLE_APPLICATION_CREDENTIALS_JSON") + ) { errorMessage = `Error communicating with AI service. Please check the configuration and try again later.${error.message}`; statusCode = 503; } return NextResponse.json({ error: errorMessage }, { status: statusCode }); } -} \ No newline at end of file +} From 8ca0bdc431beac945b7e38f167373ccd869d150b Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 03:43:27 -1200 Subject: [PATCH 21/60] v1 -solve google auth credential error --- app/api/gemini/route.ts | 19 ++++--------------- app/page.tsx | 1 + lib/c.ts | 15 +++++++++++++++ tsconfig.json | 2 +- 4 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 lib/c.ts diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 322db73..2b442ca 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -6,24 +6,13 @@ import { HarmBlockThreshold, } from "@google-cloud/vertexai"; +import C from "@/lib/c" + // Function to initialize Vertex AI with JSON credentials function initializeVertexAI() { - const credentialsJson = ` - { - "type": "service_account", - "project_id": "loca-bc18e", - "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCceQYvnPE5jUBz\n45ERr275LpEkuYCt+797SRrp0Q8pu3fxcLhnMv+YYviukETfskYAuH+lllXfvbUa\nFqXmk3PMz4qxReDloXLEbivuuWRYW5YRwfJb5qCLIYS4/xQ8xNF+1dReDDTe0L+9\nQFtGH0hO0JbgWvqjmGLwie/ZENqdjIO56i7okaRmTFtjrc5Ee4R59Oplqimc7iVR\nyB2wFEafX7N3KEtJ9RlnJxZn/7v69iUk1/cS/PzJVbqzLelKjBaOLhQ1WlHLfycd\n7qSxSfWbEFGenkhW0wvruz6XpYyeSMQTufiu+qgeb1UURg2pgKacEb6WdpFuUcFl\n50qiwantAgMBAAECggEACISABTR+Xxsk0IopOfS6Tj8uMHkWm6HyHPRwTh0Ovb9S\nOqbfquJ4TmPI1LvOu/yY2e4xKKLj3s+VXauw8TnCmnoLuzWqFeXxeObkZlTaNQMb\nSrErj7wgriIvduCPyfUO0GA0dMAmWqCzZ0prDYijZ4LsS584OJKRhDWGBGNp+xx2\nr1+y9RuQLQy0sJrf7jvxJ6UU+qd/rdTw9l3evP+TMIdLhTHgkP512SGOG2GCq6uE\nkWghj7zBK/Obi3dqjkQxhwN5KNJEkQUMtGSieOrZH3JbPgzS4Yq5nxeDYSHavqYC\ndreaaMuETG9y0ZZSdlTy49nRAyrUibAIuSIJz51E8QKBgQDXtMg23ttJNVg+UveW\nkLFZSWbDsjhGKyAbZjGAK5LIBYD3TiuBLbPyPGqm3VjoIYErEK65ck9QeAcPuxQC\n/TL+1LnFfrrBl6rrFpVBsqlSsU5yimaq0i1/sxTb4yjOcTnr8doKivdWvNcTzO5F\nnbqTOfpmkKSGtQifiiiOQB6kxQKBgQC5s6ii+0mMoAJN+4nL1z9uRy2gYxzCKRq6\nWnfJjRgswKgoqQxzODPjkD776Bv4Zc3MH2CIhH2Hhr9mwchO4K/mYBQaKikPu7ts\n+O/pJOx7kWxtx0BEZzfH3bjCBr37BwHra1CwuOsFUfgtr5k41wmMkACIyLqiPdG7\nVriawVpTCQKBgQChg4wnCdfIiVj50cXxx4YEBSIdhmT8pW31FiAaiIXvn69hffa1\nUzNaPkLdjv/zUKMXS/aIhT8+UaF39eyWEGEOztoLN0k/jAE+5jn8Z3rBoGHNAjS9\n04KeC8minAUCD2X/dah+HG/3Uo75FImVNvVtKAyGn+eRthwu2ZRkbz6CwQKBgAzG\nCueLGXgO2Zm7n7Lhz38qbj0GFEhWw3vmFS9MAUmyxt5lInIaf5c7qNlzEdl4Rzuv\nPNinJGtaHXhYBAtI8VCLc1aJZ+GpLC9GwFntLEcjra2vcwBBiVi6K6dNB2xpAvzK\nmPZPAfuPs96QoZ2DTSjaDu9Zv1zBm9ejE3exrSDhAoGBAKpZN13iTLva/VIugPJg\n6O441S7Av8AX/wQA+zIuwrdOlablmuauoraYV2sug+2b0tEHoptkedAH5mCZhPOi\n0b8n+/uDX0eux1A2ECCfPxl/qy1OhkT06m3VZlKaMuSOAYnqn3RGcBIR41pEnyDJ\n4teyxfYdHo2KQ4Z7Klx+q86J\n-----END PRIVATE KEY-----\n", - "client_email": "loca-614@loca-bc18e.iam.gserviceaccount.com", - "client_id": "115115263008370714449", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", - "universe_domain": "googleapis.com" -} + const credentialsJsons = C - `; + const credentialsJson = JSON.stringify(credentialsJsons) if (!credentialsJson) { throw new Error( diff --git a/app/page.tsx b/app/page.tsx index 3320695..ab4f2f7 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,6 @@ import HomePage from "@/components/home"; + export default function Home() { return (
diff --git a/lib/c.ts b/lib/c.ts new file mode 100644 index 0000000..ae942ed --- /dev/null +++ b/lib/c.ts @@ -0,0 +1,15 @@ + const C = { + "type": "service_account", + "project_id": "loca-bc18e", + "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCceQYvnPE5jUBz\n45ERr275LpEkuYCt+797SRrp0Q8pu3fxcLhnMv+YYviukETfskYAuH+lllXfvbUa\nFqXmk3PMz4qxReDloXLEbivuuWRYW5YRwfJb5qCLIYS4/xQ8xNF+1dReDDTe0L+9\nQFtGH0hO0JbgWvqjmGLwie/ZENqdjIO56i7okaRmTFtjrc5Ee4R59Oplqimc7iVR\nyB2wFEafX7N3KEtJ9RlnJxZn/7v69iUk1/cS/PzJVbqzLelKjBaOLhQ1WlHLfycd\n7qSxSfWbEFGenkhW0wvruz6XpYyeSMQTufiu+qgeb1UURg2pgKacEb6WdpFuUcFl\n50qiwantAgMBAAECggEACISABTR+Xxsk0IopOfS6Tj8uMHkWm6HyHPRwTh0Ovb9S\nOqbfquJ4TmPI1LvOu/yY2e4xKKLj3s+VXauw8TnCmnoLuzWqFeXxeObkZlTaNQMb\nSrErj7wgriIvduCPyfUO0GA0dMAmWqCzZ0prDYijZ4LsS584OJKRhDWGBGNp+xx2\nr1+y9RuQLQy0sJrf7jvxJ6UU+qd/rdTw9l3evP+TMIdLhTHgkP512SGOG2GCq6uE\nkWghj7zBK/Obi3dqjkQxhwN5KNJEkQUMtGSieOrZH3JbPgzS4Yq5nxeDYSHavqYC\ndreaaMuETG9y0ZZSdlTy49nRAyrUibAIuSIJz51E8QKBgQDXtMg23ttJNVg+UveW\nkLFZSWbDsjhGKyAbZjGAK5LIBYD3TiuBLbPyPGqm3VjoIYErEK65ck9QeAcPuxQC\n/TL+1LnFfrrBl6rrFpVBsqlSsU5yimaq0i1/sxTb4yjOcTnr8doKivdWvNcTzO5F\nnbqTOfpmkKSGtQifiiiOQB6kxQKBgQC5s6ii+0mMoAJN+4nL1z9uRy2gYxzCKRq6\nWnfJjRgswKgoqQxzODPjkD776Bv4Zc3MH2CIhH2Hhr9mwchO4K/mYBQaKikPu7ts\n+O/pJOx7kWxtx0BEZzfH3bjCBr37BwHra1CwuOsFUfgtr5k41wmMkACIyLqiPdG7\nVriawVpTCQKBgQChg4wnCdfIiVj50cXxx4YEBSIdhmT8pW31FiAaiIXvn69hffa1\nUzNaPkLdjv/zUKMXS/aIhT8+UaF39eyWEGEOztoLN0k/jAE+5jn8Z3rBoGHNAjS9\n04KeC8minAUCD2X/dah+HG/3Uo75FImVNvVtKAyGn+eRthwu2ZRkbz6CwQKBgAzG\nCueLGXgO2Zm7n7Lhz38qbj0GFEhWw3vmFS9MAUmyxt5lInIaf5c7qNlzEdl4Rzuv\nPNinJGtaHXhYBAtI8VCLc1aJZ+GpLC9GwFntLEcjra2vcwBBiVi6K6dNB2xpAvzK\nmPZPAfuPs96QoZ2DTSjaDu9Zv1zBm9ejE3exrSDhAoGBAKpZN13iTLva/VIugPJg\n6O441S7Av8AX/wQA+zIuwrdOlablmuauoraYV2sug+2b0tEHoptkedAH5mCZhPOi\n0b8n+/uDX0eux1A2ECCfPxl/qy1OhkT06m3VZlKaMuSOAYnqn3RGcBIR41pEnyDJ\n4teyxfYdHo2KQ4Z7Klx+q86J\n-----END PRIVATE KEY-----\n", + "client_email": "loca-614@loca-bc18e.iam.gserviceaccount.com", + "client_id": "115115263008370714449", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" + } + + export default C \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 722ddc4..7bb9a5c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,6 +21,6 @@ "@/*": ["./*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "app/api/gemini/route.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "app/api/gemini/route.ts", "lib/c.ts"], "exclude": ["node_modules"] } From c9be32759be5d8de69fd071a512173d355cb3b6f Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 04:50:53 -1200 Subject: [PATCH 22/60] v1 -solve google auth credential error --- .env | 17 ------------ app/api/gemini/route.ts | 21 ++++++++------- components/main.tsx | 58 ++++++++++++++++++++--------------------- 3 files changed, 39 insertions(+), 57 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index 51b0139..0000000 --- a/.env +++ /dev/null @@ -1,17 +0,0 @@ -GEMINI_API_KEY = AIzaSyBqefsdar7xSAdcwOrBD1Ms9Br4HwhobX8 -FOURSQUARE_API_KEY = fsq3cRwyW6eIparfiN7ZENLK0nKHhRBVDp7U2whlXy3Jbjw= -GCP_PROJECT_ID = loca-bc18e -GOOGLE_PLACES_API_KEY = AIzaSyC1BX6Wcgrp6jibvldv2QJbEAyRzdWKWkc -GOOGLE_APPLICATION_CREDENTIALS_JSON = { - "type": "service_account", - "project_id": "loca-bc18e", - "private_key_id": "db79930f64681d1840c4aee406c1ada61a8d28c6", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCceQYvnPE5jUBz\n45ERr275LpEkuYCt+797SRrp0Q8pu3fxcLhnMv+YYviukETfskYAuH+lllXfvbUa\nFqXmk3PMz4qxReDloXLEbivuuWRYW5YRwfJb5qCLIYS4/xQ8xNF+1dReDDTe0L+9\nQFtGH0hO0JbgWvqjmGLwie/ZENqdjIO56i7okaRmTFtjrc5Ee4R59Oplqimc7iVR\nyB2wFEafX7N3KEtJ9RlnJxZn/7v69iUk1/cS/PzJVbqzLelKjBaOLhQ1WlHLfycd\n7qSxSfWbEFGenkhW0wvruz6XpYyeSMQTufiu+qgeb1UURg2pgKacEb6WdpFuUcFl\n50qiwantAgMBAAECggEACISABTR+Xxsk0IopOfS6Tj8uMHkWm6HyHPRwTh0Ovb9S\nOqbfquJ4TmPI1LvOu/yY2e4xKKLj3s+VXauw8TnCmnoLuzWqFeXxeObkZlTaNQMb\nSrErj7wgriIvduCPyfUO0GA0dMAmWqCzZ0prDYijZ4LsS584OJKRhDWGBGNp+xx2\nr1+y9RuQLQy0sJrf7jvxJ6UU+qd/rdTw9l3evP+TMIdLhTHgkP512SGOG2GCq6uE\nkWghj7zBK/Obi3dqjkQxhwN5KNJEkQUMtGSieOrZH3JbPgzS4Yq5nxeDYSHavqYC\ndreaaMuETG9y0ZZSdlTy49nRAyrUibAIuSIJz51E8QKBgQDXtMg23ttJNVg+UveW\nkLFZSWbDsjhGKyAbZjGAK5LIBYD3TiuBLbPyPGqm3VjoIYErEK65ck9QeAcPuxQC\n/TL+1LnFfrrBl6rrFpVBsqlSsU5yimaq0i1/sxTb4yjOcTnr8doKivdWvNcTzO5F\nnbqTOfpmkKSGtQifiiiOQB6kxQKBgQC5s6ii+0mMoAJN+4nL1z9uRy2gYxzCKRq6\nWnfJjRgswKgoqQxzODPjkD776Bv4Zc3MH2CIhH2Hhr9mwchO4K/mYBQaKikPu7ts\n+O/pJOx7kWxtx0BEZzfH3bjCBr37BwHra1CwuOsFUfgtr5k41wmMkACIyLqiPdG7\nVriawVpTCQKBgQChg4wnCdfIiVj50cXxx4YEBSIdhmT8pW31FiAaiIXvn69hffa1\nUzNaPkLdjv/zUKMXS/aIhT8+UaF39eyWEGEOztoLN0k/jAE+5jn8Z3rBoGHNAjS9\n04KeC8minAUCD2X/dah+HG/3Uo75FImVNvVtKAyGn+eRthwu2ZRkbz6CwQKBgAzG\nCueLGXgO2Zm7n7Lhz38qbj0GFEhWw3vmFS9MAUmyxt5lInIaf5c7qNlzEdl4Rzuv\nPNinJGtaHXhYBAtI8VCLc1aJZ+GpLC9GwFntLEcjra2vcwBBiVi6K6dNB2xpAvzK\nmPZPAfuPs96QoZ2DTSjaDu9Zv1zBm9ejE3exrSDhAoGBAKpZN13iTLva/VIugPJg\n6O441S7Av8AX/wQA+zIuwrdOlablmuauoraYV2sug+2b0tEHoptkedAH5mCZhPOi\n0b8n+/uDX0eux1A2ECCfPxl/qy1OhkT06m3VZlKaMuSOAYnqn3RGcBIR41pEnyDJ\n4teyxfYdHo2KQ4Z7Klx+q86J\n-----END PRIVATE KEY-----\n", - "client_email": "loca-614@loca-bc18e.iam.gserviceaccount.com", - "client_id": "115115263008370714449", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/loca-614%40loca-bc18e.iam.gserviceaccount.com", - "universe_domain": "googleapis.com" -} diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 2b442ca..6fa8394 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -6,26 +6,27 @@ import { HarmBlockThreshold, } from "@google-cloud/vertexai"; +// I import google cloud services credential from here import C from "@/lib/c" // Function to initialize Vertex AI with JSON credentials function initializeVertexAI() { - const credentialsJsons = C + // const credentialsJsons = C - const credentialsJson = JSON.stringify(credentialsJsons) + // const credentialsJson = JSON.stringify(credentialsJsons) - if (!credentialsJson) { - throw new Error( - "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" - ); - } + // if (!credentialsJson) { + // throw new Error( + // "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" + // ); + // } try { - const credentials = JSON.parse(credentialsJson); + // const credentials = JSON.parse(credentialsJson); return new VertexAI({ - project: credentials.project_id, + project: process.env.PROJECT_ID, location: "us-central1", - googleAuthOptions: credentials, + // googleAuthOptions: credentials, }); } catch (error) { console.error("Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:", error); diff --git a/components/main.tsx b/components/main.tsx index 40e1774..284be81 100644 --- a/components/main.tsx +++ b/components/main.tsx @@ -187,7 +187,7 @@ const Main: React.FC = () => { return (
- + {/* navbar */}
{/* footer */} -
-
- {locationError && ( -
-

{locationError}

- setManualLocation(e.target.value)} - className="w-full max-w-4xl rounded-full h-10 bg-[#1e1f20] text-[#ccc] p-2 px-4 outline-none" - placeholder="Enter your full location " - /> -
- )} - setUserMessage(e.target.value)} - onKeyPress={(e) => e.key === "Enter" && handleSendMessage()} - className="w-full max-w-4xl rounded-full h-16 bg-[#1e1f20] text-[#ccc] p-2 px-4 outline-none cursor-text text-md" - placeholder={`looking for local service provider?`} - /> - {/* */} - -
-
+
+ {locationError && ( +
+

{locationError}

+ setManualLocation(e.target.value)} + className="w-full max-w-4xl rounded-full h-10 bg-[#1e1f20] text-[#ccc] p-2 px-4 outline-none" + placeholder="Enter your full location " + /> +
+ )} + setUserMessage(e.target.value)} + onKeyPress={(e) => e.key === "Enter" && handleSendMessage()} + className="w-full max-w-4xl rounded-full h-16 bg-[#1e1f20] text-[#ccc] p-2 px-4 outline-none cursor-text text-md" + placeholder={`looking for local service provider?`} + /> + {/* */} + +
Date: Thu, 18 Jul 2024 05:14:50 -1200 Subject: [PATCH 23/60] v1 -solve google auth credential error --- .vscode/settings.json | 1 + app/api/gemini/route.ts | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 840c0a9..7c3e049 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,7 @@ "cSpell.words": [ "geocode", "Horizonal", + "Jsons", "Loca", "Superjson", "vertexai" diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 6fa8394..837a61d 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -7,26 +7,25 @@ import { } from "@google-cloud/vertexai"; // I import google cloud services credential from here -import C from "@/lib/c" // Function to initialize Vertex AI with JSON credentials function initializeVertexAI() { - // const credentialsJsons = C + const credentialsJson = process.env.GOOGLE_APPLICATION_CREDENTIALS_JSON - // const credentialsJson = JSON.stringify(credentialsJsons) - // if (!credentialsJson) { - // throw new Error( - // "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" - // ); - // } + if (!credentialsJson) { + throw new Error( + "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" + ); + } try { - // const credentials = JSON.parse(credentialsJson); + const credentials = JSON.parse(credentialsJson); return new VertexAI({ project: process.env.PROJECT_ID, location: "us-central1", - // googleAuthOptions: credentials, + googleAuthOptions: credentials, + // apiEndpoint: credentials }); } catch (error) { console.error("Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:", error); @@ -164,7 +163,7 @@ export async function POST(req: NextRequest) { { status: 200 } ); } catch (error: any) { - console.error("Server Error:", error.message); + console.error("Server Error:", JSON.stringify(error, null, 2), error); let errorMessage = `Something went wrong on the server ${error.message}`; let statusCode = 500; if (error.message.includes("Google Places API Error")) { From 7dd7795c5ff374ad3dc4d551df0c6807cb460476 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 05:31:57 -1200 Subject: [PATCH 24/60] v1 -solve google auth credential error --- app/api/gemini/route.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 837a61d..e1bd290 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -19,17 +19,21 @@ function initializeVertexAI() { ); } + console.log("Credentials JSON type:", typeof credentialsJson); + console.log("Credentials JSON first 100 characters:", credentialsJson.substring(0, 100)); + try { const credentials = JSON.parse(credentialsJson); + console.log("Parsed credentials project_id:", credentials.project_id); return new VertexAI({ project: process.env.PROJECT_ID, location: "us-central1", googleAuthOptions: credentials, // apiEndpoint: credentials }); - } catch (error) { + } catch (error: any) { console.error("Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:", error); - throw new Error("Invalid GOOGLE_APPLICATION_CREDENTIALS_JSON"); + throw new Error("Invalid GOOGLE_APPLICATION_CREDENTIALS_JSON", error.message + error); } } From 1cd9401521f8a6efa3fbb431015886034416c935 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 05:38:54 -1200 Subject: [PATCH 25/60] v1 -solve google auth credential error --- components/main.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/main.tsx b/components/main.tsx index 284be81..e6b0838 100644 --- a/components/main.tsx +++ b/components/main.tsx @@ -64,7 +64,7 @@ const Main: React.FC = () => { setLocationError(null); }, (error) => { - console.error("Error getting geolocation:", error); + console.error("Error getting geolocation:", error.message); setLocationError( `Unable to get your location. Please ensure location services are enabled.` ); @@ -122,6 +122,7 @@ const Main: React.FC = () => { const data = response.data; if (data.error) { + console.log(data.error) throw new Error(data.error); } @@ -160,7 +161,7 @@ const Main: React.FC = () => { setIsLoading(false); return; // Success, exit the retry loop } catch (error: any) { - console.error(`Error sending message (attempt ${attempt + 1}):`, error); + console.error(`Error sending message (attempt ${attempt + 1}):`, error.message); if (attempt === retryCount - 1) { // This was the last attempt @@ -168,7 +169,7 @@ const Main: React.FC = () => { "Sorry, an error occurred while processing your request."; if (axios.isAxiosError(error) && error.code === "ECONNABORTED") { errorMessage = - "The request is taking longer than expected. Please try again later."; + `The request is taking longer than expected. Please try again later., ${axios.isAxiosError(error), error.message}`; } setConversation([ ...newConversation, From 3831e6a18e4c211a077182f78883cef559bb0bd2 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 05:52:21 -1200 Subject: [PATCH 26/60] v1 -solve google auth credential error --- app/api/gemini/route.ts | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index e1bd290..e5c6aef 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -10,25 +10,30 @@ import { // Function to initialize Vertex AI with JSON credentials function initializeVertexAI() { - const credentialsJson = process.env.GOOGLE_APPLICATION_CREDENTIALS_JSON + // const credentialsJson = process.env.GOOGLE_APPLICATION_CREDENTIALS_JSON - if (!credentialsJson) { - throw new Error( - "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" - ); - } + // if (!credentialsJson) { + // throw new Error( + // "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" + // ); + // } - console.log("Credentials JSON type:", typeof credentialsJson); - console.log("Credentials JSON first 100 characters:", credentialsJson.substring(0, 100)); + // console.log("Credentials JSON type:", typeof credentialsJson); + // console.log("Credentials JSON first 100 characters:", credentialsJson.substring(0, 100)); + const credentials = { + project_id: process.env.PROJECT_ID, + client_email: process.env.GOOGLE_CLOUD_CLIENT_EMAIL, + private_key: process.env.GOOGLE_CLOUD_PRIVATE_KEY?.replace(/\\n/g, '\n'), + }; try { - const credentials = JSON.parse(credentialsJson); + console.log("Parsed credentials project_id:", credentials.project_id); return new VertexAI({ project: process.env.PROJECT_ID, location: "us-central1", - googleAuthOptions: credentials, + googleAuthOptions: JSON.parse(JSON.stringify(credentials)), // apiEndpoint: credentials }); } catch (error: any) { From d97e748518c0a57bd1858f054d1801583155ce34 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 06:06:01 -1200 Subject: [PATCH 27/60] v1 -solve google auth credential error --- app/api/debug/route.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 app/api/debug/route.ts diff --git a/app/api/debug/route.ts b/app/api/debug/route.ts new file mode 100644 index 0000000..4425872 --- /dev/null +++ b/app/api/debug/route.ts @@ -0,0 +1,11 @@ +// pages/api/debug.ts + +import { NextApiRequest, NextApiResponse } from 'next'; + +export default function handler(req: NextApiRequest, res: NextApiResponse) { + res.status(200).json({ + PROJECT_ID: process.env.PROJECT_ID, + GOOGLE_CLOUD_CLIENT_EMAIL: process.env.GOOGLE_CLOUD_CLIENT_EMAIL, + GOOGLE_CLOUD_PRIVATE_KEY: process.env.GOOGLE_CLOUD_PRIVATE_KEY?.substring(0, 10) + '...', + }); +} From f2382ee72883c5dbebeea670f32489b990e63c21 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 06:15:55 -1200 Subject: [PATCH 28/60] v1 -solve google auth credential error --- app/api/debug/route.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/api/debug/route.ts b/app/api/debug/route.ts index 4425872..a2bb3ad 100644 --- a/app/api/debug/route.ts +++ b/app/api/debug/route.ts @@ -1,11 +1,12 @@ // pages/api/debug.ts +import { NextRequest, NextResponse } from "next/server"; -import { NextApiRequest, NextApiResponse } from 'next'; - -export default function handler(req: NextApiRequest, res: NextApiResponse) { - res.status(200).json({ - PROJECT_ID: process.env.PROJECT_ID, - GOOGLE_CLOUD_CLIENT_EMAIL: process.env.GOOGLE_CLOUD_CLIENT_EMAIL, - GOOGLE_CLOUD_PRIVATE_KEY: process.env.GOOGLE_CLOUD_PRIVATE_KEY?.substring(0, 10) + '...', - }); +export async function POST(req: NextRequest, res: NextResponse) { + const test = { + PROJECT_ID: process.env.PROJECT_ID, + GOOGLE_CLOUD_CLIENT_EMAIL: process.env.GOOGLE_CLOUD_CLIENT_EMAIL, + GOOGLE_CLOUD_PRIVATE_KEY: process.env.GOOGLE_CLOUD_PRIVATE_KEY?.substring(0, 10) + '...', + } + return NextResponse.json({debug:test}, {status: 200}) + } From 2c4914a5026aadacecbc2a32ed4d420e5dc53d8d Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Thu, 18 Jul 2024 06:31:37 -1200 Subject: [PATCH 29/60] v1 -solve google auth credential error --- app/api/debug/route.ts | 4 ++-- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/api/debug/route.ts b/app/api/debug/route.ts index a2bb3ad..d5d0022 100644 --- a/app/api/debug/route.ts +++ b/app/api/debug/route.ts @@ -1,12 +1,12 @@ // pages/api/debug.ts import { NextRequest, NextResponse } from "next/server"; -export async function POST(req: NextRequest, res: NextResponse) { +export async function GET(req: NextRequest, res: NextResponse) { const test = { PROJECT_ID: process.env.PROJECT_ID, GOOGLE_CLOUD_CLIENT_EMAIL: process.env.GOOGLE_CLOUD_CLIENT_EMAIL, GOOGLE_CLOUD_PRIVATE_KEY: process.env.GOOGLE_CLOUD_PRIVATE_KEY?.substring(0, 10) + '...', } - return NextResponse.json({debug:test}, {status: 200}) + return NextResponse.json({HELLO: "HELLO WORLD", DEBUG: test}) } diff --git a/package-lock.json b/package-lock.json index 85911be..e92c661 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "dependencies": { "@ai-sdk/google": "^0.0.24", - "@google-cloud/vertexai": "^1.3.0", + "@google-cloud/vertexai": "^1.4.0", "@google/generative-ai": "^0.14.1", "@mantine/carousel": "^7.11.2", "@mantine/core": "^7.11.1", @@ -1403,9 +1403,9 @@ } }, "node_modules/@google-cloud/vertexai": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/vertexai/-/vertexai-1.3.0.tgz", - "integrity": "sha512-mMCcQxrZ8IS7tBR8LHDoIRHI0zsENsJN2k517uZmghBfgxvMNf1EDhpNU2umwpAHWtRoEqFjzeJExY3eKxu0XQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/vertexai/-/vertexai-1.4.0.tgz", + "integrity": "sha512-3D06+qlpbotQINBUbxC5c9zuv5nM5VLnaQZCcktfvSHnue3jsQ1sG1+/ZSkx8E9OidpVNAh5iCcAEZd8N7hPnQ==", "license": "Apache-2.0", "dependencies": { "google-auth-library": "^9.1.0" diff --git a/package.json b/package.json index c8e289b..9f6e4e8 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@ai-sdk/google": "^0.0.24", - "@google-cloud/vertexai": "^1.3.0", + "@google-cloud/vertexai": "^1.4.0", "@google/generative-ai": "^0.14.1", "@mantine/carousel": "^7.11.2", "@mantine/core": "^7.11.1", From dd06ab0610cb657af7142c52619ae731968d1029 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Fri, 19 Jul 2024 03:54:49 -1200 Subject: [PATCH 30/60] v1 -solve google auth credential error --- app/api/debug/route.ts | 5 +- app/api/gemini/route.ts | 200 +++++++++++++--------------------------- lib/gemini.ts | 4 +- 3 files changed, 69 insertions(+), 140 deletions(-) diff --git a/app/api/debug/route.ts b/app/api/debug/route.ts index d5d0022..e0294a1 100644 --- a/app/api/debug/route.ts +++ b/app/api/debug/route.ts @@ -3,9 +3,8 @@ import { NextRequest, NextResponse } from "next/server"; export async function GET(req: NextRequest, res: NextResponse) { const test = { - PROJECT_ID: process.env.PROJECT_ID, - GOOGLE_CLOUD_CLIENT_EMAIL: process.env.GOOGLE_CLOUD_CLIENT_EMAIL, - GOOGLE_CLOUD_PRIVATE_KEY: process.env.GOOGLE_CLOUD_PRIVATE_KEY?.substring(0, 10) + '...', + PROJECT_GOOGLE:JSON.parse( JSON.stringify(process.env.GOOGLE_APPLICATION_CREDENTIALS_JSON)), + } return NextResponse.json({HELLO: "HELLO WORLD", DEBUG: test}) diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index e5c6aef..8bd6ba7 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -1,103 +1,62 @@ import { NextRequest, NextResponse } from "next/server"; import axios from "axios"; -import { - VertexAI, - HarmCategory, - HarmBlockThreshold, -} from "@google-cloud/vertexai"; - -// I import google cloud services credential from here - -// Function to initialize Vertex AI with JSON credentials -function initializeVertexAI() { - // const credentialsJson = process.env.GOOGLE_APPLICATION_CREDENTIALS_JSON - - - // if (!credentialsJson) { - // throw new Error( - // "GOOGLE_APPLICATION_CREDENTIALS_JSON environment variable is not set" - // ); - // } - - // console.log("Credentials JSON type:", typeof credentialsJson); - // console.log("Credentials JSON first 100 characters:", credentialsJson.substring(0, 100)); - const credentials = { - project_id: process.env.PROJECT_ID, - client_email: process.env.GOOGLE_CLOUD_CLIENT_EMAIL, - private_key: process.env.GOOGLE_CLOUD_PRIVATE_KEY?.replace(/\\n/g, '\n'), - }; - - try { - - console.log("Parsed credentials project_id:", credentials.project_id); - return new VertexAI({ - project: process.env.PROJECT_ID, - location: "us-central1", - googleAuthOptions: JSON.parse(JSON.stringify(credentials)), - // apiEndpoint: credentials - }); - } catch (error: any) { - console.error("Error parsing GOOGLE_APPLICATION_CREDENTIALS_JSON:", error); - throw new Error("Invalid GOOGLE_APPLICATION_CREDENTIALS_JSON", error.message + error); - } -} - -// Function to get local services from Google Places API -async function getLocalServices( - query: string, - latitude: string, - longitude: string -) { - const apiKey = process.env.GOOGLE_PLACES_API_KEY; - - if (!apiKey) { - console.error("Google Places API key is not set"); - throw new Error("Google Places API key is not configured"); - } - - try { - const response = await axios.get( - "https://maps.googleapis.com/maps/api/place/nearbysearch/json", - { - params: { - location: `${latitude},${longitude}`, - radius: 5000, // Search within 5km radius - type: "business", // This can be adjusted based on the specific types you're interested in - keyword: query, - key: apiKey, - }, - timeout: 8000, // Reduced timeout for faster failure - } - ); - - if (response.data.status === "REQUEST_DENIED") { - console.error( - "Google Places API request denied:", - response.data.error_message - ); - throw new Error( - `Google Places API request denied: ${response.data.error_message}` - ); +import { GoogleGenerativeAI } from "@google/generative-ai"; + +// Initialize the Google Generative AI client +const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY || ""); + +// Function to get local services from Google Places API (unchanged) +async function getLocalServices(query: string, latitude: string, longitude: string) { + const apiKey = process.env.GOOGLE_PLACES_API_KEY; + + if (!apiKey) { + console.error("Google Places API key is not set"); + throw new Error("Google Places API key is not configured"); } - - return response.data.results.slice(0, 5).map((place: any) => ({ - name: place.name, - address: place.vicinity, - rating: place.rating, - user_ratings_total: place.user_ratings_total, - place_id: place.place_id, - })); - } catch (error) { - console.error("Google Places API Error:", error); - if (axios.isAxiosError(error) && error.response) { - throw new Error( - `Google Places API Error: ${error.response.status} - ${error.response.data.error_message}` + + try { + const response = await axios.get( + "https://maps.googleapis.com/maps/api/place/nearbysearch/json", + { + params: { + location: `${latitude},${longitude}`, + radius: 5000, // Search within 5km radius + type: "business", // This can be adjusted based on the specific types you're interested in + keyword: query, + key: apiKey, + }, + timeout: 8000, // Reduced timeout for faster failure + } ); - } else { - throw new Error("Failed to fetch local services"); + + if (response.data.status === "REQUEST_DENIED") { + console.error( + "Google Places API request denied:", + response.data.error_message + ); + throw new Error( + `Google Places API request denied: ${response.data.error_message}` + ); + } + + return response.data.results.slice(0, 5).map((place: any) => ({ + name: place.name, + address: place.vicinity, + rating: place.rating, + user_ratings_total: place.user_ratings_total, + place_id: place.place_id, + })); + } catch (error) { + console.error("Google Places API Error:", error); + if (axios.isAxiosError(error) && error.response) { + throw new Error( + `Google Places API Error: ${error.response.status} - ${error.response.data.error_message}` + ); + } else { + throw new Error("Failed to fetch local services"); + } } } -} export async function POST(req: NextRequest) { const { userMessage, latitude, longitude } = await req.json(); @@ -110,34 +69,6 @@ export async function POST(req: NextRequest) { } try { - const vertexAI = initializeVertexAI(); - const model = vertexAI.getGenerativeModel({ model: "gemini-1.5-pro-001" }); - const chat = model.startChat({ - generationConfig: { - maxOutputTokens: 1024, - temperature: 0.7, - topP: 1, - }, - safetySettings: [ - { - category: HarmCategory.HARM_CATEGORY_HATE_SPEECH, - threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, - }, - { - category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, - threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, - }, - { - category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, - threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, - }, - { - category: HarmCategory.HARM_CATEGORY_HARASSMENT, - threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, - }, - ], - }); - console.log("Fetching local services"); let services; try { @@ -148,8 +79,10 @@ export async function POST(req: NextRequest) { services = []; } - console.log("Sending message to Vertex AI"); - const contextMessage = `You are to act as a loca an AI local service finder build by devben. User is looking for local services: "${userMessage}". ${ + console.log("Sending message to Gemini"); + const model = genAI.getGenerativeModel({ model: "gemini-pro" }); + + const contextMessage = `You are to act as a local AI service finder built by devben. User is looking for local services: "${userMessage}". ${ services.length > 0 ? `Here are some available services: ${JSON.stringify( services @@ -157,12 +90,10 @@ export async function POST(req: NextRequest) { : `Unfortunately, we couldn't find any local services matching the query. Please provide a general response about ${userMessage} and suggest how the user might find local services.` }`; - const result = await chat.sendMessage(contextMessage); - console.log("Received response from Vertex AI"); - - const vertexResponseText = - result.response?.candidates?.[0]?.content?.parts?.[0]?.text || - "No response from Vertex AI"; + const result = await model.generateContent(contextMessage); + const response = await result.response; + const vertexResponseText = response.text(); + console.log("Received response from Gemini"); return NextResponse.json( { @@ -178,13 +109,10 @@ export async function POST(req: NextRequest) { if (error.message.includes("Google Places API Error")) { errorMessage = `Error fetching local services. Please try again later. ${error.message}`; statusCode = 503; // Service Unavailable - } else if ( - error.message.includes("Vertex AI") || - error.message.includes("GOOGLE_APPLICATION_CREDENTIALS_JSON") - ) { - errorMessage = `Error communicating with AI service. Please check the configuration and try again later.${error.message}`; + } else if (error.message.includes("Gemini API")) { + errorMessage = `Error communicating with AI service. Please check the configuration and try again later. ${error.message}`; statusCode = 503; } return NextResponse.json({ error: errorMessage }, { status: statusCode }); } -} +} \ No newline at end of file diff --git a/lib/gemini.ts b/lib/gemini.ts index 545e7e3..9776b13 100644 --- a/lib/gemini.ts +++ b/lib/gemini.ts @@ -134,4 +134,6 @@ export async function POST(req: NextRequest) { } return NextResponse.json({ error: errorMessage }, { status: statusCode }); } -} \ No newline at end of file +} + + From 803a6999428427fa99bb28c80716c29c824c7154 Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Fri, 19 Jul 2024 22:19:07 -1200 Subject: [PATCH 31/60] v1 added systemInstruction --- .vscode/settings.json | 1 + app/api/gemini/route.ts | 7 +- components/main.tsx | 106 +++- package-lock.json | 1201 ++++++++++++++++++++++++++++++++++++++- package.json | 1 + 5 files changed, 1269 insertions(+), 47 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 7c3e049..b4fba1a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "cSpell.words": [ + "firstvisitpopup", "geocode", "Horizonal", "Jsons", diff --git a/app/api/gemini/route.ts b/app/api/gemini/route.ts index 8bd6ba7..a51b88d 100644 --- a/app/api/gemini/route.ts +++ b/app/api/gemini/route.ts @@ -4,7 +4,7 @@ import { GoogleGenerativeAI } from "@google/generative-ai"; // Initialize the Google Generative AI client const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY || ""); - +const locaResponseAuto = "Role Definition:\n\nLoca is a virtual assistant that helps users find local services quickly and efficiently.\nIt interacts with users through natural language queries and provides relevant service suggestions.\nLoca should be polite, helpful, and provide actionable responses.\nExpected Behavior:\n\nUnderstand user queries about finding local services.\nExtract relevant details such as service type and location from the queries.\nRespond with appropriate local service recommendations fetched using the Google Places API.\nHandle both specific and general queries gracefully.\nTraining Prompts\nUser Query Examples and Expected Responses:\n\nQuery:\n\nUser: \"Hey Loca, any plumbers near me in Texas?\"\nLoca Response: \"Sure! I found a great plumber nearby in Texas. Here are the details: [Service Listing with booking link]\"\nQuery:\n\nUser: \"Can you find an electrician in New York?\"\nLoca Response: \"Absolutely! Here are some electricians near you in New York: [Service Listing with booking link]\"\nQuery:\n\nUser: \"I need a good mechanic in Los Angeles.\"\nLoca Response: \"I found some highly-rated mechanics in Los Angeles. Check them out: [Service Listing with booking link]\"\nQuery:\n\nUser: \"Are there any good restaurants around here?\"\nLoca Response: \"Yes! There are several great restaurants nearby. Here are some options: [Service Listing with booking link]\"\nQuery:\n\nUser: \"Find a nearby dentist.\"\nLoca Response: \"Sure! Here are some dentists near your location: [Service Listing with booking link]\"\nEntities to Extract\nService Type: Plumber, electrician, mechanic, restaurant, dentist, etc.\nLocation: Texas, New York, Los Angeles, etc.\nAdditional Details: Any additional context provided by the user.\nSample API Response Integration\njavascript\nCopy code\nconst exampleServiceListing = {\n name: \"John's Plumbing\",\n address: \"123 Main St, Dallas, TX\",\n rating: 4.8,\n link: \"http://booking-link.com\"\n};\n\nconst locaResponse = `I found a great plumber nearby in Texas. Here are the details: \ndevloper Note: I already display the loca service along with your response so you don't need to relist\nResponse Format\nService Details: Name, address, rating, and a booking link.\nUser-friendly text: Use conversational language to present the information.\nCTA (Call to Action): Include a \"Book Now\" or equivalent action link.\nError Handling\nQuery Not Understood:\n\nResponse: \"I'm sorry, I didn't understand your request. Can you please specify the type of service and location?\"\nNo Services Found:\n\nResponse: \"I couldn't find any [service type] near [location]. Can you try a different location or service?\"\n" // Function to get local services from Google Places API (unchanged) async function getLocalServices(query: string, latitude: string, longitude: string) { const apiKey = process.env.GOOGLE_PLACES_API_KEY; @@ -80,7 +80,10 @@ export async function POST(req: NextRequest) { } console.log("Sending message to Gemini"); - const model = genAI.getGenerativeModel({ model: "gemini-pro" }); + const model = genAI.getGenerativeModel({ + model: "gemini-1.5-pro", + systemInstruction: "Role Definition:\n\nLoca is a virtual assistant that helps users find local services quickly and efficiently.\nIt interacts with users through natural language queries and provides relevant service suggestions.\nLoca should be polite, helpful, and provide actionable responses.\nExpected Behavior:\n\nUnderstand user queries about finding local services.\nExtract relevant details such as service type and location from the queries.\nRespond with appropriate local service recommendations fetched using the Google Places API.\nHandle both specific and general queries gracefully.\nTraining Prompts\nUser Query Examples and Expected Responses:\n\nQuery:\n\nUser: \"Hey Loca, any plumbers near me in Texas?\"\nLoca Response: \"Sure! I found a great plumber nearby in Texas. Here are the details: [Service Listing with booking link]\"\nQuery:\n\nUser: \"Can you find an electrician in New York?\"\nLoca Response: \"Absolutely! Here are some electricians near you in New York: [Service Listing with booking link]\"\nQuery:\n\nUser: \"I need a good mechanic in Los Angeles.\"\nLoca Response: \"I found some highly-rated mechanics in Los Angeles. Check them out: [Service Listing with booking link]\"\nQuery:\n\nUser: \"Are there any good restaurants around here?\"\nLoca Response: \"Yes! There are several great restaurants nearby. Here are some options: [Service Listing with booking link]\"\nQuery:\n\nUser: \"Find a nearby dentist.\"\nLoca Response: \"Sure! Here are some dentists near your location: [Service Listing with booking link]\"\nEntities to Extract\nService Type: Plumber, electrician, mechanic, restaurant, dentist, etc.\nLocation: Texas, New York, Los Angeles, etc.\nAdditional Details: Any additional context provided by the user.\nSample API Response Integration\njavascript\nCopy code\nconst exampleServiceListing = {\n name: \"John's Plumbing\",\n address: \"123 Main St, Dallas, TX\",\n rating: 4.8,\n link: \"http://booking-link.com\"\n};\n\nconst locaResponse = `I found a great plumber nearby in Texas. Here are the details: \ndevloper Note: I already display the loca service along with your response so you don't need to relist\nResponse Format\nService Details: Name, address, rating, and a booking link.\nUser-friendly text: Use conversational language to present the information.\nCTA (Call to Action): Include a \"Book Now\" or equivalent action link.\nError Handling\nQuery Not Understood:\n\nResponse: \"I'm sorry, I didn't understand your request. Can you please specify the type of service and location?\"\nNo Services Found:\n\nResponse: \"I couldn't find any [service type] near [location]. Can you try a different location or service?\"\n", + }); const contextMessage = `You are to act as a local AI service finder built by devben. User is looking for local services: "${userMessage}". ${ services.length > 0 diff --git a/components/main.tsx b/components/main.tsx index e6b0838..d809da4 100644 --- a/components/main.tsx +++ b/components/main.tsx @@ -9,10 +9,11 @@ import Logo from "@/public/png/logo-no-background.png"; import { CardComponent } from "./home"; import { SendHorizontalIcon, LogOut, PlusIcon } from "lucide-react"; import { onAuthStateChanged } from "firebase/auth"; -import axios from "axios"; +import axios, { AxiosResponse } from "axios"; import Link from "next/link"; import { SkeletonCard } from "./loading"; import FirstVisitPopup from "./firstvisitpopup"; +import ReactMarkdown from "react-markdown"; interface Location { latitude: number | null; @@ -51,19 +52,21 @@ const Main: React.FC = () => { const [isLoading, setIsLoading] = useState(false); const [locationError, setLocationError] = useState(null); const [manualLocation, setManualLocation] = useState(""); + const [isProcessing, setIsProcessing] = useState(false); useEffect(() => { + // Getting location automatically const getLocation = () => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( - (position) => { + (position: GeolocationPosition) => { setLocation({ - latitude: position.coords.latitude, - longitude: position.coords.longitude, + latitude: position.coords.latitude || null, + longitude: position.coords.longitude || null, }); setLocationError(null); }, - (error) => { + (error: GeolocationPositionError) => { console.error("Error getting geolocation:", error.message); setLocationError( `Unable to get your location. Please ensure location services are enabled.` @@ -72,7 +75,7 @@ const Main: React.FC = () => { { timeout: 10000, maximumAge: 60000, enableHighAccuracy: true } ); } else { - setLocationError("Geolocation is not supported by this browser."); + setLocationError("Geolocation is not supported by this browser. Please enter your location manually"); } }; @@ -85,12 +88,51 @@ const Main: React.FC = () => { return () => unsubscribe(); }, []); + // handler for manual location if error occur on automatic location + const handleManualLocationSubmit = async () => { + if(!manualLocation.trim()){ + setLocationError("please enter a location."); + return false + } + + setIsProcessing(true) + try { + const res: AxiosResponse = await axios.get( + `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent( + manualLocation + )}&key=${process.env.GOOGLE_PLACES_API_KEY}` + ); + + if (res.data.results && res.data.results.length > 0) { + const { lat, lag } = res.data.result[0].geometry.location; + setLocation({ latitude: lat, longitude: lag }); + setLocationError(null); + return true; + } else { + setLocationError("Unable to find the location. Please try a more specific address."); + return false; + } + } catch (error) { + console.error("Error geocoding manual location:", error); + setLocationError("Error processing location. Please try again or use a different address"); + return false; + } finally{ + setIsProcessing(false) + } + }; + + // if(locationError){ + // alert(locationError) + // } + // handler for sending message to the sever const handleSendMessage = async () => { - if (!userMessage.trim()) return; + if (!userMessage.trim() || isProcessing) return; + setIsProcessing(true) if (!location.latitude || !location.longitude) { - alert( - "Location is not available. Please enable location services and try again." - ); + const locationSubmitted = await handleManualLocationSubmit(); + if(!locationSubmitted){ + return + } return; } @@ -101,10 +143,11 @@ const Main: React.FC = () => { setConversation(newConversation); setUserMessage(""); setIsLoading(true); + setIsProcessing(true); + // If any error occur on server retry at least 3X const retryCount = 3; - const baseTimeout = 40000; // 20 seconds - + const baseTimeout = 20000; for (let attempt = 0; attempt < retryCount; attempt++) { try { const response = await axios.post( @@ -122,14 +165,18 @@ const Main: React.FC = () => { const data = response.data; if (data.error) { - console.log(data.error) + console.log(data.error); throw new Error(data.error); } + let formattedResponse = ( + {data.vertexResponse} + ); + // Combine AI response and service information let aiResponse: React.ReactNode = (
-

{data.vertexResponse}

+ {formattedResponse} {data.services && data.services.length > 0 && (
@@ -161,15 +208,19 @@ const Main: React.FC = () => { setIsLoading(false); return; // Success, exit the retry loop } catch (error: any) { - console.error(`Error sending message (attempt ${attempt + 1}):`, error.message); + console.error( + `Error sending message (attempt ${attempt + 1}):`, + error.message + ); if (attempt === retryCount - 1) { // This was the last attempt let errorMessage = "Sorry, an error occurred while processing your request."; if (axios.isAxiosError(error) && error.code === "ECONNABORTED") { - errorMessage = - `The request is taking longer than expected. Please try again later., ${axios.isAxiosError(error), error.message}`; + errorMessage = `The request is taking longer than expected. Please try again later., ${ + (axios.isAxiosError(error), error.message) + }`; } setConversation([ ...newConversation, @@ -180,6 +231,9 @@ const Main: React.FC = () => { // Wait before the next retry await new Promise((resolve) => setTimeout(resolve, 2000)); } + } finally { + setIsLoading(false); + setIsProcessing(false); } } }; @@ -188,7 +242,7 @@ const Main: React.FC = () => { return (
- + {/* navbar */}
)} setUserMessage(e.target.value)} - onKeyPress={(e) => e.key === "Enter" && handleSendMessage()} + onKeyPress={(e) => + e.key === "Enter" && !isProcessing && handleSendMessage() + } className="w-full max-w-4xl rounded-full h-16 bg-[#1e1f20] text-[#ccc] p-2 px-4 outline-none cursor-text text-md" - placeholder={`looking for local service provider?`} + placeholder={`Looking for local service provider?${ + isProcessing ? "processing...." : "" + }`} + disabled={isProcessing} /> {/* */} !isProcessing && handleSendMessage} />
diff --git a/package-lock.json b/package-lock.json index e92c661..28f1d1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,6 +46,7 @@ "react": "^18", "react-dom": "^18", "react-hot-toast": "^2.4.1", + "react-markdown": "^9.0.1", "sharp": "^0.33.4", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", @@ -2957,6 +2958,15 @@ "version": "0.6.0", "license": "MIT" }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/diff-match-patch": { "version": "1.0.36", "license": "MIT" @@ -2981,8 +2991,16 @@ }, "node_modules/@types/estree": { "version": "1.0.5", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", "license": "MIT", - "peer": true + "dependencies": { + "@types/estree": "*" + } }, "node_modules/@types/express": { "version": "4.17.21", @@ -3004,6 +3022,15 @@ "@types/send": "*" } }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/http-errors": { "version": "2.0.4", "license": "MIT" @@ -3033,10 +3060,25 @@ "devOptional": true, "license": "MIT" }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.5", "license": "MIT" }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "20.14.9", "license": "MIT", @@ -3051,7 +3093,6 @@ }, "node_modules/@types/prop-types": { "version": "15.7.12", - "devOptional": true, "license": "MIT" }, "node_modules/@types/qs": { @@ -3064,7 +3105,6 @@ }, "node_modules/@types/react": { "version": "18.3.3", - "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -3132,6 +3172,12 @@ "dev": true, "license": "MIT" }, + "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==", + "license": "MIT" + }, "node_modules/@typescript-eslint/parser": { "version": "7.2.0", "dev": true, @@ -3265,7 +3311,6 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "dev": true, "license": "ISC" }, "node_modules/@vue/compiler-core": { @@ -4319,6 +4364,16 @@ "superjson": "1.x" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "license": "MIT" @@ -4899,6 +4954,16 @@ "cdl": "bin/cdl.js" } }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "4.1.2", "dev": true, @@ -4914,6 +4979,46 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -5304,6 +5409,16 @@ "node": ">= 0.8" } }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "4.1.1", "license": "MIT", @@ -5935,6 +6050,19 @@ } } }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/deep-equal": { "version": "2.2.3", "dev": true, @@ -6090,7 +6218,6 @@ "node_modules/dequal": { "version": "2.0.3", "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -6127,6 +6254,19 @@ "version": "1.1.0", "license": "MIT" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "license": "Apache-2.0" @@ -7051,6 +7191,16 @@ "node": ">=4.0" } }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "license": "MIT", @@ -8653,6 +8803,46 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/heap-js": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.5.0.tgz", @@ -8728,6 +8918,16 @@ "node": ">=14" } }, + "node_modules/html-url-attributes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz", + "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/htmlparser2": { "version": "8.0.2", "dev": true, @@ -8935,6 +9135,12 @@ "node": ">=10" } }, + "node_modules/inline-style-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==", + "license": "MIT" + }, "node_modules/inquirer": { "version": "8.2.6", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", @@ -9168,6 +9374,30 @@ "node": ">= 0.10" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "license": "MIT", @@ -9317,6 +9547,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "license": "MIT", @@ -9365,6 +9605,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -9489,6 +9739,18 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-reference": { "version": "3.0.2", "license": "MIT", @@ -10385,6 +10647,16 @@ "version": "5.2.3", "license": "Apache-2.0" }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "license": "MIT", @@ -10554,6 +10826,159 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "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==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdn-data": { "version": "2.0.30", "license": "CC0-1.0", @@ -10598,28 +11023,470 @@ "node": ">= 0.6" } }, - "node_modules/micromatch": { - "version": "4.0.7", + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.7", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.12.0", "license": "MIT" @@ -11753,6 +12620,32 @@ "node": ">= 0.10" } }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "license": "MIT" + }, "node_modules/parse-json": { "version": "8.1.0", "dev": true, @@ -12495,6 +13388,16 @@ "react-is": "^16.13.1" } }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -12834,6 +13737,32 @@ "version": "16.13.1", "license": "MIT" }, + "node_modules/react-markdown": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", + "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, "node_modules/react-number-format": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.0.tgz", @@ -13123,6 +14052,39 @@ "node": ">=8" } }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/require-directory": { "version": "2.1.1", "license": "MIT", @@ -13805,6 +14767,16 @@ "source-map": "^0.6.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "dev": true, @@ -14150,6 +15122,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "license": "MIT", @@ -14200,6 +15186,15 @@ "devOptional": true, "license": "MIT" }, + "node_modules/style-to-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.3" + } + }, "node_modules/styled-jsx": { "version": "5.1.1", "license": "MIT", @@ -14844,6 +15839,16 @@ "version": "0.0.3", "license": "MIT" }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/triple-beam": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", @@ -14854,6 +15859,16 @@ "node": ">= 14.0.0" } }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { "version": "1.3.0", "dev": true, @@ -15073,6 +16088,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unified": { + "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", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -15114,6 +16148,88 @@ "node": ">=8" } }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universal-analytics": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.5.3.tgz", @@ -15408,6 +16524,35 @@ "node": ">= 0.8" } }, + "node_modules/vfile": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", + "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vue": { "version": "3.4.31", "license": "MIT", @@ -16012,6 +17157,16 @@ "peerDependencies": { "zod": "^3.22.4" } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 9f6e4e8..c428636 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "react": "^18", "react-dom": "^18", "react-hot-toast": "^2.4.1", + "react-markdown": "^9.0.1", "sharp": "^0.33.4", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", From 41954e18369cb25e63e41345c89268286a8127ea Mon Sep 17 00:00:00 2001 From: git-create-devben Date: Sat, 20 Jul 2024 03:29:32 -1200 Subject: [PATCH 32/60] v1 added responsible --- components/main.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/main.tsx b/components/main.tsx index d809da4..8664957 100644 --- a/components/main.tsx +++ b/components/main.tsx @@ -271,7 +271,7 @@ const Main: React.FC = () => { ) : ( conversation.map((message, index) => ( -
+
{message.sender Date: Sun, 21 Jul 2024 06:15:42 -1200 Subject: [PATCH 33/60] v1 added responsible --- app/chat/page.tsx | 58 ++++++++++--- app/faq/page.tsx | 18 ++++ components/main.tsx | 183 +++++++++++++++++++++------------------- components/sidebar.tsx | 2 +- components/viewmore.tsx | 32 +++++++ package-lock.json | 2 + types/types.ts | 25 ++++++ 7 files changed, 218 insertions(+), 102 deletions(-) create mode 100644 app/faq/page.tsx create mode 100644 components/viewmore.tsx create mode 100644 types/types.ts diff --git a/app/chat/page.tsx b/app/chat/page.tsx index 37bf295..2384570 100644 --- a/app/chat/page.tsx +++ b/app/chat/page.tsx @@ -1,17 +1,49 @@ -"use client" +"use client"; import Main from "@/components/main"; import Sidebar from "@/components/sidebar"; - +import { onAuthStateChanged } from "firebase/auth"; +import { useEffect, useState } from "react"; +import { auth } from "@/lib/firebase"; +import local from "@/public/png/logo-black.png"; +import Image from "next/image"; +import FirstVisitPopup from "@/components/firstvisitpopup"; export default function Chat() { - return ( -
-
- -
-
-
-
+ const [user, setUser] = useState(auth.currentUser); + const image = user?.photoURL || local; + + useEffect(() => { + const unsubscribe = onAuthStateChanged(auth, (currentUser) => { + setUser(currentUser); + }); -
- ); -} \ No newline at end of file + return () => unsubscribe(); + }); + return ( +
+ +
+ +
+
+
+ +
+
+
+ +
+ + +
+
+ ); +} diff --git a/app/faq/page.tsx b/app/faq/page.tsx new file mode 100644 index 0000000..9b38d26 --- /dev/null +++ b/app/faq/page.tsx @@ -0,0 +1,18 @@ +import React, { useState } from 'react' + +const FAQ = () => { + const [open, setOpen] = useState(false) + return ( +
+
+

LOCA AI FAQ

+
+

What&s LOCA?

+ +
+
+
+ ) +} + +export default FAQ \ No newline at end of file diff --git a/components/main.tsx b/components/main.tsx index 8664957..c78076a 100644 --- a/components/main.tsx +++ b/components/main.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { ChangeEvent, useRef } from "react"; import { auth } from "@/lib/firebase"; import { SignOut } from "@/lib/signIn"; import Image from "next/image"; @@ -14,33 +14,13 @@ import Link from "next/link"; import { SkeletonCard } from "./loading"; import FirstVisitPopup from "./firstvisitpopup"; import ReactMarkdown from "react-markdown"; +import { cn } from "@/lib/utils"; -interface Location { +type Location = { latitude: number | null; longitude: number | null; } -interface ServiceItem { - name: string; - address: string; - rating: number; - user_ratings_total: number; - place_id: string; -} - -interface LocalServiceCardProps { - name: string; - address: string; - rating: number; - user_ratings_total: number; - place_id: string; -} - -type ConversationItem = { - sender: string; - text: React.ReactNode; -}; - const Main: React.FC = () => { const [user, setUser] = useState(auth.currentUser); const [userMessage, setUserMessage] = useState(""); @@ -53,6 +33,14 @@ const Main: React.FC = () => { const [locationError, setLocationError] = useState(null); const [manualLocation, setManualLocation] = useState(""); const [isProcessing, setIsProcessing] = useState(false); + const conversationEndRef = useRef(null); + + const scrollToBottom = () => { + conversationEndRef.current?.scrollIntoView({ behavior: "smooth" }); + }; + useEffect(() => { + scrollToBottom(); + }, [conversation]); useEffect(() => { // Getting location automatically @@ -75,7 +63,9 @@ const Main: React.FC = () => { { timeout: 10000, maximumAge: 60000, enableHighAccuracy: true } ); } else { - setLocationError("Geolocation is not supported by this browser. Please enter your location manually"); + setLocationError( + "Geolocation is not supported by this browser. Please enter your location manually" + ); } }; @@ -90,12 +80,12 @@ const Main: React.FC = () => { // handler for manual location if error occur on automatic location const handleManualLocationSubmit = async () => { - if(!manualLocation.trim()){ + if (!manualLocation.trim()) { setLocationError("please enter a location."); - return false + return false; } - setIsProcessing(true) + setIsProcessing(true); try { const res: AxiosResponse = await axios.get( `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent( @@ -109,15 +99,19 @@ const Main: React.FC = () => { setLocationError(null); return true; } else { - setLocationError("Unable to find the location. Please try a more specific address."); + setLocationError( + "Unable to find the location. Please try a more specific address." + ); return false; } } catch (error) { console.error("Error geocoding manual location:", error); - setLocationError("Error processing location. Please try again or use a different address"); + setLocationError( + "Error processing location. Please try again or use a different address" + ); return false; - } finally{ - setIsProcessing(false) + } finally { + setIsProcessing(false); } }; @@ -127,16 +121,16 @@ const Main: React.FC = () => { // handler for sending message to the sever const handleSendMessage = async () => { if (!userMessage.trim() || isProcessing) return; - setIsProcessing(true) + setIsProcessing(true); if (!location.latitude || !location.longitude) { const locationSubmitted = await handleManualLocationSubmit(); - if(!locationSubmitted){ - return + if (!locationSubmitted) { + return; } return; } - const newConversation = [ + const newConversation: ConversationItem[] = [ ...conversation, { sender: "user", text: userMessage }, ]; @@ -163,7 +157,7 @@ const Main: React.FC = () => { } ); - const data = response.data; + const data = response.data; if (data.error) { console.log(data.error); throw new Error(data.error); @@ -180,20 +174,23 @@ const Main: React.FC = () => { {data.services && data.services.length > 0 && (
- Here are some local service providers that might help: + Check this out or View More
- {data.services.map((service: ServiceItem, index: number) => ( -
- + {data.services && ( +
+ {data.services.slice(0, 2).map((service:ServiceItem ) => ( + + ))}
- ))} + )}
)}
@@ -239,24 +236,24 @@ const Main: React.FC = () => { }; const image = user?.photoURL || local; + const textareaRef = useRef(null); + + useEffect(() => { + if (textareaRef.current) { + textareaRef.current.style.height = "auto"; + textareaRef.current.style.height = + textareaRef.current.scrollHeight + "px"; + } + }, [userMessage]); + const handleInput = (e: ChangeEvent) => { + setUserMessage(e.target.value); + }; return ( -
- - {/* navbar */} - +
{/* center */} -
-
+
+
{conversation.length === 0 ? ( <>
@@ -271,59 +268,69 @@ const Main: React.FC = () => { ) : ( conversation.map((message, index) => ( -
+
{message.sender -

!!e}> +

!!e}> {message.text}

+
)) )} + {isLoading && }
{/* footer */} -
- {locationError && ( -
-

{locationError}

- setManualLocation(e.target.value)} - className="w-full max-w-4xl rounded-full h-10 bg-[#1e1f20] text-[#ccc] p-2 px-4 outline-none" - placeholder="Enter your full location " - /> - -
- )} - +
+ {locationError && ( +
+

{locationError}

+ setManualLocation(e.target.value)} + className="w-full max-w-4xl rounded-full h-10 bg-[#1e1f20] text-[#ccc] p-2 px-4 outline-none" + placeholder="Enter your full location " + /> +
+ )} +
+