diff --git a/.gitpod.yml b/.gitpod.yml index 4061052d..5191f9ad 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -9,9 +9,9 @@ tasks: cd ../dashboard && cp .env.example .env && cd ../.. && - pnpm supabase start + pnpm supabase:start command: | - SUPABASE_ANON_KEY=$(pnpm supabase status | grep "anon key" | awk '{print $3}' | tr -d '\\n') && + SUPABASE_ANON_KEY=$(pnpm supabase:status | grep "anon key" | awk '{print $3}' | tr -d '\\n') && cd apps/dashboard && sed -i "s/PUBLIC_SUPABASE_ANON_KEY=.*/PUBLIC_SUPABASE_ANON_KEY=$SUPABASE_ANON_KEY/g" .env && cd ../.. && diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 1d3594ec..00000000 --- a/Dockerfile +++ /dev/null @@ -1,97 +0,0 @@ -# Build stage -FROM node:18-alpine AS builder - -# Install pnpm -RUN npm install -g pnpm@9.15.4 && \ - pnpm config set use-git-checks false && \ - pnpm config set git-checks false && \ - apk add --no-cache git - -# Set working directory -WORKDIR /app - -# Copy root package files -COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ - -# Copy workspace package files -COPY apps/dashboard/package.json ./apps/dashboard/ -COPY packages/shared/package.json ./packages/shared/ -COPY packages/tsconfig/package.json ./packages/tsconfig/ - -# Set environment variables for build -ENV IS_SELFHOSTED=true -ENV DEPLOYMENT_PROVIDER=docker -ENV NODE_OPTIONS="--max-old-space-size=40960" -ENV VITE_DISABLE_GIT=true -ENV SENTRY_DISABLE_GIT=true -ENV GIT_TERMINAL_PROMPT=0 -ENV GIT_ASKPASS=/bin/true -ENV VITE_DEBUG=true - -# Install all dependencies (including dev dependencies) -RUN pnpm install --frozen-lockfile - -# Copy source code -COPY . . - -RUN echo "Root node_modules contents:" && \ - ls -la ./node_modules && \ - echo "\nDashboard node_modules contents:" && \ - ls -la ./apps/dashboard/node_modules - -# Set production environment for build -ENV NODE_ENV=production -ENV DEPLOYMENT_PROVIDER=docker -ENV IS_SELFHOSTED=true - -RUN git init && \ - git config --global user.email "noreply@getcrom.com" && \ - git config --global user.name "Crom CI" && \ - git add . && \ - git commit -m "Initial commit for build" - -# Build the application with increased timeout -RUN pnpm build --filter=dashboard -- --timeout 600000 - -# Production stage -FROM node:18-alpine AS runner - -# Install pnpm -RUN npm install -g pnpm@9.15.4 - -# Set working directory -WORKDIR /app - -# Copy only necessary files from builder -COPY --from=builder /app/package.json /app/pnpm-lock.yaml ./ -COPY --from=builder /app/apps/dashboard/build ./apps/dashboard/build -COPY --from=builder /app/apps/dashboard/package.json ./apps/dashboard/ -COPY --from=builder /app/packages/shared ./packages/shared -COPY --from=builder /app/packages/tsconfig ./packages/tsconfig - -# Install production dependencies only -RUN pnpm i --prod --filter=dashboard - -# Set environment variables -ENV NODE_ENV=production -ENV IS_SELFHOSTED=true -ENV DEPLOYMENT_PROVIDER=docker -ENV PUBLIC_SUPABASE_URL=$PUBLIC_SUPABASE_URL -ENV PUBLIC_SUPABASE_ANON_KEY=$PUBLIC_SUPABASE_ANON_KEY -ENV PRIVATE_SUPABASE_SERVICE_ROLE=$PRIVATE_SUPABASE_SERVICE_ROLE -ENV PRIVATE_APP_HOST=$PRIVATE_APP_HOST -ENV PRIVATE_APP_SUBDOMAINS=$PRIVATE_APP_SUBDOMAINS -ENV UNSPLASH_API_KEY=$UNSPLASH_API_KEY -ENV OPENAI_API_KEY=$OPENAI_API_KEY -ENV PUBLIC_SERVER_URL=$PUBLIC_SERVER_URL -ENV PUBLIC_IP_REGISTRY_KEY=$PUBLIC_IP_REGISTRY_KEY -ENV NODE_OPTIONS="--max-old-space-size=40960" - -# Expose port -EXPOSE 5000 - -# Set working directory for the application -WORKDIR /app/apps/dashboard - -# Start the application -CMD ["node", "build"] \ No newline at end of file diff --git a/README.md b/README.md index 76792126..28aa2485 100644 --- a/README.md +++ b/README.md @@ -136,7 +136,7 @@ To get the environmental variables for supabase continue to step(5) - Go to the project directory in your terminal and start Supabase ```bash - pnpm supabase start + pnpm supabase:start ``` - You should get a result like this @@ -154,7 +154,7 @@ To get the environmental variables for supabase continue to step(5) service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU ``` - - Add Supabase environment variables into `app/dashboard` folder, which should be taken from the result of `pnpm supabase start` + - Add Supabase environment variables into `app/dashboard` folder, which should be taken from the result of `pnpm supabase:start` ```env PUBLIC_SUPABASE_URL= @@ -162,7 +162,7 @@ To get the environmental variables for supabase continue to step(5) PRIVATE_SUPABASE_SERVICE_ROLE= ``` - - To view the Supabase studio, open the Studio URL from the result of `pnpm supabase start` + - To view the Supabase studio, open the Studio URL from the result of `pnpm supabase:start` 7. Run all projects (in development mode) diff --git a/apps/backend/Dockerfile.prod b/apps/backend/Dockerfile similarity index 64% rename from apps/backend/Dockerfile.prod rename to apps/backend/Dockerfile index dda55238..47f1b769 100644 --- a/apps/backend/Dockerfile.prod +++ b/apps/backend/Dockerfile @@ -1,5 +1,18 @@ FROM node:slim AS app +# Add build arguments +ARG PUBLIC_SUPABASE_ANON_KEY +ARG PUBLIC_SUPABASE_URL +ARG CLOUDFLARE_BUCKET_DOMAIN +ARG CLOUDFLARE_ACCESS_KEY +ARG CLOUDFLARE_SECRET_ACCESS_KEY +ARG CLOUDFLARE_ACCOUNT_ID +ARG CLOUDFLARE_BUCKET_ID +ARG SMTP_HOST +ARG SMTP_USER +ARG SMTP_PASSWORD +ARG SMTP_PORT + RUN mkdir /app WORKDIR /app @@ -32,7 +45,20 @@ COPY ./package.json /app RUN npm install --frozen-lockfile COPY . /app -ENV PORT 3002 +# Set environment variables from build args +ENV NODE_ENV=production \ + PUBLIC_SUPABASE_ANON_KEY=$PUBLIC_SUPABASE_ANON_KEY \ + PUBLIC_SUPABASE_URL=$PUBLIC_SUPABASE_URL \ + CLOUDFLARE_BUCKET_DOMAIN=$CLOUDFLARE_BUCKET_DOMAIN \ + CLOUDFLARE_ACCESS_KEY=$CLOUDFLARE_ACCESS_KEY \ + CLOUDFLARE_SECRET_ACCESS_KEY=$CLOUDFLARE_SECRET_ACCESS_KEY \ + CLOUDFLARE_ACCOUNT_ID=$CLOUDFLARE_ACCOUNT_ID \ + CLOUDFLARE_BUCKET_ID=$CLOUDFLARE_BUCKET_ID \ + SMTP_HOST=$SMTP_HOST \ + SMTP_USER=$SMTP_USER \ + SMTP_PASSWORD=$SMTP_PASSWORD \ + SMTP_PORT=$SMTP_PORT \ + PORT=3002 EXPOSE 3002 diff --git a/apps/dashboard/Dockerfile b/apps/dashboard/Dockerfile new file mode 100644 index 00000000..b35524a1 --- /dev/null +++ b/apps/dashboard/Dockerfile @@ -0,0 +1,83 @@ +# ----------- Build Stage ----------- +FROM node:18.17.0-alpine AS builder + +# Add build arguments +ARG PUBLIC_SUPABASE_URL +ARG PUBLIC_SUPABASE_ANON_KEY +ARG PRIVATE_SUPABASE_SERVICE_ROLE +ARG PRIVATE_APP_HOST +ARG PRIVATE_APP_SUBDOMAINS +ARG UNSPLASH_API_KEY +ARG OPENAI_API_KEY +ARG PUBLIC_SERVER_URL +ARG PUBLIC_IP_REGISTRY_KEY + +WORKDIR /cio + +# Install pnpm +RUN corepack enable && corepack prepare pnpm@latest --activate + +# Copy monorepo files +COPY pnpm-lock.yaml package.json pnpm-workspace.yaml ./ +COPY apps/dashboard/package.json apps/dashboard/ +COPY packages/tsconfig ./packages/tsconfig +COPY packages/shared ./packages/shared + +# Install all dependencies (monorepo context) +RUN pnpm install + +# Copy the rest of the dashboard app +COPY apps/dashboard ./apps/dashboard + +# Set env vars for SvelteKit to use Node adapter +ENV IS_SELFHOSTED=true \ + DEPLOYMENT_PROVIDER=docker \ + PUBLIC_SUPABASE_URL=$PUBLIC_SUPABASE_URL \ + PUBLIC_SUPABASE_ANON_KEY=$PUBLIC_SUPABASE_ANON_KEY \ + PRIVATE_SUPABASE_SERVICE_ROLE=$PRIVATE_SUPABASE_SERVICE_ROLE \ + PRIVATE_APP_HOST=$PRIVATE_APP_HOST \ + PRIVATE_APP_SUBDOMAINS=$PRIVATE_APP_SUBDOMAINS \ + UNSPLASH_API_KEY=$UNSPLASH_API_KEY \ + OPENAI_API_KEY=$OPENAI_API_KEY \ + PUBLIC_SERVER_URL=$PUBLIC_SERVER_URL \ + PUBLIC_IP_REGISTRY_KEY=$PUBLIC_IP_REGISTRY_KEY + +# Build the dashboard app +WORKDIR /cio/apps/dashboard +RUN pnpm install +RUN NODE_OPTIONS=--max-old-space-size=4096 pnpm build + +# ----------- Production Stage ----------- +FROM node:18.17.0-alpine AS runner + +WORKDIR /app + +# Install pnpm +RUN corepack enable && corepack prepare pnpm@latest --activate + +# Copy only production node_modules for dashboard +COPY --from=builder ./cio/node_modules ./node_modules +COPY --from=builder ./cio/package.json ./package.json +COPY --from=builder ./cio/apps/dashboard/node_modules ./apps/dashboard/node_modules +COPY --from=builder ./cio/apps/dashboard/package.json ./apps/dashboard/package.json +COPY --from=builder ./cio/apps/dashboard/build ./apps/dashboard/build + +# Expose the port (default for SvelteKit Node adapter) +EXPOSE 3000 + +# Set environment variables for production +ENV NODE_ENV=production \ + IS_SELFHOSTED=true \ + DEPLOYMENT_PROVIDER=docker \ + PUBLIC_SUPABASE_URL=$PUBLIC_SUPABASE_URL \ + PUBLIC_SUPABASE_ANON_KEY=$PUBLIC_SUPABASE_ANON_KEY \ + PRIVATE_SUPABASE_SERVICE_ROLE=$PRIVATE_SUPABASE_SERVICE_ROLE \ + PRIVATE_APP_HOST=$PRIVATE_APP_HOST \ + PRIVATE_APP_SUBDOMAINS=$PRIVATE_APP_SUBDOMAINS \ + UNSPLASH_API_KEY=$UNSPLASH_API_KEY \ + OPENAI_API_KEY=$OPENAI_API_KEY \ + PUBLIC_SERVER_URL=$PUBLIC_SERVER_URL \ + PUBLIC_IP_REGISTRY_KEY=$PUBLIC_IP_REGISTRY_KEY + +# Start the app +CMD ["pnpm", "dashboard:start"] \ No newline at end of file diff --git a/apps/dashboard/Dockerfile.dev b/apps/dashboard/Dockerfile.dev deleted file mode 100644 index 700c512d..00000000 --- a/apps/dashboard/Dockerfile.dev +++ /dev/null @@ -1,42 +0,0 @@ -FROM node:18-alpine - -WORKDIR /app - -RUN npm install -g pnpm - -COPY ./package.json ./ -COPY ./pnpm-lock.yaml ./ - -# Set environment variables -ENV IS_SELFHOSTED=true -ENV DEPLOYMENT_PROVIDER=docker -ENV PUBLIC_SUPABASE_URL=$PUBLIC_SUPABASE_URL -ENV PUBLIC_SUPABASE_ANON_KEY=$PUBLIC_SUPABASE_ANON_KEY -ENV PRIVATE_SUPABASE_SERVICE_ROLE=$PRIVATE_SUPABASE_SERVICE_ROLE -ENV PRIVATE_APP_HOST=$PRIVATE_APP_HOST -ENV PRIVATE_APP_SUBDOMAINS=$PRIVATE_APP_SUBDOMAINS -ENV UNSPLASH_API_KEY=$UNSPLASH_API_KEY -ENV OPENAI_API_KEY=$OPENAI_API_KEY -ENV PUBLIC_SERVER_URL=$PUBLIC_SERVER_URL -ENV PUBLIC_IP_REGISTRY_KEY=$PUBLIC_IP_REGISTRY_KEY -ENV NODE_OPTIONS="--max-old-space-size=8192" - -RUN pnpm i - -COPY . . - -WORKDIR /app/apps/dashboard - -RUN pnpm i -RUN pnpm build -RUN pnpm prune --production - -EXPOSE 5000 - -ENV NODE_ENV=production -CMD [ "node", "apps/dashboard/build" ] - -# EXPOSE 5000 - -# CMD ["pnpm", "start"] -# CMD [ "sh", "-c", "ls -la && cd apps/dashboard && pnpm build && pnpm start" ] diff --git a/apps/dashboard/Dockerfile.prod b/apps/dashboard/Dockerfile.prod deleted file mode 100644 index 3d758d77..00000000 --- a/apps/dashboard/Dockerfile.prod +++ /dev/null @@ -1,55 +0,0 @@ -# FROM node:18-alpine - -# WORKDIR /app - -# RUN npm install -g pnpm - -# COPY . . - - - -# # Install dependencies and build -# RUN pnpm install --frozen-lockfile && \ -# cd apps/dashboard && \ -# pnpm build || { echo "Build failed! Error output above."; exit 1; } - -# EXPOSE 5004 - -# ENV NODE_ENV=production -# CMD [ "pnpm", "dashboard:start" ] - -FROM node:18-alpine AS builder -WORKDIR /app -RUN npm install -g pnpm -COPY package.json . -COPY pnpm-lock.yaml . -RUN pnpm install --frozen-lockfile -COPY . . - -# Set environment variables -ENV IS_SELFHOSTED=true -ENV DEPLOYMENT_PROVIDER=docker -ENV PUBLIC_SUPABASE_URL=$PUBLIC_SUPABASE_URL -ENV PUBLIC_SUPABASE_ANON_KEY=$PUBLIC_SUPABASE_ANON_KEY -ENV PRIVATE_SUPABASE_SERVICE_ROLE=$PRIVATE_SUPABASE_SERVICE_ROLE -ENV PRIVATE_APP_HOST=$PRIVATE_APP_HOST -ENV PRIVATE_APP_SUBDOMAINS=$PRIVATE_APP_SUBDOMAINS -ENV UNSPLASH_API_KEY=$UNSPLASH_API_KEY -ENV OPENAI_API_KEY=$OPENAI_API_KEY -ENV PUBLIC_SERVER_URL=$PUBLIC_SERVER_URL -ENV PUBLIC_IP_REGISTRY_KEY=$PUBLIC_IP_REGISTRY_KEY -ENV NODE_OPTIONS="--max-old-space-size=10240" - -WORKDIR /app/apps/dashboard -RUN pnpm install --frozen-lockfile -RUN IS_SELFHOSTED=true DEPLOYMENT_PROVIDER=docker pnpm build -RUN pnpm prune --production - -FROM node:18-alpine -WORKDIR /app -COPY --from=builder /app/apps/dashboard/build build/ -COPY --from=builder /app/apps/dashboard/node_modules node_modules/ -COPY package.json . -EXPOSE 3004 -ENV NODE_ENV=production -CMD [ "node", "build" ] diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index cc5369cc..267ca27b 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -23,9 +23,6 @@ "@carbon/charts-svelte": "^1.13.6", "@lemonsqueezy/lemonsqueezy.js": "^2.2.0", "@polar-sh/sveltekit": "^0.2.1", - "@sentry/browser": "^7.61.0", - "@sentry/integrations": "^7.61.0", - "@sentry/vite-plugin": "^2.6.2", "@supabase/supabase-js": "^2.31.0", "@sveltejs/adapter-auto": "^2.1.0", "@sveltejs/adapter-node": "^1.3.1", diff --git a/apps/dashboard/src/lib/utils/services/sentry/index.ts b/apps/dashboard/src/lib/utils/services/sentry/index.ts index 127174c2..d25f0d1b 100644 --- a/apps/dashboard/src/lib/utils/services/sentry/index.ts +++ b/apps/dashboard/src/lib/utils/services/sentry/index.ts @@ -1,26 +1,26 @@ import { dev } from '$app/environment'; -import * as Sentry from '@sentry/browser'; -import { CaptureConsole } from '@sentry/integrations'; +// import * as Sentry from '@sentry/browser'; +// import { CaptureConsole } from '@sentry/integrations'; export const initSentry = (): void => { if (dev) return; - Sentry.init({ - dsn: 'https://c966f7e8cb1d4306be20b26bb4f0cc96@o476906.ingest.sentry.io/5999999', - integrations: [ - new CaptureConsole({ - levels: ['error'] - }), - new Sentry.Replay() - ], - environment: 'production', - replaysSessionSampleRate: 0.5, - replaysOnErrorSampleRate: 1.0 - }); + // Sentry.init({ + // dsn: 'https://c966f7e8cb1d4306be20b26bb4f0cc96@o476906.ingest.sentry.io/5999999', + // integrations: [ + // new CaptureConsole({ + // levels: ['error'] + // }), + // new Sentry.Replay() + // ], + // environment: 'production', + // replaysSessionSampleRate: 0.5, + // replaysOnErrorSampleRate: 1.0 + // }); }; export const setSentryUser = (user: Record): void => { if (dev) return; - Sentry.setUser(user); + // Sentry.setUser(user); }; diff --git a/apps/dashboard/vite.config.ts b/apps/dashboard/vite.config.ts index 76eba78b..71a3e793 100644 --- a/apps/dashboard/vite.config.ts +++ b/apps/dashboard/vite.config.ts @@ -9,14 +9,14 @@ export default ({ mode }) => { css: { preprocessorOptions: { scss: { - silenceDeprecations: ['legacy-js-api'], - }, - }, + silenceDeprecations: ['legacy-js-api'] + } + } }, plugins: [sveltekit()], server: getServer(process.env), build: { - sourcemap: true + sourcemap: false }, optimizeDeps: { entries: ['src/routes/**/+*.{js,ts,svelte}'] diff --git a/apps/docs/pages/contributor-guides/supabase-cloud.mdx b/apps/docs/pages/contributor-guides/supabase-cloud.mdx index a69df621..c9eca295 100644 --- a/apps/docs/pages/contributor-guides/supabase-cloud.mdx +++ b/apps/docs/pages/contributor-guides/supabase-cloud.mdx @@ -1,13 +1,3 @@ -import Image from 'next/image'; -import { Steps } from 'nextra/components'; -import { Callout } from 'nextra/components'; -import DBUrl from './images/db-url.webp'; -import DBPushResult from './images/db-push-result.webp'; -import AuthSettings from './images/auth-settings.webp'; -import MatchEnvVariables from './images/match-env.webp'; -import NewProject from './images/new-project.webp'; -import SmtpSettings from './images/smtp-settings.webp'; - # Supabase Cloud Setup In this guide, you will learn how to setup a supabase cloud project and link it to your local environment. @@ -58,7 +48,7 @@ Once you have an account just click on the _New Project_ on your dashboard. Afte Open your terminal and go to the root of the project. Run the following: ```bash copy -pnpm supabase login +pnpm supabase:login ``` Follow the instruction in your terminal to generate your access token. Paste the token in the console and hit **Enter** @@ -75,7 +65,7 @@ Follow the instruction in your terminal to generate your access token. Paste the - Then run in your terminal: ```bash copy -pnpm supabase db push --db-url "URL HERE" +pnpx supabase@1.51.1 db push --db-url "URL HERE" ``` diff --git a/apps/docs/pages/quickstart/self-hosting.mdx b/apps/docs/pages/quickstart/self-hosting.mdx index 55df5235..832dc191 100644 --- a/apps/docs/pages/quickstart/self-hosting.mdx +++ b/apps/docs/pages/quickstart/self-hosting.mdx @@ -1,7 +1,3 @@ -import { Callout } from 'nextra/components'; -import Image from 'next/image'; -import SelfhostClassroomIO from './images/selfhost-classroomio.webp'; - # Self-hosting ClassroomIO.com This guide will help you quickly selfhost ClassroomIO @@ -119,6 +115,50 @@ PRIVATE_APP_SUBDOMAINS="" ## Using Docker -We do have a [docker-compose file](https://github.com/rotimi-best/classroomio/blob/main/docker-compose.yaml) to deploy both the backend and dashboard however it still requires some more debugging and we are still trying to figure out how we can also get supabase to be included in the docker compose file. +We provide a docker-compose configuration to deploy both the backend and dashboard services. Here's how to use it: -If you'd like to help with this, please do open a PR on Github 👍🏽 +1. Clone the repository: + +```bash +git clone https://github.com/rotimi-best/classroomio.git +cd classroomio +``` + +2. Create a `.env` file with your environment variables (see Environment Variables section above) + +3. Start the services: + +```bash +docker compose up --build +``` + +The services will be available at: + +- Dashboard: http://localhost:3000 +- Backend: http://localhost:3002 + +### Service Configuration + +The docker-compose file sets up two services: + +#### Backend Service + +- Runs on port 3002 +- Uses Node.js slim image +- Mounts the backend code directory +- Requires environment variables for: + - Supabase configuration + - Cloudflare R2 for video uploads + - SMTP for email notifications + +#### Dashboard Service + +- Runs on port 3000 +- Uses Node.js Alpine image +- Uses pnpm for package management +- Requires environment variables for: + - Supabase configuration + - Application settings + - Optional API keys (OpenAI, Unsplash) + +Note: We're currently working on including Supabase in the docker-compose file. If you'd like to help with this, please open a PR on GitHub! 👍 diff --git a/docker-compose.yaml b/docker-compose.yaml index e869c027..f5249cc8 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -9,8 +9,22 @@ version: '3.8' services: backend: build: - dockerfile: Dockerfile context: ./apps/backend + dockerfile: Dockerfile + args: + - PUBLIC_SUPABASE_ANON_KEY=${PUBLIC_SUPABASE_ANON_KEY} + - PUBLIC_SUPABASE_URL=${PUBLIC_SUPABASE_URL} + - CLOUDFLARE_BUCKET_DOMAIN=${CLOUDFLARE_BUCKET_DOMAIN} + - CLOUDFLARE_ACCESS_KEY=${CLOUDFLARE_ACCESS_KEY} + - CLOUDFLARE_SECRET_ACCESS_KEY=${CLOUDFLARE_SECRET_ACCESS_KEY} + - CLOUDFLARE_ACCOUNT_ID=${CLOUDFLARE_ACCOUNT_ID} + - CLOUDFLARE_BUCKET_ID=${CLOUDFLARE_BUCKET_ID} + - SMTP_HOST=${SMTP_HOST} + - SMTP_USER=${SMTP_USER} + - SMTP_PASSWORD=${SMTP_PASSWORD} + - SMTP_PORT=${SMTP_PORT} + ports: + - '3002:3002' volumes: - /app/node_modules - ./apps/backend:/app @@ -33,8 +47,8 @@ services: dashboard: build: + context: . dockerfile: ./apps/dashboard/Dockerfile - context: ./ args: - PUBLIC_SUPABASE_URL=${PUBLIC_SUPABASE_URL} - PUBLIC_SUPABASE_ANON_KEY=${PUBLIC_SUPABASE_ANON_KEY} @@ -45,6 +59,8 @@ services: - OPENAI_API_KEY=${OPENAI_API_KEY} - PUBLIC_SERVER_URL=${PUBLIC_SERVER_URL} - PUBLIC_IP_REGISTRY_KEY=${PUBLIC_IP_REGISTRY_KEY} + ports: + - '3000:3000' volumes: - .:/app - /app/node_modules diff --git a/package.json b/package.json index a0336ca7..47382bde 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,9 @@ "format": "prettier . --write", "release": "standard-version", "ci": "cypress run", + "supabase:start": "pnpx supabase@1.51.1 start", + "supabase:login": "pnpx supabase@1.51.1 login", + "supabase:status": "pnpx supabase@1.51.1 status", "dashboard:build": "cd apps/dashboard && pnpm i && IS_SELFHOSTED=true NODE_OPTIONS='--max-old-space-size=20384' DEPLOYMENT_PROVIDER=docker pnpm build", "dashboard:start": "cd apps/dashboard && node build" }, @@ -24,7 +27,6 @@ "prettier-plugin-svelte": "^3.1.2", "prettier-plugin-tailwindcss": "^0.5.7", "standard-version": "^9.5.0", - "supabase": "^1.151.1", "tsconfig": "workspace:*", "typescript": "^5.1.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0246eba8..eb12fcfa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,9 +26,6 @@ importers: standard-version: specifier: ^9.5.0 version: 9.5.0 - supabase: - specifier: ^1.151.1 - version: 1.151.1 tsconfig: specifier: workspace:* version: link:packages/tsconfig @@ -281,15 +278,6 @@ importers: '@polar-sh/sveltekit': specifier: ^0.2.1 version: 0.2.1(@sveltejs/kit@1.29.0)(zod@3.21.4) - '@sentry/browser': - specifier: ^7.61.0 - version: 7.61.0 - '@sentry/integrations': - specifier: ^7.61.0 - version: 7.61.0 - '@sentry/vite-plugin': - specifier: ^2.6.2 - version: 2.6.2(encoding@0.1.13) '@supabase/supabase-js': specifier: ^2.31.0 version: 2.32.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) @@ -531,9 +519,6 @@ importers: ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@22.9.0)(typescript@5.5.2) - tsconfig: - specifier: workspace:* - version: link:../../packages/tsconfig tslib: specifier: ^2.6.1 version: 2.6.1 @@ -5407,141 +5392,6 @@ packages: '@sentry/utils': 7.110.1 dev: false - /@sentry-internal/tracing@7.61.0: - resolution: {integrity: sha512-zTr+MXEG4SxNxif42LIgm2RQn+JRXL2NuGhRaKSD2i4lXKFqHVGlVdoWqY5UfqnnJPokiTWIj9ejR8I5HV8Ogw==} - engines: {node: '>=8'} - dependencies: - '@sentry/core': 7.61.0 - '@sentry/types': 7.61.0 - '@sentry/utils': 7.61.0 - tslib: 2.6.1 - dev: false - - /@sentry/browser@7.61.0: - resolution: {integrity: sha512-IGEkJZRP16Oe5CkXkmhU3QdV5RugW6Vds16yJFFYsgp87NprWtRZgqzldFDYkINStfBHVdctj/Rh/ZrLf8QlkQ==} - engines: {node: '>=8'} - dependencies: - '@sentry-internal/tracing': 7.61.0 - '@sentry/core': 7.61.0 - '@sentry/replay': 7.61.0 - '@sentry/types': 7.61.0 - '@sentry/utils': 7.61.0 - tslib: 2.6.1 - dev: false - - /@sentry/bundler-plugin-core@2.6.2(encoding@0.1.13): - resolution: {integrity: sha512-j2BOd8kl2NzexQaeNNc4uqteudK1lNngGP99zjTEj1BV/I5vOOR7PnrmQLXkLJOp5paGKKfelY9RHSVnvFf+Dw==} - engines: {node: '>= 14'} - dependencies: - '@sentry/cli': 2.43.1(encoding@0.1.13) - '@sentry/node': 7.110.1 - '@sentry/utils': 7.120.3 - dotenv: 16.3.1 - find-up: 5.0.0 - glob: 9.3.2 - magic-string: 0.27.0 - unplugin: 1.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@sentry/cli-darwin@2.43.1: - resolution: {integrity: sha512-622g/UyhTi1zC0Nnnbto75gNkExwwjv1cnRA4ERwfPgiOI3UK0/j+m4CcosqrfdTK55pv+SiifOlmvDPZnMIZw==} - engines: {node: '>=10'} - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-arm64@2.43.1: - resolution: {integrity: sha512-c1P7eZqdDwRlePBSQSgWYUi80W5ywvG/XxZFVecjdHDEYlo2BJTRirqZTqzKzI/Ekk8x5hOxNuBbP+m9FluDMw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux, freebsd] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-arm@2.43.1: - resolution: {integrity: sha512-eQKcfqMR9bg8HKR9UCwm8x3lGBMUu1wCQow2BwEX4NbY1GzniSHNH4MBY2ERpOsfCA0LM5xEWQk/QFXexz1Dhw==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux, freebsd] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-i686@2.43.1: - resolution: {integrity: sha512-VRhzmEOeA/nsQHkf3Jt8mbgZmdbAWURM18Y1uXVRI/mQzZaz6YAZ+IzQ6gANpUk+UfTdf1q0unZSAIOUuu19gA==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [linux, freebsd] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-x64@2.43.1: - resolution: {integrity: sha512-c8G4zdzxzdPOz+tV1LNwUz5UsPNnhEE13kMPesF81liawwznnBsDfeKf6t/87Eem4BgAPdsFlnqnffi4BdqkZQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux, freebsd] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli-win32-arm64@2.43.1: - resolution: {integrity: sha512-K+9td351lzUn51R/oHotyEkq7nzKWBm2ffhVAe4HXNh72MjhyIvonAhQUrGawIjn/aLHO+hq9iNaEXbCu6Hulg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli-win32-i686@2.43.1: - resolution: {integrity: sha512-Co7kj0o16xcUZRZY+VwMgpdDvOY2xAbR5Xg5NXv73nXdALgGWf+G5bntFz3baNmaSOYWKJjvZT7a+YLwe/DihQ==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli-win32-x64@2.43.1: - resolution: {integrity: sha512-uH7l4FXc6s0GoJeriU6kQOYzREqDGB7b16XbTKY+lnhMNvBgP2aaOUQ9yRLbEHeSSg/112SQeolCnF2GwTmoKw==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@sentry/cli@2.43.1(encoding@0.1.13): - resolution: {integrity: sha512-5jg8cy4LlPnmgI6FkxClDRB5hFWzmlq7VZqj5o6Zdm5KRywzCn2s18GXyC1LPf6MFHw3AZ/K2h5pUZmJdWUBFQ==} - engines: {node: '>= 10'} - hasBin: true - requiresBuild: true - dependencies: - https-proxy-agent: 5.0.1 - node-fetch: 2.7.0(encoding@0.1.13) - progress: 2.0.3 - proxy-from-env: 1.1.0 - which: 2.0.2 - optionalDependencies: - '@sentry/cli-darwin': 2.43.1 - '@sentry/cli-linux-arm': 2.43.1 - '@sentry/cli-linux-arm64': 2.43.1 - '@sentry/cli-linux-i686': 2.43.1 - '@sentry/cli-linux-x64': 2.43.1 - '@sentry/cli-win32-arm64': 2.43.1 - '@sentry/cli-win32-i686': 2.43.1 - '@sentry/cli-win32-x64': 2.43.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@sentry/core@7.110.1: resolution: {integrity: sha512-yC1yeUFQlmHj9u/KxKmwOMVanBmgfX+4MZnZU31QPqN95adyZTwpaYFZl4fH5kDVnz7wXJI0qRP8SxuMePtqhw==} engines: {node: '>=8'} @@ -5550,25 +5400,6 @@ packages: '@sentry/utils': 7.110.1 dev: false - /@sentry/core@7.61.0: - resolution: {integrity: sha512-zl0ZKRjIoYJQWYTd3K/U6zZfS4GDY9yGd2EH4vuYO4kfYtEp/nJ8A+tfAeDo0c9FGxZ0Q+5t5F4/SfwbgyyQzg==} - engines: {node: '>=8'} - dependencies: - '@sentry/types': 7.61.0 - '@sentry/utils': 7.61.0 - tslib: 2.6.1 - dev: false - - /@sentry/integrations@7.61.0: - resolution: {integrity: sha512-NEQ+CatBfUM1TmA4FOOyHfsMvSIwSg4pA55Lxiq9quDykzkEtrXFzUfFpZbTunz4cegG8hucPOqbzKFrDPfGjQ==} - engines: {node: '>=8'} - dependencies: - '@sentry/types': 7.61.0 - '@sentry/utils': 7.61.0 - localforage: 1.10.0 - tslib: 2.6.1 - dev: false - /@sentry/node@7.110.1: resolution: {integrity: sha512-n6sNzZJ/ChfyCI1FxuGWgloeevC8j2vax3vXM4IZrSIm5hS1d9L2oCJ4HEPuxGUxCkQ1f4kXPcdmNaQsWH0JBw==} engines: {node: '>=8'} @@ -5589,30 +5420,11 @@ packages: node-abi: 3.75.0 dev: false - /@sentry/replay@7.61.0: - resolution: {integrity: sha512-1ugk0yZssOPkSg6uTVcysjxlBydycXiOgV0PCU7DsXCFOV1ua5YpyPZFReTz9iFTtwD0LwGFM1LW9wJeQ67Fzg==} - engines: {node: '>=12'} - dependencies: - '@sentry/core': 7.61.0 - '@sentry/types': 7.61.0 - '@sentry/utils': 7.61.0 - dev: false - /@sentry/types@7.110.1: resolution: {integrity: sha512-sZxOpM5gfyxvJeWVvNpHnxERTnlqcozjqNcIv29SZ6wonlkekmxDyJ3uCuPv85VO54WLyA4uzskPKnNFHacI8A==} engines: {node: '>=8'} dev: false - /@sentry/types@7.120.3: - resolution: {integrity: sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==} - engines: {node: '>=8'} - dev: false - - /@sentry/types@7.61.0: - resolution: {integrity: sha512-/GLlIBNR35NKPE/SfWi9W10dK9hE8qTShzsuPVn5wAJxpT3Lb4+dkwmKCTLUYxdkmvRDEudkfOxgalsfQGTAWA==} - engines: {node: '>=8'} - dev: false - /@sentry/utils@7.110.1: resolution: {integrity: sha512-eibLo2m1a7sHkOHxYYmRujr3D7ek2l9sv26F1SLoQBVDF7Afw5AKyzPmtA1D+4M9P/ux1okj7cGj3SaBrVpxXA==} engines: {node: '>=8'} @@ -5620,32 +5432,6 @@ packages: '@sentry/types': 7.110.1 dev: false - /@sentry/utils@7.120.3: - resolution: {integrity: sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==} - engines: {node: '>=8'} - dependencies: - '@sentry/types': 7.120.3 - dev: false - - /@sentry/utils@7.61.0: - resolution: {integrity: sha512-jfj14d0XBFiCU0G6dZZ12SizATiF5Mt4stBGzkM5iS9nXFj8rh1oTT7/p+aZoYzP2JTF+sDzkNjWxyKZkcTo0Q==} - engines: {node: '>=8'} - dependencies: - '@sentry/types': 7.61.0 - tslib: 2.6.1 - dev: false - - /@sentry/vite-plugin@2.6.2(encoding@0.1.13): - resolution: {integrity: sha512-r1jB854XZ+LFtel/gv2NX5gzeBXGajssXlDMmXM3yP9Ao7yZk7RqFMkqYfL+tMeIk2d7waAI8W8vMCbrg5CQFw==} - engines: {node: '>= 14'} - dependencies: - '@sentry/bundler-plugin-core': 2.6.2(encoding@0.1.13) - unplugin: 1.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@shikijs/core@1.23.1: resolution: {integrity: sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==} dependencies: @@ -6693,7 +6479,7 @@ packages: peerDependencies: '@sveltejs/kit': ^2.0.0 dependencies: - '@sveltejs/kit': 2.9.0(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@4.1.2)(vite@5.4.4) + '@sveltejs/kit': 2.9.0(@sveltejs/vite-plugin-svelte@4.0.0)(svelte@5.0.0)(vite@5.4.4) import-meta-resolve: 4.1.0 dev: true @@ -8054,16 +7840,6 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false - /bin-links@4.0.4: - resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - cmd-shim: 6.0.3 - npm-normalize-package-bin: 3.0.1 - read-cmd-shim: 4.0.0 - write-file-atomic: 5.0.1 - dev: true - /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -8448,6 +8224,7 @@ packages: /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + dev: false /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} @@ -8521,11 +8298,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /cmd-shim@6.0.3: - resolution: {integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -9343,11 +9115,6 @@ packages: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} dev: true - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: true - /data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -10289,14 +10056,6 @@ packages: optional: true dev: true - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - dev: true - /fflate@0.4.8: resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} dev: false @@ -10374,6 +10133,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true /flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} @@ -10442,13 +10202,6 @@ packages: combined-stream: 1.0.8 mime-types: 2.1.35 - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: true - /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -10483,6 +10236,7 @@ packages: engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -10701,16 +10455,6 @@ packages: once: 1.4.0 dev: false - /glob@9.3.2: - resolution: {integrity: sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - fs.realpath: 1.0.0 - minimatch: 7.4.6 - minipass: 4.2.8 - path-scurry: 1.11.1 - dev: false - /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -11164,10 +10908,6 @@ packages: engines: {node: '>= 4'} dev: true - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - /immutable@4.3.7: resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} @@ -12302,12 +12042,6 @@ packages: type-check: 0.4.0 dev: true - /lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - dependencies: - immediate: 3.0.6 - dev: false - /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -12325,12 +12059,6 @@ packages: strip-bom: 3.0.0 dev: true - /localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - dependencies: - lie: 3.1.1 - dev: false - /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -12362,6 +12090,7 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -12477,6 +12206,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + dev: true /magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -13333,13 +13063,6 @@ packages: brace-expansion: 2.0.1 dev: false - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -13370,15 +13093,12 @@ packages: engines: {node: '>=8'} dependencies: yallist: 4.0.0 - - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} dev: false /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + dev: false /minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} @@ -13390,6 +13110,7 @@ packages: dependencies: minipass: 3.3.6 yallist: 4.0.0 + dev: false /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} @@ -13401,6 +13122,7 @@ packages: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true + dev: false /mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} @@ -13692,12 +13414,6 @@ packages: semver: 7.7.1 dev: false - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - deprecated: Use your platform's native DOMException instead - dev: true - /node-fetch@2.7.0(encoding@0.1.13): resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -13711,15 +13427,6 @@ packages: whatwg-url: 5.0.0 dev: false - /node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: true - /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -13814,11 +13521,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /npm-normalize-package-bin@3.0.1: - resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} @@ -14022,6 +13724,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true /p-try@1.0.0: resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} @@ -14118,6 +13821,7 @@ packages: /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -14553,11 +14257,6 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -14719,11 +14418,6 @@ packages: dependencies: pify: 2.3.0 - /read-cmd-shim@4.0.0: - resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: true - /read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} @@ -15873,20 +15567,6 @@ packages: pirates: 4.0.7 ts-interface-checker: 0.1.13 - /supabase@1.151.1: - resolution: {integrity: sha512-fl4h9mgG3z+bQ7UntymT30yqvOPJ4AfiCDKvDCFAdpkDhiozSfQqh1LwytEQSqMpgt6PEAcDJdYEbvholqPKOQ==} - engines: {npm: '>=8'} - hasBin: true - requiresBuild: true - dependencies: - bin-links: 4.0.4 - https-proxy-agent: 7.0.6 - node-fetch: 3.3.2 - tar: 6.2.1 - transitivePeerDependencies: - - supports-color - dev: true - /supports-color@4.5.0: resolution: {integrity: sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==} engines: {node: '>=4'} @@ -16307,6 +15987,7 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 + dev: false /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -16930,15 +16611,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /unplugin@1.0.1: - resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} - dependencies: - acorn: 8.14.1 - chokidar: 3.6.0 - webpack-sources: 3.2.3 - webpack-virtual-modules: 0.5.0 - dev: false - /unplugin@1.16.1: resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} engines: {node: '>=14.0.0'} @@ -17403,11 +17075,6 @@ packages: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false - /web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - dev: true - /web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} dev: false @@ -17425,15 +17092,6 @@ packages: engines: {node: '>=12'} dev: true - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: false - - /webpack-virtual-modules@0.5.0: - resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} - dev: false - /webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} dev: false @@ -17628,14 +17286,6 @@ packages: signal-exit: 3.0.7 dev: true - /write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - dev: true - /ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@6.0.5): resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} engines: {node: '>=10.0.0'}