diff --git a/.dockerignore b/.dockerignore
index 58fa821..7bd678a 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -7,4 +7,14 @@ build
docker-compose.yml
Dockerfile
.dockerignore
-public/videos/*
\ No newline at end of file
+public/videos/*
+
+# Local environment files may contain deployment secrets.
+.env*
+
+# Never package applicant documents or local test credentials
+private
+.local-verification
+.career-tests-*
+media
+scripts/.career-transfer
diff --git a/.env.example b/.env.example
index 01aef04..9ec2156 100644
--- a/.env.example
+++ b/.env.example
@@ -7,3 +7,10 @@ POSTGRES_DB=frt
FACEBOOK_PAGE_ID=your_page_id
FACEBOOK_ACCESS_TOKEN=your_access_token
+
+# Karrier oldal — jelentkezések kiírása Google Sheets táblázatba (opcionális).
+# A táblázat linkjét a szerkesztő adja meg a Payload adminban; ide csak a
+# szolgáltatásfiók adatai kellenek. Beállítás nélkül a jelentkezések csak a
+# Payload adminba kerülnek.
+GOOGLE_SERVICE_ACCOUNT_EMAIL=frt-karrier@projekt-neve.iam.gserviceaccount.com
+GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIE...\n-----END PRIVATE KEY-----\n"
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..4259e83
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+src/migrations/*.json linguist-generated
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..88f7e7e
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,68 @@
+name: CI
+
+on:
+ pull_request:
+ branches:
+ - main
+ - staging
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ci-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ quality:
+ name: Lint and typecheck
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
+
+ - name: Set up Node.js
+ uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
+ with:
+ node-version: 22
+ cache: yarn
+
+ - name: Install dependencies
+ run: yarn --frozen-lockfile --network-timeout 600000
+
+ - name: Run ESLint
+ run: yarn eslint .
+
+ - name: Run TypeScript checks
+ run: yarn next typegen && yarn tsc --noEmit
+
+ - name: Test career applications
+ run: yarn test:career
+
+ - name: Test career content transfer
+ run: yarn test:career-transfer
+
+ container:
+ name: Build Docker image
+ needs: quality
+ runs-on: ubuntu-latest
+ timeout-minutes: 30
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
+
+ - name: Build image without publishing
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
+ with:
+ context: .
+ file: ./Dockerfile
+ platforms: ${{ vars.IMAGE_PLATFORM || 'linux/amd64' }}
+ push: false
+ cache-from: type=gha,scope=frt-app
+ cache-to: type=gha,mode=max,scope=frt-app
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..feb3a28
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,222 @@
+name: Build and deploy
+
+on:
+ push:
+ branches:
+ - staging
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+env:
+ REGISTRY: ghcr.io
+ IMAGE_NAME: kir-dev/frt
+
+concurrency:
+ group: deploy-frt-vps
+ cancel-in-progress: false
+
+jobs:
+ quality:
+ name: Validate release
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+
+ steps:
+ - name: Require main for production releases
+ if: github.event_name == 'workflow_dispatch'
+ run: |
+ if [[ "$GITHUB_REF_NAME" != "main" ]]; then
+ echo "Production releases must be dispatched from the main branch." >&2
+ exit 1
+ fi
+
+ - name: Check out repository
+ uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
+
+ - name: Set up Node.js
+ uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
+ with:
+ node-version: 22
+ cache: yarn
+
+ - name: Install dependencies
+ run: yarn --frozen-lockfile --network-timeout 600000
+
+ - name: Run ESLint
+ run: yarn eslint .
+
+ - name: Run TypeScript checks
+ run: yarn next typegen && yarn tsc --noEmit
+
+ - name: Test career applications
+ run: yarn test:career
+
+ - name: Test career content transfer
+ run: yarn test:career-transfer
+
+ build:
+ name: Build and publish image
+ needs: quality
+ runs-on: ubuntu-latest
+ timeout-minutes: 30
+ permissions:
+ contents: read
+ packages: write
+ outputs:
+ image-ref: ${{ steps.image.outputs.ref }}
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
+
+ - name: Log in to GHCR
+ uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Generate image metadata
+ id: metadata
+ uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
+ with:
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+ tags: |
+ type=sha,format=long,prefix=sha-
+ type=raw,value=staging,enable=${{ github.event_name == 'push' }}
+ type=raw,value=production,enable=${{ github.event_name == 'workflow_dispatch' }}
+
+ - name: Build and push image
+ id: build
+ uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
+ with:
+ context: .
+ file: ./Dockerfile
+ platforms: ${{ vars.IMAGE_PLATFORM || 'linux/amd64' }}
+ push: true
+ tags: ${{ steps.metadata.outputs.tags }}
+ labels: ${{ steps.metadata.outputs.labels }}
+ cache-from: type=gha,scope=frt-app
+ cache-to: type=gha,mode=max,scope=frt-app
+ provenance: true
+ sbom: true
+
+ - name: Export immutable image reference
+ id: image
+ env:
+ IMAGE_DIGEST: ${{ steps.build.outputs.digest }}
+ run: echo "ref=${REGISTRY}/${IMAGE_NAME}@${IMAGE_DIGEST}" >> "$GITHUB_OUTPUT"
+
+ deploy:
+ name: Deploy ${{ github.event_name == 'push' && 'staging' || 'production' }}
+ needs: build
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ permissions:
+ contents: read
+ packages: read
+ environment:
+ name: ${{ github.event_name == 'push' && 'Staging' || 'Production' }}
+ url: ${{ vars.PUBLIC_URL }}
+ env:
+ IMAGE_REF: ${{ needs.build.outputs.image-ref }}
+ DEPLOY_PATH: ${{ vars.DEPLOY_PATH }}
+ COMPOSE_PROJECT: ${{ vars.COMPOSE_PROJECT }}
+ APP_ENV_FILE: ${{ vars.APP_ENV_FILE }}
+ HEALTH_URL: ${{ vars.HEALTH_URL }}
+ COMPOSE_OVERRIDE: ${{ github.event_name == 'push' && 'docker-compose.staging.yml' || '' }}
+ BACKUP_DATABASE: ${{ github.event_name == 'workflow_dispatch' && 'true' || 'false' }}
+ VPS_HOST: ${{ secrets.VPS_HOST }}
+ VPS_USER: ${{ secrets.VPS_USER }}
+ SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
+ SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
+ GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ steps:
+ - name: Check out deployment files
+ uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
+
+ - name: Validate deployment configuration
+ run: |
+ required_values=(
+ IMAGE_REF
+ DEPLOY_PATH
+ COMPOSE_PROJECT
+ APP_ENV_FILE
+ HEALTH_URL
+ VPS_HOST
+ VPS_USER
+ SSH_PRIVATE_KEY
+ SSH_KNOWN_HOSTS
+ )
+
+ for variable_name in "${required_values[@]}"; do
+ if [[ -z "${!variable_name}" ]]; then
+ echo "Missing deployment configuration: $variable_name" >&2
+ exit 1
+ fi
+ done
+
+ if [[ ! "$DEPLOY_PATH" =~ ^/[a-zA-Z0-9_./-]+$ || "$DEPLOY_PATH" == *".."* ]]; then
+ echo "DEPLOY_PATH must be a safe absolute path." >&2
+ exit 1
+ fi
+
+ - name: Configure SSH
+ run: |
+ install -m 700 -d "$HOME/.ssh"
+ printf '%s\n' "$SSH_PRIVATE_KEY" > "$HOME/.ssh/deploy_key"
+ printf '%s\n' "$SSH_KNOWN_HOSTS" > "$HOME/.ssh/known_hosts"
+ chmod 600 "$HOME/.ssh/deploy_key" "$HOME/.ssh/known_hosts"
+
+ - name: Upload deployment files
+ run: |
+ target="${VPS_USER}@${VPS_HOST}"
+ ssh_options=(-i "$HOME/.ssh/deploy_key" -o BatchMode=yes -o StrictHostKeyChecking=yes)
+ printf -v prepare_command 'mkdir -p %q %q' "$DEPLOY_PATH" "$DEPLOY_PATH/scripts"
+
+ # The command is intentionally assembled and escaped on the runner.
+ # shellcheck disable=SC2029
+ ssh "${ssh_options[@]}" "$target" "$prepare_command"
+ scp "${ssh_options[@]}" docker-compose.yml docker-compose.staging.yml "$target:$DEPLOY_PATH/"
+ scp "${ssh_options[@]}" scripts/deploy-image.sh "$target:$DEPLOY_PATH/scripts/"
+
+ - name: Authenticate VPS to GHCR
+ run: |
+ target="${VPS_USER}@${VPS_HOST}"
+ ssh_options=(-i "$HOME/.ssh/deploy_key" -o BatchMode=yes -o StrictHostKeyChecking=yes)
+ # GITHUB_ACTOR is intentionally expanded on the runner.
+ # shellcheck disable=SC2029
+ printf '%s' "$GHCR_TOKEN" | ssh "${ssh_options[@]}" "$target" \
+ "docker login ghcr.io --username '$GITHUB_ACTOR' --password-stdin"
+
+ - name: Deploy immutable image
+ run: |
+ target="${VPS_USER}@${VPS_HOST}"
+ ssh_options=(-i "$HOME/.ssh/deploy_key" -o BatchMode=yes -o StrictHostKeyChecking=yes)
+ printf -v deploy_command \
+ 'cd %q && ./scripts/deploy-image.sh %q %q %q %q %q %q' \
+ "$DEPLOY_PATH" \
+ "$IMAGE_REF" \
+ "$COMPOSE_PROJECT" \
+ "$APP_ENV_FILE" \
+ "$HEALTH_URL" \
+ "$BACKUP_DATABASE" \
+ "$COMPOSE_OVERRIDE"
+
+ # The command is intentionally assembled and escaped on the runner.
+ # shellcheck disable=SC2029
+ ssh "${ssh_options[@]}" "$target" "$deploy_command"
+
+ - name: Log the VPS out of GHCR
+ if: always()
+ continue-on-error: true
+ run: |
+ target="${VPS_USER}@${VPS_HOST}"
+ ssh -i "$HOME/.ssh/deploy_key" -o BatchMode=yes -o StrictHostKeyChecking=yes \
+ "$target" "docker logout ghcr.io"
diff --git a/.gitignore b/.gitignore
index 1955d09..c6aa4d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,4 +41,9 @@ yarn-error.log*
next-env.d.ts
/.idea/
/yarn.lock
-public/videos
\ No newline at end of file
+public/videos
+# Private applicant documents and local verification artifacts
+/private/
+/media
+/.local-verification/
+/scripts/.career-transfer/
diff --git a/Dockerfile b/Dockerfile
index 8eed6b9..92e1974 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,34 +5,46 @@ RUN apk add --no-cache libc6-compat
WORKDIR /app
COPY package.json yarn.lock ./
-RUN yarn --frozen-lockfile
+RUN --mount=type=cache,target=/usr/local/share/.cache/yarn \
+ NODE_OPTIONS=--dns-result-order=ipv4first \
+ yarn --frozen-lockfile \
+ --network-timeout 600000 \
+ --network-concurrency 4
-FROM base AS builder
+FROM base AS source
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
+RUN yarn run build:career-transfer
+
+FROM source AS builder
RUN yarn run build
-FROM base AS runner
+FROM base AS career-transfer-runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
+COPY --from=deps /app/node_modules ./node_modules
+COPY --from=source /app/src ./src
+COPY --from=source /app/payload.config.ts ./payload.config.ts
+COPY --from=source /app/tsconfig.json ./tsconfig.json
+COPY --from=source /app/css-loader-register.mjs ./css-loader-register.mjs
+COPY --from=source /app/css-loader-hooks.mjs ./css-loader-hooks.mjs
+COPY --from=source /app/package.json ./package.json
+COPY --from=source /app/scripts/career-transfer-server.mjs ./scripts/career-transfer-server.mjs
+COPY --from=source /app/scripts/.career-transfer ./scripts/.career-transfer
+
+CMD ["node", "scripts/career-transfer-server.mjs"]
+
+FROM career-transfer-runner AS runner
COPY --from=builder /app/public ./public
-
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
-COPY --from=deps /app/node_modules ./node_modules
-COPY --from=builder /app/src ./src
-COPY --from=builder /app/payload.config.ts ./payload.config.ts
-COPY --from=builder /app/tsconfig.json ./tsconfig.json
-COPY --from=builder /app/css-loader-register.mjs ./css-loader-register.mjs
-COPY --from=builder /app/css-loader-hooks.mjs ./css-loader-hooks.mjs
-COPY --from=builder /app/package.json ./package.json
EXPOSE 3000
diff --git a/README.md b/README.md
index 7c5a62d..d3ad91a 100644
--- a/README.md
+++ b/README.md
@@ -90,37 +90,58 @@ Open http://localhost:3000. Admin is available at http://localhost:3000/admin.
- `yarn start` — Start the production server
- `yarn lint` — Run ESLint
-## Deployment
+## Karrier oldal
+
+A `/karrier` oldal (korábban „Tagfelvétel", a `/tagfelvetel` útvonal 308-cal ide irányít) mindig elérhető, akkor is, ha éppen nincs nyitott pozíció.
+
+### Tartalomkezelés
+
+- **Karrier csoportok** (`recruitment` kollekció) — csoportonként kép, rendezési szám, leírás, és a pozíciók listája. Egy pozícióhoz megadható:
+ - bevezető szöveg (opcionális),
+ - tetszőleges számú **szekció** (pl. Feladatok, Szükséges skillek, Miben fejlődhetsz, Előnyök),
+ - három **kiemelt tudnivaló**: Csatlakozás, Időráfordítás, Részegység — ezek ikonokkal jelennek meg a leírás alatt,
+ - „Nyitott pozíció" jelölőnégyzet: csak a bepipált pozíciók jelennek meg az oldalon.
+- **Karrier oldal** globális beállítás (`career-settings`) — az oldal bevezetője, a jelentkezés módja (beépített űrlap vagy külső Google űrlap), és a jelentkezés nyitva/zárva állapota.
+- **Jelentkezések** (`job-applications` kollekció) — a beépített űrlapon beérkezett jelentkezések. A kollekció `create` jogosultsága zárt: beküldeni csak a `/api/karrier/jelentkezes` végponton keresztül lehet.
+
+### Jelentkezések kiírása Google Sheets táblázatba
+
+A beépített űrlap minden jelentkezést elment a Payloadba, és ha be van állítva egy táblázat, egy sorral kiegészíti azt is. A táblázat hibája **nem** akadályozza meg a jelentkezés mentését — a státusz a jelentkezés oldalsávjában látszik (Kiírva / Kihagyva / Hiba), és a „Kiírás újra a táblázatba" gombbal bármikor pótolható.
-Since the project uses `push: false` for database schema management, you must run migrations manually after deploying new code.
+#### Egyszeri beállítás (fejlesztői oldal)
-### Steps to Deploy
+1. A [Google Cloud Console](https://console.cloud.google.com/)-ban hozz létre egy projektet, és engedélyezd benne a **Google Sheets API**-t.
+2. **IAM & Admin → Service Accounts → Create service account.** Szerepkör nem kell hozzá.
+3. A fióknál **Keys → Add key → Create new key → JSON**, töltsd le a kulcsot.
+4. A letöltött JSON-ból két érték kell a `.env`-be:
-1. **Pull latest changes**:
- ```bash
- git pull origin main
- ```
+ ```
+ GOOGLE_SERVICE_ACCOUNT_EMAIL=
+ GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY=""
+ ```
-2. **Rebuild Docker containers**:
- ```bash
- docker compose up -d --build
- ```
+ A privát kulcsot idézőjelek közé tedd, és hagyd benne a `\n` karaktereket — a kód alakítja vissza sortörésekké.
-3. **Run Migrations**:
- Execute the migration command inside the running container:
- ```bash
- docker exec frt-app-1 yarn payload:migrate
- ```
- *Note: You may be prompted to confirm the migration. You can auto-confirm with `echo y | docker exec -i frt-app-1 yarn payload:migrate`.*
+#### Táblázat bekötése (a szerkesztő dolga, kódolás nélkül)
-### Troubleshooting Migrations
+1. Hozz létre egy Google Sheets táblázatot (üresen is jó, a fejlécet mi írjuk bele).
+2. **Megosztás → add hozzá a szolgáltatásfiók e-mail címét Szerkesztő jogosultsággal.** A pontos címet az adminban a mező alatt kiírjuk.
+3. Payload admin → **Karrier oldal → Jelentkezés → Google táblázat linkje**: illeszd be a táblázat linkjét, és mentsd.
-If you encounter `ERR_UNKNOWN_FILE_EXTENSION` errors with CSS files, ensure you are using the custom loader scripts (`css-loader-register.mjs`) which are included in the Docker image and used by the `yarn payload:migrate` script.
+Mentéskor rögtön ellenőrizzük, hogy a táblázat elérhető-e; ha nincs megosztva vagy rossz a link, a mező hibaüzenetet ad. A mező üresen hagyható — ilyenkor a jelentkezések csak az adminba érkeznek.
-- Ensure Docker is running if you use Postgres via Compose.
-- On first run, Payload will initialize tables in the configured Postgres database.
-- If you change database credentials, update `DATABASE_URI` accordingly.
-- Static assets live under `public/`. Media uploaded via the CMS will be stored where your Payload storage is configured.
+A kiírt oszlopok sorrendje: `Beküldve, Név, E-mail, Telefon, Egyetem / kar, Szak, Félév, Csoport, Pozíció, Motiváció`.
+
+## Deployment
+
+Docker images are built in GitHub Actions and published to GitHub Container Registry. The VPS only pulls an immutable image, runs the environment-specific Payload migrations, and recreates the application container without building source code.
+
+- Pushes to `staging` deploy automatically to the isolated staging Compose project.
+- Production is started manually from the `main` branch and is protected by the GitHub `Production` environment.
+- Production deployments create a PostgreSQL backup before migrations.
+- Failed application health checks restore the previous application image. Database migrations are never rolled back automatically.
+
+See [docs/deployment.md](docs/deployment.md) for environment setup, required secrets and variables, first deployment, verification, and rollback instructions. The older [preview runbook](docs/preview.md) remains available as a manual fallback.
## What this site includes
@@ -129,3 +150,36 @@ If you encounter `ERR_UNKNOWN_FILE_EXTENSION` errors with CSS files, ensure you
- Theming and reusable UI components
If you have questions or want to contribute, feel free to open an issue or PR.
+
+### Szerkeszthető űrlap és önéletrajzok
+
+A **Karrier oldal → Űrlap kérdései** fülön szerkeszthetők a magyar/angol feliratok,
+segédszövegek, sorrend, kötelezőség és láthatóság. Új kérdésként rövid vagy hosszú
+szöveg, egy- vagy többválasztós mező és jelölőnégyzet adható hozzá. A név, e-mail
+és hozzájárulás kötelező; a csoport és pozíció mező megőrzi az automatikus kitöltést.
+A hozzájárulás mindig az űrlap végén jelenik meg. A kérdés- és opcióazonosítók
+állandók. A jelentkezések a beküldéskori kérdéseket, opciókat és válaszokat is tárolják.
+Ha kitöltés közben módosul az űrlap, a beküldés frissíti a kérdéseket és újraellenőrzést
+kér, miközben a beírt válaszok és a kiválasztott CV megmaradnak.
+
+Az opcionális CV egy érvényes, nem titkosított PDF lehet, maximum **5 MiB**.
+A fájl a privát `application-cvs` kollekcióba kerül, csak bejelentkezett admin
+olvashatja vagy töltheti le. A jelentkezés törlése a hozzá tartozó fájlt is törli.
+A nyilvános médiatárba nem kerül önéletrajz. Helyi tárolási útvonal:
+`private/cvs`; a `CV_STORAGE_DIR` változóval felülírható. Dockerben külön,
+környezetenként elkülönített `applicant_cvs` kötet tárolja a fájlokat.
+
+Állítsd be a **`NEXT_PUBLIC_SERVER_URL`** változót az adott környezet nyilvános
+HTTPS címére (helyben például `http://localhost:3107`). A Google-táblázat a
+korábbi tíz oszlop után a **További válaszok** és **Jelentkezés az adminban**
+oszlopokat kapja. A második linkről adminbelépés után tölthető le a CV.
+Ha a K–L oszlopban már saját adatok vannak, az export hibát jelez, és nem írja
+felül őket: előbb helyezd át ezeket, majd használd az újraszinkronizálás gombot.
+A jelentkezés és CV táblázathiba esetén is megmarad.
+
+A **Kapcsolat** bejegyzésben szerkeszthető a kiállítási gomb HTTPS linkje és
+magyar/angol felirata. Üres linknél a gomb nem jelenik meg. Ezeket a beállításokat
+csak bejelentkezett admin módosíthatja.
+
+Ellenőrzések: `yarn test:career`, `yarn tsc --noEmit`, `yarn eslint <érintett fájlok>`.
+Adatbázis-frissítés: `yarn payload:migrate`; generált típusok: `yarn payload:generate-types`.
diff --git a/docker-compose.preview.yml b/docker-compose.preview.yml
new file mode 100644
index 0000000..c0985bd
--- /dev/null
+++ b/docker-compose.preview.yml
@@ -0,0 +1,10 @@
+services:
+ postgres:
+ env_file: !override
+ - .env.preview
+
+ app:
+ ports: !override
+ - "127.0.0.1:3001:3000"
+ env_file: !override
+ - .env.preview
diff --git a/docker-compose.staging.yml b/docker-compose.staging.yml
new file mode 100644
index 0000000..36454fa
--- /dev/null
+++ b/docker-compose.staging.yml
@@ -0,0 +1,10 @@
+services:
+ postgres:
+ env_file: !override
+ - ${APP_ENV_FILE:-.env.staging}
+
+ app:
+ ports: !override
+ - "127.0.0.1:3001:3000"
+ env_file: !override
+ - ${APP_ENV_FILE:-.env.staging}
diff --git a/docker-compose.yml b/docker-compose.yml
index 5dd8a65..1f00a6b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,11 +5,11 @@ services:
volumes:
- postgres:/var/lib/postgresql/data
env_file:
- - .env
+ - ${APP_ENV_FILE:-.env}
networks:
- postgres
healthcheck:
- test: [ "CMD-SHELL", "pg_isready -U $POSTGRES_USER -d $POSTGRES_DB" ]
+ test: [ "CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB" ]
interval: 1s
timeout: 10s
start_period: 10s
@@ -17,25 +17,38 @@ services:
app:
restart: always
+ image: ${FRT_APP_IMAGE:-frt-app:local}
ports:
- - "3000:3000"
+ - "127.0.0.1:3000:3000"
build:
context: .
dockerfile: Dockerfile
volumes:
- frt:/app/media
+ - applicant_cvs:/app/private/cvs
- ./public/videos:/app/public/videos
depends_on:
postgres:
condition: service_healthy
env_file:
- - .env
+ - ${APP_ENV_FILE:-.env}
networks:
- postgres
+ healthcheck:
+ test:
+ - CMD
+ - node
+ - -e
+ - fetch('http://127.0.0.1:3000/api/health').then((response) => { if (!response.ok) process.exit(1) }).catch(() => process.exit(1))
+ interval: 10s
+ timeout: 5s
+ start_period: 30s
+ retries: 6
volumes:
postgres:
frt:
+ applicant_cvs:
networks:
postgres:
diff --git a/docs/career-content-transfer.md b/docs/career-content-transfer.md
new file mode 100644
index 0000000..c7a4e2b
--- /dev/null
+++ b/docs/career-content-transfer.md
@@ -0,0 +1,245 @@
+# Karriertartalom átvitele
+
+A `scripts/career-transfer.mjs` kizárólag elkülönített helyi próbához készült.
+A `127.0.0.1:55441` címen futó PostgreSQL-konténert használja; a staging
+másolatából olvas, és csak a `frt_transfer_candidate` adatbázisba importál.
+Éles adatbázist ez a helyi futtató nem fogad el. A Docker-image külön
+`scripts/career-transfer-server.mjs` futtatót tartalmaz a szerveres végrehajtáshoz.
+
+## Adatmodell és hatókör
+
+- `recruitment`: meglévő csoportok frissítése explicit staging → production
+ összerendeléssel, a production csoportazonosítók megtartásával.
+- A csoporton belüli pozíciók és szekciók a staging listáját veszik át;
+ a korábbi production pozíciólista nem adódik hozzá automatikusan.
+- `career-settings`: minden tartalmi mező és jelentkezési beállítás a stagingből.
+- A hivatkozott képfájlok és médiarekordok. Egyező fájlnév, SHA-256 és alt esetén
+ meglévő rekordot használ; egyébként tartalomlenyomatot tartalmazó néven tölt fel.
+- A jelentkezések, CV-k, felhasználók, más oldaltartalmak és meglévő médiarekordok
+ nem módosulnak. Nincs teljes adatbáziscsere vagy SQL-adatdump összeolvasztás.
+
+Az `applicationMode`, `applicationsOpen`, `spreadsheetUrl` és `googleFormUrl`
+értékeit is a staging határozza meg, a felhasználó döntése alapján.
+A stagingben megadott Google-táblázat lesz az átvett cél; az üres mezők is
+felülírják a korábbi célértékeket. Az integráció hitelesítési adatai továbbra
+is a célkörnyezet konfigurációjából származnak, az import ezeket nem másolja.
+
+## A próba környezete
+
+Az adatokat és naplókat az ignorált, 700-as jogosultságú `.local-verification/`
+könyvtárban tároljuk. Ne commitold, és ne tedd publikus helyre a dumpokat,
+exportokat, archívumokat vagy hitelesítési adatokat.
+
+Előfeltétel: a projekt függőségei, Docker, Python 3 és a két ellenőrzött
+PostgreSQL 17 dump, valamint a production/staging fájlarchívum.
+
+A jelenlegi helyi konténer neve `frt-career-transfer-db`, image-e
+`postgres:17-alpine`, kötete `frt-career-transfer-pg`, portja `127.0.0.1:55441`.
+A `.local-verification/postgres.env` helyben generált hitelesítési adatokat
+tartalmaz: `POSTGRES_USER`, `POSTGRES_PASSWORD`, `POSTGRES_DB`.
+
+A három adatbázis szerepe:
+
+| Adatbázis | Szerep |
+| --- | --- |
+| `frt_transfer_prod` | Production dump változatlan helyreállítása |
+| `frt_transfer_staging` | Staging dump helyreállítása, export forrása |
+| `frt_transfer_candidate` | Production másolata, migráció és próbaimport célja |
+
+A restore `pg_restore --no-owner --no-acl --exit-on-error --single-transaction`
+opciókkal történt, új, üres adatbázisokba. A candidate a helyreállított
+production adatbázisból `createdb --template` segítségével készült.
+
+## Futtatás
+
+Mindig a worktree gyökeréből futtasd. A parancsok nem töltik be a projekt
+`.env` fájljait: a wrapper csak a helyi PostgreSQL-jelszót és minimális
+környezeti változókat ad át. E-mail küldése és külső `fetch` tiltott.
+
+```bash
+node scripts/career-transfer.mjs frt_transfer_staging export
+node scripts/career-transfer.mjs frt_transfer_candidate migrate
+node scripts/career-transfer.mjs frt_transfer_candidate export
+```
+
+Ha a dump `dev` migrációjelölőt tartalmaz, a Payload megerősítést kér.
+A meglévő próbában a hat hiányzó migráció sikeresen lefutott, a forrásdumpok
+változatlanok maradtak. Éles migrációt csak friss mentés és az aktuális
+adatbázisséma ellenőrzése után végezz.
+
+A `prepare-career-bundle` csak a hivatkozott képeket és az egyező nevű
+production képeket bontja ki. Videókat és CV-ket nem másol. A fájlok
+méretét a dumpban tárolt mérettel is összeveti. Meglévő fájlt nem ír felül;
+új forráscsomaghoz új próbaterületet használj.
+
+```bash
+node scripts/prepare-career-bundle.mjs /abs/staging-files.tar.gz /abs/prod-files.tar.gz
+```
+
+A `.local-verification/group-mapping.json` fájl minden forráscsoporthoz egy
+rekordot tartalmaz: `sourceID`, `sourceName`, `targetID`, `targetName`.
+Hiányzó, ismétlődő vagy név alapján már nem egyező összerendelés hibát okoz.
+A mostani konkrét megfeleltetés és változáslista a helyi `rehearsal-report.md`
+fájlban és az `import-plan-first.json` tervben szerepel.
+
+```bash
+node scripts/career-transfer.mjs frt_transfer_candidate audit audit-before.json
+node scripts/career-transfer.mjs frt_transfer_candidate plan
+# Az import-plan.json ellenőrzése után, kizárólag a helyi másolaton:
+node scripts/career-transfer.mjs frt_transfer_candidate apply
+node scripts/career-transfer.mjs frt_transfer_candidate audit audit-after.json
+```
+
+A terv SHA-256-tal rögzíti a forráscsomagot, az összerendelést és a célállapotot.
+Az apply egy PostgreSQL-tranzakcióban zárolja az érintett táblákat, újraellenőrzi
+a tervet, végrehajtja az importot, és összehasonlítja az eredményt a forrással.
+Validációs hibánál visszagörget és eltávolítja az újonnan írt képfájlokat.
+Bizonytalan COMMIT-válasznál a fájlokat megőrzi, a napló `commit-uncertain`
+állapotot kap: ilyen esetben adatbázis-ellenőrzés szükséges újrafuttatás előtt.
+
+Ismételt futtatáshoz készíts új tervet. Változatlan forrás és cél esetén ez
+nulla módosítást tartalmaz. A régi, import előtti tervet az apply elutasítja.
+
+```bash
+yarn test:career-transfer
+node scripts/career-transfer.mjs frt_transfer_candidate verify-guards
+```
+
+A guard-próba helyi tesztképet hoz létre, majd szándékosan hibás utolsó
+csoporttal teszteli a korábbi módosítások visszagörgetését és a fájltakarítást.
+A PostgreSQL sequence számlálója visszagörgetés után is előreléphet;
+az adatrekordok és fájlok ellenőrzötten változatlanok maradnak.
+
+## Éles kiadás előtt
+
+1. Ellenőrizni kell, változott-e a staging tartalma vagy a production adatbázis
+ a használt snapshotok óta; eltérés esetén friss export és új terv kell.
+2. A pozíciólista és a karrierbeállítások staging szerinti átvétele jóváhagyott.
+3. Ellenőrizni kell, hogy a production szolgáltatásfiók hozzáfér-e az átvett
+ Google-táblázathoz. A tartalmi célértékekről nem szükséges újabb döntés.
+4. Productionben az új CV-funkcióhoz csatolni kell az `applicant_cvs` kötetet.
+5. Rövid írásszünet alatt friss, összehangolt adatbázis- és fájlmentés kell.
+6. A jóváhagyott kódot migrációkkal ki kell adni, majd az alábbi szerveres
+ importtal átvinni ugyanazt az ellenőrzött tartalomcsomagot.
+7. Magyar/angol oldal, képek, űrlap és az integráció beállításainak ellenőrzése.
+
+A kód kiadása és a tartalom importálása külön művelet. Az importáló nem
+indít deployt; adatot kizárólag az explicit `apply` parancs módosít.
+
+## Docker-csomagolás és szerveres futtató
+
+A Docker build a `build:career-transfer` scripttel előre lefordítja az importot.
+A `career-transfer-runner` stage tartalmazza a Linuxos függőségeket, a pontos
+Payload-konfigurációt, migrációkat és az importot; a teljes alkalmazás `runner`
+stage-e erre épül. A szerveren az import nem telepít függőséget és nem fordít.
+Az image nem tartalmaz feltöltött médiát, CV-ket, mentéseket vagy exportcsomagot.
+
+```bash
+docker build --target career-transfer-runner -t frt-career-transfer:local .
+docker build -t frt-app:career-transfer-local .
+```
+
+A szerveres futtató két parancsot fogad: `plan` és `apply`. Nem futtat automatikus
+migrációt. Hiányzó migráció esetén leáll, mielőtt importtervet vagy adatot írna.
+A konfiguráció környezeti változóiból csak az adatbáziskapcsolatot, a Payload
+titkot és az alkalmazás címét adja át. Google- és e-mail-hitelesítési adatok
+nem jutnak az importfolyamatba; külső `fetch` és e-mail-küldés tiltott.
+
+Minden szerveres terv tartalmazza a környezetet, az alkalmazás originjét, az
+adatbázis nevét, hostját, szerepkörét és az elért PostgreSQL-szerver címét.
+Az apply újra ellenőrzi ezt az azonosítást, a forráscsomagot, a képfájlokat és
+a céladatokat. A helyi próbában készült tervet ezért nem lehet productionben
+alkalmazni: ott új, csak olvasást végző `plan` futtatás szükséges.
+
+### Átadandó fájlok
+
+A megerősített exportcsomagot a szerverre másold egy korlátozott jogosultságú
+könyvtárba, például `/home/frt/imports/career-20260907` alá:
+
+```text
+career-20260907/
+ bundle/
+ bundle.json
+ media/ # csak a 9 hivatkozott kép
+ group-mapping.json
+```
+
+Ne másold ide a teljes média- és videóarchívumokat. A csomag kb. 77 MB képet
+tartalmaz; a mentések továbbra is külön visszaállítási tartalékok.
+Az importtervek és futási naplók ugyanebbe a könyvtárba kerülhetnek.
+
+### Terv készítése a production környezetben
+
+Előfeltétel: az új kód Docker-image-e már ki van adva, a migrációk lefutottak,
+a production média- és CV-kötetek csatolva vannak. A használt image-et a
+`/home/frt/frt/.env.deploy` rögzíti. A lent megadott könyvtárak a szerveren
+ellenőrzött elrendezést használják, nem a régebbi `/srv` példákat.
+
+Először csak az alkalmazás originjét és az adatbázis nevét ellenőrizd,
+hitelesítési adatok kiírása nélkül:
+
+```bash
+docker exec frt-app-1 node -e '
+ const db = new URL(process.env.DATABASE_URI);
+ console.log(JSON.stringify({
+ origin: new URL(process.env.NEXT_PUBLIC_SERVER_URL).origin,
+ database: decodeURIComponent(db.pathname.slice(1))
+ }));
+'
+```
+
+Az alábbi parancsokban az `EXPECTED_ORIGIN` értékét erre az ellenőrzött címre
+állítsd. A `frt` adatbázisnévnek szintén egyeznie kell a fenti eredménnyel.
+Az írások legyenek szüneteltetve a friss mentéstől az import ellenőrzéséig.
+
+```bash
+cd /home/frt/frt
+EXPECTED_ORIGIN='https://AZ-ELLENORZOTT-PRODUCTION-DOMAIN'
+TRANSFER_DIR=/home/frt/imports/career-20260907
+
+docker compose --env-file .env.deploy -p frt -f docker-compose.yml \
+ run --rm -T --no-deps --pull never \
+ -v "$TRANSFER_DIR:/transfer" --entrypoint node app \
+ scripts/career-transfer-server.mjs plan \
+ --environment production --expect-database frt \
+ --expect-origin "$EXPECTED_ORIGIN" \
+ --bundle /transfer/bundle/bundle.json \
+ --mapping /transfer/group-mapping.json \
+ --out /transfer/production-plan.json
+```
+
+Ellenőrizd a kiírt célt, változásszámokat és a tervet. A staging tartalom a
+mérvadó, de váratlan célállapot esetén ne kerüld meg a terv ellenőrzését.
+
+### Az ellenőrzött terv alkalmazása
+
+Az `APPROVED_PLAN_SHA256` változóba az előző parancs által kiírt, ellenőrzött
+terv pontos `sha256` értékét másold. Ez a terv JSON-tartalmának lenyomata,
+nem a formázott JSON-fájl `sha256sum` eredménye.
+
+```bash
+APPROVED_PLAN_SHA256='AZ-ELLENORZOTT-TERV-64-KARAKTERES-LENYOMATA'
+
+docker compose --env-file .env.deploy -p frt -f docker-compose.yml \
+ run --rm -T --no-deps --pull never \
+ -v "$TRANSFER_DIR:/transfer" --entrypoint node app \
+ scripts/career-transfer-server.mjs apply \
+ --environment production --expect-database frt \
+ --expect-origin "$EXPECTED_ORIGIN" \
+ --bundle /transfer/bundle/bundle.json \
+ --mapping /transfer/group-mapping.json \
+ --plan /transfer/production-plan.json \
+ --plan-sha256 "$APPROVED_PLAN_SHA256" \
+ --receipt /transfer/production-receipt.json
+```
+
+A sikeres napló státusza `committed`. `prepared`, `pending-commit` vagy
+`commit-uncertain` státusz esetén előbb ellenőrizni kell az adatbázis aktuális
+állapotát és a folyamatot; ne feltételezz automatikus visszagörgetést.
+`failed-before-commit` esetén a futtató a commit előtti hibát jelezte.
+A futtató nem ír felül meglévő tervet vagy naplót. Új próbához új fájlnév kell.
+
+Siker után új `plan` futtatás külön fájlba nulla csoportmódosítást, nulla új
+médiát és változatlan globális beállításokat kell mutasson. Ellenőrizd a
+magyar és angol oldalt, az űrlapot és a production szolgáltatásfiók táblázat-
+hozzáférését, majd oldd fel az írásszünetet. Az import nem küld tesztjelentkezést.
diff --git a/docs/deployment.md b/docs/deployment.md
new file mode 100644
index 0000000..3a0bd14
--- /dev/null
+++ b/docs/deployment.md
@@ -0,0 +1,215 @@
+# GHCR-alapú staging és production deployment
+
+Az alkalmazás Docker image-e GitHub Actionsben épül, majd a GitHub Container Registrybe kerül. A VPS nem buildel forráskódot: az immutable image digestet lehúzza, lefuttatja az adott környezet migrációit, és `--no-build` módban újraindítja az alkalmazást.
+
+## Környezetek
+
+| Beállítás | Staging | Production |
+| --- | --- | --- |
+| Git ág / indítás | push a `staging` ágra | kézi `workflow_dispatch` a `main` ágról |
+| GitHub Environment | `Staging` | `Production` |
+| Compose projekt | `frt-preview` | `frt` |
+| VPS könyvtár | `/srv/frt-preview` | `/srv/frt` |
+| App env fájl | `.env.preview` | `.env` |
+| Host health URL | `http://127.0.0.1:3001/api/health` | `http://127.0.0.1:3000/api/health` |
+| PostgreSQL és media volume | staging-specifikus | production-specifikus |
+| Adatbázis-backup migráció előtt | nem | igen |
+
+A Compose projektnevek külön volume-okat és hálózatokat hoznak létre. A workflow soha ne használja a staging projektnevet production env fájllal vagy fordítva.
+
+## Workflow-k
+
+### Pull request CI
+
+A `.github/workflows/ci.yml` a `main` vagy `staging` célágú pull requesteken futtatja:
+
+1. a függőségek reprodukálható telepítését;
+2. az ESLint ellenőrzést;
+3. a TypeScript ellenőrzést;
+4. a teljes production Docker image buildet, publikálás nélkül.
+
+### Image build és deployment
+
+A `.github/workflows/release.yml` két módon indul:
+
+- `staging` push: automatikus staging build és deployment;
+- kézi indítás: kizárólag a `main` ágról engedélyezett production build és deployment.
+
+A workflow Buildxszel a repository `IMAGE_PLATFORM` változójában megadott platformra épít image-et, BuildKit cache-t használ, majd SHA taget, környezeti aliast és immutable digestet publikál a `ghcr.io/kir-dev/frt` package-be. A VPS mindig a digestet kapja, nem a változó `staging` vagy `production` taget. Az alapértelmezett és jelenleg beállított platform `linux/amd64`.
+
+A build job írási, a deploy job csak olvasási package-jogot kap. A staging és production release-ek ugyanazon VPS Docker hitelesítését használhatják, ezért a workflow sorosítja őket.
+
+Ha a VPS ARM64 architektúrájú, az `IMAGE_PLATFORM` repository változót `linux/arm64`-re vagy többplatformos értékre kell módosítani az első release előtt. Ellenőrzés:
+
+```bash
+uname -m
+```
+
+## GitHub Environments beállítása
+
+A repository **Settings → Environments** oldalán legyen `Staging` és `Production` environment.
+
+Mindkettőben szükségesek ezek a secretek:
+
+| Secret | Tartalom |
+| --- | --- |
+| `VPS_HOST` | A VPS DNS-neve vagy IP-címe |
+| `VPS_USER` | Nem root deploy felhasználó, Docker jogosultsággal |
+| `SSH_PRIVATE_KEY` | Külön CI deploy kulcs privát része |
+| `SSH_KNOWN_HOSTS` | A VPS ellenőrzött SSH host kulcsa |
+
+Az SSH host kulcs fingerprintjét külön, megbízható csatornán ellenőrizd. A workflow `StrictHostKeyChecking=yes` beállítást használ, ezért ismeretlen host kulcsot nem fogad el.
+
+### Staging változók
+
+| Variable | Javasolt érték |
+| --- | --- |
+| `DEPLOY_PATH` | `/srv/frt-preview` |
+| `COMPOSE_PROJECT` | `frt-preview` |
+| `APP_ENV_FILE` | `.env.preview` |
+| `HEALTH_URL` | `http://127.0.0.1:3001/api/health` |
+| `PUBLIC_URL` | a staging publikus URL-je |
+
+### Production változók
+
+| Variable | Javasolt érték |
+| --- | --- |
+| `DEPLOY_PATH` | `/srv/frt` |
+| `COMPOSE_PROJECT` | `frt` |
+| `APP_ENV_FILE` | `.env` |
+| `HEALTH_URL` | `http://127.0.0.1:3000/api/health` |
+| `PUBLIC_URL` | a production publikus URL-je |
+
+A `Production` environmenthez állíts be required reviewert és csak a `main` ágat engedélyezd deployment branchként. A kézi workflow-indítás mellett ez egy második jóváhagyási kapu.
+
+## VPS egyszeri előkészítése
+
+Előfeltételek:
+
+- Docker Engine és Docker Compose 2.24.4 vagy újabb;
+- `curl`;
+- egy nem root deploy felhasználó, amely hozzáfér a Docker sockethez;
+- a deploy felhasználó SSH publikus kulcsa az `authorized_keys` fájlban;
+- környezetenként külön könyvtár, env fájl, adatbázis és media volume.
+
+Könyvtárak:
+
+```bash
+sudo install -d -o -g /srv/frt /srv/frt-preview
+sudo install -d -o -g /srv/frt/public/videos /srv/frt-preview/public/videos
+```
+
+A production `/srv/frt/.env` és staging `/srv/frt-preview/.env.preview` fájlokat kézzel kell létrehozni, `chmod 600` jogosultsággal. A `DATABASE_URI` hostja mindkét fájlban `postgres` legyen, és a két környezet külön `PAYLOAD_SECRET` értéket használjon.
+
+A workflow minden release-nél feltölti a Compose fájlokat és a `scripts/deploy-image.sh` scriptet, de az env fájlokat, médiát és videókat nem írja felül.
+
+## Deployment sorrend
+
+A remote deploy script:
+
+1. ellenőrzi a kapott image-, projekt-, env- és health paramétereket;
+2. eltárolja a jelenlegi app image referenciáját rollbackhez;
+3. lehúzza az új GHCR image digestet;
+4. elindítja és megvárja a környezet PostgreSQL konténerét;
+5. productionben timestampelt custom-format `pg_dump` mentést készít a `backups/` könyvtárba;
+6. egyszer használatos új app konténerből lefuttatja a Payload migrációkat;
+7. `docker compose up --no-build` paranccsal elindítja az új appot;
+8. ellenőrzi a Docker healthchecket és a host `HEALTH_URL` végpontot;
+9. siker esetén `.env.deploy` fájlban rögzíti az aktív immutable image referenciát.
+
+A backup fájlok automatikus törlése szándékosan nincs bekapcsolva. Állíts be külön, ellenőrzött retention szabályt, miután a rendelkezésre álló VPS tárhely és a szükséges megőrzési idő ismert.
+
+## Health check
+
+Az `/api/health` a Next.js folyamat mellett egy minimális Payload lekérdezéssel az adatbázis-kapcsolatot is ellenőrzi:
+
+- `200 {"status":"ok"}`: az alkalmazás és az adatbázis elérhető;
+- `503 {"status":"unhealthy"}`: a Payload inicializáció vagy az adatbázis-lekérdezés hibázott.
+
+A válasz nem tartalmaz belső hibarészleteket, és `Cache-Control: no-store` fejlécet kap.
+
+## Első staging release
+
+1. Készítsd elő `/srv/frt-preview/.env.preview` fájlt és a staging adatokat a `docs/preview.md` alapján.
+2. Állítsd be a `Staging` GitHub environment secretjeit és változóit.
+3. Merge-eld a pipeline változásait a `staging` ágba.
+4. Kövesd a **Build and deploy** workflow-t.
+5. Ellenőrizd:
+
+```bash
+cd /srv/frt-preview
+docker compose --env-file .env.deploy -p frt-preview \
+ -f docker-compose.yml -f docker-compose.staging.yml ps
+curl --fail http://127.0.0.1:3001/api/health
+```
+
+## Production release
+
+1. A staging release és az alkalmazásszintű smoke tesztek legyenek sikeresek.
+2. Merge-eld a kiadandó kódot a `main` ágba.
+3. GitHub Actions → **Build and deploy** → **Run workflow**.
+4. Branchként kötelezően a `main` ágat válaszd.
+5. Hagyd jóvá a `Production` environment deploymentet.
+6. Siker után ellenőrizd az alkalmazást és a `backups/` könyvtárban létrejött adatbázismentést.
+
+## Rollback
+
+Ha az új app nem indul el vagy a health check hibázik, a script visszaindítja az előző application image-et. Az új migrációkat nem vonja vissza.
+
+Kézi application rollbackhez írd az előző digestet a `.env.deploy` `FRT_APP_IMAGE` értékébe, majd:
+
+```bash
+docker compose --env-file .env.deploy -p \
+ -f docker-compose.yml [-f docker-compose.staging.yml] \
+ up -d --no-build --pull never --wait app
+```
+
+Adatbázis-visszaállítást csak külön jóváhagyással és a mentés ellenőrzése után végezz. Egy hibás application release önmagában nem indokol automatikus production adatbázis-restore-t.
+
+## Manuális fallback
+
+Ha a GitHub Actions átmenetileg nem elérhető, egy már publikált digest a VPS-en kézzel is telepíthető:
+
+```bash
+cd /srv/frt-preview
+./scripts/deploy-image.sh \
+ 'ghcr.io/kir-dev/frt@sha256:' \
+ frt-preview \
+ .env.preview \
+ http://127.0.0.1:3001/api/health \
+ false \
+ docker-compose.staging.yml
+```
+
+Ez sem végez helyi Docker buildet.
+
+## Privát önéletrajzok mentése és helyreállítása
+
+A Compose `applicant_cvs` kötete az `/app/private/cvs` könyvtárra csatlakozik.
+A staging és production külön Compose projektnevét továbbra is kötelező használni.
+A helyi CV-ket és tesztadatokat a Docker build és a Git figyelmen kívül hagyja.
+A `NEXT_PUBLIC_SERVER_URL` az adott környezet publikus címe legyen, hogy a
+Google-táblázatban szereplő adminhivatkozások teljes URL-ek legyenek.
+
+A production telepítési script az adatbázismentés mellé `postgres--cvs.tar.gz`
+fájlt is készít. Sikertelen fájlmentés esetén a migráció nem indul el. Mindkét
+mentés személyes adatokat tartalmazhat; a script 600-as fájljogosultságot állít be.
+Az adatbázis és a CV-archívum együtt kezelendő. Konzisztens kézi mentéshez és
+helyreállításhoz állítsd le az alkalmazás írásait/alkalmazáskonténerét.
+
+Helyreállítás próbája kizárólag elkülönített környezetben:
+
+1. Az adatbázis dumpját állítsd vissza egy külön PostgreSQL-adatbázisba.
+2. Az azonos időpontú archívumot bontsd ki az elkülönített privát kötetbe
+ (`tar -xzf -C `; az archívumban `cvs/` szerepel).
+3. Indítsd el az alkalmazást ezzel az adatbázissal és `CV_STORAGE_DIR` útvonallal.
+4. Adminbelépéssel tölts le egy önéletrajzot, és hasonlítsd össze az eredeti
+ SHA-256 lenyomatával. Belépés nélkül ugyanez a URL legyen elutasítva.
+5. Újraindítás után ismételd meg a letöltést. Az eredeti környezetet a próba nem módosíthatja.
+
+A korábbi migrációs snapshotok már tartalmazták a Kapcsolat-táblát, de az
+üres adatbázist felépítő migrációs lánc nem. A `contact_baseline` migráció ezt
+`IF NOT EXISTS` műveletekkel pótolja, meglévő kapcsolati adatok megőrzésével.
+Visszavonása szándékosan nem törli a táblát. A következő migráció az új kérdéseket,
+CV-kapcsolatot és kiállítási gombmezőket adja hozzá; éles adatokat tartalmazó
+adatbázison visszavonás helyett előre javító migrációt használj.
diff --git a/docs/preview.md b/docs/preview.md
new file mode 100644
index 0000000..688e441
--- /dev/null
+++ b/docs/preview.md
@@ -0,0 +1,269 @@
+# VPS preview környezet
+
+Ez a runbook a `feat/karrier-oldal` ág megrendelői előnézetét indítja el úgy, hogy a preview saját Compose projektet, PostgreSQL volume-ot, media volume-ot, hálózatot és host portot használ.
+
+## Izoláció
+
+| Erőforrás | Production | Preview |
+| --- | --- | --- |
+| Compose projekt | `frt` | `frt-preview` |
+| PostgreSQL volume | `frt_postgres` | `frt-preview_postgres` |
+| Media volume | `frt_frt` | `frt-preview_frt` |
+| App port | `127.0.0.1:3000` / jelenlegi prod beállítás | `127.0.0.1:3001` |
+| Környezeti fájl | `.env` | `.env.preview` |
+
+Az override a Compose `!override` tagjával lecseréli a base fájl `ports` és `env_file` listáit. Ehhez Docker Compose **2.24.4 vagy újabb** szükséges.
+
+> A preview parancsokból soha ne hagyd el a `-p frt-preview` és a két `-f` kapcsolót. A migrációkat kizárólag a `frt-preview` projekt app konténerében futtasd.
+
+## 1. Előkészítés
+
+A preview-nak külön checkoutot vagy worktree-t használj; ne válts feature ágra a production checkoutban.
+
+```bash
+cd /srv/frt-preview
+git fetch origin
+git switch feat/karrier-oldal
+git pull --ff-only origin feat/karrier-oldal
+docker compose version
+```
+
+Másold át a production `.env` fájlt `.env.preview` néven, majd adj neki új `PAYLOAD_SECRET` értéket:
+
+```bash
+cp /srv/frt/.env .env.preview
+chmod 600 .env.preview
+openssl rand -hex 32
+```
+
+A generált értéket kézzel írd be a `.env.preview` `PAYLOAD_SECRET` mezőjébe. Ellenőrizd még ezeket:
+
+- a `DATABASE_URI` hostja `postgres` legyen (például `postgres://user:password@postgres:5432/frt`), és ne production IP vagy külső adatbázis-host;
+- a `POSTGRES_USER`, `POSTGRES_PASSWORD` és `POSTGRES_DB` egyezzen a `DATABASE_URI` adataival;
+- a fájl ne kerüljön Gitbe vagy Docker build contextbe (`.env*` mindkét helyen ignorálva van);
+- a Google service account adatai maradhatnak, de az adatbázisban tárolt táblázatlinket később teszt-táblázatra kell átállítani.
+
+Ellenőrizd a konfigurációt anélkül, hogy kiíratnád a secreteket:
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ config --quiet
+```
+
+## 2. Preview adatbázis létrehozása és a production tartalom másolása
+
+Először csak a preview PostgreSQL-t indítsd el. Így az app nem kezd el dolgozni az üres adatbázison a mentés visszatöltése előtt.
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ up -d postgres
+```
+
+Készíts logikai mentést a production adatbázisról. A következő parancs a production konténer saját env változóit használja, ezért nem kell jelszót vagy adatbázisnevet a shellbe másolni:
+
+```bash
+docker compose -p frt -f /srv/frt/docker-compose.yml exec -T postgres \
+ sh -c 'pg_dump --no-owner --no-acl -U "$POSTGRES_USER" "$POSTGRES_DB"' \
+ > /tmp/frt-prod.sql
+```
+
+Töltsd vissza a mentést a még üres preview adatbázisba. Az `ON_ERROR_STOP` miatt az első SQL-hibánál leáll a folyamat.
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ exec -T postgres \
+ sh -c 'psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" "$POSTGRES_DB"' \
+ < /tmp/frt-prod.sql
+```
+
+Sikeres visszatöltés után törölhető az ideiglenes SQL-fájl:
+
+```bash
+rm /tmp/frt-prod.sql
+```
+
+## 3. Build és preview migrációk
+
+Építsd meg a feature ág app image-ét, majd egy egyszer használatos preview app konténerből futtasd a migrációkat. Ez még nem publikál portot.
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ build app
+
+echo y | docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ run --rm -T app yarn payload:migrate
+```
+
+Ez a `frt-preview_postgres` volume adatbázisát módosítja. A production adatbázison nem fut migráció.
+
+Ezután indítsd el a preview appot:
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ up -d app
+```
+
+## 4. Feltöltött média másolása
+
+A media a preview saját `frt-preview_frt` volume-jába kerül. A másolást csak az app indulása után végezd el, hogy a célkonténer és a volume már létezzen.
+
+```bash
+FRT_PREVIEW_MEDIA_TMP="$(mktemp -d /tmp/frt-preview-media.XXXXXX)"
+docker cp frt-app-1:/app/media/. "$FRT_PREVIEW_MEDIA_TMP/"
+docker cp "$FRT_PREVIEW_MEDIA_TMP/." frt-preview-app-1:/app/media
+rm -rf "$FRT_PREVIEW_MEDIA_TMP"
+```
+
+Ha a production Compose projekt- vagy szolgáltatásneve eltér, a tényleges konténernevet a `docker compose -p frt ps` paranccsal keresd meg.
+
+## 5. Ellenőrzés a VPS-en
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ ps
+
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ logs --tail=100 app postgres
+
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ exec -T app yarn payload:migrate-status
+
+curl --fail --head http://127.0.0.1:3001/karrier
+docker volume ls --filter name=frt-preview
+docker network ls --filter name=frt-preview
+```
+
+Elvárt preview volume-ok: `frt-preview_postgres` és `frt-preview_frt`. A `3001` port csak a VPS localhost interfészén hallgat; kívülről kizárólag nginxen keresztül érhető el.
+
+## 6. nginx, basic auth és TLS
+
+Hozd létre a basic auth jelszófájlt (Debian/Ubuntu esetén a `htpasswd` az `apache2-utils` csomagban van):
+
+```bash
+sudo apt-get install apache2-utils
+sudo htpasswd -c /etc/nginx/.htpasswd-preview frt-preview
+sudo chown root:www-data /etc/nginx/.htpasswd-preview
+sudo chmod 640 /etc/nginx/.htpasswd-preview
+```
+
+Hozd létre az `/etc/nginx/sites-available/frt-preview` fájlt:
+
+```nginx
+server {
+ listen 80;
+ listen [::]:80;
+ server_name preview.frtbme.hu;
+ client_max_body_size 20M;
+
+ auth_basic "FRT preview";
+ auth_basic_user_file /etc/nginx/.htpasswd-preview;
+ add_header X-Robots-Tag "noindex, nofollow" always;
+
+ location / {
+ proxy_pass http://127.0.0.1:3001;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header Host $host;
+ proxy_pass_request_headers on;
+ proxy_redirect http://127.0.0.1:3001 /;
+ }
+}
+```
+
+Engedélyezd és töltsd újra az nginxet:
+
+```bash
+sudo ln -s /etc/nginx/sites-available/frt-preview /etc/nginx/sites-enabled/frt-preview
+sudo nginx -t
+sudo systemctl reload nginx
+```
+
+Miután a `preview.frtbme.hu` DNS A rekordja a VPS-re mutat:
+
+```bash
+sudo certbot --nginx -d preview.frtbme.hu
+sudo nginx -t
+sudo systemctl reload nginx
+```
+
+Külső ellenőrzés:
+
+```bash
+curl -I https://preview.frtbme.hu
+```
+
+A válasznak bejelentkezés nélkül `401 Unauthorized` státuszt és `X-Robots-Tag: noindex, nofollow` fejlécet kell adnia.
+
+## 7. Kötelező alkalmazásszintű ellenőrzések
+
+Mielőtt a linket elküldöd a megrendelőnek:
+
+1. Lépj be a preview Payload adminba a productionból átmásolt felhasználóval.
+2. A **Karrier oldal → Jelentkezés → Google táblázat linkje** mezőt állítsd külön teszt-táblázatra, vagy hagyd üresen.
+3. Ha teszt-táblázatot használsz, oszd meg a `.env.preview` service account e-mail-címével.
+4. Küldj be egy próba jelentkezést, és ellenőrizd a Payload rekordot, valamint a teszt-táblázatot.
+5. Ellenőrizd, hogy a basic auth minden publikus és admin útvonal előtt megjelenik.
+
+Az adatbázis-másolat a production admin felhasználóit és a career settings tartalmát is tartalmazza. Az eltérő `PAYLOAD_SECRET` miatt a production session cookie-k nem használhatók a preview-n, de a megszokott felhasználónév/jelszó igen.
+
+## Leállítás és eltávolítás
+
+Ideiglenes leállítás, az adatok megtartásával:
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ stop
+```
+
+Konténerek és hálózat eltávolítása, a volume-ok megtartásával:
+
+```bash
+docker compose \
+ --env-file .env.preview \
+ -p frt-preview \
+ -f docker-compose.yml \
+ -f docker-compose.preview.yml \
+ down
+```
+
+Csak akkor használd a `down -v` parancsot, ha a preview adatbázisát és feltöltött médiáját is végleg törölni akarod. A `-p frt-preview` ilyenkor különösen fontos.
diff --git a/docs/security-updates.md b/docs/security-updates.md
new file mode 100644
index 0000000..02d0063
--- /dev/null
+++ b/docs/security-updates.md
@@ -0,0 +1,56 @@
+# Biztonsági frissítés – 2026. szeptember 6.
+
+Ág: `feat/security-updates`, a karrierfejlesztésre építve. Az ellenőrzések helyi környezetben történtek; éles rendszert és Google-táblázatot nem módosítottunk.
+
+## Függőségek
+
+- Next.js 15.5.9 → 16.3.4; React és React DOM 19.2.1 → 19.2.8.
+- Payload és minden közvetlen `@payloadcms/*` csomag egységesen 3.88.0. A csomagok verzióját rögzítettük. Az új `@payloadcms/next` peer dependency tartománya nem támogatja a Next.js 15.5 ágat, ezért szükséges a 16-os főverzió.
+- A közvetlenül importált `sharp` most explicit, 0.35.4-es függőség. A nem használt közvetlen `image-size` függőséget eltávolítottuk; az új csomaggráfban a sérülékeny `image-size`, `fast-xml-parser` és `tar` csomag sem szerepel.
+- A lockfile többi csomagját a megadott verziótartományokon belül frissítettük, köztük a Drizzle ORM-et 0.45.2-re.
+- A Drizzle Kit régi `@esbuild-kit/core-utils` függősége esbuild 0.18-at kér. Egy szűk, erre az útvonalra vonatkozó Yarn resolution 0.25.12-re emeli. Ez szándékos kompatibilitási figyelmeztetést okoz telepítéskor; a szinkron/aszinkron TypeScript-fordítást és a Payload migrációgenerálást külön ellenőriztük. Más esbuild-verziót nem ír felül.
+
+## Megmaradó auditjelzés és helyi védelem
+
+Ugyanazzal a `yarn audit --json` ellenőrzéssel, advisory-azonosító szerint összevonva:
+
+| Súlyosság | Frissítés előtt | Frissítés után |
+| --- | ---: | ---: |
+| Kritikus | 2 | 0 |
+| Magas | 71 | 0 |
+| Közepes | 46 | 1 |
+| Alacsony | 11 | 0 |
+
+Az egyetlen megmaradó jelzés a `GHSA-jg8r-5jh2-v2xj`: a Payload alapértelmezett fiókfeloldási jogosultsága. A 3.88.0-s kiadáshoz sincs publikált javítás. A `Users.access.unlock` ezért minden HTTP-kliens számára tiltja a műveletet. A böngészős integrációs ellenőrzés bejelentkezett és névtelen kérésnél is 403 választ igazolt, miközben a normál adminbejelentkezés továbbra is működött. A csomagszintű audit ettől még közepes hibát jelez, és 4-es kilépési kóddal tér vissza; nem rejtettük el a jelzést. A külön feloldási végpont jelenleg nem használható adminból sem.
+
+A GitHub default branchhez tartozó Dependabot-számláló külön mérés: az csak a módosítások integrálása után változhat.
+
+## Kompatibilitás
+
+- A build továbbra is Webpacket használ (`next build --webpack`), így a Next.js 16 alapértelmezett buildeszköz-váltása nem módosítja a csomagolást.
+- A megszűnt `next lint` helyett `eslint .` fut, a Next.js natív flat konfigurációjával. Két új React Compiler-szabály figyelmeztetés marad: a Compiler nincs bekapcsolva, a meglévő komponensek átírása külön feladat. Az összes eddigi lintellenőrzés megmaradt; jelenleg 0 hiba és 9 figyelmeztetés van.
+- A Next.js frissítette a TypeScript JSX-beállítását és a generált route-típusok hivatkozásait. A CI és a release típusellenőrzése előtt `next typegen` fut.
+- A YouTube-képek engedélyezése a régi `images.domains` helyett HTTPS `remotePatterns` beállítást használ.
+
+## Korábbi eseményséma-hiány javítása
+
+A teljes oldalas böngészőteszt kimutatta, hogy a migrációkból felépített helyi adatbázisból hiányzott az események `slug` és `link_to_picture_from_event_id` oszlopa, és a `location` még kötelező volt. Ezek a mezők/beállítások már a frissítés előtti forráskódban és snapshotokban szerepeltek; nem a Payload-frissítés változtatta meg a sémát.
+
+A `20260906_220000_events_baseline` migráció pótolja az oszlopokat, indexeket és a galériahivatkozást, valamint opcionálissá teszi a helyszínt. A meglévő URL-eket megtartja, a hiányzókat egyedi `esemeny-{id}` értékkel tölti ki, ütközés esetén számozással. Visszavonáskor nem töröl felhasználói adatot. A telepítés során a szokásos migrációs lépés szükséges.
+
+## Ellenőrzés
+
+- Production build, típusellenőrzés, lint és 12/12 automatizált jelentkezési teszt sikeres. A CI típusgenerálása és típusellenőrzése külön, `.env` és korábbi `.next` állományok nélküli könyvtárban is sikeres.
+- Látható Chromiumban 13 publikus oldal, adminbejelentkezés és kérdésmentés; pozíció-előtöltés; megváltozott űrlap 409-es kezelése a válaszok és a CV megtartásával; valódi helyi magyar beküldés PDF-fel és angol beküldés PDF nélkül; adminban visszaolvasott válaszok; admin PDF-letöltés és névtelen hozzáférés tiltása. Nem volt JavaScript-oldalhiba. Az ideiglenes kérdést és jelentkezéseket a teszt végén eltávolítottuk.
+- Világos/sötét téma, 1440/390 px, HU/EN: 38 kontraszt- és állapotellenőrzés sikeres, vízszintes túlcsordulás nélkül. A vizsgált szövegek legkisebb kontrasztja 5,34:1.
+- Mobilmenü, témaváltás, helyszín nélküli tesztesemény létrehozása, naptárbejegyzés és eseményrészletező oldal sikeres; a teszteseményt eltávolítottuk.
+- A sikerpipa animációja 440 ms alatt lefut; csökkentett mozgásnál statikusan jelenik meg.
+- Az eseménymigrációt a frissítés előtti adatbázis külön másolatán is kétszer lefuttattuk: a meglévő URL és eseményadat megmaradt, az ütköző generált URL egyedi utótagot kapott.
+- Az audit- és böngészős bizonyítékok helyileg a Gitből kizárt `.local-verification/` könyvtárban találhatók. A tesztek helyi tesztadatokat használtak; a külső szolgáltatások teljes működése és az éles telepítés nem része ennek az ellenőrzésnek.
+
+## Források
+
+- [Next.js augusztusi biztonsági kiadás](https://nextjs.org/blog/august-2026-security-release)
+- [Next.js 16 frissítési útmutató](https://nextjs.org/docs/app/guides/upgrading/version-16)
+- [Payload fiókfeloldási jogosultság](https://github.com/advisories/GHSA-jg8r-5jh2-v2xj)
+- [esbuild fejlesztői szerver](https://github.com/advisories/GHSA-67mh-4wv8-2f99)
diff --git a/eslint.config.mjs b/eslint.config.mjs
index c85fb67..0a7b7a1 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -1,16 +1,30 @@
-import { dirname } from "path";
-import { fileURLToPath } from "url";
-import { FlatCompat } from "@eslint/eslintrc";
-
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = dirname(__filename);
-
-const compat = new FlatCompat({
- baseDirectory: __dirname,
-});
+import nextVitals from "eslint-config-next/core-web-vitals";
+import nextTypescript from "eslint-config-next/typescript";
const eslintConfig = [
- ...compat.extends("next/core-web-vitals", "next/typescript"),
+ {
+ ignores: [
+ ".next/**",
+ "coverage/**",
+ ".local-verification/**",
+ ".career-tests-*/**",
+ "scripts/.career-transfer/**",
+ "private/**",
+ "next-env.d.ts",
+ "node_modules/**",
+ "src/payload-types.ts",
+ ],
+ },
+ ...nextVitals,
+ ...nextTypescript,
+ {
+ // New React Compiler diagnostics stay visible without making this security
+ // upgrade depend on unrelated component rewrites. Compiler is not enabled.
+ rules: {
+ "react-hooks/set-state-in-effect": "warn",
+ "react-hooks/immutability": "warn",
+ },
+ },
];
export default eslintConfig;
diff --git a/karrier-ellenorzes.md b/karrier-ellenorzes.md
new file mode 100644
index 0000000..6f2a9fe
--- /dev/null
+++ b/karrier-ellenorzes.md
@@ -0,0 +1,32 @@
+# Karrierfejlesztés – helyi ellenőrzés
+
+2026. szeptember 6. Helyi alkalmazás: http://127.0.0.1:3107/karrier
+
+- `yarn build`: sikeres (187 másodperc). Két meglévő, az érintett funkcióktól független lintfigyelmeztetés maradt a `car-section.tsx` és `image-gallery.tsx` fájlokban.
+- `yarn tsc --noEmit`: sikeres. Célzott ESLint, `git diff --check`, a telepítési script szintaxisellenőrzése és a staging Compose konfiguráció ellenőrzése sikeres.
+- `yarn test:career`: 12/12 teszt sikeres. Kötelező alapmezők, választós mezők, hosszkorlát, hibás PDF és feltöltési méret, JSON/multipart bemenet, fejlécütközés, szinkronhiba és teljes 12 oszlopos RAW export.
+- Valódi helyi HTTP-próbák: régi JSON beküldés; dinamikus kötelező kérdés és hamis opció; konfigurációváltozás (409); PDF mentés/letöltés; névtelen fájlhozzáférés (403); hiányzó adminjog és hibás kiállítási URL; zárt/külső jelentkezés; honeypot és kéréskorlát (429).
+- Kényszerített adatbázishiba után a feltöltött CV takarítása sikeres. Jelentkezés törlésekor a CV rekordja és fájlja is eltűnik. A konfigurációból törölt kérdés válaszai és eredeti feliratai a korábbi jelentkezésben megmaradnak.
+- Látható Chromium-böngésző: 1440 px asztali, 390 px mobil és 420 px magas képernyő; magyar/angol cím és menü; kilenc csoport; GYIK a jelentkezés előtt; pozíció-előtöltés; HU beküldés CV-vel és EN beküldés CV nélkül. A panel és az első csoport felső éle azonos, a GYIK-ugrás a felső menü alá érkezik. Nem volt JavaScript-oldalhiba.
+- Adminból új, kötelező, kétnyelvű kérdés létrehozása és mentése sikeres. Egy korábban megnyitott űrlap beküldése jelezte a változást, megőrizte a válaszokat és a CV-t; az új kérdés kitöltése után sikeres volt a beküldés. A jelentkezés az adminban CV-vel és olvasható válaszösszesítővel jelenik meg.
+- A buildből indított standalone alkalmazáson az üres GYIK, a zárt/külső jelentkezési mód, a billentyűzetes szakasznavigáció és az újraindítás utáni privát CV-letöltés is sikeresen ellenőrizve.
+- A kiállítási gomb új lapon megnyitotta a megadott Google-űrlapot, címe: „BME FRT - Rendezvényen való kiállítási igény”.
+- Adatbázis- és CV-mentés visszaállítása külön adatbázisba és könyvtárba sikeres. A CV-hivatkozás és a fájl SHA-256 lenyomata egyezik. A visszaállított adatbázison az új migráció visszavonása és ismételt futtatása sikeres; a régi jelentkezés és a kapcsolati tartalom megmaradt.
+
+A helyi adatbázis `frt_career`, külön Docker-konténerben, az 55439-es porton fut.
+A kilenc csoport, a kapcsolati szöveg és a jelentkezések helyi tesztadatok.
+A helyi admin adatai a Gitből és a Docker buildből kizárt
+`.local-verification/admin.json` fájlban vannak. Az eredeti `.env` változatlan;
+a helyi környezet külön `.env.local` beállításokat használ, üres Google-szolgáltatásfiókkal.
+
+A Google Sheets-exportot szimulált API-válaszokkal ellenőriztük, valódi táblázatba
+nem írtunk. Élesítéskor a dokumentált publikus URL-beállítás és a tartós privát
+CV-kötet szükséges. Az ellenőrzés helyi környezetben történt; push és élesítés nem történt.
+
+## Világos téma kontrasztjavítása
+
+- A karrieroldal külön szemantikus színkészletet használ. Világos módban semleges kártyák, sötét szövegek, jól látható mezőkeretek és piros, fehér feliratú gombok jelennek meg. A korábbi globális színfelülírások nem érintik ezeket az elemeket.
+- Látható Chromium: világos magyar 1440/390 px, világos angol 1440 px, sötét magyar 1440 px és sötét angol 390 px. Összesen 38 állapotellenőrzés: alapnézet, nyitott csoport/pozíció, oldalsáv, GYIK, hover, mezőfókusz, hibás és sikeres beküldés. Nem volt vízszintes túlcsordulás vagy JavaScript-oldalhiba.
+- A helyi teszttartalom megjelenített szövegeinek legkisebb mért kontrasztja 5,34:1. A normál mezőkeretek kontrasztja a környező kártyán világos módban 4,02:1, sötét módban 4,56:1. A sikerpipa kontrasztja világos módban 6,40:1. Ez a vizsgált tartalomra és állapotokra vonatkozó mérés, nem teljes webhely-audit.
+- A beküldési állapotokat szimulált HTTP-válaszokkal ellenőriztük; ez az ellenőrzés nem hozott létre jelentkezéseket. Részletes mérések és képek: `.local-verification/career-contrast-results.json`, `career-light-form.png`, `career-light-success.png` és a témánkénti képernyőképek.
+- `yarn tsc --noEmit`, a karrieroldal célzott ESLint-ellenőrzése és `git diff --check`: sikeres. A helyi fejlesztői szerver továbbra is a 3107-es porton fut.
diff --git a/karrier-visszajelzesek-terv.md b/karrier-visszajelzesek-terv.md
new file mode 100644
index 0000000..5fa813d
--- /dev/null
+++ b/karrier-visszajelzesek-terv.md
@@ -0,0 +1,18 @@
+# Karrieroldal és kiállítási igény – javítási terv
+
+Megvalósítva 2026. szeptember 6-án. Az alkalmazás és az admin ellenőrzése elkülönített helyi PostgreSQL-adatbázissal és tesztadatokkal történt. A build, a típusellenőrzés és a 12 célzott teszt sikeres; éles környezetet nem módosítottunk.
+
+Javasolt alapbeállítás: adminból szerkeszthető kérdések; opcionális, egyetlen PDF önéletrajz, legfeljebb 5 MiB; angol főcím: „Join our team!”. Ezek a jóváhagyott terv szerinti alapbeállítások.
+
+- [x] **1. Oldalszerkezet és főcím.** A `career-page-client.tsx` címét és bevezetőjét a teljes tartalmi konténert átfogó sorba emelni. Alatta közös kéthasábos elrendezés: balra csoportok → GYIK → jelentkezés, jobbra az első csoport felső éléhez igazított panel. A főcím „Csatlakozz csapatunkhoz!”, a magyar menüfelirat „Karrier”. A fordításokat a `translations.ts` kezeli. Mobilon egyhasábos tartalom marad. Elfogadás: hosszabb bevezetővel is az első csoport mellett kezdődik a panel.
+- [x] **2. Oldalsáv és szakasznavigáció.** A `career-sidebar.tsx` három eleme: alapból csukott „Csoportok” lenyíló, „Gyakran ismételt kérdések” ugrólink, jelentkezési gomb. A lista a CMS aktuális csoportjait használja, nincs beégetett kilences darabszám. Csoportválasztáskor a célcsoport kinyílik és odagörgetünk; a listát visszacsukjuk. A GYIK stabil `gyik` horgonyt kap, linkje csak az adott nyelven megjelenő GYIK esetén látszik. A `use-career-page.ts` görgetése és a sticky távolság a felső menü alá igazodik; alacsony képernyőn minden panelvezérlő elérhető. Billentyűzet, fókuszjelzés, `aria-expanded`, csökkentett mozgás támogatása. A zárt jelentkezés és a külső Google-űrlap mód viselkedése megmarad.
+- [x] **3. Menüsorrend.** A `src/config/navigation.ts` listában a Karrier a Rólunk után kerül. Elfogadás: asztali és mobilmenüben, magyarul és angolul is ez az utolsó tartalmi menüpont; a láthatósági beállítás tovább működik.
+- [x] **4. Szerkeszthető jelentkezési kérdések.** A `CareerSettings.ts` új „Űrlap kérdései” fülén a meglévő mezők felirata, súgója és sorrendje szerkeszthető; az opcionális mezők elrejthetők vagy kötelezővé tehetők. Név, e-mail és hozzájárulás kötelező alapmező marad, a csoport/pozíció automatikus kitöltése megmarad. Új kérdésként rövid/hosszú szöveg, egy- vagy többválasztós kérdés és jelölőnégyzet adható hozzá, HU/EN felirattal és opciókkal. Stabil kérdés- és opcióazonosítók; az `application-form.tsx` és a szervervalidáció ugyanazt a konfigurációt követi. A `JobApplications.ts` az új válaszok mellé a beküldéskori kérdésszöveget, opciókat, nyelvet és konfigurációverziót is menti. Kérdés törlése a régi válaszokat nem törli; beküldés közbeni konfigurációváltozásnál érthető hibajelzés, adatvesztés nélkül. Elfogadás: adminban hozzáadott kérdés megjelenik, validálódik és visszaolvasható.
+- [x] **5. CV-feltöltés.** A kérdések után, a hozzájárulás és beküldés előtt fájlmező: fájlnév, eltávolítás/csere, típus- és mérethatár jelzése. A `/api/karrier/jelentkezes` multipart beküldést fogad, szerveroldalon is ellenőrzi a méretet és PDF-tartalmat; a korábbi JSON beküldés támogatása megmarad. Új privát upload-kollekció és kapcsolat a jelentkezéshez: beküldés kizárólag az ellenőrzött API-n át, olvasás/letöltés csak belépett adminnak. Külön tartós Docker-kötet, például `/app/private/cvs`, környezetenként elkülönítve, mentéssel és helyreállítási próbával. Hibás jelentkezés után ne maradjon árva fájl; jelentkezéstörlés a CV-t is takarítsa. Meglévő botvédelem megtartása, teljes kérésméret korlátozása. Elfogadás: CV-vel és nélküle is sikeres beküldés, hibás/túlméretes fájl elutasítása, névtelen letöltés tiltása, újraindítás után elérhető dokumentum. A jogosultsági megoldást a [Payload feltöltési dokumentációja](https://payloadcms.com/docs/upload/overview) támogatja.
+- [x] **6. Google Sheets és adatmigráció.** A `karrier-sheet-sync.ts` / `google-sheets.ts` a meglévő tíz oszlop után „További válaszok” és „Jelentkezés az adminban” oszlopot kap; utóbbiból érhető el a CV is belépés után. Az összesítő a beküldéskori kérdés–válasz párokat tartalmazza. A jelenlegi fejléc csak üres táblánál jön létre, ezért ellenőrzött fejlécbővítés kell, idegen oszlop felülírása nélkül. Sheets-hiba nem akadályozhatja a jelentkezés/CV mentését; adminból újraszinkronizálható marad. Payload-migrációk, típusgenerálás és README-frissítés; a régi rekordok új mezői opcionálisak, a jelenlegi űrlap az induló konfiguráció.
+- [x] **7. Kiállítási igény gomb.** A `Contact.ts` kollekcióban szerkeszthető URL és HU/EN gombfelirat, a `kapcsolat/page.tsx` innen olvas. A megadott [Google-űrlap](https://docs.google.com/forms/d/e/1FAIpQLSdrA3VX3YpxQB3uZ1ojXov8-J3LPawAt4ip_Aj4k8FNbNOCrA/viewform?usp=dialog) legyen az induló cél, a meglévő rekordot is kitöltő migrációval; üres URL-nél nincs gomb. HTTPS URL-validáció, új lapos megnyitás. A jelenlegi `Contact` nyilvános létrehozási/frissítési hozzáférését bejelentkezett adminra kell szűkíteni, hogy a publikus API-n se lehessen átírni a linket. Elfogadás: adminból módosított link jelenik meg, névtelen írás tiltott. A böngészős próba megnyitotta a „BME FRT - Rendezvényen való kiállítási igény” űrlapot.
+- [x] **8. Végső ellenőrzés.** Elkülönített tesztadatbázison migráció és visszaolvasás régi jelentkezésekkel; TypeScript (`yarn tsc --noEmit`), célzott ESLint (`yarn eslint …`), build. Célzott API-tesztek a dinamikus validációra, fájlhozzáférésre és hibák utáni takarításra; Sheets-próba kizárólag teszttáblán. Böngészős próba HU/EN nyelven, mobilon és asztali/ alacsony képernyőn: sorrend, paneligazítás, csoport/ GYIK ugrás, pozíció-előtöltés, üres GYIK, zárt/külső jelentkezés, teljes beküldés és adminos CV-letöltés. Élesítés külön egyeztetett lépés.
+
+Megvalósítási sorrend: 1–3. megjelenés → 4–6. szerkeszthető űrlap és CV teljes adatútja → 7. kapcsolati gomb → 8. ellenőrzés. A megjelenési rész önállóan is szállítható; az űrlap, tárolás, export és migráció együtt alkot teljes változtatást.
+
+Ellenőrzési részletek: [karrier-ellenorzes.md](./karrier-ellenorzes.md). A Google Sheets-kéréseket izolált, szimulált teszttáblával ellenőriztük; valódi Google-táblázatba nem írtunk.
diff --git a/next-env.d.ts b/next-env.d.ts
index 36a4fe4..ca6651b 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -1,7 +1,8 @@
///
///
///
-///
+import "./.next/types/routes.d.ts";
+import "./.next/types/root-params.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/next.config.ts b/next.config.ts
index 0f60396..7209986 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -4,8 +4,11 @@ import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "standalone",
images: {
- domains: ["i.ytimg.com"],
remotePatterns: [
+ {
+ protocol: "https",
+ hostname: "i.ytimg.com",
+ },
{
protocol: "https",
hostname: "**.fbcdn.net",
@@ -16,6 +19,16 @@ const nextConfig: NextConfig = {
},
],
},
+ async redirects() {
+ return [
+ {
+ // A Tagfelvétel oldal Karrier néven, /karrier útvonalon él tovább.
+ source: "/tagfelvetel",
+ destination: "/karrier",
+ permanent: true,
+ },
+ ];
+ },
/* config options here */
};
diff --git a/package.json b/package.json
index 2ced8c0..7581c85 100644
--- a/package.json
+++ b/package.json
@@ -5,35 +5,40 @@
"private": true,
"scripts": {
"dev": "next dev --turbopack",
- "build": "next build",
+ "build": "next build --webpack",
+ "build:career-transfer": "node scripts/build-career-transfer.mjs",
+ "career:transfer": "node scripts/career-transfer-server.mjs",
"start": "next start",
- "lint": "next lint",
+ "lint": "eslint .",
"payload:migrate": "node --import ./css-loader-register.mjs ./node_modules/.bin/payload migrate",
"payload:migrate-status": "node --import ./css-loader-register.mjs ./node_modules/.bin/payload migrate:status",
- "payload:generate-types": "node --import ./css-loader-register.mjs ./node_modules/.bin/payload generate:types"
+ "payload:generate-types": "node --import ./css-loader-register.mjs ./node_modules/.bin/payload generate:types",
+ "test:career": "node scripts/test-career.mjs",
+ "test:career-transfer": "node --test tests/career-transfer.test.mjs tests/career-transfer-server.test.mjs"
},
"dependencies": {
"@fullcalendar/core": "^6.1.19",
"@fullcalendar/daygrid": "^6.1.19",
"@fullcalendar/interaction": "^6.1.19",
"@fullcalendar/react": "^6.1.19",
- "@payloadcms/db-postgres": "^3.80.0",
- "@payloadcms/drizzle": "^3.80.0",
- "@payloadcms/email-nodemailer": "^3.80.0",
- "@payloadcms/next": "^3.80.0",
- "@payloadcms/payload-cloud": "^3.80.0",
- "@payloadcms/richtext-lexical": "^3.80.0",
- "@payloadcms/translations": "^3.80.0",
+ "@payloadcms/db-postgres": "3.88.0",
+ "@payloadcms/drizzle": "3.88.0",
+ "@payloadcms/email-nodemailer": "3.88.0",
+ "@payloadcms/next": "3.88.0",
+ "@payloadcms/payload-cloud": "3.88.0",
+ "@payloadcms/richtext-lexical": "3.88.0",
+ "@payloadcms/translations": "3.88.0",
"@radix-ui/react-slot": "^1.2.3",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"graphql": "^16.8.1",
- "image-size": "^1.2.1",
"lucide-react": "^0.511.0",
- "next": "15.5.9",
- "payload": "^3.80.0",
- "react": "19.2.1",
- "react-dom": "19.2.1",
+ "next": "16.3.4",
+ "payload": "3.88.0",
+ "pdf-lib": "^1.17.1",
+ "react": "19.2.8",
+ "react-dom": "19.2.8",
+ "sharp": "0.35.4",
"tailwind-merge": "^3.3.0",
"tsconfig-paths": "^4.2.0"
},
@@ -47,11 +52,14 @@
"autoprefixer": "^10.4.21",
"esbuild": "^0.25.2",
"eslint": "^9",
- "eslint-config-next": "15.2.1",
+ "eslint-config-next": "16.3.4",
"postcss": "^8.5.3",
"tailwindcss": "^4.1.7",
"tw-animate-css": "^1.3.0",
"typescript": "^5"
},
- "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
+ "resolutions": {
+ "**/@esbuild-kit/core-utils/esbuild": "0.25.12"
+ }
}
diff --git a/scripts/build-career-transfer.mjs b/scripts/build-career-transfer.mjs
new file mode 100644
index 0000000..5684b0a
--- /dev/null
+++ b/scripts/build-career-transfer.mjs
@@ -0,0 +1,8 @@
+import { build } from 'esbuild'
+
+await build({
+ entryPoints: ['scripts/career-transfer/server-cli.mjs'],
+ outfile: 'scripts/.career-transfer/server.mjs',
+ bundle: true, platform: 'node', format: 'esm', packages: 'external',
+ banner: { js: "import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);" },
+})
diff --git a/scripts/career-transfer-server.mjs b/scripts/career-transfer-server.mjs
new file mode 100644
index 0000000..b981d27
--- /dev/null
+++ b/scripts/career-transfer-server.mjs
@@ -0,0 +1,10 @@
+import { spawnSync } from 'node:child_process'
+import { fileURLToPath } from 'node:url'
+import path from 'node:path'
+
+const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
+// Inherit only DB and application identity, never integration credentials or .env loading.
+const env = Object.fromEntries(['PATH', 'HOME', 'TMPDIR', 'DATABASE_URI', 'PAYLOAD_SECRET', 'NEXT_PUBLIC_SERVER_URL'].flatMap(key => process.env[key] === undefined ? [] : [[key, process.env[key]]]))
+Object.assign(env, { NODE_ENV: 'production', NEXT_TELEMETRY_DISABLED: '1' })
+const result = spawnSync(process.execPath, ['--import', './css-loader-register.mjs', './scripts/.career-transfer/server.mjs', ...process.argv.slice(2)], { cwd: root, env, stdio: 'inherit' })
+process.exitCode = result.status ?? 1
diff --git a/scripts/career-transfer.mjs b/scripts/career-transfer.mjs
new file mode 100644
index 0000000..47128f8
--- /dev/null
+++ b/scripts/career-transfer.mjs
@@ -0,0 +1,37 @@
+import { build } from 'esbuild'
+import { spawnSync } from 'node:child_process'
+import { randomBytes } from 'node:crypto'
+import { mkdir, readFile } from 'node:fs/promises'
+import path from 'node:path'
+
+// This runner deliberately supports isolated local rehearsal databases only.
+const database = process.argv[2]
+if (!/^frt_transfer_(candidate|staging)$/.test(database ?? '')) {
+ throw new Error('Usage: node scripts/career-transfer.mjs frt_transfer_{candidate|staging} [audit-filename.json]')
+}
+const root = path.resolve('.local-verification')
+await mkdir(root, { recursive: true, mode: 0o700 })
+const credentials = Object.fromEntries((await readFile(path.join(root, 'postgres.env'), 'utf8')).trim().split('\n').map(line => {
+ const separator = line.indexOf('=')
+ return [line.slice(0, separator), line.slice(separator + 1)]
+}))
+const uri = new URL(`postgresql://127.0.0.1:55441/${database}`)
+uri.username = credentials.POSTGRES_USER
+uri.password = credentials.POSTGRES_PASSWORD
+const outfile = path.join(root, 'career-transfer-runner.mjs')
+await build({
+ entryPoints: ['scripts/career-transfer/cli.mjs'], outfile,
+ bundle: true, platform: 'node', format: 'esm', packages: 'external',
+ banner: { js: "import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);" },
+})
+const result = spawnSync(process.execPath, ['--import', './css-loader-register.mjs', outfile, ...process.argv.slice(3)], {
+ stdio: 'inherit',
+ env: {
+ PATH: process.env.PATH, HOME: process.env.HOME, TMPDIR: process.env.TMPDIR,
+ NODE_ENV: 'production', NEXT_TELEMETRY_DISABLED: '1',
+ DATABASE_URI: uri.href, PAYLOAD_SECRET: randomBytes(32).toString('hex'),
+ FRT_TRANSFER_DATABASE: database, FRT_TRANSFER_ROOT: root,
+ CV_STORAGE_DIR: path.join(root, database, 'private/cvs'),
+ },
+})
+process.exitCode = result.status ?? 1
diff --git a/scripts/career-transfer/cli.mjs b/scripts/career-transfer/cli.mjs
new file mode 100644
index 0000000..cae2f90
--- /dev/null
+++ b/scripts/career-transfer/cli.mjs
@@ -0,0 +1,79 @@
+import { postgresAdapter } from '@payloadcms/db-postgres'
+import { getPayload } from 'payload'
+import path from 'node:path'
+import { mkdir, writeFile, readFile } from 'node:fs/promises'
+import appConfig from '../../src/payload.config'
+import { migrations } from '../../src/migrations'
+import { loadBundle, buildPlan, applyPlan } from './transfer.mjs'
+import { verifyGuards } from './verify-guards.mjs'
+
+process.umask(0o077)
+const root = process.env.FRT_TRANSFER_ROOT
+const database = process.env.FRT_TRANSFER_DATABASE
+const uri = new URL(process.env.DATABASE_URI)
+if (uri.hostname !== '127.0.0.1' || uri.port !== '55441' || uri.pathname !== `/${database}` || !/^frt_transfer_(candidate|staging)$/.test(database)) {
+ throw new Error('Only the dedicated local rehearsal databases are allowed')
+}
+// No environment files are loaded by this runner. Block fetch even if a future hook adds an integration.
+globalThis.fetch = async () => { throw new Error('External requests are disabled during content rehearsal') }
+const config = await appConfig
+config.telemetry = false
+config.db = postgresAdapter({ pool: { connectionString: uri.href }, push: false, disableCreateDatabase: true, migrationDir: path.resolve('src/migrations') })
+config.email = () => ({ name: 'disabled', defaultFromAddress: 'disabled@localhost', defaultFromName: 'Disabled', sendEmail: async () => { throw new Error('Email is disabled during rehearsal') } })
+for (const collection of config.collections) {
+ if (collection.upload) collection.upload.staticDir = path.join(root, database, collection.slug === 'application-cvs' ? 'private/cvs' : collection.slug)
+}
+await mkdir(path.join(root, database, 'media'), { recursive: true })
+const payload = await getPayload({ config })
+try {
+ const command = process.argv[2]
+ if (command === 'migrate') {
+ if (database !== 'frt_transfer_candidate') throw new Error('Only the candidate may be migrated')
+ await payload.db.migrate({ migrations })
+ console.log('Migrations completed')
+ } else if (command === 'export') {
+ const recruitment = await payload.find({ collection: 'recruitment', depth: 0, pagination: false, sort: 'id' })
+ const settings = await payload.findGlobal({ slug: 'career-settings', depth: 0 })
+ const media = await payload.find({ collection: 'media', depth: 0, pagination: false, sort: 'id' })
+ const result = { database, recruitment: recruitment.docs, settings, media: media.docs }
+ await writeFile(path.join(root, `${database}.json`), JSON.stringify(result, null, 2))
+ console.log(JSON.stringify({ database, groups: result.recruitment.map(doc => ({ id: doc.id, name: doc.groupName, positions: doc.positions.length })), faqs: settings.faqs?.length ?? 0, questions: settings.formQuestions?.length ?? 0, media: media.docs.length }))
+ } else if (['plan', 'apply', 'verify-guards'].includes(command)) {
+ if (database !== 'frt_transfer_candidate') throw new Error('Only the candidate may receive an import')
+ const bundlePath = path.join(root, 'bundle/bundle.json')
+ const bundle = await loadBundle(bundlePath)
+ const mappings = JSON.parse(await readFile(path.join(root, 'group-mapping.json')))
+ const planPath = path.join(root, 'import-plan.json')
+ if (command === 'verify-guards') {
+ console.log(JSON.stringify(await verifyGuards(payload, root, bundle, bundlePath, mappings)))
+ } else if (command === 'plan') {
+ const plan = await buildPlan(payload, bundle, mappings)
+ await writeFile(planPath, JSON.stringify(plan, null, 2))
+ console.log(JSON.stringify(plan, null, 2))
+ } else {
+ const plan = JSON.parse(await readFile(planPath))
+ console.log(JSON.stringify(await applyPlan(payload, bundle, bundlePath, mappings, plan, path.join(root, 'import-receipt.json')), null, 2))
+ }
+ } else if (command === 'audit') {
+ const tables = await payload.db.pool.query("SELECT tablename FROM pg_tables WHERE schemaname='public' ORDER BY tablename")
+ const result = {}
+ for (const { tablename } of tables.rows) {
+ const table = `"${tablename.replaceAll('"', '""')}"`
+ const query = await payload.db.pool.query(`SELECT count(*)::int AS count, md5(coalesce(string_agg(to_jsonb(t)::text, E'\\n' ORDER BY to_jsonb(t)::text), '')) AS hash FROM ${table} t`)
+ result[tablename] = query.rows[0]
+ }
+ const filename = process.argv[3]
+ if (!filename || path.basename(filename) !== filename || !filename.endsWith('.json')) throw new Error('Provide an audit JSON filename')
+ await writeFile(path.join(root, filename), JSON.stringify(result, null, 2))
+ console.log(`Audited ${tables.rows.length} tables -> ${filename}`)
+ } else {
+ throw new Error(`Unknown command: ${command}`)
+ }
+} catch (error) {
+ console.error(error)
+ process.exitCode = 1
+} finally {
+ await payload.destroy()
+}
+// Payload's own CLI also exits explicitly: adapter.destroy does not close its pool.
+process.exit(process.exitCode ?? 0)
diff --git a/scripts/career-transfer/content.mjs b/scripts/career-transfer/content.mjs
new file mode 100644
index 0000000..49fb29b
--- /dev/null
+++ b/scripts/career-transfer/content.mjs
@@ -0,0 +1,58 @@
+import { createHash } from 'node:crypto'
+
+const groupFields = ['groupName', 'groupNameEng', 'image', 'order', 'description', 'descriptionEng', 'positions']
+const settingsFields = ['intro', 'introEng', 'applicationsClosedText', 'applicationsClosedTextEng', 'faqs', 'formQuestions', 'applicationMode', 'googleFormUrl', 'spreadsheetUrl', 'applicationsOpen']
+const rowArrays = new Set(['positions', 'sections', 'faqs', 'formQuestions', 'options'])
+
+// Strip Payload row IDs only, never IDs/keys embedded in rich text or question keys.
+function clean(value, isRow = false) {
+ if (Array.isArray(value)) return value.map(item => clean(item))
+ if (!value || typeof value !== 'object') return value
+ return Object.fromEntries(Object.entries(value).filter(([key]) => !(isRow && key === 'id')).map(([key, item]) => [key,
+ rowArrays.has(key) && Array.isArray(item) ? item.map(row => clean(row, true)) : clean(item),
+ ]))
+}
+export function content(doc, kind) {
+ return clean(Object.fromEntries((kind === 'group' ? groupFields : settingsFields).map(key => [key, doc[key] ?? null])))
+}
+export function canonical(value) {
+ if (Array.isArray(value)) return value.map(canonical)
+ if (!value || typeof value !== 'object') return value
+ return Object.fromEntries(Object.keys(value).sort().map(key => [key, canonical(value[key])]))
+}
+export const hash = value => createHash('sha256').update(JSON.stringify(canonical(value))).digest('hex')
+export const fileHash = buffer => createHash('sha256').update(buffer).digest('hex')
+
+export function mediaReferences(value, result = new Set()) {
+ if (!value || typeof value !== 'object') return result
+ if (value.relationTo) {
+ if (value.relationTo !== 'media') throw new Error(`Unmapped rich-text relationship: ${value.relationTo}`)
+ const id = typeof value.value === 'object' ? value.value?.id : value.value
+ if (!Number.isInteger(id)) throw new Error('Invalid rich-text media reference')
+ result.add(id)
+ }
+ for (const item of Object.values(value)) mediaReferences(item, result)
+ return result
+}
+export function remapMedia(value, mapping) {
+ if (Array.isArray(value)) return value.map(item => remapMedia(item, mapping))
+ if (!value || typeof value !== 'object') return value
+ const result = Object.fromEntries(Object.entries(value).map(([key, item]) => [key, remapMedia(item, mapping)]))
+ if (result.relationTo) {
+ if (result.relationTo !== 'media') throw new Error(`Unsupported relationship: ${result.relationTo}`)
+ const oldID = typeof result.value === 'object' ? result.value.id : result.value
+ if (!mapping[oldID]) throw new Error(`Missing media mapping: ${oldID}`)
+ result.value = mapping[oldID]
+ }
+ return result
+}
+export function validateMapping(source, target, mappings) {
+ if (mappings.length !== source.length || new Set(mappings.map(x => x.sourceID)).size !== source.length) throw new Error('Every source group needs exactly one mapping')
+ if (new Set(mappings.map(x => x.targetID)).size !== mappings.length) throw new Error('Target group mappings must be unique')
+ if (target.some(doc => !mappings.some(mapping => mapping.targetID === doc.id))) throw new Error('Unmapped target groups require an explicit removal plan')
+ for (const mapping of mappings) {
+ const s = source.find(x => x.id === mapping.sourceID)
+ const t = target.find(x => x.id === mapping.targetID)
+ if (!s || !t || s.groupName !== mapping.sourceName || t.groupName !== mapping.targetName) throw new Error(`Group mapping no longer matches: ${mapping.sourceID} -> ${mapping.targetID}`)
+ }
+}
diff --git a/scripts/career-transfer/server-cli.mjs b/scripts/career-transfer/server-cli.mjs
new file mode 100644
index 0000000..812508c
--- /dev/null
+++ b/scripts/career-transfer/server-cli.mjs
@@ -0,0 +1,66 @@
+import { postgresAdapter } from '@payloadcms/db-postgres'
+import { getPayload } from 'payload'
+import { readFile, writeFile, stat } from 'node:fs/promises'
+import path from 'node:path'
+import appConfig from '../../src/payload.config'
+import { migrations } from '../../src/migrations'
+import { hash } from './content.mjs'
+import { parseOptions } from './server-options.mjs'
+import { loadBundle, buildPlan, applyPlan } from './transfer.mjs'
+
+process.umask(0o077)
+globalThis.fetch = async () => { throw new Error('External requests are disabled during content import') }
+let payload
+try {
+ const options = parseOptions(process.argv.slice(2), process.env)
+ const bundle = await loadBundle(options.bundle)
+ const mappings = JSON.parse(await readFile(options.mapping, 'utf8'))
+ const approvedPlan = options.command === 'apply' ? JSON.parse(await readFile(options.plan, 'utf8')) : null
+ if (approvedPlan) {
+ const { sha256, ...data } = approvedPlan
+ if (sha256 !== options['plan-sha256'] || hash(data) !== sha256 || !approvedPlan.target) throw new Error('Plan hash mismatch or missing server target identity')
+ }
+ const output = options.command === 'plan' ? options.out : options.receipt
+ if (!(await stat(path.dirname(output))).isDirectory()) throw new Error('Output directory does not exist')
+ try { await stat(output); throw new Error('Output file already exists; preserve earlier plans and receipts') }
+ catch (error) { if (error.code !== 'ENOENT') throw error }
+ const mediaDir = path.resolve('media')
+ if (!(await stat(mediaDir)).isDirectory()) throw new Error('The application media directory must be mounted')
+ const config = await appConfig
+ config.telemetry = false
+ config.db = postgresAdapter({ pool: { connectionString: process.env.DATABASE_URI }, push: false, disableCreateDatabase: true, migrationDir: path.resolve('src/migrations') })
+ config.email = () => ({ name: 'disabled', defaultFromAddress: 'disabled@localhost', defaultFromName: 'Disabled', sendEmail: async () => { throw new Error('Email is disabled during content import') } })
+ for (const collection of config.collections) {
+ if (collection.upload) collection.upload.staticDir = collection.slug === 'media' ? mediaDir : path.resolve('private/cvs')
+ }
+ payload = await getPayload({ config })
+ const applied = (await payload.db.pool.query('SELECT name FROM payload_migrations')).rows.map(row => row.name)
+ const pending = migrations.filter(migration => !applied.includes(migration.name)).map(migration => migration.name)
+ if (pending.length) throw new Error(`Database migrations must run before import: ${pending.join(', ')}`)
+ const uri = new URL(process.env.DATABASE_URI)
+ const actual = (await payload.db.pool.query('SELECT current_database() AS database, current_user AS role, inet_server_addr()::text AS "serverAddress", inet_server_port() AS "serverPort"')).rows[0]
+ if (actual.database !== options['expect-database']) throw new Error('Connected database differs from the expected database')
+ const targetIdentity = { environment: options.environment, origin: new URL(process.env.NEXT_PUBLIC_SERVER_URL).origin, host: uri.hostname, port: uri.port || '5432', ...actual }
+ if (approvedPlan && hash(approvedPlan.target) !== hash(targetIdentity)) throw new Error('Connected server identity does not match the approved plan')
+ if (options.command === 'plan') {
+ const plan = await buildPlan(payload, bundle, mappings, undefined, targetIdentity)
+ await writeFile(output, JSON.stringify(plan, null, 2), { flag: 'wx', mode: 0o600 })
+ console.log(JSON.stringify({ plan: output, sha256: plan.sha256, target: targetIdentity, groupsToUpdate: plan.groups.filter(x => x.action === 'update').length, mediaToCreate: plan.assets.filter(x => x.action === 'create').length, settings: plan.settings }, null, 2))
+ } else {
+ await writeFile(output, JSON.stringify({ status: 'prepared', planHash: approvedPlan.sha256, target: targetIdentity }, null, 2), { flag: 'wx', mode: 0o600 })
+ try {
+ await applyPlan(payload, bundle, options.bundle, mappings, approvedPlan, output, { targetIdentity })
+ console.log(JSON.stringify({ status: 'committed', receipt: output, target: targetIdentity }))
+ } catch (error) {
+ const receipt = JSON.parse(await readFile(output, 'utf8'))
+ if (receipt.status === 'prepared') await writeFile(output, JSON.stringify({ ...receipt, status: 'failed-before-commit' }, null, 2))
+ throw error
+ }
+ }
+} catch (error) {
+ console.error(error.message)
+ process.exitCode = 1
+} finally {
+ if (payload) await payload.destroy()
+}
+process.exit(process.exitCode ?? 0)
diff --git a/scripts/career-transfer/server-options.mjs b/scripts/career-transfer/server-options.mjs
new file mode 100644
index 0000000..6d29e5c
--- /dev/null
+++ b/scripts/career-transfer/server-options.mjs
@@ -0,0 +1,28 @@
+import path from 'node:path'
+
+export function parseOptions(argv, env) {
+ const [command, ...args] = argv
+ if (!['plan', 'apply'].includes(command)) throw new Error('Usage: career-transfer-server.mjs --environment --expect-database --expect-origin --bundle --mapping [--out | --plan --plan-sha256 --receipt ]')
+ const allowed = new Set(['environment', 'expect-database', 'expect-origin', 'bundle', 'mapping', ...(command === 'plan' ? ['out'] : ['plan', 'plan-sha256', 'receipt'])])
+ const options = { command }
+ for (let i = 0; i < args.length; i += 2) {
+ const key = args[i]?.slice(2)
+ if (!args[i]?.startsWith('--') || !allowed.has(key) || Object.hasOwn(options, key) || !args[i + 1] || args[i + 1].startsWith('--')) throw new Error(`Invalid or duplicate option: ${args[i]}`)
+ options[key] = args[i + 1]
+ }
+ for (const key of allowed) if (!options[key]) throw new Error(`Missing --${key}`)
+ if (!['production', 'staging', 'rehearsal'].includes(options.environment)) throw new Error('Invalid environment')
+ if (!env.DATABASE_URI || !env.PAYLOAD_SECRET || !env.NEXT_PUBLIC_SERVER_URL) throw new Error('DATABASE_URI, PAYLOAD_SECRET and NEXT_PUBLIC_SERVER_URL are required')
+ const database = new URL(env.DATABASE_URI)
+ if (!['postgres:', 'postgresql:'].includes(database.protocol)) throw new Error('PostgreSQL DATABASE_URI required')
+ if (decodeURIComponent(database.pathname.slice(1)) !== options['expect-database']) throw new Error('Database does not match --expect-database')
+ const expectedOrigin = new URL(options['expect-origin'])
+ const origin = new URL(env.NEXT_PUBLIC_SERVER_URL)
+ if (!['http:', 'https:'].includes(origin.protocol) || expectedOrigin.origin !== origin.origin || expectedOrigin.username || expectedOrigin.password || origin.username || origin.password) throw new Error('Application origin does not match --expect-origin')
+ if (expectedOrigin.pathname !== '/' || expectedOrigin.search || expectedOrigin.hash) throw new Error('--expect-origin must contain only the origin')
+ if (command === 'apply' && !/^[a-f0-9]{64}$/.test(options['plan-sha256'])) throw new Error('An exact SHA-256 plan hash is required')
+ for (const key of ['bundle', 'mapping', 'out', 'plan', 'receipt']) if (options[key]) options[key] = path.resolve(options[key])
+ const files = ['bundle', 'mapping', 'out', 'plan', 'receipt'].flatMap(key => options[key] ? [options[key]] : [])
+ if (new Set(files).size !== files.length) throw new Error('Input and output paths must be distinct')
+ return options
+}
diff --git a/scripts/career-transfer/transfer.mjs b/scripts/career-transfer/transfer.mjs
new file mode 100644
index 0000000..54861d0
--- /dev/null
+++ b/scripts/career-transfer/transfer.mjs
@@ -0,0 +1,148 @@
+import { createLocalReq, initTransaction, commitTransaction, killTransaction } from 'payload'
+import { sql } from '@payloadcms/db-postgres'
+import { readFile, writeFile, rm, access } from 'node:fs/promises'
+import path from 'node:path'
+import { content, fileHash, hash, remapMedia, validateMapping, mediaReferences } from './content.mjs'
+
+export async function readTarget(payload, req) {
+ const recruitment = await payload.find({ collection: 'recruitment', depth: 0, pagination: false, sort: 'id', req })
+ const settings = await payload.findGlobal({ slug: 'career-settings', depth: 0, req })
+ const media = await payload.find({ collection: 'media', depth: 0, pagination: false, sort: 'id', req })
+ return { recruitment: recruitment.docs, settings, media: media.docs }
+}
+
+export function targetFingerprint(target) {
+ return hash({
+ recruitment: target.recruitment.map(doc => ({ id: doc.id, updatedAt: doc.updatedAt, data: content(doc, 'group') })),
+ settings: { data: content(target.settings, 'settings'), updatedAt: target.settings.updatedAt },
+ media: target.media.map(({ id, filename, alt, filesize, updatedAt }) => ({ id, filename, alt, filesize, updatedAt })),
+ })
+}
+
+export async function loadBundle(filename) {
+ const bundle = JSON.parse(await readFile(filename, 'utf8'))
+ const { sha256, ...data } = bundle
+ if (bundle.version !== 1 || hash(data) !== sha256) throw new Error('Bundle checksum mismatch')
+ const refs = mediaReferences([bundle.recruitment, bundle.settings])
+ for (const doc of bundle.recruitment) if (doc.image) refs.add(doc.image)
+ if (new Set(bundle.assets.map(x => x.sourceID)).size !== bundle.assets.length || refs.size !== bundle.assets.length || [...refs].some(id => !bundle.assets.some(x => x.sourceID === id))) throw new Error('Incomplete or duplicate media assets')
+ for (const asset of bundle.assets) {
+ if (path.basename(asset.filename) !== asset.filename) throw new Error('Invalid asset filename')
+ const bytes = await readFile(path.join(path.dirname(filename), 'media', asset.filename))
+ if (bytes.length !== asset.size || fileHash(bytes) !== asset.sha256) throw new Error(`Asset checksum mismatch: ${asset.filename}`)
+ }
+ return bundle
+}
+
+export async function buildPlan(payload, bundle, mappings, req, targetIdentity) {
+ const target = await readTarget(payload, req)
+ // A completed run may have renamed a target group to its source name.
+ validateMapping(bundle.recruitment, target.recruitment, mappings.map(m => ({ ...m,
+ targetName: target.recruitment.find(t => t.id === m.targetID)?.groupName === m.sourceName ? m.sourceName : m.targetName,
+ })))
+ const mediaDir = payload.collections.media.config.upload.staticDir
+ const assets = []
+ for (const asset of bundle.assets) {
+ const importName = `career-${asset.sha256}${path.extname(asset.filename).toLowerCase()}`
+ const candidates = target.media.filter(doc => [asset.filename, importName].includes(doc.filename))
+ const matches = []
+ for (const doc of candidates) {
+ const bytes = await readFile(path.join(mediaDir, doc.filename))
+ if (fileHash(bytes) === asset.sha256 && doc.alt === asset.alt) matches.push(doc)
+ }
+ if (matches.length > 1) throw new Error(`Ambiguous target image: ${asset.filename}`)
+ if (!matches.length && candidates.some(x => x.filename === importName)) throw new Error(`Conflicting import image: ${importName}`)
+ assets.push({ sourceID: asset.sourceID, action: matches.length ? 'reuse' : 'create', targetID: matches[0]?.id ?? null, filename: matches[0]?.filename ?? importName, sha256: asset.sha256 })
+ }
+ const mediaMap = Object.fromEntries(assets.map(asset => [asset.sourceID, asset.targetID ?? `new:${asset.sha256}`]))
+ const groups = mappings.map(mapping => {
+ const source = bundle.recruitment.find(doc => doc.id === mapping.sourceID)
+ const before = content(target.recruitment.find(doc => doc.id === mapping.targetID), 'group')
+ const after = remapMedia(content(source, 'group'), mediaMap)
+ after.image = source.image ? mediaMap[source.image] : null
+ return { sourceID: mapping.sourceID, targetID: mapping.targetID, name: source.groupName,
+ action: hash(before) === hash(after) ? 'unchanged' : 'update',
+ changedFields: Object.keys(after).filter(key => hash(before[key]) !== hash(after[key])),
+ positionsBefore: before.positions.length, positionsAfter: after.positions.length,
+ oldPositions: before.positions.map(x => x.positionName), newPositions: after.positions.map(x => x.positionName),
+ }
+ })
+ const beforeSettings = content(target.settings, 'settings')
+ const afterSettings = remapMedia(content(bundle.settings, 'settings'), mediaMap)
+ const settings = { action: hash(beforeSettings) === hash(afterSettings) ? 'unchanged' : 'update',
+ changedFields: Object.keys(afterSettings).filter(key => hash(beforeSettings[key]) !== hash(afterSettings[key])),
+ authority: 'staging',
+ sourceIntegrationConfigured: !!bundle.settings.spreadsheetUrl,
+ targetIntegrationConfigured: !!target.settings.spreadsheetUrl,
+ }
+ const data = { version: 1, bundleHash: bundle.sha256, targetHash: targetFingerprint(target), mappingHash: hash(mappings), assets, groups, settings, ...(targetIdentity ? { target: targetIdentity } : {}) }
+ return { ...data, sha256: hash(data) }
+}
+
+export async function applyPlan(payload, bundle, bundlePath, mappings, approvedPlan, receiptPath, { targetIdentity } = {}) {
+ const { sha256, ...planData } = approvedPlan
+ if (hash(planData) !== sha256 || approvedPlan.bundleHash !== bundle.sha256 || approvedPlan.mappingHash !== hash(mappings)) throw new Error('Plan checksum or input mismatch')
+ const req = await createLocalReq({ context: { skipSheetSync: true } }, payload)
+ const createdFiles = new Set()
+ const mediaDir = payload.collections.media.config.upload.staticDir
+ let committed = false
+ let commitAttempted = false
+ const receipt = { planHash: sha256, bundleHash: bundle.sha256, createdMedia: [], updatedGroups: [], updatedSettings: false, ...(targetIdentity ? { target: targetIdentity } : {}) }
+ try {
+ await initTransaction(req)
+ const transaction = payload.db.sessions[await req.transactionID]?.db
+ if (!transaction) throw new Error('A real PostgreSQL transaction is required')
+ await transaction.execute(sql`SET LOCAL lock_timeout = '5s'`)
+ await transaction.execute(sql`LOCK TABLE recruitment, recruitment_positions, recruitment_positions_sections, career_settings, career_settings_faqs, career_settings_form_questions, career_settings_form_questions_options, media IN SHARE ROW EXCLUSIVE MODE`)
+ const currentPlan = await buildPlan(payload, bundle, mappings, req, targetIdentity)
+ if (currentPlan.sha256 !== sha256) throw new Error('Target changed since planning; generate and review a new plan')
+ const mediaMap = {}
+ for (const action of approvedPlan.assets) {
+ if (action.action === 'reuse') { mediaMap[action.sourceID] = action.targetID; continue }
+ const asset = bundle.assets.find(x => x.sourceID === action.sourceID)
+ const destination = path.join(mediaDir, action.filename)
+ try { await access(destination); throw new Error(`Untracked target file already exists: ${action.filename}`) }
+ catch (error) { if (error.code !== 'ENOENT') throw error }
+ createdFiles.add(destination)
+ const data = await readFile(path.join(path.dirname(bundlePath), 'media', asset.filename))
+ const doc = await payload.create({ collection: 'media', data: { alt: asset.alt },
+ file: { data, name: action.filename, mimetype: asset.mimeType, size: data.length }, req })
+ createdFiles.add(path.join(mediaDir, doc.filename))
+ if (fileHash(await readFile(path.join(mediaDir, doc.filename))) !== asset.sha256) throw new Error(`Upload changed file content: ${asset.filename}`)
+ mediaMap[action.sourceID] = doc.id
+ receipt.createdMedia.push({ sourceID: action.sourceID, targetID: doc.id, filename: doc.filename })
+ }
+ for (const action of approvedPlan.groups) {
+ if (action.action === 'unchanged') continue
+ const source = bundle.recruitment.find(doc => doc.id === action.sourceID)
+ const data = remapMedia(content(source, 'group'), mediaMap)
+ data.image = source.image ? mediaMap[source.image] : null
+ await payload.update({ collection: 'recruitment', id: action.targetID, data, depth: 0, req })
+ receipt.updatedGroups.push(action.targetID)
+ }
+ if (approvedPlan.settings.action !== 'unchanged') {
+ await payload.updateGlobal({ slug: 'career-settings', data: remapMedia(content(bundle.settings, 'settings'), mediaMap), depth: 0, req })
+ receipt.updatedSettings = true
+ }
+ const afterPlan = await buildPlan(payload, bundle, mappings, req, targetIdentity)
+ if (afterPlan.groups.some(x => x.action !== 'unchanged') || afterPlan.assets.some(x => x.action !== 'reuse') || afterPlan.settings.action !== 'unchanged') throw new Error('Imported content differs from the bundle')
+ receipt.afterHash = afterPlan.targetHash
+ // Record pending outcome before commit; never report committed until PostgreSQL confirms it.
+ await writeFile(receiptPath, JSON.stringify({ ...receipt, status: 'pending-commit' }, null, 2))
+ commitAttempted = true
+ await commitTransaction(req)
+ committed = true
+ await writeFile(receiptPath, JSON.stringify({ ...receipt, status: 'committed' }, null, 2))
+ return receipt
+ } catch (error) {
+ if (!committed && !commitAttempted) {
+ await killTransaction(req)
+ for (const filename of createdFiles) await rm(filename, { force: true })
+ }
+ if (!committed && commitAttempted) {
+ // A lost COMMIT response does not prove rollback. Keep files for reconciliation.
+ await writeFile(receiptPath, JSON.stringify({ ...receipt, status: 'commit-uncertain' }, null, 2)).catch(() => {})
+ }
+ throw error
+ }
+}
diff --git a/scripts/career-transfer/verify-guards.mjs b/scripts/career-transfer/verify-guards.mjs
new file mode 100644
index 0000000..66d7203
--- /dev/null
+++ b/scripts/career-transfer/verify-guards.mjs
@@ -0,0 +1,51 @@
+import assert from 'node:assert/strict'
+import { mkdtemp, mkdir, readFile, readdir, writeFile, symlink, rm } from 'node:fs/promises'
+import path from 'node:path'
+import { applyPlan, buildPlan, readTarget, targetFingerprint } from './transfer.mjs'
+import { fileHash, hash } from './content.mjs'
+
+export async function verifyGuards(payload, root, bundle, bundlePath, mappings) {
+ const before = targetFingerprint(await readTarget(payload))
+ const mediaDir = payload.collections.media.config.upload.staticDir
+ const beforeFiles = (await readdir(mediaDir)).sort()
+ const directory = await mkdtemp(path.join(root, 'guard-test-'))
+ try {
+ const stale = await buildPlan(payload, bundle, mappings)
+ stale.targetHash = 'deliberately-stale'
+ const { sha256: ignored, ...staleData } = stale
+ void ignored
+ stale.sha256 = hash(staleData)
+ await assert.rejects(() => applyPlan(payload, bundle, bundlePath, mappings, stale, path.join(directory, 'stale-receipt.json')), /Target changed since planning/)
+
+ // Create a valid, distinct JPEG first, then fail validation on the LAST group.
+ // This verifies rollback of earlier updates and cleanup of newly written files.
+ const invalid = structuredClone(bundle)
+ await mkdir(path.join(directory, 'media'))
+ for (let i = 0; i < invalid.assets.length; i++) {
+ const asset = invalid.assets[i]
+ const source = path.join(path.dirname(bundlePath), 'media', asset.filename)
+ const target = path.join(directory, 'media', asset.filename)
+ if (i === 0) {
+ const bytes = Buffer.concat([await readFile(source), Buffer.from('\nlocal rollback verification\n')])
+ await writeFile(target, bytes)
+ asset.sha256 = fileHash(bytes)
+ asset.size = bytes.length
+ } else await symlink(source, target)
+ }
+ invalid.recruitment[0].order = 98765
+ invalid.recruitment.at(-1).description = null
+ const { sha256: oldHash, ...invalidData } = invalid
+ void oldHash
+ invalid.sha256 = hash(invalidData)
+ const plan = await buildPlan(payload, invalid, mappings)
+ assert.ok(plan.assets.some(x => x.action === 'create'))
+ await assert.rejects(() => applyPlan(payload, invalid, path.join(directory, 'bundle.json'), mappings, plan, path.join(directory, 'rollback-receipt.json')), error => error.name === 'ValidationError')
+ assert.equal(targetFingerprint(await readTarget(payload)), before)
+ assert.deepEqual((await readdir(mediaDir)).sort(), beforeFiles)
+ const result = { stalePlanRejected: true, databaseRollback: true, newFileCleanup: true }
+ await writeFile(path.join(root, 'guard-results.json'), JSON.stringify(result, null, 2))
+ return result
+ } finally {
+ await rm(directory, { recursive: true, force: true })
+ }
+}
diff --git a/scripts/deploy-image.sh b/scripts/deploy-image.sh
new file mode 100755
index 0000000..3f5128c
--- /dev/null
+++ b/scripts/deploy-image.sh
@@ -0,0 +1,187 @@
+#!/usr/bin/env bash
+
+set -Eeuo pipefail
+
+usage() {
+ echo "Usage: $0 IMAGE_REF COMPOSE_PROJECT APP_ENV_FILE HEALTH_URL BACKUP_DATABASE [COMPOSE_OVERRIDE]" >&2
+}
+
+if [[ $# -lt 5 || $# -gt 6 ]]; then
+ usage
+ exit 2
+fi
+
+image_ref="$1"
+compose_project="$2"
+app_env_file="$3"
+health_url="$4"
+backup_database="$5"
+compose_override="${6:-}"
+
+if [[ ! "$image_ref" =~ ^ghcr\.io/[a-z0-9_.-]+/[a-z0-9_.-]+(@sha256:[a-f0-9]{64}|:[A-Za-z0-9_.-]+)$ ]]; then
+ echo "Invalid GHCR image reference: $image_ref" >&2
+ exit 2
+fi
+
+if [[ ! "$compose_project" =~ ^[a-zA-Z0-9][a-zA-Z0-9_.-]*$ ]]; then
+ echo "Invalid Compose project name: $compose_project" >&2
+ exit 2
+fi
+
+if [[ "$app_env_file" = /* || "$app_env_file" == *".."* ]]; then
+ echo "APP_ENV_FILE must be a relative path inside the deployment directory." >&2
+ exit 2
+fi
+
+if [[ ! "$health_url" =~ ^http://127\.0\.0\.1:[0-9]+/api/health$ ]]; then
+ echo "HEALTH_URL must target the local environment health endpoint." >&2
+ exit 2
+fi
+
+if [[ "$backup_database" != "true" && "$backup_database" != "false" ]]; then
+ echo "BACKUP_DATABASE must be true or false." >&2
+ exit 2
+fi
+
+if [[ -n "$compose_override" && ( "$compose_override" = /* || "$compose_override" == *".."* ) ]]; then
+ echo "COMPOSE_OVERRIDE must be a relative path inside the deployment directory." >&2
+ exit 2
+fi
+
+if [[ ! -f "$app_env_file" ]]; then
+ echo "Missing application environment file: $app_env_file" >&2
+ exit 1
+fi
+
+if [[ ! -f docker-compose.yml ]]; then
+ echo "docker-compose.yml is missing from $(pwd)." >&2
+ exit 1
+fi
+
+if [[ -n "$compose_override" && ! -f "$compose_override" ]]; then
+ echo "Compose override is missing: $compose_override" >&2
+ exit 1
+fi
+
+candidate_env=".env.deploy.next"
+active_env=".env.deploy"
+rollback_env=".env.deploy.rollback"
+previous_image=""
+
+cleanup() {
+ rm -f "$candidate_env" "$rollback_env"
+}
+
+trap cleanup EXIT
+
+write_deploy_env() {
+ local target_file="$1"
+ local target_image="$2"
+
+ umask 077
+ {
+ printf 'FRT_APP_IMAGE=%s\n' "$target_image"
+ printf 'APP_ENV_FILE=%s\n' "$app_env_file"
+ } > "$target_file"
+}
+
+compose_with() {
+ local deploy_env="$1"
+ shift
+
+ local args=(
+ docker compose
+ --env-file "$deploy_env"
+ -p "$compose_project"
+ -f docker-compose.yml
+ )
+
+ if [[ -n "$compose_override" ]]; then
+ args+=(-f "$compose_override")
+ fi
+
+ "${args[@]}" "$@"
+}
+
+write_deploy_env "$candidate_env" "$image_ref"
+
+current_container_id="$(compose_with "$candidate_env" ps -q app 2>/dev/null || true)"
+if [[ -n "$current_container_id" ]]; then
+ previous_image="$(docker inspect --format '{{.Config.Image}}' "$current_container_id" 2>/dev/null || true)"
+fi
+
+rollback_app() {
+ if [[ -z "$previous_image" ]]; then
+ echo "No previous application image is available for automatic rollback." >&2
+ return 1
+ fi
+
+ echo "Rolling the application back to $previous_image" >&2
+ write_deploy_env "$rollback_env" "$previous_image"
+ compose_with "$rollback_env" up -d --no-build --pull never --wait --wait-timeout 120 app
+}
+
+echo "Pulling application image $image_ref"
+compose_with "$candidate_env" pull app
+
+echo "Starting the environment database"
+compose_with "$candidate_env" up -d --wait --wait-timeout 120 postgres
+
+if [[ "$backup_database" == "true" ]]; then
+ backup_dir="backups"
+ backup_path="$backup_dir/postgres-$(date -u +%Y%m%dT%H%M%SZ).dump"
+ backup_tmp="$backup_path.tmp"
+ mkdir -p "$backup_dir"
+
+ echo "Creating production database backup at $backup_path"
+ # The variables are intentionally expanded inside the PostgreSQL container.
+ # shellcheck disable=SC2016
+ if compose_with "$candidate_env" exec -T postgres sh -c \
+ 'pg_dump --format=custom --no-owner --no-acl -U "$POSTGRES_USER" "$POSTGRES_DB"' \
+ > "$backup_tmp"; then
+ mv "$backup_tmp" "$backup_path"
+ else
+ rm -f "$backup_tmp"
+ exit 1
+ fi
+ cv_backup_path="${backup_path%.dump}-cvs.tar.gz"
+ echo "Creating private CV backup at $cv_backup_path"
+ if compose_with "$candidate_env" run --rm -T --no-deps --entrypoint tar app \
+ -C /app/private -czf - cvs > "$cv_backup_path.tmp"; then
+ mv "$cv_backup_path.tmp" "$cv_backup_path"
+ chmod 600 "$backup_path" "$cv_backup_path"
+ else
+ rm -f "$cv_backup_path.tmp"
+ exit 1
+ fi
+fi
+
+echo "Running Payload migrations with the candidate image"
+printf 'y\n' | compose_with "$candidate_env" run --rm -T app yarn payload:migrate
+
+echo "Starting the candidate application"
+if ! compose_with "$candidate_env" up -d --no-build --pull never --wait --wait-timeout 120 app; then
+ rollback_app || true
+ echo "Application startup failed. Database migrations are not rolled back automatically." >&2
+ exit 1
+fi
+
+health_ok="false"
+for _attempt in {1..12}; do
+ if curl --fail --silent --show-error --max-time 10 "$health_url" >/dev/null; then
+ health_ok="true"
+ break
+ fi
+ sleep 5
+done
+
+if [[ "$health_ok" != "true" ]]; then
+ rollback_app || true
+ echo "Health check failed for $health_url. Database migrations are not rolled back automatically." >&2
+ exit 1
+fi
+
+mv "$candidate_env" "$active_env"
+chmod 600 "$active_env"
+
+echo "Deployment completed successfully with $image_ref"
diff --git a/scripts/prepare-career-bundle.mjs b/scripts/prepare-career-bundle.mjs
new file mode 100644
index 0000000..6e56eac
--- /dev/null
+++ b/scripts/prepare-career-bundle.mjs
@@ -0,0 +1,52 @@
+import { spawnSync } from 'node:child_process'
+import { mkdir, readFile, writeFile } from 'node:fs/promises'
+import path from 'node:path'
+import { fileHash, hash, mediaReferences } from './career-transfer/content.mjs'
+
+process.umask(0o077)
+const [stagingArchive, productionArchive] = process.argv.slice(2)
+if (!stagingArchive || !productionArchive) throw new Error('Pass staging and production file archives')
+const root = path.resolve('.local-verification')
+const source = JSON.parse(await readFile(path.join(root, 'frt_transfer_staging.json')))
+const target = JSON.parse(await readFile(path.join(root, 'frt_transfer_candidate.json')))
+const ids = mediaReferences([source.recruitment, source.settings])
+source.recruitment.forEach(doc => { if (doc.image) ids.add(doc.image) })
+const media = [...ids].map(id => {
+ const doc = source.media.find(item => item.id === id)
+ if (!doc?.filename || path.basename(doc.filename) !== doc.filename) throw new Error(`Invalid media file: ${id}`)
+ return doc
+})
+const bundleDir = path.join(root, 'bundle')
+await mkdir(bundleDir, { recursive: true })
+
+async function extract(archive, destination, filenames) {
+ await mkdir(path.join(destination, 'media'), { recursive: true })
+ if (!filenames.length) return
+ // Extract exact regular files ourselves; no paths or links from tar may escape destination.
+ const python = `import tarfile,sys,os,shutil,json
+names=set(json.loads(sys.argv[3])); found=set()
+with tarfile.open(sys.argv[1], 'r|gz') as archive:
+ for member in archive:
+ if member.name in names:
+ if not member.isfile() or member.name in found: raise RuntimeError('Invalid archive member')
+ dest=os.path.join(sys.argv[2], member.name)
+ with archive.extractfile(member) as src, open(dest, 'xb') as out: shutil.copyfileobj(src,out)
+ found.add(member.name)
+if found != names: raise RuntimeError('Missing archive members: '+str(names-found))
+`
+ const result = spawnSync('python3', ['-c', python, archive, destination, JSON.stringify(filenames.map(name => `media/${name}`))], { stdio: 'inherit' })
+ if (result.status !== 0) throw new Error('Selective file extraction failed')
+}
+await extract(stagingArchive, bundleDir, media.map(doc => doc.filename))
+const existing = target.media.filter(doc => media.some(s => s.filename === doc.filename))
+await extract(productionArchive, path.join(root, 'frt_transfer_candidate'), existing.map(doc => doc.filename))
+const assets = []
+for (const doc of media) {
+ const bytes = await readFile(path.join(bundleDir, 'media', doc.filename))
+ if (bytes.length !== doc.filesize) throw new Error(`File size differs from DB: ${doc.filename}`)
+ assets.push({ sourceID: doc.id, filename: doc.filename, alt: doc.alt, mimeType: doc.mimeType, size: bytes.length, sha256: fileHash(bytes) })
+}
+const bundle = { version: 1, recruitment: source.recruitment, settings: source.settings, assets }
+bundle.sha256 = hash(bundle)
+await writeFile(path.join(bundleDir, 'bundle.json'), JSON.stringify(bundle, null, 2))
+console.log(JSON.stringify({ bundle: path.join(bundleDir, 'bundle.json'), files: assets.length, bytes: assets.reduce((n, x) => n + x.size, 0), sha256: bundle.sha256 }))
diff --git a/scripts/test-career.mjs b/scripts/test-career.mjs
new file mode 100644
index 0000000..17dc384
--- /dev/null
+++ b/scripts/test-career.mjs
@@ -0,0 +1,22 @@
+import { build } from "esbuild";
+import { mkdtemp, rm } from "node:fs/promises";
+import { spawnSync } from "node:child_process";
+import path from "node:path";
+const directory = await mkdtemp(path.join(process.cwd(), ".career-tests-"));
+try {
+ const outfile = path.join(directory, "career.test.cjs");
+ await build({
+ entryPoints: ["tests/career.test.ts"],
+ outfile,
+ bundle: true,
+ platform: "node",
+ format: "cjs",
+ packages: "external",
+ });
+ const result = spawnSync(process.execPath, ["--test", outfile], {
+ stdio: "inherit",
+ });
+ process.exitCode = result.status ?? 1;
+} finally {
+ await rm(directory, { recursive: true, force: true });
+}
diff --git a/src/app/(app)/globals.css b/src/app/(app)/globals.css
index a478443..2c8490a 100644
--- a/src/app/(app)/globals.css
+++ b/src/app/(app)/globals.css
@@ -1,5 +1,6 @@
@import "tailwindcss";
@import "tw-animate-css";
+@import "./karrier/career-theme.css";
@tailwind utilities;
@plugin "@tailwindcss/typography";
@@ -143,6 +144,38 @@
margin-bottom: 0.5em; /* Kis térköz a listaelemek között */
}
+/* Karrier oldal — pozíció szekcióinak felsorolása.
+ A szerkesztő a CMS-ben sima felsorolást ír, a sor elején emojival: az emoji a
+ felsorolásjel, ezért a pöttyöt elhagyjuk, és függő behúzással igazítjuk a
+ tördelt sorokat a szöveg alá. */
+.karrier-section-list ul,
+.karrier-section-list ol {
+ list-style: none;
+ margin-left: 0;
+ padding-left: 0;
+}
+
+.karrier-section-list li {
+ margin-bottom: 0.5em;
+ padding-left: 1.6em;
+ text-indent: -1.6em;
+ /* A sor elejére írt emoji után szűk lenne a sima szóköz — épp csak megnyitjuk. */
+ word-spacing: 0.12em;
+}
+
+.karrier-section-list li:last-child {
+ margin-bottom: 0;
+}
+
+/* Ha a szerkesztő felsorolás helyett bekezdéseket ír, azok se lógjanak ki. */
+.karrier-section-list p {
+ margin-bottom: 0.5em;
+}
+
+.karrier-section-list p:last-child {
+ margin-bottom: 0;
+}
+
/* Egyéb formázások, ha szükséges (pl. linkek, címsorok, stb.) */
.rich-text-content a {
color: theme('colors.frtRed');
diff --git a/src/app/(app)/kapcsolat/page.tsx b/src/app/(app)/kapcsolat/page.tsx
index 66622bc..30a5728 100644
--- a/src/app/(app)/kapcsolat/page.tsx
+++ b/src/app/(app)/kapcsolat/page.tsx
@@ -50,12 +50,12 @@ export default async function ContactPage (props: { searchParams?: Promise
-
- {lang === 'en' ? 'Event Exhibition Request' : 'Rendezvényen való kiállítási igény'}
-
+ {lang === 'en' ? (contact.exhibitionLabelEng || 'Event Exhibition Request') : (contact.exhibitionLabel || 'Rendezvényen való kiállítási igény')}
+ }
diff --git a/src/app/(app)/karrier/career-config.ts b/src/app/(app)/karrier/career-config.ts
new file mode 100644
index 0000000..0245bb3
--- /dev/null
+++ b/src/app/(app)/karrier/career-config.ts
@@ -0,0 +1,22 @@
+import type { CareerSetting } from "@/payload-types"
+import type { ApplicationConfig } from "./types"
+
+/**
+ * A "Karrier oldal" globális beállításból egyetlen, a nézetben közvetlenül
+ * használható objektumot állít elő, hogy a komponensekben ne kelljen újra és
+ * újra a nullable CMS mezőkkel bajlódni.
+ */
+export function resolveApplicationConfig(
+ settings: CareerSetting | null,
+ isEn: boolean,
+ closedTextFallback: string,
+): ApplicationConfig {
+ const closedText = isEn ? settings?.applicationsClosedTextEng : settings?.applicationsClosedText
+
+ return {
+ isOpen: settings?.applicationsOpen !== false,
+ useBuiltInForm: (settings?.applicationMode ?? "builtIn") === "builtIn",
+ googleFormUrl: settings?.googleFormUrl?.trim() || null,
+ closedText: closedText?.trim() || closedTextFallback,
+ }
+}
diff --git a/src/app/(app)/karrier/career-page-client.tsx b/src/app/(app)/karrier/career-page-client.tsx
new file mode 100644
index 0000000..a82c9ec
--- /dev/null
+++ b/src/app/(app)/karrier/career-page-client.tsx
@@ -0,0 +1,145 @@
+"use client"
+
+import type { CareerSetting, Recruitment } from "@/payload-types"
+import { RichText } from "@payloadcms/richtext-lexical/react"
+import { resolveFormConfig } from "@/lib/career-form"
+import { resolveApplicationConfig } from "./career-config"
+import ApplicationForm from "./components/application-form"
+import ApplyButton from "./components/apply-button"
+import CareerFaq from "./components/career-faq"
+import CareerGroup from "./components/career-group"
+import CareerSidebar from "./components/career-sidebar"
+import { careerTexts, isEnglish } from "./translations"
+import { useCareerPage } from "./use-career-page"
+
+interface CareerPageClientProps {
+ recruitmentData: Recruitment[]
+ careerSettings: CareerSetting | null
+ lang: string
+}
+
+export default function CareerPageClient({
+ recruitmentData,
+ careerSettings,
+ lang,
+}: CareerPageClientProps) {
+ const isEn = isEnglish(lang)
+ const texts = careerTexts(isEn)
+ const application = resolveApplicationConfig(
+ careerSettings,
+ isEn,
+ texts.applicationsClosed,
+ )
+ const intro = isEn ? careerSettings?.introEng : careerSettings?.intro
+ const faqs = careerSettings?.faqs ?? []
+ const hasFaqs = faqs.some((item) =>
+ Boolean(
+ (isEn ? item.questionEng : item.question)?.trim() &&
+ (isEn ? item.answerEng : item.answer),
+ ),
+ )
+
+ const {
+ formRef,
+ openGroupIds,
+ openPositionKeys,
+ selectedPosition,
+ toggleGroup,
+ togglePosition,
+ openGroupAndScroll,
+ applyForPosition,
+ scrollToForm,
+ } = useCareerPage()
+
+ return (
+
+
+
+
+ {texts.title}
+
+
+ {intro ? (
+
+
+
+ ) : (
+
+ {texts.subtitle}
+
+ )}
+
+
+
+
+ {recruitmentData.map((group) => (
+ toggleGroup(group.id)}
+ onTogglePosition={togglePosition}
+ onApply={applyForPosition}
+ />
+ ))}
+
+
+
+
+
+ {!application.isOpen ? (
+
+
+ {application.closedText}
+
+
+ ) : application.useBuiltInForm ? (
+
+ ) : (
+ application.googleFormUrl && (
+
+
+ {texts.interested}
+
+
+
+ )
+ )}
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(app)/karrier/career-theme.css b/src/app/(app)/karrier/career-theme.css
new file mode 100644
index 0000000..1bbb856
--- /dev/null
+++ b/src/app/(app)/karrier/career-theme.css
@@ -0,0 +1,71 @@
+/* Career colors are independent of the legacy global utility overrides. */
+@theme inline {
+ --color-career-page: var(--career-page);
+ --color-career-surface: var(--career-surface);
+ --color-career-inset: var(--career-inset);
+ --color-career-hover: var(--career-hover);
+ --color-career-text: var(--career-text);
+ --color-career-muted: var(--career-muted);
+ --color-career-accent: var(--career-accent);
+ --color-career-accent-soft: var(--career-accent-soft);
+ --color-career-border: var(--career-border);
+ --color-career-input-border: var(--career-input-border);
+ --color-career-field: var(--career-field);
+ --color-career-action: var(--career-action);
+ --color-career-action-hover: var(--career-action-hover);
+ --color-career-on-action: var(--career-on-action);
+}
+
+.career-page {
+ --career-page: #000000;
+ --career-surface: #230505;
+ --career-inset: #140404;
+ --career-hover: #3b1015;
+ --career-text: #fafafa;
+ --career-muted: #c7babb;
+ --career-accent: #ff8290;
+ --career-accent-soft: #421820;
+ --career-border: #663b40;
+ --career-input-border: #927478;
+ --career-field: #080808;
+ --career-action: #d51028;
+ --career-action-hover: #b20e21;
+ --career-on-action: #ffffff;
+ background-color: var(--career-page);
+ color: var(--career-text);
+}
+
+html.light .career-page {
+ --career-page: #ffffff;
+ --career-surface: #f7f7f8;
+ --career-inset: #ffffff;
+ --career-hover: #f0e7e9;
+ --career-text: #211c22;
+ --career-muted: #59515a;
+ --career-accent: #b51025;
+ --career-accent-soft: #f9e4e7;
+ --career-border: #dad6d8;
+ --career-input-border: #82777b;
+ --career-field: #ffffff;
+}
+
+/* CMS paragraphs and headings follow their surrounding text hierarchy. */
+.career-page .rich-text-content :is(p, h1, h2, h3, h4, h5, h6, li) {
+ color: inherit;
+}
+
+.career-page .rich-text-content a {
+ color: var(--career-accent);
+ text-decoration: underline;
+ text-underline-offset: 3px;
+}
+
+.career-page :is(button, a, input, textarea, select, [tabindex]):focus-visible {
+ outline: 2px solid var(--career-accent);
+ outline-offset: 3px;
+}
+
+/* Inset outlines stay visible inside clipped accordion cards. */
+.career-page button[aria-expanded]:focus-visible {
+ outline-offset: -3px;
+}
diff --git a/src/app/(app)/karrier/components/application-form.tsx b/src/app/(app)/karrier/components/application-form.tsx
new file mode 100644
index 0000000..5f1df3f
--- /dev/null
+++ b/src/app/(app)/karrier/components/application-form.tsx
@@ -0,0 +1,403 @@
+"use client"
+
+import { AlertCircle, Loader2, Paperclip, X } from "lucide-react"
+import { useEffect, useRef, useState } from "react"
+import {
+ MAX_CV_SIZE,
+ validateAnswers,
+ type Answer,
+ type FormConfig,
+ type FormQuestion,
+} from "@/lib/career-form"
+import { applicationErrorText, applicationFormTexts } from "../translations"
+import type { SelectedPosition } from "../types"
+import { HoneypotField } from "./form-field"
+import SuccessCheck from "./success-check"
+
+interface ApplicationFormProps {
+ lang: string
+ isEn: boolean
+ selectedPosition: SelectedPosition | null
+ initialConfig: FormConfig
+}
+const INPUT_CLASS =
+ "w-full rounded-lg border border-career-input-border bg-career-field px-4 py-2.5 text-career-text placeholder:text-career-muted focus:border-career-accent focus:outline-none focus:ring-1 focus:ring-career-accent"
+
+function Question({
+ question: q,
+ value,
+ onChange,
+ isEn,
+ error,
+}: {
+ question: FormQuestion
+ value?: Answer
+ onChange: (value: Answer) => void
+ isEn: boolean
+ error: boolean
+}) {
+ const id = `application-${q.key}`
+ const label = isEn ? q.labelEng : q.label
+ const hint = isEn ? q.hintEng : q.hint
+ const labelContent = (
+ <>
+ {label}
+ {q.required ? (
+ " *"
+ ) : (
+
+ {" "}
+ ({isEn ? "optional" : "opcionális"})
+
+ )}
+ >
+ )
+ const common = {
+ id,
+ name: q.key,
+ "aria-invalid": error || undefined,
+ "aria-describedby": hint ? `${id}-hint` : undefined,
+ }
+ const onMultiChange = (key: string, checked: boolean) => {
+ const selected = Array.isArray(value) ? value : []
+ onChange(
+ checked ? [...selected, key] : selected.filter((v) => v !== key),
+ )
+ }
+ return (
+
+ )
+}
+
+export default function ApplicationForm({
+ lang,
+ isEn,
+ selectedPosition,
+ initialConfig,
+}: ApplicationFormProps) {
+ const [config, setConfig] = useState(initialConfig)
+ const [answers, setAnswers] = useState
>({})
+ const [website, setWebsite] = useState("")
+ const [cv, setCV] = useState(null)
+ const fileRef = useRef(null)
+ const [status, setStatus] = useState<
+ "idle" | "submitting" | "success" | "error"
+ >("idle")
+ const [errorMessage, setErrorMessage] = useState(null)
+ const [errorField, setErrorField] = useState()
+ const texts = applicationFormTexts(isEn)
+ useEffect(() => {
+ if (selectedPosition)
+ setAnswers((previous) => ({
+ ...previous,
+ groupName: selectedPosition.groupName,
+ positionName: selectedPosition.positionName,
+ }))
+ }, [selectedPosition])
+ const showError = (code: string, field?: string) => {
+ setErrorMessage(applicationErrorText(code, isEn))
+ setErrorField(field)
+ setStatus("error")
+ if (field)
+ requestAnimationFrame(() =>
+ document.getElementById(`application-${field}`)?.focus(),
+ )
+ }
+ const handleSubmit = async (event: React.FormEvent) => {
+ event.preventDefault()
+ const validated = validateAnswers(answers, config)
+ if (!validated.ok) {
+ showError(validated.error, validated.field)
+ return
+ }
+ setStatus("submitting")
+ setErrorMessage(null)
+ setErrorField(undefined)
+ const data = new FormData()
+ data.set(
+ "data",
+ JSON.stringify({
+ answers,
+ website,
+ language: lang,
+ formVersion: config.version,
+ }),
+ )
+ if (cv) data.set("cv", cv)
+ try {
+ const response = await fetch("/api/karrier/jelentkezes", {
+ method: "POST",
+ body: data,
+ })
+ const result = await response.json().catch(() => null)
+ if (!response.ok) {
+ if (result?.error === "FORM_CHANGED" && result.config)
+ setConfig(result.config)
+ showError(result?.error ?? "SERVER_ERROR", result?.field)
+ return
+ }
+ setAnswers({})
+ setCV(null)
+ setStatus("success")
+ } catch {
+ showError("SERVER_ERROR")
+ }
+ }
+ if (status === "success")
+ return (
+
+ )
+ const renderQuestion = (q: FormQuestion) => (
+
+ setAnswers((previous) => ({ ...previous, [q.key]: value }))
+ }
+ isEn={isEn}
+ error={errorField === q.key}
+ />
+ )
+ return (
+
+
{texts.heading}
+
{texts.lead}
+
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/apply-button.tsx b/src/app/(app)/karrier/components/apply-button.tsx
new file mode 100644
index 0000000..9aacb39
--- /dev/null
+++ b/src/app/(app)/karrier/components/apply-button.tsx
@@ -0,0 +1,41 @@
+"use client"
+
+import type { ApplicationConfig } from "../types"
+
+interface ApplyButtonProps {
+ label: string
+ application: ApplicationConfig
+ /** Csak beépített űrlap esetén hívjuk; külső űrlapnál linkként viselkedik. */
+ onApply: () => void
+ /** Méret és szélesség a használat helye szerint. */
+ className?: string
+}
+
+const BASE_CLASS = "inline-block rounded-lg bg-career-action font-bold text-career-on-action transition-colors hover:bg-career-action-hover"
+
+/**
+ * A "Jelentkezz" gomb a beállított jelentkezési mód szerint gomb vagy külső
+ * link. Külső űrlap módban link hiányában semmit nem rajzolunk.
+ */
+export default function ApplyButton({ label, application, onApply, className = "px-5 py-2.5" }: ApplyButtonProps) {
+ if (application.useBuiltInForm) {
+ return (
+
+ )
+ }
+
+ if (!application.googleFormUrl) return null
+
+ return (
+
+ {label}
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/career-faq.tsx b/src/app/(app)/karrier/components/career-faq.tsx
new file mode 100644
index 0000000..c5735d2
--- /dev/null
+++ b/src/app/(app)/karrier/components/career-faq.tsx
@@ -0,0 +1,95 @@
+"use client"
+
+import type { CareerSetting } from "@/payload-types"
+import { RichText } from "@payloadcms/richtext-lexical/react"
+import { ChevronDown } from "lucide-react"
+import { useId, useState } from "react"
+import type { CareerTexts } from "../translations"
+
+type CareerFaqItem = NonNullable[number]
+
+interface CareerFaqProps {
+ items: CareerFaqItem[]
+ isEn: boolean
+ texts: CareerTexts
+}
+
+function itemKey(item: CareerFaqItem, index: number) {
+ return String(item.id ?? index)
+}
+
+/** A karrieroldal alján megjelenő, CMS-ből szerkeszthető kérdés-válasz lista. */
+export default function CareerFaq({ items, isEn, texts }: CareerFaqProps) {
+ const sectionId = useId()
+ const visibleItems = items.filter((item) => {
+ const question = isEn ? item.questionEng : item.question
+ const answer = isEn ? item.answerEng : item.answer
+ return Boolean(question?.trim() && answer)
+ })
+ const [openItemKey, setOpenItemKey] = useState(() =>
+ visibleItems[0] ? itemKey(visibleItems[0], 0) : null,
+ )
+
+ if (visibleItems.length === 0) return null
+
+ return (
+
+
+
+ {texts.faqTitle}
+
+
+ {texts.faqLead}
+
+
+
+
+ {visibleItems.map((item, index) => {
+ const key = itemKey(item, index)
+ const isOpen = openItemKey === key
+ const question = isEn ? item.questionEng : item.question
+ const answer = isEn ? item.answerEng : item.answer
+ const buttonId = `${sectionId}-question-${index}`
+ const panelId = `${sectionId}-answer-${index}`
+
+ return (
+
+
+
+
+
+ {isOpen && (
+
+ )}
+
+ )
+ })}
+
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/career-group.tsx b/src/app/(app)/karrier/components/career-group.tsx
new file mode 100644
index 0000000..b838284
--- /dev/null
+++ b/src/app/(app)/karrier/components/career-group.tsx
@@ -0,0 +1,123 @@
+"use client"
+
+import { RichText } from "@payloadcms/richtext-lexical/react"
+import { ChevronDown } from "lucide-react"
+import Image from "next/image"
+import { openPositionsLabel, type CareerTexts } from "../translations"
+import type { ApplicationConfig, CareerGroupData, SelectedPosition } from "../types"
+import CareerPosition from "./career-position"
+
+interface CareerGroupProps {
+ group: CareerGroupData
+ isOpen: boolean
+ openPositionKeys: Set
+ isEn: boolean
+ texts: CareerTexts
+ application: ApplicationConfig
+ onToggle: () => void
+ onTogglePosition: (key: string) => void
+ onApply: (position: SelectedPosition) => void
+}
+
+function groupImageUrl(group: CareerGroupData) {
+ return typeof group.image === "object" && group.image !== null && group.image.url ? group.image.url : null
+}
+
+/** Egy csoport lekattintható sávja és a benne lévő nyitott pozíciók. */
+export default function CareerGroup({
+ group,
+ isOpen,
+ openPositionKeys,
+ isEn,
+ texts,
+ application,
+ onToggle,
+ onTogglePosition,
+ onApply,
+}: CareerGroupProps) {
+ const groupName = isEn ? group.groupNameEng : group.groupName
+ const openPositions = group.positions.filter((position) => position.positionOpen)
+ const imageUrl = groupImageUrl(group)
+ const panelId = `group-panel-${group.id}`
+
+ return (
+
+
+
+
+ {isOpen && (
+
+ {openPositions.length > 0 ? (
+
+ {openPositions.map((position, index) => {
+ const key = `${group.id}-${position.id ?? index}`
+ const positionName = isEn ? position.positionNameEng : position.positionName
+
+ return (
+ onTogglePosition(key)}
+ onApply={() => onApply({ groupName, positionName })}
+ />
+ )
+ })}
+
+ ) : (
+
{texts.noOpenPositions}
+ )}
+
+ )}
+
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/career-position.tsx b/src/app/(app)/karrier/components/career-position.tsx
new file mode 100644
index 0000000..32b9d85
--- /dev/null
+++ b/src/app/(app)/karrier/components/career-position.tsx
@@ -0,0 +1,75 @@
+"use client"
+
+import { RichText } from "@payloadcms/richtext-lexical/react"
+import { ChevronDown } from "lucide-react"
+import type { CareerTexts } from "../translations"
+import type { ApplicationConfig, Position } from "../types"
+import ApplyButton from "./apply-button"
+import PositionHighlights from "./position-highlights"
+import PositionSections from "./position-sections"
+
+interface CareerPositionProps {
+ position: Position
+ positionName: string
+ panelId: string
+ isOpen: boolean
+ isEn: boolean
+ texts: CareerTexts
+ application: ApplicationConfig
+ onToggle: () => void
+ onApply: () => void
+}
+
+/** Egy nyitott pozíció lenyíló sora a csoport panelén belül. */
+export default function CareerPosition({
+ position,
+ positionName,
+ panelId,
+ isOpen,
+ isEn,
+ texts,
+ application,
+ onToggle,
+ onApply,
+}: CareerPositionProps) {
+ const description = isEn ? position.positionDescriptionEng : position.positionDescription
+
+ return (
+
+
+
+ {isOpen && (
+
+ {description && (
+
+
+
+ )}
+
+
+
+
+
+ {application.isOpen && (
+
+ )}
+
+ )}
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/career-sidebar.tsx b/src/app/(app)/karrier/components/career-sidebar.tsx
new file mode 100644
index 0000000..27a6358
--- /dev/null
+++ b/src/app/(app)/karrier/components/career-sidebar.tsx
@@ -0,0 +1,98 @@
+"use client"
+
+import { ChevronDown } from "lucide-react"
+import { useId, useState } from "react"
+import type { CareerTexts } from "../translations"
+import type { ApplicationConfig, CareerGroupData } from "../types"
+import { scrollIntoViewBelowNavbar } from "../use-career-page"
+import ApplyButton from "./apply-button"
+
+interface CareerSidebarProps {
+ groups: CareerGroupData[]
+ isEn: boolean
+ texts: CareerTexts
+ application: ApplicationConfig
+ onSelectGroup: (groupId: number) => void
+ onApply: () => void
+ hasFaqs: boolean
+}
+
+export default function CareerSidebar({
+ groups,
+ isEn,
+ texts,
+ application,
+ onSelectGroup,
+ onApply,
+ hasFaqs,
+}: CareerSidebarProps) {
+ const [open, setOpen] = useState(false)
+ const listId = useId()
+ return (
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/form-field.tsx b/src/app/(app)/karrier/components/form-field.tsx
new file mode 100644
index 0000000..d415124
--- /dev/null
+++ b/src/app/(app)/karrier/components/form-field.tsx
@@ -0,0 +1,127 @@
+"use client"
+
+const INPUT_CLASS =
+ "w-full rounded-lg border border-white/15 bg-black/40 px-4 py-2.5 text-white placeholder:text-gray-500 focus:border-frtRed focus:outline-none focus:ring-1 focus:ring-frtRed"
+const LABEL_CLASS = "mb-1.5 block text-sm font-medium text-gray-200"
+
+interface LabelParts {
+ label: string
+ required?: boolean
+ /** Pl. „opcionális" — halványan a címke mögé kerül. */
+ hint?: string
+}
+
+interface FieldLabelProps extends LabelParts {
+ htmlFor: string
+}
+
+function FieldLabel({ htmlFor, label, required, hint }: FieldLabelProps) {
+ return (
+
+ )
+}
+
+interface TextFieldProps extends LabelParts {
+ id: string
+ value: string
+ onChange: (value: string) => void
+ type?: "text" | "email" | "tel"
+ autoComplete?: string
+}
+
+export function TextField({ id, label, value, onChange, type = "text", required, hint, autoComplete }: TextFieldProps) {
+ return (
+
+
+ onChange(event.target.value)}
+ />
+
+ )
+}
+
+interface TextAreaFieldProps extends LabelParts {
+ id: string
+ value: string
+ onChange: (value: string) => void
+ rows?: number
+}
+
+export function TextAreaField({ id, label, value, onChange, rows = 5, required, hint }: TextAreaFieldProps) {
+ return (
+
+
+
+ )
+}
+
+interface CheckboxFieldProps {
+ id: string
+ label: string
+ checked: boolean
+ onChange: (checked: boolean) => void
+ required?: boolean
+}
+
+export function CheckboxField({ id, label, checked, onChange, required }: CheckboxFieldProps) {
+ return (
+
+ onChange(event.target.checked)}
+ />
+
+
+ )
+}
+
+interface HoneypotFieldProps {
+ value: string
+ onChange: (value: string) => void
+}
+
+/** Csapda mező botoknak — valódi látogató nem látja és nem tölti ki. */
+export function HoneypotField({ value, onChange }: HoneypotFieldProps) {
+ return (
+
+
+ onChange(event.target.value)}
+ />
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/position-highlights.tsx b/src/app/(app)/karrier/components/position-highlights.tsx
new file mode 100644
index 0000000..a6014a7
--- /dev/null
+++ b/src/app/(app)/karrier/components/position-highlights.tsx
@@ -0,0 +1,51 @@
+import { Clock, GraduationCap, Wrench } from "lucide-react"
+import type { CareerTexts } from "../translations"
+import type { Position } from "../types"
+
+interface PositionHighlightsProps {
+ position: Position
+ texts: CareerTexts
+ isEn: boolean
+}
+
+/**
+ * A pozíció leírása alatti három kiemelt tudnivaló. Az üresen hagyott mezők
+ * kimaradnak; ha egyik sincs kitöltve, a blokk sem jelenik meg.
+ */
+export default function PositionHighlights({ position, texts, isEn }: PositionHighlightsProps) {
+ const { highlights } = position
+
+ const items = [
+ {
+ icon: GraduationCap,
+ label: texts.joining,
+ value: isEn ? highlights?.joiningEng : highlights?.joining,
+ },
+ {
+ icon: Clock,
+ label: texts.timeCommitment,
+ value: isEn ? highlights?.timeCommitmentEng : highlights?.timeCommitment,
+ },
+ {
+ icon: Wrench,
+ label: texts.subsystem,
+ value: isEn ? highlights?.subsystemEng : highlights?.subsystem,
+ },
+ ].filter((item) => item.value)
+
+ if (items.length === 0) return null
+
+ return (
+
+ {items.map(({ icon: Icon, label, value }) => (
+
+ ))}
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/position-sections.tsx b/src/app/(app)/karrier/components/position-sections.tsx
new file mode 100644
index 0000000..8e51b79
--- /dev/null
+++ b/src/app/(app)/karrier/components/position-sections.tsx
@@ -0,0 +1,32 @@
+import { RichText } from "@payloadcms/richtext-lexical/react"
+import type { PositionSection } from "../types"
+
+interface PositionSectionsProps {
+ sections: PositionSection[]
+ isEn: boolean
+}
+
+/**
+ * A pozíció leírása szekciókra bontva (pl. Feladatok, Szükséges skillek).
+ * A szekció ikonja a CMS-ben a címbe írt emoji, a felsorolás formázását a
+ * `.karrier-section-list` osztály adja.
+ */
+export default function PositionSections({ sections, isEn }: PositionSectionsProps) {
+ if (sections.length === 0) return null
+
+ return (
+
+ {sections.map((section, index) => (
+
+ {/* word-spacing: a címbe írt emoji után szűk a sima szóköz */}
+
+ {isEn ? section.sectionTitleEng : section.sectionTitle}
+
+
+
+
+
+ ))}
+
+ )
+}
diff --git a/src/app/(app)/karrier/components/success-check.module.css b/src/app/(app)/karrier/components/success-check.module.css
new file mode 100644
index 0000000..32c2268
--- /dev/null
+++ b/src/app/(app)/karrier/components/success-check.module.css
@@ -0,0 +1,43 @@
+.icon {
+ display: block;
+}
+
+.ring,
+.check {
+ stroke-dasharray: 1;
+ stroke-dashoffset: 0;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .icon {
+ animation: appear 420ms cubic-bezier(0.16, 1, 0.3, 1) both;
+ }
+
+ .ring {
+ animation: draw 360ms ease-out both;
+ }
+
+ .check {
+ animation: draw 260ms 180ms ease-out both;
+ }
+}
+
+@keyframes appear {
+ from {
+ opacity: 0;
+ transform: scale(0.88);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1);
+ }
+}
+
+@keyframes draw {
+ from {
+ stroke-dashoffset: 1;
+ }
+ to {
+ stroke-dashoffset: 0;
+ }
+}
diff --git a/src/app/(app)/karrier/components/success-check.tsx b/src/app/(app)/karrier/components/success-check.tsx
new file mode 100644
index 0000000..c2d9919
--- /dev/null
+++ b/src/app/(app)/karrier/components/success-check.tsx
@@ -0,0 +1,37 @@
+import styles from "./success-check.module.css"
+
+export default function SuccessCheck() {
+ return (
+
+ )
+}
diff --git a/src/app/(app)/tagfelvetel/error.tsx b/src/app/(app)/karrier/error.tsx
similarity index 74%
rename from src/app/(app)/tagfelvetel/error.tsx
rename to src/app/(app)/karrier/error.tsx
index 198b9a5..3bb1e8f 100644
--- a/src/app/(app)/tagfelvetel/error.tsx
+++ b/src/app/(app)/karrier/error.tsx
@@ -15,14 +15,14 @@ export default function Error({
}, [error])
return (
-
+
Hiba történt
-
Nem sikerült betölteni a tagfelvételi adatokat.
+
Nem sikerült betölteni a karrier oldal adatait.
diff --git a/src/app/(app)/karrier/loading.tsx b/src/app/(app)/karrier/loading.tsx
new file mode 100644
index 0000000..3f7bc4e
--- /dev/null
+++ b/src/app/(app)/karrier/loading.tsx
@@ -0,0 +1,27 @@
+export default function Loading() {
+ return (
+
+
+
+
+
+
+
+ {[1, 2, 3].map((i) => (
+
+ ))}
+
+
+
+ )
+}
diff --git a/src/app/(app)/karrier/page.tsx b/src/app/(app)/karrier/page.tsx
new file mode 100644
index 0000000..31718e9
--- /dev/null
+++ b/src/app/(app)/karrier/page.tsx
@@ -0,0 +1,32 @@
+import { getCareerSettings, getRecruitmentData } from "@/lib/payload-cms";
+import CareerPageClient from "./career-page-client";
+
+export const metadata = {
+ title: "Karrier",
+ description: "Csatlakozz a csapatunkhoz — csoportjaink és nyitott pozícióink",
+}
+
+type CareerPageProps = {
+ searchParams?: Promise
>;
+}
+
+export default async function CareerPage(props: CareerPageProps) {
+ // Nyelvi paraméter kezelése
+ let lang = 'hu';
+ if (props?.searchParams) {
+ const sp = await props.searchParams;
+ lang = sp && 'lang' in sp && sp.lang === 'en' ? 'en' : 'hu';
+ }
+
+ // Fetch data on the server
+ const [recruitmentData, careerSettings] = await Promise.all([
+ getRecruitmentData(),
+ getCareerSettings(),
+ ])
+
+ return
+}
diff --git a/src/app/(app)/karrier/translations.ts b/src/app/(app)/karrier/translations.ts
new file mode 100644
index 0000000..28af6f4
--- /dev/null
+++ b/src/app/(app)/karrier/translations.ts
@@ -0,0 +1,99 @@
+/**
+ * A Karrier oldal szövegei egy helyen. Az oldal a `?lang=en` paraméterrel vált
+ * nyelvet, ahogy a többi oldal is.
+ */
+
+export const isEnglish = (lang: string) => lang === "en"
+
+export type CareerTexts = ReturnType
+export type ApplicationFormTexts = ReturnType
+
+export function careerTexts(isEn: boolean) {
+ return {
+ title: isEn ? "Join our team!" : "Csatlakozz csapatunkhoz!",
+ subtitle: isEn ? "Join the team" : "Csatlakozz a csapathoz",
+ groups: isEn ? "Groups" : "Csoportok",
+ noOpenPositions: isEn
+ ? "There are no open positions in this group at the moment."
+ : "Jelenleg nincs nyitott pozíció ebben a csoportban.",
+ noOpenPositionsShort: isEn ? "No open positions" : "Nincs nyitott pozíció",
+ interested: isEn ? "Interested in any of these positions?" : "Érdeklődsz valamelyik pozíció iránt?",
+ apply: isEn ? "Apply now!" : "Jelentkezz most!",
+ applyForThis: isEn ? "Apply for this position" : "Jelentkezem erre a pozícióra",
+ joining: isEn ? "Joining" : "Csatlakozás",
+ timeCommitment: isEn ? "Time commitment" : "Időráfordítás",
+ subsystem: isEn ? "Subsystem" : "Részegység",
+ applicationsClosed: isEn
+ ? "Applications are currently closed. Come back soon!"
+ : "A jelentkezés jelenleg zárva. Nézz vissza hamarosan!",
+ faqTitle: isEn ? "Frequently asked questions" : "Gyakran ismételt kérdések",
+ faqLead: isEn
+ ? "We have collected the questions that most often come up during recruitment."
+ : "Összegyűjtöttük a tagfelvétel során leggyakrabban felmerülő kérdéseket.",
+ }
+}
+
+/** Magyarul a szám után egyes szám áll, angolul a darabszámtól függ. */
+export function openPositionsLabel(count: number, isEn: boolean) {
+ return isEn ? `${count} open position${count === 1 ? "" : "s"}` : `${count} nyitott pozíció`
+}
+
+export function applicationFormTexts(isEn: boolean) {
+ return {
+ heading: isEn ? "Application" : "Jelentkezés",
+ lead: isEn
+ ? "Fill in the form below and we will get back to you by email."
+ : "Töltsd ki az alábbi űrlapot, és e-mailben keresünk meg téged.",
+ name: isEn ? "Name" : "Név",
+ email: isEn ? "Email address" : "E-mail cím",
+ phone: isEn ? "Phone number" : "Telefonszám",
+ university: isEn ? "University / faculty" : "Egyetem / kar",
+ major: isEn ? "Major" : "Szak",
+ semester: isEn ? "Semester" : "Hányadik félév",
+ group: isEn ? "Group" : "Csoport",
+ position: isEn ? "Position" : "Pozíció",
+ motivation: isEn ? "Motivation / message" : "Motiváció / üzenet",
+ consent: isEn
+ ? "I consent to the processing of my personal data for the purpose of the application."
+ : "Hozzájárulok a személyes adataim kezeléséhez a jelentkezés elbírálása céljából.",
+ optional: isEn ? "optional" : "opcionális",
+ submit: isEn ? "Send application" : "Jelentkezés beküldése",
+ submitting: isEn ? "Sending…" : "Küldés…",
+ success: isEn
+ ? "Thank you! We have received your application and will contact you soon."
+ : "Köszönjük! Megkaptuk a jelentkezésed, hamarosan keresünk.",
+ }
+}
+
+/** A szerver hibakódjaihoz tartozó, felhasználónak szóló üzenetek. */
+export function applicationErrorText(code: string, isEn: boolean) {
+ switch (code) {
+ case "FORM_CHANGED":
+ return isEn ? "The form has changed. Your answers and file have been kept. Please review the updated questions and submit again." : "Az űrlap közben megváltozott. A válaszaid és a fájlod megmaradtak. Ellenőrizd a frissített kérdéseket, majd küldd be újra."
+ case "INVALID_ANSWER":
+ return isEn ? "Please check the selected answer." : "Kérlek, ellenőrizd a megadott választ."
+ case "ANSWER_TOO_LONG":
+ return isEn ? "This answer is too long. Please shorten it." : "Ez a válasz túl hosszú. Kérlek, rövidítsd le."
+ case "CV_TOO_LARGE":
+ case "BODY_TOO_LARGE":
+ return isEn ? "The upload is too large. The PDF may be at most 5 MiB." : "A feltöltés túl nagy. A PDF legfeljebb 5 MiB lehet."
+ case "INVALID_CV":
+ return isEn ? "Please choose a valid, unencrypted PDF document." : "Kérlek, válassz érvényes, jelszóval nem védett PDF-dokumentumot."
+ case "MISSING_FIELDS":
+ return isEn
+ ? "Please fill in the required fields and accept the data processing consent."
+ : "Kérlek, töltsd ki a kötelező mezőket és fogadd el az adatkezelési hozzájárulást."
+ case "INVALID_EMAIL":
+ return isEn ? "Please enter a valid email address." : "Kérlek, adj meg egy érvényes e-mail címet."
+ case "TOO_MANY_REQUESTS":
+ return isEn
+ ? "Too many submissions. Please try again in a minute."
+ : "Túl sok beküldés. Kérlek, próbáld újra egy perc múlva."
+ case "APPLICATIONS_CLOSED":
+ return isEn ? "Applications are currently closed." : "A jelentkezés jelenleg zárva."
+ default:
+ return isEn
+ ? "Something went wrong. Please try again later."
+ : "Valami hiba történt. Kérlek, próbáld újra később."
+ }
+}
diff --git a/src/app/(app)/karrier/types.ts b/src/app/(app)/karrier/types.ts
new file mode 100644
index 0000000..80adc55
--- /dev/null
+++ b/src/app/(app)/karrier/types.ts
@@ -0,0 +1,19 @@
+import type { Recruitment } from "@/payload-types"
+
+export type CareerGroupData = Recruitment
+export type Position = Recruitment["positions"][number]
+export type PositionSection = NonNullable[number]
+
+/** A pozíciónál indított jelentkezés tölti ki ezzel az űrlap két mezőjét. */
+export type SelectedPosition = {
+ groupName: string
+ positionName: string
+}
+
+/** A CMS beállításaiból kiszámolt jelentkezési mód. */
+export type ApplicationConfig = {
+ isOpen: boolean
+ useBuiltInForm: boolean
+ googleFormUrl: string | null
+ closedText: string
+}
diff --git a/src/app/(app)/karrier/use-career-page.ts b/src/app/(app)/karrier/use-career-page.ts
new file mode 100644
index 0000000..ce6984d
--- /dev/null
+++ b/src/app/(app)/karrier/use-career-page.ts
@@ -0,0 +1,73 @@
+"use client"
+
+import { useCallback, useRef, useState } from "react"
+import type { SelectedPosition } from "./types"
+
+const FALLBACK_NAVBAR_HEIGHT = 80
+const SCROLL_GAP = 20
+
+export function scrollIntoViewBelowNavbar(element: HTMLElement | null) {
+ if (!element) return
+ element.focus({ preventScroll: true })
+
+ const navbar = document.querySelector("nav")
+ const navbarHeight = navbar ? navbar.offsetHeight : FALLBACK_NAVBAR_HEIGHT
+ const top = element.getBoundingClientRect().top + window.scrollY - navbarHeight - SCROLL_GAP
+
+ window.scrollTo({ top, behavior: window.matchMedia("(prefers-reduced-motion: reduce)").matches ? "instant" : "smooth" })
+}
+
+function toggleInSet(set: Set, value: T) {
+ const next = new Set(set)
+ if (!next.delete(value)) next.add(value)
+ return next
+}
+
+/**
+ * A Karrier oldal interakciós állapota: melyik csoportok és pozíciók vannak
+ * nyitva, melyik pozícióra indult jelentkezés, és a görgetés az űrlaphoz.
+ * Egyszerre tetszőleges számú lenyíló lehet nyitva, ezért halmazokat tárolunk.
+ */
+export function useCareerPage() {
+ const [openGroupIds, setOpenGroupIds] = useState>(new Set())
+ const [openPositionKeys, setOpenPositionKeys] = useState>(new Set())
+ const [selectedPosition, setSelectedPosition] = useState(null)
+ const formRef = useRef(null)
+
+ const toggleGroup = useCallback((groupId: number) => {
+ setOpenGroupIds((previous) => toggleInSet(previous, groupId))
+ }, [])
+
+ const togglePosition = useCallback((key: string) => {
+ setOpenPositionKeys((previous) => toggleInSet(previous, key))
+ }, [])
+
+ const scrollToForm = useCallback(() => {
+ scrollIntoViewBelowNavbar(formRef.current)
+ }, [])
+
+ const openGroupAndScroll = useCallback((groupId: number) => {
+ // Az oldalsávból mindig nyitunk (nem váltunk), a többi nyitott csoport marad.
+ setOpenGroupIds((previous) => new Set(previous).add(groupId))
+ // A megnyitás után egy kirajzolással később görgetünk, hogy a kinyílt
+ // tartalom már a helyén legyen.
+ requestAnimationFrame(() => scrollIntoViewBelowNavbar(document.getElementById(`group-${groupId}`)))
+ }, [])
+
+ const applyForPosition = useCallback((position: SelectedPosition) => {
+ setSelectedPosition(position)
+ requestAnimationFrame(() => scrollIntoViewBelowNavbar(formRef.current))
+ }, [])
+
+ return {
+ formRef,
+ openGroupIds,
+ openPositionKeys,
+ selectedPosition,
+ toggleGroup,
+ togglePosition,
+ openGroupAndScroll,
+ applyForPosition,
+ scrollToForm,
+ }
+}
diff --git a/src/app/(app)/not-found/page.tsx b/src/app/(app)/not-found/page.tsx
index cd47d4e..a987f4f 100644
--- a/src/app/(app)/not-found/page.tsx
+++ b/src/app/(app)/not-found/page.tsx
@@ -25,7 +25,7 @@ function NotFoundContent() {
back: "Vissza",
links: "Hasznos linkek",
news: "Hírek",
- recruitment: "Tagfelvétel",
+ recruitment: "Karrier",
about: "Rólunk",
supportUs: "Támogass minket"
},
@@ -37,7 +37,7 @@ function NotFoundContent() {
back: "Back",
links: "Useful links",
news: "News",
- recruitment: "Recruitment",
+ recruitment: "Careers",
about: "About us",
supportUs: "Support us"
}
@@ -93,7 +93,7 @@ function NotFoundContent() {
{t.news}
{t.recruitment}
diff --git a/src/app/(app)/tagfelvetel/loading.tsx b/src/app/(app)/tagfelvetel/loading.tsx
deleted file mode 100644
index 13e2a80..0000000
--- a/src/app/(app)/tagfelvetel/loading.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-export default function Loading() {
- return (
-
-
-
-
-
-
-
-
- {[1, 2].map((i) => (
-
- ))}
-
-
-
-
-
-
-
- {[1, 2].map((i) => (
-
- ))}
-
-
-
-
- )
-}
diff --git a/src/app/(app)/tagfelvetel/page.tsx b/src/app/(app)/tagfelvetel/page.tsx
deleted file mode 100644
index 86e3b3d..0000000
--- a/src/app/(app)/tagfelvetel/page.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import { getRecruitmentData } from "@/lib/payload-cms";
-import RecruitmentPageClient from "./recruitment-page-client";
-
-export const metadata = {
- title: "Tavaszi tagfelvétel",
- description: "Nyitott pozíciók a csapatunkban",
-}
-
-type RecruitmentPageProps = {
- searchParams?: Promise>;
-}
-
-export default async function RecruitmentPage(props: RecruitmentPageProps) {
- // Nyelvi paraméter kezelése
- let lang = 'hu';
- if (props?.searchParams) {
- const sp = await props.searchParams;
- lang = sp && 'lang' in sp && sp.lang === 'en' ? 'en' : 'hu';
- }
-
- // Fetch data on the server
- const recruitmentData = await getRecruitmentData()
-
- return
-}
diff --git a/src/app/(app)/tagfelvetel/recruitment-page-client.tsx b/src/app/(app)/tagfelvetel/recruitment-page-client.tsx
deleted file mode 100644
index ba5f5d3..0000000
--- a/src/app/(app)/tagfelvetel/recruitment-page-client.tsx
+++ /dev/null
@@ -1,173 +0,0 @@
-"use client"
-import { RichText } from "@payloadcms/richtext-lexical/react"
-import {Recruitment} from "@/payload-types";
-
-interface TOCItem {
- id: string
- title: string
- level: number
-}
-
-interface RecruitmentPageClientProps {
- recruitmentData: Recruitment[]
- lang: string
-}
-
-export default function RecruitmentPageClient({ recruitmentData, lang }: RecruitmentPageClientProps) {
- // Check if there are any open positions
- const hasOpenPositions = recruitmentData.some((group) => group.positions.some((position) => position.positionOpen))
-
- // Fordítások kezelése
- const translations = {
- title: lang === "en" ? "Spring Recruitment" : "Tavaszi tagfelvétel",
- noPositions: lang === "en" ? "There are currently no open positions." : "Jelenleg nincsenek nyitott pozíciók.",
- interested: lang === "en" ? "Interested in any of these positions?" : "Érdeklődsz valamelyik pozíció iránt?",
- apply: lang === "en" ? "Apply now!" : "Jelentkezz most!",
- }
-
- // Generate table of contents items
- const tocItems: TOCItem[] = []
-
- // Add groups with open positions to TOC
- recruitmentData.forEach((group) => {
- const openPositions = group.positions.filter((position) => position.positionOpen)
- if (openPositions.length > 0) {
- tocItems.push({
- id: `group-${group.id}`,
- title: lang === "en" ? group.groupNameEng : group.groupName,
- level: 0,
- })
- }
- })
-
- // Improved scroll function that accounts for navbar height
- const scrollToSection = (id: string) => {
- const element = document.getElementById(id)
- if (element) {
- // Get navbar height to offset the scroll position
- const navbar = document.querySelector("nav")
- const navbarHeight = navbar ? navbar.offsetHeight : 80 // Default to 80px if navbar not found
-
- const elementPosition = element.getBoundingClientRect().top + window.pageYOffset
- const offsetPosition = elementPosition - navbarHeight - 20 // Extra 20px for spacing
-
- window.scrollTo({
- top: offsetPosition,
- behavior: "smooth"
- })
- }
- }
-
- if (!hasOpenPositions) {
- return (
-
-
-
{translations.title}
-
{translations.noPositions}
-
-
- )
- }
-
- return (
-
-
- {/* Main Content */}
-
-
- {translations.title}
-
-
- {recruitmentData.map((group, groupIdx) => {
- // Filter only open positions
- const openPositions = group.positions.filter((position) => position.positionOpen)
-
- // Skip groups with no open positions
- if (openPositions.length === 0) return null
-
- const isLastGroup =
- recruitmentData.filter((g) => g.positions.some((p) => p.positionOpen)).length - 1 === groupIdx
-
- return (
-
-
-
-
{lang === "en" ? group.groupNameEng : group.groupName}
-
-
-
-
-
-
- {openPositions.map((position) => (
-
-
- {lang === "en" ? position.positionNameEng : position.positionName}
-
-
-
-
-
- ))}
-
-
- {!isLastGroup &&
}
-
- )
- })}
-
-
-
-
- {/* Table of Contents Section - Now centered alongside content */}
-
-
-
{lang === "en" ? "Table of Contents" : "Tartalomjegyzék"}
-
-
-
- {/* Application Button Section - Separate from TOC */}
- {hasOpenPositions && (
-
- )}
-
-
-
- )
-}
diff --git a/src/app/(payload)/admin/importMap.js b/src/app/(payload)/admin/importMap.js
index af262d8..f91df03 100644
--- a/src/app/(payload)/admin/importMap.js
+++ b/src/app/(payload)/admin/importMap.js
@@ -23,6 +23,8 @@ import { BoldFeatureClient as BoldFeatureClient_e70f5e05f09f93e00b997edb1ef0c864
import { ItalicFeatureClient as ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
import { FixedToolbarFeatureClient as FixedToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864 } from '@payloadcms/richtext-lexical/client'
import { BulkUpload as BulkUpload_f78d2ec679640e7d1f31ce1bfa4679ca } from '../../../components/payload/BulkUpload'
+import { ResyncSheetButton as ResyncSheetButton_fc506d5d7c6da31bb9047d09d1630842 } from '../../../components/payload/ResyncSheetButton'
+import { FormQuestionRowLabel as FormQuestionRowLabel_a7bcd82cc9f2793c5e59ebf5fa65fa20 } from '../../../components/payload/FormQuestionRowLabel'
import { CollectionCards as CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1 } from '@payloadcms/next/rsc'
export const importMap = {
@@ -51,5 +53,7 @@ export const importMap = {
"@payloadcms/richtext-lexical/client#ItalicFeatureClient": ItalicFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
"@payloadcms/richtext-lexical/client#FixedToolbarFeatureClient": FixedToolbarFeatureClient_e70f5e05f09f93e00b997edb1ef0c864,
"/components/payload/BulkUpload#BulkUpload": BulkUpload_f78d2ec679640e7d1f31ce1bfa4679ca,
+ "/components/payload/ResyncSheetButton#ResyncSheetButton": ResyncSheetButton_fc506d5d7c6da31bb9047d09d1630842,
+ "/components/payload/FormQuestionRowLabel#FormQuestionRowLabel": FormQuestionRowLabel_a7bcd82cc9f2793c5e59ebf5fa65fa20,
"@payloadcms/next/rsc#CollectionCards": CollectionCards_f9c02e79a4aed9a3924487c0cd4cafb1
}
diff --git a/src/app/api/health/route.ts b/src/app/api/health/route.ts
new file mode 100644
index 0000000..771ff1e
--- /dev/null
+++ b/src/app/api/health/route.ts
@@ -0,0 +1,35 @@
+import config from "@payload-config";
+import { NextResponse } from "next/server";
+import { getPayload } from "payload";
+
+export const dynamic = "force-dynamic";
+export const runtime = "nodejs";
+
+export async function GET() {
+ try {
+ const payload = await getPayload({ config });
+
+ await payload.find({
+ collection: "users",
+ depth: 0,
+ limit: 1,
+ overrideAccess: true,
+ pagination: false,
+ });
+
+ return NextResponse.json(
+ { status: "ok" },
+ { headers: { "Cache-Control": "no-store" } },
+ );
+ } catch (error) {
+ console.error("Health check failed:", error);
+
+ return NextResponse.json(
+ { status: "unhealthy" },
+ {
+ status: 503,
+ headers: { "Cache-Control": "no-store" },
+ },
+ );
+ }
+}
diff --git a/src/app/api/karrier/jelentkezes/route.ts b/src/app/api/karrier/jelentkezes/route.ts
new file mode 100644
index 0000000..5e75fff
--- /dev/null
+++ b/src/app/api/karrier/jelentkezes/route.ts
@@ -0,0 +1,137 @@
+import { randomUUID } from "node:crypto";
+import {
+ ApplicationBodyError,
+ readApplicationBody,
+ validateCV,
+} from "@/lib/application-upload";
+import {
+ resolveFormConfig,
+ validateAnswers,
+ summarizeAnswers,
+ type CoreKey,
+} from "@/lib/career-form";
+import { syncApplicationToSheet } from "@/lib/karrier-sheet-sync";
+import { clientIp, createRateLimiter } from "@/lib/rate-limit";
+import config from "@payload-config";
+import { NextResponse } from "next/server";
+import { getPayload } from "payload";
+
+export const runtime = "nodejs";
+const isRateLimited = createRateLimiter({ windowMs: 60_000, max: 5 });
+const errorResponse = (error: string, status: number) =>
+ NextResponse.json({ error }, { status });
+
+export async function POST(request: Request) {
+ if (isRateLimited(clientIp(request)))
+ return errorResponse("TOO_MANY_REQUESTS", 429);
+ let cvId: number | undefined;
+ const payload = await getPayload({ config });
+ try {
+ const { body, cv } = await readApplicationBody(request);
+ if (typeof body.website === "string" && body.website.trim())
+ return NextResponse.json({ ok: true });
+ const settings = await payload.findGlobal({ slug: "career-settings" });
+ if (
+ settings.applicationsOpen === false ||
+ settings.applicationMode === "googleForm"
+ )
+ return errorResponse("APPLICATIONS_CLOSED", 403);
+ const formConfig = resolveFormConfig(settings);
+ if (
+ body.formVersion !== undefined &&
+ body.formVersion !== formConfig.version
+ )
+ return NextResponse.json(
+ { error: "FORM_CHANGED", config: formConfig },
+ { status: 409 },
+ );
+ const input = body.answers ?? body;
+ if (!input || typeof input !== "object" || Array.isArray(input))
+ return errorResponse("INVALID_BODY", 400);
+ const parsed = validateAnswers(
+ input as Record,
+ formConfig,
+ );
+ if (!parsed.ok)
+ return NextResponse.json(
+ { error: parsed.error, field: parsed.field },
+ { status: 400 },
+ );
+ const language = body.language === "en" ? "en" : "hu";
+ if (cv) {
+ const bytes = await validateCV(cv);
+ const uploaded = await payload.create({
+ collection: "application-cvs",
+ overrideAccess: true,
+ data: {},
+ file: {
+ data: bytes,
+ name: `${randomUUID()}.pdf`,
+ mimetype: "application/pdf",
+ size: bytes.length,
+ },
+ });
+ cvId = uploaded.id;
+ }
+ const textValue = (key: CoreKey) =>
+ typeof parsed.values[key] === "string"
+ ? (parsed.values[key] as string)
+ : "";
+ const doc = await payload.create({
+ collection: "job-applications",
+ overrideAccess: true,
+ context: { skipSheetSync: true },
+ data: {
+ name: textValue("name"),
+ email: textValue("email"),
+ phone: textValue("phone"),
+ university: textValue("university"),
+ major: textValue("major"),
+ semester: textValue("semester"),
+ groupName: textValue("groupName"),
+ positionName: textValue("positionName"),
+ motivation: textValue("motivation"),
+ consent: true,
+ cv: cvId,
+ language,
+ formVersion: formConfig.version,
+ answerSnapshot: parsed.snapshots,
+ answerSummary: summarizeAnswers(
+ parsed.snapshots,
+ language === "en",
+ true,
+ ),
+ },
+ });
+ // The application and file are committed before contacting the external spreadsheet.
+ cvId = undefined;
+ await syncApplicationToSheet(payload, doc);
+ return NextResponse.json({ ok: true });
+ } catch (error) {
+ if (cvId) {
+ try {
+ await payload.delete({
+ collection: "application-cvs",
+ id: cvId,
+ overrideAccess: true,
+ });
+ } catch (cleanupError) {
+ payload.logger.error(
+ {
+ errorType:
+ cleanupError instanceof Error ? cleanupError.name : "unknown",
+ cvId,
+ },
+ "Árva önéletrajz takarítása sikertelen",
+ );
+ }
+ }
+ if (error instanceof ApplicationBodyError)
+ return errorResponse(error.code, error.status);
+ payload.logger.error(
+ { errorType: error instanceof Error ? error.name : "unknown" },
+ "Jelentkezés mentése sikertelen",
+ );
+ return errorResponse("SERVER_ERROR", 500);
+ }
+}
diff --git a/src/collections/ApplicationCVs.ts b/src/collections/ApplicationCVs.ts
new file mode 100644
index 0000000..672744e
--- /dev/null
+++ b/src/collections/ApplicationCVs.ts
@@ -0,0 +1,27 @@
+import path from "node:path"
+import type { CollectionConfig } from "payload"
+
+export const ApplicationCVs: CollectionConfig = {
+ slug: "application-cvs",
+ labels: { singular: "Önéletrajz", plural: "Önéletrajzok" },
+ admin: { hidden: true },
+ access: {
+ create: () => false,
+ read: ({ req }) => !!req.user,
+ update: () => false,
+ delete: () => false,
+ },
+ upload: {
+ staticDir:
+ process.env.CV_STORAGE_DIR ||
+ path.resolve(process.cwd(), "private/cvs"),
+ mimeTypes: ["application/pdf"],
+ modifyResponseHeaders: ({ headers }) => {
+ headers.set("Cache-Control", "private, no-store")
+ headers.set("X-Content-Type-Options", "nosniff")
+ headers.set("Content-Disposition", "attachment")
+ return headers
+ },
+ },
+ fields: [],
+}
diff --git a/src/collections/CareerSettings.ts b/src/collections/CareerSettings.ts
new file mode 100644
index 0000000..b9db03a
--- /dev/null
+++ b/src/collections/CareerSettings.ts
@@ -0,0 +1,261 @@
+import {
+ checkSpreadsheetAccess,
+ serviceAccountEmail,
+} from "@/lib/google-sheets";
+import {
+ FixedToolbarFeature,
+ lexicalEditor,
+} from "@payloadcms/richtext-lexical";
+import { ValidationError, type GlobalConfig } from "payload";
+import { careerFormFields } from "../fields/career-form-fields";
+
+const spreadsheetHelp = () => {
+ const email = serviceAccountEmail();
+
+ return email
+ ? `Illeszd be a Google táblázat linkjét, és oszd meg a táblázatot Szerkesztő jogosultsággal ezzel a címmel: ${email} — a fejlécsort automatikusan létrehozzuk. Üresen hagyva a jelentkezések csak ide, az adminba érkeznek.`
+ : "A táblázatba írás nincs beállítva a szerveren (hiányzik a Google szolgáltatásfiók). Szólj a fejlesztőknek, addig a jelentkezések csak ide, az adminba érkeznek.";
+};
+
+export const CareerSettings: GlobalConfig = {
+ slug: "career-settings",
+ label: {
+ en: "Career page",
+ hu: "Karrier oldal",
+ },
+ admin: {
+ description:
+ "A Karrier oldal bevezetője és a jelentkezés módjának beállítása.",
+ },
+ access: {
+ read: () => true,
+ update: ({ req: { user } }) => !!user,
+ },
+ hooks: {
+ beforeValidate: [
+ ({ data, originalDoc }) => {
+ // A label edit must never silently reassign historical answers to another key.
+ for (const question of data?.formQuestions ?? []) {
+ const previous = originalDoc?.formQuestions?.find(
+ (q: { id?: string }) => q.id && q.id === question.id,
+ );
+ if (previous && previous.key !== question.key)
+ throw new ValidationError({
+ errors: [
+ {
+ path: "formQuestions",
+ message: "A kérdés állandó azonosítója nem módosítható.",
+ },
+ ],
+ });
+ for (const option of question.options ?? []) {
+ const old = previous?.options?.find(
+ (o: { id?: string }) => o.id && o.id === option.id,
+ );
+ if (old && old.key !== option.key)
+ throw new ValidationError({
+ errors: [
+ {
+ path: "formQuestions",
+ message: "A válaszlehetőség azonosítója nem módosítható.",
+ },
+ ],
+ });
+ }
+ }
+ return data;
+ },
+ ],
+ },
+ fields: [
+ {
+ type: "tabs",
+ tabs: [
+ {
+ label: { hu: "Űrlap kérdései", en: "Form questions" },
+ fields: careerFormFields,
+ },
+ {
+ label: {
+ en: "Intro",
+ hu: "Bevezető",
+ },
+ fields: [
+ {
+ name: "intro",
+ type: "richText",
+ required: false,
+ label: "Általános leírás",
+ admin: {
+ description:
+ "Az oldal tetején, a csoportok listája fölött jelenik meg.",
+ },
+ editor: lexicalEditor({
+ features: ({ defaultFeatures }) => [
+ ...defaultFeatures,
+ FixedToolbarFeature(),
+ ],
+ }),
+ },
+ {
+ name: "introEng",
+ type: "richText",
+ required: false,
+ label: "Általános leírás (angolul)",
+ editor: lexicalEditor({
+ features: ({ defaultFeatures }) => [
+ ...defaultFeatures,
+ FixedToolbarFeature(),
+ ],
+ }),
+ },
+ ],
+ },
+ {
+ label: {
+ en: "Application",
+ hu: "Jelentkezés",
+ },
+ fields: [
+ {
+ name: "applicationMode",
+ type: "select",
+ required: false,
+ defaultValue: "builtIn",
+ label: "Jelentkezés módja",
+ options: [
+ { label: "Beépített űrlap az oldal alján", value: "builtIn" },
+ { label: "Külső Google űrlap", value: "googleForm" },
+ ],
+ admin: {
+ description:
+ "Beépített űrlap esetén a jelentkezések a Payload adminba érkeznek (és a Google táblázatba, ha be van állítva a táblázat).",
+ },
+ },
+ {
+ name: "googleFormUrl",
+ type: "text",
+ required: false,
+ label: "Google űrlap linkje",
+ admin: {
+ description:
+ "Csak a „Külső Google űrlap” mód esetén használjuk.",
+ condition: (data) => data?.applicationMode === "googleForm",
+ },
+ },
+ {
+ name: "spreadsheetUrl",
+ type: "text",
+ required: false,
+ label: "Google táblázat linkje",
+ admin: {
+ description: spreadsheetHelp,
+ condition: (data) => data?.applicationMode !== "googleForm",
+ },
+ // Mentéskor rögtön kiderül, ha a táblázat nincs megosztva velünk.
+ validate: async (value: string | null | undefined) => {
+ if (!value?.trim()) return true;
+
+ const result = await checkSpreadsheetAccess(value);
+
+ if (result.status === "error") {
+ return `A táblázat nem érhető el: ${result.message}. Ellenőrizd a linket, és hogy megosztottad-e Szerkesztő jogosultsággal.`;
+ }
+
+ return true;
+ },
+ },
+ {
+ name: "applicationsOpen",
+ type: "checkbox",
+ defaultValue: true,
+ label: "Jelentkezés nyitva",
+ admin: {
+ description:
+ "Kikapcsolva az oldal továbbra is elérhető, de a jelentkezési űrlap és a „Jelentkezz” gomb helyett egy tájékoztató szöveg jelenik meg.",
+ },
+ },
+ {
+ name: "applicationsClosedText",
+ type: "text",
+ required: false,
+ label: "Szöveg zárt jelentkezés esetén",
+ admin: {
+ condition: (data) => data?.applicationsOpen === false,
+ },
+ },
+ {
+ name: "applicationsClosedTextEng",
+ type: "text",
+ required: false,
+ label: "Szöveg zárt jelentkezés esetén (angolul)",
+ admin: {
+ condition: (data) => data?.applicationsOpen === false,
+ },
+ },
+ ],
+ },
+ {
+ label: {
+ en: "FAQ",
+ hu: "GYIK",
+ },
+ fields: [
+ {
+ name: "faqs",
+ type: "array",
+ required: false,
+ label: "Gyakran ismételt kérdések",
+ labels: {
+ singular: "Kérdés és válasz",
+ plural: "Kérdések és válaszok",
+ },
+ admin: {
+ description:
+ "A kérdések ebben a sorrendben jelennek meg a csoportok után, a jelentkezés előtt. Üresen hagyva a GYIK szekció nem jelenik meg.",
+ },
+ fields: [
+ {
+ name: "question",
+ type: "text",
+ required: true,
+ label: "Kérdés",
+ },
+ {
+ name: "questionEng",
+ type: "text",
+ required: true,
+ label: "Kérdés (angolul)",
+ },
+ {
+ name: "answer",
+ type: "richText",
+ required: true,
+ label: "Válasz",
+ editor: lexicalEditor({
+ features: ({ defaultFeatures }) => [
+ ...defaultFeatures,
+ FixedToolbarFeature(),
+ ],
+ }),
+ },
+ {
+ name: "answerEng",
+ type: "richText",
+ required: true,
+ label: "Válasz (angolul)",
+ editor: lexicalEditor({
+ features: ({ defaultFeatures }) => [
+ ...defaultFeatures,
+ FixedToolbarFeature(),
+ ],
+ }),
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ ],
+};
diff --git a/src/collections/Contact.ts b/src/collections/Contact.ts
index 7fabd84..c8a1071 100644
--- a/src/collections/Contact.ts
+++ b/src/collections/Contact.ts
@@ -1,66 +1,98 @@
-import { CollectionConfig, getPayload } from 'payload';
-import config from "@payload-config";
-import { FixedToolbarFeature, lexicalEditor } from "@payloadcms/richtext-lexical";
+import { CollectionConfig } from "payload";
+import {
+ FixedToolbarFeature,
+ lexicalEditor,
+} from "@payloadcms/richtext-lexical";
const Contact: CollectionConfig = {
- slug: 'contact',
+ slug: "contact",
admin: {
- useAsTitle: 'title',
- description: 'A kapcsolat oldal szerkeszthető tartalma',
+ useAsTitle: "title",
+ description: "A kapcsolat oldal szerkeszthető tartalma",
},
labels: {
- singular: 'Kapcsolat',
- plural: 'Kapcsolat',
+ singular: "Kapcsolat",
+ plural: "Kapcsolat",
},
access: {
- create: async ({}) => {
- const payload = await getPayload({ config })
- const docs = await payload.find({ collection: 'contact', limit: 1 });
+ create: async ({ req: { user, payload } }) => {
+ if (!user) return false;
+ const docs = await payload.find({ collection: "contact", limit: 1 });
return docs.totalDocs === 0;
},
- update: () => true,
+ update: ({ req: { user } }) => !!user,
delete: () => false,
read: () => true,
},
fields: [
{
- name: 'title',
- type: 'text',
- label: 'Cím',
+ name: "exhibitionUrl",
+ type: "text",
+ label: "Kiállítási igény – űrlap linkje",
+ defaultValue:
+ "https://docs.google.com/forms/d/e/1FAIpQLSdrA3VX3YpxQB3uZ1ojXov8-J3LPawAt4ip_Aj4k8FNbNOCrA/viewform?usp=dialog",
+ admin: { description: "Üresen hagyva a gomb nem jelenik meg." },
+ validate: (value: string | null | undefined) => {
+ if (!value?.trim()) return true;
+ try {
+ const url = new URL(value);
+ return url.protocol === "https:" && !url.username && !url.password
+ ? true
+ : "HTTPS link szükséges.";
+ } catch {
+ return "Érvényes HTTPS link szükséges.";
+ }
+ },
+ },
+ {
+ name: "exhibitionLabel",
+ type: "text",
+ label: "Kiállítási gomb felirata",
+ defaultValue: "Rendezvényen való kiállítási igény",
+ },
+ {
+ name: "exhibitionLabelEng",
+ type: "text",
+ label: "Kiállítási gomb felirata (angol)",
+ defaultValue: "Event Exhibition Request",
+ },
+ {
+ name: "title",
+ type: "text",
+ label: "Cím",
required: true,
},
{
- name: 'title_en',
- type: 'text',
- label: 'Cím (angol)',
+ name: "title_en",
+ type: "text",
+ label: "Cím (angol)",
required: true,
},
{
- name: 'content',
- type: 'richText',
- label: 'Tartalom',
+ name: "content",
+ type: "richText",
+ label: "Tartalom",
required: true,
editor: lexicalEditor({
features: ({ defaultFeatures }) => [
...defaultFeatures,
FixedToolbarFeature(),
- ]
- })
+ ],
+ }),
},
{
- name: 'content_en',
- type: 'richText',
- label: 'Tartalom (angol)',
+ name: "content_en",
+ type: "richText",
+ label: "Tartalom (angol)",
required: true,
editor: lexicalEditor({
features: ({ defaultFeatures }) => [
...defaultFeatures,
FixedToolbarFeature(),
- ]
- })
+ ],
+ }),
},
],
};
export default Contact;
-
diff --git a/src/collections/JobApplications.ts b/src/collections/JobApplications.ts
new file mode 100644
index 0000000..8827756
--- /dev/null
+++ b/src/collections/JobApplications.ts
@@ -0,0 +1,224 @@
+import { syncApplicationToSheet } from "@/lib/karrier-sheet-sync";
+import type {
+ CollectionAfterChangeHook,
+ CollectionConfig,
+ PayloadHandler,
+} from "payload";
+
+/** Új jelentkezés automatikus kiírása a beállított Google táblázatba. */
+const syncOnCreate: CollectionAfterChangeHook = async ({
+ doc,
+ operation,
+ req,
+ context,
+}) => {
+ if (operation !== "create" || context?.skipSheetSync) {
+ return doc;
+ }
+
+ await syncApplicationToSheet(req.payload, doc, req);
+ return doc;
+};
+
+/**
+ * Kézi újraküldés az adminból: a beállítás előtt vagy hiba miatt kimaradt
+ * jelentkezéseket utólag is ki lehet írni a táblázatba.
+ */
+const resyncHandler: PayloadHandler = async (req) => {
+ if (!req.user) {
+ return Response.json({ error: "UNAUTHORIZED" }, { status: 401 });
+ }
+
+ const id = req.routeParams?.id;
+ if (!id) {
+ return Response.json({ error: "MISSING_ID" }, { status: 400 });
+ }
+
+ const doc = await req.payload.findByID({
+ collection: "job-applications",
+ id: String(id),
+ overrideAccess: true,
+ });
+
+ const result = await syncApplicationToSheet(req.payload, doc);
+
+ return Response.json(result, {
+ status: result.status === "error" ? 502 : 200,
+ });
+};
+
+export const JobApplications: CollectionConfig = {
+ slug: "job-applications",
+ labels: {
+ singular: "Jelentkezés",
+ plural: "Jelentkezések",
+ },
+ admin: {
+ description: "A Karrier oldalon beérkezett jelentkezések.",
+ useAsTitle: "name",
+ defaultColumns: ["name", "email", "positionName", "groupName", "createdAt"],
+ },
+ access: {
+ // Létrehozás kizárólag a szerveroldali API route-on keresztül (overrideAccess),
+ // hogy a nyilvános REST végponton ne lehessen közvetlenül beküldeni.
+ create: () => false,
+ read: ({ req: { user } }) => !!user,
+ update: ({ req: { user } }) => !!user,
+ delete: ({ req: { user } }) => !!user,
+ },
+ fields: [
+ {
+ name: "cv",
+ type: "upload",
+ relationTo: "application-cvs",
+ label: "Önéletrajz (PDF)",
+ admin: { readOnly: true },
+ },
+ {
+ name: "formVersion",
+ type: "text",
+ label: "Űrlap verziója",
+ admin: { readOnly: true },
+ },
+ {
+ name: "language",
+ type: "select",
+ options: ["hu", "en"],
+ label: "Beküldés nyelve",
+ admin: { readOnly: true },
+ },
+ {
+ name: "answerSummary",
+ type: "textarea",
+ label: "Beküldött válaszok",
+ admin: { readOnly: true },
+ },
+ {
+ name: "answerSnapshot",
+ type: "json",
+ label: "Kérdések és válaszok a beküldéskor",
+ admin: { readOnly: true },
+ },
+ {
+ name: "name",
+ type: "text",
+ required: true,
+ label: "Név",
+ },
+ {
+ name: "email",
+ type: "email",
+ required: true,
+ label: "E-mail cím",
+ },
+ {
+ name: "phone",
+ type: "text",
+ required: false,
+ label: "Telefonszám",
+ },
+ {
+ name: "university",
+ type: "text",
+ required: false,
+ label: "Egyetem / kar",
+ },
+ {
+ name: "major",
+ type: "text",
+ required: false,
+ label: "Szak",
+ },
+ {
+ name: "semester",
+ type: "text",
+ required: false,
+ label: "Hányadik félév",
+ },
+ {
+ name: "groupName",
+ type: "text",
+ required: false,
+ label: "Megpályázott csoport",
+ },
+ {
+ name: "positionName",
+ type: "text",
+ required: false,
+ label: "Megpályázott pozíció",
+ },
+ {
+ name: "motivation",
+ type: "textarea",
+ required: false,
+ label: "Motiváció / üzenet",
+ },
+ {
+ name: "consent",
+ type: "checkbox",
+ required: false,
+ label: "Adatkezelési hozzájárulás",
+ admin: {
+ readOnly: true,
+ },
+ },
+ {
+ name: "sheetSyncStatus",
+ type: "select",
+ required: false,
+ label: "Google táblázat",
+ options: [
+ { label: "Kiírva", value: "ok" },
+ { label: "Kihagyva", value: "skipped" },
+ { label: "Hiba", value: "error" },
+ ],
+ admin: {
+ readOnly: true,
+ position: "sidebar",
+ },
+ },
+ {
+ name: "sheetSyncError",
+ type: "text",
+ required: false,
+ label: "Részletek",
+ admin: {
+ readOnly: true,
+ position: "sidebar",
+ condition: (_, siblingData) => Boolean(siblingData?.sheetSyncError),
+ },
+ },
+ {
+ name: "resyncToSheet",
+ type: "ui",
+ admin: {
+ position: "sidebar",
+ components: {
+ Field: "/components/payload/ResyncSheetButton#ResyncSheetButton",
+ },
+ },
+ },
+ ],
+ endpoints: [
+ {
+ path: "/:id/resync",
+ method: "post",
+ handler: resyncHandler,
+ },
+ ],
+ hooks: {
+ afterChange: [syncOnCreate],
+ afterDelete: [
+ async ({ doc, req }) => {
+ const id = typeof doc.cv === "object" ? doc.cv?.id : doc.cv;
+ if (id)
+ await req.payload.delete({
+ collection: "application-cvs",
+ id,
+ overrideAccess: true,
+ req,
+ });
+ },
+ ],
+ },
+};
diff --git a/src/collections/Recruitment.ts b/src/collections/Recruitment.ts
index 1f5e7b2..b8f9e7e 100644
--- a/src/collections/Recruitment.ts
+++ b/src/collections/Recruitment.ts
@@ -4,13 +4,14 @@ import { FixedToolbarFeature, lexicalEditor} from '@payloadcms/richtext-lexical'
export const Recruitment: CollectionConfig = {
slug: "recruitment",
labels: {
- singular: "Toborzás",
- plural: "Toborzás",
+ singular: "Karrier csoport",
+ plural: "Karrier csoportok",
},
admin: {
description:
- "Nyitott pozíciók a csoportokon belül, funkcionális területek szerint csoportosítva.",
+ "A Karrier oldalon megjelenő csoportok és a hozzájuk tartozó pozíciók.",
useAsTitle: "groupName",
+ defaultColumns: ["groupName", "order"],
},
fields: [
{
@@ -25,6 +26,25 @@ export const Recruitment: CollectionConfig = {
required: true,
label: "Csoport neve angolul",
},
+ {
+ name: "image",
+ type: "upload",
+ relationTo: "media",
+ required: false,
+ label: "Csoport képe",
+ admin: {
+ description: "A csoport sávjának bal oldalán jelenik meg. Fekvő (kb. 4:3) kép ajánlott.",
+ },
+ },
+ {
+ name: "order",
+ type: "number",
+ required: false,
+ label: "Rendezési szám",
+ admin: {
+ description: "A csoportok növekvő sorrendben jelennek meg. Üresen hagyva a lista végére kerül.",
+ },
+ },
{
name: "description",
type: "richText",
@@ -68,11 +88,23 @@ export const Recruitment: CollectionConfig = {
required: true,
label: "Pozíció neve (angolul)",
},
+ {
+ name: "positionOpen",
+ type: "checkbox",
+ required: false,
+ label: "Nyitott pozíció",
+ admin: {
+ description: "Csak a bepipált pozíciók jelennek meg a Karrier oldalon.",
+ },
+ },
{
name: "positionDescription",
type: "richText",
- required: true,
- label: "Pozíció leírása",
+ required: false,
+ label: "Pozíció bevezetője",
+ admin: {
+ description: "Rövid felvezető szöveg, a szekciók fölött jelenik meg. Opcionális.",
+ },
editor: lexicalEditor({
features: ({ defaultFeatures }) => [
...defaultFeatures,
@@ -83,8 +115,8 @@ export const Recruitment: CollectionConfig = {
{
name: "positionDescriptionEng",
type: "richText",
- required: true,
- label: "Pozíció leírása (angolul)",
+ required: false,
+ label: "Pozíció bevezetője (angolul)",
editor: lexicalEditor({
features: ({ defaultFeatures }) => [
...defaultFeatures,
@@ -93,12 +125,113 @@ export const Recruitment: CollectionConfig = {
})
},
{
- name: "positionOpen",
- type: "checkbox",
- required: true,
- label: "Nyitott pozíció",
+ name: "sections",
+ type: "array",
+ required: false,
+ label: "Leírás szekciói",
+ labels: {
+ singular: "Szekció",
+ plural: "Szekciók",
+ },
+ admin: {
+ description:
+ "A pozíció leírása szekciókra bontva, pl. Feladatok, Szükséges skillek, Miben fejlődhetsz, Előnyök.",
+ },
+ fields: [
+ {
+ name: "sectionTitle",
+ type: "text",
+ required: true,
+ label: "Szekció címe",
+ },
+ {
+ name: "sectionTitleEng",
+ type: "text",
+ required: true,
+ label: "Szekció címe (angolul)",
+ },
+ {
+ name: "sectionContent",
+ type: "richText",
+ required: true,
+ label: "Szekció tartalma",
+ editor: lexicalEditor({
+ features: ({ defaultFeatures }) => [
+ ...defaultFeatures,
+ FixedToolbarFeature(),
+ ]
+ })
+ },
+ {
+ name: "sectionContentEng",
+ type: "richText",
+ required: true,
+ label: "Szekció tartalma (angolul)",
+ editor: lexicalEditor({
+ features: ({ defaultFeatures }) => [
+ ...defaultFeatures,
+ FixedToolbarFeature(),
+ ]
+ })
+ },
+ ],
+ },
+ {
+ name: "highlights",
+ type: "group",
+ label: "Kiemelt tudnivalók",
+ admin: {
+ description: "A pozíció leírása alatt, ikonokkal kiemelve jelennek meg. Az üresen hagyott mezők nem jelennek meg.",
+ },
+ fields: [
+ {
+ name: "joining",
+ type: "text",
+ required: false,
+ label: "Csatlakozás",
+ admin: {
+ description: "Pl. „2. félévtől, gépészmérnök hallgatóknak” vagy „Bármely szakos hallgatónak”.",
+ },
+ },
+ {
+ name: "joiningEng",
+ type: "text",
+ required: false,
+ label: "Csatlakozás (angolul)",
+ },
+ {
+ name: "timeCommitment",
+ type: "text",
+ required: false,
+ label: "Időráfordítás",
+ admin: {
+ description: "Pl. „heti 10-15 óra”.",
+ },
+ },
+ {
+ name: "timeCommitmentEng",
+ type: "text",
+ required: false,
+ label: "Időráfordítás (angolul)",
+ },
+ {
+ name: "subsystem",
+ type: "text",
+ required: false,
+ label: "Részegység",
+ admin: {
+ description: "Pl. „Futómű”, „Akkumulátor”, „Aerodinamika”.",
+ },
+ },
+ {
+ name: "subsystemEng",
+ type: "text",
+ required: false,
+ label: "Részegység (angolul)",
+ },
+ ],
},
],
},
],
-};
\ No newline at end of file
+};
diff --git a/src/collections/SiteSettings.ts b/src/collections/SiteSettings.ts
index 39123b5..1df12c6 100644
--- a/src/collections/SiteSettings.ts
+++ b/src/collections/SiteSettings.ts
@@ -39,14 +39,14 @@ export const SiteSettings: GlobalConfig = {
name: 'showRecruitmentPage',
type: 'checkbox',
label: {
- en: 'Show Recruitment Page',
- hu: 'Tagfelvétel oldal megjelenítése',
+ en: 'Show Careers Page',
+ hu: 'Karrier oldal megjelenítése',
},
defaultValue: true,
admin: {
description: {
- en: 'Controls visibility of the Recruitment page in navigation and direct access',
- hu: 'A Tagfelvétel oldal láthatóságát szabályozza a navigációban és közvetlen hozzáférésben',
+ en: 'Controls visibility of the Careers page in navigation and direct access',
+ hu: 'A Karrier oldal láthatóságát szabályozza a navigációban és közvetlen hozzáférésben',
},
},
},
diff --git a/src/collections/Users.ts b/src/collections/Users.ts
index 0fe4544..687c0fa 100644
--- a/src/collections/Users.ts
+++ b/src/collections/Users.ts
@@ -11,6 +11,10 @@ export const Users: CollectionConfig = {
description: 'Felhasználók, akik be tudnak jelentkezni az admin felületre.',
},
auth: true,
+ access: {
+ // Disable the default cross-account unlock endpoint (GHSA-jg8r-5jh2-v2xj).
+ unlock: () => false,
+ },
fields: [
// Email added by default
// Add more fields as needed
diff --git a/src/components/payload/FormQuestionRowLabel.tsx b/src/components/payload/FormQuestionRowLabel.tsx
new file mode 100644
index 0000000..2b31004
--- /dev/null
+++ b/src/components/payload/FormQuestionRowLabel.tsx
@@ -0,0 +1,8 @@
+"use client"
+
+import { useRowLabel } from "@payloadcms/ui"
+
+export function FormQuestionRowLabel() {
+ const { data, rowNumber } = useRowLabel<{ label?: string }>()
+ return {data?.label || `Kérdés ${(rowNumber ?? 0) + 1}`}
+}
diff --git a/src/components/payload/ResyncSheetButton.tsx b/src/components/payload/ResyncSheetButton.tsx
new file mode 100644
index 0000000..371d1fe
--- /dev/null
+++ b/src/components/payload/ResyncSheetButton.tsx
@@ -0,0 +1,73 @@
+'use client'
+import { useDocumentInfo, useTranslation } from '@payloadcms/ui'
+import React, { useState } from 'react'
+
+type Status = { message: string; type: 'success' | 'error' } | null
+
+/**
+ * „Kiírás újra" gomb a jelentkezés szerkesztő nézetének oldalsávjában.
+ * A táblázat bekötése előtt vagy hiba miatt kimaradt jelentkezéseket utólag
+ * is ki lehet írni vele a Google táblázatba.
+ */
+export const ResyncSheetButton = () => {
+ const { id } = useDocumentInfo()
+ const { i18n } = useTranslation()
+ const [pending, setPending] = useState(false)
+ const [status, setStatus] = useState(null)
+
+ const isHu = i18n.language !== 'en'
+
+ if (!id) return null
+
+ const handleClick = async () => {
+ setPending(true)
+ setStatus(null)
+
+ try {
+ const response = await fetch(`/api/job-applications/${id}/resync`, {
+ method: 'POST',
+ credentials: 'include',
+ })
+ const result = await response.json()
+
+ if (result.status === 'ok') {
+ setStatus({
+ message: isHu ? 'Kiírva a táblázatba.' : 'Written to the spreadsheet.',
+ type: 'success',
+ })
+ } else {
+ setStatus({
+ message: result.message ?? result.reason ?? (isHu ? 'Nem sikerült.' : 'Failed.'),
+ type: 'error',
+ })
+ }
+ } catch {
+ setStatus({
+ message: isHu ? 'A kérés nem ment át.' : 'The request failed.',
+ type: 'error',
+ })
+ } finally {
+ setPending(false)
+ }
+ }
+
+ return (
+
+
+
+ {status && (
+
+ {status.message}
+
+ )}
+
+ )
+}
diff --git a/src/config/navigation.ts b/src/config/navigation.ts
index 98e7249..0efe113 100644
--- a/src/config/navigation.ts
+++ b/src/config/navigation.ts
@@ -41,12 +41,6 @@ export const NAV_ITEMS: NavItem[] = [
},
],
},
- {
- name: "Tagfelvétel",
- nameEn: "Joining Process",
- href: "/tagfelvetel",
- dropdown: null,
- },
{
name: "Rólunk",
nameEn: "About us",
@@ -63,4 +57,10 @@ export const NAV_ITEMS: NavItem[] = [
{ name: "Galéria", nameEn: "Gallery", href: "/galeria" },
],
},
+ {
+ name: "Csatlakozz csapatunkhoz!",
+ nameEn: "Join our team!",
+ href: "/karrier",
+ dropdown: null,
+ },
];
diff --git a/src/fields/career-form-fields.ts b/src/fields/career-form-fields.ts
new file mode 100644
index 0000000..d8ab3e3
--- /dev/null
+++ b/src/fields/career-form-fields.ts
@@ -0,0 +1,125 @@
+import { randomUUID } from "node:crypto"
+import type { Field } from "payload"
+import {
+ DEFAULT_QUESTIONS,
+ validateQuestions,
+ type FormQuestion,
+} from "../lib/career-form"
+
+export const careerFormFields: Field[] = [
+ {
+ name: "formQuestions",
+ type: "array",
+ label: "Űrlap kérdései",
+ maxRows: 50,
+ defaultValue: DEFAULT_QUESTIONS,
+ labels: { singular: "Kérdés", plural: "Kérdések" },
+ admin: {
+ components: {
+ RowLabel:
+ "/components/payload/FormQuestionRowLabel#FormQuestionRowLabel",
+ },
+ initCollapsed: true,
+ description:
+ "Sorrend: húzd a kérdéseket a helyükre. A hozzájárulás mindig a CV után jelenik meg. A név, e-mail és hozzájárulás kötelező. A csoport és pozíció az automatikus kitöltés miatt nem törölhető.",
+ },
+ validate: (value) =>
+ validateQuestions((value ?? DEFAULT_QUESTIONS) as FormQuestion[]),
+ fields: [
+ {
+ name: "key",
+ type: "text",
+ required: true,
+ defaultValue: () => randomUUID(),
+ label: "Állandó azonosító",
+ admin: { readOnly: true, hidden: true },
+ },
+ {
+ name: "label",
+ type: "text",
+ required: true,
+ maxLength: 500,
+ label: "Kérdés (magyar)",
+ },
+ {
+ name: "labelEng",
+ type: "text",
+ required: true,
+ maxLength: 500,
+ label: "Kérdés (angol)",
+ },
+ {
+ name: "hint",
+ type: "text",
+ maxLength: 1000,
+ label: "Súgó (magyar)",
+ },
+ {
+ name: "hintEng",
+ type: "text",
+ maxLength: 1000,
+ label: "Súgó (angol)",
+ },
+ {
+ name: "type",
+ type: "select",
+ required: true,
+ defaultValue: "text",
+ label: "Válasz típusa",
+ options: [
+ { label: "Rövid szöveg", value: "text" },
+ { label: "Hosszú szöveg", value: "textarea" },
+ { label: "Egy választás", value: "select" },
+ { label: "Több választás", value: "multiselect" },
+ { label: "Jelölőnégyzet", value: "checkbox" },
+ ],
+ },
+ {
+ name: "required",
+ type: "checkbox",
+ label: "Kötelező",
+ defaultValue: false,
+ },
+ {
+ name: "hidden",
+ type: "checkbox",
+ label: "Elrejtve",
+ defaultValue: false,
+ },
+ {
+ name: "options",
+ type: "array",
+ label: "Válaszlehetőségek",
+ maxRows: 30,
+ admin: {
+ condition: (_, data) =>
+ ["select", "multiselect"].includes(data?.type),
+ },
+ fields: [
+ {
+ name: "key",
+ type: "text",
+ required: true,
+ defaultValue: () => randomUUID(),
+ label: "Állandó azonosító",
+ admin: { readOnly: true, hidden: true },
+ },
+ {
+ name: "label",
+ type: "text",
+ required: true,
+ maxLength: 300,
+ label: "Felirat (magyar)",
+ },
+ {
+ name: "labelEng",
+ type: "text",
+ required: true,
+ maxLength: 300,
+ label: "Felirat (angol)",
+ },
+ ],
+ },
+ ],
+ },
+]
diff --git a/src/hooks/use-navbar.ts b/src/hooks/use-navbar.ts
index 59c1c94..b424201 100644
--- a/src/hooks/use-navbar.ts
+++ b/src/hooks/use-navbar.ts
@@ -95,8 +95,8 @@ export function useNavbar() {
// Filter navigation items based on settings
const filteredNavItems = NAV_ITEMS.map(item => {
if (!item.dropdown) {
- // Handle top-level items (like Tagfelvétel)
- if (item.href === '/tagfelvetel' && !siteSettings.showRecruitmentPage) {
+ // Handle top-level items (like Karrier)
+ if (item.href === '/karrier' && !siteSettings.showRecruitmentPage) {
return null;
}
return item;
@@ -107,7 +107,7 @@ export function useNavbar() {
if (dropdownItem.href === '/egyesulet' && !siteSettings.showAssociationPage) {
return false;
}
- if (dropdownItem.href === '/tagfelvetel' && !siteSettings.showRecruitmentPage) {
+ if (dropdownItem.href === '/karrier' && !siteSettings.showRecruitmentPage) {
return false;
}
return true;
diff --git a/src/lib/application-upload.ts b/src/lib/application-upload.ts
new file mode 100644
index 0000000..f50f3d5
--- /dev/null
+++ b/src/lib/application-upload.ts
@@ -0,0 +1,89 @@
+import { PDFDocument } from "pdf-lib"
+import { MAX_CV_SIZE } from "./career-form"
+
+export const MAX_APPLICATION_BODY = MAX_CV_SIZE + 256 * 1024
+export class ApplicationBodyError extends Error {
+ constructor(
+ public code: string,
+ public status = 400,
+ ) {
+ super(code)
+ }
+}
+/** Bound actual streamed bytes as well as declared Content-Length before multipart parsing. */
+export async function readApplicationBody(
+ request: Request,
+): Promise<{ body: Record; cv: File | null }> {
+ if (Number(request.headers.get("content-length")) > MAX_APPLICATION_BODY)
+ throw new ApplicationBodyError("BODY_TOO_LARGE", 413)
+ const reader = request.body?.getReader()
+ if (!reader) throw new ApplicationBodyError("INVALID_BODY")
+ const chunks: Uint8Array[] = []
+ let size = 0
+ try {
+ while (true) {
+ const { value, done } = await reader.read()
+ if (done) break
+ size += value.byteLength
+ if (size > MAX_APPLICATION_BODY) {
+ await reader.cancel()
+ throw new ApplicationBodyError("BODY_TOO_LARGE", 413)
+ }
+ chunks.push(value)
+ }
+ } finally {
+ reader.releaseLock()
+ }
+ const bytes = Buffer.concat(chunks)
+ const contentType = request.headers.get("content-type") ?? ""
+ try {
+ let body: unknown
+ let cv: File | null = null
+ if (contentType.startsWith("multipart/form-data")) {
+ const data = await new Response(bytes, {
+ headers: { "Content-Type": contentType },
+ }).formData()
+ const files = data.getAll("cv")
+ if (files.length > 1 || (files[0] && typeof files[0] === "string"))
+ throw new ApplicationBodyError("INVALID_CV")
+ cv = files[0] instanceof File && files[0].size ? files[0] : null
+ const json = data.get("data")
+ if (typeof json !== "string")
+ throw new ApplicationBodyError("INVALID_BODY")
+ body = JSON.parse(json)
+ } else if (contentType.startsWith("application/json"))
+ body = JSON.parse(bytes.toString("utf8"))
+ else throw new ApplicationBodyError("INVALID_BODY", 415)
+ if (!body || typeof body !== "object" || Array.isArray(body))
+ throw new ApplicationBodyError("INVALID_BODY")
+ return { body: body as Record, cv }
+ } catch (error) {
+ if (error instanceof ApplicationBodyError) throw error
+ throw new ApplicationBodyError("INVALID_BODY")
+ }
+}
+export async function validateCV(file: File): Promise {
+ if (file.size > MAX_CV_SIZE)
+ throw new ApplicationBodyError("CV_TOO_LARGE", 413)
+ if (
+ !/\.pdf$/i.test(file.name) ||
+ (file.type && file.type !== "application/pdf")
+ )
+ throw new ApplicationBodyError("INVALID_CV")
+ const bytes = Buffer.from(await file.arrayBuffer())
+ if (
+ bytes.subarray(0, 5).toString() !== "%PDF-" ||
+ !bytes.subarray(-1024).includes(Buffer.from("%%EOF"))
+ )
+ throw new ApplicationBodyError("INVALID_CV")
+ try {
+ const pdf = await PDFDocument.load(bytes, {
+ updateMetadata: false,
+ throwOnInvalidObject: true,
+ })
+ if (pdf.getPageCount() === 0) throw new Error("Empty PDF")
+ } catch {
+ throw new ApplicationBodyError("INVALID_CV")
+ }
+ return bytes
+}
diff --git a/src/lib/career-form.ts b/src/lib/career-form.ts
new file mode 100644
index 0000000..3a24c58
--- /dev/null
+++ b/src/lib/career-form.ts
@@ -0,0 +1,270 @@
+/** Shared browser/server form contract. Keys identify answers independently of labels. */
+export const CORE_KEYS = [
+ "name",
+ "email",
+ "phone",
+ "university",
+ "major",
+ "semester",
+ "groupName",
+ "positionName",
+ "motivation",
+ "consent",
+] as const
+export type CoreKey = (typeof CORE_KEYS)[number]
+export type QuestionType =
+ | "text"
+ | "textarea"
+ | "select"
+ | "multiselect"
+ | "checkbox"
+export type Answer = string | string[] | boolean
+export interface QuestionOption {
+ key: string
+ label: string
+ labelEng: string
+}
+export interface FormQuestion {
+ key: string
+ label: string
+ labelEng: string
+ hint?: string | null
+ hintEng?: string | null
+ type: QuestionType
+ required?: boolean | null
+ hidden?: boolean | null
+ options?: QuestionOption[] | null
+}
+export interface FormConfig {
+ version: string
+ questions: FormQuestion[]
+}
+export const MAX_CV_SIZE = 5 * 1024 * 1024
+export const DEFAULT_QUESTIONS: FormQuestion[] = [
+ {
+ key: "name",
+ label: "Név",
+ labelEng: "Name",
+ type: "text",
+ required: true,
+ },
+ {
+ key: "email",
+ label: "E-mail cím",
+ labelEng: "Email address",
+ type: "text",
+ required: true,
+ },
+ {
+ key: "phone",
+ label: "Telefonszám",
+ labelEng: "Phone number",
+ type: "text",
+ },
+ {
+ key: "semester",
+ label: "Hányadik félév",
+ labelEng: "Semester",
+ type: "text",
+ },
+ {
+ key: "university",
+ label: "Egyetem / kar",
+ labelEng: "University / faculty",
+ type: "text",
+ },
+ { key: "major", label: "Szak", labelEng: "Major", type: "text" },
+ { key: "groupName", label: "Csoport", labelEng: "Group", type: "text" },
+ {
+ key: "positionName",
+ label: "Pozíció",
+ labelEng: "Position",
+ type: "text",
+ },
+ {
+ key: "motivation",
+ label: "Motiváció / üzenet",
+ labelEng: "Motivation / message",
+ type: "textarea",
+ },
+ {
+ key: "consent",
+ label: "Hozzájárulok a személyes adataim kezeléséhez a jelentkezés elbírálása céljából.",
+ labelEng:
+ "I consent to the processing of my personal data for the purpose of the application.",
+ type: "checkbox",
+ required: true,
+ },
+]
+export function resolveFormConfig(
+ settings?: {
+ formQuestions?: FormQuestion[] | null
+ updatedAt?: string | null
+ } | null,
+): FormConfig {
+ return {
+ version: settings?.updatedAt ?? "initial",
+ questions: settings?.formQuestions?.length
+ ? settings.formQuestions
+ : DEFAULT_QUESTIONS,
+ }
+}
+export function validateQuestions(questions: FormQuestion[]): true | string {
+ if (!questions.length || questions.length > 50)
+ return "Az űrlap 1–50 kérdést tartalmazhat."
+ const keys = new Set()
+ for (const q of questions) {
+ if (
+ !q.key ||
+ !/^[a-zA-Z0-9_-]{1,64}$/.test(q.key) ||
+ keys.has(q.key) ||
+ ["__proto__", "constructor", "prototype"].includes(q.key)
+ )
+ return "A kérdések azonosítói legyenek egyediek."
+ keys.add(q.key)
+ if (!q.label?.trim() || !q.labelEng?.trim())
+ return "Minden kérdés magyar és angol felirata kötelező."
+ const core = DEFAULT_QUESTIONS.find((item) => item.key === q.key)
+ if (core && q.type !== core.type)
+ return `Az alapmező típusa nem változtatható: ${core.label}.`
+ if (q.type === "select" || q.type === "multiselect") {
+ if (!q.options?.length || q.options.length > 30)
+ return "A választós kérdésekhez 1–30 lehetőség szükséges."
+ const options = new Set()
+ for (const option of q.options) {
+ if (
+ !option.key ||
+ options.has(option.key) ||
+ !option.label?.trim() ||
+ !option.labelEng?.trim()
+ )
+ return "A lehetőségek azonosítója legyen egyedi, mindkét felirat kötelező."
+ options.add(option.key)
+ }
+ }
+ }
+ for (const key of ["name", "email", "consent"]) {
+ const q = questions.find((item) => item.key === key)
+ if (!q || q.hidden || !q.required)
+ return "A név, e-mail és hozzájárulás kötelező, látható alapmező."
+ }
+ for (const key of ["groupName", "positionName"]) {
+ if (!questions.some((item) => item.key === key))
+ return "A csoport és pozíció alapmező nem törölhető (elrejthető)."
+ }
+ return true
+}
+export interface AnswerSnapshot {
+ key: string
+ label: string
+ labelEng: string
+ type: QuestionType
+ options: QuestionOption[]
+ value: Answer
+}
+const LIMITS: Record = {
+ name: 120,
+ email: 200,
+ phone: 40,
+ university: 120,
+ major: 120,
+ semester: 40,
+ groupName: 200,
+ positionName: 200,
+ motivation: 5000,
+}
+export function validateAnswers(
+ input: Record,
+ config: FormConfig,
+):
+ | { ok: true; values: Record; snapshots: AnswerSnapshot[] }
+ | { ok: false; error: string; field?: string } {
+ const values: Record = {}
+ const snapshots: AnswerSnapshot[] = []
+ for (const q of config.questions) {
+ // Hidden group/position still carry the position button's selection.
+ if (q.hidden && q.key !== "groupName" && q.key !== "positionName")
+ continue
+ const raw = input[q.key]
+ let value: Answer
+ if (q.type === "checkbox") {
+ if (raw !== undefined && typeof raw !== "boolean")
+ return { ok: false, error: "INVALID_ANSWER", field: q.key }
+ value = raw === true
+ } else if (q.type === "multiselect") {
+ if (
+ raw !== undefined &&
+ (!Array.isArray(raw) || raw.some((v) => typeof v !== "string"))
+ )
+ return { ok: false, error: "INVALID_ANSWER", field: q.key }
+ value = [...new Set((raw ?? []) as string[])]
+ if (value.some((v) => !q.options?.some((o) => o.key === v)))
+ return { ok: false, error: "INVALID_ANSWER", field: q.key }
+ } else {
+ if (raw !== undefined && raw !== null && typeof raw !== "string")
+ return { ok: false, error: "INVALID_ANSWER", field: q.key }
+ value = typeof raw === "string" ? raw.trim() : ""
+ if (
+ value.length >
+ (LIMITS[q.key] ?? (q.type === "textarea" ? 5000 : 500))
+ )
+ return { ok: false, error: "ANSWER_TOO_LONG", field: q.key }
+ if (
+ q.type === "select" &&
+ value &&
+ !q.options?.some((o) => o.key === value)
+ )
+ return { ok: false, error: "INVALID_ANSWER", field: q.key }
+ }
+ if (
+ q.required &&
+ !q.hidden &&
+ (value === false ||
+ (typeof value !== "boolean" && value.length === 0))
+ )
+ return { ok: false, error: "MISSING_FIELDS", field: q.key }
+ if (
+ q.key === "email" &&
+ !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(value))
+ )
+ return { ok: false, error: "INVALID_EMAIL", field: q.key }
+ values[q.key] = value
+ snapshots.push({
+ key: q.key,
+ label: q.label,
+ labelEng: q.labelEng,
+ type: q.type,
+ options: q.options ?? [],
+ value,
+ })
+ }
+ return { ok: true, values, snapshots }
+}
+export function summarizeAnswers(
+ snapshots: AnswerSnapshot[],
+ isEn: boolean,
+ includeCore = false,
+): string {
+ return snapshots
+ .filter((q) => includeCore || !CORE_KEYS.includes(q.key as CoreKey))
+ .map((q) => {
+ const label = isEn ? q.labelEng : q.label
+ const format = (v: string) => {
+ const option = q.options.find((o) => o.key === v)
+ return option ? (isEn ? option.labelEng : option.label) : v
+ }
+ const value = Array.isArray(q.value)
+ ? q.value.map(format).join(", ")
+ : typeof q.value === "boolean"
+ ? q.value
+ ? isEn
+ ? "Yes"
+ : "Igen"
+ : isEn
+ ? "No"
+ : "Nem"
+ : format(q.value)
+ return `${label}: ${value}`
+ })
+ .join("\n")
+}
diff --git a/src/lib/google-sheets.ts b/src/lib/google-sheets.ts
new file mode 100644
index 0000000..1e6cafb
--- /dev/null
+++ b/src/lib/google-sheets.ts
@@ -0,0 +1,225 @@
+import { createSign } from "node:crypto";
+
+/**
+ * Google Sheets kliens szolgáltatásfiókkal.
+ *
+ * A megrendelő az adminban egy táblázat-linket ad meg, és a táblázatot
+ * megosztja szerkesztőként a szolgáltatásfiók e-mail címével — más teendője
+ * nincs. A hitelesítéshez nem kell külső csomag: a JWT-t a node:crypto írja alá.
+ *
+ * Környezeti változók:
+ * GOOGLE_SERVICE_ACCOUNT_EMAIL — a szolgáltatásfiók címe
+ * GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY — a hozzá tartozó privát kulcs (\n-ekkel)
+ */
+
+const TOKEN_URL = "https://oauth2.googleapis.com/token";
+const SHEETS_API = "https://sheets.googleapis.com/v4/spreadsheets";
+const SCOPE = "https://www.googleapis.com/auth/spreadsheets";
+const REQUEST_TIMEOUT_MS = 10_000;
+
+/** A táblázat fejlécsora; az adatsorok is ebben a sorrendben mennek ki. */
+export const SHEET_COLUMNS = [
+ "Beküldve",
+ "Név",
+ "E-mail",
+ "Telefon",
+ "Egyetem / kar",
+ "Szak",
+ "Félév",
+ "Csoport",
+ "Pozíció",
+ "Motiváció",
+ "További válaszok",
+ "Jelentkezés az adminban",
+] as const;
+
+export type ApplicationRow = {
+ submittedAt: string;
+ name: string;
+ email: string;
+ phone: string;
+ university: string;
+ major: string;
+ semester: string;
+ group: string;
+ position: string;
+ motivation: string;
+ additionalAnswers: string;
+ adminUrl: string;
+};
+
+export type SheetResult = { status: "ok" } | { status: "skipped"; reason: string } | { status: "error"; message: string };
+
+export function serviceAccountEmail(): string | null {
+ return process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL?.trim() || null;
+}
+
+function privateKey(): string | null {
+ const key = process.env.GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY;
+ // A .env-ben a kulcs egy sorban áll, a sortörések \n-ként szerepelnek benne.
+ return key ? key.replace(/\\n/g, "\n") : null;
+}
+
+export function isSheetsConfigured(): boolean {
+ return Boolean(serviceAccountEmail() && privateKey());
+}
+
+/** A megosztandó táblázat-URL-ből kiszedi a táblázat azonosítóját. */
+export function spreadsheetIdFromUrl(url: string): string | null {
+ const match = url.match(/\/spreadsheets\/d\/([a-zA-Z0-9-_]+)/);
+ return match ? match[1] : null;
+}
+
+const base64Url = (value: string | Buffer) =>
+ Buffer.from(value).toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
+
+let cachedToken: { value: string; expiresAt: number } | null = null;
+
+async function accessToken(): Promise {
+ if (cachedToken && cachedToken.expiresAt > Date.now() + 60_000) {
+ return cachedToken.value;
+ }
+
+ const email = serviceAccountEmail();
+ const key = privateKey();
+ if (!email || !key) {
+ throw new Error("Nincs beállítva a Google szolgáltatásfiók.");
+ }
+
+ const issuedAt = Math.floor(Date.now() / 1000);
+ const payload = {
+ iss: email,
+ scope: SCOPE,
+ aud: TOKEN_URL,
+ iat: issuedAt,
+ exp: issuedAt + 3600,
+ };
+
+ const unsigned = `${base64Url(JSON.stringify({ alg: "RS256", typ: "JWT" }))}.${base64Url(JSON.stringify(payload))}`;
+ const signature = base64Url(createSign("RSA-SHA256").update(unsigned).sign(key));
+
+ const response = await fetch(TOKEN_URL, {
+ method: "POST",
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
+ body: new URLSearchParams({
+ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
+ assertion: `${unsigned}.${signature}`,
+ }),
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
+ });
+
+ const body = await response.json();
+ if (!response.ok || !body.access_token) {
+ throw new Error(`Google hitelesítés sikertelen: ${body.error_description ?? response.status}`);
+ }
+
+ cachedToken = { value: body.access_token, expiresAt: Date.now() + body.expires_in * 1000 };
+ return cachedToken.value;
+}
+
+async function sheetsRequest(path: string, init: RequestInit = {}) {
+ const token = await accessToken();
+
+ const response = await fetch(`${SHEETS_API}${path}`, {
+ ...init,
+ headers: {
+ Authorization: `Bearer ${token}`,
+ "Content-Type": "application/json",
+ ...(init.headers ?? {}),
+ },
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
+ });
+
+ if (!response.ok) {
+ const body = await response.json().catch(() => null);
+ throw new Error(body?.error?.message ?? `A Google Sheets API ${response.status} hibát adott.`);
+ }
+
+ return response.json();
+}
+
+/**
+ * Ellenőrzi, hogy a megadott táblázat elérhető-e a szolgáltatásfiókkal.
+ * A beállítások mentésekor hívjuk, hogy a hiba azonnal kiderüljön.
+ */
+export async function checkSpreadsheetAccess(url: string): Promise {
+ if (!isSheetsConfigured()) {
+ return { status: "skipped", reason: "Nincs beállítva a Google szolgáltatásfiók a szerveren." };
+ }
+
+ const spreadsheetId = spreadsheetIdFromUrl(url);
+ if (!spreadsheetId) {
+ return { status: "error", message: "Ez nem érvényes Google Sheets link." };
+ }
+
+ try {
+ await sheetsRequest(`/${spreadsheetId}?fields=spreadsheetId`);
+ return { status: "ok" };
+ } catch (error) {
+ return { status: "error", message: error instanceof Error ? error.message : "Ismeretlen hiba" };
+ }
+}
+
+/** Extend only a known legacy header; never overwrite an editor's custom columns. */
+export function headerUpdate(existing: string[]): { range: string; values: string[] } | null {
+ if (existing.every(value => !value)) return { range: "A1:L1", values: [...SHEET_COLUMNS] };
+ if (SHEET_COLUMNS.slice(0, 10).some((label, i) => existing[i] !== label)) throw new Error("A táblázat első tíz oszlopa eltér a jelentkezési fejléctől. A fejlécet nem írtuk felül.");
+ if (SHEET_COLUMNS.slice(10).some((label, i) => existing[i + 10] && existing[i + 10] !== label)) throw new Error("A K–L oszlopok foglaltak. Kérjük, helyezd át őket a két új jelentkezési oszlop számára.");
+ return existing[10] && existing[11] ? null : { range: "K1:L1", values: SHEET_COLUMNS.slice(10) };
+}
+async function ensureHeaderRow(spreadsheetId: string) {
+ const existing = await sheetsRequest(`/${spreadsheetId}/values/A1:L1`);
+ const update = headerUpdate(existing.values?.[0] ?? []);
+ if (update) await sheetsRequest(`/${spreadsheetId}/values/${update.range}?valueInputOption=RAW`, {
+ method: "PUT", body: JSON.stringify({ values: [update.values] }),
+ });
+}
+
+/**
+ * Egy jelentkezés hozzáfűzése a táblázathoz. Hibát nem dob: a hívó a
+ * visszaadott státuszt jegyzi fel, a jelentkezés a Payloadban marad.
+ */
+export async function appendApplicationRow(spreadsheetUrl: string | null | undefined, row: ApplicationRow): Promise {
+ if (!spreadsheetUrl?.trim()) {
+ return { status: "skipped", reason: "Nincs megadva táblázat a Karrier oldal beállításainál." };
+ }
+
+ if (!isSheetsConfigured()) {
+ return { status: "skipped", reason: "Nincs beállítva a Google szolgáltatásfiók a szerveren." };
+ }
+
+ const spreadsheetId = spreadsheetIdFromUrl(spreadsheetUrl);
+ if (!spreadsheetId) {
+ return { status: "error", message: "A beállított táblázat linkje nem érvényes." };
+ }
+
+ try {
+ await ensureHeaderRow(spreadsheetId);
+
+ await sheetsRequest(`/${spreadsheetId}/values/A1:append?valueInputOption=RAW&insertDataOption=INSERT_ROWS`, {
+ method: "POST",
+ body: JSON.stringify({
+ values: [
+ [
+ row.submittedAt,
+ row.name,
+ row.email,
+ row.phone,
+ row.university,
+ row.major,
+ row.semester,
+ row.group,
+ row.position,
+ row.motivation,
+ row.additionalAnswers,
+ row.adminUrl,
+ ],
+ ],
+ }),
+ });
+
+ return { status: "ok" };
+ } catch (error) {
+ return { status: "error", message: error instanceof Error ? error.message : "Ismeretlen hiba" };
+ }
+}
diff --git a/src/lib/karrier-application.ts b/src/lib/karrier-application.ts
new file mode 100644
index 0000000..475e8b2
--- /dev/null
+++ b/src/lib/karrier-application.ts
@@ -0,0 +1,72 @@
+/**
+ * A Karrier oldal jelentkezési űrlapjának szerveroldali validálása.
+ * A nyers kérés-törzsből vagy egy hibakódot, vagy egy tisztított, menthető
+ * adathalmazt ad vissza.
+ */
+
+const MAX_LENGTHS = {
+ name: 120,
+ email: 200,
+ phone: 40,
+ university: 120,
+ major: 120,
+ semester: 40,
+ groupName: 200,
+ positionName: 200,
+ motivation: 5000,
+} as const
+
+type Field = keyof typeof MAX_LENGTHS
+
+const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
+
+export type ApplicationInput = {
+ [K in Field]: K extends "name" | "email" ? string : string | null
+} & { consent: true }
+
+export type ParseResult =
+ | { ok: true; data: ApplicationInput }
+ | { ok: false; error: "MISSING_FIELDS" | "INVALID_EMAIL" }
+ /** A rejtett mező kitöltve: bot. Sikeres választ adunk, de nem mentünk. */
+ | { ok: false; error: "HONEYPOT" }
+
+function readString(value: unknown, field: Field): string | null {
+ if (typeof value !== "string") return null
+ const trimmed = value.trim()
+ if (!trimmed) return null
+ return trimmed.slice(0, MAX_LENGTHS[field])
+}
+
+export function parseApplicationInput(body: Record): ParseResult {
+ // Rejtett mező: valódi látogató sosem tölti ki, a botok viszont igen.
+ if (typeof body.website === "string" && body.website.trim() !== "") {
+ return { ok: false, error: "HONEYPOT" }
+ }
+
+ const name = readString(body.name, "name")
+ const email = readString(body.email, "email")
+
+ if (!name || !email || body.consent !== true) {
+ return { ok: false, error: "MISSING_FIELDS" }
+ }
+
+ if (!EMAIL_PATTERN.test(email)) {
+ return { ok: false, error: "INVALID_EMAIL" }
+ }
+
+ return {
+ ok: true,
+ data: {
+ name,
+ email,
+ phone: readString(body.phone, "phone"),
+ university: readString(body.university, "university"),
+ major: readString(body.major, "major"),
+ semester: readString(body.semester, "semester"),
+ groupName: readString(body.groupName, "groupName"),
+ positionName: readString(body.positionName, "positionName"),
+ motivation: readString(body.motivation, "motivation"),
+ consent: true,
+ },
+ }
+}
diff --git a/src/lib/karrier-sheet-sync.ts b/src/lib/karrier-sheet-sync.ts
new file mode 100644
index 0000000..c6869a5
--- /dev/null
+++ b/src/lib/karrier-sheet-sync.ts
@@ -0,0 +1,79 @@
+import { summarizeAnswers, type AnswerSnapshot } from "./career-form";
+import type { JobApplication } from "@/payload-types";
+import type { Payload, PayloadRequest } from "payload";
+import { appendApplicationRow, type SheetResult } from "./google-sheets";
+
+/**
+ * Egy jelentkezés kiírása a Karrier oldal beállításainál megadott Google
+ * táblázatba, majd az eredmény visszaírása a jelentkezésre.
+ *
+ * Sosem dob hibát: a jelentkezés a Payloadban akkor is elmentve marad, ha a
+ * táblázat épp nem elérhető — a státusz az adminban látszik.
+ */
+export async function syncApplicationToSheet(
+ payload: Payload,
+ doc: JobApplication,
+ req?: PayloadRequest,
+): Promise {
+ let result: SheetResult;
+ try {
+ const settings = await payload.findGlobal({ slug: "career-settings", req });
+ const origin = process.env.NEXT_PUBLIC_SERVER_URL?.replace(/\/$/, "");
+ result = await appendApplicationRow(settings?.spreadsheetUrl, {
+ submittedAt: doc.createdAt,
+ name: doc.name,
+ email: doc.email,
+ phone: doc.phone ?? "",
+ university: doc.university ?? "",
+ major: doc.major ?? "",
+ semester: doc.semester ?? "",
+ group: doc.groupName ?? "",
+ position: doc.positionName ?? "",
+ motivation: doc.motivation ?? "",
+ additionalAnswers: summarizeAnswers(
+ (doc.answerSnapshot ?? []) as unknown as AnswerSnapshot[],
+ doc.language === "en",
+ ),
+ adminUrl: `${origin ?? ""}/admin/collections/job-applications/${doc.id}`,
+ });
+ } catch (error) {
+ result = {
+ status: "error",
+ message:
+ error instanceof Error
+ ? error.message
+ : "A táblázat szinkronizálása sikertelen.",
+ };
+ }
+
+ if (result.status === "error") {
+ payload.logger.error(
+ `A(z) #${doc.id} jelentkezés kiírása a táblázatba sikertelen: ${result.message}`,
+ );
+ }
+
+ const detail =
+ result.status === "error"
+ ? result.message
+ : result.status === "skipped"
+ ? result.reason
+ : null;
+
+ try {
+ await payload.update({
+ collection: "job-applications",
+ id: doc.id,
+ data: { sheetSyncStatus: result.status, sheetSyncError: detail },
+ overrideAccess: true,
+ // Create közben tranzakcióban vagyunk — req nélkül a friss sor még nem látszana.
+ req,
+ context: { skipSheetSync: true },
+ });
+ } catch (error) {
+ payload.logger.error(
+ `A(z) #${doc.id} jelentkezés szinkron-státuszának mentése sikertelen: ${error}`,
+ );
+ }
+
+ return result;
+}
diff --git a/src/lib/payload-cms.ts b/src/lib/payload-cms.ts
index 41fa3b9..85e606f 100644
--- a/src/lib/payload-cms.ts
+++ b/src/lib/payload-cms.ts
@@ -1,5 +1,6 @@
import {
Car,
+ CareerSetting,
Contact,
Event,
FormulaStudent,
@@ -28,10 +29,24 @@ export async function getRecruitmentData(): Promise {
const recruitmentData = await payload.find({
collection: "recruitment",
limit: 1000,
+ sort: "order",
+ depth: 1, // hogy a csoport képe (upload) is betöltődjön
});
return recruitmentData.docs;
}
+export async function getCareerSettings(): Promise {
+ const payload = await getPayload({ config });
+ try {
+ return (await payload.findGlobal({
+ slug: "career-settings",
+ })) as CareerSetting;
+ } catch (error) {
+ console.error("Error fetching career settings:", error);
+ return null;
+ }
+}
+
export async function getCars(): Promise {
const payload = await getPayload({ config });
const cars = await payload.find({
diff --git a/src/lib/rate-limit.ts b/src/lib/rate-limit.ts
new file mode 100644
index 0000000..e92577a
--- /dev/null
+++ b/src/lib/rate-limit.ts
@@ -0,0 +1,30 @@
+/**
+ * Egyszerű, memóriában tartott kérés-korlátozó. Egy futó példányon belül véd a
+ * tömeges beküldés ellen; több példány esetén példányonként számol.
+ */
+export function createRateLimiter({ windowMs, max }: { windowMs: number; max: number }) {
+ const hits = new Map()
+
+ return function isRateLimited(key: string): boolean {
+ const now = Date.now()
+ const recent = (hits.get(key) ?? []).filter((timestamp) => now - timestamp < windowMs)
+
+ if (recent.length >= max) {
+ hits.set(key, recent)
+ return true
+ }
+
+ recent.push(now)
+ hits.set(key, recent)
+ return false
+ }
+}
+
+/** A kérést küldő kliens azonosítása a proxy fejlécei alapján. */
+export function clientIp(request: Request): string {
+ return (
+ request.headers.get("x-forwarded-for")?.split(",")[0]?.trim() ??
+ request.headers.get("x-real-ip") ??
+ "unknown"
+ )
+}
diff --git a/src/lib/site-settings.ts b/src/lib/site-settings.ts
index 4c564e3..0e673b0 100644
--- a/src/lib/site-settings.ts
+++ b/src/lib/site-settings.ts
@@ -13,8 +13,8 @@ export async function getVisibleNavItems(): Promise {
// Filter navigation items based on settings
return NAV_ITEMS.map(item => {
if (!item.dropdown) {
- // Handle top-level items (like Tagfelvétel)
- if (item.href === '/tagfelvetel' && !settings.showRecruitmentPage) {
+ // Handle top-level items (like Karrier)
+ if (item.href === '/karrier' && !settings.showRecruitmentPage) {
return null
}
return item
@@ -25,7 +25,7 @@ export async function getVisibleNavItems(): Promise {
if (dropdownItem.href === '/egyesulet' && !settings.showAssociationPage) {
return false
}
- if (dropdownItem.href === '/tagfelvetel' && !settings.showRecruitmentPage) {
+ if (dropdownItem.href === '/karrier' && !settings.showRecruitmentPage) {
return false
}
return true
@@ -58,7 +58,7 @@ export async function isPageVisible(pagePath: string): Promise {
switch (pagePath) {
case '/egyesulet':
return settings.showAssociationPage ?? true
- case '/tagfelvetel':
+ case '/karrier':
return settings.showRecruitmentPage ?? true
default:
return true
diff --git a/src/migrations/20260729_182451_karrier_oldal.json b/src/migrations/20260729_182451_karrier_oldal.json
new file mode 100644
index 0000000..9f0cde0
--- /dev/null
+++ b/src/migrations/20260729_182451_karrier_oldal.json
@@ -0,0 +1,3911 @@
+{
+ "version": "7",
+ "dialect": "postgresql",
+ "tables": {
+ "public.users_sessions": {
+ "name": "users_sessions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "users_sessions_order_idx": {
+ "name": "users_sessions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_sessions_parent_id_idx": {
+ "name": "users_sessions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "users_sessions_parent_id_fk": {
+ "name": "users_sessions_parent_id_fk",
+ "tableFrom": "users_sessions",
+ "tableTo": "users",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.users": {
+ "name": "users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "reset_password_token": {
+ "name": "reset_password_token",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "reset_password_expiration": {
+ "name": "reset_password_expiration",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "salt": {
+ "name": "salt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hash": {
+ "name": "hash",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "login_attempts": {
+ "name": "login_attempts",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false,
+ "default": 0
+ },
+ "lock_until": {
+ "name": "lock_until",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "users_updated_at_idx": {
+ "name": "users_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_created_at_idx": {
+ "name": "users_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_email_idx": {
+ "name": "users_email_idx",
+ "columns": [
+ {
+ "expression": "email",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.media": {
+ "name": "media",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "alt": {
+ "name": "alt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "url": {
+ "name": "url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumbnail_u_r_l": {
+ "name": "thumbnail_u_r_l",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filename": {
+ "name": "filename",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "mime_type": {
+ "name": "mime_type",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filesize": {
+ "name": "filesize",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "width": {
+ "name": "width",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "height": {
+ "name": "height",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_x": {
+ "name": "focal_x",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_y": {
+ "name": "focal_y",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "media_updated_at_idx": {
+ "name": "media_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_created_at_idx": {
+ "name": "media_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_filename_idx": {
+ "name": "media_filename_idx",
+ "columns": [
+ {
+ "expression": "filename",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles_gallery": {
+ "name": "articles_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "articles_gallery_order_idx": {
+ "name": "articles_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_parent_id_idx": {
+ "name": "articles_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_image_idx": {
+ "name": "articles_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_gallery_image_id_media_id_fk": {
+ "name": "articles_gallery_image_id_media_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "articles_gallery_parent_id_fk": {
+ "name": "articles_gallery_parent_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles": {
+ "name": "articles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description": {
+ "name": "short_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description_eng": {
+ "name": "short_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_eng": {
+ "name": "content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "published_date": {
+ "name": "published_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "featured_image_id": {
+ "name": "featured_image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category_eng": {
+ "name": "category_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "articles_featured_image_idx": {
+ "name": "articles_featured_image_idx",
+ "columns": [
+ {
+ "expression": "featured_image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_slug_idx": {
+ "name": "articles_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_updated_at_idx": {
+ "name": "articles_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_created_at_idx": {
+ "name": "articles_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_featured_image_id_media_id_fk": {
+ "name": "articles_featured_image_id_media_id_fk",
+ "tableFrom": "articles",
+ "tableTo": "media",
+ "columnsFrom": [
+ "featured_image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.events": {
+ "name": "events",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "start_date": {
+ "name": "start_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "end_date": {
+ "name": "end_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "location": {
+ "name": "location",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "facebook_event_link": {
+ "name": "facebook_event_link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "link_to_picture_from_event_id": {
+ "name": "link_to_picture_from_event_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "events_image_idx": {
+ "name": "events_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_link_to_picture_from_event_idx": {
+ "name": "events_link_to_picture_from_event_idx",
+ "columns": [
+ {
+ "expression": "link_to_picture_from_event_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_slug_idx": {
+ "name": "events_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_updated_at_idx": {
+ "name": "events_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_created_at_idx": {
+ "name": "events_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "events_image_id_media_id_fk": {
+ "name": "events_image_id_media_id_fk",
+ "tableFrom": "events",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "events_link_to_picture_from_event_id_gallery_id_fk": {
+ "name": "events_link_to_picture_from_event_id_gallery_id_fk",
+ "tableFrom": "events",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "link_to_picture_from_event_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars_gallery": {
+ "name": "cars_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "cars_gallery_order_idx": {
+ "name": "cars_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_parent_id_idx": {
+ "name": "cars_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_image_idx": {
+ "name": "cars_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_gallery_image_id_media_id_fk": {
+ "name": "cars_gallery_image_id_media_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_gallery_parent_id_fk": {
+ "name": "cars_gallery_parent_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars": {
+ "name": "cars",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "year": {
+ "name": "year",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "interactive_model_id": {
+ "name": "interactive_model_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "cars_image_idx": {
+ "name": "cars_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_interactive_model_idx": {
+ "name": "cars_interactive_model_idx",
+ "columns": [
+ {
+ "expression": "interactive_model_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_updated_at_idx": {
+ "name": "cars_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_created_at_idx": {
+ "name": "cars_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_image_id_media_id_fk": {
+ "name": "cars_image_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_interactive_model_id_media_id_fk": {
+ "name": "cars_interactive_model_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "interactive_model_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery_images": {
+ "name": "gallery_images",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "gallery_images_order_idx": {
+ "name": "gallery_images_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_parent_id_idx": {
+ "name": "gallery_images_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_image_idx": {
+ "name": "gallery_images_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "gallery_images_image_id_media_id_fk": {
+ "name": "gallery_images_image_id_media_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "gallery_images_parent_id_fk": {
+ "name": "gallery_images_parent_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery": {
+ "name": "gallery",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "date": {
+ "name": "date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "gallery_slug_idx": {
+ "name": "gallery_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_updated_at_idx": {
+ "name": "gallery_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_created_at_idx": {
+ "name": "gallery_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.publications": {
+ "name": "publications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "author": {
+ "name": "author",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "link": {
+ "name": "link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "publications_updated_at_idx": {
+ "name": "publications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "publications_created_at_idx": {
+ "name": "publications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.members": {
+ "name": "members",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_id": {
+ "name": "group_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position": {
+ "name": "position",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_en": {
+ "name": "position_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "picture_id": {
+ "name": "picture_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "linkedin": {
+ "name": "linkedin",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "members_group_idx": {
+ "name": "members_group_idx",
+ "columns": [
+ {
+ "expression": "group_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_picture_idx": {
+ "name": "members_picture_idx",
+ "columns": [
+ {
+ "expression": "picture_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_updated_at_idx": {
+ "name": "members_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_created_at_idx": {
+ "name": "members_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "members_group_id_groups_id_fk": {
+ "name": "members_group_id_groups_id_fk",
+ "tableFrom": "members",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "group_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "members_picture_id_media_id_fk": {
+ "name": "members_picture_id_media_id_fk",
+ "tableFrom": "members",
+ "tableTo": "media",
+ "columnsFrom": [
+ "picture_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.sponsors": {
+ "name": "sponsors",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "logo_id": {
+ "name": "logo_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "website": {
+ "name": "website",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tier": {
+ "name": "tier",
+ "type": "enum_sponsors_tier",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "sponsors_logo_idx": {
+ "name": "sponsors_logo_idx",
+ "columns": [
+ {
+ "expression": "logo_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_updated_at_idx": {
+ "name": "sponsors_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_created_at_idx": {
+ "name": "sponsors_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "sponsors_logo_id_media_id_fk": {
+ "name": "sponsors_logo_id_media_id_fk",
+ "tableFrom": "sponsors",
+ "tableTo": "media",
+ "columnsFrom": [
+ "logo_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions_sections": {
+ "name": "recruitment_positions_sections",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "section_title": {
+ "name": "section_title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_title_eng": {
+ "name": "section_title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content": {
+ "name": "section_content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content_eng": {
+ "name": "section_content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "recruitment_positions_sections_order_idx": {
+ "name": "recruitment_positions_sections_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_sections_parent_id_idx": {
+ "name": "recruitment_positions_sections_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_sections_parent_id_fk": {
+ "name": "recruitment_positions_sections_parent_id_fk",
+ "tableFrom": "recruitment_positions_sections",
+ "tableTo": "recruitment_positions",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions": {
+ "name": "recruitment_positions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_name_eng": {
+ "name": "position_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_open": {
+ "name": "position_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description": {
+ "name": "position_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description_eng": {
+ "name": "position_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining": {
+ "name": "highlights_joining",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining_eng": {
+ "name": "highlights_joining_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment": {
+ "name": "highlights_time_commitment",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment_eng": {
+ "name": "highlights_time_commitment_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem": {
+ "name": "highlights_subsystem",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem_eng": {
+ "name": "highlights_subsystem_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "recruitment_positions_order_idx": {
+ "name": "recruitment_positions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_parent_id_idx": {
+ "name": "recruitment_positions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_parent_id_fk": {
+ "name": "recruitment_positions_parent_id_fk",
+ "tableFrom": "recruitment_positions",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment": {
+ "name": "recruitment",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_name_eng": {
+ "name": "group_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "recruitment_image_idx": {
+ "name": "recruitment_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_updated_at_idx": {
+ "name": "recruitment_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_created_at_idx": {
+ "name": "recruitment_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_image_id_media_id_fk": {
+ "name": "recruitment_image_id_media_id_fk",
+ "tableFrom": "recruitment",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.job_applications": {
+ "name": "job_applications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "phone": {
+ "name": "phone",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "university": {
+ "name": "university",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "major": {
+ "name": "major",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "semester": {
+ "name": "semester",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "motivation": {
+ "name": "motivation",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "consent": {
+ "name": "consent",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_status": {
+ "name": "sheet_sync_status",
+ "type": "enum_job_applications_sheet_sync_status",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_error": {
+ "name": "sheet_sync_error",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "job_applications_updated_at_idx": {
+ "name": "job_applications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "job_applications_created_at_idx": {
+ "name": "job_applications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.groups": {
+ "name": "groups",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name_en": {
+ "name": "name_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "groups_updated_at_idx": {
+ "name": "groups_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "groups_created_at_idx": {
+ "name": "groups_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.association": {
+ "name": "association",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "association_updated_at_idx": {
+ "name": "association_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "association_created_at_idx": {
+ "name": "association_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.support_us": {
+ "name": "support_us",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "button_text": {
+ "name": "button_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Támogatom a csapatot'"
+ },
+ "button_text_en": {
+ "name": "button_text_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Support the team'"
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "support_us_updated_at_idx": {
+ "name": "support_us_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "support_us_created_at_idx": {
+ "name": "support_us_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.contact": {
+ "name": "contact",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "contact_updated_at_idx": {
+ "name": "contact_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "contact_created_at_idx": {
+ "name": "contact_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.formula_student": {
+ "name": "formula_student",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "formula_student_updated_at_idx": {
+ "name": "formula_student_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "formula_student_created_at_idx": {
+ "name": "formula_student_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_kv": {
+ "name": "payload_kv",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "data": {
+ "name": "data",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "payload_kv_key_idx": {
+ "name": "payload_kv_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents": {
+ "name": "payload_locked_documents",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "global_slug": {
+ "name": "global_slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_global_slug_idx": {
+ "name": "payload_locked_documents_global_slug_idx",
+ "columns": [
+ {
+ "expression": "global_slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_updated_at_idx": {
+ "name": "payload_locked_documents_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_created_at_idx": {
+ "name": "payload_locked_documents_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents_rels": {
+ "name": "payload_locked_documents_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "media_id": {
+ "name": "media_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "articles_id": {
+ "name": "articles_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "events_id": {
+ "name": "events_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "cars_id": {
+ "name": "cars_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "gallery_id": {
+ "name": "gallery_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "publications_id": {
+ "name": "publications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "members_id": {
+ "name": "members_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sponsors_id": {
+ "name": "sponsors_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "recruitment_id": {
+ "name": "recruitment_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "job_applications_id": {
+ "name": "job_applications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "groups_id": {
+ "name": "groups_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "association_id": {
+ "name": "association_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "support_us_id": {
+ "name": "support_us_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "contact_id": {
+ "name": "contact_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "formula_student_id": {
+ "name": "formula_student_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_rels_order_idx": {
+ "name": "payload_locked_documents_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_parent_idx": {
+ "name": "payload_locked_documents_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_path_idx": {
+ "name": "payload_locked_documents_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_users_id_idx": {
+ "name": "payload_locked_documents_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_media_id_idx": {
+ "name": "payload_locked_documents_rels_media_id_idx",
+ "columns": [
+ {
+ "expression": "media_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_articles_id_idx": {
+ "name": "payload_locked_documents_rels_articles_id_idx",
+ "columns": [
+ {
+ "expression": "articles_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_events_id_idx": {
+ "name": "payload_locked_documents_rels_events_id_idx",
+ "columns": [
+ {
+ "expression": "events_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_cars_id_idx": {
+ "name": "payload_locked_documents_rels_cars_id_idx",
+ "columns": [
+ {
+ "expression": "cars_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_gallery_id_idx": {
+ "name": "payload_locked_documents_rels_gallery_id_idx",
+ "columns": [
+ {
+ "expression": "gallery_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_publications_id_idx": {
+ "name": "payload_locked_documents_rels_publications_id_idx",
+ "columns": [
+ {
+ "expression": "publications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_members_id_idx": {
+ "name": "payload_locked_documents_rels_members_id_idx",
+ "columns": [
+ {
+ "expression": "members_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_sponsors_id_idx": {
+ "name": "payload_locked_documents_rels_sponsors_id_idx",
+ "columns": [
+ {
+ "expression": "sponsors_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_recruitment_id_idx": {
+ "name": "payload_locked_documents_rels_recruitment_id_idx",
+ "columns": [
+ {
+ "expression": "recruitment_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_job_applications_id_idx": {
+ "name": "payload_locked_documents_rels_job_applications_id_idx",
+ "columns": [
+ {
+ "expression": "job_applications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_groups_id_idx": {
+ "name": "payload_locked_documents_rels_groups_id_idx",
+ "columns": [
+ {
+ "expression": "groups_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_association_id_idx": {
+ "name": "payload_locked_documents_rels_association_id_idx",
+ "columns": [
+ {
+ "expression": "association_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_support_us_id_idx": {
+ "name": "payload_locked_documents_rels_support_us_id_idx",
+ "columns": [
+ {
+ "expression": "support_us_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_contact_id_idx": {
+ "name": "payload_locked_documents_rels_contact_id_idx",
+ "columns": [
+ {
+ "expression": "contact_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_formula_student_id_idx": {
+ "name": "payload_locked_documents_rels_formula_student_id_idx",
+ "columns": [
+ {
+ "expression": "formula_student_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_locked_documents_rels_parent_fk": {
+ "name": "payload_locked_documents_rels_parent_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "payload_locked_documents",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_users_fk": {
+ "name": "payload_locked_documents_rels_users_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_media_fk": {
+ "name": "payload_locked_documents_rels_media_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "media",
+ "columnsFrom": [
+ "media_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_articles_fk": {
+ "name": "payload_locked_documents_rels_articles_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "articles_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_events_fk": {
+ "name": "payload_locked_documents_rels_events_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "events",
+ "columnsFrom": [
+ "events_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_cars_fk": {
+ "name": "payload_locked_documents_rels_cars_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "cars_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_gallery_fk": {
+ "name": "payload_locked_documents_rels_gallery_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "gallery_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_publications_fk": {
+ "name": "payload_locked_documents_rels_publications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "publications",
+ "columnsFrom": [
+ "publications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_members_fk": {
+ "name": "payload_locked_documents_rels_members_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "members",
+ "columnsFrom": [
+ "members_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_sponsors_fk": {
+ "name": "payload_locked_documents_rels_sponsors_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "sponsors",
+ "columnsFrom": [
+ "sponsors_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_recruitment_fk": {
+ "name": "payload_locked_documents_rels_recruitment_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "recruitment_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_job_applications_fk": {
+ "name": "payload_locked_documents_rels_job_applications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "job_applications",
+ "columnsFrom": [
+ "job_applications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_groups_fk": {
+ "name": "payload_locked_documents_rels_groups_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "groups_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_association_fk": {
+ "name": "payload_locked_documents_rels_association_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "association",
+ "columnsFrom": [
+ "association_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_support_us_fk": {
+ "name": "payload_locked_documents_rels_support_us_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "support_us",
+ "columnsFrom": [
+ "support_us_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_contact_fk": {
+ "name": "payload_locked_documents_rels_contact_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "contact",
+ "columnsFrom": [
+ "contact_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_formula_student_fk": {
+ "name": "payload_locked_documents_rels_formula_student_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "formula_student",
+ "columnsFrom": [
+ "formula_student_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences": {
+ "name": "payload_preferences",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "value": {
+ "name": "value",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_preferences_key_idx": {
+ "name": "payload_preferences_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_updated_at_idx": {
+ "name": "payload_preferences_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_created_at_idx": {
+ "name": "payload_preferences_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences_rels": {
+ "name": "payload_preferences_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_preferences_rels_order_idx": {
+ "name": "payload_preferences_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_parent_idx": {
+ "name": "payload_preferences_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_path_idx": {
+ "name": "payload_preferences_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_users_id_idx": {
+ "name": "payload_preferences_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_preferences_rels_parent_fk": {
+ "name": "payload_preferences_rels_parent_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "payload_preferences",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_preferences_rels_users_fk": {
+ "name": "payload_preferences_rels_users_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_migrations": {
+ "name": "payload_migrations",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "batch": {
+ "name": "batch",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_migrations_updated_at_idx": {
+ "name": "payload_migrations_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_migrations_created_at_idx": {
+ "name": "payload_migrations_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.site_settings": {
+ "name": "site_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "show_association_page": {
+ "name": "show_association_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "show_recruitment_page": {
+ "name": "show_recruitment_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings": {
+ "name": "career_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "intro": {
+ "name": "intro",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "intro_eng": {
+ "name": "intro_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "application_mode": {
+ "name": "application_mode",
+ "type": "enum_career_settings_application_mode",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'builtIn'"
+ },
+ "google_form_url": {
+ "name": "google_form_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_open": {
+ "name": "applications_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "applications_closed_text": {
+ "name": "applications_closed_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_closed_text_eng": {
+ "name": "applications_closed_text_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ }
+ },
+ "enums": {
+ "public.enum_sponsors_tier": {
+ "name": "enum_sponsors_tier",
+ "schema": "public",
+ "values": [
+ "diamond",
+ "gold",
+ "silver",
+ "copper",
+ "other",
+ "bme"
+ ]
+ },
+ "public.enum_job_applications_sheet_sync_status": {
+ "name": "enum_job_applications_sheet_sync_status",
+ "schema": "public",
+ "values": [
+ "ok",
+ "skipped",
+ "error"
+ ]
+ },
+ "public.enum_career_settings_application_mode": {
+ "name": "enum_career_settings_application_mode",
+ "schema": "public",
+ "values": [
+ "builtIn",
+ "googleForm"
+ ]
+ }
+ },
+ "schemas": {},
+ "sequences": {},
+ "roles": {},
+ "policies": {},
+ "views": {},
+ "_meta": {
+ "schemas": {},
+ "tables": {},
+ "columns": {}
+ },
+ "id": "cbfb0793-cc68-42b5-b33f-4289d9500eb8",
+ "prevId": "00000000-0000-0000-0000-000000000000"
+}
\ No newline at end of file
diff --git a/src/migrations/20260729_182451_karrier_oldal.ts b/src/migrations/20260729_182451_karrier_oldal.ts
new file mode 100644
index 0000000..72d28f0
--- /dev/null
+++ b/src/migrations/20260729_182451_karrier_oldal.ts
@@ -0,0 +1,101 @@
+import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
+
+export async function up({ db }: MigrateUpArgs): Promise {
+ await db.execute(sql`
+ CREATE TYPE "public"."enum_job_applications_sheet_sync_status" AS ENUM('ok', 'skipped', 'error');
+ CREATE TYPE "public"."enum_career_settings_application_mode" AS ENUM('builtIn', 'googleForm');
+ CREATE TABLE "recruitment_positions_sections" (
+ "_order" integer NOT NULL,
+ "_parent_id" varchar NOT NULL,
+ "id" varchar PRIMARY KEY NOT NULL,
+ "section_title" varchar NOT NULL,
+ "section_title_eng" varchar NOT NULL,
+ "section_content" jsonb NOT NULL,
+ "section_content_eng" jsonb NOT NULL
+ );
+
+ CREATE TABLE "job_applications" (
+ "id" serial PRIMARY KEY NOT NULL,
+ "name" varchar NOT NULL,
+ "email" varchar NOT NULL,
+ "phone" varchar,
+ "university" varchar,
+ "major" varchar,
+ "semester" varchar,
+ "group_name" varchar,
+ "position_name" varchar,
+ "motivation" varchar,
+ "consent" boolean,
+ "sheet_sync_status" "enum_job_applications_sheet_sync_status",
+ "sheet_sync_error" varchar,
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
+ );
+
+ CREATE TABLE "career_settings" (
+ "id" serial PRIMARY KEY NOT NULL,
+ "intro" jsonb,
+ "intro_eng" jsonb,
+ "application_mode" "enum_career_settings_application_mode" DEFAULT 'builtIn',
+ "google_form_url" varchar,
+ "applications_open" boolean DEFAULT true,
+ "applications_closed_text" varchar,
+ "applications_closed_text_eng" varchar,
+ "updated_at" timestamp(3) with time zone,
+ "created_at" timestamp(3) with time zone
+ );
+
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_description" DROP NOT NULL;
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_description_eng" DROP NOT NULL;
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_open" DROP DEFAULT;
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_open" DROP NOT NULL;
+ ALTER TABLE "recruitment_positions" ADD COLUMN "highlights_joining" varchar;
+ ALTER TABLE "recruitment_positions" ADD COLUMN "highlights_joining_eng" varchar;
+ ALTER TABLE "recruitment_positions" ADD COLUMN "highlights_time_commitment" varchar;
+ ALTER TABLE "recruitment_positions" ADD COLUMN "highlights_time_commitment_eng" varchar;
+ ALTER TABLE "recruitment_positions" ADD COLUMN "highlights_subsystem" varchar;
+ ALTER TABLE "recruitment_positions" ADD COLUMN "highlights_subsystem_eng" varchar;
+ ALTER TABLE "recruitment" ADD COLUMN "image_id" integer;
+ ALTER TABLE "recruitment" ADD COLUMN "order" numeric;
+ ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "job_applications_id" integer;
+ ALTER TABLE "recruitment_positions_sections" ADD CONSTRAINT "recruitment_positions_sections_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."recruitment_positions"("id") ON DELETE cascade ON UPDATE no action;
+ CREATE INDEX "recruitment_positions_sections_order_idx" ON "recruitment_positions_sections" USING btree ("_order");
+ CREATE INDEX "recruitment_positions_sections_parent_id_idx" ON "recruitment_positions_sections" USING btree ("_parent_id");
+ CREATE INDEX "job_applications_updated_at_idx" ON "job_applications" USING btree ("updated_at");
+ CREATE INDEX "job_applications_created_at_idx" ON "job_applications" USING btree ("created_at");
+ ALTER TABLE "recruitment" ADD CONSTRAINT "recruitment_image_id_media_id_fk" FOREIGN KEY ("image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
+ ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_job_applications_fk" FOREIGN KEY ("job_applications_id") REFERENCES "public"."job_applications"("id") ON DELETE cascade ON UPDATE no action;
+ CREATE INDEX "recruitment_image_idx" ON "recruitment" USING btree ("image_id");
+ CREATE INDEX "payload_locked_documents_rels_job_applications_id_idx" ON "payload_locked_documents_rels" USING btree ("job_applications_id");`)
+}
+
+export async function down({ db }: MigrateDownArgs): Promise {
+ await db.execute(sql`
+ ALTER TABLE "recruitment_positions_sections" DISABLE ROW LEVEL SECURITY;
+ ALTER TABLE "job_applications" DISABLE ROW LEVEL SECURITY;
+ ALTER TABLE "career_settings" DISABLE ROW LEVEL SECURITY;
+ DROP TABLE "recruitment_positions_sections" CASCADE;
+ DROP TABLE "job_applications" CASCADE;
+ DROP TABLE "career_settings" CASCADE;
+ ALTER TABLE "recruitment" DROP CONSTRAINT "recruitment_image_id_media_id_fk";
+
+ ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT "payload_locked_documents_rels_job_applications_fk";
+
+ DROP INDEX "recruitment_image_idx";
+ DROP INDEX "payload_locked_documents_rels_job_applications_id_idx";
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_open" SET DEFAULT false;
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_open" SET NOT NULL;
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_description" SET NOT NULL;
+ ALTER TABLE "recruitment_positions" ALTER COLUMN "position_description_eng" SET NOT NULL;
+ ALTER TABLE "recruitment_positions" DROP COLUMN "highlights_joining";
+ ALTER TABLE "recruitment_positions" DROP COLUMN "highlights_joining_eng";
+ ALTER TABLE "recruitment_positions" DROP COLUMN "highlights_time_commitment";
+ ALTER TABLE "recruitment_positions" DROP COLUMN "highlights_time_commitment_eng";
+ ALTER TABLE "recruitment_positions" DROP COLUMN "highlights_subsystem";
+ ALTER TABLE "recruitment_positions" DROP COLUMN "highlights_subsystem_eng";
+ ALTER TABLE "recruitment" DROP COLUMN "image_id";
+ ALTER TABLE "recruitment" DROP COLUMN "order";
+ ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "job_applications_id";
+ DROP TYPE "public"."enum_job_applications_sheet_sync_status";
+ DROP TYPE "public"."enum_career_settings_application_mode";`)
+}
diff --git a/src/migrations/20260730_204153_karrier_sheets_link.json b/src/migrations/20260730_204153_karrier_sheets_link.json
new file mode 100644
index 0000000..6ba6151
--- /dev/null
+++ b/src/migrations/20260730_204153_karrier_sheets_link.json
@@ -0,0 +1,3917 @@
+{
+ "version": "7",
+ "dialect": "postgresql",
+ "tables": {
+ "public.users_sessions": {
+ "name": "users_sessions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "users_sessions_order_idx": {
+ "name": "users_sessions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_sessions_parent_id_idx": {
+ "name": "users_sessions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "users_sessions_parent_id_fk": {
+ "name": "users_sessions_parent_id_fk",
+ "tableFrom": "users_sessions",
+ "tableTo": "users",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.users": {
+ "name": "users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "reset_password_token": {
+ "name": "reset_password_token",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "reset_password_expiration": {
+ "name": "reset_password_expiration",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "salt": {
+ "name": "salt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hash": {
+ "name": "hash",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "login_attempts": {
+ "name": "login_attempts",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false,
+ "default": 0
+ },
+ "lock_until": {
+ "name": "lock_until",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "users_updated_at_idx": {
+ "name": "users_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_created_at_idx": {
+ "name": "users_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_email_idx": {
+ "name": "users_email_idx",
+ "columns": [
+ {
+ "expression": "email",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.media": {
+ "name": "media",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "alt": {
+ "name": "alt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "url": {
+ "name": "url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumbnail_u_r_l": {
+ "name": "thumbnail_u_r_l",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filename": {
+ "name": "filename",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "mime_type": {
+ "name": "mime_type",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filesize": {
+ "name": "filesize",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "width": {
+ "name": "width",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "height": {
+ "name": "height",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_x": {
+ "name": "focal_x",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_y": {
+ "name": "focal_y",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "media_updated_at_idx": {
+ "name": "media_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_created_at_idx": {
+ "name": "media_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_filename_idx": {
+ "name": "media_filename_idx",
+ "columns": [
+ {
+ "expression": "filename",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles_gallery": {
+ "name": "articles_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "articles_gallery_order_idx": {
+ "name": "articles_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_parent_id_idx": {
+ "name": "articles_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_image_idx": {
+ "name": "articles_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_gallery_image_id_media_id_fk": {
+ "name": "articles_gallery_image_id_media_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "articles_gallery_parent_id_fk": {
+ "name": "articles_gallery_parent_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles": {
+ "name": "articles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description": {
+ "name": "short_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description_eng": {
+ "name": "short_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_eng": {
+ "name": "content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "published_date": {
+ "name": "published_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "featured_image_id": {
+ "name": "featured_image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category_eng": {
+ "name": "category_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "articles_featured_image_idx": {
+ "name": "articles_featured_image_idx",
+ "columns": [
+ {
+ "expression": "featured_image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_slug_idx": {
+ "name": "articles_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_updated_at_idx": {
+ "name": "articles_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_created_at_idx": {
+ "name": "articles_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_featured_image_id_media_id_fk": {
+ "name": "articles_featured_image_id_media_id_fk",
+ "tableFrom": "articles",
+ "tableTo": "media",
+ "columnsFrom": [
+ "featured_image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.events": {
+ "name": "events",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "start_date": {
+ "name": "start_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "end_date": {
+ "name": "end_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "location": {
+ "name": "location",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "facebook_event_link": {
+ "name": "facebook_event_link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "link_to_picture_from_event_id": {
+ "name": "link_to_picture_from_event_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "events_image_idx": {
+ "name": "events_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_link_to_picture_from_event_idx": {
+ "name": "events_link_to_picture_from_event_idx",
+ "columns": [
+ {
+ "expression": "link_to_picture_from_event_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_slug_idx": {
+ "name": "events_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_updated_at_idx": {
+ "name": "events_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_created_at_idx": {
+ "name": "events_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "events_image_id_media_id_fk": {
+ "name": "events_image_id_media_id_fk",
+ "tableFrom": "events",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "events_link_to_picture_from_event_id_gallery_id_fk": {
+ "name": "events_link_to_picture_from_event_id_gallery_id_fk",
+ "tableFrom": "events",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "link_to_picture_from_event_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars_gallery": {
+ "name": "cars_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "cars_gallery_order_idx": {
+ "name": "cars_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_parent_id_idx": {
+ "name": "cars_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_image_idx": {
+ "name": "cars_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_gallery_image_id_media_id_fk": {
+ "name": "cars_gallery_image_id_media_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_gallery_parent_id_fk": {
+ "name": "cars_gallery_parent_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars": {
+ "name": "cars",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "year": {
+ "name": "year",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "interactive_model_id": {
+ "name": "interactive_model_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "cars_image_idx": {
+ "name": "cars_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_interactive_model_idx": {
+ "name": "cars_interactive_model_idx",
+ "columns": [
+ {
+ "expression": "interactive_model_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_updated_at_idx": {
+ "name": "cars_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_created_at_idx": {
+ "name": "cars_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_image_id_media_id_fk": {
+ "name": "cars_image_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_interactive_model_id_media_id_fk": {
+ "name": "cars_interactive_model_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "interactive_model_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery_images": {
+ "name": "gallery_images",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "gallery_images_order_idx": {
+ "name": "gallery_images_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_parent_id_idx": {
+ "name": "gallery_images_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_image_idx": {
+ "name": "gallery_images_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "gallery_images_image_id_media_id_fk": {
+ "name": "gallery_images_image_id_media_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "gallery_images_parent_id_fk": {
+ "name": "gallery_images_parent_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery": {
+ "name": "gallery",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "date": {
+ "name": "date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "gallery_slug_idx": {
+ "name": "gallery_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_updated_at_idx": {
+ "name": "gallery_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_created_at_idx": {
+ "name": "gallery_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.publications": {
+ "name": "publications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "author": {
+ "name": "author",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "link": {
+ "name": "link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "publications_updated_at_idx": {
+ "name": "publications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "publications_created_at_idx": {
+ "name": "publications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.members": {
+ "name": "members",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_id": {
+ "name": "group_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position": {
+ "name": "position",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_en": {
+ "name": "position_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "picture_id": {
+ "name": "picture_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "linkedin": {
+ "name": "linkedin",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "members_group_idx": {
+ "name": "members_group_idx",
+ "columns": [
+ {
+ "expression": "group_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_picture_idx": {
+ "name": "members_picture_idx",
+ "columns": [
+ {
+ "expression": "picture_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_updated_at_idx": {
+ "name": "members_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_created_at_idx": {
+ "name": "members_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "members_group_id_groups_id_fk": {
+ "name": "members_group_id_groups_id_fk",
+ "tableFrom": "members",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "group_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "members_picture_id_media_id_fk": {
+ "name": "members_picture_id_media_id_fk",
+ "tableFrom": "members",
+ "tableTo": "media",
+ "columnsFrom": [
+ "picture_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.sponsors": {
+ "name": "sponsors",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "logo_id": {
+ "name": "logo_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "website": {
+ "name": "website",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tier": {
+ "name": "tier",
+ "type": "enum_sponsors_tier",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "sponsors_logo_idx": {
+ "name": "sponsors_logo_idx",
+ "columns": [
+ {
+ "expression": "logo_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_updated_at_idx": {
+ "name": "sponsors_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_created_at_idx": {
+ "name": "sponsors_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "sponsors_logo_id_media_id_fk": {
+ "name": "sponsors_logo_id_media_id_fk",
+ "tableFrom": "sponsors",
+ "tableTo": "media",
+ "columnsFrom": [
+ "logo_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions_sections": {
+ "name": "recruitment_positions_sections",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "section_title": {
+ "name": "section_title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_title_eng": {
+ "name": "section_title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content": {
+ "name": "section_content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content_eng": {
+ "name": "section_content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "recruitment_positions_sections_order_idx": {
+ "name": "recruitment_positions_sections_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_sections_parent_id_idx": {
+ "name": "recruitment_positions_sections_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_sections_parent_id_fk": {
+ "name": "recruitment_positions_sections_parent_id_fk",
+ "tableFrom": "recruitment_positions_sections",
+ "tableTo": "recruitment_positions",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions": {
+ "name": "recruitment_positions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_name_eng": {
+ "name": "position_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_open": {
+ "name": "position_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description": {
+ "name": "position_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description_eng": {
+ "name": "position_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining": {
+ "name": "highlights_joining",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining_eng": {
+ "name": "highlights_joining_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment": {
+ "name": "highlights_time_commitment",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment_eng": {
+ "name": "highlights_time_commitment_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem": {
+ "name": "highlights_subsystem",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem_eng": {
+ "name": "highlights_subsystem_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "recruitment_positions_order_idx": {
+ "name": "recruitment_positions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_parent_id_idx": {
+ "name": "recruitment_positions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_parent_id_fk": {
+ "name": "recruitment_positions_parent_id_fk",
+ "tableFrom": "recruitment_positions",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment": {
+ "name": "recruitment",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_name_eng": {
+ "name": "group_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "recruitment_image_idx": {
+ "name": "recruitment_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_updated_at_idx": {
+ "name": "recruitment_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_created_at_idx": {
+ "name": "recruitment_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_image_id_media_id_fk": {
+ "name": "recruitment_image_id_media_id_fk",
+ "tableFrom": "recruitment",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.job_applications": {
+ "name": "job_applications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "phone": {
+ "name": "phone",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "university": {
+ "name": "university",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "major": {
+ "name": "major",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "semester": {
+ "name": "semester",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "motivation": {
+ "name": "motivation",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "consent": {
+ "name": "consent",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_status": {
+ "name": "sheet_sync_status",
+ "type": "enum_job_applications_sheet_sync_status",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_error": {
+ "name": "sheet_sync_error",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "job_applications_updated_at_idx": {
+ "name": "job_applications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "job_applications_created_at_idx": {
+ "name": "job_applications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.groups": {
+ "name": "groups",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name_en": {
+ "name": "name_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "groups_updated_at_idx": {
+ "name": "groups_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "groups_created_at_idx": {
+ "name": "groups_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.association": {
+ "name": "association",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "association_updated_at_idx": {
+ "name": "association_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "association_created_at_idx": {
+ "name": "association_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.support_us": {
+ "name": "support_us",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "button_text": {
+ "name": "button_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Támogatom a csapatot'"
+ },
+ "button_text_en": {
+ "name": "button_text_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Support the team'"
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "support_us_updated_at_idx": {
+ "name": "support_us_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "support_us_created_at_idx": {
+ "name": "support_us_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.contact": {
+ "name": "contact",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "contact_updated_at_idx": {
+ "name": "contact_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "contact_created_at_idx": {
+ "name": "contact_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.formula_student": {
+ "name": "formula_student",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "formula_student_updated_at_idx": {
+ "name": "formula_student_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "formula_student_created_at_idx": {
+ "name": "formula_student_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_kv": {
+ "name": "payload_kv",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "data": {
+ "name": "data",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "payload_kv_key_idx": {
+ "name": "payload_kv_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents": {
+ "name": "payload_locked_documents",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "global_slug": {
+ "name": "global_slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_global_slug_idx": {
+ "name": "payload_locked_documents_global_slug_idx",
+ "columns": [
+ {
+ "expression": "global_slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_updated_at_idx": {
+ "name": "payload_locked_documents_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_created_at_idx": {
+ "name": "payload_locked_documents_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents_rels": {
+ "name": "payload_locked_documents_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "media_id": {
+ "name": "media_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "articles_id": {
+ "name": "articles_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "events_id": {
+ "name": "events_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "cars_id": {
+ "name": "cars_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "gallery_id": {
+ "name": "gallery_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "publications_id": {
+ "name": "publications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "members_id": {
+ "name": "members_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sponsors_id": {
+ "name": "sponsors_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "recruitment_id": {
+ "name": "recruitment_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "job_applications_id": {
+ "name": "job_applications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "groups_id": {
+ "name": "groups_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "association_id": {
+ "name": "association_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "support_us_id": {
+ "name": "support_us_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "contact_id": {
+ "name": "contact_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "formula_student_id": {
+ "name": "formula_student_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_rels_order_idx": {
+ "name": "payload_locked_documents_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_parent_idx": {
+ "name": "payload_locked_documents_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_path_idx": {
+ "name": "payload_locked_documents_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_users_id_idx": {
+ "name": "payload_locked_documents_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_media_id_idx": {
+ "name": "payload_locked_documents_rels_media_id_idx",
+ "columns": [
+ {
+ "expression": "media_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_articles_id_idx": {
+ "name": "payload_locked_documents_rels_articles_id_idx",
+ "columns": [
+ {
+ "expression": "articles_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_events_id_idx": {
+ "name": "payload_locked_documents_rels_events_id_idx",
+ "columns": [
+ {
+ "expression": "events_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_cars_id_idx": {
+ "name": "payload_locked_documents_rels_cars_id_idx",
+ "columns": [
+ {
+ "expression": "cars_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_gallery_id_idx": {
+ "name": "payload_locked_documents_rels_gallery_id_idx",
+ "columns": [
+ {
+ "expression": "gallery_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_publications_id_idx": {
+ "name": "payload_locked_documents_rels_publications_id_idx",
+ "columns": [
+ {
+ "expression": "publications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_members_id_idx": {
+ "name": "payload_locked_documents_rels_members_id_idx",
+ "columns": [
+ {
+ "expression": "members_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_sponsors_id_idx": {
+ "name": "payload_locked_documents_rels_sponsors_id_idx",
+ "columns": [
+ {
+ "expression": "sponsors_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_recruitment_id_idx": {
+ "name": "payload_locked_documents_rels_recruitment_id_idx",
+ "columns": [
+ {
+ "expression": "recruitment_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_job_applications_id_idx": {
+ "name": "payload_locked_documents_rels_job_applications_id_idx",
+ "columns": [
+ {
+ "expression": "job_applications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_groups_id_idx": {
+ "name": "payload_locked_documents_rels_groups_id_idx",
+ "columns": [
+ {
+ "expression": "groups_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_association_id_idx": {
+ "name": "payload_locked_documents_rels_association_id_idx",
+ "columns": [
+ {
+ "expression": "association_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_support_us_id_idx": {
+ "name": "payload_locked_documents_rels_support_us_id_idx",
+ "columns": [
+ {
+ "expression": "support_us_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_contact_id_idx": {
+ "name": "payload_locked_documents_rels_contact_id_idx",
+ "columns": [
+ {
+ "expression": "contact_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_formula_student_id_idx": {
+ "name": "payload_locked_documents_rels_formula_student_id_idx",
+ "columns": [
+ {
+ "expression": "formula_student_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_locked_documents_rels_parent_fk": {
+ "name": "payload_locked_documents_rels_parent_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "payload_locked_documents",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_users_fk": {
+ "name": "payload_locked_documents_rels_users_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_media_fk": {
+ "name": "payload_locked_documents_rels_media_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "media",
+ "columnsFrom": [
+ "media_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_articles_fk": {
+ "name": "payload_locked_documents_rels_articles_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "articles_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_events_fk": {
+ "name": "payload_locked_documents_rels_events_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "events",
+ "columnsFrom": [
+ "events_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_cars_fk": {
+ "name": "payload_locked_documents_rels_cars_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "cars_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_gallery_fk": {
+ "name": "payload_locked_documents_rels_gallery_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "gallery_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_publications_fk": {
+ "name": "payload_locked_documents_rels_publications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "publications",
+ "columnsFrom": [
+ "publications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_members_fk": {
+ "name": "payload_locked_documents_rels_members_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "members",
+ "columnsFrom": [
+ "members_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_sponsors_fk": {
+ "name": "payload_locked_documents_rels_sponsors_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "sponsors",
+ "columnsFrom": [
+ "sponsors_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_recruitment_fk": {
+ "name": "payload_locked_documents_rels_recruitment_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "recruitment_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_job_applications_fk": {
+ "name": "payload_locked_documents_rels_job_applications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "job_applications",
+ "columnsFrom": [
+ "job_applications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_groups_fk": {
+ "name": "payload_locked_documents_rels_groups_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "groups_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_association_fk": {
+ "name": "payload_locked_documents_rels_association_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "association",
+ "columnsFrom": [
+ "association_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_support_us_fk": {
+ "name": "payload_locked_documents_rels_support_us_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "support_us",
+ "columnsFrom": [
+ "support_us_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_contact_fk": {
+ "name": "payload_locked_documents_rels_contact_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "contact",
+ "columnsFrom": [
+ "contact_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_formula_student_fk": {
+ "name": "payload_locked_documents_rels_formula_student_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "formula_student",
+ "columnsFrom": [
+ "formula_student_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences": {
+ "name": "payload_preferences",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "value": {
+ "name": "value",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_preferences_key_idx": {
+ "name": "payload_preferences_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_updated_at_idx": {
+ "name": "payload_preferences_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_created_at_idx": {
+ "name": "payload_preferences_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences_rels": {
+ "name": "payload_preferences_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_preferences_rels_order_idx": {
+ "name": "payload_preferences_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_parent_idx": {
+ "name": "payload_preferences_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_path_idx": {
+ "name": "payload_preferences_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_users_id_idx": {
+ "name": "payload_preferences_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_preferences_rels_parent_fk": {
+ "name": "payload_preferences_rels_parent_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "payload_preferences",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_preferences_rels_users_fk": {
+ "name": "payload_preferences_rels_users_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_migrations": {
+ "name": "payload_migrations",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "batch": {
+ "name": "batch",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_migrations_updated_at_idx": {
+ "name": "payload_migrations_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_migrations_created_at_idx": {
+ "name": "payload_migrations_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.site_settings": {
+ "name": "site_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "show_association_page": {
+ "name": "show_association_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "show_recruitment_page": {
+ "name": "show_recruitment_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings": {
+ "name": "career_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "intro": {
+ "name": "intro",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "intro_eng": {
+ "name": "intro_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "application_mode": {
+ "name": "application_mode",
+ "type": "enum_career_settings_application_mode",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'builtIn'"
+ },
+ "google_form_url": {
+ "name": "google_form_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "spreadsheet_url": {
+ "name": "spreadsheet_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_open": {
+ "name": "applications_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "applications_closed_text": {
+ "name": "applications_closed_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_closed_text_eng": {
+ "name": "applications_closed_text_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ }
+ },
+ "enums": {
+ "public.enum_sponsors_tier": {
+ "name": "enum_sponsors_tier",
+ "schema": "public",
+ "values": [
+ "diamond",
+ "gold",
+ "silver",
+ "copper",
+ "other",
+ "bme"
+ ]
+ },
+ "public.enum_job_applications_sheet_sync_status": {
+ "name": "enum_job_applications_sheet_sync_status",
+ "schema": "public",
+ "values": [
+ "ok",
+ "skipped",
+ "error"
+ ]
+ },
+ "public.enum_career_settings_application_mode": {
+ "name": "enum_career_settings_application_mode",
+ "schema": "public",
+ "values": [
+ "builtIn",
+ "googleForm"
+ ]
+ }
+ },
+ "schemas": {},
+ "sequences": {},
+ "roles": {},
+ "policies": {},
+ "views": {},
+ "_meta": {
+ "schemas": {},
+ "tables": {},
+ "columns": {}
+ },
+ "id": "6852d24b-9862-4553-a6d7-14019146cc6a",
+ "prevId": "00000000-0000-0000-0000-000000000000"
+}
\ No newline at end of file
diff --git a/src/migrations/20260730_204153_karrier_sheets_link.ts b/src/migrations/20260730_204153_karrier_sheets_link.ts
new file mode 100644
index 0000000..f204466
--- /dev/null
+++ b/src/migrations/20260730_204153_karrier_sheets_link.ts
@@ -0,0 +1,11 @@
+import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
+
+export async function up({ db }: MigrateUpArgs): Promise {
+ await db.execute(sql`
+ ALTER TABLE "career_settings" ADD COLUMN "spreadsheet_url" varchar;`)
+}
+
+export async function down({ db }: MigrateDownArgs): Promise {
+ await db.execute(sql`
+ ALTER TABLE "career_settings" DROP COLUMN "spreadsheet_url";`)
+}
diff --git a/src/migrations/20260803_170842_karrier_faq.json b/src/migrations/20260803_170842_karrier_faq.json
new file mode 100644
index 0000000..4f5ecca
--- /dev/null
+++ b/src/migrations/20260803_170842_karrier_faq.json
@@ -0,0 +1,4017 @@
+{
+ "version": "7",
+ "dialect": "postgresql",
+ "tables": {
+ "public.users_sessions": {
+ "name": "users_sessions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "users_sessions_order_idx": {
+ "name": "users_sessions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_sessions_parent_id_idx": {
+ "name": "users_sessions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "users_sessions_parent_id_fk": {
+ "name": "users_sessions_parent_id_fk",
+ "tableFrom": "users_sessions",
+ "tableTo": "users",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.users": {
+ "name": "users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "reset_password_token": {
+ "name": "reset_password_token",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "reset_password_expiration": {
+ "name": "reset_password_expiration",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "salt": {
+ "name": "salt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hash": {
+ "name": "hash",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "login_attempts": {
+ "name": "login_attempts",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false,
+ "default": 0
+ },
+ "lock_until": {
+ "name": "lock_until",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "users_updated_at_idx": {
+ "name": "users_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_created_at_idx": {
+ "name": "users_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_email_idx": {
+ "name": "users_email_idx",
+ "columns": [
+ {
+ "expression": "email",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.media": {
+ "name": "media",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "alt": {
+ "name": "alt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "url": {
+ "name": "url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumbnail_u_r_l": {
+ "name": "thumbnail_u_r_l",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filename": {
+ "name": "filename",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "mime_type": {
+ "name": "mime_type",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filesize": {
+ "name": "filesize",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "width": {
+ "name": "width",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "height": {
+ "name": "height",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_x": {
+ "name": "focal_x",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_y": {
+ "name": "focal_y",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "media_updated_at_idx": {
+ "name": "media_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_created_at_idx": {
+ "name": "media_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_filename_idx": {
+ "name": "media_filename_idx",
+ "columns": [
+ {
+ "expression": "filename",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles_gallery": {
+ "name": "articles_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "articles_gallery_order_idx": {
+ "name": "articles_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_parent_id_idx": {
+ "name": "articles_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_image_idx": {
+ "name": "articles_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_gallery_image_id_media_id_fk": {
+ "name": "articles_gallery_image_id_media_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "articles_gallery_parent_id_fk": {
+ "name": "articles_gallery_parent_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles": {
+ "name": "articles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description": {
+ "name": "short_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description_eng": {
+ "name": "short_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_eng": {
+ "name": "content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "published_date": {
+ "name": "published_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "featured_image_id": {
+ "name": "featured_image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category_eng": {
+ "name": "category_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "articles_featured_image_idx": {
+ "name": "articles_featured_image_idx",
+ "columns": [
+ {
+ "expression": "featured_image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_slug_idx": {
+ "name": "articles_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_updated_at_idx": {
+ "name": "articles_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_created_at_idx": {
+ "name": "articles_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_featured_image_id_media_id_fk": {
+ "name": "articles_featured_image_id_media_id_fk",
+ "tableFrom": "articles",
+ "tableTo": "media",
+ "columnsFrom": [
+ "featured_image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.events": {
+ "name": "events",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "start_date": {
+ "name": "start_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "end_date": {
+ "name": "end_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "location": {
+ "name": "location",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "facebook_event_link": {
+ "name": "facebook_event_link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "link_to_picture_from_event_id": {
+ "name": "link_to_picture_from_event_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "events_image_idx": {
+ "name": "events_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_link_to_picture_from_event_idx": {
+ "name": "events_link_to_picture_from_event_idx",
+ "columns": [
+ {
+ "expression": "link_to_picture_from_event_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_slug_idx": {
+ "name": "events_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_updated_at_idx": {
+ "name": "events_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_created_at_idx": {
+ "name": "events_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "events_image_id_media_id_fk": {
+ "name": "events_image_id_media_id_fk",
+ "tableFrom": "events",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "events_link_to_picture_from_event_id_gallery_id_fk": {
+ "name": "events_link_to_picture_from_event_id_gallery_id_fk",
+ "tableFrom": "events",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "link_to_picture_from_event_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars_gallery": {
+ "name": "cars_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "cars_gallery_order_idx": {
+ "name": "cars_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_parent_id_idx": {
+ "name": "cars_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_image_idx": {
+ "name": "cars_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_gallery_image_id_media_id_fk": {
+ "name": "cars_gallery_image_id_media_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_gallery_parent_id_fk": {
+ "name": "cars_gallery_parent_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars": {
+ "name": "cars",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "year": {
+ "name": "year",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "interactive_model_id": {
+ "name": "interactive_model_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "cars_image_idx": {
+ "name": "cars_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_interactive_model_idx": {
+ "name": "cars_interactive_model_idx",
+ "columns": [
+ {
+ "expression": "interactive_model_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_updated_at_idx": {
+ "name": "cars_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_created_at_idx": {
+ "name": "cars_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_image_id_media_id_fk": {
+ "name": "cars_image_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_interactive_model_id_media_id_fk": {
+ "name": "cars_interactive_model_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "interactive_model_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery_images": {
+ "name": "gallery_images",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "gallery_images_order_idx": {
+ "name": "gallery_images_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_parent_id_idx": {
+ "name": "gallery_images_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_image_idx": {
+ "name": "gallery_images_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "gallery_images_image_id_media_id_fk": {
+ "name": "gallery_images_image_id_media_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "gallery_images_parent_id_fk": {
+ "name": "gallery_images_parent_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery": {
+ "name": "gallery",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "date": {
+ "name": "date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "gallery_slug_idx": {
+ "name": "gallery_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_updated_at_idx": {
+ "name": "gallery_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_created_at_idx": {
+ "name": "gallery_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.publications": {
+ "name": "publications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "author": {
+ "name": "author",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "link": {
+ "name": "link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "publications_updated_at_idx": {
+ "name": "publications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "publications_created_at_idx": {
+ "name": "publications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.members": {
+ "name": "members",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_id": {
+ "name": "group_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position": {
+ "name": "position",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_en": {
+ "name": "position_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "picture_id": {
+ "name": "picture_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "linkedin": {
+ "name": "linkedin",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "members_group_idx": {
+ "name": "members_group_idx",
+ "columns": [
+ {
+ "expression": "group_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_picture_idx": {
+ "name": "members_picture_idx",
+ "columns": [
+ {
+ "expression": "picture_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_updated_at_idx": {
+ "name": "members_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_created_at_idx": {
+ "name": "members_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "members_group_id_groups_id_fk": {
+ "name": "members_group_id_groups_id_fk",
+ "tableFrom": "members",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "group_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "members_picture_id_media_id_fk": {
+ "name": "members_picture_id_media_id_fk",
+ "tableFrom": "members",
+ "tableTo": "media",
+ "columnsFrom": [
+ "picture_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.sponsors": {
+ "name": "sponsors",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "logo_id": {
+ "name": "logo_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "website": {
+ "name": "website",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tier": {
+ "name": "tier",
+ "type": "enum_sponsors_tier",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "sponsors_logo_idx": {
+ "name": "sponsors_logo_idx",
+ "columns": [
+ {
+ "expression": "logo_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_updated_at_idx": {
+ "name": "sponsors_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_created_at_idx": {
+ "name": "sponsors_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "sponsors_logo_id_media_id_fk": {
+ "name": "sponsors_logo_id_media_id_fk",
+ "tableFrom": "sponsors",
+ "tableTo": "media",
+ "columnsFrom": [
+ "logo_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions_sections": {
+ "name": "recruitment_positions_sections",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "section_title": {
+ "name": "section_title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_title_eng": {
+ "name": "section_title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content": {
+ "name": "section_content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content_eng": {
+ "name": "section_content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "recruitment_positions_sections_order_idx": {
+ "name": "recruitment_positions_sections_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_sections_parent_id_idx": {
+ "name": "recruitment_positions_sections_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_sections_parent_id_fk": {
+ "name": "recruitment_positions_sections_parent_id_fk",
+ "tableFrom": "recruitment_positions_sections",
+ "tableTo": "recruitment_positions",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions": {
+ "name": "recruitment_positions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_name_eng": {
+ "name": "position_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_open": {
+ "name": "position_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description": {
+ "name": "position_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description_eng": {
+ "name": "position_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining": {
+ "name": "highlights_joining",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining_eng": {
+ "name": "highlights_joining_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment": {
+ "name": "highlights_time_commitment",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment_eng": {
+ "name": "highlights_time_commitment_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem": {
+ "name": "highlights_subsystem",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem_eng": {
+ "name": "highlights_subsystem_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "recruitment_positions_order_idx": {
+ "name": "recruitment_positions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_parent_id_idx": {
+ "name": "recruitment_positions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_parent_id_fk": {
+ "name": "recruitment_positions_parent_id_fk",
+ "tableFrom": "recruitment_positions",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment": {
+ "name": "recruitment",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_name_eng": {
+ "name": "group_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "recruitment_image_idx": {
+ "name": "recruitment_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_updated_at_idx": {
+ "name": "recruitment_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_created_at_idx": {
+ "name": "recruitment_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_image_id_media_id_fk": {
+ "name": "recruitment_image_id_media_id_fk",
+ "tableFrom": "recruitment",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.job_applications": {
+ "name": "job_applications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "phone": {
+ "name": "phone",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "university": {
+ "name": "university",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "major": {
+ "name": "major",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "semester": {
+ "name": "semester",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "motivation": {
+ "name": "motivation",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "consent": {
+ "name": "consent",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_status": {
+ "name": "sheet_sync_status",
+ "type": "enum_job_applications_sheet_sync_status",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_error": {
+ "name": "sheet_sync_error",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "job_applications_updated_at_idx": {
+ "name": "job_applications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "job_applications_created_at_idx": {
+ "name": "job_applications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.groups": {
+ "name": "groups",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name_en": {
+ "name": "name_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "groups_updated_at_idx": {
+ "name": "groups_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "groups_created_at_idx": {
+ "name": "groups_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.association": {
+ "name": "association",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "association_updated_at_idx": {
+ "name": "association_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "association_created_at_idx": {
+ "name": "association_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.support_us": {
+ "name": "support_us",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "button_text": {
+ "name": "button_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Támogatom a csapatot'"
+ },
+ "button_text_en": {
+ "name": "button_text_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Support the team'"
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "support_us_updated_at_idx": {
+ "name": "support_us_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "support_us_created_at_idx": {
+ "name": "support_us_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.contact": {
+ "name": "contact",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "contact_updated_at_idx": {
+ "name": "contact_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "contact_created_at_idx": {
+ "name": "contact_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.formula_student": {
+ "name": "formula_student",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "formula_student_updated_at_idx": {
+ "name": "formula_student_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "formula_student_created_at_idx": {
+ "name": "formula_student_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_kv": {
+ "name": "payload_kv",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "data": {
+ "name": "data",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "payload_kv_key_idx": {
+ "name": "payload_kv_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents": {
+ "name": "payload_locked_documents",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "global_slug": {
+ "name": "global_slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_global_slug_idx": {
+ "name": "payload_locked_documents_global_slug_idx",
+ "columns": [
+ {
+ "expression": "global_slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_updated_at_idx": {
+ "name": "payload_locked_documents_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_created_at_idx": {
+ "name": "payload_locked_documents_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents_rels": {
+ "name": "payload_locked_documents_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "media_id": {
+ "name": "media_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "articles_id": {
+ "name": "articles_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "events_id": {
+ "name": "events_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "cars_id": {
+ "name": "cars_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "gallery_id": {
+ "name": "gallery_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "publications_id": {
+ "name": "publications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "members_id": {
+ "name": "members_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sponsors_id": {
+ "name": "sponsors_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "recruitment_id": {
+ "name": "recruitment_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "job_applications_id": {
+ "name": "job_applications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "groups_id": {
+ "name": "groups_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "association_id": {
+ "name": "association_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "support_us_id": {
+ "name": "support_us_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "contact_id": {
+ "name": "contact_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "formula_student_id": {
+ "name": "formula_student_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_rels_order_idx": {
+ "name": "payload_locked_documents_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_parent_idx": {
+ "name": "payload_locked_documents_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_path_idx": {
+ "name": "payload_locked_documents_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_users_id_idx": {
+ "name": "payload_locked_documents_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_media_id_idx": {
+ "name": "payload_locked_documents_rels_media_id_idx",
+ "columns": [
+ {
+ "expression": "media_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_articles_id_idx": {
+ "name": "payload_locked_documents_rels_articles_id_idx",
+ "columns": [
+ {
+ "expression": "articles_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_events_id_idx": {
+ "name": "payload_locked_documents_rels_events_id_idx",
+ "columns": [
+ {
+ "expression": "events_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_cars_id_idx": {
+ "name": "payload_locked_documents_rels_cars_id_idx",
+ "columns": [
+ {
+ "expression": "cars_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_gallery_id_idx": {
+ "name": "payload_locked_documents_rels_gallery_id_idx",
+ "columns": [
+ {
+ "expression": "gallery_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_publications_id_idx": {
+ "name": "payload_locked_documents_rels_publications_id_idx",
+ "columns": [
+ {
+ "expression": "publications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_members_id_idx": {
+ "name": "payload_locked_documents_rels_members_id_idx",
+ "columns": [
+ {
+ "expression": "members_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_sponsors_id_idx": {
+ "name": "payload_locked_documents_rels_sponsors_id_idx",
+ "columns": [
+ {
+ "expression": "sponsors_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_recruitment_id_idx": {
+ "name": "payload_locked_documents_rels_recruitment_id_idx",
+ "columns": [
+ {
+ "expression": "recruitment_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_job_applications_id_idx": {
+ "name": "payload_locked_documents_rels_job_applications_id_idx",
+ "columns": [
+ {
+ "expression": "job_applications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_groups_id_idx": {
+ "name": "payload_locked_documents_rels_groups_id_idx",
+ "columns": [
+ {
+ "expression": "groups_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_association_id_idx": {
+ "name": "payload_locked_documents_rels_association_id_idx",
+ "columns": [
+ {
+ "expression": "association_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_support_us_id_idx": {
+ "name": "payload_locked_documents_rels_support_us_id_idx",
+ "columns": [
+ {
+ "expression": "support_us_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_contact_id_idx": {
+ "name": "payload_locked_documents_rels_contact_id_idx",
+ "columns": [
+ {
+ "expression": "contact_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_formula_student_id_idx": {
+ "name": "payload_locked_documents_rels_formula_student_id_idx",
+ "columns": [
+ {
+ "expression": "formula_student_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_locked_documents_rels_parent_fk": {
+ "name": "payload_locked_documents_rels_parent_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "payload_locked_documents",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_users_fk": {
+ "name": "payload_locked_documents_rels_users_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_media_fk": {
+ "name": "payload_locked_documents_rels_media_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "media",
+ "columnsFrom": [
+ "media_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_articles_fk": {
+ "name": "payload_locked_documents_rels_articles_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "articles_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_events_fk": {
+ "name": "payload_locked_documents_rels_events_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "events",
+ "columnsFrom": [
+ "events_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_cars_fk": {
+ "name": "payload_locked_documents_rels_cars_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "cars_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_gallery_fk": {
+ "name": "payload_locked_documents_rels_gallery_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "gallery_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_publications_fk": {
+ "name": "payload_locked_documents_rels_publications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "publications",
+ "columnsFrom": [
+ "publications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_members_fk": {
+ "name": "payload_locked_documents_rels_members_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "members",
+ "columnsFrom": [
+ "members_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_sponsors_fk": {
+ "name": "payload_locked_documents_rels_sponsors_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "sponsors",
+ "columnsFrom": [
+ "sponsors_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_recruitment_fk": {
+ "name": "payload_locked_documents_rels_recruitment_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "recruitment_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_job_applications_fk": {
+ "name": "payload_locked_documents_rels_job_applications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "job_applications",
+ "columnsFrom": [
+ "job_applications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_groups_fk": {
+ "name": "payload_locked_documents_rels_groups_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "groups_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_association_fk": {
+ "name": "payload_locked_documents_rels_association_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "association",
+ "columnsFrom": [
+ "association_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_support_us_fk": {
+ "name": "payload_locked_documents_rels_support_us_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "support_us",
+ "columnsFrom": [
+ "support_us_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_contact_fk": {
+ "name": "payload_locked_documents_rels_contact_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "contact",
+ "columnsFrom": [
+ "contact_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_formula_student_fk": {
+ "name": "payload_locked_documents_rels_formula_student_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "formula_student",
+ "columnsFrom": [
+ "formula_student_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences": {
+ "name": "payload_preferences",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "value": {
+ "name": "value",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_preferences_key_idx": {
+ "name": "payload_preferences_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_updated_at_idx": {
+ "name": "payload_preferences_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_created_at_idx": {
+ "name": "payload_preferences_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences_rels": {
+ "name": "payload_preferences_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_preferences_rels_order_idx": {
+ "name": "payload_preferences_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_parent_idx": {
+ "name": "payload_preferences_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_path_idx": {
+ "name": "payload_preferences_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_users_id_idx": {
+ "name": "payload_preferences_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_preferences_rels_parent_fk": {
+ "name": "payload_preferences_rels_parent_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "payload_preferences",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_preferences_rels_users_fk": {
+ "name": "payload_preferences_rels_users_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_migrations": {
+ "name": "payload_migrations",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "batch": {
+ "name": "batch",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_migrations_updated_at_idx": {
+ "name": "payload_migrations_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_migrations_created_at_idx": {
+ "name": "payload_migrations_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.site_settings": {
+ "name": "site_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "show_association_page": {
+ "name": "show_association_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "show_recruitment_page": {
+ "name": "show_recruitment_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings_faqs": {
+ "name": "career_settings_faqs",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "question": {
+ "name": "question",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "question_eng": {
+ "name": "question_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "answer": {
+ "name": "answer",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "answer_eng": {
+ "name": "answer_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "career_settings_faqs_order_idx": {
+ "name": "career_settings_faqs_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "career_settings_faqs_parent_id_idx": {
+ "name": "career_settings_faqs_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "career_settings_faqs_parent_id_fk": {
+ "name": "career_settings_faqs_parent_id_fk",
+ "tableFrom": "career_settings_faqs",
+ "tableTo": "career_settings",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings": {
+ "name": "career_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "intro": {
+ "name": "intro",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "intro_eng": {
+ "name": "intro_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "application_mode": {
+ "name": "application_mode",
+ "type": "enum_career_settings_application_mode",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'builtIn'"
+ },
+ "google_form_url": {
+ "name": "google_form_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "spreadsheet_url": {
+ "name": "spreadsheet_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_open": {
+ "name": "applications_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "applications_closed_text": {
+ "name": "applications_closed_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_closed_text_eng": {
+ "name": "applications_closed_text_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ }
+ },
+ "enums": {
+ "public.enum_sponsors_tier": {
+ "name": "enum_sponsors_tier",
+ "schema": "public",
+ "values": [
+ "diamond",
+ "gold",
+ "silver",
+ "copper",
+ "other",
+ "bme"
+ ]
+ },
+ "public.enum_job_applications_sheet_sync_status": {
+ "name": "enum_job_applications_sheet_sync_status",
+ "schema": "public",
+ "values": [
+ "ok",
+ "skipped",
+ "error"
+ ]
+ },
+ "public.enum_career_settings_application_mode": {
+ "name": "enum_career_settings_application_mode",
+ "schema": "public",
+ "values": [
+ "builtIn",
+ "googleForm"
+ ]
+ }
+ },
+ "schemas": {},
+ "sequences": {},
+ "roles": {},
+ "policies": {},
+ "views": {},
+ "_meta": {
+ "schemas": {},
+ "tables": {},
+ "columns": {}
+ },
+ "id": "25af9ab6-3de8-4c9f-81fd-05984184378f",
+ "prevId": "00000000-0000-0000-0000-000000000000"
+}
\ No newline at end of file
diff --git a/src/migrations/20260803_170842_karrier_faq.ts b/src/migrations/20260803_170842_karrier_faq.ts
new file mode 100644
index 0000000..aa89646
--- /dev/null
+++ b/src/migrations/20260803_170842_karrier_faq.ts
@@ -0,0 +1,23 @@
+import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
+
+export async function up({ db }: MigrateUpArgs): Promise {
+ await db.execute(sql`
+ CREATE TABLE "career_settings_faqs" (
+ "_order" integer NOT NULL,
+ "_parent_id" integer NOT NULL,
+ "id" varchar PRIMARY KEY NOT NULL,
+ "question" varchar NOT NULL,
+ "question_eng" varchar NOT NULL,
+ "answer" jsonb NOT NULL,
+ "answer_eng" jsonb NOT NULL
+ );
+
+ ALTER TABLE "career_settings_faqs" ADD CONSTRAINT "career_settings_faqs_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."career_settings"("id") ON DELETE cascade ON UPDATE no action;
+ CREATE INDEX "career_settings_faqs_order_idx" ON "career_settings_faqs" USING btree ("_order");
+ CREATE INDEX "career_settings_faqs_parent_id_idx" ON "career_settings_faqs" USING btree ("_parent_id");`)
+}
+
+export async function down({ db }: MigrateDownArgs): Promise {
+ await db.execute(sql`
+ DROP TABLE "career_settings_faqs" CASCADE;`)
+}
diff --git a/src/migrations/20260906_154658_contact_baseline.ts b/src/migrations/20260906_154658_contact_baseline.ts
new file mode 100644
index 0000000..8754c3e
--- /dev/null
+++ b/src/migrations/20260906_154658_contact_baseline.ts
@@ -0,0 +1,25 @@
+import { type MigrateUpArgs, sql } from '@payloadcms/db-postgres'
+
+/** Older snapshots included Contact, but the executable migration chain did not. */
+export async function up({ db }: MigrateUpArgs): Promise {
+ await db.execute(sql`
+ CREATE TABLE IF NOT EXISTS contact (
+ id serial PRIMARY KEY NOT NULL,
+ title varchar NOT NULL, title_en varchar NOT NULL,
+ content jsonb NOT NULL, content_en jsonb NOT NULL,
+ updated_at timestamp(3) with time zone DEFAULT now() NOT NULL,
+ created_at timestamp(3) with time zone DEFAULT now() NOT NULL
+ );
+ CREATE INDEX IF NOT EXISTS contact_updated_at_idx ON contact (updated_at);
+ CREATE INDEX IF NOT EXISTS contact_created_at_idx ON contact (created_at);
+ ALTER TABLE payload_locked_documents_rels ADD COLUMN IF NOT EXISTS contact_id integer;
+ CREATE INDEX IF NOT EXISTS payload_locked_documents_rels_contact_id_idx ON payload_locked_documents_rels (contact_id);
+ DO $$ BEGIN
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'payload_locked_documents_rels_contact_fk') THEN
+ ALTER TABLE payload_locked_documents_rels ADD CONSTRAINT payload_locked_documents_rels_contact_fk FOREIGN KEY (contact_id) REFERENCES contact(id) ON DELETE CASCADE;
+ END IF;
+ END $$;
+ `)
+}
+// Contact may predate this repair on an existing installation: preserve its data on rollback.
+export async function down(): Promise {}
diff --git a/src/migrations/20260906_154659_career_form_cv_contact.json b/src/migrations/20260906_154659_career_form_cv_contact.json
new file mode 100644
index 0000000..d458829
--- /dev/null
+++ b/src/migrations/20260906_154659_career_form_cv_contact.json
@@ -0,0 +1,4506 @@
+{
+ "version": "7",
+ "dialect": "postgresql",
+ "tables": {
+ "public.users_sessions": {
+ "name": "users_sessions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "users_sessions_order_idx": {
+ "name": "users_sessions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_sessions_parent_id_idx": {
+ "name": "users_sessions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "users_sessions_parent_id_fk": {
+ "name": "users_sessions_parent_id_fk",
+ "tableFrom": "users_sessions",
+ "tableTo": "users",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.users": {
+ "name": "users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "reset_password_token": {
+ "name": "reset_password_token",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "reset_password_expiration": {
+ "name": "reset_password_expiration",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "salt": {
+ "name": "salt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hash": {
+ "name": "hash",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "login_attempts": {
+ "name": "login_attempts",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false,
+ "default": 0
+ },
+ "lock_until": {
+ "name": "lock_until",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "users_updated_at_idx": {
+ "name": "users_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_created_at_idx": {
+ "name": "users_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "users_email_idx": {
+ "name": "users_email_idx",
+ "columns": [
+ {
+ "expression": "email",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.media": {
+ "name": "media",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "alt": {
+ "name": "alt",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "url": {
+ "name": "url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumbnail_u_r_l": {
+ "name": "thumbnail_u_r_l",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filename": {
+ "name": "filename",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "mime_type": {
+ "name": "mime_type",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filesize": {
+ "name": "filesize",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "width": {
+ "name": "width",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "height": {
+ "name": "height",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_x": {
+ "name": "focal_x",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_y": {
+ "name": "focal_y",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "media_updated_at_idx": {
+ "name": "media_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_created_at_idx": {
+ "name": "media_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "media_filename_idx": {
+ "name": "media_filename_idx",
+ "columns": [
+ {
+ "expression": "filename",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles_gallery": {
+ "name": "articles_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "articles_gallery_order_idx": {
+ "name": "articles_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_parent_id_idx": {
+ "name": "articles_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_gallery_image_idx": {
+ "name": "articles_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_gallery_image_id_media_id_fk": {
+ "name": "articles_gallery_image_id_media_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "articles_gallery_parent_id_fk": {
+ "name": "articles_gallery_parent_id_fk",
+ "tableFrom": "articles_gallery",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.articles": {
+ "name": "articles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description": {
+ "name": "short_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "short_description_eng": {
+ "name": "short_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_eng": {
+ "name": "content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "published_date": {
+ "name": "published_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "featured_image_id": {
+ "name": "featured_image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category_eng": {
+ "name": "category_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "articles_featured_image_idx": {
+ "name": "articles_featured_image_idx",
+ "columns": [
+ {
+ "expression": "featured_image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_slug_idx": {
+ "name": "articles_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_updated_at_idx": {
+ "name": "articles_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "articles_created_at_idx": {
+ "name": "articles_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "articles_featured_image_id_media_id_fk": {
+ "name": "articles_featured_image_id_media_id_fk",
+ "tableFrom": "articles",
+ "tableTo": "media",
+ "columnsFrom": [
+ "featured_image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.events": {
+ "name": "events",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "start_date": {
+ "name": "start_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "end_date": {
+ "name": "end_date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "location": {
+ "name": "location",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "facebook_event_link": {
+ "name": "facebook_event_link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "link_to_picture_from_event_id": {
+ "name": "link_to_picture_from_event_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "events_image_idx": {
+ "name": "events_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_link_to_picture_from_event_idx": {
+ "name": "events_link_to_picture_from_event_idx",
+ "columns": [
+ {
+ "expression": "link_to_picture_from_event_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_slug_idx": {
+ "name": "events_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_updated_at_idx": {
+ "name": "events_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "events_created_at_idx": {
+ "name": "events_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "events_image_id_media_id_fk": {
+ "name": "events_image_id_media_id_fk",
+ "tableFrom": "events",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "events_link_to_picture_from_event_id_gallery_id_fk": {
+ "name": "events_link_to_picture_from_event_id_gallery_id_fk",
+ "tableFrom": "events",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "link_to_picture_from_event_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars_gallery": {
+ "name": "cars_gallery",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "cars_gallery_order_idx": {
+ "name": "cars_gallery_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_parent_id_idx": {
+ "name": "cars_gallery_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_gallery_image_idx": {
+ "name": "cars_gallery_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_gallery_image_id_media_id_fk": {
+ "name": "cars_gallery_image_id_media_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_gallery_parent_id_fk": {
+ "name": "cars_gallery_parent_id_fk",
+ "tableFrom": "cars_gallery",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.cars": {
+ "name": "cars",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "year": {
+ "name": "year",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "interactive_model_id": {
+ "name": "interactive_model_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "cars_image_idx": {
+ "name": "cars_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_interactive_model_idx": {
+ "name": "cars_interactive_model_idx",
+ "columns": [
+ {
+ "expression": "interactive_model_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_updated_at_idx": {
+ "name": "cars_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "cars_created_at_idx": {
+ "name": "cars_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "cars_image_id_media_id_fk": {
+ "name": "cars_image_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "cars_interactive_model_id_media_id_fk": {
+ "name": "cars_interactive_model_id_media_id_fk",
+ "tableFrom": "cars",
+ "tableTo": "media",
+ "columnsFrom": [
+ "interactive_model_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery_images": {
+ "name": "gallery_images",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "gallery_images_order_idx": {
+ "name": "gallery_images_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_parent_id_idx": {
+ "name": "gallery_images_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_images_image_idx": {
+ "name": "gallery_images_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "gallery_images_image_id_media_id_fk": {
+ "name": "gallery_images_image_id_media_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "gallery_images_parent_id_fk": {
+ "name": "gallery_images_parent_id_fk",
+ "tableFrom": "gallery_images",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.gallery": {
+ "name": "gallery",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "date": {
+ "name": "date",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "category": {
+ "name": "category",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "slug": {
+ "name": "slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "gallery_slug_idx": {
+ "name": "gallery_slug_idx",
+ "columns": [
+ {
+ "expression": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_updated_at_idx": {
+ "name": "gallery_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "gallery_created_at_idx": {
+ "name": "gallery_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.publications": {
+ "name": "publications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_eng": {
+ "name": "title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "author": {
+ "name": "author",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "link": {
+ "name": "link",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "publications_updated_at_idx": {
+ "name": "publications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "publications_created_at_idx": {
+ "name": "publications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.members": {
+ "name": "members",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_id": {
+ "name": "group_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position": {
+ "name": "position",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_en": {
+ "name": "position_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "picture_id": {
+ "name": "picture_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "linkedin": {
+ "name": "linkedin",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "members_group_idx": {
+ "name": "members_group_idx",
+ "columns": [
+ {
+ "expression": "group_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_picture_idx": {
+ "name": "members_picture_idx",
+ "columns": [
+ {
+ "expression": "picture_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_updated_at_idx": {
+ "name": "members_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "members_created_at_idx": {
+ "name": "members_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "members_group_id_groups_id_fk": {
+ "name": "members_group_id_groups_id_fk",
+ "tableFrom": "members",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "group_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "members_picture_id_media_id_fk": {
+ "name": "members_picture_id_media_id_fk",
+ "tableFrom": "members",
+ "tableTo": "media",
+ "columnsFrom": [
+ "picture_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.sponsors": {
+ "name": "sponsors",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "logo_id": {
+ "name": "logo_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "website": {
+ "name": "website",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tier": {
+ "name": "tier",
+ "type": "enum_sponsors_tier",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "sponsors_logo_idx": {
+ "name": "sponsors_logo_idx",
+ "columns": [
+ {
+ "expression": "logo_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_updated_at_idx": {
+ "name": "sponsors_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "sponsors_created_at_idx": {
+ "name": "sponsors_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "sponsors_logo_id_media_id_fk": {
+ "name": "sponsors_logo_id_media_id_fk",
+ "tableFrom": "sponsors",
+ "tableTo": "media",
+ "columnsFrom": [
+ "logo_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions_sections": {
+ "name": "recruitment_positions_sections",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "section_title": {
+ "name": "section_title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_title_eng": {
+ "name": "section_title_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content": {
+ "name": "section_content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section_content_eng": {
+ "name": "section_content_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "recruitment_positions_sections_order_idx": {
+ "name": "recruitment_positions_sections_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_sections_parent_id_idx": {
+ "name": "recruitment_positions_sections_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_sections_parent_id_fk": {
+ "name": "recruitment_positions_sections_parent_id_fk",
+ "tableFrom": "recruitment_positions_sections",
+ "tableTo": "recruitment_positions",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment_positions": {
+ "name": "recruitment_positions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_name_eng": {
+ "name": "position_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "position_open": {
+ "name": "position_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description": {
+ "name": "position_description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_description_eng": {
+ "name": "position_description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining": {
+ "name": "highlights_joining",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_joining_eng": {
+ "name": "highlights_joining_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment": {
+ "name": "highlights_time_commitment",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_time_commitment_eng": {
+ "name": "highlights_time_commitment_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem": {
+ "name": "highlights_subsystem",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "highlights_subsystem_eng": {
+ "name": "highlights_subsystem_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "recruitment_positions_order_idx": {
+ "name": "recruitment_positions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_positions_parent_id_idx": {
+ "name": "recruitment_positions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_positions_parent_id_fk": {
+ "name": "recruitment_positions_parent_id_fk",
+ "tableFrom": "recruitment_positions",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.recruitment": {
+ "name": "recruitment",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "group_name_eng": {
+ "name": "group_name_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "image_id": {
+ "name": "image_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "recruitment_image_idx": {
+ "name": "recruitment_image_idx",
+ "columns": [
+ {
+ "expression": "image_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_updated_at_idx": {
+ "name": "recruitment_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "recruitment_created_at_idx": {
+ "name": "recruitment_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "recruitment_image_id_media_id_fk": {
+ "name": "recruitment_image_id_media_id_fk",
+ "tableFrom": "recruitment",
+ "tableTo": "media",
+ "columnsFrom": [
+ "image_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.job_applications": {
+ "name": "job_applications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "cv_id": {
+ "name": "cv_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "form_version": {
+ "name": "form_version",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "language": {
+ "name": "language",
+ "type": "enum_job_applications_language",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "answer_summary": {
+ "name": "answer_summary",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "answer_snapshot": {
+ "name": "answer_snapshot",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "phone": {
+ "name": "phone",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "university": {
+ "name": "university",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "major": {
+ "name": "major",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "semester": {
+ "name": "semester",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "group_name": {
+ "name": "group_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "position_name": {
+ "name": "position_name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "motivation": {
+ "name": "motivation",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "consent": {
+ "name": "consent",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_status": {
+ "name": "sheet_sync_status",
+ "type": "enum_job_applications_sheet_sync_status",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sheet_sync_error": {
+ "name": "sheet_sync_error",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "job_applications_cv_idx": {
+ "name": "job_applications_cv_idx",
+ "columns": [
+ {
+ "expression": "cv_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "job_applications_updated_at_idx": {
+ "name": "job_applications_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "job_applications_created_at_idx": {
+ "name": "job_applications_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "job_applications_cv_id_application_cvs_id_fk": {
+ "name": "job_applications_cv_id_application_cvs_id_fk",
+ "tableFrom": "job_applications",
+ "tableTo": "application_cvs",
+ "columnsFrom": [
+ "cv_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.application_cvs": {
+ "name": "application_cvs",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "url": {
+ "name": "url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumbnail_u_r_l": {
+ "name": "thumbnail_u_r_l",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filename": {
+ "name": "filename",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "mime_type": {
+ "name": "mime_type",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "filesize": {
+ "name": "filesize",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "width": {
+ "name": "width",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "height": {
+ "name": "height",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_x": {
+ "name": "focal_x",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "focal_y": {
+ "name": "focal_y",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "application_cvs_updated_at_idx": {
+ "name": "application_cvs_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "application_cvs_created_at_idx": {
+ "name": "application_cvs_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "application_cvs_filename_idx": {
+ "name": "application_cvs_filename_idx",
+ "columns": [
+ {
+ "expression": "filename",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.groups": {
+ "name": "groups",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name_en": {
+ "name": "name_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description_eng": {
+ "name": "description_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "groups_updated_at_idx": {
+ "name": "groups_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "groups_created_at_idx": {
+ "name": "groups_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.association": {
+ "name": "association",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "association_updated_at_idx": {
+ "name": "association_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "association_created_at_idx": {
+ "name": "association_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.support_us": {
+ "name": "support_us",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "button_text": {
+ "name": "button_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Támogatom a csapatot'"
+ },
+ "button_text_en": {
+ "name": "button_text_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Support the team'"
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "support_us_updated_at_idx": {
+ "name": "support_us_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "support_us_created_at_idx": {
+ "name": "support_us_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.contact": {
+ "name": "contact",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "exhibition_url": {
+ "name": "exhibition_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'https://docs.google.com/forms/d/e/1FAIpQLSdrA3VX3YpxQB3uZ1ojXov8-J3LPawAt4ip_Aj4k8FNbNOCrA/viewform?usp=dialog'"
+ },
+ "exhibition_label": {
+ "name": "exhibition_label",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'Rendezvényen való kiállítási igény'"
+ },
+ "exhibition_label_eng": {
+ "name": "exhibition_label_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'Event Exhibition Request'"
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "contact_updated_at_idx": {
+ "name": "contact_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "contact_created_at_idx": {
+ "name": "contact_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.formula_student": {
+ "name": "formula_student",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title_en": {
+ "name": "title_en",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "content_en": {
+ "name": "content_en",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "formula_student_updated_at_idx": {
+ "name": "formula_student_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "formula_student_created_at_idx": {
+ "name": "formula_student_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_kv": {
+ "name": "payload_kv",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "data": {
+ "name": "data",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "payload_kv_key_idx": {
+ "name": "payload_kv_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents": {
+ "name": "payload_locked_documents",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "global_slug": {
+ "name": "global_slug",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_global_slug_idx": {
+ "name": "payload_locked_documents_global_slug_idx",
+ "columns": [
+ {
+ "expression": "global_slug",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_updated_at_idx": {
+ "name": "payload_locked_documents_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_created_at_idx": {
+ "name": "payload_locked_documents_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_locked_documents_rels": {
+ "name": "payload_locked_documents_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "media_id": {
+ "name": "media_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "articles_id": {
+ "name": "articles_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "events_id": {
+ "name": "events_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "cars_id": {
+ "name": "cars_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "gallery_id": {
+ "name": "gallery_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "publications_id": {
+ "name": "publications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "members_id": {
+ "name": "members_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sponsors_id": {
+ "name": "sponsors_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "recruitment_id": {
+ "name": "recruitment_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "job_applications_id": {
+ "name": "job_applications_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "application_cvs_id": {
+ "name": "application_cvs_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "groups_id": {
+ "name": "groups_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "association_id": {
+ "name": "association_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "support_us_id": {
+ "name": "support_us_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "contact_id": {
+ "name": "contact_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "formula_student_id": {
+ "name": "formula_student_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_locked_documents_rels_order_idx": {
+ "name": "payload_locked_documents_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_parent_idx": {
+ "name": "payload_locked_documents_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_path_idx": {
+ "name": "payload_locked_documents_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_users_id_idx": {
+ "name": "payload_locked_documents_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_media_id_idx": {
+ "name": "payload_locked_documents_rels_media_id_idx",
+ "columns": [
+ {
+ "expression": "media_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_articles_id_idx": {
+ "name": "payload_locked_documents_rels_articles_id_idx",
+ "columns": [
+ {
+ "expression": "articles_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_events_id_idx": {
+ "name": "payload_locked_documents_rels_events_id_idx",
+ "columns": [
+ {
+ "expression": "events_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_cars_id_idx": {
+ "name": "payload_locked_documents_rels_cars_id_idx",
+ "columns": [
+ {
+ "expression": "cars_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_gallery_id_idx": {
+ "name": "payload_locked_documents_rels_gallery_id_idx",
+ "columns": [
+ {
+ "expression": "gallery_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_publications_id_idx": {
+ "name": "payload_locked_documents_rels_publications_id_idx",
+ "columns": [
+ {
+ "expression": "publications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_members_id_idx": {
+ "name": "payload_locked_documents_rels_members_id_idx",
+ "columns": [
+ {
+ "expression": "members_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_sponsors_id_idx": {
+ "name": "payload_locked_documents_rels_sponsors_id_idx",
+ "columns": [
+ {
+ "expression": "sponsors_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_recruitment_id_idx": {
+ "name": "payload_locked_documents_rels_recruitment_id_idx",
+ "columns": [
+ {
+ "expression": "recruitment_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_job_applications_id_idx": {
+ "name": "payload_locked_documents_rels_job_applications_id_idx",
+ "columns": [
+ {
+ "expression": "job_applications_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_application_cvs_id_idx": {
+ "name": "payload_locked_documents_rels_application_cvs_id_idx",
+ "columns": [
+ {
+ "expression": "application_cvs_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_groups_id_idx": {
+ "name": "payload_locked_documents_rels_groups_id_idx",
+ "columns": [
+ {
+ "expression": "groups_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_association_id_idx": {
+ "name": "payload_locked_documents_rels_association_id_idx",
+ "columns": [
+ {
+ "expression": "association_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_support_us_id_idx": {
+ "name": "payload_locked_documents_rels_support_us_id_idx",
+ "columns": [
+ {
+ "expression": "support_us_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_contact_id_idx": {
+ "name": "payload_locked_documents_rels_contact_id_idx",
+ "columns": [
+ {
+ "expression": "contact_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_locked_documents_rels_formula_student_id_idx": {
+ "name": "payload_locked_documents_rels_formula_student_id_idx",
+ "columns": [
+ {
+ "expression": "formula_student_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_locked_documents_rels_parent_fk": {
+ "name": "payload_locked_documents_rels_parent_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "payload_locked_documents",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_users_fk": {
+ "name": "payload_locked_documents_rels_users_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_media_fk": {
+ "name": "payload_locked_documents_rels_media_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "media",
+ "columnsFrom": [
+ "media_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_articles_fk": {
+ "name": "payload_locked_documents_rels_articles_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "articles",
+ "columnsFrom": [
+ "articles_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_events_fk": {
+ "name": "payload_locked_documents_rels_events_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "events",
+ "columnsFrom": [
+ "events_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_cars_fk": {
+ "name": "payload_locked_documents_rels_cars_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "cars",
+ "columnsFrom": [
+ "cars_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_gallery_fk": {
+ "name": "payload_locked_documents_rels_gallery_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "gallery",
+ "columnsFrom": [
+ "gallery_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_publications_fk": {
+ "name": "payload_locked_documents_rels_publications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "publications",
+ "columnsFrom": [
+ "publications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_members_fk": {
+ "name": "payload_locked_documents_rels_members_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "members",
+ "columnsFrom": [
+ "members_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_sponsors_fk": {
+ "name": "payload_locked_documents_rels_sponsors_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "sponsors",
+ "columnsFrom": [
+ "sponsors_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_recruitment_fk": {
+ "name": "payload_locked_documents_rels_recruitment_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "recruitment",
+ "columnsFrom": [
+ "recruitment_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_job_applications_fk": {
+ "name": "payload_locked_documents_rels_job_applications_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "job_applications",
+ "columnsFrom": [
+ "job_applications_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_application_cvs_fk": {
+ "name": "payload_locked_documents_rels_application_cvs_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "application_cvs",
+ "columnsFrom": [
+ "application_cvs_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_groups_fk": {
+ "name": "payload_locked_documents_rels_groups_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "groups",
+ "columnsFrom": [
+ "groups_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_association_fk": {
+ "name": "payload_locked_documents_rels_association_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "association",
+ "columnsFrom": [
+ "association_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_support_us_fk": {
+ "name": "payload_locked_documents_rels_support_us_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "support_us",
+ "columnsFrom": [
+ "support_us_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_contact_fk": {
+ "name": "payload_locked_documents_rels_contact_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "contact",
+ "columnsFrom": [
+ "contact_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_locked_documents_rels_formula_student_fk": {
+ "name": "payload_locked_documents_rels_formula_student_fk",
+ "tableFrom": "payload_locked_documents_rels",
+ "tableTo": "formula_student",
+ "columnsFrom": [
+ "formula_student_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences": {
+ "name": "payload_preferences",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "value": {
+ "name": "value",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_preferences_key_idx": {
+ "name": "payload_preferences_key_idx",
+ "columns": [
+ {
+ "expression": "key",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_updated_at_idx": {
+ "name": "payload_preferences_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_created_at_idx": {
+ "name": "payload_preferences_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_preferences_rels": {
+ "name": "payload_preferences_rels",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "parent_id": {
+ "name": "parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "path": {
+ "name": "path",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "users_id": {
+ "name": "users_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "payload_preferences_rels_order_idx": {
+ "name": "payload_preferences_rels_order_idx",
+ "columns": [
+ {
+ "expression": "order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_parent_idx": {
+ "name": "payload_preferences_rels_parent_idx",
+ "columns": [
+ {
+ "expression": "parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_path_idx": {
+ "name": "payload_preferences_rels_path_idx",
+ "columns": [
+ {
+ "expression": "path",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_preferences_rels_users_id_idx": {
+ "name": "payload_preferences_rels_users_id_idx",
+ "columns": [
+ {
+ "expression": "users_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "payload_preferences_rels_parent_fk": {
+ "name": "payload_preferences_rels_parent_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "payload_preferences",
+ "columnsFrom": [
+ "parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "payload_preferences_rels_users_fk": {
+ "name": "payload_preferences_rels_users_fk",
+ "tableFrom": "payload_preferences_rels",
+ "tableTo": "users",
+ "columnsFrom": [
+ "users_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.payload_migrations": {
+ "name": "payload_migrations",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "batch": {
+ "name": "batch",
+ "type": "numeric",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "payload_migrations_updated_at_idx": {
+ "name": "payload_migrations_updated_at_idx",
+ "columns": [
+ {
+ "expression": "updated_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "payload_migrations_created_at_idx": {
+ "name": "payload_migrations_created_at_idx",
+ "columns": [
+ {
+ "expression": "created_at",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.site_settings": {
+ "name": "site_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "show_association_page": {
+ "name": "show_association_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "show_recruitment_page": {
+ "name": "show_recruitment_page",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings_form_questions_options": {
+ "name": "career_settings_form_questions_options",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "label": {
+ "name": "label",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "label_eng": {
+ "name": "label_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {
+ "career_settings_form_questions_options_order_idx": {
+ "name": "career_settings_form_questions_options_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "career_settings_form_questions_options_parent_id_idx": {
+ "name": "career_settings_form_questions_options_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "career_settings_form_questions_options_parent_id_fk": {
+ "name": "career_settings_form_questions_options_parent_id_fk",
+ "tableFrom": "career_settings_form_questions_options",
+ "tableTo": "career_settings_form_questions",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings_form_questions": {
+ "name": "career_settings_form_questions",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "key": {
+ "name": "key",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "label": {
+ "name": "label",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "label_eng": {
+ "name": "label_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "hint": {
+ "name": "hint",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hint_eng": {
+ "name": "hint_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "type": {
+ "name": "type",
+ "type": "enum_career_settings_form_questions_type",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'text'"
+ },
+ "required": {
+ "name": "required",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "hidden": {
+ "name": "hidden",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ }
+ },
+ "indexes": {
+ "career_settings_form_questions_order_idx": {
+ "name": "career_settings_form_questions_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "career_settings_form_questions_parent_id_idx": {
+ "name": "career_settings_form_questions_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "career_settings_form_questions_parent_id_fk": {
+ "name": "career_settings_form_questions_parent_id_fk",
+ "tableFrom": "career_settings_form_questions",
+ "tableTo": "career_settings",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings_faqs": {
+ "name": "career_settings_faqs",
+ "schema": "",
+ "columns": {
+ "_order": {
+ "name": "_order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "_parent_id": {
+ "name": "_parent_id",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "id": {
+ "name": "id",
+ "type": "varchar",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "question": {
+ "name": "question",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "question_eng": {
+ "name": "question_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "answer": {
+ "name": "answer",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "answer_eng": {
+ "name": "answer_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "career_settings_faqs_order_idx": {
+ "name": "career_settings_faqs_order_idx",
+ "columns": [
+ {
+ "expression": "_order",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "career_settings_faqs_parent_id_idx": {
+ "name": "career_settings_faqs_parent_id_idx",
+ "columns": [
+ {
+ "expression": "_parent_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "career_settings_faqs_parent_id_fk": {
+ "name": "career_settings_faqs_parent_id_fk",
+ "tableFrom": "career_settings_faqs",
+ "tableTo": "career_settings",
+ "columnsFrom": [
+ "_parent_id"
+ ],
+ "columnsTo": [
+ "id"
+ ],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.career_settings": {
+ "name": "career_settings",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "serial",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "intro": {
+ "name": "intro",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "intro_eng": {
+ "name": "intro_eng",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "application_mode": {
+ "name": "application_mode",
+ "type": "enum_career_settings_application_mode",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": false,
+ "default": "'builtIn'"
+ },
+ "google_form_url": {
+ "name": "google_form_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "spreadsheet_url": {
+ "name": "spreadsheet_url",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_open": {
+ "name": "applications_open",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": true
+ },
+ "applications_closed_text": {
+ "name": "applications_closed_text",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "applications_closed_text_eng": {
+ "name": "applications_closed_text_eng",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3) with time zone",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ }
+ },
+ "enums": {
+ "public.enum_sponsors_tier": {
+ "name": "enum_sponsors_tier",
+ "schema": "public",
+ "values": [
+ "diamond",
+ "gold",
+ "silver",
+ "copper",
+ "other",
+ "bme"
+ ]
+ },
+ "public.enum_job_applications_language": {
+ "name": "enum_job_applications_language",
+ "schema": "public",
+ "values": [
+ "hu",
+ "en"
+ ]
+ },
+ "public.enum_job_applications_sheet_sync_status": {
+ "name": "enum_job_applications_sheet_sync_status",
+ "schema": "public",
+ "values": [
+ "ok",
+ "skipped",
+ "error"
+ ]
+ },
+ "public.enum_career_settings_form_questions_type": {
+ "name": "enum_career_settings_form_questions_type",
+ "schema": "public",
+ "values": [
+ "text",
+ "textarea",
+ "select",
+ "multiselect",
+ "checkbox"
+ ]
+ },
+ "public.enum_career_settings_application_mode": {
+ "name": "enum_career_settings_application_mode",
+ "schema": "public",
+ "values": [
+ "builtIn",
+ "googleForm"
+ ]
+ }
+ },
+ "schemas": {},
+ "sequences": {},
+ "roles": {},
+ "policies": {},
+ "views": {},
+ "_meta": {
+ "schemas": {},
+ "tables": {},
+ "columns": {}
+ },
+ "id": "97528a1e-7acd-4b1a-a0f8-d3986f2c88d8",
+ "prevId": "00000000-0000-0000-0000-000000000000"
+}
\ No newline at end of file
diff --git a/src/migrations/20260906_154659_career_form_cv_contact.ts b/src/migrations/20260906_154659_career_form_cv_contact.ts
new file mode 100644
index 0000000..8589d49
--- /dev/null
+++ b/src/migrations/20260906_154659_career_form_cv_contact.ts
@@ -0,0 +1,164 @@
+import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'
+
+export async function up({ db }: MigrateUpArgs): Promise {
+ await db.execute(sql`
+ CREATE TYPE "public"."enum_job_applications_language" AS ENUM('hu', 'en');
+ CREATE TYPE "public"."enum_career_settings_form_questions_type" AS ENUM('text', 'textarea', 'select', 'multiselect', 'checkbox');
+ CREATE TABLE "application_cvs" (
+ "id" serial PRIMARY KEY NOT NULL,
+ "updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
+ "created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
+ "url" varchar,
+ "thumbnail_u_r_l" varchar,
+ "filename" varchar,
+ "mime_type" varchar,
+ "filesize" numeric,
+ "width" numeric,
+ "height" numeric,
+ "focal_x" numeric,
+ "focal_y" numeric
+ );
+
+ CREATE TABLE "career_settings_form_questions_options" (
+ "_order" integer NOT NULL,
+ "_parent_id" varchar NOT NULL,
+ "id" varchar PRIMARY KEY NOT NULL,
+ "key" varchar,
+ "label" varchar,
+ "label_eng" varchar
+ );
+
+ CREATE TABLE "career_settings_form_questions" (
+ "_order" integer NOT NULL,
+ "_parent_id" integer NOT NULL,
+ "id" varchar PRIMARY KEY NOT NULL,
+ "key" varchar NOT NULL,
+ "label" varchar NOT NULL,
+ "label_eng" varchar NOT NULL,
+ "hint" varchar,
+ "hint_eng" varchar,
+ "type" "enum_career_settings_form_questions_type" DEFAULT 'text' NOT NULL,
+ "required" boolean DEFAULT false,
+ "hidden" boolean DEFAULT false
+ );
+
+ ALTER TABLE "job_applications" ADD COLUMN "cv_id" integer;
+ ALTER TABLE "job_applications" ADD COLUMN "form_version" varchar;
+ ALTER TABLE "job_applications" ADD COLUMN "language" "enum_job_applications_language";
+ ALTER TABLE "job_applications" ADD COLUMN "answer_summary" varchar;
+ ALTER TABLE "job_applications" ADD COLUMN "answer_snapshot" jsonb;
+ ALTER TABLE "contact" ADD COLUMN "exhibition_url" varchar DEFAULT 'https://docs.google.com/forms/d/e/1FAIpQLSdrA3VX3YpxQB3uZ1ojXov8-J3LPawAt4ip_Aj4k8FNbNOCrA/viewform?usp=dialog';
+ ALTER TABLE "contact" ADD COLUMN "exhibition_label" varchar DEFAULT 'Rendezvényen való kiállítási igény';
+ ALTER TABLE "contact" ADD COLUMN "exhibition_label_eng" varchar DEFAULT 'Event Exhibition Request';
+ ALTER TABLE "payload_locked_documents_rels" ADD COLUMN "application_cvs_id" integer;
+ ALTER TABLE "career_settings_form_questions_options" ADD CONSTRAINT "career_settings_form_questions_options_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."career_settings_form_questions"("id") ON DELETE cascade ON UPDATE no action;
+ ALTER TABLE "career_settings_form_questions" ADD CONSTRAINT "career_settings_form_questions_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."career_settings"("id") ON DELETE cascade ON UPDATE no action;
+ CREATE INDEX "application_cvs_updated_at_idx" ON "application_cvs" USING btree ("updated_at");
+ CREATE INDEX "application_cvs_created_at_idx" ON "application_cvs" USING btree ("created_at");
+ CREATE UNIQUE INDEX "application_cvs_filename_idx" ON "application_cvs" USING btree ("filename");
+ CREATE INDEX "career_settings_form_questions_options_order_idx" ON "career_settings_form_questions_options" USING btree ("_order");
+ CREATE INDEX "career_settings_form_questions_options_parent_id_idx" ON "career_settings_form_questions_options" USING btree ("_parent_id");
+ CREATE INDEX "career_settings_form_questions_order_idx" ON "career_settings_form_questions" USING btree ("_order");
+ CREATE INDEX "career_settings_form_questions_parent_id_idx" ON "career_settings_form_questions" USING btree ("_parent_id");
+ ALTER TABLE "job_applications" ADD CONSTRAINT "job_applications_cv_id_application_cvs_id_fk" FOREIGN KEY ("cv_id") REFERENCES "public"."application_cvs"("id") ON DELETE set null ON UPDATE no action;
+ ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_application_cvs_fk" FOREIGN KEY ("application_cvs_id") REFERENCES "public"."application_cvs"("id") ON DELETE cascade ON UPDATE no action;
+ CREATE INDEX "job_applications_cv_idx" ON "job_applications" USING btree ("cv_id");
+ CREATE INDEX "payload_locked_documents_rels_application_cvs_id_idx" ON "payload_locked_documents_rels" USING btree ("application_cvs_id");`)
+ // Freeze the initial form in this migration; later code changes must not alter it.
+ const questions = [
+ {
+ "key": "name",
+ "label": "Név",
+ "labelEng": "Name",
+ "type": "text",
+ "required": true
+ },
+ {
+ "key": "email",
+ "label": "E-mail cím",
+ "labelEng": "Email address",
+ "type": "text",
+ "required": true
+ },
+ {
+ "key": "phone",
+ "label": "Telefonszám",
+ "labelEng": "Phone number",
+ "type": "text"
+ },
+ {
+ "key": "semester",
+ "label": "Hányadik félév",
+ "labelEng": "Semester",
+ "type": "text"
+ },
+ {
+ "key": "university",
+ "label": "Egyetem / kar",
+ "labelEng": "University / faculty",
+ "type": "text"
+ },
+ {
+ "key": "major",
+ "label": "Szak",
+ "labelEng": "Major",
+ "type": "text"
+ },
+ {
+ "key": "groupName",
+ "label": "Csoport",
+ "labelEng": "Group",
+ "type": "text"
+ },
+ {
+ "key": "positionName",
+ "label": "Pozíció",
+ "labelEng": "Position",
+ "type": "text"
+ },
+ {
+ "key": "motivation",
+ "label": "Motiváció / üzenet",
+ "labelEng": "Motivation / message",
+ "type": "textarea"
+ },
+ {
+ "key": "consent",
+ "label": "Hozzájárulok a személyes adataim kezeléséhez a jelentkezés elbírálása céljából.",
+ "labelEng": "I consent to the processing of my personal data for the purpose of the application.",
+ "type": "checkbox",
+ "required": true
+ }
+];
+ for (const [order, question] of questions.entries()) {
+ await db.execute(sql`INSERT INTO career_settings_form_questions (_order, _parent_id, id, key, label, label_eng, type, required, hidden)
+ SELECT ${order + 1}, id, 'initial-' || id || '-' || ${question.key}, ${question.key}, ${question.label}, ${question.labelEng}, ${question.type}::enum_career_settings_form_questions_type, ${question.required ?? false}, false FROM career_settings`);
+ }
+}
+
+export async function down({ db }: MigrateDownArgs): Promise {
+ await db.execute(sql`
+ ALTER TABLE "application_cvs" DISABLE ROW LEVEL SECURITY;
+ ALTER TABLE "career_settings_form_questions_options" DISABLE ROW LEVEL SECURITY;
+ ALTER TABLE "career_settings_form_questions" DISABLE ROW LEVEL SECURITY;
+ DROP TABLE "application_cvs" CASCADE;
+ DROP TABLE "career_settings_form_questions_options" CASCADE;
+ DROP TABLE "career_settings_form_questions" CASCADE;
+ ALTER TABLE "job_applications" DROP CONSTRAINT IF EXISTS "job_applications_cv_id_application_cvs_id_fk";
+
+ ALTER TABLE "payload_locked_documents_rels" DROP CONSTRAINT IF EXISTS "payload_locked_documents_rels_application_cvs_fk";
+
+ DROP INDEX "job_applications_cv_idx";
+ DROP INDEX "payload_locked_documents_rels_application_cvs_id_idx";
+ ALTER TABLE "job_applications" DROP COLUMN "cv_id";
+ ALTER TABLE "job_applications" DROP COLUMN "form_version";
+ ALTER TABLE "job_applications" DROP COLUMN "language";
+ ALTER TABLE "job_applications" DROP COLUMN "answer_summary";
+ ALTER TABLE "job_applications" DROP COLUMN "answer_snapshot";
+ ALTER TABLE "contact" DROP COLUMN "exhibition_url";
+ ALTER TABLE "contact" DROP COLUMN "exhibition_label";
+ ALTER TABLE "contact" DROP COLUMN "exhibition_label_eng";
+ ALTER TABLE "payload_locked_documents_rels" DROP COLUMN "application_cvs_id";
+ DROP TYPE "public"."enum_job_applications_language";
+ DROP TYPE "public"."enum_career_settings_form_questions_type";`)
+}
diff --git a/src/migrations/20260906_220000_events_baseline.ts b/src/migrations/20260906_220000_events_baseline.ts
new file mode 100644
index 0000000..5144675
--- /dev/null
+++ b/src/migrations/20260906_220000_events_baseline.ts
@@ -0,0 +1,42 @@
+import { type MigrateUpArgs, sql } from '@payloadcms/db-postgres'
+
+/** These fields existed in snapshots, but were absent from the executable chain. */
+export async function up({ db }: MigrateUpArgs): Promise {
+ await db.execute(sql`
+ ALTER TABLE events ADD COLUMN IF NOT EXISTS link_to_picture_from_event_id integer;
+ ALTER TABLE events ADD COLUMN IF NOT EXISTS slug varchar;
+ ALTER TABLE events ALTER COLUMN location DROP NOT NULL;
+
+ -- Keep existing URLs; give legacy events a unique URL based on their ID.
+ DO $$
+ DECLARE legacy_event record; candidate varchar; suffix integer;
+ BEGIN
+ FOR legacy_event IN SELECT id FROM events WHERE slug IS NULL OR btrim(slug) = '' ORDER BY id LOOP
+ candidate := 'esemeny-' || legacy_event.id;
+ suffix := 0;
+ WHILE EXISTS (SELECT 1 FROM events WHERE slug = candidate) LOOP
+ suffix := suffix + 1;
+ candidate := 'esemeny-' || legacy_event.id || '-' || suffix;
+ END LOOP;
+ UPDATE events SET slug = candidate WHERE id = legacy_event.id;
+ END LOOP;
+ END $$;
+
+ ALTER TABLE events ALTER COLUMN slug SET NOT NULL;
+ CREATE UNIQUE INDEX IF NOT EXISTS events_slug_idx ON events (slug);
+ CREATE INDEX IF NOT EXISTS events_link_to_picture_from_event_idx ON events (link_to_picture_from_event_id);
+ DO $$ BEGIN
+ IF NOT EXISTS (
+ SELECT 1 FROM pg_constraint
+ WHERE conname = 'events_link_to_picture_from_event_id_gallery_id_fk'
+ AND conrelid = 'events'::regclass
+ ) THEN
+ ALTER TABLE events ADD CONSTRAINT events_link_to_picture_from_event_id_gallery_id_fk
+ FOREIGN KEY (link_to_picture_from_event_id) REFERENCES gallery(id) ON DELETE SET NULL;
+ END IF;
+ END $$;
+ `)
+}
+
+// An existing installation may already contain these fields and user data.
+export async function down(): Promise {}
diff --git a/src/migrations/index.ts b/src/migrations/index.ts
index 5e5aab6..9a0b204 100644
--- a/src/migrations/index.ts
+++ b/src/migrations/index.ts
@@ -1,3 +1,5 @@
+import * as migration_contact_baseline from "./20260906_154658_contact_baseline";
+import * as migration_events_baseline from "./20260906_220000_events_baseline";
import * as migration_20250907_085438 from './20250907_085438';
import * as migration_20251108_000000_add_support_us_button_text from './20251108_000000_add_support_us_button_text';
import * as migration_20251108_172023_add_events_facebook_event_link from './20251108_172023_add_events_facebook_event_link';
@@ -6,6 +8,10 @@ import * as migration_20251124_120000_fix_locked_documents_relation from './2025
import * as migration_20251130_000000_init_site_settings from './20251130_000000_init_site_settings';
import * as migration_20251201_090036_publications_optional_link from './20251201_090036_publications_optional_link';
import * as migration_20251206_100136_update_payload_3_67 from './20251206_100136_update_payload_3_67';
+import * as migration_20260729_182451_karrier_oldal from './20260729_182451_karrier_oldal';
+import * as migration_20260730_204153_karrier_sheets_link from './20260730_204153_karrier_sheets_link';
+import * as migration_20260803_170842_karrier_faq from './20260803_170842_karrier_faq';
+import * as migration_20260906_154659_career_form_cv_contact from './20260906_154659_career_form_cv_contact';
export const migrations = [
{
@@ -46,6 +52,32 @@ export const migrations = [
{
up: migration_20251206_100136_update_payload_3_67.up,
down: migration_20251206_100136_update_payload_3_67.down,
- name: '20251206_100136_update_payload_3_67'
+ name: '20251206_100136_update_payload_3_67',
+ },
+ {
+ up: migration_20260729_182451_karrier_oldal.up,
+ down: migration_20260729_182451_karrier_oldal.down,
+ name: '20260729_182451_karrier_oldal',
+ },
+ {
+ up: migration_20260730_204153_karrier_sheets_link.up,
+ down: migration_20260730_204153_karrier_sheets_link.down,
+ name: '20260730_204153_karrier_sheets_link',
+ },
+ {
+ up: migration_20260803_170842_karrier_faq.up,
+ down: migration_20260803_170842_karrier_faq.down,
+ name: '20260803_170842_karrier_faq',
+ },
+ { up: migration_contact_baseline.up, down: migration_contact_baseline.down, name: "20260906_154658_contact_baseline" },
+ {
+ up: migration_20260906_154659_career_form_cv_contact.up,
+ down: migration_20260906_154659_career_form_cv_contact.down,
+ name: '20260906_154659_career_form_cv_contact'
+ },
+ {
+ up: migration_events_baseline.up,
+ down: migration_events_baseline.down,
+ name: '20260906_220000_events_baseline',
},
];
diff --git a/src/payload-types.ts b/src/payload-types.ts
index 547066a..ff590b7 100644
--- a/src/payload-types.ts
+++ b/src/payload-types.ts
@@ -77,11 +77,14 @@ export interface Config {
members: Member;
sponsors: Sponsor;
recruitment: Recruitment;
+ 'job-applications': JobApplication;
+ 'application-cvs': ApplicationCv;
groups: Group;
association: Association;
'support-us': SupportUs;
contact: Contact;
'formula-student': FormulaStudent;
+ 'payload-kv': PayloadKv;
'payload-locked-documents': PayloadLockedDocument;
'payload-preferences': PayloadPreference;
'payload-migrations': PayloadMigration;
@@ -98,11 +101,14 @@ export interface Config {
members: MembersSelect | MembersSelect;
sponsors: SponsorsSelect | SponsorsSelect;
recruitment: RecruitmentSelect | RecruitmentSelect;
+ 'job-applications': JobApplicationsSelect | JobApplicationsSelect;
+ 'application-cvs': ApplicationCvsSelect | ApplicationCvsSelect;
groups: GroupsSelect | GroupsSelect;
association: AssociationSelect | AssociationSelect;
'support-us': SupportUsSelect | SupportUsSelect;
contact: ContactSelect | ContactSelect;
'formula-student': FormulaStudentSelect | FormulaStudentSelect;
+ 'payload-kv': PayloadKvSelect | PayloadKvSelect;
'payload-locked-documents': PayloadLockedDocumentsSelect | PayloadLockedDocumentsSelect;
'payload-preferences': PayloadPreferencesSelect | PayloadPreferencesSelect;
'payload-migrations': PayloadMigrationsSelect | PayloadMigrationsSelect;
@@ -110,16 +116,20 @@ export interface Config {
db: {
defaultIDType: number;
};
+ fallbackLocale: null;
globals: {
'site-settings': SiteSetting;
+ 'career-settings': CareerSetting;
};
globalsSelect: {
'site-settings': SiteSettingsSelect | SiteSettingsSelect;
+ 'career-settings': CareerSettingsSelect | CareerSettingsSelect;
};
locale: null;
- user: User & {
- collection: 'users';
+ widgets: {
+ collections: CollectionsWidget;
};
+ user: User;
jobs: {
tasks: unknown;
workflows: unknown;
@@ -160,7 +170,15 @@ export interface User {
hash?: string | null;
loginAttempts?: number | null;
lockUntil?: string | null;
+ sessions?:
+ | {
+ id: string;
+ createdAt?: string | null;
+ expiresAt: string;
+ }[]
+ | null;
password?: string | null;
+ collection: 'users';
}
/**
* This interface was referenced by `Config`'s JSON-Schema
@@ -195,7 +213,7 @@ export interface Article {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -210,7 +228,7 @@ export interface Article {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -225,7 +243,7 @@ export interface Article {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -240,7 +258,7 @@ export interface Article {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -282,7 +300,7 @@ export interface Event {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -297,7 +315,7 @@ export interface Event {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -361,7 +379,7 @@ export interface Car {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -376,7 +394,7 @@ export interface Car {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -411,7 +429,7 @@ export interface Publication {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -426,7 +444,7 @@ export interface Publication {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -437,7 +455,7 @@ export interface Publication {
};
[k: string]: unknown;
};
- link: string;
+ link?: string | null;
updatedAt: string;
createdAt: string;
}
@@ -473,7 +491,7 @@ export interface Group {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -488,7 +506,7 @@ export interface Group {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -519,7 +537,7 @@ export interface Sponsor {
createdAt: string;
}
/**
- * Nyitott pozíciók a csoportokon belül, funkcionális területek szerint csoportosítva.
+ * A Karrier oldalon megjelenő csoportok és a hozzájuk tartozó pozíciók.
*
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "recruitment".
@@ -528,11 +546,19 @@ export interface Recruitment {
id: number;
groupName: string;
groupNameEng: string;
+ /**
+ * A csoport sávjának bal oldalán jelenik meg. Fekvő (kb. 4:3) kép ajánlott.
+ */
+ image?: (number | null) | Media;
+ /**
+ * A csoportok növekvő sorrendben jelennek meg. Üresen hagyva a lista végére kerül.
+ */
+ order?: number | null;
description: {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -547,7 +573,7 @@ export interface Recruitment {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -561,11 +587,18 @@ export interface Recruitment {
positions: {
positionName: string;
positionNameEng: string;
- positionDescription: {
+ /**
+ * Csak a bepipált pozíciók jelennek meg a Karrier oldalon.
+ */
+ positionOpen?: boolean | null;
+ /**
+ * Rövid felvezető szöveg, a szekciók fölött jelenik meg. Opcionális.
+ */
+ positionDescription?: {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -575,12 +608,12 @@ export interface Recruitment {
version: number;
};
[k: string]: unknown;
- };
- positionDescriptionEng: {
+ } | null;
+ positionDescriptionEng?: {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -590,13 +623,126 @@ export interface Recruitment {
version: number;
};
[k: string]: unknown;
+ } | null;
+ /**
+ * A pozíció leírása szekciókra bontva, pl. Feladatok, Szükséges skillek, Miben fejlődhetsz, Előnyök.
+ */
+ sections?:
+ | {
+ sectionTitle: string;
+ sectionTitleEng: string;
+ sectionContent: {
+ root: {
+ type: string;
+ children: {
+ type: any;
+ version: number;
+ [k: string]: unknown;
+ }[];
+ direction: ('ltr' | 'rtl') | null;
+ format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
+ indent: number;
+ version: number;
+ };
+ [k: string]: unknown;
+ };
+ sectionContentEng: {
+ root: {
+ type: string;
+ children: {
+ type: any;
+ version: number;
+ [k: string]: unknown;
+ }[];
+ direction: ('ltr' | 'rtl') | null;
+ format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
+ indent: number;
+ version: number;
+ };
+ [k: string]: unknown;
+ };
+ id?: string | null;
+ }[]
+ | null;
+ /**
+ * A pozíció leírása alatt, ikonokkal kiemelve jelennek meg. Az üresen hagyott mezők nem jelennek meg.
+ */
+ highlights?: {
+ /**
+ * Pl. „2. félévtől, gépészmérnök hallgatóknak” vagy „Bármely szakos hallgatónak”.
+ */
+ joining?: string | null;
+ joiningEng?: string | null;
+ /**
+ * Pl. „heti 10-15 óra”.
+ */
+ timeCommitment?: string | null;
+ timeCommitmentEng?: string | null;
+ /**
+ * Pl. „Futómű”, „Akkumulátor”, „Aerodinamika”.
+ */
+ subsystem?: string | null;
+ subsystemEng?: string | null;
};
- positionOpen: boolean;
id?: string | null;
}[];
updatedAt: string;
createdAt: string;
}
+/**
+ * A Karrier oldalon beérkezett jelentkezések.
+ *
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "job-applications".
+ */
+export interface JobApplication {
+ id: number;
+ cv?: (number | null) | ApplicationCv;
+ formVersion?: string | null;
+ language?: ('hu' | 'en') | null;
+ answerSummary?: string | null;
+ answerSnapshot?:
+ | {
+ [k: string]: unknown;
+ }
+ | unknown[]
+ | string
+ | number
+ | boolean
+ | null;
+ name: string;
+ email: string;
+ phone?: string | null;
+ university?: string | null;
+ major?: string | null;
+ semester?: string | null;
+ groupName?: string | null;
+ positionName?: string | null;
+ motivation?: string | null;
+ consent?: boolean | null;
+ sheetSyncStatus?: ('ok' | 'skipped' | 'error') | null;
+ sheetSyncError?: string | null;
+ updatedAt: string;
+ createdAt: string;
+}
+/**
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "application-cvs".
+ */
+export interface ApplicationCv {
+ id: number;
+ updatedAt: string;
+ createdAt: string;
+ url?: string | null;
+ thumbnailURL?: string | null;
+ filename?: string | null;
+ mimeType?: string | null;
+ filesize?: number | null;
+ width?: number | null;
+ height?: number | null;
+ focalX?: number | null;
+ focalY?: number | null;
+}
/**
* Az egyesület szerkeszthető tartalmai
*
@@ -611,7 +757,7 @@ export interface Association {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -626,7 +772,7 @@ export interface Association {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -656,7 +802,7 @@ export interface SupportUs {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -671,7 +817,7 @@ export interface SupportUs {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -693,13 +839,19 @@ export interface SupportUs {
*/
export interface Contact {
id: number;
+ /**
+ * Üresen hagyva a gomb nem jelenik meg.
+ */
+ exhibitionUrl?: string | null;
+ exhibitionLabel?: string | null;
+ exhibitionLabelEng?: string | null;
title: string;
title_en: string;
content: {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -714,7 +866,7 @@ export interface Contact {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -742,7 +894,7 @@ export interface FormulaStudent {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -757,7 +909,7 @@ export interface FormulaStudent {
root: {
type: string;
children: {
- type: string;
+ type: any;
version: number;
[k: string]: unknown;
}[];
@@ -771,6 +923,23 @@ export interface FormulaStudent {
updatedAt: string;
createdAt: string;
}
+/**
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "payload-kv".
+ */
+export interface PayloadKv {
+ id: number;
+ key: string;
+ data:
+ | {
+ [k: string]: unknown;
+ }
+ | unknown[]
+ | string
+ | number
+ | boolean
+ | null;
+}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-locked-documents".
@@ -818,6 +987,14 @@ export interface PayloadLockedDocument {
relationTo: 'recruitment';
value: number | Recruitment;
} | null)
+ | ({
+ relationTo: 'job-applications';
+ value: number | JobApplication;
+ } | null)
+ | ({
+ relationTo: 'application-cvs';
+ value: number | ApplicationCv;
+ } | null)
| ({
relationTo: 'groups';
value: number | Group;
@@ -894,6 +1071,13 @@ export interface UsersSelect {
hash?: T;
loginAttempts?: T;
lockUntil?: T;
+ sessions?:
+ | T
+ | {
+ id?: T;
+ createdAt?: T;
+ expiresAt?: T;
+ };
}
/**
* This interface was referenced by `Config`'s JSON-Schema
@@ -1044,6 +1228,8 @@ export interface SponsorsSelect {
export interface RecruitmentSelect {
groupName?: T;
groupNameEng?: T;
+ image?: T;
+ order?: T;
description?: T;
descriptionEng?: T;
positions?:
@@ -1051,14 +1237,75 @@ export interface RecruitmentSelect {
| {
positionName?: T;
positionNameEng?: T;
+ positionOpen?: T;
positionDescription?: T;
positionDescriptionEng?: T;
- positionOpen?: T;
+ sections?:
+ | T
+ | {
+ sectionTitle?: T;
+ sectionTitleEng?: T;
+ sectionContent?: T;
+ sectionContentEng?: T;
+ id?: T;
+ };
+ highlights?:
+ | T
+ | {
+ joining?: T;
+ joiningEng?: T;
+ timeCommitment?: T;
+ timeCommitmentEng?: T;
+ subsystem?: T;
+ subsystemEng?: T;
+ };
id?: T;
};
updatedAt?: T;
createdAt?: T;
}
+/**
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "job-applications_select".
+ */
+export interface JobApplicationsSelect {
+ cv?: T;
+ formVersion?: T;
+ language?: T;
+ answerSummary?: T;
+ answerSnapshot?: T;
+ name?: T;
+ email?: T;
+ phone?: T;
+ university?: T;
+ major?: T;
+ semester?: T;
+ groupName?: T;
+ positionName?: T;
+ motivation?: T;
+ consent?: T;
+ sheetSyncStatus?: T;
+ sheetSyncError?: T;
+ updatedAt?: T;
+ createdAt?: T;
+}
+/**
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "application-cvs_select".
+ */
+export interface ApplicationCvsSelect {
+ updatedAt?: T;
+ createdAt?: T;
+ url?: T;
+ thumbnailURL?: T;
+ filename?: T;
+ mimeType?: T;
+ filesize?: T;
+ width?: T;
+ height?: T;
+ focalX?: T;
+ focalY?: T;
+}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "groups_select".
@@ -1103,6 +1350,9 @@ export interface SupportUsSelect {
* via the `definition` "contact_select".
*/
export interface ContactSelect {
+ exhibitionUrl?: T;
+ exhibitionLabel?: T;
+ exhibitionLabelEng?: T;
title?: T;
title_en?: T;
content?: T;
@@ -1122,6 +1372,14 @@ export interface FormulaStudentSelect {
updatedAt?: T;
createdAt?: T;
}
+/**
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "payload-kv_select".
+ */
+export interface PayloadKvSelect {
+ key?: T;
+ data?: T;
+}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-locked-documents_select".
@@ -1165,12 +1423,135 @@ export interface SiteSetting {
*/
showAssociationPage?: boolean | null;
/**
- * Controls visibility of the Recruitment page in navigation and direct access
+ * Controls visibility of the Careers page in navigation and direct access
*/
showRecruitmentPage?: boolean | null;
updatedAt?: string | null;
createdAt?: string | null;
}
+/**
+ * A Karrier oldal bevezetője és a jelentkezés módjának beállítása.
+ *
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "career-settings".
+ */
+export interface CareerSetting {
+ id: number;
+ /**
+ * Sorrend: húzd a kérdéseket a helyükre. A hozzájárulás mindig a CV után jelenik meg. A név, e-mail és hozzájárulás kötelező. A csoport és pozíció az automatikus kitöltés miatt nem törölhető.
+ */
+ formQuestions?:
+ | {
+ key: string;
+ label: string;
+ labelEng: string;
+ hint?: string | null;
+ hintEng?: string | null;
+ type: 'text' | 'textarea' | 'select' | 'multiselect' | 'checkbox';
+ required?: boolean | null;
+ hidden?: boolean | null;
+ options?:
+ | {
+ key: string;
+ label: string;
+ labelEng: string;
+ id?: string | null;
+ }[]
+ | null;
+ id?: string | null;
+ }[]
+ | null;
+ /**
+ * Az oldal tetején, a csoportok listája fölött jelenik meg.
+ */
+ intro?: {
+ root: {
+ type: string;
+ children: {
+ type: any;
+ version: number;
+ [k: string]: unknown;
+ }[];
+ direction: ('ltr' | 'rtl') | null;
+ format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
+ indent: number;
+ version: number;
+ };
+ [k: string]: unknown;
+ } | null;
+ introEng?: {
+ root: {
+ type: string;
+ children: {
+ type: any;
+ version: number;
+ [k: string]: unknown;
+ }[];
+ direction: ('ltr' | 'rtl') | null;
+ format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
+ indent: number;
+ version: number;
+ };
+ [k: string]: unknown;
+ } | null;
+ /**
+ * Beépített űrlap esetén a jelentkezések a Payload adminba érkeznek (és a Google táblázatba, ha be van állítva a táblázat).
+ */
+ applicationMode?: ('builtIn' | 'googleForm') | null;
+ /**
+ * Csak a „Külső Google űrlap” mód esetén használjuk.
+ */
+ googleFormUrl?: string | null;
+ spreadsheetUrl?: string | null;
+ /**
+ * Kikapcsolva az oldal továbbra is elérhető, de a jelentkezési űrlap és a „Jelentkezz” gomb helyett egy tájékoztató szöveg jelenik meg.
+ */
+ applicationsOpen?: boolean | null;
+ applicationsClosedText?: string | null;
+ applicationsClosedTextEng?: string | null;
+ /**
+ * A kérdések ebben a sorrendben jelennek meg a csoportok után, a jelentkezés előtt. Üresen hagyva a GYIK szekció nem jelenik meg.
+ */
+ faqs?:
+ | {
+ question: string;
+ questionEng: string;
+ answer: {
+ root: {
+ type: string;
+ children: {
+ type: any;
+ version: number;
+ [k: string]: unknown;
+ }[];
+ direction: ('ltr' | 'rtl') | null;
+ format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
+ indent: number;
+ version: number;
+ };
+ [k: string]: unknown;
+ };
+ answerEng: {
+ root: {
+ type: string;
+ children: {
+ type: any;
+ version: number;
+ [k: string]: unknown;
+ }[];
+ direction: ('ltr' | 'rtl') | null;
+ format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
+ indent: number;
+ version: number;
+ };
+ [k: string]: unknown;
+ };
+ id?: string | null;
+ }[]
+ | null;
+ updatedAt?: string | null;
+ createdAt?: string | null;
+}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "site-settings_select".
@@ -1182,6 +1563,63 @@ export interface SiteSettingsSelect {
createdAt?: T;
globalType?: T;
}
+/**
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "career-settings_select".
+ */
+export interface CareerSettingsSelect {
+ formQuestions?:
+ | T
+ | {
+ key?: T;
+ label?: T;
+ labelEng?: T;
+ hint?: T;
+ hintEng?: T;
+ type?: T;
+ required?: T;
+ hidden?: T;
+ options?:
+ | T
+ | {
+ key?: T;
+ label?: T;
+ labelEng?: T;
+ id?: T;
+ };
+ id?: T;
+ };
+ intro?: T;
+ introEng?: T;
+ applicationMode?: T;
+ googleFormUrl?: T;
+ spreadsheetUrl?: T;
+ applicationsOpen?: T;
+ applicationsClosedText?: T;
+ applicationsClosedTextEng?: T;
+ faqs?:
+ | T
+ | {
+ question?: T;
+ questionEng?: T;
+ answer?: T;
+ answerEng?: T;
+ id?: T;
+ };
+ updatedAt?: T;
+ createdAt?: T;
+ globalType?: T;
+}
+/**
+ * This interface was referenced by `Config`'s JSON-Schema
+ * via the `definition` "collections_widget".
+ */
+export interface CollectionsWidget {
+ data?: {
+ [k: string]: unknown;
+ };
+ width: 'full';
+}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "auth".
diff --git a/src/payload.config.ts b/src/payload.config.ts
index cdfc618..d108598 100644
--- a/src/payload.config.ts
+++ b/src/payload.config.ts
@@ -9,14 +9,17 @@ import { buildConfig } from "payload";
import sharp from "sharp";
import { fileURLToPath } from "url";
+import { ApplicationCVs } from "./collections/ApplicationCVs";
import { Articles } from "./collections/Articles";
import Association from "./collections/Association";
import { Cars } from "./collections/Cars";
+import { CareerSettings } from "./collections/CareerSettings";
import Contact from "./collections/Contact";
import { Events } from "./collections/Events";
import FormulaStudent from "./collections/FormulaStudent";
import { Gallery } from "./collections/Gallery";
import Groups from "./collections/Groups";
+import { JobApplications } from "./collections/JobApplications";
import { Media } from "./collections/Media";
import { Members } from "./collections/Members";
import { Publications } from "./collections/Publications";
@@ -40,6 +43,8 @@ const collections = [
Members,
Sponsors,
Recruitment,
+ JobApplications,
+ ApplicationCVs,
Groups,
Association,
SupportUs,
@@ -60,7 +65,7 @@ export default buildConfig({
},
},
collections: collections,
- globals: [SiteSettings],
+ globals: [SiteSettings, CareerSettings],
editor: lexicalEditor(),
secret: process.env.PAYLOAD_SECRET || "",
typescript: {
diff --git a/tests/career-transfer-server.test.mjs b/tests/career-transfer-server.test.mjs
new file mode 100644
index 0000000..7ef00c0
--- /dev/null
+++ b/tests/career-transfer-server.test.mjs
@@ -0,0 +1,28 @@
+import test from 'node:test'
+import assert from 'node:assert/strict'
+import { parseOptions } from '../scripts/career-transfer/server-options.mjs'
+
+const env = { DATABASE_URI: 'postgresql://app:local-password@postgres:5432/frt', PAYLOAD_SECRET: 'local-test-only', NEXT_PUBLIC_SERVER_URL: 'https://frtbme.hu' }
+const common = ['--environment', 'production', '--expect-database', 'frt', '--expect-origin', 'https://frtbme.hu', '--bundle', '/transfer/bundle/bundle.json', '--mapping', '/transfer/mapping.json']
+const plan = ['plan', ...common, '--out', '/transfer/plan.json']
+const apply = ['apply', ...common, '--plan', '/transfer/plan.json', '--plan-sha256', 'a'.repeat(64), '--receipt', '/transfer/receipt.json']
+
+test('server plan requires explicit database and application identity', () => {
+ assert.equal(parseOptions(plan, env).command, 'plan')
+ assert.throws(() => parseOptions(plan, { ...env, DATABASE_URI: 'postgresql://app:pass@postgres/other' }), /Database does not match/)
+ assert.throws(() => parseOptions(plan, { ...env, NEXT_PUBLIC_SERVER_URL: 'https://staging.frtbme.hu' }), /origin does not match/)
+})
+test('server apply requires the exact reviewed plan hash', () => {
+ assert.equal(parseOptions(apply, env)['plan-sha256'], 'a'.repeat(64))
+ assert.throws(() => parseOptions(apply.filter((_, index) => ![apply.indexOf('--plan-sha256'), apply.indexOf('--plan-sha256') + 1].includes(index)), env), /Missing --plan-sha256/)
+ assert.throws(() => parseOptions(apply.map(value => value === 'a'.repeat(64) ? 'yes' : value), env), /exact SHA-256/)
+})
+test('server runner rejects unexpected commands, duplicate flags and path collisions', () => {
+ assert.throws(() => parseOptions(['migrate', ...common], env), /Usage/)
+ assert.throws(() => parseOptions([...plan, '--environment', 'staging'], env), /duplicate option/)
+ assert.throws(() => parseOptions(plan.map(value => value === '/transfer/plan.json' ? '/transfer/bundle/bundle.json' : value), env), /must be distinct/)
+})
+test('server identity cannot omit credentials or use an authenticated expected URL', () => {
+ assert.throws(() => parseOptions(plan, { ...env, PAYLOAD_SECRET: '' }), /required/)
+ assert.throws(() => parseOptions(plan.map(value => value === 'https://frtbme.hu' ? 'https://user:pass@frtbme.hu' : value), env), /origin does not match/)
+})
diff --git a/tests/career-transfer.test.mjs b/tests/career-transfer.test.mjs
new file mode 100644
index 0000000..d467f2e
--- /dev/null
+++ b/tests/career-transfer.test.mjs
@@ -0,0 +1,43 @@
+import test from 'node:test'
+import assert from 'node:assert/strict'
+import { content, hash, mediaReferences, remapMedia, validateMapping } from '../scripts/career-transfer/content.mjs'
+
+test('row IDs are removed but question keys and rich-text metadata survive', () => {
+ const doc = { formQuestions: [{ id: 'staging-row', key: 'stable', options: [{ id: 'option-row', key: 'yes' }] }], intro: { root: { id: 'rich-id', children: [] } } }
+ const result = content(doc, 'settings')
+ assert.equal(result.formQuestions[0].id, undefined)
+ assert.equal(result.formQuestions[0].key, 'stable')
+ assert.equal(result.formQuestions[0].options[0].id, undefined)
+ assert.equal(result.formQuestions[0].options[0].key, 'yes')
+ assert.equal(result.intro.root.id, 'rich-id')
+})
+test('staging controls application state and integration URLs, including cleared values', () => {
+ const source = { spreadsheetUrl: 'https://example.test/sheet', applicationsOpen: false, applicationMode: 'googleForm', googleFormUrl: 'https://example.test/form', intro: {} }
+ const result = content(source, 'settings')
+ for (const key of ['spreadsheetUrl', 'applicationsOpen', 'applicationMode', 'googleFormUrl']) assert.equal(result[key], source[key])
+ const cleared = content({ ...source, spreadsheetUrl: null, googleFormUrl: null }, 'settings')
+ assert.equal(cleared.spreadsheetUrl, null)
+ assert.equal(cleared.googleFormUrl, null)
+ assert.equal(cleared.applicationsOpen, false)
+})
+test('cross-database mappings reject reused IDs and stale names', () => {
+ const source = [{ id: 6, groupName: 'Önvezető' }, { id: 7, groupName: 'Mechanika' }]
+ const target = [{ id: 12, groupName: 'Driverless' }, { id: 13, groupName: 'Mechanika' }]
+ const mapping = [{ sourceID: 6, sourceName: 'Önvezető', targetID: 12, targetName: 'Driverless' }, { sourceID: 7, sourceName: 'Mechanika', targetID: 13, targetName: 'Mechanika' }]
+ assert.doesNotThrow(() => validateMapping(source, target, mapping))
+ assert.throws(() => validateMapping(source, target, [{ ...mapping[0], targetID: 6 }, mapping[1]]))
+ assert.throws(() => validateMapping(source, target, [mapping[0], { ...mapping[1], targetID: 12 }]))
+ assert.throws(() => validateMapping(source, target, [mapping[0]]))
+ assert.throws(() => validateMapping(source, [...target, { id: 14, groupName: 'Extra' }], mapping), /Unmapped target groups/)
+})
+test('rich-text relationships are mapped explicitly and unknown collections fail', () => {
+ const doc = { root: { children: [{ type: 'upload', relationTo: 'media', value: 985 }] } }
+ assert.deepEqual([...mediaReferences(doc)], [985])
+ assert.equal(remapMedia(doc, { 985: 992 }).root.children[0].value, 992)
+ assert.throws(() => remapMedia(doc, {}))
+ assert.throws(() => mediaReferences({ relationTo: 'users', value: 1 }))
+})
+test('fingerprints ignore object order but retain array order', () => {
+ assert.equal(hash({ a: 1, b: 2 }), hash({ b: 2, a: 1 }))
+ assert.notEqual(hash([1, 2]), hash([2, 1]))
+})
diff --git a/tests/career.test.ts b/tests/career.test.ts
new file mode 100644
index 0000000..10fdae0
--- /dev/null
+++ b/tests/career.test.ts
@@ -0,0 +1,294 @@
+import { test } from "node:test"
+import assert from "node:assert/strict"
+import { PDFDocument } from "pdf-lib"
+import {
+ DEFAULT_QUESTIONS,
+ MAX_CV_SIZE,
+ resolveFormConfig,
+ validateQuestions,
+ validateAnswers,
+ summarizeAnswers,
+ type FormQuestion,
+} from "../src/lib/career-form"
+import {
+ readApplicationBody,
+ validateCV,
+ MAX_APPLICATION_BODY,
+} from "../src/lib/application-upload"
+import { headerUpdate, SHEET_COLUMNS } from "../src/lib/google-sheets"
+import { syncApplicationToSheet } from "../src/lib/karrier-sheet-sync"
+import type { Payload } from "payload"
+import type { JobApplication } from "../src/payload-types"
+const answers = {
+ name: "Test Applicant",
+ email: "test@example.test",
+ consent: true,
+}
+const option = { key: "cad", label: "CAD tervezés", labelEng: "CAD design" }
+const custom: FormQuestion = {
+ key: "tools",
+ label: "Eszközök",
+ labelEng: "Tools",
+ type: "multiselect",
+ required: true,
+ options: [option],
+}
+const config = { version: "v1", questions: [...DEFAULT_QUESTIONS, custom] }
+
+test("mandatory core fields cannot be deleted, hidden or changed to another type", () => {
+ for (const key of ["name", "email", "consent"]) {
+ assert.notEqual(
+ validateQuestions(DEFAULT_QUESTIONS.filter((q) => q.key !== key)),
+ true,
+ )
+ assert.notEqual(
+ validateQuestions(
+ DEFAULT_QUESTIONS.map((q) =>
+ q.key === key ? { ...q, hidden: true } : q,
+ ),
+ ),
+ true,
+ )
+ }
+ assert.notEqual(
+ validateQuestions(
+ DEFAULT_QUESTIONS.map((q) =>
+ q.key === "email"
+ ? { ...q, type: "select", options: [option] }
+ : q,
+ ),
+ ),
+ true,
+ )
+ assert.notEqual(
+ validateQuestions([...DEFAULT_QUESTIONS, DEFAULT_QUESTIONS[0]]),
+ true,
+ )
+})
+test("custom required and choice validation prevents forged values", () => {
+ assert.equal(validateAnswers(answers, config).ok, false)
+ assert.equal(
+ validateAnswers({ ...answers, tools: ["forged"] }, config).ok,
+ false,
+ )
+ assert.equal(
+ validateAnswers({ ...answers, tools: "cad" }, config).ok,
+ false,
+ )
+ assert.equal(
+ validateAnswers({ ...answers, tools: ["cad"] }, config).ok,
+ true,
+ )
+})
+test("checkbox true is valid and missing consent is not", () => {
+ assert.equal(validateAnswers(answers, resolveFormConfig()).ok, true)
+ assert.equal(
+ validateAnswers({ ...answers, consent: "true" }, resolveFormConfig())
+ .ok,
+ false,
+ )
+ assert.equal(
+ validateAnswers({ ...answers, consent: false }, resolveFormConfig()).ok,
+ false,
+ )
+})
+test("hidden optional required fields do not prevent submission; position selection survives", () => {
+ const hidden = {
+ ...config,
+ questions: config.questions.map((q) =>
+ q.key === "tools" || q.key === "groupName"
+ ? { ...q, hidden: true }
+ : q,
+ ),
+ }
+ const result = validateAnswers(
+ { ...answers, groupName: "Software" },
+ hidden,
+ )
+ assert.equal(result.ok, true)
+ if (result.ok) assert.equal(result.values.groupName, "Software")
+})
+test("historical labels and option labels remain usable after configuration edits", () => {
+ const result = validateAnswers({ ...answers, tools: ["cad"] }, config)
+ assert.equal(result.ok, true)
+ if (result.ok) {
+ const saved = structuredClone(result.snapshots)
+ assert.equal(summarizeAnswers(saved, false), "Eszközök: CAD tervezés")
+ assert.equal(summarizeAnswers(saved, true), "Tools: CAD design")
+ }
+})
+test("long answers are rejected rather than silently truncated", () => {
+ assert.deepEqual(
+ validateAnswers(
+ { ...answers, name: "x".repeat(121) },
+ resolveFormConfig(),
+ ),
+ { ok: false, error: "ANSWER_TOO_LONG", field: "name" },
+ )
+})
+test("PDF parser accepts a real document and rejects renamed text and malformed PDFs", async () => {
+ const pdf = await PDFDocument.create()
+ pdf.addPage()
+ const bytes = await pdf.save()
+ assert.ok(
+ (
+ await validateCV(
+ new File([new Uint8Array(bytes)], "cv.pdf", { type: "application/pdf" }),
+ )
+ ).length,
+ )
+ for (const content of ["hello", "%PDF-1.7\nfake\n%%EOF"])
+ await assert.rejects(
+ validateCV(
+ new File([content], "cv.pdf", { type: "application/pdf" }),
+ ),
+ /INVALID_CV/,
+ )
+ await assert.rejects(
+ validateCV(new File([new Uint8Array(MAX_CV_SIZE + 1)], "large.pdf")),
+ /CV_TOO_LARGE/,
+ )
+})
+test("JSON and multipart requests share the same body contract", async () => {
+ const json = await readApplicationBody(
+ new Request("http://localhost", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(answers),
+ }),
+ )
+ assert.deepEqual(json, { body: answers, cv: null })
+ const data = new FormData()
+ data.set("data", JSON.stringify(answers))
+ data.set("cv", new File(["pdf"], "cv.pdf"))
+ const multi = await readApplicationBody(
+ new Request("http://localhost", { method: "POST", body: data }),
+ )
+ assert.deepEqual(multi.body, answers)
+ assert.equal(multi.cv?.name, "cv.pdf")
+})
+test("actual body limit holds even without Content-Length; malformed and duplicate file bodies fail", async () => {
+ await assert.rejects(
+ readApplicationBody(
+ new Request("http://localhost", {
+ method: "POST",
+ body: "x".repeat(MAX_APPLICATION_BODY + 1),
+ }),
+ ),
+ /BODY_TOO_LARGE/,
+ )
+ const data = new FormData()
+ data.set("data", "{}")
+ data.append("cv", new File(["1"], "one.pdf"))
+ data.append("cv", new File(["2"], "two.pdf"))
+ await assert.rejects(
+ readApplicationBody(
+ new Request("http://localhost", { method: "POST", body: data }),
+ ),
+ /INVALID_CV/,
+ )
+ await assert.rejects(
+ readApplicationBody(
+ new Request("http://localhost", {
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: "[]",
+ }),
+ ),
+ /INVALID_BODY/,
+ )
+})
+test("spreadsheet header upgrade preserves legacy columns and refuses foreign columns", () => {
+ assert.equal(headerUpdate([])?.range, "A1:L1")
+ assert.equal(headerUpdate(SHEET_COLUMNS.slice(0, 10))?.range, "K1:L1")
+ assert.equal(headerUpdate([...SHEET_COLUMNS]), null)
+ assert.throws(
+ () => headerUpdate([...SHEET_COLUMNS.slice(0, 10), "Recruiter notes"]),
+ /foglaltak/,
+ )
+ assert.throws(() => headerUpdate(["Unrelated sheet"]), /eltér/)
+})
+test("spreadsheet configuration failure never rejects an already saved application", async () => {
+ let status = ""
+ const fake = {
+ findGlobal: async () => {
+ throw new Error("Offline")
+ },
+ update: async ({ data }: { data: { sheetSyncStatus: string } }) => {
+ status = data.sheetSyncStatus
+ },
+ logger: { error: () => {} },
+ }
+ const result = await syncApplicationToSheet(
+ fake as unknown as Payload,
+ { id: 1 } as JobApplication,
+ )
+ assert.equal(result.status, "error")
+ assert.equal(status, "error")
+})
+
+test("spreadsheet export upgrades a test sheet and appends the complete RAW row", async () => {
+ const { generateKeyPairSync } = await import("node:crypto")
+ const { appendApplicationRow } = await import("../src/lib/google-sheets")
+ const { privateKey } = generateKeyPairSync("rsa", { modulusLength: 2048 })
+ const previousFetch = globalThis.fetch
+ const previousEmail = process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL
+ const previousKey = process.env.GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY
+ process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL = "test@example.test"
+ process.env.GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY = privateKey
+ .export({ type: "pkcs8", format: "pem" })
+ .toString()
+ const writes: { url: string; data: { values: string[][] } }[] = []
+ globalThis.fetch = async (input, init) => {
+ const url = String(input)
+ if (url === "https://oauth2.googleapis.com/token")
+ return Response.json({
+ access_token: "test-only",
+ expires_in: 3600,
+ })
+ assert.ok(
+ url.startsWith(
+ "https://sheets.googleapis.com/v4/spreadsheets/test-sheet/",
+ ),
+ )
+ if (!init?.method || init.method === "GET")
+ return Response.json({ values: [SHEET_COLUMNS.slice(0, 10)] })
+ writes.push({ url, data: JSON.parse(String(init.body)) })
+ return Response.json({ updates: { updatedRows: 1 } })
+ }
+ try {
+ const result = await appendApplicationRow(
+ "https://docs.google.com/spreadsheets/d/test-sheet/edit",
+ {
+ submittedAt: "now",
+ name: "=formula",
+ email: "test@example.test",
+ phone: "",
+ university: "",
+ major: "",
+ semester: "",
+ group: "",
+ position: "",
+ motivation: "",
+ additionalAnswers: "Tools: CAD",
+ adminUrl:
+ "https://example.test/admin/collections/job-applications/1",
+ },
+ )
+ assert.equal(result.status, "ok")
+ assert.equal(writes.length, 2)
+ assert.match(writes[0].url, /K1:L1/)
+ assert.match(writes[1].url, /valueInputOption=RAW/)
+ assert.equal(writes[1].data.values[0].length, 12)
+ assert.equal(writes[1].data.values[0][1], "=formula")
+ assert.equal(writes[1].data.values[0][10], "Tools: CAD")
+ } finally {
+ globalThis.fetch = previousFetch
+ if (previousEmail === undefined)
+ delete process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL
+ else process.env.GOOGLE_SERVICE_ACCOUNT_EMAIL = previousEmail
+ if (previousKey === undefined)
+ delete process.env.GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY
+ else process.env.GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY = previousKey
+ }
+})
diff --git a/tsconfig.json b/tsconfig.json
index a389636..e6f33b9 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -15,7 +15,7 @@
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "preserve",
+ "jsx": "react-jsx",
"incremental": true,
"plugins": [
{
@@ -35,9 +35,11 @@
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
- ".next/types/**/*.ts"
+ ".next/types/**/*.ts",
+ ".next/dev/types/**/*.ts"
],
"exclude": [
- "node_modules"
+ "node_modules",
+ ".local-verification"
]
-}
\ No newline at end of file
+}
diff --git a/yarn.lock b/yarn.lock
index 0c3527c..16ac300 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3,17 +3,9 @@
"@alloc/quick-lru@^5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
- integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
-
-"@ampproject/remapping@^2.3.0":
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
- integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
- dependencies:
- "@jridgewell/gen-mapping" "^0.3.5"
- "@jridgewell/trace-mapping" "^0.3.24"
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.3.0.tgz#9073d52ad3cebbedd0d8c9f3e65aa5527fabd1e0"
+ integrity sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==
"@apidevtools/json-schema-ref-parser@^11.5.5":
version "11.9.3"
@@ -24,49 +16,6 @@
"@types/json-schema" "^7.0.15"
js-yaml "^4.1.0"
-"@aws-crypto/crc32@5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1"
- integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==
- dependencies:
- "@aws-crypto/util" "^5.2.0"
- "@aws-sdk/types" "^3.222.0"
- tslib "^2.6.2"
-
-"@aws-crypto/crc32c@5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e"
- integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==
- dependencies:
- "@aws-crypto/util" "^5.2.0"
- "@aws-sdk/types" "^3.222.0"
- tslib "^2.6.2"
-
-"@aws-crypto/sha1-browser@5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4"
- integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==
- dependencies:
- "@aws-crypto/supports-web-crypto" "^5.2.0"
- "@aws-crypto/util" "^5.2.0"
- "@aws-sdk/types" "^3.222.0"
- "@aws-sdk/util-locate-window" "^3.0.0"
- "@smithy/util-utf8" "^2.0.0"
- tslib "^2.6.2"
-
-"@aws-crypto/sha256-browser@5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e"
- integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==
- dependencies:
- "@aws-crypto/sha256-js" "^5.2.0"
- "@aws-crypto/supports-web-crypto" "^5.2.0"
- "@aws-crypto/util" "^5.2.0"
- "@aws-sdk/types" "^3.222.0"
- "@aws-sdk/util-locate-window" "^3.0.0"
- "@smithy/util-utf8" "^2.0.0"
- tslib "^2.6.2"
-
"@aws-crypto/sha256-js@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz#02acd1a1fda92896fc5a28ec7c6e164644ea32fc"
@@ -76,31 +25,6 @@
"@aws-sdk/types" "^3.1.0"
tslib "^1.11.1"
-"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042"
- integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==
- dependencies:
- "@aws-crypto/util" "^5.2.0"
- "@aws-sdk/types" "^3.222.0"
- tslib "^2.6.2"
-
-"@aws-crypto/supports-web-crypto@^5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb"
- integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==
- dependencies:
- tslib "^2.6.2"
-
-"@aws-crypto/util@5.2.0", "@aws-crypto/util@^5.2.0":
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da"
- integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==
- dependencies:
- "@aws-sdk/types" "^3.222.0"
- "@smithy/util-utf8" "^2.0.0"
- tslib "^2.6.2"
-
"@aws-crypto/util@^1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-1.2.2.tgz#b28f7897730eb6538b21c18bd4de22d0ea09003c"
@@ -110,675 +34,439 @@
"@aws-sdk/util-utf8-browser" "^3.0.0"
tslib "^1.11.1"
-"@aws-sdk/client-cognito-identity@3.821.0", "@aws-sdk/client-cognito-identity@^3.614.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.821.0.tgz#1d32f05b74449602788702f820d7f3e496bebe77"
- integrity sha512-c6TpvrRAb4hVcbGMCPjTWU2IRNBzfEz2qZ1v6DGViW0i8vN4+zXY/DcVOL2P3ZA9MDXjFRiiA8RdIy1/zsi3YQ==
- dependencies:
- "@aws-crypto/sha256-browser" "5.2.0"
- "@aws-crypto/sha256-js" "5.2.0"
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/credential-provider-node" "3.821.0"
- "@aws-sdk/middleware-host-header" "3.821.0"
- "@aws-sdk/middleware-logger" "3.821.0"
- "@aws-sdk/middleware-recursion-detection" "3.821.0"
- "@aws-sdk/middleware-user-agent" "3.821.0"
- "@aws-sdk/region-config-resolver" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@aws-sdk/util-endpoints" "3.821.0"
- "@aws-sdk/util-user-agent-browser" "3.821.0"
- "@aws-sdk/util-user-agent-node" "3.821.0"
- "@smithy/config-resolver" "^4.1.4"
- "@smithy/core" "^3.5.1"
- "@smithy/fetch-http-handler" "^5.0.4"
- "@smithy/hash-node" "^4.0.4"
- "@smithy/invalid-dependency" "^4.0.4"
- "@smithy/middleware-content-length" "^4.0.4"
- "@smithy/middleware-endpoint" "^4.1.9"
- "@smithy/middleware-retry" "^4.1.10"
- "@smithy/middleware-serde" "^4.0.8"
- "@smithy/middleware-stack" "^4.0.4"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/node-http-handler" "^4.0.6"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/url-parser" "^4.0.4"
- "@smithy/util-base64" "^4.0.0"
- "@smithy/util-body-length-browser" "^4.0.0"
- "@smithy/util-body-length-node" "^4.0.0"
- "@smithy/util-defaults-mode-browser" "^4.0.17"
- "@smithy/util-defaults-mode-node" "^4.0.17"
- "@smithy/util-endpoints" "^3.0.6"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-retry" "^4.0.5"
- "@smithy/util-utf8" "^4.0.0"
+"@aws-sdk/checksums@^3.1000.29":
+ version "3.1000.29"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/checksums/-/checksums-3.1000.29.tgz#f12a6926eb3789057f5f16582fc226fe533c87fa"
+ integrity sha512-Dtu0gr4dnATZAPwEYbpCsG+MpLM7OAliy2gTepEFQwl1vZ6DL3QMH2FveMa3HLvPsOdhJsPRB3KtxVhph9T75A==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/client-s3@^3.614.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.821.0.tgz#1b4b89fef2d8c99b9f5a53b40c946ab175089e81"
- integrity sha512-enlFiONQD+oCaV+C6hMsAJvyQRT3wZmCtXXq7qjxX8BiLgXsHQ9HHS+Nhoq08Ya6mtd1Y1qHOOYpnD8yyUzTMQ==
- dependencies:
- "@aws-crypto/sha1-browser" "5.2.0"
- "@aws-crypto/sha256-browser" "5.2.0"
- "@aws-crypto/sha256-js" "5.2.0"
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/credential-provider-node" "3.821.0"
- "@aws-sdk/middleware-bucket-endpoint" "3.821.0"
- "@aws-sdk/middleware-expect-continue" "3.821.0"
- "@aws-sdk/middleware-flexible-checksums" "3.821.0"
- "@aws-sdk/middleware-host-header" "3.821.0"
- "@aws-sdk/middleware-location-constraint" "3.821.0"
- "@aws-sdk/middleware-logger" "3.821.0"
- "@aws-sdk/middleware-recursion-detection" "3.821.0"
- "@aws-sdk/middleware-sdk-s3" "3.821.0"
- "@aws-sdk/middleware-ssec" "3.821.0"
- "@aws-sdk/middleware-user-agent" "3.821.0"
- "@aws-sdk/region-config-resolver" "3.821.0"
- "@aws-sdk/signature-v4-multi-region" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@aws-sdk/util-endpoints" "3.821.0"
- "@aws-sdk/util-user-agent-browser" "3.821.0"
- "@aws-sdk/util-user-agent-node" "3.821.0"
- "@aws-sdk/xml-builder" "3.821.0"
- "@smithy/config-resolver" "^4.1.4"
- "@smithy/core" "^3.5.1"
- "@smithy/eventstream-serde-browser" "^4.0.4"
- "@smithy/eventstream-serde-config-resolver" "^4.1.2"
- "@smithy/eventstream-serde-node" "^4.0.4"
- "@smithy/fetch-http-handler" "^5.0.4"
- "@smithy/hash-blob-browser" "^4.0.4"
- "@smithy/hash-node" "^4.0.4"
- "@smithy/hash-stream-node" "^4.0.4"
- "@smithy/invalid-dependency" "^4.0.4"
- "@smithy/md5-js" "^4.0.4"
- "@smithy/middleware-content-length" "^4.0.4"
- "@smithy/middleware-endpoint" "^4.1.9"
- "@smithy/middleware-retry" "^4.1.10"
- "@smithy/middleware-serde" "^4.0.8"
- "@smithy/middleware-stack" "^4.0.4"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/node-http-handler" "^4.0.6"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/url-parser" "^4.0.4"
- "@smithy/util-base64" "^4.0.0"
- "@smithy/util-body-length-browser" "^4.0.0"
- "@smithy/util-body-length-node" "^4.0.0"
- "@smithy/util-defaults-mode-browser" "^4.0.17"
- "@smithy/util-defaults-mode-node" "^4.0.17"
- "@smithy/util-endpoints" "^3.0.6"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-retry" "^4.0.5"
- "@smithy/util-stream" "^4.2.2"
- "@smithy/util-utf8" "^4.0.0"
- "@smithy/util-waiter" "^4.0.5"
+"@aws-sdk/client-cognito-identity@^3.614.0":
+ version "3.1127.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.1127.0.tgz#5dd7ed402f6db3c5debac17b5454d2a5fbdacf95"
+ integrity sha512-rdSKxgVPwZWjLeRiVkLSNM/P2oOo7Obw8Iu8wII7ARL8cgolFerEvNvnRB4u15V0E4V4YgVIUt7XtLQdLO5Ctw==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/credential-provider-node" "^3.972.82"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/fetch-http-handler" "^5.7.2"
+ "@smithy/node-http-handler" "^4.11.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/client-sso@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.821.0.tgz#052187cf3322fba7fc0eb1fc781c77b7643998d6"
- integrity sha512-aDEBZUKUd/+Tvudi0d9KQlqt2OW2P27LATZX0jkNC8yVk4145bAPS04EYoqdKLuyUn/U33DibEOgKUpxZB12jQ==
- dependencies:
- "@aws-crypto/sha256-browser" "5.2.0"
- "@aws-crypto/sha256-js" "5.2.0"
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/middleware-host-header" "3.821.0"
- "@aws-sdk/middleware-logger" "3.821.0"
- "@aws-sdk/middleware-recursion-detection" "3.821.0"
- "@aws-sdk/middleware-user-agent" "3.821.0"
- "@aws-sdk/region-config-resolver" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@aws-sdk/util-endpoints" "3.821.0"
- "@aws-sdk/util-user-agent-browser" "3.821.0"
- "@aws-sdk/util-user-agent-node" "3.821.0"
- "@smithy/config-resolver" "^4.1.4"
- "@smithy/core" "^3.5.1"
- "@smithy/fetch-http-handler" "^5.0.4"
- "@smithy/hash-node" "^4.0.4"
- "@smithy/invalid-dependency" "^4.0.4"
- "@smithy/middleware-content-length" "^4.0.4"
- "@smithy/middleware-endpoint" "^4.1.9"
- "@smithy/middleware-retry" "^4.1.10"
- "@smithy/middleware-serde" "^4.0.8"
- "@smithy/middleware-stack" "^4.0.4"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/node-http-handler" "^4.0.6"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/url-parser" "^4.0.4"
- "@smithy/util-base64" "^4.0.0"
- "@smithy/util-body-length-browser" "^4.0.0"
- "@smithy/util-body-length-node" "^4.0.0"
- "@smithy/util-defaults-mode-browser" "^4.0.17"
- "@smithy/util-defaults-mode-node" "^4.0.17"
- "@smithy/util-endpoints" "^3.0.6"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-retry" "^4.0.5"
- "@smithy/util-utf8" "^4.0.0"
+"@aws-sdk/client-s3@^3.614.0":
+ version "3.1127.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.1127.0.tgz#a752d3f8131f17477917b9662148c42456b94a88"
+ integrity sha512-0ZSAgmEda33xPqVPt+bx2KzrXV1cUCKRRVPGliLu+V7DzHPa04CqPSi1maGEM4O0LDP0iI6HRSW5ULloNwayNw==
+ dependencies:
+ "@aws-sdk/checksums" "^3.1000.29"
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/credential-provider-node" "^3.972.82"
+ "@aws-sdk/middleware-sdk-s3" "^3.972.75"
+ "@aws-sdk/signature-v4-multi-region" "^3.996.46"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/fetch-http-handler" "^5.7.2"
+ "@smithy/node-http-handler" "^4.11.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/core@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.821.0.tgz#0e53a74d4c0857b72f93dd5f2bf3fe3fda4a85b9"
- integrity sha512-8eB3wKbmfciQFmxFq7hAjy7mXdUs7vBOR5SwT0ZtQBg0Txc18Lc9tMViqqdO6/KU7OukA6ib2IAVSjIJJEN7FQ==
- dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/core" "^3.5.1"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/signature-v4" "^5.1.2"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/util-middleware" "^4.0.4"
- fast-xml-parser "4.4.1"
+"@aws-sdk/core@^3.977.9":
+ version "3.977.9"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.977.9.tgz#c3d6b4bcce3df3c86831510f18bd2ce32172b136"
+ integrity sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA==
+ dependencies:
+ "@aws-sdk/types" "^3.974.5"
+ "@aws-sdk/xml-builder" "^3.972.40"
+ "@aws/lambda-invoke-store" "^0.3.0"
+ "@smithy/core" "^3.33.3"
+ "@smithy/signature-v4" "^5.6.12"
+ "@smithy/types" "^4.17.2"
+ bowser "^2.11.0"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-cognito-identity@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.821.0.tgz#91f8899f3116b6f2182ba5466298191b33e22abf"
- integrity sha512-8ZdFwmSxvQv8QindA0DJ3YUT9FD8T9sA5hQWp3B9+Znkze29IiIadnsXY0Heo2/FOFygxh8jRXiCWEie7/YpzA==
+"@aws-sdk/credential-provider-cognito-identity@^3.972.69":
+ version "3.972.69"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.69.tgz#5bbf54b2ddaa4085be69899c143951399f556d86"
+ integrity sha512-vpsh9VWmQVC/nsdzf72F2yUMBOFT1aq+hoLseYV03zjVXVHkjqSNJskFRKPFxc3MRFrHNbSSmOwsbYE15u9ecw==
dependencies:
- "@aws-sdk/client-cognito-identity" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/types" "^4.3.1"
+ "@aws-sdk/nested-clients" "^3.997.44"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-env@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.821.0.tgz#900c63fe2e2c993c078aad2d6417273673d84f27"
- integrity sha512-C+s/A72pd7CXwEsJj9+Uq9T726iIfIF18hGRY8o82xcIEfOyakiPnlisku8zZOaAu+jm0CihbbYN4NyYNQ+HZQ==
+"@aws-sdk/credential-provider-env@^3.972.70":
+ version "3.972.70"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.70.tgz#631ef02069bae65ac7d58c6878a09a42c24cb485"
+ integrity sha512-H404B7dJl2mCrBqahDEYsanB0xhdDp6tXnXcTUnXmmpy2Q3J0Ho0bUajZ2jr/RdwzCyS59Gi8xXIFwPLGBl6Uw==
dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/types" "^4.3.1"
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-http@^3.972.72":
+ version "3.972.72"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.72.tgz#9b737cc3879d900e703b219777e26d6bb542ffec"
+ integrity sha512-X98zYOrVOeuosCX+6ktf29FC2N2GHPLia7qv6mzPzTc+RPAuHWCDS++Z6JK7eGYqb/v6uaW7bAXaOvDBfol+0w==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/fetch-http-handler" "^5.7.2"
+ "@smithy/node-http-handler" "^4.11.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-http@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.821.0.tgz#357700d8961e5edaf98310b3b3eca8c869b5dc73"
- integrity sha512-gIRzTLnAsRfRSNarCag7G7rhcHagz4x5nNTWRihQs5cwTOghEExDy7Tj5m4TEkv3dcTAsNn+l4tnR4nZXo6R+Q==
- dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/fetch-http-handler" "^5.0.4"
- "@smithy/node-http-handler" "^4.0.6"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/util-stream" "^4.2.2"
+"@aws-sdk/credential-provider-ini@^3.973.15":
+ version "3.973.15"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.15.tgz#e185c40ba6b3eec90bf3cf7c364c79f639b15cca"
+ integrity sha512-Rykg6s5ceBuynMOGWgoowO4N+27JfnqXAnVaSunZl0hOO1XodSrxGNz6sCEbnmS0lAfQZDKyb3fbr46gSuv6Sg==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/credential-provider-env" "^3.972.70"
+ "@aws-sdk/credential-provider-http" "^3.972.72"
+ "@aws-sdk/credential-provider-login" "^3.972.77"
+ "@aws-sdk/credential-provider-process" "^3.972.70"
+ "@aws-sdk/credential-provider-sso" "^3.973.14"
+ "@aws-sdk/credential-provider-web-identity" "^3.972.76"
+ "@aws-sdk/nested-clients" "^3.997.44"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/credential-provider-imds" "^4.4.16"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-ini@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.821.0.tgz#d85b13f3918bb00da4f04beab52164598659b748"
- integrity sha512-VRTrmsca8kBHtY1tTek1ce+XkK/H0fzodBKcilM/qXjTyumMHPAzVAxKZfSvGC+28/pXyQzhOEyxZfw7giCiWA==
- dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/credential-provider-env" "3.821.0"
- "@aws-sdk/credential-provider-http" "3.821.0"
- "@aws-sdk/credential-provider-process" "3.821.0"
- "@aws-sdk/credential-provider-sso" "3.821.0"
- "@aws-sdk/credential-provider-web-identity" "3.821.0"
- "@aws-sdk/nested-clients" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/credential-provider-imds" "^4.0.6"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/shared-ini-file-loader" "^4.0.4"
- "@smithy/types" "^4.3.1"
+"@aws-sdk/credential-provider-login@^3.972.77":
+ version "3.972.77"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.77.tgz#6ee6341077a6b920fc9322cfc37142a5b5bf2660"
+ integrity sha512-Jb59xfEISoN5mmbnA+HYqdtrSX3CgCtJoof+V5D8/TgUI56W63GEEd5Y58WijU3Ou6+WEgaLD1feVzaRXV5IDQ==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/nested-clients" "^3.997.44"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-node@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.821.0.tgz#c126bcea304d2152b51e6130dd51e33e98b236df"
- integrity sha512-oBgbcgOXWMgknAfhIdTeHSSVIv+k2LXN9oTbxu1r++o4WWBWrEQ8mHU0Zo9dfr7Uaoqi3pezYZznsBkXnMLEOg==
- dependencies:
- "@aws-sdk/credential-provider-env" "3.821.0"
- "@aws-sdk/credential-provider-http" "3.821.0"
- "@aws-sdk/credential-provider-ini" "3.821.0"
- "@aws-sdk/credential-provider-process" "3.821.0"
- "@aws-sdk/credential-provider-sso" "3.821.0"
- "@aws-sdk/credential-provider-web-identity" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/credential-provider-imds" "^4.0.6"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/shared-ini-file-loader" "^4.0.4"
- "@smithy/types" "^4.3.1"
+"@aws-sdk/credential-provider-node@^3.972.82":
+ version "3.972.82"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.82.tgz#9967ea14f708f9e3274ed334a07a550282556a32"
+ integrity sha512-znDkEOGXB8W3kG1LJUKP3foBZY/9qLM0eil/DxWXSp37XsdsRLQHE/d/OaCGGVgKpA6znR38h/+INk8do1FjiA==
+ dependencies:
+ "@aws-sdk/credential-provider-env" "^3.972.70"
+ "@aws-sdk/credential-provider-http" "^3.972.72"
+ "@aws-sdk/credential-provider-ini" "^3.973.15"
+ "@aws-sdk/credential-provider-process" "^3.972.70"
+ "@aws-sdk/credential-provider-sso" "^3.973.14"
+ "@aws-sdk/credential-provider-web-identity" "^3.972.76"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/credential-provider-imds" "^4.4.16"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-process@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.821.0.tgz#01604b80243c5462cd4d99ffeb77e27b75a70580"
- integrity sha512-e18ucfqKB3ICNj5RP/FEdvUfhVK6E9MALOsl8pKP13mwegug46p/1BsZWACD5n+Zf9ViiiHxIO7td03zQixfwA==
+"@aws-sdk/credential-provider-process@^3.972.70":
+ version "3.972.70"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.70.tgz#ca9f5b334442e2ee04712840864563b89cdd5360"
+ integrity sha512-2ry03fGRJr4sV3jI+ocjj5JqALnFD6ymM5KiNCDZMvq8bX2GSbE0vji4aM43TVCl2nXqqLRZaUxdq/KeWRAY4Q==
dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/shared-ini-file-loader" "^4.0.4"
- "@smithy/types" "^4.3.1"
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-sso@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.821.0.tgz#457b8e11ed7b8e7272049db1f522f45a80c73ee4"
- integrity sha512-Dt+pheBLom4O/egO4L75/72k9C1qtUOLl0F0h6lmqZe4Mvhz+wDtjoO/MdGC/P1q0kcIX/bBKr0NQ3cIvAH8pA==
- dependencies:
- "@aws-sdk/client-sso" "3.821.0"
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/token-providers" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/shared-ini-file-loader" "^4.0.4"
- "@smithy/types" "^4.3.1"
+"@aws-sdk/credential-provider-sso@^3.973.14":
+ version "3.973.14"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.14.tgz#064acc04b4d0ef5ae879f2c2633a33c5a9238dda"
+ integrity sha512-jkhg/8ocAAoc0RFyLMhCw+/zZh7gystQgd4F4hznNa8P4Cc501PQmxd+jGLiMHodPJ+7Zv/3znM62gZojyasmA==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/nested-clients" "^3.997.44"
+ "@aws-sdk/token-providers" "3.1116.0"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/credential-provider-web-identity@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.821.0.tgz#44d16c1f0c2bc3d69ef479f7ed3f9ce04e849f73"
- integrity sha512-FF5wnRJkxSQaCVVvWNv53K1MhTMgH8d+O+MHTbkv51gVIgVATrtfFQMKBLcEAxzXrgAliIO3LiNv+1TqqBZ+BA==
+"@aws-sdk/credential-provider-web-identity@^3.972.76":
+ version "3.972.76"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.76.tgz#93a1913bfc7671008831cc80ba072470cba03bd1"
+ integrity sha512-d3AGyVu759PGr35mEB2s22xxlNEA5rpdxtSPJthfPFJvoQ8dt357iVPECqWfUxXp1toJAvKmbtcIYVGigaGsCA==
dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/nested-clients" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/types" "^4.3.1"
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/nested-clients" "^3.997.44"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
"@aws-sdk/credential-providers@^3.614.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.821.0.tgz#5947a126539f8dc7cacdcb738cadb09c11a2858b"
- integrity sha512-ZkV7KlKD+rSW/AP5zjSgMi+0xJ5TL5J6XVaP3IG5qyqBYTREJ8DbB/9YVUpYt2qtzpWUh/K43nmDEyfLd2YJog==
- dependencies:
- "@aws-sdk/client-cognito-identity" "3.821.0"
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/credential-provider-cognito-identity" "3.821.0"
- "@aws-sdk/credential-provider-env" "3.821.0"
- "@aws-sdk/credential-provider-http" "3.821.0"
- "@aws-sdk/credential-provider-ini" "3.821.0"
- "@aws-sdk/credential-provider-node" "3.821.0"
- "@aws-sdk/credential-provider-process" "3.821.0"
- "@aws-sdk/credential-provider-sso" "3.821.0"
- "@aws-sdk/credential-provider-web-identity" "3.821.0"
- "@aws-sdk/nested-clients" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/config-resolver" "^4.1.4"
- "@smithy/core" "^3.5.1"
- "@smithy/credential-provider-imds" "^4.0.6"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/types" "^4.3.1"
+ version "3.1127.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.1127.0.tgz#49e2fed8db7d87e83add679dc6203e7712d158f6"
+ integrity sha512-zyoeKOan26lklS12+Iwj1aX8EidoAheQaVRmltee0EAC3eydTy+AIXtLOsVicYSOVsDjPJMiVykT/7n47ARpag==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/credential-provider-cognito-identity" "^3.972.69"
+ "@aws-sdk/credential-provider-env" "^3.972.70"
+ "@aws-sdk/credential-provider-http" "^3.972.72"
+ "@aws-sdk/credential-provider-ini" "^3.973.15"
+ "@aws-sdk/credential-provider-login" "^3.972.77"
+ "@aws-sdk/credential-provider-node" "^3.972.82"
+ "@aws-sdk/credential-provider-process" "^3.972.70"
+ "@aws-sdk/credential-provider-sso" "^3.973.14"
+ "@aws-sdk/credential-provider-web-identity" "^3.972.76"
+ "@aws-sdk/nested-clients" "^3.997.44"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/credential-provider-imds" "^4.4.16"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
"@aws-sdk/lib-storage@^3.614.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.821.0.tgz#766d27ef5f03ac750e52d4f5eed1128a49418a11"
- integrity sha512-79N58EjrNOFbbegxJoeR1d9TH3MTV8gfpob5gIpXnZWl27gSJYPaD5K7vNS1wbwFEnIWMp9esRO3TtEMb/UAPg==
+ version "3.1127.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.1127.0.tgz#6d57c523104ff8a7a98048acffdabd288a84db03"
+ integrity sha512-em87TJQOrdE3sAqlMnhg3HUAVj1hcoGdDjpekzDdKQcyQSKKbFfulnV57j41h/dHJxVqXRGzTqS8QOdOPtNFtw==
dependencies:
- "@smithy/abort-controller" "^4.0.4"
- "@smithy/middleware-endpoint" "^4.1.9"
- "@smithy/smithy-client" "^4.4.1"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
buffer "5.6.0"
events "3.3.0"
stream-browserify "3.0.0"
tslib "^2.6.2"
-"@aws-sdk/middleware-bucket-endpoint@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.821.0.tgz#2d7658e5b20a7712624ea33fa579a6be0339028b"
- integrity sha512-cebgeytKlWOgGczLo3BPvNY9XlzAzGZQANSysgJ2/8PSldmUpXRIF+GKPXDVhXeInWYHIfB8zZi3RqrPoXcNYQ==
- dependencies:
- "@aws-sdk/types" "3.821.0"
- "@aws-sdk/util-arn-parser" "3.804.0"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- "@smithy/util-config-provider" "^4.0.0"
- tslib "^2.6.2"
-
-"@aws-sdk/middleware-expect-continue@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.821.0.tgz#de4e8f5ca3727dd2dd802685aa3342ceb4e662e3"
- integrity sha512-zAOoSZKe1njOrtynvK6ZORU57YGv5I7KP4+rwOvUN3ZhJbQ7QPf8gKtFUCYAPRMegaXCKF/ADPtDZBAmM+zZ9g==
+"@aws-sdk/middleware-sdk-s3@^3.972.75":
+ version "3.972.75"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.75.tgz#d20222cbdd61197b245e0aaa3f79b7215dff31dc"
+ integrity sha512-wMIsNumRVKaNMKhvU/s9VrdEwE8S6gSzXp4RygFG5BEMnGkkXf8cjh8zf7cKJBpUDpqTWqwbz5isEgp9rH6Lng==
dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@aws-sdk/middleware-flexible-checksums@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.821.0.tgz#06762058f9e1d31955b4b099c2253547b6604e7b"
- integrity sha512-C56sBHXq1fEsLfIAup+w/7SKtb6d8Mb3YBec94r2ludVn1s3ypYWRovFE/6VhUzvwUbTQaxfrA2ewy5GQ1/DJQ==
- dependencies:
- "@aws-crypto/crc32" "5.2.0"
- "@aws-crypto/crc32c" "5.2.0"
- "@aws-crypto/util" "5.2.0"
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/is-array-buffer" "^4.0.0"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-stream" "^4.2.2"
- "@smithy/util-utf8" "^4.0.0"
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/signature-v4-multi-region" "^3.996.46"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/middleware-host-header@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.821.0.tgz#1dfda8da4e0f9499648dab9a989d10706e289cc7"
- integrity sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==
- dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
+"@aws-sdk/nested-clients@^3.997.44":
+ version "3.997.44"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.997.44.tgz#ba02b5e0b12b57be425a7306a8c7b82f5eec4e0f"
+ integrity sha512-NhEgryjlBF9w38ZXqGymQV28IhkYa1mKhlbYnqIis57AYwWGVYfUPgg/qC2rLRqOUfblxx++irvju10kVTa8Vw==
+ dependencies:
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/signature-v4-multi-region" "^3.996.46"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/fetch-http-handler" "^5.7.2"
+ "@smithy/node-http-handler" "^4.11.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/middleware-location-constraint@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.821.0.tgz#9a5b52f8874f48274e89329aa3d45a55340d267e"
- integrity sha512-sKrm80k0t3R0on8aA/WhWFoMaAl4yvdk+riotmMElLUpcMcRXAd1+600uFVrxJqZdbrKQ0mjX0PjT68DlkYXLg==
+"@aws-sdk/signature-v4-multi-region@^3.996.46":
+ version "3.996.46"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.46.tgz#ee57afe5282da4b57968061ef8706d32890267ab"
+ integrity sha512-L+2xZTye/2T96f3lwCws0Zw6GG2JHZW9e8FpVgGBeeExSKyeoZ6CWRpBml/7DNiK/O26jrgPM9F+Ay8VkgzUWQ==
dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/types" "^4.3.1"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/signature-v4" "^5.6.12"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/middleware-logger@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.821.0.tgz#87067907a25cdc6c155d3a35fe32e399c1ef87e6"
- integrity sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==
+"@aws-sdk/token-providers@3.1116.0":
+ version "3.1116.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.1116.0.tgz#79c23d5cfeaf63f13a49f25035e8954083e09b6a"
+ integrity sha512-ygIivKqh8aHzNkucOCXHyIBgBpLPfrSI0mCqXF+vLBsPTUKqj0VSqAY0GFPe7lQl4HntjOcQ+KSyS7oUV2C54Q==
dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/types" "^4.3.1"
+ "@aws-sdk/core" "^3.977.9"
+ "@aws-sdk/nested-clients" "^3.997.44"
+ "@aws-sdk/types" "^3.974.5"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/middleware-recursion-detection@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.821.0.tgz#bc34b08efc1e1af7b14a58023a79bfb75a0b64fa"
- integrity sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==
+"@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.974.5":
+ version "3.974.5"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.974.5.tgz#a52691531738d191b8b3fd1ae7757c2eeec7afee"
+ integrity sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ==
dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@aws-sdk/middleware-sdk-s3@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.821.0.tgz#926c8272ccaf7087fa7e6b813d3fed209404ccee"
- integrity sha512-D469De1d4NtcCTVHzUL2Q0tGvPFr7mk2j4+oCYpVyd5awSSOyl8Adkxse8qayZj9ROmuMlsoU5VhBvcc9Hoo2w==
- dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@aws-sdk/util-arn-parser" "3.804.0"
- "@smithy/core" "^3.5.1"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/signature-v4" "^5.1.2"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/util-config-provider" "^4.0.0"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-stream" "^4.2.2"
- "@smithy/util-utf8" "^4.0.0"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/middleware-ssec@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.821.0.tgz#4d4c2ba22e5bbf5ac618a1f679cbe256eaaf3d35"
- integrity sha512-YYi1Hhr2AYiU/24cQc8HIB+SWbQo6FBkMYojVuz/zgrtkFmALxENGF/21OPg7f/QWd+eadZJRxCjmRwh5F2Cxg==
- dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@aws-sdk/middleware-user-agent@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.821.0.tgz#bfe6a86cc16e14c4595931bd8894d2569f1e1dac"
- integrity sha512-rw8q3TxygMg3VrofN04QyWVCCyGwz3bVthYmBZZseENPWG3Krz1OCKcyqjkTcAxMQlEywOske+GIiOasGKnJ3w==
- dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@aws-sdk/util-endpoints" "3.821.0"
- "@smithy/core" "^3.5.1"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@aws-sdk/nested-clients@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.821.0.tgz#d979debfa401b4fc0b454c469e6c548b541d3cc8"
- integrity sha512-2IuHcUsWw44ftSEDYU4dvktTEqgyDvkOcfpoGC/UmT4Qo6TVCP3U5tWEGpNK9nN+7nLvekruxxG/jaMt5/oWVw==
- dependencies:
- "@aws-crypto/sha256-browser" "5.2.0"
- "@aws-crypto/sha256-js" "5.2.0"
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/middleware-host-header" "3.821.0"
- "@aws-sdk/middleware-logger" "3.821.0"
- "@aws-sdk/middleware-recursion-detection" "3.821.0"
- "@aws-sdk/middleware-user-agent" "3.821.0"
- "@aws-sdk/region-config-resolver" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@aws-sdk/util-endpoints" "3.821.0"
- "@aws-sdk/util-user-agent-browser" "3.821.0"
- "@aws-sdk/util-user-agent-node" "3.821.0"
- "@smithy/config-resolver" "^4.1.4"
- "@smithy/core" "^3.5.1"
- "@smithy/fetch-http-handler" "^5.0.4"
- "@smithy/hash-node" "^4.0.4"
- "@smithy/invalid-dependency" "^4.0.4"
- "@smithy/middleware-content-length" "^4.0.4"
- "@smithy/middleware-endpoint" "^4.1.9"
- "@smithy/middleware-retry" "^4.1.10"
- "@smithy/middleware-serde" "^4.0.8"
- "@smithy/middleware-stack" "^4.0.4"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/node-http-handler" "^4.0.6"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/url-parser" "^4.0.4"
- "@smithy/util-base64" "^4.0.0"
- "@smithy/util-body-length-browser" "^4.0.0"
- "@smithy/util-body-length-node" "^4.0.0"
- "@smithy/util-defaults-mode-browser" "^4.0.17"
- "@smithy/util-defaults-mode-node" "^4.0.17"
- "@smithy/util-endpoints" "^3.0.6"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-retry" "^4.0.5"
- "@smithy/util-utf8" "^4.0.0"
- tslib "^2.6.2"
-
-"@aws-sdk/region-config-resolver@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.821.0.tgz#2f1cd54ca140cbdc821a604d8b20444f9b0b77cf"
- integrity sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==
+"@aws-sdk/util-utf8-browser@^3.0.0":
+ version "3.259.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff"
+ integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==
dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/types" "^4.3.1"
- "@smithy/util-config-provider" "^4.0.0"
- "@smithy/util-middleware" "^4.0.4"
- tslib "^2.6.2"
+ tslib "^2.3.1"
-"@aws-sdk/signature-v4-multi-region@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.821.0.tgz#703acb5611454a5fa034501fe1f658dd66da6b71"
- integrity sha512-UjfyVR/PB/TP9qe1x6tv7qLlD8/0eiSLDkkBUgBmddkkX0l17oy9c2SJINuV3jy1fbx6KORZ6gyvRZ2nb8dtMw==
+"@aws-sdk/xml-builder@^3.972.40":
+ version "3.972.40"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.972.40.tgz#3cdb5f3400860ad91301aecb87fb5148a66d6ff7"
+ integrity sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA==
dependencies:
- "@aws-sdk/middleware-sdk-s3" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/signature-v4" "^5.1.2"
- "@smithy/types" "^4.3.1"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@aws-sdk/token-providers@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.821.0.tgz#38e515f1c4ce7c27f72a4b42b7a0d94f8c3e504d"
- integrity sha512-qJ7wgKhdxGbPg718zWXbCYKDuSWZNU3TSw64hPRW6FtbZrIyZxObpiTKC6DKwfsVoZZhHEoP/imGykN1OdOTJA==
- dependencies:
- "@aws-sdk/core" "3.821.0"
- "@aws-sdk/nested-clients" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/shared-ini-file-loader" "^4.0.4"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
+"@aws/lambda-invoke-store@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.3.0.tgz#708802d987f8e17bdf4af4de1031660ce1cdd65f"
+ integrity sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==
-"@aws-sdk/types@3.821.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.222.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.821.0.tgz#edfd4595208e4e9f24f397fbc8cb82e3ec336649"
- integrity sha512-Znroqdai1a90TlxGaJ+FK1lwC0fHpo97Xjsp5UKGR5JODYm7f9+/fF17ebO1KdoBr/Rm0UIFiF5VmI8ts9F1eA==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7"
+ integrity sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==
dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
+ "@babel/helper-validator-identifier" "^7.29.7"
+ js-tokens "^4.0.0"
+ picocolors "^1.1.1"
-"@aws-sdk/util-arn-parser@3.804.0":
- version "3.804.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz#d0b52bf5f9ae5b2c357a635551e5844dcad074c8"
- integrity sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==
- dependencies:
- tslib "^2.6.2"
+"@babel/compat-data@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629"
+ integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==
+
+"@babel/core@^7.24.4":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7"
+ integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==
+ dependencies:
+ "@babel/code-frame" "^7.29.7"
+ "@babel/generator" "^7.29.7"
+ "@babel/helper-compilation-targets" "^7.29.7"
+ "@babel/helper-module-transforms" "^7.29.7"
+ "@babel/helpers" "^7.29.7"
+ "@babel/parser" "^7.29.7"
+ "@babel/template" "^7.29.7"
+ "@babel/traverse" "^7.29.7"
+ "@babel/types" "^7.29.7"
+ "@jridgewell/remapping" "^2.3.5"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
-"@aws-sdk/util-endpoints@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.821.0.tgz#8883370bc3218e532fb9b7358e23369dc0a77201"
- integrity sha512-Uknt/zUZnLE76zaAAPEayOeF5/4IZ2puTFXvcSCWHsi9m3tqbb9UozlnlVqvCZLCRWfQryZQoG2W4XSS3qgk5A==
+"@babel/generator@^7.29.7", "@babel/generator@^7.29.8":
+ version "7.29.8"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.8.tgz#4b0b887885422643339e09022148a4c4ebaa4979"
+ integrity sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==
dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/types" "^4.3.1"
- "@smithy/util-endpoints" "^3.0.6"
- tslib "^2.6.2"
+ "@babel/parser" "^7.29.8"
+ "@babel/types" "^7.29.8"
+ "@jridgewell/gen-mapping" "^0.3.12"
+ "@jridgewell/trace-mapping" "^0.3.28"
+ jsesc "^3.0.2"
-"@aws-sdk/util-locate-window@^3.0.0":
- version "3.804.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz#a2ee8dc5d9c98276986e8e1ba03c0c84d9afb0f5"
- integrity sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==
+"@babel/helper-compilation-targets@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042"
+ integrity sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==
dependencies:
- tslib "^2.6.2"
+ "@babel/compat-data" "^7.29.7"
+ "@babel/helper-validator-option" "^7.29.7"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
-"@aws-sdk/util-user-agent-browser@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.821.0.tgz#32962fd3ae20986da128944b88a231508e017f5b"
- integrity sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==
- dependencies:
- "@aws-sdk/types" "3.821.0"
- "@smithy/types" "^4.3.1"
- bowser "^2.11.0"
- tslib "^2.6.2"
+"@babel/helper-globals@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b"
+ integrity sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==
-"@aws-sdk/util-user-agent-node@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.821.0.tgz#7b2cda0bfbd8d47bcd7b0a09ecc6af316e7e0ca1"
- integrity sha512-YwMXc9EvuzJgnLBTyiQly2juPujXwDgcMHB0iSN92tHe7Dd1jJ1feBmTgdClaaqCeHFUaFpw+3JU/ZUJ6LjR+A==
+"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396"
+ integrity sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==
dependencies:
- "@aws-sdk/middleware-user-agent" "3.821.0"
- "@aws-sdk/types" "3.821.0"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
+ "@babel/traverse" "^7.29.7"
+ "@babel/types" "^7.29.7"
-"@aws-sdk/util-utf8-browser@^3.0.0":
- version "3.259.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff"
- integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==
+"@babel/helper-module-transforms@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae"
+ integrity sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==
dependencies:
- tslib "^2.3.1"
+ "@babel/helper-module-imports" "^7.29.7"
+ "@babel/helper-validator-identifier" "^7.29.7"
+ "@babel/traverse" "^7.29.7"
-"@aws-sdk/xml-builder@3.821.0":
- version "3.821.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz#ff89bf1276fca41276ed508b9c8ae21978d91177"
- integrity sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
+"@babel/helper-string-parser@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f"
+ integrity sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
- integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
- dependencies:
- "@babel/helper-validator-identifier" "^7.27.1"
- js-tokens "^4.0.0"
- picocolors "^1.1.1"
+"@babel/helper-validator-identifier@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2"
+ integrity sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==
-"@babel/generator@^7.27.3":
- version "7.27.3"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.3.tgz#ef1c0f7cfe3b5fc8cbb9f6cc69f93441a68edefc"
- integrity sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==
- dependencies:
- "@babel/parser" "^7.27.3"
- "@babel/types" "^7.27.3"
- "@jridgewell/gen-mapping" "^0.3.5"
- "@jridgewell/trace-mapping" "^0.3.25"
- jsesc "^3.0.2"
+"@babel/helper-validator-option@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a"
+ integrity sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==
-"@babel/helper-module-imports@^7.16.7":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
- integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
+"@babel/helpers@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607"
+ integrity sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==
dependencies:
- "@babel/traverse" "^7.27.1"
- "@babel/types" "^7.27.1"
-
-"@babel/helper-string-parser@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
- integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
+ "@babel/template" "^7.29.7"
+ "@babel/types" "^7.29.7"
-"@babel/helper-validator-identifier@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
- integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
-
-"@babel/parser@^7.27.2", "@babel/parser@^7.27.3", "@babel/parser@^7.27.4":
- version "7.27.4"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.4.tgz#f92e89e4f51847be05427285836fc88341c956df"
- integrity sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==
+"@babel/parser@^7.24.4", "@babel/parser@^7.29.7", "@babel/parser@^7.29.8":
+ version "7.29.8"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.8.tgz#9653716a2f10c677b98fbc63d4bfb000c302cf17"
+ integrity sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==
dependencies:
- "@babel/types" "^7.27.3"
+ "@babel/types" "^7.29.8"
"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
- version "7.27.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.4.tgz#a91ec580e6c00c67118127777c316dfd5a5a6abf"
- integrity sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==
-
-"@babel/template@^7.27.2":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
- integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
- dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/parser" "^7.27.2"
- "@babel/types" "^7.27.1"
-
-"@babel/traverse@^7.27.1":
- version "7.27.4"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea"
- integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==
- dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.27.3"
- "@babel/parser" "^7.27.4"
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.27.3"
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.7.tgz#12022450c45a4da6d8d8287b18a4ff2ddb23f768"
+ integrity sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==
+
+"@babel/template@^7.29.7":
+ version "7.29.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700"
+ integrity sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==
+ dependencies:
+ "@babel/code-frame" "^7.29.7"
+ "@babel/parser" "^7.29.7"
+ "@babel/types" "^7.29.7"
+
+"@babel/traverse@^7.29.7":
+ version "7.29.8"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.8.tgz#4111014cdc71a0f95d9471907590baa0b8a6b28a"
+ integrity sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==
+ dependencies:
+ "@babel/code-frame" "^7.29.7"
+ "@babel/generator" "^7.29.8"
+ "@babel/helper-globals" "^7.29.7"
+ "@babel/parser" "^7.29.8"
+ "@babel/template" "^7.29.7"
+ "@babel/types" "^7.29.8"
debug "^4.3.1"
- globals "^11.1.0"
-"@babel/types@^7.27.1", "@babel/types@^7.27.3":
- version "7.27.3"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.3.tgz#c0257bedf33aad6aad1f406d35c44758321eb3ec"
- integrity sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==
+"@babel/types@^7.29.7", "@babel/types@^7.29.8":
+ version "7.29.8"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.8.tgz#1229eef31d85156d70fa3f4cd859376d0eaf6863"
+ integrity sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==
dependencies:
- "@babel/helper-string-parser" "^7.27.1"
- "@babel/helper-validator-identifier" "^7.27.1"
+ "@babel/helper-string-parser" "^7.29.7"
+ "@babel/helper-validator-identifier" "^7.29.7"
+
+"@borewit/text-codec@^0.2.1":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@borewit/text-codec/-/text-codec-0.2.2.tgz#75025f735c0983b3a871668804a57387e3649375"
+ integrity sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==
"@date-fns/tz@1.2.0":
version "1.2.0"
@@ -829,32 +517,47 @@
resolved "https://registry.yarnpkg.com/@drizzle-team/brocli/-/brocli-0.10.2.tgz#9757c006a43daaa6f45512e6cf5fabed36fb9da7"
integrity sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==
-"@emnapi/core@^1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6"
- integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==
+"@emnapi/core@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467"
+ integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==
dependencies:
- "@emnapi/wasi-threads" "1.0.2"
+ "@emnapi/wasi-threads" "1.2.1"
tslib "^2.4.0"
-"@emnapi/runtime@^1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d"
- integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==
+"@emnapi/core@^1.11.1":
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.3.tgz#5e95348a42cd1e06f0b9aa380cd74091daa4d520"
+ integrity sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==
dependencies:
+ "@emnapi/wasi-threads" "1.2.3"
tslib "^2.4.0"
-"@emnapi/runtime@^1.7.0":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.7.1.tgz#a73784e23f5d57287369c808197288b52276b791"
- integrity sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==
+"@emnapi/runtime@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c"
+ integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==
dependencies:
tslib "^2.4.0"
-"@emnapi/wasi-threads@1.0.2", "@emnapi/wasi-threads@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c"
- integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==
+"@emnapi/runtime@^1.11.1", "@emnapi/runtime@^1.11.3":
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.3.tgz#84257ae3b0531eb2aec1ffa23d70700da007ba95"
+ integrity sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==
+ dependencies:
+ tslib "^2.4.0"
+
+"@emnapi/wasi-threads@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548"
+ integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==
+ dependencies:
+ tslib "^2.4.0"
+
+"@emnapi/wasi-threads@1.2.3", "@emnapi/wasi-threads@^1.2.2":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz#c9bf72fd4be5b928aee894820e8d814ed73916e9"
+ integrity sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==
dependencies:
tslib "^2.4.0"
@@ -967,560 +670,334 @@
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c"
integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==
-"@esbuild/aix-ppc64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz#4e0f91776c2b340e75558f60552195f6fad09f18"
- integrity sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==
-
-"@esbuild/aix-ppc64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz#4c585002f7ad694d38fe0e8cbf5cfd939ccff327"
- integrity sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==
-
-"@esbuild/android-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
- integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
+"@esbuild/aix-ppc64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz#bf6e10303bcf2e7c686975fa52f937ec2728d8bc"
+ integrity sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==
"@esbuild/android-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752"
integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==
-"@esbuild/android-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz#bc766407f1718923f6b8079c8c61bf86ac3a6a4f"
- integrity sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==
-
-"@esbuild/android-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz#7625d0952c3b402d3ede203a16c9f2b78f8a4827"
- integrity sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==
-
-"@esbuild/android-arm@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
- integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
+"@esbuild/android-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz#0c6246bc8d2c4d172aac2db3fb1190d72bd65504"
+ integrity sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==
"@esbuild/android-arm@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a"
integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==
-"@esbuild/android-arm@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.5.tgz#4290d6d3407bae3883ad2cded1081a234473ce26"
- integrity sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==
-
-"@esbuild/android-arm@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.4.tgz#9a0cf1d12997ec46dddfb32ce67e9bca842381ac"
- integrity sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==
-
-"@esbuild/android-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
- integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
+"@esbuild/android-arm@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.28.2.tgz#2d84ece6a4e2684d92be26ee13d42757d831c381"
+ integrity sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==
"@esbuild/android-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16"
integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==
-"@esbuild/android-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.5.tgz#40c11d9cbca4f2406548c8a9895d321bc3b35eff"
- integrity sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==
-
-"@esbuild/android-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.4.tgz#06e1fdc6283fccd6bc6aadd6754afce6cf96f42e"
- integrity sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==
-
-"@esbuild/darwin-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
- integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
+"@esbuild/android-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.28.2.tgz#fc38d4d6358d8dc1cf53f09f7589fe436eb64801"
+ integrity sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==
"@esbuild/darwin-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd"
integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==
-"@esbuild/darwin-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz#49d8bf8b1df95f759ac81eb1d0736018006d7e34"
- integrity sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==
-
-"@esbuild/darwin-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz#6c550ee6c0273bcb0fac244478ff727c26755d80"
- integrity sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==
-
-"@esbuild/darwin-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
- integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
+"@esbuild/darwin-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz#f83afeeac1d7dac01c7a2fd012b3e451a0591fcc"
+ integrity sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==
"@esbuild/darwin-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e"
integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==
-"@esbuild/darwin-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz#e27a5d92a14886ef1d492fd50fc61a2d4d87e418"
- integrity sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==
-
-"@esbuild/darwin-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz#ed7a125e9f25ce0091b9aff783ee943f6ba6cb86"
- integrity sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==
-
-"@esbuild/freebsd-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
- integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
+"@esbuild/darwin-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz#510147c055a795588dbbe14fd6b1b8ad0a2f30de"
+ integrity sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==
"@esbuild/freebsd-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe"
integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==
-"@esbuild/freebsd-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz#97cede59d638840ca104e605cdb9f1b118ba0b1c"
- integrity sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==
-
-"@esbuild/freebsd-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz#597dc8e7161dba71db4c1656131c1f1e9d7660c6"
- integrity sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==
-
-"@esbuild/freebsd-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
- integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
+"@esbuild/freebsd-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz#093b9200ecf0b115ba4e5e248a7485c9c5f8bd5e"
+ integrity sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==
"@esbuild/freebsd-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3"
integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==
-"@esbuild/freebsd-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz#71c77812042a1a8190c3d581e140d15b876b9c6f"
- integrity sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==
-
-"@esbuild/freebsd-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz#ea171f9f4f00efaa8e9d3fe8baa1b75d757d1b36"
- integrity sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==
-
-"@esbuild/linux-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
- integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
+"@esbuild/freebsd-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz#0be22b6df925d213e841ea87123af5df80b0faf7"
+ integrity sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==
"@esbuild/linux-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977"
integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==
-"@esbuild/linux-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz#f7b7c8f97eff8ffd2e47f6c67eb5c9765f2181b8"
- integrity sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==
-
-"@esbuild/linux-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz#e52d57f202369386e6dbcb3370a17a0491ab1464"
- integrity sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==
-
-"@esbuild/linux-arm@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
- integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
+"@esbuild/linux-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz#1bdbc651cda9ba9995c53ed9c71ceaa65094762d"
+ integrity sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==
"@esbuild/linux-arm@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9"
integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==
-"@esbuild/linux-arm@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz#2a0be71b6cd8201fa559aea45598dffabc05d911"
- integrity sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==
-
-"@esbuild/linux-arm@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz#5e0c0b634908adbce0a02cebeba8b3acac263fb6"
- integrity sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==
-
-"@esbuild/linux-ia32@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
- integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
+"@esbuild/linux-arm@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz#beb12ad72b84f72d28488cc1b8ee9f7eb141d753"
+ integrity sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==
"@esbuild/linux-ia32@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0"
integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==
-"@esbuild/linux-ia32@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz#763414463cd9ea6fa1f96555d2762f9f84c61783"
- integrity sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==
-
-"@esbuild/linux-ia32@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz#5f90f01f131652473ec06b038a14c49683e14ec7"
- integrity sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==
-
-"@esbuild/linux-loong64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
- integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
+"@esbuild/linux-ia32@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz#b81f9d55529b45c206a46a138214b1aa6879696b"
+ integrity sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==
"@esbuild/linux-loong64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0"
integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==
-"@esbuild/linux-loong64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz#428cf2213ff786a502a52c96cf29d1fcf1eb8506"
- integrity sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==
-
-"@esbuild/linux-loong64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz#63bacffdb99574c9318f9afbd0dd4fff76a837e3"
- integrity sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==
-
-"@esbuild/linux-mips64el@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
- integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
+"@esbuild/linux-loong64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz#598667241a04c99b76ed6ef940ac50038c419f98"
+ integrity sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==
"@esbuild/linux-mips64el@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd"
integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==
-"@esbuild/linux-mips64el@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz#5cbcc7fd841b4cd53358afd33527cd394e325d96"
- integrity sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==
-
-"@esbuild/linux-mips64el@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz#c4b6952eca6a8efff67fee3671a3536c8e67b7eb"
- integrity sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==
-
-"@esbuild/linux-ppc64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
- integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
+"@esbuild/linux-mips64el@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz#1c51eb9cea903f53d97b5af3b1841db70f5596ca"
+ integrity sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==
"@esbuild/linux-ppc64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869"
integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==
-"@esbuild/linux-ppc64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz#0d954ab39ce4f5e50f00c4f8c4fd38f976c13ad9"
- integrity sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==
-
-"@esbuild/linux-ppc64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz#6dea67d3d98c6986f1b7769e4f1848e5ae47ad58"
- integrity sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==
-
-"@esbuild/linux-riscv64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
- integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
+"@esbuild/linux-ppc64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz#63dd61f17ceb31a81227f413feac8a71bc2c51f2"
+ integrity sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==
"@esbuild/linux-riscv64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6"
integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==
-"@esbuild/linux-riscv64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz#0e7dd30730505abd8088321e8497e94b547bfb1e"
- integrity sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==
-
-"@esbuild/linux-riscv64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz#9ad2b4c3c0502c6bada9c81997bb56c597853489"
- integrity sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==
-
-"@esbuild/linux-s390x@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
- integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
+"@esbuild/linux-riscv64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz#3763b08fde5cf25ab1facb8e7752edfe45fbfc27"
+ integrity sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==
"@esbuild/linux-s390x@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663"
integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==
-"@esbuild/linux-s390x@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz#5669af81327a398a336d7e40e320b5bbd6e6e72d"
- integrity sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==
-
-"@esbuild/linux-s390x@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz#c43d3cfd073042ca6f5c52bb9bc313ed2066ce28"
- integrity sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==
-
-"@esbuild/linux-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
- integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
+"@esbuild/linux-s390x@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz#1a137ff293a82906eb3176385bd7e8e0e5cfb7cb"
+ integrity sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==
"@esbuild/linux-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306"
integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==
-"@esbuild/linux-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz#b2357dd153aa49038967ddc1ffd90c68a9d2a0d4"
- integrity sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==
-
-"@esbuild/linux-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz#45fa173e0591ac74d80d3cf76704713e14e2a4a6"
- integrity sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==
+"@esbuild/linux-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz#268b36211c146ca54f8fe12c578a8d6ef8979485"
+ integrity sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==
"@esbuild/netbsd-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4"
integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==
-"@esbuild/netbsd-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz#53b4dfb8fe1cee93777c9e366893bd3daa6ba63d"
- integrity sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==
-
-"@esbuild/netbsd-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz#366b0ef40cdb986fc751cbdad16e8c25fe1ba879"
- integrity sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==
-
-"@esbuild/netbsd-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
- integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
+"@esbuild/netbsd-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz#22571ad951d62bb6accc82d8d1fad5c8c1ac0ba1"
+ integrity sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==
"@esbuild/netbsd-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076"
integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==
-"@esbuild/netbsd-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz#a0206f6314ce7dc8713b7732703d0f58de1d1e79"
- integrity sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==
-
-"@esbuild/netbsd-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz#e985d49a3668fd2044343071d52e1ae815112b3e"
- integrity sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==
+"@esbuild/netbsd-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz#42fcc57297eb0a0ca3f5fc475291f4c1a3f7c0de"
+ integrity sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==
"@esbuild/openbsd-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd"
integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==
-"@esbuild/openbsd-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz#2a796c87c44e8de78001d808c77d948a21ec22fd"
- integrity sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==
-
-"@esbuild/openbsd-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz#6fb4ab7b73f7e5572ce5ec9cf91c13ff6dd44842"
- integrity sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==
-
-"@esbuild/openbsd-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
- integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
+"@esbuild/openbsd-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz#9eb32af104ac3dacf4edca01f596664aab0c73ef"
+ integrity sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==
"@esbuild/openbsd-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679"
integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==
-"@esbuild/openbsd-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz#28d0cd8909b7fa3953af998f2b2ed34f576728f0"
- integrity sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==
-
-"@esbuild/openbsd-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz#641f052040a0d79843d68898f5791638a026d983"
- integrity sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==
+"@esbuild/openbsd-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz#febed2402d6088225e91f20fb4ce2522ad0a4efd"
+ integrity sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==
"@esbuild/openharmony-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d"
integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==
-"@esbuild/openharmony-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz#fc1d33eac9d81ae0a433b3ed1dd6171a20d4e317"
- integrity sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==
-
-"@esbuild/sunos-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
- integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
+"@esbuild/openharmony-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz#85641c3d466428bfbccea5f21c26836663fef5ce"
+ integrity sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==
"@esbuild/sunos-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6"
integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==
-"@esbuild/sunos-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz#a28164f5b997e8247d407e36c90d3fd5ddbe0dc5"
- integrity sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==
-
-"@esbuild/sunos-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz#af2cd5ca842d6d057121f66a192d4f797de28f53"
- integrity sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==
-
-"@esbuild/win32-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
- integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
+"@esbuild/sunos-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz#a736f9d8962481045fc4c3e54f5479f22c870fb4"
+ integrity sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==
"@esbuild/win32-arm64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323"
integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==
-"@esbuild/win32-arm64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz#6eadbead38e8bd12f633a5190e45eff80e24007e"
- integrity sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==
-
-"@esbuild/win32-arm64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz#78ec7e59bb06404583d4c9511e621db31c760de3"
- integrity sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==
-
-"@esbuild/win32-ia32@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
- integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
+"@esbuild/win32-arm64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz#ee5ab40fad186201b652a33f8a5eb149e9e42532"
+ integrity sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==
"@esbuild/win32-ia32@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267"
integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==
-"@esbuild/win32-ia32@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz#bab6288005482f9ed2adb9ded7e88eba9a62cc0d"
- integrity sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==
-
-"@esbuild/win32-ia32@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz#0e616aa488b7ee5d2592ab070ff9ec06a9fddf11"
- integrity sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==
-
-"@esbuild/win32-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
- integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
+"@esbuild/win32-ia32@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz#c40d28a6d99a127da6711f2afd74b11cb63b06a7"
+ integrity sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==
"@esbuild/win32-x64@0.25.12":
version "0.25.12"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5"
integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==
-"@esbuild/win32-x64@0.25.5":
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz#7fc114af5f6563f19f73324b5d5ff36ece0803d1"
- integrity sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==
+"@esbuild/win32-x64@0.28.2":
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz#b21affb804cc167c133d95f45b3a1dc1323b9a87"
+ integrity sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==
-"@esbuild/win32-x64@0.27.4":
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz#1f7ba71a3d6155d44a6faa8dbe249c62ab3e408c"
- integrity sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==
+"@eslint-community/eslint-utils@4.9.1":
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595"
+ integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==
+ dependencies:
+ eslint-visitor-keys "^3.4.3"
-"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0":
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a"
- integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==
+"@eslint-community/eslint-utils@^4.8.0", "@eslint-community/eslint-utils@^4.9.1":
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz#8911bd72b2c3640a543609e0400b8c4d2e7e7cb6"
+ integrity sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==
dependencies:
eslint-visitor-keys "^3.4.3"
-"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1":
- version "4.12.1"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
- integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
+"@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.12.2":
+ version "4.12.2"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b"
+ integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==
-"@eslint/config-array@^0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f"
- integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==
+"@eslint/config-array@^0.21.2":
+ version "0.21.2"
+ resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.2.tgz#f29e22057ad5316cf23836cee9a34c81fffcb7e6"
+ integrity sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==
dependencies:
- "@eslint/object-schema" "^2.1.6"
+ "@eslint/object-schema" "^2.1.7"
debug "^4.3.1"
- minimatch "^3.1.2"
+ minimatch "^3.1.5"
-"@eslint/config-helpers@^0.2.1":
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.2.tgz#3779f76b894de3a8ec4763b79660e6d54d5b1010"
- integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==
+"@eslint/config-helpers@^0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda"
+ integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==
+ dependencies:
+ "@eslint/core" "^0.17.0"
-"@eslint/core@^0.14.0":
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.14.0.tgz#326289380968eaf7e96f364e1e4cf8f3adf2d003"
- integrity sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==
+"@eslint/core@^0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c"
+ integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==
dependencies:
"@types/json-schema" "^7.0.15"
-"@eslint/eslintrc@^3", "@eslint/eslintrc@^3.3.1":
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964"
- integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==
+"@eslint/eslintrc@^3", "@eslint/eslintrc@^3.3.6":
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.7.tgz#76d3dedec4a30ea32df797bf8a0085c1311b7316"
+ integrity sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==
dependencies:
- ajv "^6.12.4"
+ ajv "^6.14.0"
debug "^4.3.2"
espree "^10.0.1"
globals "^14.0.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
- js-yaml "^4.1.0"
- minimatch "^3.1.2"
+ js-yaml "^4.3.2"
+ minimatch "^3.1.5"
strip-json-comments "^3.1.1"
-"@eslint/js@9.28.0":
- version "9.28.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.28.0.tgz#7822ccc2f8cae7c3cd4f902377d520e9ae03f844"
- integrity sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==
+"@eslint/js@9.39.5":
+ version "9.39.5"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.5.tgz#6f2fbcff75500d229d535e0a949ae13472c84787"
+ integrity sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==
-"@eslint/object-schema@^2.1.6":
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f"
- integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==
+"@eslint/object-schema@^2.1.7":
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad"
+ integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==
-"@eslint/plugin-kit@^0.3.1":
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz#b71b037b2d4d68396df04a8c35a49481e5593067"
- integrity sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==
+"@eslint/plugin-kit@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2"
+ integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==
dependencies:
- "@eslint/core" "^0.14.0"
+ "@eslint/core" "^0.17.0"
levn "^0.4.1"
"@faceless-ui/modal@3.0.0":
@@ -1542,289 +1019,270 @@
resolved "https://registry.yarnpkg.com/@faceless-ui/window-info/-/window-info-3.0.1.tgz#be66f8b27631c03a5a1c46e6c7e0b29b5777cc76"
integrity sha512-uPjdJYE/j7hqVNelE9CRUNOeXuXDdPxR4DMe+oz3xwyZi2Y4CxsfpfdPTqqwmNAZa1P33O+ZiCyIkBEeNed0kw==
-"@floating-ui/core@^1.7.0":
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.0.tgz#1aff27a993ea1b254a586318c29c3b16ea0f4d0a"
- integrity sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==
- dependencies:
- "@floating-ui/utils" "^0.2.9"
-
-"@floating-ui/core@^1.7.5":
- version "1.7.5"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622"
- integrity sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==
- dependencies:
- "@floating-ui/utils" "^0.2.11"
-
-"@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.0.1":
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.0.tgz#f9f83ee4fee78ac23ad9e65b128fc11a27857532"
- integrity sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==
- dependencies:
- "@floating-ui/core" "^1.7.0"
- "@floating-ui/utils" "^0.2.9"
-
-"@floating-ui/dom@^1.7.6":
- version "1.7.6"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.6.tgz#f915bba5abbb177e1f227cacee1b4d0634b187bf"
- integrity sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==
- dependencies:
- "@floating-ui/core" "^1.7.5"
- "@floating-ui/utils" "^0.2.11"
-
-"@floating-ui/react-dom@^2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
- integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
+"@floating-ui/core@^1.8.0":
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.8.0.tgz#d01c0bbea02e4a57f6fd7d5de6fc2c5c7dca40e1"
+ integrity sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==
dependencies:
- "@floating-ui/dom" "^1.0.0"
+ "@floating-ui/utils" "^0.2.12"
-"@floating-ui/react-dom@^2.1.8":
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.8.tgz#5fb5a20d10aafb9505f38c24f38d00c8e1598893"
- integrity sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==
+"@floating-ui/dom@^1.0.1", "@floating-ui/dom@^1.8.0":
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.8.0.tgz#8a20e6facbe2456afdbeb6c8b968a72df689cf63"
+ integrity sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==
dependencies:
- "@floating-ui/dom" "^1.7.6"
+ "@floating-ui/core" "^1.8.0"
+ "@floating-ui/utils" "^0.2.12"
-"@floating-ui/react@^0.27.0":
- version "0.27.10"
- resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.27.10.tgz#25f8df37a48e79847fc1c62875e63d2126462088"
- integrity sha512-2tQScvQgzeYAdReavy/ql0JimAruQ2qtDHQFlcXSv8WP/1S1/YaIftyvhGfHknIB6rns0K3P6CV/lw/Tjm5Oaw==
+"@floating-ui/react-dom@^2.1.9":
+ version "2.1.9"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.9.tgz#f42a5f469ea56d6f2e2751efa1cf936243a87355"
+ integrity sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==
dependencies:
- "@floating-ui/react-dom" "^2.1.2"
- "@floating-ui/utils" "^0.2.9"
- tabbable "^6.0.0"
+ "@floating-ui/dom" "^1.8.0"
-"@floating-ui/react@^0.27.16":
- version "0.27.19"
- resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.27.19.tgz#d8d5d895b7cb97dac370bfbf55f3e630878fdf1f"
- integrity sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==
+"@floating-ui/react@^0.27.0", "@floating-ui/react@^0.27.16":
+ version "0.27.20"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.27.20.tgz#353664b4a2b329e9f91f8d9150f7992b5ace20f4"
+ integrity sha512-CMqMy7OaXl9W0eq1Uy7L7i2Y/anPvHmFmESd2CEw0t5YvZhcVCeo4MBevAmswRllX7Y2dEidA4ozGPunLSTQpw==
dependencies:
- "@floating-ui/react-dom" "^2.1.8"
- "@floating-ui/utils" "^0.2.11"
+ "@floating-ui/react-dom" "^2.1.9"
+ "@floating-ui/utils" "^0.2.12"
tabbable "^6.0.0"
-"@floating-ui/utils@^0.2.11":
- version "0.2.11"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f"
- integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==
-
-"@floating-ui/utils@^0.2.9":
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429"
- integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==
+"@floating-ui/utils@^0.2.12":
+ version "0.2.12"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.12.tgz#afefe785949f16ac4cdd1e695935a321572dd56a"
+ integrity sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==
"@fullcalendar/core@^6.1.19":
- version "6.1.19"
- resolved "https://registry.yarnpkg.com/@fullcalendar/core/-/core-6.1.19.tgz#60379111ba0cfb9fd9bc6594fee47cf855fc77b2"
- integrity sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==
+ version "6.1.21"
+ resolved "https://registry.yarnpkg.com/@fullcalendar/core/-/core-6.1.21.tgz#e8b0ed592a60aba44499802fefdbb1fcc91b0a07"
+ integrity sha512-t3u/+sqh3Iq7TWtUnVLcGDUE6OWZh0UD3c04bI/l7lSLAgAKr3kngBmhHiQD1QXpwC8ZN5iNqG7a7gOVixhSKQ==
dependencies:
preact "~10.12.1"
"@fullcalendar/daygrid@^6.1.19":
- version "6.1.19"
- resolved "https://registry.yarnpkg.com/@fullcalendar/daygrid/-/daygrid-6.1.19.tgz#1d70a7f3f4cc13d3f27f55ed6880aae09a1a367b"
- integrity sha512-IAAfnMICnVWPjpT4zi87i3FEw0xxSza0avqY/HedKEz+l5MTBYvCDPOWDATpzXoLut3aACsjktIyw9thvIcRYQ==
+ version "6.1.21"
+ resolved "https://registry.yarnpkg.com/@fullcalendar/daygrid/-/daygrid-6.1.21.tgz#70eef7af5951b35a5f0380b15e32e5389ae029bc"
+ integrity sha512-QYb1y40RGYLlOxKpYWg8O+7njEnKnFG8Tt7qjnubJGR35s1phQg67E+81y2TyAbbm59p2JFOCXGDk9t6KDujIA==
"@fullcalendar/interaction@^6.1.19":
- version "6.1.19"
- resolved "https://registry.yarnpkg.com/@fullcalendar/interaction/-/interaction-6.1.19.tgz#48d85601a4203ede7cb400323fe5a9c163e28804"
- integrity sha512-GOciy79xe8JMVp+1evAU3ytdwN/7tv35t5i1vFkifiuWcQMLC/JnLg/RA2s4sYmQwoYhTw/p4GLcP0gO5B3X5w==
+ version "6.1.21"
+ resolved "https://registry.yarnpkg.com/@fullcalendar/interaction/-/interaction-6.1.21.tgz#e7fd36d7d328a02e1d7a1dcc174db7650a6edf31"
+ integrity sha512-WPYpqtljDWmU0Xm2cOtFrLlocgxv7cgkOppj34Q6OUUat8a6Cnd6kYo2JR+irP223PE5lBYHFNp1qh7SIpJc0w==
"@fullcalendar/react@^6.1.19":
- version "6.1.19"
- resolved "https://registry.yarnpkg.com/@fullcalendar/react/-/react-6.1.19.tgz#921ecc92972af4c9654e4742dd4a73fd4092c2ae"
- integrity sha512-FP78vnyylaL/btZeHig8LQgfHgfwxLaIG6sKbNkzkPkKEACv11UyyBoTSkaavPsHtXvAkcTED1l7TOunAyPEnA==
+ version "6.1.21"
+ resolved "https://registry.yarnpkg.com/@fullcalendar/react/-/react-6.1.21.tgz#6f396ab7460d3ad9d07f4c32b1ac483b9b21120f"
+ integrity sha512-TLpmGUd5k/PMdCh8XbeFC9PW9wuGvMms1oCxWgXyjK3EFPXAAd0PLfcvwKdyxoAS5eK1E4RJFkjMHvsYHpimcg==
-"@humanfs/core@^0.19.1":
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
- integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
+"@humanfs/core@^0.19.2":
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.2.tgz#a8272ca03b2acf492670222b2320b6c421bfde60"
+ integrity sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==
+ dependencies:
+ "@humanfs/types" "^0.15.0"
"@humanfs/node@^0.16.6":
- version "0.16.6"
- resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e"
- integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==
+ version "0.16.8"
+ resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.8.tgz#8f800cccc13f4f8cd3116e2d9c0a94939da3e3ed"
+ integrity sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==
dependencies:
- "@humanfs/core" "^0.19.1"
- "@humanwhocodes/retry" "^0.3.0"
+ "@humanfs/core" "^0.19.2"
+ "@humanfs/types" "^0.15.0"
+ "@humanwhocodes/retry" "^0.4.0"
+
+"@humanfs/types@^0.15.0":
+ version "0.15.0"
+ resolved "https://registry.yarnpkg.com/@humanfs/types/-/types-0.15.0.tgz#f2a09f62012390b2bff3fc6fb248ddec8c09a090"
+ integrity sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==
"@humanwhocodes/module-importer@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/retry@^0.3.0":
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
- integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
-
-"@humanwhocodes/retry@^0.4.2":
+"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba"
integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==
-"@img/colour@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@img/colour/-/colour-1.0.0.tgz#d2fabb223455a793bf3bf9c70de3d28526aa8311"
- integrity sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==
+"@img/colour@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@img/colour/-/colour-1.1.0.tgz#b0c2c2fa661adf75effd6b4964497cd80010bb9d"
+ integrity sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==
-"@img/sharp-darwin-arm64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz#6e0732dcade126b6670af7aa17060b926835ea86"
- integrity sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==
+"@img/sharp-darwin-arm64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz#bc10b262de2fc80088013f5f998298d1c8909fbf"
+ integrity sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==
optionalDependencies:
- "@img/sharp-libvips-darwin-arm64" "1.2.4"
+ "@img/sharp-libvips-darwin-arm64" "1.3.3"
-"@img/sharp-darwin-x64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz#19bc1dd6eba6d5a96283498b9c9f401180ee9c7b"
- integrity sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==
+"@img/sharp-darwin-x64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz#76c49ff04fb3f9d846b0d0575841b7ee59beec68"
+ integrity sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==
optionalDependencies:
- "@img/sharp-libvips-darwin-x64" "1.2.4"
+ "@img/sharp-libvips-darwin-x64" "1.3.3"
-"@img/sharp-libvips-darwin-arm64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz#2894c0cb87d42276c3889942e8e2db517a492c43"
- integrity sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==
+"@img/sharp-freebsd-wasm32@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz#ba55fd603c5d1d01a1cb14ffb4d970bc6ced80e1"
+ integrity sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==
+ dependencies:
+ "@img/sharp-wasm32" "0.35.4"
-"@img/sharp-libvips-darwin-x64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz#e63681f4539a94af9cd17246ed8881734386f8cc"
- integrity sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==
+"@img/sharp-libvips-darwin-arm64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz#08a6cf4fb4ee8d45f99404a569dcaa6b29391d97"
+ integrity sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==
-"@img/sharp-libvips-linux-arm64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz#b1b288b36864b3bce545ad91fa6dadcf1a4ad318"
- integrity sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==
+"@img/sharp-libvips-darwin-x64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz#1461e6fb310a869b3c13504589b8dd5c06624da8"
+ integrity sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==
-"@img/sharp-libvips-linux-arm@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz#b9260dd1ebe6f9e3bdbcbdcac9d2ac125f35852d"
- integrity sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==
+"@img/sharp-libvips-linux-arm64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz#cb938a3971b9a36329bc99427f1e5b72e266ba2e"
+ integrity sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==
-"@img/sharp-libvips-linux-ppc64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz#4b83ecf2a829057222b38848c7b022e7b4d07aa7"
- integrity sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==
+"@img/sharp-libvips-linux-arm@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz#71032941b9fcbf8ebc3c1b62949927b844cbad62"
+ integrity sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==
-"@img/sharp-libvips-linux-riscv64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz#880b4678009e5a2080af192332b00b0aaf8a48de"
- integrity sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==
+"@img/sharp-libvips-linux-ppc64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz#8246d2dec15234fd1cc54cc55dcba1aebc26c414"
+ integrity sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==
-"@img/sharp-libvips-linux-s390x@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz#74f343c8e10fad821b38f75ced30488939dc59ec"
- integrity sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==
+"@img/sharp-libvips-linux-riscv64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz#59ff663c2aa6b418857357cd77ca4ccaece95876"
+ integrity sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==
-"@img/sharp-libvips-linux-x64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz#df4183e8bd8410f7d61b66859a35edeab0a531ce"
- integrity sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==
+"@img/sharp-libvips-linux-s390x@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz#bc17451f80d9f31663b3e906149f159a0ecb1ca8"
+ integrity sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==
-"@img/sharp-libvips-linuxmusl-arm64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz#c8d6b48211df67137541007ee8d1b7b1f8ca8e06"
- integrity sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==
+"@img/sharp-libvips-linux-x64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz#c7d1f83bc1cfe222cd9dc927f3c5137aa9791e76"
+ integrity sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==
-"@img/sharp-libvips-linuxmusl-x64@1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz#be11c75bee5b080cbee31a153a8779448f919f75"
- integrity sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==
+"@img/sharp-libvips-linuxmusl-arm64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz#303dfe2a8e6d1fd279ead559f4d2ccff2545e2a2"
+ integrity sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==
-"@img/sharp-linux-arm64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz#7aa7764ef9c001f15e610546d42fce56911790cc"
- integrity sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==
+"@img/sharp-libvips-linuxmusl-x64@1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz#3750f70ad46ad87e4a08ee8d372ab9a7e17e2b6c"
+ integrity sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==
+
+"@img/sharp-linux-arm64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz#c2f53bf913fa1b46762b192c527a2b3647a211a8"
+ integrity sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==
optionalDependencies:
- "@img/sharp-libvips-linux-arm64" "1.2.4"
+ "@img/sharp-libvips-linux-arm64" "1.3.3"
-"@img/sharp-linux-arm@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz#5fb0c3695dd12522d39c3ff7a6bc816461780a0d"
- integrity sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==
+"@img/sharp-linux-arm@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz#de8da0da2ee552267cae771597332a863378e43b"
+ integrity sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==
optionalDependencies:
- "@img/sharp-libvips-linux-arm" "1.2.4"
+ "@img/sharp-libvips-linux-arm" "1.3.3"
-"@img/sharp-linux-ppc64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz#9c213a81520a20caf66978f3d4c07456ff2e0813"
- integrity sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==
+"@img/sharp-linux-ppc64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz#c40d7c5f8ce216c35224c58edcef8e6445935256"
+ integrity sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==
optionalDependencies:
- "@img/sharp-libvips-linux-ppc64" "1.2.4"
+ "@img/sharp-libvips-linux-ppc64" "1.3.3"
-"@img/sharp-linux-riscv64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz#cdd28182774eadbe04f62675a16aabbccb833f60"
- integrity sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==
+"@img/sharp-linux-riscv64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz#032ca206e713b1179efe0e18d525188c67277730"
+ integrity sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==
optionalDependencies:
- "@img/sharp-libvips-linux-riscv64" "1.2.4"
+ "@img/sharp-libvips-linux-riscv64" "1.3.3"
-"@img/sharp-linux-s390x@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz#93eac601b9f329bb27917e0e19098c722d630df7"
- integrity sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==
+"@img/sharp-linux-s390x@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz#19dac7501a15c8748bc7a11219fca391e424b6d7"
+ integrity sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==
optionalDependencies:
- "@img/sharp-libvips-linux-s390x" "1.2.4"
+ "@img/sharp-libvips-linux-s390x" "1.3.3"
-"@img/sharp-linux-x64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz#55abc7cd754ffca5002b6c2b719abdfc846819a8"
- integrity sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==
+"@img/sharp-linux-x64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz#7d1d414d4a538e0704ba6b76ce6547e60f6211ce"
+ integrity sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==
optionalDependencies:
- "@img/sharp-libvips-linux-x64" "1.2.4"
+ "@img/sharp-libvips-linux-x64" "1.3.3"
-"@img/sharp-linuxmusl-arm64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz#d6515ee971bb62f73001a4829b9d865a11b77086"
- integrity sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==
+"@img/sharp-linuxmusl-arm64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz#9534c93807822f4282d079a322facc6db53d50f6"
+ integrity sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==
optionalDependencies:
- "@img/sharp-libvips-linuxmusl-arm64" "1.2.4"
+ "@img/sharp-libvips-linuxmusl-arm64" "1.3.3"
-"@img/sharp-linuxmusl-x64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz#d97978aec7c5212f999714f2f5b736457e12ee9f"
- integrity sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==
+"@img/sharp-linuxmusl-x64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz#f488e7a0291991bff643cef82b5afd3cfd70fcf2"
+ integrity sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==
optionalDependencies:
- "@img/sharp-libvips-linuxmusl-x64" "1.2.4"
+ "@img/sharp-libvips-linuxmusl-x64" "1.3.3"
-"@img/sharp-wasm32@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz#2f15803aa626f8c59dd7c9d0bbc766f1ab52cfa0"
- integrity sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==
+"@img/sharp-wasm32@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz#81f71f3fc0d8447dc3af6cb378e24e758ff54225"
+ integrity sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==
dependencies:
- "@emnapi/runtime" "^1.7.0"
+ "@emnapi/runtime" "^1.11.3"
-"@img/sharp-win32-arm64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz#3706e9e3ac35fddfc1c87f94e849f1b75307ce0a"
- integrity sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==
+"@img/sharp-webcontainers-wasm32@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz#77d2e8892d3a3825f0dc95ab02ceb613cb213286"
+ integrity sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==
+ dependencies:
+ "@img/sharp-wasm32" "0.35.4"
-"@img/sharp-win32-ia32@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz#0b71166599b049e032f085fb9263e02f4e4788de"
- integrity sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==
+"@img/sharp-win32-arm64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz#4101b44e3fb97d6f1a73c2a9c6142d491d1aa831"
+ integrity sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==
-"@img/sharp-win32-x64@0.34.5":
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz#a81ffb00e69267cd0a1d626eaedb8a8430b2b2f8"
- integrity sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==
+"@img/sharp-win32-ia32@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz#8d4755bd26d5ff34fb89c7907bd89c080a5dc9f5"
+ integrity sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==
-"@isaacs/fs-minipass@^4.0.0":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
- integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==
+"@img/sharp-win32-x64@0.35.4":
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz#0b67bd0b1f01123a982afcc6ba0dc00b877b8a0a"
+ integrity sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==
+
+"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.13"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f"
+ integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
dependencies:
- minipass "^7.0.4"
+ "@jridgewell/sourcemap-codec" "^1.5.0"
+ "@jridgewell/trace-mapping" "^0.3.24"
-"@jridgewell/gen-mapping@^0.3.5":
- version "0.3.8"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
- integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
+"@jridgewell/remapping@^2.3.5":
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1"
+ integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==
dependencies:
- "@jridgewell/set-array" "^1.2.1"
- "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
"@jridgewell/resolve-uri@^3.1.0":
@@ -1832,20 +1290,15 @@
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
-"@jridgewell/set-array@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
- integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
-
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
- integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
+"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz#f4c663e862f06dc98ca4d453862c46902789a18d"
+ integrity sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==
-"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
- version "0.3.25"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
- integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28":
+ version "0.3.31"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0"
+ integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==
dependencies:
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
@@ -2082,9 +1535,9 @@
lexical "0.41.0"
"@monaco-editor/loader@^1.5.0":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.5.0.tgz#dcdbc7fe7e905690fb449bed1c251769f325c55d"
- integrity sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.7.0.tgz#967aaa4601b19e913627688dfe8159d57549e793"
+ integrity sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==
dependencies:
state-local "^1.0.6"
@@ -2095,71 +1548,70 @@
dependencies:
"@monaco-editor/loader" "^1.5.0"
-"@napi-rs/wasm-runtime@^0.2.10":
- version "0.2.10"
- resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.10.tgz#f3b7109419c6670000b2401e0c778b98afc25f84"
- integrity sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==
+"@napi-rs/wasm-runtime@^1.1.4":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz#97e3d45d7424dc5da1d4e32f3bf3b292f6c1b44c"
+ integrity sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==
dependencies:
- "@emnapi/core" "^1.4.3"
- "@emnapi/runtime" "^1.4.3"
- "@tybys/wasm-util" "^0.9.0"
+ "@tybys/wasm-util" "^0.10.3"
-"@next/env@15.5.9":
- version "15.5.9"
- resolved "https://registry.yarnpkg.com/@next/env/-/env-15.5.9.tgz#53c2c34dc17cd87b61f70c6cc211e303123b2ab8"
- integrity sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==
+"@next/env@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/env/-/env-16.3.4.tgz#ff6ef5e91bd8820b1cf4a670f9c5a9b86a3cf47b"
+ integrity sha512-cjWZnUUa6jZq2kFaNe/ZyJdZonOZ/QoN0Zka2nz/FLOrfx14pQuM9c5RaSVkWMqgdt4ksgPAMWPyHSs/CyV48Q==
"@next/env@^15.1.5":
- version "15.3.3"
- resolved "https://registry.yarnpkg.com/@next/env/-/env-15.3.3.tgz#8c5548756df93efff1bf4bb4e9e430a763978155"
- integrity sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==
+ version "15.5.25"
+ resolved "https://registry.yarnpkg.com/@next/env/-/env-15.5.25.tgz#bf7e5afd0f186a7d3d77e5d1ac8bb4a68b348220"
+ integrity sha512-42h1lLr07vl4gawALP1hsgRZjHB1xYa58JfUfHwr0f7jG/zhPakh5GHkADHXOC9ZxUvlQFOPIrp7s6qX4DezPQ==
-"@next/eslint-plugin-next@15.2.1":
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.1.tgz#06b63dde98345d86b060d77d0cac29dd0d6b61fd"
- integrity sha512-6ppeToFd02z38SllzWxayLxjjNfzvc7Wm07gQOKSLjyASvKcXjNStZrLXMHuaWkhjqxe+cnhb2uzfWXm1VEj/Q==
+"@next/eslint-plugin-next@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-16.3.4.tgz#162f43b2b58be99d8840521c9cbb8f457a103cab"
+ integrity sha512-szW9y2Aumu4z88YXfTzcFsgUAg2k64uzbtcO5L9f1AKS4w/GUKJcbFllRflROVyNPgJtGOnvNxiyp3v6b+prIA==
dependencies:
+ "@eslint-community/eslint-utils" "4.9.1"
fast-glob "3.3.1"
-"@next/swc-darwin-arm64@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.7.tgz#f0c9ccfec2cd87cbd4b241ce4c779a7017aed958"
- integrity sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==
-
-"@next/swc-darwin-x64@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.7.tgz#18009e9fcffc5c0687cc9db24182ddeac56280d9"
- integrity sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==
-
-"@next/swc-linux-arm64-gnu@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.7.tgz#fe7c7e08264cf522d4e524299f6d3e63d68d579a"
- integrity sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==
-
-"@next/swc-linux-arm64-musl@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.7.tgz#94228fe293475ec34a5a54284e1056876f43a3cf"
- integrity sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==
-
-"@next/swc-linux-x64-gnu@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.7.tgz#078c71201dfe7fcfb8fa6dc92aae6c94bc011cdc"
- integrity sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==
-
-"@next/swc-linux-x64-musl@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.7.tgz#72947f5357f9226292353e0bb775643da3c7a182"
- integrity sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==
-
-"@next/swc-win32-arm64-msvc@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.7.tgz#397b912cd51c6a80e32b9c0507ecd82514353941"
- integrity sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==
-
-"@next/swc-win32-x64-msvc@15.5.7":
- version "15.5.7"
- resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.7.tgz#e02b543d9dc6c1631d4ac239cb1177245dfedfe4"
- integrity sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==
+"@next/swc-darwin-arm64@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.3.4.tgz#3fa8eed224c735748955a6ca6ee8a75184be3b73"
+ integrity sha512-iBr3I5LZNk5/bgl5//iTgD2tcym14MX0Xo7fD//u9dYAEgGzza1y9oywluPtf74YnOswVdH1908aK9xVz7zQTw==
+
+"@next/swc-darwin-x64@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-16.3.4.tgz#e3e429ecc7778b3400bd0c3adab60b7013580b19"
+ integrity sha512-2dpiSyl2Jw/NrBPaU2MAKGSa+2MR82pJIn4Sm5Rjr+gxAeuh0z158Su3Z2O8zn7UNNq+ej4bToed6RcRN/Lydg==
+
+"@next/swc-linux-arm64-gnu@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.3.4.tgz#6aff57ebe5c21ae35ecd06e57563aa9287ce1971"
+ integrity sha512-+t+U8HZT+fApePCS5h89CSH3datz29MkzyfCn+6fpsZBG/oiEOhINcb9rtkv6sdpToLGFn2e6146NzaKCXkqrA==
+
+"@next/swc-linux-arm64-musl@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.3.4.tgz#a87f36aaae2bc3e07f21e7c64e6cb489cceef9b4"
+ integrity sha512-mx03GNs1ocQA5JQ4FxDMmIsNkdrZh8cuezKCrId28e5/gIPU/l7Kcy2+vmCCzdjnnmXJy+iOAu+7K0QppO6Urg==
+
+"@next/swc-linux-x64-gnu@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.3.4.tgz#26aabf39d90da08ffc83f149ed83d5c08a9abf9a"
+ integrity sha512-YIhGY6fSMfha52bnVxnzc9zaVBzJg+cqQTOD8tXIBSx4fuv0pVMxQTE0PaS59YhnMOiYiG09IMwxJAf/CFm/Dw==
+
+"@next/swc-linux-x64-musl@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.3.4.tgz#8a505df79d78bc93ddc60e2c08b27b7680ffb7cb"
+ integrity sha512-+eaaX6axpDb0yF1GCpiERe6njplvdC+nks/fKfcHu3XPGRrald8P3/X7yv7QLdjA51knnxwl9pxdIJsg+w1L+Q==
+
+"@next/swc-win32-arm64-msvc@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.3.4.tgz#6cc0f3334524a80c4e16692b6e1419ca810391b6"
+ integrity sha512-0jcXW7Xs/uzICrmgV3MhDYDeRy++1CqnpDIerlPIqYO4bhzB4WNbX/aRnQclustsAyTkFKB0z6rbcjmNg5tR8A==
+
+"@next/swc-win32-x64-msvc@16.3.4":
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.3.4.tgz#b7b273c56eb723be43b48938e8eb823355ea8852"
+ integrity sha512-vvBzwu1pYQCp92maZCFCIw/XgOTMR5tur9GjakwIo2cmwRTMKajRZZDS9+e4KsUZWKu1E007WUeAFXRRjZeuzw==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@@ -2187,89 +1639,89 @@
resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
-"@payloadcms/db-postgres@^3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/db-postgres/-/db-postgres-3.80.0.tgz#e9a6ff8b844bf31ec4a13c1357cc4de1c69c3207"
- integrity sha512-YeFmnELmnvhSMdDq7kxCxgI6g8JEn+YrFbhLMXAk4Ze7MRDdZz/cB6OSp30gb9uqiDoO6hLbyqnJdhvmeodZHg==
+"@payloadcms/db-postgres@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/db-postgres/-/db-postgres-3.88.0.tgz#1ed8689f91f49e6e18099330f1613c90d417d278"
+ integrity sha512-uP2b3yH8MulguWSH7j8vJaFX3ols4fVKPtsvZ49XQvDsafBAAUZjc1aCldo1ozoVfhC46tx4pv0ovtHQc8zdcA==
dependencies:
- "@payloadcms/drizzle" "3.80.0"
- "@types/pg" "8.10.2"
+ "@payloadcms/drizzle" "3.88.0"
+ "@types/pg" "8.20.0"
console-table-printer "2.12.1"
drizzle-kit "0.31.7"
- drizzle-orm "0.44.7"
- pg "8.16.3"
+ drizzle-orm "0.45.2"
+ pg "8.20.0"
prompts "2.4.2"
to-snake-case "1.0.0"
- uuid "10.0.0"
+ uuid "13.0.2"
-"@payloadcms/drizzle@3.80.0", "@payloadcms/drizzle@^3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/drizzle/-/drizzle-3.80.0.tgz#ae846c9fe8c510bc9d9b8a3e1618d5df46a174d0"
- integrity sha512-q47D8I+dZTaI9fMCMEQtpKbmDUDEp8MIMxg+0O0wxy8CUsxX3sHC3ChgcuHAztqDeBguMaag7OWuWmDoArhfBw==
+"@payloadcms/drizzle@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/drizzle/-/drizzle-3.88.0.tgz#edda56125fd3eb24dc24acbc310d2bc169a8fb5a"
+ integrity sha512-qtPVSLjAFnQl1GwaQPhmnYTwCCWgTnRm4ps5yJxmN3RPdLF6S77gvqZMnC4HTeH7YADQJW3nFgQCVYExxWE6hA==
dependencies:
console-table-printer "2.12.1"
dequal "2.0.3"
- drizzle-orm "0.44.7"
+ drizzle-orm "0.45.2"
prompts "2.4.2"
to-snake-case "1.0.0"
- uuid "9.0.0"
+ uuid "13.0.2"
-"@payloadcms/email-nodemailer@3.80.0", "@payloadcms/email-nodemailer@^3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/email-nodemailer/-/email-nodemailer-3.80.0.tgz#e2d8fac05ba0d7e34cda45d5bcb7b05a2ba0beb2"
- integrity sha512-+XXMkzUgPKErsguJIfLlkd75FnO8k1TcqK0XNCN51+uwTYZFmKc08wiL1oU+wxS52qa1HFhh0ObJ5ZJH4c04Ew==
+"@payloadcms/email-nodemailer@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/email-nodemailer/-/email-nodemailer-3.88.0.tgz#99fff28ef3db057f1af97a227123146ac5518a87"
+ integrity sha512-cW8SUYpdVXdZBpa539smI5P2lYdTB3944rfAipv/TVG9VND0u/DDwtRuqBqGf/0eh5OajqWC0X9igMXU67dhbg==
dependencies:
- nodemailer "7.0.12"
+ nodemailer "^9.0.1"
-"@payloadcms/graphql@3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/graphql/-/graphql-3.80.0.tgz#19fe95065aa04eee553c45ba328eba6b6a1d2693"
- integrity sha512-AlJcFI/R+4SRPWW51ny2BsIj+4j6qVxyn0W5Kz1f5MMfheuD844tc92O+IwmUsrRsb0l6zv3zI3G3M6V2WdFFQ==
+"@payloadcms/graphql@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/graphql/-/graphql-3.88.0.tgz#5e599c9f071a9a8f5578abc3209cb97a3fcdbac0"
+ integrity sha512-ync+bPFl0UacwBs1wVQkPlaSWWQJc4LjGG9OuRHEW7wYW3aeVQ+H2zfdFL6/cVJGP3zOq+XIlvYYw8G86Ki+Vw==
dependencies:
graphql-scalars "1.22.2"
pluralize "8.0.0"
ts-essentials "10.0.3"
- tsx "4.21.0"
+ tsx "4.22.4"
-"@payloadcms/next@^3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/next/-/next-3.80.0.tgz#fd8d831cf5fedfd36516df997c4f21ffaa5cbddb"
- integrity sha512-JL7Ydi/rm7hoLDzMO6H1mBQdvxJ5Dww26aomMOYMziUr9YzU6w+W5EnJgN3x2vH0myvDr9VUfNTTBNK616G5LQ==
+"@payloadcms/next@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/next/-/next-3.88.0.tgz#e20be64421f47a653c4d3b87acab6091971d83e1"
+ integrity sha512-3f2YOGSmtTp85YnlJm9FusRgshKJbiLI8uXs8iQNMwU7RZJnLCURG8iv/6sjKHO0owIfw3vIL5qgxdtIBuQwpA==
dependencies:
"@dnd-kit/core" "6.3.1"
"@dnd-kit/modifiers" "9.0.0"
"@dnd-kit/sortable" "10.0.0"
- "@payloadcms/graphql" "3.80.0"
- "@payloadcms/translations" "3.80.0"
- "@payloadcms/ui" "3.80.0"
+ "@payloadcms/graphql" "3.88.0"
+ "@payloadcms/translations" "3.88.0"
+ "@payloadcms/ui" "3.88.0"
busboy "^1.6.0"
dequal "2.0.3"
- file-type "19.3.0"
+ file-type "21.3.4"
graphql-http "^1.22.0"
graphql-playground-html "1.6.30"
http-status "2.1.0"
path-to-regexp "6.3.0"
- qs-esm "7.0.2"
+ qs-esm "8.0.1"
sass "1.77.4"
- uuid "10.0.0"
+ uuid "13.0.2"
-"@payloadcms/payload-cloud@^3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/payload-cloud/-/payload-cloud-3.80.0.tgz#31f2d2590dbc2fbd254332ef1d2a2118a2c70008"
- integrity sha512-NcsjcvbJ06dSh/fwEev3YKl4Q5NZvqFCLTMQRTNzksrjoGM1Bw/PR5YfD2Mi+nLEsgQq+2gqC4uBEC/NbhK1JA==
+"@payloadcms/payload-cloud@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/payload-cloud/-/payload-cloud-3.88.0.tgz#376f4fa070a8fc8d57cd99ecd25b7e89e9e0412a"
+ integrity sha512-ijGuUkJP6wtVK5ur5/HLZOr3YrtFqHLcOhAfBAvVhgS3rkopbk+l5SIIiszGeaysAvzxAJX/NKiSRkeGhL7Qqw==
dependencies:
"@aws-sdk/client-cognito-identity" "^3.614.0"
"@aws-sdk/client-s3" "^3.614.0"
"@aws-sdk/credential-providers" "^3.614.0"
"@aws-sdk/lib-storage" "^3.614.0"
- "@payloadcms/email-nodemailer" "3.80.0"
+ "@payloadcms/email-nodemailer" "3.88.0"
amazon-cognito-identity-js "^6.1.2"
- nodemailer "7.0.12"
+ nodemailer "^9.0.1"
-"@payloadcms/richtext-lexical@^3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/richtext-lexical/-/richtext-lexical-3.80.0.tgz#decd7f5c97b756cf4c0588a872653e451937ed5f"
- integrity sha512-P7F7VoCS4dZFxdausUdxc79t6tlMpeusf2QwdtyBnB4FwuC8sAc2TW9dxsP+N/gvAnEuPR6rAd/kUma1kQoJug==
+"@payloadcms/richtext-lexical@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/richtext-lexical/-/richtext-lexical-3.88.0.tgz#95259dbe32efd0692b34a331fadc36006192b5cc"
+ integrity sha512-lY8oIUiggykWKB3ljMfSidxBtA8ahMq0Qqp28OuvaCNIDp0HTMIPxcHvFOQZngMqtQHhpautD6vcQR0Q9CEHHQ==
dependencies:
"@lexical/clipboard" "0.41.0"
"@lexical/headless" "0.41.0"
@@ -2282,9 +1734,8 @@
"@lexical/selection" "0.41.0"
"@lexical/table" "0.41.0"
"@lexical/utils" "0.41.0"
- "@payloadcms/translations" "3.80.0"
- "@payloadcms/ui" "3.80.0"
- "@types/uuid" "10.0.0"
+ "@payloadcms/translations" "3.88.0"
+ "@payloadcms/ui" "3.88.0"
acorn "8.16.0"
bson-objectid "2.0.4"
csstype "3.1.3"
@@ -2295,22 +1746,22 @@
mdast-util-from-markdown "2.0.2"
mdast-util-mdx-jsx "3.1.3"
micromark-extension-mdx-jsx "3.0.1"
- qs-esm "7.0.2"
+ qs-esm "8.0.1"
react-error-boundary "4.1.2"
ts-essentials "10.0.3"
- uuid "10.0.0"
+ uuid "13.0.2"
-"@payloadcms/translations@3.80.0", "@payloadcms/translations@^3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/translations/-/translations-3.80.0.tgz#3e6d57710bac5a783bf744fecb702741d8127f02"
- integrity sha512-7Uwj2QavfKf2IqAN/z4W03pHyvZJ/N/6eCSb49JrSzwMkz22+MW8Wypxfm3iCbfocEOxgEpfktljh7vy5zcnCg==
+"@payloadcms/translations@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/translations/-/translations-3.88.0.tgz#1a0cc4b861f7ae2bb33b5f5551586b9eeaa98bd3"
+ integrity sha512-AZVQjjW5pKxO+K9ODeh6yw6/EfXK1hxGPw55KzzDC5srO3hjNskgyWtkauKvbz+S0+xFspANbRc4OD/Rg/74WA==
dependencies:
date-fns "4.1.0"
-"@payloadcms/ui@3.80.0":
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/@payloadcms/ui/-/ui-3.80.0.tgz#28c0fb7b95337200a7236972a27c1cff26a30ed8"
- integrity sha512-LLNWDwHfLpYfWngyjl/O4jWgpGBhOrs7EmBZ41ISCT/NDZNFRRe3VkGw8M2nngK8gpqtFGL/eyh8sG8Z//A9HA==
+"@payloadcms/ui@3.88.0":
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/@payloadcms/ui/-/ui-3.88.0.tgz#9efbdc0c22af0221b340325ff4861ea34515e859"
+ integrity sha512-iwQhHPDn4Oj2bPg1UV467BoxfUNo1rUmD8jMZaw2Vtt/nmxAPl3W3CWN/CsOX/yITuPuGHJxznOg4PZNMF3gEg==
dependencies:
"@date-fns/tz" "1.2.0"
"@dnd-kit/core" "6.3.1"
@@ -2320,13 +1771,13 @@
"@faceless-ui/scroll-info" "2.0.0"
"@faceless-ui/window-info" "3.0.1"
"@monaco-editor/react" "4.7.0"
- "@payloadcms/translations" "3.80.0"
+ "@payloadcms/translations" "3.88.0"
bson-objectid "2.0.4"
date-fns "4.1.0"
dequal "2.0.3"
md5 "2.3.0"
object-to-formdata "4.5.1"
- qs-esm "7.0.2"
+ qs-esm "8.0.1"
react-datepicker "7.6.0"
react-image-crop "10.1.8"
react-select "5.9.0"
@@ -2334,7 +1785,21 @@
sonner "^1.7.2"
ts-essentials "10.0.3"
use-context-selector "2.0.0"
- uuid "10.0.0"
+ uuid "13.0.2"
+
+"@pdf-lib/standard-fonts@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz#8ba691c4421f71662ed07c9a0294b44528af2d7f"
+ integrity sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==
+ dependencies:
+ pako "^1.0.6"
+
+"@pdf-lib/upng@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@pdf-lib/upng/-/upng-1.0.1.tgz#7dc9c636271aca007a9df4deaf2dd7e7960280cb"
+ integrity sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==
+ dependencies:
+ pako "^1.0.10"
"@pinojs/redact@^0.4.0":
version "0.4.0"
@@ -2342,662 +1807,218 @@
integrity sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==
"@preact/signals-core@^1.11.0":
- version "1.14.0"
- resolved "https://registry.yarnpkg.com/@preact/signals-core/-/signals-core-1.14.0.tgz#3a13742301a94161790e84d0f2cbf9b5455593f7"
- integrity sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==
+ version "1.14.4"
+ resolved "https://registry.yarnpkg.com/@preact/signals-core/-/signals-core-1.14.4.tgz#d3588cbda237fcb3c8a8e478f6cc370653609eb7"
+ integrity sha512-HNB6HYeYKhQbJ1aKl+YRjrS4+QWHLKX6qKoUsfS/m0vqzsVaEBiZiaKbG/e+NKk2ch5ALQr/ihWaMHxiCuuWHA==
-"@radix-ui/react-compose-refs@1.1.2":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz#a2c4c47af6337048ee78ff6dc0d090b390d2bb30"
- integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==
+"@radix-ui/react-compose-refs@1.1.5":
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz#883e642c5ec0ba393dd1bf586e7e772985770d87"
+ integrity sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==
"@radix-ui/react-slot@^1.2.3":
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz#502d6e354fc847d4169c3bc5f189de777f68cfe1"
- integrity sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.3.3.tgz#ccc8c8936fff12f7e324d6917fe5167357097676"
+ integrity sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==
dependencies:
- "@radix-ui/react-compose-refs" "1.1.2"
+ "@radix-ui/react-compose-refs" "1.1.5"
"@rtsao/scc@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
-"@rushstack/eslint-patch@^1.10.3":
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz#75dce8e972f90bba488e2b0cc677fb233aa357ab"
- integrity sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==
-
-"@smithy/abort-controller@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.0.4.tgz#ab991d521fc78b5c7f24907fcd6803c0f2da51d9"
- integrity sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/chunked-blob-reader-native@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz#33cbba6deb8a3c516f98444f65061784f7cd7f8c"
- integrity sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==
- dependencies:
- "@smithy/util-base64" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/chunked-blob-reader@^5.0.0":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz#3f6ea5ff4e2b2eacf74cefd737aa0ba869b2e0f6"
- integrity sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==
+"@smithy/core@^3.33.2", "@smithy/core@^3.33.3":
+ version "3.33.3"
+ resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.33.3.tgz#c1e801fe17160bcbf6c714cf16e832057e6bf79e"
+ integrity sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg==
dependencies:
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@smithy/config-resolver@^4.1.4":
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.1.4.tgz#05d8eab8bb8eb73bec90c222fc19ac5608b1384e"
- integrity sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==
+"@smithy/credential-provider-imds@^4.4.16":
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.5.2.tgz#da3ea9636b5566b36b0761382d841a6d8fdde14f"
+ integrity sha512-A9uSdn72ozbRUSit0eib0TW7nXuNPlaeM0zcGkJ+nE6tFcSDbnmtwoxbTCFBukVQcszDAyvsd7+rTduPTXpygg==
dependencies:
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/types" "^4.3.1"
- "@smithy/util-config-provider" "^4.0.0"
- "@smithy/util-middleware" "^4.0.4"
- tslib "^2.6.2"
-
-"@smithy/core@^3.5.1":
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.5.1.tgz#12f68b4605b8b374020723989d23464eb55cdd38"
- integrity sha512-xSw7bZEFKwOKrm/iv8e2BLt2ur98YZdrRD6nII8ditQeUsY2Q1JmIQ0rpILOhaLKYxxG2ivnoOpokzr9qLyDWA==
- dependencies:
- "@smithy/middleware-serde" "^4.0.8"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- "@smithy/util-base64" "^4.0.0"
- "@smithy/util-body-length-browser" "^4.0.0"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-stream" "^4.2.2"
- "@smithy/util-utf8" "^4.0.0"
+ "@smithy/core" "^3.33.2"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@smithy/credential-provider-imds@^4.0.6":
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz#4cfd79a619cdbc9a75fcdc51a1193685f6a8944e"
- integrity sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==
+"@smithy/fetch-http-handler@^5.7.2":
+ version "5.8.0"
+ resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.8.0.tgz#349464e31682d739a74efa42362756be49eb2883"
+ integrity sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA==
dependencies:
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/types" "^4.3.1"
- "@smithy/url-parser" "^4.0.4"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.18.0"
tslib "^2.6.2"
-"@smithy/eventstream-codec@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz#35abc26d6829cc61a0d14950857ccc5320bf92d2"
- integrity sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==
- dependencies:
- "@aws-crypto/crc32" "5.2.0"
- "@smithy/types" "^4.3.1"
- "@smithy/util-hex-encoding" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/eventstream-serde-browser@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.4.tgz#0c57cf0b66862106100a796751003733ce3f5273"
- integrity sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==
- dependencies:
- "@smithy/eventstream-serde-universal" "^4.0.4"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/eventstream-serde-config-resolver@^4.1.2":
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.2.tgz#4d41c1ecad1a9b1c694f32865a2f0d4b5bc0162d"
- integrity sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/eventstream-serde-node@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.4.tgz#0fbd0ac288f02bf485eb307a14254ea8d8767746"
- integrity sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==
- dependencies:
- "@smithy/eventstream-serde-universal" "^4.0.4"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/eventstream-serde-universal@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.4.tgz#48b2b416dc0f576917c36373efaa4012f7310ab0"
- integrity sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==
- dependencies:
- "@smithy/eventstream-codec" "^4.0.4"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/fetch-http-handler@^5.0.4":
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz#c68601b4676787e049b5d464d5f4b825dbb44013"
- integrity sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==
- dependencies:
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/querystring-builder" "^4.0.4"
- "@smithy/types" "^4.3.1"
- "@smithy/util-base64" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/hash-blob-browser@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.4.tgz#34adda037d324123d77032b3ad59c16e6d4949bb"
- integrity sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==
- dependencies:
- "@smithy/chunked-blob-reader" "^5.0.0"
- "@smithy/chunked-blob-reader-native" "^4.0.0"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/hash-node@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.0.4.tgz#f867cfe6b702ed8893aacd3e097f8ca8ecba579e"
- integrity sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==
- dependencies:
- "@smithy/types" "^4.3.1"
- "@smithy/util-buffer-from" "^4.0.0"
- "@smithy/util-utf8" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/hash-stream-node@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.0.4.tgz#02c023590e09529e940e0a0243d32c02c4e6c645"
- integrity sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==
- dependencies:
- "@smithy/types" "^4.3.1"
- "@smithy/util-utf8" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/invalid-dependency@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz#8c2c539b2f22e857b4652bd2427a3d7a8befd610"
- integrity sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/is-array-buffer@^2.2.0":
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111"
- integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/is-array-buffer@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz#55a939029321fec462bcc574890075cd63e94206"
- integrity sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/md5-js@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.0.4.tgz#d7cb70b08c2a4d809d5cb905feab74fc9726a2f2"
- integrity sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==
- dependencies:
- "@smithy/types" "^4.3.1"
- "@smithy/util-utf8" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/middleware-content-length@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz#fad1f125779daf8d5f261dae6dbebba0f60c234b"
- integrity sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==
- dependencies:
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/middleware-endpoint@^4.1.9":
- version "4.1.9"
- resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.9.tgz#217020b4c29605e73b953da47202aa1f30c28fdf"
- integrity sha512-AjDgX4UjORLltD/LZCBQTwjQqEfyrx/GeDTHcYLzIgf87pIT70tMWnN87NQpJru1K4ITirY2htSOxNECZJCBOg==
- dependencies:
- "@smithy/core" "^3.5.1"
- "@smithy/middleware-serde" "^4.0.8"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/shared-ini-file-loader" "^4.0.4"
- "@smithy/types" "^4.3.1"
- "@smithy/url-parser" "^4.0.4"
- "@smithy/util-middleware" "^4.0.4"
- tslib "^2.6.2"
-
-"@smithy/middleware-retry@^4.1.10":
- version "4.1.10"
- resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.1.10.tgz#f3b8442b29c8bbd5ec2fdf1b033e443ff7b3bdbc"
- integrity sha512-RyhcA3sZIIvAo6r48b2Nx2qfg0OnyohlaV0fw415xrQyx5HQ2bvHl9vs/WBiDXIP49mCfws5wX4308c9Pi/isw==
- dependencies:
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/service-error-classification" "^4.0.5"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-retry" "^4.0.5"
- tslib "^2.6.2"
- uuid "^9.0.1"
-
-"@smithy/middleware-serde@^4.0.8":
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz#3704c8cc46acd0a7f910a78ee1d2f23ce928701f"
- integrity sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==
- dependencies:
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/middleware-stack@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz#58e0c6a0d7678c6ad4d6af8dd9a00f749ffac7c5"
- integrity sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/node-config-provider@^4.1.3":
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz#6626fe26c6fe7b0df34f71cb72764ccba414a815"
- integrity sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==
- dependencies:
- "@smithy/property-provider" "^4.0.4"
- "@smithy/shared-ini-file-loader" "^4.0.4"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/node-http-handler@^4.0.6":
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz#a022da499ba3af4b6b4c815104fde973c0eccc40"
- integrity sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==
- dependencies:
- "@smithy/abort-controller" "^4.0.4"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/querystring-builder" "^4.0.4"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/property-provider@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.0.4.tgz#303a8fd99665fff61eeb6ec3922eee53838962c5"
- integrity sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/protocol-http@^5.1.2":
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.1.2.tgz#8094860c2407f250b80c95899e0385112d6eb98b"
- integrity sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/querystring-builder@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz#f7546efd59d457b3d2525a330c6137e5f907864c"
- integrity sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==
- dependencies:
- "@smithy/types" "^4.3.1"
- "@smithy/util-uri-escape" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/querystring-parser@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz#307ab95ee5f1a142ab46c2eddebeae68cb2f703d"
- integrity sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/service-error-classification@^4.0.5":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.0.5.tgz#cd912cdd0510de9369db6a4d34dc36f36de54a59"
- integrity sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==
- dependencies:
- "@smithy/types" "^4.3.1"
-
-"@smithy/shared-ini-file-loader@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz#33c63468b95cfd5e7d642c8131d7acc034025e00"
- integrity sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/signature-v4@^5.1.2":
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.1.2.tgz#5afd9d428bd26bb660bee8075b6e89fe93600c22"
- integrity sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==
- dependencies:
- "@smithy/is-array-buffer" "^4.0.0"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- "@smithy/util-hex-encoding" "^4.0.0"
- "@smithy/util-middleware" "^4.0.4"
- "@smithy/util-uri-escape" "^4.0.0"
- "@smithy/util-utf8" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/smithy-client@^4.4.1":
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.4.1.tgz#4725d5339393f3dae37f3934a6d79b9934fbf496"
- integrity sha512-XPbcHRfd0iwx8dY5XCBCGyI7uweMW0oezYezxXcG8ANgvZ5YPuC6Ylh+n0bTHpdU3SCMZOnhzgVklYz+p3fIhw==
- dependencies:
- "@smithy/core" "^3.5.1"
- "@smithy/middleware-endpoint" "^4.1.9"
- "@smithy/middleware-stack" "^4.0.4"
- "@smithy/protocol-http" "^5.1.2"
- "@smithy/types" "^4.3.1"
- "@smithy/util-stream" "^4.2.2"
- tslib "^2.6.2"
-
-"@smithy/types@^4.3.1":
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.3.1.tgz#c11276ea16235d798f47a68aef9f44d3dbb70dd4"
- integrity sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/url-parser@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.0.4.tgz#049143f4c156356e177bd69242675db26fe4f4db"
- integrity sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==
- dependencies:
- "@smithy/querystring-parser" "^4.0.4"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/util-base64@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.0.0.tgz#8345f1b837e5f636e5f8470c4d1706ae0c6d0358"
- integrity sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==
- dependencies:
- "@smithy/util-buffer-from" "^4.0.0"
- "@smithy/util-utf8" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/util-body-length-browser@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz#965d19109a4b1e5fe7a43f813522cce718036ded"
- integrity sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/util-body-length-node@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz#3db245f6844a9b1e218e30c93305bfe2ffa473b3"
- integrity sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/util-buffer-from@^2.2.0":
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b"
- integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==
- dependencies:
- "@smithy/is-array-buffer" "^2.2.0"
- tslib "^2.6.2"
-
-"@smithy/util-buffer-from@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz#b23b7deb4f3923e84ef50c8b2c5863d0dbf6c0b9"
- integrity sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==
- dependencies:
- "@smithy/is-array-buffer" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/util-config-provider@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz#e0c7c8124c7fba0b696f78f0bd0ccb060997d45e"
- integrity sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/util-defaults-mode-browser@^4.0.17":
- version "4.0.17"
- resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.17.tgz#9389485ad47119b51e888ea1a4fdfa23c040c4a9"
- integrity sha512-HXq5181qnXmIwB7VrwqwP8rsJybHMoYuJnNoXy4PROs2pfSI4sWDMASF2i+7Lo+u64Y6xowhegcdxczowgJtZg==
- dependencies:
- "@smithy/property-provider" "^4.0.4"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- bowser "^2.11.0"
- tslib "^2.6.2"
-
-"@smithy/util-defaults-mode-node@^4.0.17":
- version "4.0.17"
- resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.17.tgz#5a5f12ad57e775b7fc227dd6975baa4f51a318f3"
- integrity sha512-RfU2A5LjFhEHw4Nwl1GZNitK4AUWu5jGtigAUDoQtfDUvYHpQxcuLw2QGAdKDtKRflIiHSZ8wXBDR36H9R2Ang==
- dependencies:
- "@smithy/config-resolver" "^4.1.4"
- "@smithy/credential-provider-imds" "^4.0.6"
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/property-provider" "^4.0.4"
- "@smithy/smithy-client" "^4.4.1"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/util-endpoints@^3.0.6":
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz#a24b0801a1b94c0de26ad83da206b9add68117f2"
- integrity sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==
- dependencies:
- "@smithy/node-config-provider" "^4.1.3"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/util-hex-encoding@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz#dd449a6452cffb37c5b1807ec2525bb4be551e8d"
- integrity sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/util-middleware@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.0.4.tgz#8f639de049082c687841ea5e69c6c36e12e31a3c"
- integrity sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==
- dependencies:
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/util-retry@^4.0.5":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.0.5.tgz#58eea5bb1869745dac28a3f81a5904f225ec1207"
- integrity sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==
- dependencies:
- "@smithy/service-error-classification" "^4.0.5"
- "@smithy/types" "^4.3.1"
- tslib "^2.6.2"
-
-"@smithy/util-stream@^4.2.2":
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.2.2.tgz#beeb1edf690db9b7d7983f46ca4fb66e22253608"
- integrity sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==
- dependencies:
- "@smithy/fetch-http-handler" "^5.0.4"
- "@smithy/node-http-handler" "^4.0.6"
- "@smithy/types" "^4.3.1"
- "@smithy/util-base64" "^4.0.0"
- "@smithy/util-buffer-from" "^4.0.0"
- "@smithy/util-hex-encoding" "^4.0.0"
- "@smithy/util-utf8" "^4.0.0"
- tslib "^2.6.2"
-
-"@smithy/util-uri-escape@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz#a96c160c76f3552458a44d8081fade519d214737"
- integrity sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==
- dependencies:
- tslib "^2.6.2"
-
-"@smithy/util-utf8@^2.0.0":
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5"
- integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==
+"@smithy/node-http-handler@^4.11.3":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.12.1.tgz#e4da9379d228517ba85845081e4e6758ca315c5d"
+ integrity sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==
dependencies:
- "@smithy/util-buffer-from" "^2.2.0"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.18.0"
tslib "^2.6.2"
-"@smithy/util-utf8@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.0.0.tgz#09ca2d9965e5849e72e347c130f2a29d5c0c863c"
- integrity sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==
+"@smithy/signature-v4@^5.6.12":
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.7.3.tgz#76603bf1ac9aa44e1d2f4f358b0cc0cf84961e46"
+ integrity sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow==
dependencies:
- "@smithy/util-buffer-from" "^4.0.0"
+ "@smithy/core" "^3.33.3"
+ "@smithy/types" "^4.17.2"
tslib "^2.6.2"
-"@smithy/util-waiter@^4.0.5":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.0.5.tgz#cc7c65c86f5f8330445e27f9cc47d42c53c69bb7"
- integrity sha512-4QvC49HTteI1gfemu0I1syWovJgPvGn7CVUoN9ZFkdvr/cCFkrEL7qNCdx/2eICqDWEGnnr68oMdSIPCLAriSQ==
+"@smithy/types@^4.17.2", "@smithy/types@^4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.18.0.tgz#f68aca5b5e39f1f9def3827224e4a1e43d233347"
+ integrity sha512-CgB6HHWer/vrKps24ulRIbpcpb7K4xAU7SkZ7YHzBPlwHsvsrCJFEXK421s+cJzX+ZrqtA/TuU5w1HzI7k9N8A==
dependencies:
- "@smithy/abort-controller" "^4.0.4"
- "@smithy/types" "^4.3.1"
tslib "^2.6.2"
-"@swc/helpers@0.5.15":
- version "0.5.15"
- resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7"
- integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
+"@swc/helpers@0.5.23":
+ version "0.5.23"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.23.tgz#19287d0d86d962b111376039a50c792902c9a86a"
+ integrity sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==
dependencies:
tslib "^2.8.0"
-"@tailwindcss/node@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.1.8.tgz#e29187abec6194ce1e9f072208c62116a79a129b"
- integrity sha512-OWwBsbC9BFAJelmnNcrKuf+bka2ZxCE2A4Ft53Tkg4uoiE67r/PMEYwCsourC26E+kmxfwE0hVzMdxqeW+xu7Q==
+"@tailwindcss/node@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.3.3.tgz#38ff04309ff036ea3589a7bad9069c44ec9d3883"
+ integrity sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==
dependencies:
- "@ampproject/remapping" "^2.3.0"
- enhanced-resolve "^5.18.1"
- jiti "^2.4.2"
- lightningcss "1.30.1"
- magic-string "^0.30.17"
+ "@jridgewell/remapping" "^2.3.5"
+ enhanced-resolve "^5.24.1"
+ jiti "^2.7.0"
+ lightningcss "1.32.0"
+ magic-string "^0.30.21"
source-map-js "^1.2.1"
- tailwindcss "4.1.8"
-
-"@tailwindcss/oxide-android-arm64@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.8.tgz#4cb4b464636fc7e3154a1bb7df38a828291b3e9a"
- integrity sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg==
-
-"@tailwindcss/oxide-darwin-arm64@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.8.tgz#b0b8c02745f76aea683c30818e249d62821864b8"
- integrity sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A==
-
-"@tailwindcss/oxide-darwin-x64@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.8.tgz#d0f3fa4c3bde21a772e29e31c9739d91db79de12"
- integrity sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw==
-
-"@tailwindcss/oxide-freebsd-x64@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.8.tgz#545c94c941007ed1aa2e449465501b70d59cb3da"
- integrity sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg==
-
-"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.8.tgz#e1bdbf63a179081669b8cd1c9523889774760eb9"
- integrity sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ==
-
-"@tailwindcss/oxide-linux-arm64-gnu@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.8.tgz#8d28093bbd43bdae771a2dcca720e926baa57093"
- integrity sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q==
-
-"@tailwindcss/oxide-linux-arm64-musl@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.8.tgz#cc6cece814d813885ead9cd8b9d55aeb3db56c97"
- integrity sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ==
-
-"@tailwindcss/oxide-linux-x64-gnu@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.8.tgz#4cac14fa71382574773fb7986d9f0681ad89e3de"
- integrity sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g==
-
-"@tailwindcss/oxide-linux-x64-musl@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.8.tgz#e085f1ccbc8f97625773a6a3afc2a6f88edf59da"
- integrity sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg==
-
-"@tailwindcss/oxide-wasm32-wasi@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.8.tgz#c5e19fffe67f25cabf12a357bba4e87128151ea0"
- integrity sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg==
- dependencies:
- "@emnapi/core" "^1.4.3"
- "@emnapi/runtime" "^1.4.3"
- "@emnapi/wasi-threads" "^1.0.2"
- "@napi-rs/wasm-runtime" "^0.2.10"
- "@tybys/wasm-util" "^0.9.0"
- tslib "^2.8.0"
-
-"@tailwindcss/oxide-win32-arm64-msvc@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.8.tgz#77521f23f91604c587736927fd2cb526667b7344"
- integrity sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA==
-
-"@tailwindcss/oxide-win32-x64-msvc@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.8.tgz#55c876ab35f8779d1dceec61483cd9834d7365ac"
- integrity sha512-fou+U20j+Jl0EHwK92spoWISON2OBnCazIc038Xj2TdweYV33ZRkS9nwqiUi2d/Wba5xg5UoHfvynnb/UB49cQ==
-
-"@tailwindcss/oxide@4.1.8":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.1.8.tgz#b7a3df10c6c47ac5a3ac9976ad334732c4870d16"
- integrity sha512-d7qvv9PsM5N3VNKhwVUhpK6r4h9wtLkJ6lz9ZY9aeZgrUWk1Z8VPyqyDT9MZlem7GTGseRQHkeB1j3tC7W1P+A==
- dependencies:
- detect-libc "^2.0.4"
- tar "^7.4.3"
+ tailwindcss "4.3.3"
+
+"@tailwindcss/oxide-android-arm64@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz#848f93034155daf7892185028dfb18143bfc7d07"
+ integrity sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==
+
+"@tailwindcss/oxide-darwin-arm64@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz#5c779e32c1c361beb75136fd8e2c627fcb9a5b28"
+ integrity sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==
+
+"@tailwindcss/oxide-darwin-x64@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz#ba292ff52fa3264139f7fe7874719ce0a4666875"
+ integrity sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==
+
+"@tailwindcss/oxide-freebsd-x64@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz#07e589487b9a636235a4ade48cefc1f9eeeec57f"
+ integrity sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==
+
+"@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz#0c8abc228d9e19e0065ddb707eba52e21855b3ff"
+ integrity sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==
+
+"@tailwindcss/oxide-linux-arm64-gnu@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz#5067dc7afd15d2b97adc77a91177dc4bec8d1b8b"
+ integrity sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==
+
+"@tailwindcss/oxide-linux-arm64-musl@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz#29ae5f279be2ce64db368711985b6ad8e4562e57"
+ integrity sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==
+
+"@tailwindcss/oxide-linux-x64-gnu@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz#7d693b40f69875744b499481359b227fd3ac3a3c"
+ integrity sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==
+
+"@tailwindcss/oxide-linux-x64-musl@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz#6a55d664f47c5ff9ad3f46bf05fe07d410b8cfd8"
+ integrity sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==
+
+"@tailwindcss/oxide-wasm32-wasi@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz#408a9bc620e68f1aaf0dfea33da7bd3b65f9e2ef"
+ integrity sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==
+ dependencies:
+ "@emnapi/core" "^1.11.1"
+ "@emnapi/runtime" "^1.11.1"
+ "@emnapi/wasi-threads" "^1.2.2"
+ "@napi-rs/wasm-runtime" "^1.1.4"
+ "@tybys/wasm-util" "^0.10.2"
+ tslib "^2.8.1"
+
+"@tailwindcss/oxide-win32-arm64-msvc@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz#3d582b00180fa4680e0b6c90be69fa5f4a209092"
+ integrity sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==
+
+"@tailwindcss/oxide-win32-x64-msvc@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz#ce4c663fef3b4fde67611a4c1391866f8c0aa79b"
+ integrity sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==
+
+"@tailwindcss/oxide@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.3.3.tgz#6266109d025cfcb04f8e4c58954a6f630a415b7f"
+ integrity sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==
optionalDependencies:
- "@tailwindcss/oxide-android-arm64" "4.1.8"
- "@tailwindcss/oxide-darwin-arm64" "4.1.8"
- "@tailwindcss/oxide-darwin-x64" "4.1.8"
- "@tailwindcss/oxide-freebsd-x64" "4.1.8"
- "@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.8"
- "@tailwindcss/oxide-linux-arm64-gnu" "4.1.8"
- "@tailwindcss/oxide-linux-arm64-musl" "4.1.8"
- "@tailwindcss/oxide-linux-x64-gnu" "4.1.8"
- "@tailwindcss/oxide-linux-x64-musl" "4.1.8"
- "@tailwindcss/oxide-wasm32-wasi" "4.1.8"
- "@tailwindcss/oxide-win32-arm64-msvc" "4.1.8"
- "@tailwindcss/oxide-win32-x64-msvc" "4.1.8"
+ "@tailwindcss/oxide-android-arm64" "4.3.3"
+ "@tailwindcss/oxide-darwin-arm64" "4.3.3"
+ "@tailwindcss/oxide-darwin-x64" "4.3.3"
+ "@tailwindcss/oxide-freebsd-x64" "4.3.3"
+ "@tailwindcss/oxide-linux-arm-gnueabihf" "4.3.3"
+ "@tailwindcss/oxide-linux-arm64-gnu" "4.3.3"
+ "@tailwindcss/oxide-linux-arm64-musl" "4.3.3"
+ "@tailwindcss/oxide-linux-x64-gnu" "4.3.3"
+ "@tailwindcss/oxide-linux-x64-musl" "4.3.3"
+ "@tailwindcss/oxide-wasm32-wasi" "4.3.3"
+ "@tailwindcss/oxide-win32-arm64-msvc" "4.3.3"
+ "@tailwindcss/oxide-win32-x64-msvc" "4.3.3"
"@tailwindcss/postcss@^4":
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.1.8.tgz#b12374b49f3accd9bd902a4324d124e67803350f"
- integrity sha512-vB/vlf7rIky+w94aWMw34bWW1ka6g6C3xIOdICKX2GC0VcLtL6fhlLiafF0DVIwa9V6EHz8kbWMkS2s2QvvNlw==
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.3.3.tgz#dc14df6477edc16087df1663617ee23bc1042610"
+ integrity sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==
dependencies:
"@alloc/quick-lru" "^5.2.0"
- "@tailwindcss/node" "4.1.8"
- "@tailwindcss/oxide" "4.1.8"
- postcss "^8.4.41"
- tailwindcss "4.1.8"
+ "@tailwindcss/node" "4.3.3"
+ "@tailwindcss/oxide" "4.3.3"
+ postcss "^8.5.16"
+ tailwindcss "4.3.3"
"@tailwindcss/typography@^0.5.16":
- version "0.5.16"
- resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.16.tgz#a926c8f44d5c439b2915e231cad80058850047c6"
- integrity sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==
+ version "0.5.20"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.20.tgz#9feb7fb1d5f2f7b5360c22e24651210db74c34df"
+ integrity sha512-hwbzQuNUfcPvbegQFatVPl/MY/tcM9KLl963hQ5laJKPh81TEZ1+dNG9PirGvcaDBkp+BCshExAyKVPW91dozw==
dependencies:
- lodash.castarray "^4.4.0"
- lodash.isplainobject "^4.0.6"
- lodash.merge "^4.6.2"
postcss-selector-parser "6.0.10"
+"@tokenizer/inflate@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@tokenizer/inflate/-/inflate-0.4.1.tgz#fa6cdb8366151b3cc8426bf9755c1ea03a2fba08"
+ integrity sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==
+ dependencies:
+ debug "^4.4.3"
+ token-types "^6.1.1"
+
"@tokenizer/token@^0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
-"@tybys/wasm-util@^0.9.0":
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355"
- integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==
+"@tybys/wasm-util@^0.10.2", "@tybys/wasm-util@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.3.tgz#015cba9e9dd47ce14d03d2a8c5d547bfb169665d"
+ integrity sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==
dependencies:
tslib "^2.4.0"
@@ -3016,9 +2037,9 @@
"@types/node" "*"
"@types/debug@^4.0.0":
- version "4.1.12"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
- integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
+ version "4.1.13"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7"
+ integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==
dependencies:
"@types/ms" "*"
@@ -3030,14 +2051,14 @@
"@types/estree" "*"
"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8"
- integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.9.tgz#cf3f0e876d7bee15a93ab925b82bf570a3904a24"
+ integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==
"@types/hast@^3.0.0":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa"
- integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.5.tgz#48020de4c0e63492f4ca9db42068c108f68b7f8f"
+ integrity sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==
dependencies:
"@types/unist" "*"
@@ -3052,9 +2073,9 @@
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
"@types/lodash@^4.17.7":
- version "4.17.17"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.17.tgz#fb85a04f47e9e4da888384feead0de05f7070355"
- integrity sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==
+ version "4.17.25"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.25.tgz#69765ac7bcddb0eb072961cf292524a8f5b3c2c0"
+ integrity sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==
"@types/mdast@^4.0.0":
version "4.0.4"
@@ -3068,45 +2089,38 @@
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78"
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
-"@types/node@*":
- version "22.15.29"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.29.tgz#c75999124a8224a3f79dd8b6ccfb37d74098f678"
- integrity sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==
- dependencies:
- undici-types "~6.21.0"
-
-"@types/node@>=20.0.0":
- version "25.5.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-25.5.0.tgz#5c99f37c443d9ccc4985866913f1ed364217da31"
- integrity sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==
+"@types/node@*", "@types/node@>=20.0.0":
+ version "26.4.1"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-26.4.1.tgz#3d8dc80515894958448ee266cf5d6bc3e5205bd5"
+ integrity sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==
dependencies:
- undici-types "~7.18.0"
+ undici-types "~8.3.0"
"@types/node@^20":
- version "20.17.57"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.57.tgz#f807455e3303ba8ba08fcb1db90619356abfaa99"
- integrity sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==
+ version "20.19.43"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.43.tgz#fcecf580ba42a0db55cf404c372c97973c376c97"
+ integrity sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==
dependencies:
- undici-types "~6.19.2"
+ undici-types "~6.21.0"
"@types/parse-json@^4.0.0":
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
-"@types/pg@8.10.2":
- version "8.10.2"
- resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.2.tgz#7814d1ca02c8071f4d0864c1b17c589b061dba43"
- integrity sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==
+"@types/pg@8.20.0":
+ version "8.20.0"
+ resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.20.0.tgz#8bd03d3ac6b19143a8de7d66a9d13da32cd91526"
+ integrity sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==
dependencies:
"@types/node" "*"
pg-protocol "*"
- pg-types "^4.0.1"
+ pg-types "^2.2.0"
"@types/react-dom@^19":
- version "19.1.5"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.1.5.tgz#cdfe2c663742887372f54804b16e8dbc26bd794a"
- integrity sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==
+ version "19.2.7"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.7.tgz#eba78fc6201e564986ec40d56c86c8434593cace"
+ integrity sha512-I8bPpDLcHBv1qiIiXDCy71Rt8eQDKJP0sMSWJphDdAcdqiJ1sGpZamavoEIRZmYzjia9LuEb2HlYdDpmoENpvQ==
"@types/react-transition-group@^4.4.0":
version "4.4.12"
@@ -3114,11 +2128,11 @@
integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==
"@types/react@^19":
- version "19.1.6"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.6.tgz#dee39f3e1e9a7d693f156a5840570b6d57f325ea"
- integrity sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==
+ version "19.2.18"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.18.tgz#eb0b6a1fb635d1a9692d5f84a3495bd8ad153707"
+ integrity sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==
dependencies:
- csstype "^3.0.2"
+ csstype "^3.2.2"
"@types/unist@*", "@types/unist@^3.0.0":
version "3.0.3"
@@ -3130,11 +2144,6 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4"
integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==
-"@types/uuid@10.0.0":
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d"
- integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==
-
"@types/whatwg-mimetype@^3.0.2":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz#e5e06dcd3e92d4e622ef0129637707d66c28d6a4"
@@ -3147,189 +2156,215 @@
dependencies:
"@types/node" "*"
-"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.0.tgz#51ed03649575ba51bcee7efdbfd85283249b5447"
- integrity sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==
- dependencies:
- "@eslint-community/regexpp" "^4.10.0"
- "@typescript-eslint/scope-manager" "8.33.0"
- "@typescript-eslint/type-utils" "8.33.0"
- "@typescript-eslint/utils" "8.33.0"
- "@typescript-eslint/visitor-keys" "8.33.0"
- graphemer "^1.4.0"
- ignore "^7.0.0"
+"@typescript-eslint/eslint-plugin@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.69.0.tgz#bf74cc392ebcaaf096bc8b4c4d7bbeb0677687b8"
+ integrity sha512-t5jQTKPIgVW1PE6dR6H6Qz5gm8zjMlX5/2gRaOGd9eO6V7J+tQc6iWKukEe7dY8u9HyYasQ0yfF0/FSSTEO2gA==
+ dependencies:
+ "@eslint-community/regexpp" "^4.12.2"
+ "@typescript-eslint/scope-manager" "8.69.0"
+ "@typescript-eslint/type-utils" "8.69.0"
+ "@typescript-eslint/utils" "8.69.0"
+ "@typescript-eslint/visitor-keys" "8.69.0"
+ ignore "^7.0.5"
natural-compare "^1.4.0"
- ts-api-utils "^2.1.0"
-
-"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.33.0.tgz#8e523c2b447ad7cd6ac91b719d8b37449481784d"
- integrity sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==
- dependencies:
- "@typescript-eslint/scope-manager" "8.33.0"
- "@typescript-eslint/types" "8.33.0"
- "@typescript-eslint/typescript-estree" "8.33.0"
- "@typescript-eslint/visitor-keys" "8.33.0"
- debug "^4.3.4"
-
-"@typescript-eslint/project-service@8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.33.0.tgz#71f37ef9010de47bf20963914743c5cbef851e08"
- integrity sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==
- dependencies:
- "@typescript-eslint/tsconfig-utils" "^8.33.0"
- "@typescript-eslint/types" "^8.33.0"
- debug "^4.3.4"
-
-"@typescript-eslint/scope-manager@8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz#459cf0c49d410800b1a023b973c62d699b09bf4c"
- integrity sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==
- dependencies:
- "@typescript-eslint/types" "8.33.0"
- "@typescript-eslint/visitor-keys" "8.33.0"
-
-"@typescript-eslint/tsconfig-utils@8.33.0", "@typescript-eslint/tsconfig-utils@^8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz#316adab038bbdc43e448781d5a816c2973eab73e"
- integrity sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==
-
-"@typescript-eslint/type-utils@8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.33.0.tgz#f06124b2d6db8a51b24990cb123c9543af93fef5"
- integrity sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==
- dependencies:
- "@typescript-eslint/typescript-estree" "8.33.0"
- "@typescript-eslint/utils" "8.33.0"
- debug "^4.3.4"
- ts-api-utils "^2.1.0"
-
-"@typescript-eslint/types@8.33.0", "@typescript-eslint/types@^8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.33.0.tgz#02a7dbba611a8abf1ad2a9e00f72f7b94b5ab0ee"
- integrity sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==
-
-"@typescript-eslint/typescript-estree@8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz#abcc1d3db75a8e9fd2e274ee8c4099fa2399abfd"
- integrity sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==
- dependencies:
- "@typescript-eslint/project-service" "8.33.0"
- "@typescript-eslint/tsconfig-utils" "8.33.0"
- "@typescript-eslint/types" "8.33.0"
- "@typescript-eslint/visitor-keys" "8.33.0"
- debug "^4.3.4"
- fast-glob "^3.3.2"
- is-glob "^4.0.3"
- minimatch "^9.0.4"
- semver "^7.6.0"
- ts-api-utils "^2.1.0"
-
-"@typescript-eslint/utils@8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.33.0.tgz#574ad5edee371077b9e28ca6fb804f2440f447c1"
- integrity sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==
- dependencies:
- "@eslint-community/eslint-utils" "^4.7.0"
- "@typescript-eslint/scope-manager" "8.33.0"
- "@typescript-eslint/types" "8.33.0"
- "@typescript-eslint/typescript-estree" "8.33.0"
-
-"@typescript-eslint/visitor-keys@8.33.0":
- version "8.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz#fbae16fd3594531f8cad95d421125d634e9974fe"
- integrity sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==
- dependencies:
- "@typescript-eslint/types" "8.33.0"
- eslint-visitor-keys "^4.2.0"
-
-"@unrs/resolver-binding-darwin-arm64@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.8.tgz#d78b964ed64e16103b5324b50dcb4277afeda4d7"
- integrity sha512-rsRK8T7yxraNRDmpFLZCWqpea6OlXPNRRCjWMx24O1V86KFol7u2gj9zJCv6zB1oJjtnzWceuqdnCgOipFcJPA==
-
-"@unrs/resolver-binding-darwin-x64@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.8.tgz#d095a6c941b2d7892179c3afbd7c34e2416094fd"
- integrity sha512-16yEMWa+Olqkk8Kl6Bu0ltT5OgEedkSAsxcz1B3yEctrDYp3EMBu/5PPAGhWVGnwhtf3hNe3y15gfYBAjOv5tQ==
-
-"@unrs/resolver-binding-freebsd-x64@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.8.tgz#0330e52103c400d0c9d5d27050bfda39c40ccae2"
- integrity sha512-ST4uqF6FmdZQgv+Q73FU1uHzppeT4mhX3IIEmHlLObrv5Ep50olWRz0iQ4PWovadjHMTAmpuJAGaAuCZYb7UAQ==
-
-"@unrs/resolver-binding-linux-arm-gnueabihf@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.8.tgz#dcc2c61b6c49886c225ad25ab3e73bbaf768d906"
- integrity sha512-Z/A/4Rm2VWku2g25C3tVb986fY6unx5jaaCFpx1pbAj0OKkyuJ5wcQLHvNbIcJ9qhiYwXfrkB7JNlxrAbg7YFg==
-
-"@unrs/resolver-binding-linux-arm-musleabihf@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.8.tgz#269f5d78cbfdfe3591005c7602bf9c559a6f6928"
- integrity sha512-HN0p7o38qKmDo3bZUiQa6gP7Qhf0sKgJZtRfSHi6JL2Gi4NaUVF0EO1sQ1RHbeQ4VvfjUGMh3QE5dxEh06BgQQ==
-
-"@unrs/resolver-binding-linux-arm64-gnu@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.8.tgz#43c30aeecdb1d36aa2201196568209c46d99c234"
- integrity sha512-HsoVqDBt9G69AN0KWeDNJW+7i8KFlwxrbbnJffgTGpiZd6Jw+Q95sqkXp8y458KhKduKLmXfVZGnKBTNxAgPjw==
-
-"@unrs/resolver-binding-linux-arm64-musl@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.8.tgz#fc6cc665195a1d8f276cc3a83f4956ee3c1c0a6b"
- integrity sha512-VfR2yTDUbUvn+e/Aw22CC9fQg9zdShHAfwWctNBdOk7w9CHWl2OtYlcMvjzMAns8QxoHQoqn3/CEnZ4Ts7hfrA==
-
-"@unrs/resolver-binding-linux-ppc64-gnu@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.8.tgz#bde19d505eab59ce82e812e8824c9d3e17ca71cf"
- integrity sha512-xUauVQNz4uDgs4UJJiUAwMe3N0PA0wvtImh7V0IFu++UKZJhssXbKHBRR4ecUJpUHCX2bc4Wc8sGsB6P+7BANg==
-
-"@unrs/resolver-binding-linux-riscv64-gnu@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.8.tgz#9b96ddfc4e88720d795629ad3c0cd7a2bcc4afa8"
- integrity sha512-GqyIB+CuSHGhhc8ph5RrurtNetYJjb6SctSHafqmdGcRuGi6uyTMR8l18hMEhZFsXdFMc/MpInPLvmNV22xn+A==
-
-"@unrs/resolver-binding-linux-riscv64-musl@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.8.tgz#287690c24f2b8106531968d22ad277af13bca57a"
- integrity sha512-eEU3rWIFRv60xaAbtsgwHNWRZGD7cqkpCvNtio/f1TjEE3HfKLzPNB24fA9X/8ZXQrGldE65b7UKK3PmO4eWIQ==
-
-"@unrs/resolver-binding-linux-s390x-gnu@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.8.tgz#b58bf7ed52f13753c9240fc59c2bd21cc348ee4e"
- integrity sha512-GVLI0f4I4TlLqEUoOFvTWedLsJEdvsD0+sxhdvQ5s+N+m2DSynTs8h9jxR0qQbKlpHWpc2Ortz3z48NHRT4l+w==
-
-"@unrs/resolver-binding-linux-x64-gnu@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.8.tgz#578efe1a96f0e737ec9c65dd9211aff9c4bd4b99"
- integrity sha512-GX1pZ/4ncUreB0Rlp1l7bhKAZ8ZmvDIgXdeb5V2iK0eRRF332+6gRfR/r5LK88xfbtOpsmRHU6mQ4N8ZnwvGEA==
-
-"@unrs/resolver-binding-linux-x64-musl@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.8.tgz#1f1aab9d047a2ab8830a2bb65dee950d7583518b"
- integrity sha512-n1N84MnsvDupzVuYqJGj+2pb9s8BI1A5RgXHvtVFHedGZVBCFjDpQVRlmsFMt6xZiKwDPaqsM16O/1isCUGt7w==
-
-"@unrs/resolver-binding-wasm32-wasi@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.8.tgz#85b627a4bf93d439df5e5c77c135f98699c1aa35"
- integrity sha512-x94WnaU5g+pCPDVedfnXzoG6lCOF2xFGebNwhtbJCWfceE94Zj8aysSxdxotlrZrxnz5D3ijtyFUYtpz04n39Q==
- dependencies:
- "@napi-rs/wasm-runtime" "^0.2.10"
-
-"@unrs/resolver-binding-win32-arm64-msvc@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.8.tgz#3acb45dbf6561c7c05d2fb554e36d2c46502bf1c"
- integrity sha512-vst2u8EJZ5L6jhJ6iLis3w9rg16aYqRxQuBAMYQRVrPMI43693hLP7DuqyOBRKgsQXy9/jgh204k0ViHkqQgdg==
-
-"@unrs/resolver-binding-win32-ia32-msvc@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.8.tgz#63628b5e12d14dd6275ec499398272ed5c272479"
- integrity sha512-yb3LZOLMFqnA+/ShlE1E5bpYPGDsA590VHHJPB+efnyowT776GJXBoh82em6O9WmYBUq57YblGTcMYAFBm72HA==
-
-"@unrs/resolver-binding-win32-x64-msvc@1.7.8":
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.8.tgz#ee29c817f285ccb328b206356eeee588a7388d2b"
- integrity sha512-hHKFx+opG5BA3/owMXon8ypwSotBGTdblG6oda/iOu9+OEYnk0cxD2uIcGyGT8jCK578kV+xMrNxqbn8Zjlpgw==
+ ts-api-utils "^2.5.0"
+
+"@typescript-eslint/parser@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.69.0.tgz#de3ead2b35e5c71580eda40820adb4fd14834ca1"
+ integrity sha512-l4b0DhWioGg6Gt2ebGlvfkFMOjRsauxtsnDRwUSRX1qHq3HdTfQHV8wW9zEXeciai6HfeaKOedQn2Zoofx3WBw==
+ dependencies:
+ "@typescript-eslint/scope-manager" "8.69.0"
+ "@typescript-eslint/types" "8.69.0"
+ "@typescript-eslint/typescript-estree" "8.69.0"
+ "@typescript-eslint/visitor-keys" "8.69.0"
+ debug "^4.4.3"
+
+"@typescript-eslint/project-service@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.69.0.tgz#cf728554436a50e644a5214a89fe02cb1ffa9af8"
+ integrity sha512-yi4obFrHMmnsesWehHbkg9zMA7Jt8cXT+mKM08G999pH1yT6nqgsHx7MYm0uY1wAj8CqiBXYRJ7WAT0QdQHQXg==
+ dependencies:
+ "@typescript-eslint/tsconfig-utils" "^8.69.0"
+ "@typescript-eslint/types" "^8.69.0"
+ debug "^4.4.3"
+
+"@typescript-eslint/scope-manager@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.69.0.tgz#13f3d1e25108e95a9ceb5a198806d1fa558f8c7a"
+ integrity sha512-ewfspqWvSxKSOaplqAUNbaSFO0eB6w1EtQ+esfYFRm3614Ty4uNtExkcbgd6nWsXphbqKyf9ZYdbZdv2xEoWEQ==
+ dependencies:
+ "@typescript-eslint/types" "8.69.0"
+ "@typescript-eslint/visitor-keys" "8.69.0"
+
+"@typescript-eslint/tsconfig-utils@8.69.0", "@typescript-eslint/tsconfig-utils@^8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.69.0.tgz#d3b0ccc781ab252a90a0b3989b9d1eb85ab59469"
+ integrity sha512-xNqK7YTDZsLniQMV/4rpFR8Z5JlqeRvVjuG1YgF/mdPVH84HSD19L8CczMA0qg2RfwEV231GHH3VnToJDo4MfQ==
+
+"@typescript-eslint/type-utils@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.69.0.tgz#7ce68d2ebcbedd8421806c27a7f360755017159f"
+ integrity sha512-ZfoJAVg3JZndQEpEl9petVlxau3lRuElc4HRMuAlLCf8to04/iHz692RUSNmXKDjEuJmIL+KZ2/BsOcBc16dsA==
+ dependencies:
+ "@typescript-eslint/types" "8.69.0"
+ "@typescript-eslint/typescript-estree" "8.69.0"
+ "@typescript-eslint/utils" "8.69.0"
+ debug "^4.4.3"
+ ts-api-utils "^2.5.0"
+
+"@typescript-eslint/types@8.69.0", "@typescript-eslint/types@^8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.69.0.tgz#5d9ad3f707c2e4f70a2db540031104df3e63bcf5"
+ integrity sha512-K3VrubUPhlo9VDBS6QdI8YB5j7ClpqLRdefcz6PFrhnwicehBweqQ9Evhl4l+FYz0HdDmMqIiSX0aldGRYtDCA==
+
+"@typescript-eslint/typescript-estree@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.69.0.tgz#efa915913ffe2049bbfd26092b95d1bc7c9c454f"
+ integrity sha512-AdFkgqck3Vudb/kWnxlyafU/4aBhHrbQ9locP2N4psXTy5mOBg0SHJumnLvx7r6g1gV4DKvUFwV2nJZBoqOD8w==
+ dependencies:
+ "@typescript-eslint/project-service" "8.69.0"
+ "@typescript-eslint/tsconfig-utils" "8.69.0"
+ "@typescript-eslint/types" "8.69.0"
+ "@typescript-eslint/visitor-keys" "8.69.0"
+ debug "^4.4.3"
+ minimatch "^10.2.2"
+ semver "^7.7.3"
+ tinyglobby "^0.2.15"
+ ts-api-utils "^2.5.0"
+
+"@typescript-eslint/utils@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.69.0.tgz#67ad9c00edf12fe2fbc0bf0a71b00822a8d02e97"
+ integrity sha512-tUbx60BBqQa31kXF5MCsOOLL5E/WzUuxIn7YpAvq+eaUlqvk8/NXnXMBNAdLCr0icjkzem7iUA5QqWHe/hJ1aw==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.9.1"
+ "@typescript-eslint/scope-manager" "8.69.0"
+ "@typescript-eslint/types" "8.69.0"
+ "@typescript-eslint/typescript-estree" "8.69.0"
+
+"@typescript-eslint/visitor-keys@8.69.0":
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.69.0.tgz#f659785dbb79733c40499f71a65439e2033966b5"
+ integrity sha512-+rmdgPA+EXkNgKYvHvFfhrs35utXbwaC5PGpDquSXcoXQDKUA5UjV0LmTucG/4JXkM31BTu4TilHtrN8IVBe8w==
+ dependencies:
+ "@typescript-eslint/types" "8.69.0"
+ eslint-visitor-keys "^5.0.0"
+
+"@unrs/resolver-binding-android-arm-eabi@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz#98a9fee62c01f209747a4ab5855f1ced38a6d03a"
+ integrity sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==
+
+"@unrs/resolver-binding-android-arm64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz#46b7e8a1393f907462324f1576e8883529acf066"
+ integrity sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==
+
+"@unrs/resolver-binding-darwin-arm64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz#0ea07b00e2583ab004b853d4c02ec5f0745d490c"
+ integrity sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==
+
+"@unrs/resolver-binding-darwin-x64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz#a2a6901ed58449b91b4438e582f6890cba956049"
+ integrity sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==
+
+"@unrs/resolver-binding-freebsd-x64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz#ebe6fe7f6706b7378ea4a48a024602e9c2f48f89"
+ integrity sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==
+
+"@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz#e6040fedaa240124419d35b25b69c5fa15ddb499"
+ integrity sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==
+
+"@unrs/resolver-binding-linux-arm-musleabihf@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz#d217a8fb59f659c131539326c140e7b62e3e3c6a"
+ integrity sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==
+
+"@unrs/resolver-binding-linux-arm64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz#edab13c46a45783a7e01351e113825c04f352e24"
+ integrity sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==
+
+"@unrs/resolver-binding-linux-arm64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz#e5e195db1130f7d3b6aa2fd67b3c9fe1ea4859a0"
+ integrity sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==
+
+"@unrs/resolver-binding-linux-loong64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz#f01d22e091bae13016f4636698d9dcbbda775c3e"
+ integrity sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==
+
+"@unrs/resolver-binding-linux-loong64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz#7d23efcb98adf076bfbcecc27b4212c36aa6697d"
+ integrity sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==
+
+"@unrs/resolver-binding-linux-ppc64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz#1f35f1eaa322f33cf2d96dac27f0626a93ffe2f6"
+ integrity sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==
+
+"@unrs/resolver-binding-linux-riscv64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz#674faa696f5ce96f214873946a1e2d6ca96723dd"
+ integrity sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==
+
+"@unrs/resolver-binding-linux-riscv64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz#37835fdd0b472ecdcffccd4288f19018454b138c"
+ integrity sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==
+
+"@unrs/resolver-binding-linux-s390x-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz#b6edf13db4bb0accdcd1ad482a4eea0301de9224"
+ integrity sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==
+
+"@unrs/resolver-binding-linux-x64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz#daddad00bf65a405202284da1eb1db8eb83b218f"
+ integrity sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==
+
+"@unrs/resolver-binding-linux-x64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz#dfdff1e0c2bad25420b41c76a746011c3983b9bb"
+ integrity sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==
+
+"@unrs/resolver-binding-openharmony-arm64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz#ce07c4f5e7b42f7bfce45e7629b8659063aefefe"
+ integrity sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==
+
+"@unrs/resolver-binding-wasm32-wasi@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz#82514f0506cfaf65f17fe16095f92d450e487183"
+ integrity sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==
+ dependencies:
+ "@emnapi/core" "1.10.0"
+ "@emnapi/runtime" "1.10.0"
+ "@napi-rs/wasm-runtime" "^1.1.4"
+
+"@unrs/resolver-binding-win32-arm64-msvc@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz#521427dd59a8f4740ddd1dc7c3bc6af1aa1d260d"
+ integrity sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==
+
+"@unrs/resolver-binding-win32-ia32-msvc@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz#05b63286ff2da37e0ce3083b8390884385efff62"
+ integrity sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==
+
+"@unrs/resolver-binding-win32-x64-msvc@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz#72da0da48d72b1e87831b9c0308931d3f4669027"
+ integrity sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==
acorn-jsx@^5.3.2:
version "5.3.2"
@@ -3341,25 +2376,25 @@ acorn@8.16.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a"
integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==
-acorn@^8.14.0:
- version "8.14.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb"
- integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
+acorn@^8.15.0:
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.18.0.tgz#4faf01b2d6d326bfeed97aea1f52220b5f4c1940"
+ integrity sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==
-ajv@8.17.1:
- version "8.17.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
- integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ajv@8.18.0:
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc"
+ integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==
dependencies:
fast-deep-equal "^3.1.3"
fast-uri "^3.0.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
-ajv@^6.12.4:
- version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ajv@^6.14.0:
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.15.0.tgz#07e982c74626167aa7a2495c53817892d7139492"
+ integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
@@ -3367,15 +2402,15 @@ ajv@^6.12.4:
uri-js "^4.2.2"
amazon-cognito-identity-js@^6.1.2:
- version "6.3.15"
- resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.15.tgz#bef9f1d7fddff6f0b4e2e2d9da04867d1559e20b"
- integrity sha512-G2mzTlGYHKYh9oZDO0Gk94xVQ4iY9GYWBaYScbDYvz05ps6dqi0IvdNx1Lxi7oA3tjS5X+mUN7/svFJJdOB9YA==
+ version "6.3.20"
+ resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.20.tgz#31a1075eb8e98f2b2e2721f804f5a41f5cdeac5e"
+ integrity sha512-akaaLpDqz4i0m2XG4+x+XcHAlboRt3rydVrSiEFCKvaGZSmZdvnYW4SXqm2OGeVdZK0R1nIXjp8yEpID3rHC5Q==
dependencies:
"@aws-crypto/sha256-js" "1.2.2"
buffer "4.9.2"
fast-base64-decode "^1.0.0"
isomorphic-unfetch "^3.0.0"
- js-cookie "^2.2.1"
+ js-cookie "^3.0.7"
ansi-styles@^4.1.0:
version "4.3.0"
@@ -3410,17 +2445,19 @@ array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2:
call-bound "^1.0.3"
is-array-buffer "^3.0.5"
-array-includes@^3.1.6, array-includes@^3.1.8:
- version "3.1.8"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d"
- integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==
+array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9:
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a"
+ integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==
dependencies:
- call-bind "^1.0.7"
+ call-bind "^1.0.8"
+ call-bound "^1.0.4"
define-properties "^1.2.1"
- es-abstract "^1.23.2"
- es-object-atoms "^1.0.0"
- get-intrinsic "^1.2.4"
- is-string "^1.0.7"
+ es-abstract "^1.24.0"
+ es-object-atoms "^1.1.1"
+ get-intrinsic "^1.3.0"
+ is-string "^1.1.1"
+ math-intrinsics "^1.1.0"
array.prototype.findlast@^1.2.5:
version "1.2.5"
@@ -3434,7 +2471,7 @@ array.prototype.findlast@^1.2.5:
es-object-atoms "^1.0.0"
es-shim-unscopables "^1.0.2"
-array.prototype.findlastindex@^1.2.5:
+array.prototype.findlastindex@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564"
integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==
@@ -3447,7 +2484,7 @@ array.prototype.findlastindex@^1.2.5:
es-object-atoms "^1.1.1"
es-shim-unscopables "^1.1.0"
-array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2:
+array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5"
integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==
@@ -3507,14 +2544,13 @@ atomic-sleep@^1.0.0:
integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
autoprefixer@^10.4.21:
- version "10.4.21"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d"
- integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==
- dependencies:
- browserslist "^4.24.4"
- caniuse-lite "^1.0.30001702"
- fraction.js "^4.3.7"
- normalize-range "^0.1.2"
+ version "10.5.5"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.5.tgz#c2d2c2ccadda1d88536a4ff0e3e8d1417dbca388"
+ integrity sha512-uiRYvQYe/nNSzBJ7OUnd2/TZVsAdob3blml44teEpee9Cc1f4rGZFewO+JT3Wo8mgFOSzNqes4FHZn/Qz8WOuw==
+ dependencies:
+ browserslist "^4.28.9"
+ caniuse-lite "^1.0.30001810"
+ fraction.js "^5.3.4"
picocolors "^1.1.1"
postcss-value-parser "^4.2.0"
@@ -3526,9 +2562,9 @@ available-typed-arrays@^1.0.7:
possible-typed-array-names "^1.0.0"
axe-core@^4.10.0:
- version "4.10.3"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc"
- integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==
+ version "4.13.0"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.13.0.tgz#f868ecb1bd61d982321760e51d841ab497ab86d0"
+ integrity sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==
axobject-query@^4.1.0:
version "4.1.0"
@@ -3549,11 +2585,21 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+balanced-match@^4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a"
+ integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==
+
base64-js@^1.0.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+baseline-browser-mapping@^2.11.20, baseline-browser-mapping@^2.9.19:
+ version "2.11.21"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.21.tgz#99af73cb8e54007e4f5345e132278e26c2662f2c"
+ integrity sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==
+
binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
@@ -3565,24 +2611,24 @@ body-scroll-lock@4.0.0-beta.0:
integrity sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==
bowser@^2.11.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"
- integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==
+ version "2.14.1"
+ resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.14.1.tgz#4ea39bf31e305184522d7ad7bfd91389e4f0cb79"
+ integrity sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==
brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ version "1.1.18"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.18.tgz#3ce74d89885136be1535341f8c3d4425c29a5cab"
+ integrity sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
-brace-expansion@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
- integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+brace-expansion@^5.0.8:
+ version "5.0.9"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.9.tgz#7c72438809b5fa5babf54199a1f1c281a6984fcf"
+ integrity sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==
dependencies:
- balanced-match "^1.0.0"
+ balanced-match "^4.0.2"
braces@^3.0.3, braces@~3.0.2:
version "3.0.3"
@@ -3591,15 +2637,16 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.24.4:
- version "4.25.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c"
- integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==
+browserslist@^4.24.0, browserslist@^4.28.9:
+ version "4.28.9"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.9.tgz#07ce6b449b90af880eb9bfb7cd39372cc4f71c8c"
+ integrity sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==
dependencies:
- caniuse-lite "^1.0.30001718"
- electron-to-chromium "^1.5.160"
- node-releases "^2.0.19"
- update-browserslist-db "^1.1.3"
+ baseline-browser-mapping "^2.11.20"
+ caniuse-lite "^1.0.30001810"
+ electron-to-chromium "^1.5.420"
+ node-releases "^2.0.54"
+ update-browserslist-db "^1.3.2"
bson-objectid@2.0.4:
version "2.0.4"
@@ -3611,6 +2658,13 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+buffer-image-size@^0.6.4:
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/buffer-image-size/-/buffer-image-size-0.6.4.tgz#357e8173e951ced3b5a2785c695993aa29dbcac4"
+ integrity sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ==
+ dependencies:
+ "@types/node" "*"
+
buffer@4.9.2:
version "4.9.2"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
@@ -3635,7 +2689,7 @@ busboy@^1.6.0:
dependencies:
streamsearch "^1.1.0"
-call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
+call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
@@ -3643,14 +2697,14 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-
es-errors "^1.3.0"
function-bind "^1.1.2"
-call-bind@^1.0.7, call-bind@^1.0.8:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
- integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
+call-bind@^1.0.7, call-bind@^1.0.8, call-bind@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.9.tgz#39a644700c80bc7d0ca9102fc6d1d43b2fd7eee7"
+ integrity sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==
dependencies:
- call-bind-apply-helpers "^1.0.0"
- es-define-property "^1.0.0"
- get-intrinsic "^1.2.4"
+ call-bind-apply-helpers "^1.0.2"
+ es-define-property "^1.0.1"
+ get-intrinsic "^1.3.0"
set-function-length "^1.2.2"
call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
@@ -3666,10 +2720,10 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001718:
- version "1.0.30001720"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz#c138cb6026d362be9d8d7b0e4bcd0183a850edfd"
- integrity sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==
+caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001810:
+ version "1.0.30001810"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz#4970b477dea3278374de9bc43aa8f5d39fc3cda2"
+ integrity sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==
ccount@^2.0.0:
version "2.0.1"
@@ -3724,15 +2778,10 @@ charenc@0.0.2:
optionalDependencies:
fsevents "~2.3.2"
-chownr@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4"
- integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==
-
ci-info@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7"
- integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.4.0.tgz#7d54eff9f54b45b62401c26032696eb59c8bd18c"
+ integrity sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==
class-variance-authority@^0.7.1:
version "0.7.1"
@@ -3790,6 +2839,11 @@ convert-source-map@^1.5.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
cosmiconfig@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
@@ -3801,10 +2855,10 @@ cosmiconfig@^7.0.0:
path-type "^4.0.0"
yaml "^1.10.0"
-croner@9.1.0:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/croner/-/croner-9.1.0.tgz#94ccbba2570bca329f60f36ec19875dccf9a63aa"
- integrity sha512-p9nwwR4qyT5W996vBZhdvBCnMhicY5ytZkR4D1Xj0wuTDEiMnjwR57Q3RXYY/s0EpX6Ay3vgIcfaR+ewGHsi+g==
+croner@10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/croner/-/croner-10.0.1.tgz#4eb92806c99539146dbe2f3ee3907e319cb2847a"
+ integrity sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==
cross-spawn@^7.0.6:
version "7.0.6"
@@ -3830,11 +2884,16 @@ cssfilter@0.0.10:
resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==
-csstype@3.1.3, csstype@^3.0.2:
+csstype@3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+csstype@^3.0.2, csstype@^3.2.2:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a"
+ integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
+
damerau-levenshtein@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
@@ -3894,17 +2953,17 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
-debug@^4.0.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
- integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
+debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0, debug@^4.4.3:
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
+ integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
dependencies:
ms "^2.1.3"
decode-named-character-reference@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz#5d6ce68792808901210dac42a8e9853511e2b8bf"
- integrity sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f"
+ integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==
dependencies:
character-entities "^2.0.0"
@@ -3941,12 +3000,7 @@ dequal@2.0.3, dequal@^2.0.0:
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
-detect-libc@^2.0.3, detect-libc@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
- integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
-
-detect-libc@^2.1.2:
+detect-libc@^2.0.3, detect-libc@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
@@ -3983,10 +3037,10 @@ drizzle-kit@0.31.7:
esbuild "^0.25.4"
esbuild-register "^3.5.0"
-drizzle-orm@0.44.7:
- version "0.44.7"
- resolved "https://registry.yarnpkg.com/drizzle-orm/-/drizzle-orm-0.44.7.tgz#6f67c80c6b64d9c18a401e8e5d03dfa67b652011"
- integrity sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==
+drizzle-orm@0.45.2:
+ version "0.45.2"
+ resolved "https://registry.yarnpkg.com/drizzle-orm/-/drizzle-orm-0.45.2.tgz#37eb5e4e6bd1309cb8d5414de09632d8f82d8a65"
+ integrity sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==
dunder-proto@^1.0.0, dunder-proto@^1.0.1:
version "1.0.1"
@@ -3997,10 +3051,10 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1:
es-errors "^1.3.0"
gopd "^1.2.0"
-electron-to-chromium@^1.5.160:
- version "1.5.161"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.161.tgz#650376bd3be7ff8e581031409fc2d4f150620b12"
- integrity sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==
+electron-to-chromium@^1.5.420:
+ version "1.5.422"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.422.tgz#e27fb1ca0e6bef612a647022e1469701fea9ee1f"
+ integrity sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==
emoji-regex@^9.2.2:
version "9.2.2"
@@ -4008,19 +3062,19 @@ emoji-regex@^9.2.2:
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
end-of-stream@^1.1.0:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c"
+ integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==
dependencies:
once "^1.4.0"
-enhanced-resolve@^5.18.1:
- version "5.18.1"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf"
- integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==
+enhanced-resolve@^5.24.1:
+ version "5.24.5"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz#b4dad3255b7545f07ba5535189868e9f85f47573"
+ integrity sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==
dependencies:
graceful-fs "^4.2.4"
- tapable "^2.2.0"
+ tapable "^2.3.3"
entities@^7.0.1:
version "7.0.1"
@@ -4028,16 +3082,26 @@ entities@^7.0.1:
integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==
error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.4.tgz#b3a8d8bb6f92eecc1629e3e27d3c8607a8a32414"
+ integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9:
- version "1.24.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328"
- integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
+es-abstract-get@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-abstract-get/-/es-abstract-get-1.0.0.tgz#1eae87101f42bedeb6a740e8c5051271aef89088"
+ integrity sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==
+ dependencies:
+ es-errors "^1.3.0"
+ es-object-atoms "^1.1.2"
+ is-callable "^1.2.7"
+ object-inspect "^1.13.4"
+
+es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.2:
+ version "1.24.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.2.tgz#2dbd38c180735ee983f77585140a2706a963ed9a"
+ integrity sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==
dependencies:
array-buffer-byte-length "^1.0.2"
arraybuffer.prototype.slice "^1.0.4"
@@ -4105,35 +3169,35 @@ es-errors@^1.3.0:
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
es-iterator-helpers@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75"
- integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.4.0.tgz#2b4635ee3e8db2285378a47a1ea8f8dd34adb653"
+ integrity sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.3"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
define-properties "^1.2.1"
- es-abstract "^1.23.6"
+ es-abstract "^1.24.2"
es-errors "^1.3.0"
- es-set-tostringtag "^2.0.3"
+ es-set-tostringtag "^2.1.0"
function-bind "^1.1.2"
- get-intrinsic "^1.2.6"
+ get-intrinsic "^1.3.0"
globalthis "^1.0.4"
gopd "^1.2.0"
has-property-descriptors "^1.0.2"
has-proto "^1.2.0"
has-symbols "^1.1.0"
internal-slot "^1.1.0"
- iterator.prototype "^1.1.4"
- safe-array-concat "^1.1.3"
+ iterator.prototype "^1.1.5"
+ math-intrinsics "^1.1.0"
-es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
- integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
+es-object-atoms@^1.0.0, es-object-atoms@^1.1.1, es-object-atoms@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz#a2d0b373205724dfa525d23b0c3e1b1ca582c99b"
+ integrity sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==
dependencies:
es-errors "^1.3.0"
-es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0:
+es-set-tostringtag@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d"
integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
@@ -4151,13 +3215,16 @@ es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0:
hasown "^2.0.2"
es-to-primitive@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18"
- integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.4.tgz#0c854291cf0d7b439d6b9e5771ea837ffaf1f991"
+ integrity sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==
dependencies:
+ es-abstract-get "^1.0.0"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
is-callable "^1.2.7"
- is-date-object "^1.0.5"
- is-symbol "^1.0.4"
+ is-date-object "^1.1.0"
+ is-symbol "^1.1.1"
esbuild-register@^3.5.0:
version "3.6.0"
@@ -4166,38 +3233,7 @@ esbuild-register@^3.5.0:
dependencies:
debug "^4.3.4"
-esbuild@^0.25.2:
- version "0.25.5"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.5.tgz#71075054993fdfae76c66586f9b9c1f8d7edd430"
- integrity sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==
- optionalDependencies:
- "@esbuild/aix-ppc64" "0.25.5"
- "@esbuild/android-arm" "0.25.5"
- "@esbuild/android-arm64" "0.25.5"
- "@esbuild/android-x64" "0.25.5"
- "@esbuild/darwin-arm64" "0.25.5"
- "@esbuild/darwin-x64" "0.25.5"
- "@esbuild/freebsd-arm64" "0.25.5"
- "@esbuild/freebsd-x64" "0.25.5"
- "@esbuild/linux-arm" "0.25.5"
- "@esbuild/linux-arm64" "0.25.5"
- "@esbuild/linux-ia32" "0.25.5"
- "@esbuild/linux-loong64" "0.25.5"
- "@esbuild/linux-mips64el" "0.25.5"
- "@esbuild/linux-ppc64" "0.25.5"
- "@esbuild/linux-riscv64" "0.25.5"
- "@esbuild/linux-s390x" "0.25.5"
- "@esbuild/linux-x64" "0.25.5"
- "@esbuild/netbsd-arm64" "0.25.5"
- "@esbuild/netbsd-x64" "0.25.5"
- "@esbuild/openbsd-arm64" "0.25.5"
- "@esbuild/openbsd-x64" "0.25.5"
- "@esbuild/sunos-x64" "0.25.5"
- "@esbuild/win32-arm64" "0.25.5"
- "@esbuild/win32-ia32" "0.25.5"
- "@esbuild/win32-x64" "0.25.5"
-
-esbuild@^0.25.4:
+esbuild@0.25.12, esbuild@^0.25.2, esbuild@^0.25.4, esbuild@~0.18.20:
version "0.25.12"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5"
integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==
@@ -4229,65 +3265,37 @@ esbuild@^0.25.4:
"@esbuild/win32-ia32" "0.25.12"
"@esbuild/win32-x64" "0.25.12"
-esbuild@~0.18.20:
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
- integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
+esbuild@~0.28.0:
+ version "0.28.2"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.28.2.tgz#0f43bd1bad955b72d24e2261e3abe5957ccf0816"
+ integrity sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==
optionalDependencies:
- "@esbuild/android-arm" "0.18.20"
- "@esbuild/android-arm64" "0.18.20"
- "@esbuild/android-x64" "0.18.20"
- "@esbuild/darwin-arm64" "0.18.20"
- "@esbuild/darwin-x64" "0.18.20"
- "@esbuild/freebsd-arm64" "0.18.20"
- "@esbuild/freebsd-x64" "0.18.20"
- "@esbuild/linux-arm" "0.18.20"
- "@esbuild/linux-arm64" "0.18.20"
- "@esbuild/linux-ia32" "0.18.20"
- "@esbuild/linux-loong64" "0.18.20"
- "@esbuild/linux-mips64el" "0.18.20"
- "@esbuild/linux-ppc64" "0.18.20"
- "@esbuild/linux-riscv64" "0.18.20"
- "@esbuild/linux-s390x" "0.18.20"
- "@esbuild/linux-x64" "0.18.20"
- "@esbuild/netbsd-x64" "0.18.20"
- "@esbuild/openbsd-x64" "0.18.20"
- "@esbuild/sunos-x64" "0.18.20"
- "@esbuild/win32-arm64" "0.18.20"
- "@esbuild/win32-ia32" "0.18.20"
- "@esbuild/win32-x64" "0.18.20"
-
-esbuild@~0.27.0:
- version "0.27.4"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.4.tgz#b9591dd7e0ab803a11c9c3b602850403bef22f00"
- integrity sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==
- optionalDependencies:
- "@esbuild/aix-ppc64" "0.27.4"
- "@esbuild/android-arm" "0.27.4"
- "@esbuild/android-arm64" "0.27.4"
- "@esbuild/android-x64" "0.27.4"
- "@esbuild/darwin-arm64" "0.27.4"
- "@esbuild/darwin-x64" "0.27.4"
- "@esbuild/freebsd-arm64" "0.27.4"
- "@esbuild/freebsd-x64" "0.27.4"
- "@esbuild/linux-arm" "0.27.4"
- "@esbuild/linux-arm64" "0.27.4"
- "@esbuild/linux-ia32" "0.27.4"
- "@esbuild/linux-loong64" "0.27.4"
- "@esbuild/linux-mips64el" "0.27.4"
- "@esbuild/linux-ppc64" "0.27.4"
- "@esbuild/linux-riscv64" "0.27.4"
- "@esbuild/linux-s390x" "0.27.4"
- "@esbuild/linux-x64" "0.27.4"
- "@esbuild/netbsd-arm64" "0.27.4"
- "@esbuild/netbsd-x64" "0.27.4"
- "@esbuild/openbsd-arm64" "0.27.4"
- "@esbuild/openbsd-x64" "0.27.4"
- "@esbuild/openharmony-arm64" "0.27.4"
- "@esbuild/sunos-x64" "0.27.4"
- "@esbuild/win32-arm64" "0.27.4"
- "@esbuild/win32-ia32" "0.27.4"
- "@esbuild/win32-x64" "0.27.4"
+ "@esbuild/aix-ppc64" "0.28.2"
+ "@esbuild/android-arm" "0.28.2"
+ "@esbuild/android-arm64" "0.28.2"
+ "@esbuild/android-x64" "0.28.2"
+ "@esbuild/darwin-arm64" "0.28.2"
+ "@esbuild/darwin-x64" "0.28.2"
+ "@esbuild/freebsd-arm64" "0.28.2"
+ "@esbuild/freebsd-x64" "0.28.2"
+ "@esbuild/linux-arm" "0.28.2"
+ "@esbuild/linux-arm64" "0.28.2"
+ "@esbuild/linux-ia32" "0.28.2"
+ "@esbuild/linux-loong64" "0.28.2"
+ "@esbuild/linux-mips64el" "0.28.2"
+ "@esbuild/linux-ppc64" "0.28.2"
+ "@esbuild/linux-riscv64" "0.28.2"
+ "@esbuild/linux-s390x" "0.28.2"
+ "@esbuild/linux-x64" "0.28.2"
+ "@esbuild/netbsd-arm64" "0.28.2"
+ "@esbuild/netbsd-x64" "0.28.2"
+ "@esbuild/openbsd-arm64" "0.28.2"
+ "@esbuild/openbsd-x64" "0.28.2"
+ "@esbuild/openharmony-arm64" "0.28.2"
+ "@esbuild/sunos-x64" "0.28.2"
+ "@esbuild/win32-arm64" "0.28.2"
+ "@esbuild/win32-ia32" "0.28.2"
+ "@esbuild/win32-x64" "0.28.2"
escalade@^3.2.0:
version "3.2.0"
@@ -4304,30 +3312,29 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-eslint-config-next@15.2.1:
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-15.2.1.tgz#f49f71eb5de2e8a794cf79cb54b02f1e209d4d7f"
- integrity sha512-mhsprz7l0no8X+PdDnVHF4dZKu9YBJp2Rf6ztWbXBLJ4h6gxmW//owbbGJMBVUU+PibGJDAqZhW4pt8SC8HSow==
+eslint-config-next@16.3.4:
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-16.3.4.tgz#f1f0feb30d1c2ec89b3274fe1c4564b289b257de"
+ integrity sha512-35/8RM10huEL9vlr8hUZMERMENHBrnyHN3ZZkF9efSgzGaqK34jIqry44A956//zriUhUAUW0XSkcolhrryqAA==
dependencies:
- "@next/eslint-plugin-next" "15.2.1"
- "@rushstack/eslint-patch" "^1.10.3"
- "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0"
- "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0"
+ "@next/eslint-plugin-next" "16.3.4"
eslint-import-resolver-node "^0.3.6"
eslint-import-resolver-typescript "^3.5.2"
- eslint-plugin-import "^2.31.0"
+ eslint-plugin-import "^2.32.0"
eslint-plugin-jsx-a11y "^6.10.0"
eslint-plugin-react "^7.37.0"
- eslint-plugin-react-hooks "^5.0.0"
+ eslint-plugin-react-hooks "^7.0.0"
+ globals "16.4.0"
+ typescript-eslint "^8.46.0"
eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9:
- version "0.3.9"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
- integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
+ version "0.3.10"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz#84ce3005abfc300588cf23bbac1aabec1fc6e8c1"
+ integrity sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==
dependencies:
debug "^3.2.7"
- is-core-module "^2.13.0"
- resolve "^1.22.4"
+ is-core-module "^2.16.1"
+ resolve "^2.0.0-next.6"
eslint-import-resolver-typescript@^3.5.2:
version "3.10.1"
@@ -4342,36 +3349,36 @@ eslint-import-resolver-typescript@^3.5.2:
tinyglobby "^0.2.13"
unrs-resolver "^1.6.2"
-eslint-module-utils@^2.12.0:
- version "2.12.0"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b"
- integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==
+eslint-module-utils@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.14.0.tgz#611f8e1c6ceb29a93eb949e1cc670b8287764819"
+ integrity sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==
dependencies:
debug "^3.2.7"
-eslint-plugin-import@^2.31.0:
- version "2.31.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7"
- integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==
+eslint-plugin-import@^2.32.0:
+ version "2.32.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980"
+ integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==
dependencies:
"@rtsao/scc" "^1.1.0"
- array-includes "^3.1.8"
- array.prototype.findlastindex "^1.2.5"
- array.prototype.flat "^1.3.2"
- array.prototype.flatmap "^1.3.2"
+ array-includes "^3.1.9"
+ array.prototype.findlastindex "^1.2.6"
+ array.prototype.flat "^1.3.3"
+ array.prototype.flatmap "^1.3.3"
debug "^3.2.7"
doctrine "^2.1.0"
eslint-import-resolver-node "^0.3.9"
- eslint-module-utils "^2.12.0"
+ eslint-module-utils "^2.12.1"
hasown "^2.0.2"
- is-core-module "^2.15.1"
+ is-core-module "^2.16.1"
is-glob "^4.0.3"
minimatch "^3.1.2"
object.fromentries "^2.0.8"
object.groupby "^1.0.3"
- object.values "^1.2.0"
+ object.values "^1.2.1"
semver "^6.3.1"
- string.prototype.trimend "^1.0.8"
+ string.prototype.trimend "^1.0.9"
tsconfig-paths "^3.15.0"
eslint-plugin-jsx-a11y@^6.10.0:
@@ -4395,10 +3402,16 @@ eslint-plugin-jsx-a11y@^6.10.0:
safe-regex-test "^1.0.3"
string.prototype.includes "^2.0.1"
-eslint-plugin-react-hooks@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3"
- integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==
+eslint-plugin-react-hooks@^7.0.0:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz#e6742cad75d970c0a3f30d7d3fa80a4784f55927"
+ integrity sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==
+ dependencies:
+ "@babel/core" "^7.24.4"
+ "@babel/parser" "^7.24.4"
+ hermes-parser "^0.25.1"
+ zod "^3.25.0 || ^4.0.0"
+ zod-validation-error "^3.5.0 || ^4.0.0"
eslint-plugin-react@^7.37.0:
version "7.37.5"
@@ -4424,10 +3437,10 @@ eslint-plugin-react@^7.37.0:
string.prototype.matchall "^4.0.12"
string.prototype.repeat "^1.0.0"
-eslint-scope@^8.3.0:
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d"
- integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==
+eslint-scope@^8.4.0:
+ version "8.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82"
+ integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
@@ -4437,37 +3450,41 @@ eslint-visitor-keys@^3.4.3:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-eslint-visitor-keys@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45"
- integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
+eslint-visitor-keys@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
+ integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
+
+eslint-visitor-keys@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be"
+ integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==
eslint@^9:
- version "9.28.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.28.0.tgz#b0bcbe82a16945a40906924bea75e8b4980ced7d"
- integrity sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==
+ version "9.39.5"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.5.tgz#2a4e3c8b0f753196efae943c8ffaa8730fc6a3fa"
+ integrity sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==
dependencies:
- "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/eslint-utils" "^4.8.0"
"@eslint-community/regexpp" "^4.12.1"
- "@eslint/config-array" "^0.20.0"
- "@eslint/config-helpers" "^0.2.1"
- "@eslint/core" "^0.14.0"
- "@eslint/eslintrc" "^3.3.1"
- "@eslint/js" "9.28.0"
- "@eslint/plugin-kit" "^0.3.1"
+ "@eslint/config-array" "^0.21.2"
+ "@eslint/config-helpers" "^0.4.2"
+ "@eslint/core" "^0.17.0"
+ "@eslint/eslintrc" "^3.3.6"
+ "@eslint/js" "9.39.5"
+ "@eslint/plugin-kit" "^0.4.1"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.4.2"
"@types/estree" "^1.0.6"
- "@types/json-schema" "^7.0.15"
- ajv "^6.12.4"
+ ajv "^6.14.0"
chalk "^4.0.0"
cross-spawn "^7.0.6"
debug "^4.3.2"
escape-string-regexp "^4.0.0"
- eslint-scope "^8.3.0"
- eslint-visitor-keys "^4.2.0"
- espree "^10.3.0"
+ eslint-scope "^8.4.0"
+ eslint-visitor-keys "^4.2.1"
+ espree "^10.4.0"
esquery "^1.5.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
@@ -4479,23 +3496,23 @@ eslint@^9:
is-glob "^4.0.0"
json-stable-stringify-without-jsonify "^1.0.1"
lodash.merge "^4.6.2"
- minimatch "^3.1.2"
+ minimatch "^3.1.5"
natural-compare "^1.4.0"
optionator "^0.9.3"
-espree@^10.0.1, espree@^10.3.0:
- version "10.3.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a"
- integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==
+espree@^10.0.1, espree@^10.4.0:
+ version "10.4.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837"
+ integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==
dependencies:
- acorn "^8.14.0"
+ acorn "^8.15.0"
acorn-jsx "^5.3.2"
- eslint-visitor-keys "^4.2.0"
+ eslint-visitor-keys "^4.2.1"
esquery@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
- integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d"
+ integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==
dependencies:
estraverse "^5.1.0"
@@ -4540,9 +3557,9 @@ fast-base64-decode@^1.0.0:
integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==
fast-copy@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35"
- integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.1.0.tgz#1787743b5384319d62ee72a01720345104226802"
+ integrity sha512-IuCOCDFM1F/s4LtG7Bjr3yUUwPHybyhqN74xk2cMYoP51vVeErMy8+6HGFchi/+45lW8uzhs6lBeEqks2GWt6A==
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
@@ -4560,17 +3577,6 @@ fast-glob@3.3.1:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-glob@^3.3.2:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
- integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.8"
-
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -4587,28 +3593,21 @@ fast-safe-stringify@^2.1.1:
integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
fast-uri@^3.0.1:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748"
- integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
-
-fast-xml-parser@4.4.1:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f"
- integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==
- dependencies:
- strnum "^1.0.5"
+ version "3.1.7"
+ resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.7.tgz#743157d957f3cbb4c65310e033dc2ad4ad7dc60a"
+ integrity sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==
fastq@^1.6.0:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
- integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
+ version "1.20.3"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.3.tgz#7ab8731e647b56abcfeee997dae333ca3ee1d04d"
+ integrity sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==
dependencies:
reusify "^1.0.4"
-fdir@^6.4.4:
- version "6.4.5"
- resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.5.tgz#328e280f3a23699362f95f2e82acf978a0c0cb49"
- integrity sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==
+fdir@^6.5.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350"
+ integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==
file-entry-cache@^8.0.0:
version "8.0.0"
@@ -4617,14 +3616,15 @@ file-entry-cache@^8.0.0:
dependencies:
flat-cache "^4.0.0"
-file-type@19.3.0:
- version "19.3.0"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-19.3.0.tgz#7b5989c4af05e4b02c553f29a6acca0508e9ea9b"
- integrity sha512-mROwiKLZf/Kwa/2Rol+OOZQn1eyTkPB3ZTwC0ExY6OLFCbgxHYZvBm7xI77NvfZFMKBsmuXfmLJnD4eEftEhrA==
+file-type@21.3.4:
+ version "21.3.4"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-21.3.4.tgz#e3f902faee8ec4aa152909fc902a7a77f9c06725"
+ integrity sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==
dependencies:
- strtok3 "^8.0.0"
- token-types "^6.0.0"
- uint8array-extras "^1.3.0"
+ "@tokenizer/inflate" "^0.4.1"
+ strtok3 "^10.3.4"
+ token-types "^6.1.1"
+ uint8array-extras "^1.4.0"
fill-range@^7.1.1:
version "7.1.1"
@@ -4655,9 +3655,9 @@ flat-cache@^4.0.0:
keyv "^4.5.4"
flatted@^3.2.9:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358"
- integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.4.tgz#aeeca2a506303f0cee61c59e6c9f2a88d2f29fc6"
+ integrity sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==
focus-trap@7.5.4:
version "7.5.4"
@@ -4673,10 +3673,10 @@ for-each@^0.3.3, for-each@^0.3.5:
dependencies:
is-callable "^1.2.7"
-fraction.js@^4.3.7:
- version "4.3.7"
- resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
- integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
+fraction.js@^5.3.4:
+ version "5.3.4"
+ resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-5.3.4.tgz#8c0fcc6a9908262df4ed197427bdeef563e0699a"
+ integrity sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==
fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
@@ -4689,22 +3689,35 @@ function-bind@^1.1.2:
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
function.prototype.name@^1.1.6, function.prototype.name@^1.1.8:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78"
- integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.2.0.tgz#758f3e84fa542672454bd5e14cb081a5ce07f70c"
+ integrity sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.3"
- define-properties "^1.2.1"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
functions-have-names "^1.2.3"
- hasown "^2.0.2"
+ has-property-descriptors "^1.0.2"
+ hasown "^2.0.4"
is-callable "^1.2.7"
+ is-document.all "^1.0.0"
functions-have-names@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+generator-function@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2"
+ integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
@@ -4745,10 +3758,10 @@ get-tsconfig@4.8.1:
dependencies:
resolve-pkg-maps "^1.0.0"
-get-tsconfig@^4.10.0, get-tsconfig@^4.7.0, get-tsconfig@^4.7.5:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e"
- integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==
+get-tsconfig@^4.10.0, get-tsconfig@^4.7.0:
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.14.3.tgz#7bcc9f3ab5fb6d30ad0a301898c859d34164dcd9"
+ integrity sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==
dependencies:
resolve-pkg-maps "^1.0.0"
@@ -4766,10 +3779,10 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+globals@16.4.0:
+ version "16.4.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-16.4.0.tgz#574bc7e72993d40cf27cf6c241f324ee77808e51"
+ integrity sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==
globals@^14.0.0:
version "14.0.0"
@@ -4794,15 +3807,10 @@ graceful-fs@^4.2.4:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
-graphemer@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
- integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
-
graphql-http@^1.22.0:
- version "1.22.4"
- resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.22.4.tgz#47b52ef0ab1f412943aca33ecfcdf22de525d59b"
- integrity sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA==
+ version "1.23.0"
+ resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.23.0.tgz#b26600311e308aca236e007cff9fa17b5a41ca41"
+ integrity sha512-nQbRzoaqyNBVFG6X6r0mXC6S4X9eZOmmGz6t3l9H3MVKc2em3KeQAx+KhZKKFzj56ePDEncMOXeLu/hjO/4LQg==
graphql-playground-html@1.6.30:
version "1.6.30"
@@ -4819,21 +3827,22 @@ graphql-scalars@1.22.2:
tslib "^2.5.0"
graphql@^16.8.1:
- version "16.11.0"
- resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633"
- integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==
+ version "16.14.2"
+ resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.14.2.tgz#83faf25869e3df727cc855161db5da85b0e5b2c0"
+ integrity sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==
happy-dom@^20.0.0:
- version "20.8.4"
- resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-20.8.4.tgz#bf0e650dd69ac163b24c2fb7c709e5bc7229bc6f"
- integrity sha512-GKhjq4OQCYB4VLFBzv8mmccUadwlAusOZOI7hC1D9xDIT5HhzkJK17c4el2f6R6C715P9xB4uiMxeKUa2nHMwQ==
+ version "20.14.0"
+ resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-20.14.0.tgz#92bd0629d00bcdbb1f254a504980f4c99f0f6652"
+ integrity sha512-4bRh1KzRvKDnFNTlLhzT1RZTpkKhQbQDl9j+7GXszWsvuspYdo29k6OHRf4PwiM6oLb8r/pMWeYiJjkfod5AvQ==
dependencies:
"@types/node" ">=20.0.0"
"@types/whatwg-mimetype" "^3.0.2"
"@types/ws" "^8.18.1"
+ buffer-image-size "^0.6.4"
entities "^7.0.1"
whatwg-mimetype "^3.0.0"
- ws "^8.18.3"
+ ws "^8.21.0"
has-bigints@^1.0.2:
version "1.1.0"
@@ -4871,10 +3880,10 @@ has-tostringtag@^1.0.2:
dependencies:
has-symbols "^1.0.3"
-hasown@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
- integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+hasown@^2.0.2, hasown@^2.0.3, hasown@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003"
+ integrity sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==
dependencies:
function-bind "^1.1.2"
@@ -4883,6 +3892,18 @@ help-me@^5.0.0:
resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6"
integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==
+hermes-estree@0.25.1:
+ version "0.25.1"
+ resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480"
+ integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==
+
+hermes-parser@^0.25.1:
+ version "0.25.1"
+ resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1"
+ integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==
+ dependencies:
+ hermes-estree "0.25.1"
+
hoist-non-react-statics@^3.3.1:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
@@ -4905,27 +3926,20 @@ ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
-ignore@^7.0.0:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9"
- integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==
+ignore@^7.0.5:
+ version "7.0.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.8.tgz#84d8466899958458ee30b4190c839ee1446cc88d"
+ integrity sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==
-image-size@2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/image-size/-/image-size-2.0.2.tgz#84a7b43704db5736f364bf0d1b029821299b4bdc"
- integrity sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==
-
-image-size@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.2.1.tgz#ee118aedfe666db1a6ee12bed5821cde3740276d"
- integrity sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==
- dependencies:
- queue "6.0.2"
+image-dimensions@2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/image-dimensions/-/image-dimensions-2.5.1.tgz#cb9e2a959aa4a0a2938079f50e7129f6354fbf21"
+ integrity sha512-It7CkTNp7IYA8jhvGgz8K18OAbHF3/Juk8RNEyTyMFfolJOIU1Y2wGDnzDQPbGCjyxVF/++pwIZE0BKJUEOb1g==
immutable@^4.0.0:
- version "4.3.7"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381"
- integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
+ version "4.3.9"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.9.tgz#c98349e05e9c6e2a4d8fe88ac0b363e0d536b544"
+ integrity sha512-ObHy4YN7ycwZOUCLI1/6svfyAFu7vL8RhAvVu/bh/RZW9EPlOyDaQ9jDQWCtdqzaXUjgXZCW1migtHE7YI7UGQ==
import-fresh@^3.2.1:
version "3.3.1"
@@ -4940,7 +3954,7 @@ imurmurhash@^0.1.4:
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
-inherits@^2.0.3, inherits@~2.0.3, inherits@~2.0.4:
+inherits@^2.0.3, inherits@~2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -5036,12 +4050,12 @@ is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
- integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
+is-core-module@^2.16.1, is-core-module@^2.16.2:
+ version "2.16.2"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.2.tgz#3e07450a8080ebce3fbf0cac494f4d2ab324e082"
+ integrity sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==
dependencies:
- hasown "^2.0.2"
+ hasown "^2.0.3"
is-data-view@^1.0.1, is-data-view@^1.0.2:
version "1.0.2"
@@ -5052,7 +4066,7 @@ is-data-view@^1.0.1, is-data-view@^1.0.2:
get-intrinsic "^1.2.6"
is-typed-array "^1.1.13"
-is-date-object@^1.0.5, is-date-object@^1.1.0:
+is-date-object@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7"
integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==
@@ -5065,6 +4079,13 @@ is-decimal@^2.0.0:
resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7"
integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==
+is-document.all@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-document.all/-/is-document.all-1.0.0.tgz#163a4bfb362c6ed7b118ce46cdecc4e37dee3195"
+ integrity sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==
+ dependencies:
+ call-bound "^1.0.4"
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -5078,12 +4099,13 @@ is-finalizationregistry@^1.1.0:
call-bound "^1.0.3"
is-generator-function@^1.0.10:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca"
- integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5"
+ integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==
dependencies:
- call-bound "^1.0.3"
- get-proto "^1.0.0"
+ call-bound "^1.0.4"
+ generator-function "^2.0.0"
+ get-proto "^1.0.1"
has-tostringtag "^1.0.2"
safe-regex-test "^1.1.0"
@@ -5144,7 +4166,7 @@ is-shared-array-buffer@^1.0.4:
dependencies:
call-bound "^1.0.3"
-is-string@^1.0.7, is-string@^1.1.1:
+is-string@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9"
integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==
@@ -5152,7 +4174,7 @@ is-string@^1.0.7, is-string@^1.1.1:
call-bound "^1.0.3"
has-tostringtag "^1.0.2"
-is-symbol@^1.0.4, is-symbol@^1.1.1:
+is-symbol@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634"
integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==
@@ -5211,7 +4233,7 @@ isomorphic-unfetch@^3.0.0:
node-fetch "^2.6.1"
unfetch "^4.2.0"
-iterator.prototype@^1.1.4:
+iterator.prototype@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39"
integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==
@@ -5223,35 +4245,35 @@ iterator.prototype@^1.1.4:
has-symbols "^1.1.0"
set-function-name "^2.0.2"
-jiti@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560"
- integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
+jiti@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.7.0.tgz#974228f2f4ca2bc21885a1797b45fea68e950c64"
+ integrity sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==
-jose@5.9.6:
- version "5.9.6"
- resolved "https://registry.yarnpkg.com/jose/-/jose-5.9.6.tgz#77f1f901d88ebdc405e57cce08d2a91f47521883"
- integrity sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==
+jose@5.10.0:
+ version "5.10.0"
+ resolved "https://registry.yarnpkg.com/jose/-/jose-5.10.0.tgz#c37346a099d6467c401351a9a0c2161e0f52c4be"
+ integrity sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==
joycon@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03"
integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==
-js-cookie@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
- integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
+js-cookie@^3.0.7:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.8.tgz#444e6f4b27a5d844594fef61c9d6bca5f0787688"
+ integrity sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
- integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+js-yaml@^4.1.0, js-yaml@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.2.tgz#8e44fb14a2643c59726bb15787b5f1512cb3d3fb"
+ integrity sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==
dependencies:
argparse "^2.0.1"
@@ -5307,7 +4329,7 @@ json5@^1.0.2:
dependencies:
minimist "^1.2.0"
-json5@^2.2.2:
+json5@^2.2.2, json5@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
@@ -5364,73 +4386,79 @@ lexical@0.41.0:
resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.41.0.tgz#b921d47d7324e03dbc967f5b328c4efe69d4815e"
integrity sha512-pNIm5+n+hVnJHB9gYPDYsIO5Y59dNaDU9rJmPPsfqQhP2ojKFnUoPbcRnrI9FJLXB14sSumcY8LUw7Sq70TZqA==
-lightningcss-darwin-arm64@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz#3d47ce5e221b9567c703950edf2529ca4a3700ae"
- integrity sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==
-
-lightningcss-darwin-x64@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz#e81105d3fd6330860c15fe860f64d39cff5fbd22"
- integrity sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==
-
-lightningcss-freebsd-x64@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz#a0e732031083ff9d625c5db021d09eb085af8be4"
- integrity sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==
-
-lightningcss-linux-arm-gnueabihf@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz#1f5ecca6095528ddb649f9304ba2560c72474908"
- integrity sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==
-
-lightningcss-linux-arm64-gnu@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz#eee7799726103bffff1e88993df726f6911ec009"
- integrity sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==
-
-lightningcss-linux-arm64-musl@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz#f2e4b53f42892feeef8f620cbb889f7c064a7dfe"
- integrity sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==
-
-lightningcss-linux-x64-gnu@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz#2fc7096224bc000ebb97eea94aea248c5b0eb157"
- integrity sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==
-
-lightningcss-linux-x64-musl@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz#66dca2b159fd819ea832c44895d07e5b31d75f26"
- integrity sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==
-
-lightningcss-win32-arm64-msvc@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz#7d8110a19d7c2d22bfdf2f2bb8be68e7d1b69039"
- integrity sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==
-
-lightningcss-win32-x64-msvc@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz#fd7dd008ea98494b85d24b4bea016793f2e0e352"
- integrity sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==
-
-lightningcss@1.30.1:
- version "1.30.1"
- resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.30.1.tgz#78e979c2d595bfcb90d2a8c0eb632fe6c5bfed5d"
- integrity sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==
+lightningcss-android-arm64@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz#f033885116dfefd9c6f54787523e3514b61e1968"
+ integrity sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==
+
+lightningcss-darwin-arm64@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz#50b71871b01c8199584b649e292547faea7af9b5"
+ integrity sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==
+
+lightningcss-darwin-x64@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz#35f3e97332d130b9ca181e11b568ded6aebc6d5e"
+ integrity sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==
+
+lightningcss-freebsd-x64@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz#9777a76472b64ed6ff94342ad64c7bafd794a575"
+ integrity sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==
+
+lightningcss-linux-arm-gnueabihf@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz#13ae652e1ab73b9135d7b7da172f666c410ad53d"
+ integrity sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==
+
+lightningcss-linux-arm64-gnu@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz#417858795a94592f680123a1b1f9da8a0e1ef335"
+ integrity sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==
+
+lightningcss-linux-arm64-musl@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz#6be36692e810b718040802fd809623cffe732133"
+ integrity sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==
+
+lightningcss-linux-x64-gnu@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz#0b7803af4eb21cfd38dd39fe2abbb53c7dd091f6"
+ integrity sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==
+
+lightningcss-linux-x64-musl@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz#88dc8ba865ddddb1ac5ef04b0f161804418c163b"
+ integrity sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==
+
+lightningcss-win32-arm64-msvc@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz#4f30ba3fa5e925f5b79f945e8cc0d176c3b1ab38"
+ integrity sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==
+
+lightningcss-win32-x64-msvc@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz#141aa5605645064928902bb4af045fa7d9f4220a"
+ integrity sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==
+
+lightningcss@1.32.0:
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.32.0.tgz#b85aae96486dcb1bf49a7c8571221273f4f1e4a9"
+ integrity sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==
dependencies:
detect-libc "^2.0.3"
optionalDependencies:
- lightningcss-darwin-arm64 "1.30.1"
- lightningcss-darwin-x64 "1.30.1"
- lightningcss-freebsd-x64 "1.30.1"
- lightningcss-linux-arm-gnueabihf "1.30.1"
- lightningcss-linux-arm64-gnu "1.30.1"
- lightningcss-linux-arm64-musl "1.30.1"
- lightningcss-linux-x64-gnu "1.30.1"
- lightningcss-linux-x64-musl "1.30.1"
- lightningcss-win32-arm64-msvc "1.30.1"
- lightningcss-win32-x64-msvc "1.30.1"
+ lightningcss-android-arm64 "1.32.0"
+ lightningcss-darwin-arm64 "1.32.0"
+ lightningcss-darwin-x64 "1.32.0"
+ lightningcss-freebsd-x64 "1.32.0"
+ lightningcss-linux-arm-gnueabihf "1.32.0"
+ lightningcss-linux-arm64-gnu "1.32.0"
+ lightningcss-linux-arm64-musl "1.32.0"
+ lightningcss-linux-x64-gnu "1.32.0"
+ lightningcss-linux-x64-musl "1.32.0"
+ lightningcss-win32-arm64-msvc "1.32.0"
+ lightningcss-win32-x64-msvc "1.32.0"
lines-and-columns@^1.1.6:
version "1.2.4"
@@ -5444,25 +4472,15 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
-lodash.castarray@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
- integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==
-
-lodash.isplainobject@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
- integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
-
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+ version "4.18.1"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c"
+ integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==
longest-streak@^3.0.0:
version "3.1.0"
@@ -5476,17 +4494,24 @@ loose-envify@^1.4.0:
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
lucide-react@^0.511.0:
version "0.511.0"
resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.511.0.tgz#1dfef3065c725ac83f5fe0a6f02d1e0b0c36e641"
integrity sha512-VK5a2ydJ7xm8GvBeKLS9mu1pVK6ucef9780JVUjw6bAjJL/QXnd4Y0p7SPeOUMC27YhzNCZvm5d/QX0Tp3rc0w==
-magic-string@^0.30.17:
- version "0.30.17"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
- integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
+magic-string@^0.30.21:
+ version "0.30.21"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91"
+ integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==
dependencies:
- "@jridgewell/sourcemap-codec" "^1.5.0"
+ "@jridgewell/sourcemap-codec" "^1.5.5"
math-intrinsics@^1.1.0:
version "1.1.0"
@@ -5502,7 +4527,7 @@ md5@2.3.0:
crypt "0.0.2"
is-buffer "~1.1.6"
-mdast-util-from-markdown@2.0.2, mdast-util-from-markdown@^2.0.0:
+mdast-util-from-markdown@2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a"
integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==
@@ -5520,6 +4545,24 @@ mdast-util-from-markdown@2.0.2, mdast-util-from-markdown@^2.0.0:
micromark-util-types "^2.0.0"
unist-util-stringify-position "^4.0.0"
+mdast-util-from-markdown@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz#c95822b91aab75f18a4cbe8b2f51b873ed2cf0c7"
+ integrity sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==
+ 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"
+
mdast-util-mdx-jsx@3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz#76b957b3da18ebcfd0de3a9b4451dcd6fdec2320"
@@ -5817,7 +4860,7 @@ micromark@^4.0.0:
micromark-util-symbol "^2.0.0"
micromark-util-types "^2.0.0"
-micromatch@^4.0.4, micromatch@^4.0.8:
+micromatch@^4.0.4:
version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -5825,82 +4868,76 @@ micromatch@^4.0.4, micromatch@^4.0.8:
braces "^3.0.3"
picomatch "^2.3.1"
-minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+minimatch@^10.2.2:
+ version "10.2.6"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.6.tgz#fd956bbe0b77241e9f15ac5dccb1c638060968ef"
+ integrity sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==
dependencies:
- brace-expansion "^1.1.7"
+ brace-expansion "^5.0.8"
-minimatch@^9.0.4:
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
- integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+minimatch@^3.1.2, minimatch@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e"
+ integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==
dependencies:
- brace-expansion "^2.0.1"
+ brace-expansion "^1.1.7"
minimist@1.2.8, minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-minipass@^7.0.4, minipass@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
- integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
-
-minizlib@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574"
- integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==
- dependencies:
- minipass "^7.1.2"
-
-mkdirp@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
- integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
-
ms@^2.1.1, ms@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-nanoid@^3.3.11, nanoid@^3.3.6:
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
- integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
+nanoid@^3.3.16, nanoid@^3.3.18:
+ version "3.3.18"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.18.tgz#f66a2de1199ffde0fcf21c8a5f13106b1c081913"
+ integrity sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==
-napi-postinstall@^0.2.2:
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.2.4.tgz#419697d0288cb524623e422f919624f22a5e4028"
- integrity sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==
+napi-postinstall@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.4.tgz#7af256d6588b5f8e952b9190965d6b019653bbb9"
+ integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-next@15.5.9:
- version "15.5.9"
- resolved "https://registry.yarnpkg.com/next/-/next-15.5.9.tgz#1b80d05865cc27e710fb4dcfc6fd9e726ed12ad4"
- integrity sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==
+next@16.3.4:
+ version "16.3.4"
+ resolved "https://registry.yarnpkg.com/next/-/next-16.3.4.tgz#eaa69d905ac44ad8d57e8f3461d9da0fc4a7058b"
+ integrity sha512-/Ztf6CeRH+ejEXUrYtqI4gkS66eFIHuSwqi60RgcpWKodxFZx2/dqVCMKBwILfAHXQ+F1b1vAudgj3mnxqtoIA==
dependencies:
- "@next/env" "15.5.9"
- "@swc/helpers" "0.5.15"
+ "@next/env" "16.3.4"
+ "@swc/helpers" "0.5.23"
+ baseline-browser-mapping "^2.9.19"
caniuse-lite "^1.0.30001579"
- postcss "8.4.31"
+ postcss "8.5.23"
styled-jsx "5.1.6"
optionalDependencies:
- "@next/swc-darwin-arm64" "15.5.7"
- "@next/swc-darwin-x64" "15.5.7"
- "@next/swc-linux-arm64-gnu" "15.5.7"
- "@next/swc-linux-arm64-musl" "15.5.7"
- "@next/swc-linux-x64-gnu" "15.5.7"
- "@next/swc-linux-x64-musl" "15.5.7"
- "@next/swc-win32-arm64-msvc" "15.5.7"
- "@next/swc-win32-x64-msvc" "15.5.7"
- sharp "^0.34.3"
+ "@next/swc-darwin-arm64" "16.3.4"
+ "@next/swc-darwin-x64" "16.3.4"
+ "@next/swc-linux-arm64-gnu" "16.3.4"
+ "@next/swc-linux-arm64-musl" "16.3.4"
+ "@next/swc-linux-x64-gnu" "16.3.4"
+ "@next/swc-linux-x64-musl" "16.3.4"
+ "@next/swc-win32-arm64-msvc" "16.3.4"
+ "@next/swc-win32-x64-msvc" "16.3.4"
+ sharp "^0.35.4"
+
+node-exports-info@^1.6.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.2.tgz#243a3105677d6781cd26e6a72350fd928a5cb46f"
+ integrity sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==
+ dependencies:
+ array.prototype.flatmap "^1.3.3"
+ es-errors "^1.3.0"
+ object.entries "^1.1.9"
+ semver "^6.3.1"
node-fetch@^2.6.1:
version "2.7.0"
@@ -5909,26 +4946,21 @@ node-fetch@^2.6.1:
dependencies:
whatwg-url "^5.0.0"
-node-releases@^2.0.19:
- version "2.0.19"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
- integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
+node-releases@^2.0.54:
+ version "2.0.54"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.54.tgz#09af17d5647aa9f221ec5cf2becb95b68a981afe"
+ integrity sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==
-nodemailer@7.0.12:
- version "7.0.12"
- resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-7.0.12.tgz#b6b7bb05566c6c8458ee360aa30a407a478d35b7"
- integrity sha512-H+rnK5bX2Pi/6ms3sN4/jRQvYSMltV6vqup/0SFOrxYYY/qoNvhXPlYq3e+Pm9RFJRwrMGbMIwi81M4dxpomhA==
+nodemailer@^9.0.1:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-9.1.1.tgz#fb991992723657f34dbe1d829139aa66be008e96"
+ integrity sha512-izw9mVKFix6YSnC9eLgV6g1opl9DUlRio9ZNcq+Wu9Ujn2UwF+8Nl0B8nz22kEC+CTZCvinkxwJ0DeFbb6NwcQ==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-
object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -5990,7 +5022,7 @@ object.groupby@^1.0.3:
define-properties "^1.2.1"
es-abstract "^1.23.2"
-object.values@^1.1.6, object.values@^1.2.0, object.values@^1.2.1:
+object.values@^1.1.6, object.values@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216"
integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==
@@ -6000,11 +5032,6 @@ object.values@^1.1.6, object.values@^1.2.0, object.values@^1.2.1:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-obuf@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
- integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-
on-exit-leak-free@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8"
@@ -6030,11 +5057,12 @@ optionator@^0.9.3:
word-wrap "^1.2.5"
own-keys@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358"
- integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.2.tgz#31448ec1f781ecb1447f6f6aa0d6534222af59de"
+ integrity sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==
dependencies:
- get-intrinsic "^1.2.6"
+ call-bound "^1.0.4"
+ get-intrinsic "^1.3.0"
object-keys "^1.1.1"
safe-push-apply "^1.0.0"
@@ -6052,6 +5080,11 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
+pako@^1.0.10, pako@^1.0.11, pako@^1.0.6:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -6107,84 +5140,79 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-payload@^3.80.0:
- version "3.80.0"
- resolved "https://registry.yarnpkg.com/payload/-/payload-3.80.0.tgz#ab31b7f6cb7879ad58773521e3edec6bdb5f7aac"
- integrity sha512-GcVN0NavtFjDzaivz+yY10skQ9BAzrU/YE4xqykFNDD1gT6sogvTEJBMuEI2dYxIw/J7wDHDaKzzH/g/tWNT0w==
+payload@3.88.0:
+ version "3.88.0"
+ resolved "https://registry.yarnpkg.com/payload/-/payload-3.88.0.tgz#2a534efd3287f712282723bdfc83dc7679c9c823"
+ integrity sha512-O7zuS80bvEGLte+7xZjwN05+ox5BCsGcQT2M6+CTote07JQOOvHJoiuoyQFw6cUElcFTWGMC5dy03w7J7sTYGg==
dependencies:
"@next/env" "^15.1.5"
- "@payloadcms/translations" "3.80.0"
+ "@payloadcms/translations" "3.88.0"
"@types/busboy" "1.5.4"
- ajv "8.17.1"
+ ajv "8.18.0"
bson-objectid "2.0.4"
busboy "^1.6.0"
ci-info "^4.1.0"
console-table-printer "2.12.1"
- croner "9.1.0"
+ croner "10.0.1"
dataloader "2.2.3"
deepmerge "4.3.1"
- file-type "19.3.0"
+ file-type "21.3.4"
get-tsconfig "4.8.1"
http-status "2.1.0"
- image-size "2.0.2"
+ image-dimensions "2.5.1"
ipaddr.js "2.2.0"
- jose "5.9.6"
+ jose "5.10.0"
json-schema-to-typescript "15.0.3"
minimist "1.2.8"
path-to-regexp "6.3.0"
pino "9.14.0"
pino-pretty "13.1.2"
pluralize "8.0.0"
- qs-esm "7.0.2"
+ qs-esm "8.0.1"
range-parser "1.2.1"
sanitize-filename "1.6.3"
ts-essentials "10.0.3"
- tsx "4.21.0"
- undici "7.24.4"
- uuid "10.0.0"
+ tsx "4.22.4"
+ undici "7.29.0"
+ uuid "13.0.2"
ws "^8.16.0"
-peek-readable@^5.1.4:
- version "5.4.2"
- resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.4.2.tgz#aff1e1ba27a7d6911ddb103f35252ffc1787af49"
- integrity sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==
+pdf-lib@^1.17.1:
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/pdf-lib/-/pdf-lib-1.17.1.tgz#9e7dd21261a0c1fb17992580885b39e7d08f451f"
+ integrity sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==
+ dependencies:
+ "@pdf-lib/standard-fonts" "^1.0.0"
+ "@pdf-lib/upng" "^1.0.1"
+ pako "^1.0.11"
+ tslib "^1.11.1"
-pg-cloudflare@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz#a1f3d226bab2c45ae75ea54d65ec05ac6cfafbef"
- integrity sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==
+pg-cloudflare@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz#4b4c20e6d8ae531d400730f4804571a8d62f1497"
+ integrity sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==
-pg-connection-string@^2.9.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.9.1.tgz#bb1fd0011e2eb76ac17360dc8fa183b2d3465238"
- integrity sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==
+pg-connection-string@^2.12.0:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.14.0.tgz#abc26ee4f37c56c0f3ae0fcf0b0653cc4e1c0fd9"
+ integrity sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==
pg-int8@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c"
integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==
-pg-numeric@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a"
- integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==
-
-pg-pool@^3.10.1:
- version "3.10.1"
- resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.10.1.tgz#481047c720be2d624792100cac1816f8850d31b2"
- integrity sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==
-
-pg-protocol@*:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.10.0.tgz#a473afcbb1c6e5dc3ac24869ba3dd563f8a1ae1b"
- integrity sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==
+pg-pool@^3.13.0:
+ version "3.14.0"
+ resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.14.0.tgz#f35ae4eb846780cad71af24099b3edfa9781ad90"
+ integrity sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==
-pg-protocol@^1.10.3:
- version "1.10.3"
- resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.10.3.tgz#ac9e4778ad3f84d0c5670583bab976ea0a34f69f"
- integrity sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==
+pg-protocol@*, pg-protocol@^1.13.0:
+ version "1.16.0"
+ resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.16.0.tgz#cffb008826561ee9770a8a15dc21f269d731b305"
+ integrity sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==
-pg-types@2.2.0:
+pg-types@2.2.0, pg-types@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3"
integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==
@@ -6195,31 +5223,18 @@ pg-types@2.2.0:
postgres-date "~1.0.4"
postgres-interval "^1.1.0"
-pg-types@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.2.tgz#399209a57c326f162461faa870145bb0f918b76d"
- integrity sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==
+pg@8.20.0:
+ version "8.20.0"
+ resolved "https://registry.yarnpkg.com/pg/-/pg-8.20.0.tgz#1a274de944cb329fd6dd77a6d371a005ba6b136d"
+ integrity sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==
dependencies:
- pg-int8 "1.0.1"
- pg-numeric "1.0.2"
- postgres-array "~3.0.1"
- postgres-bytea "~3.0.0"
- postgres-date "~2.1.0"
- postgres-interval "^3.0.0"
- postgres-range "^1.1.1"
-
-pg@8.16.3:
- version "8.16.3"
- resolved "https://registry.yarnpkg.com/pg/-/pg-8.16.3.tgz#160741d0b44fdf64680e45374b06d632e86c99fd"
- integrity sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==
- dependencies:
- pg-connection-string "^2.9.1"
- pg-pool "^3.10.1"
- pg-protocol "^1.10.3"
+ pg-connection-string "^2.12.0"
+ pg-pool "^3.13.0"
+ pg-protocol "^1.13.0"
pg-types "2.2.0"
pgpass "1.0.5"
optionalDependencies:
- pg-cloudflare "^1.2.7"
+ pg-cloudflare "^1.3.0"
pgpass@1.0.5:
version "1.0.5"
@@ -6228,20 +5243,20 @@ pgpass@1.0.5:
dependencies:
split2 "^4.1.0"
-picocolors@^1.0.0, picocolors@^1.1.1:
+picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601"
+ integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==
-picomatch@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
- integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
+picomatch@^4.0.4:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.7.tgz#6313360034ccb36b3dc61ecbdff78121f90fe21f"
+ integrity sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==
pino-abstract-transport@^2.0.0:
version "2.0.0"
@@ -6270,9 +5285,9 @@ pino-pretty@13.1.2:
strip-json-comments "^5.0.2"
pino-std-serializers@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b"
- integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz#a7b0cd65225f29e92540e7853bd73b07479893fc"
+ integrity sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==
pino@9.14.0:
version "9.14.0"
@@ -6296,7 +5311,7 @@ pluralize@8.0.0:
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
-possible-typed-array-names@^1.0.0:
+possible-typed-array-names@^1.0.0, possible-typed-array-names@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"
integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==
@@ -6314,21 +5329,21 @@ postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@8.4.31:
- version "8.4.31"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
- integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
+postcss@8.5.23:
+ version "8.5.23"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.23.tgz#3493550116f478487298301d2c2e8dc5a56e6594"
+ integrity sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==
dependencies:
- nanoid "^3.3.6"
- picocolors "^1.0.0"
- source-map-js "^1.0.2"
+ nanoid "^3.3.16"
+ picocolors "^1.1.1"
+ source-map-js "^1.2.1"
-postcss@^8.4.41, postcss@^8.5.3:
- version "8.5.4"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.4.tgz#d61014ac00e11d5f58458ed7247d899bd65f99c0"
- integrity sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==
+postcss@^8.5.16, postcss@^8.5.3:
+ version "8.5.28"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.28.tgz#da4563a99a06e62d6c1cd1acae363224bcaed6e9"
+ integrity sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==
dependencies:
- nanoid "^3.3.11"
+ nanoid "^3.3.18"
picocolors "^1.1.1"
source-map-js "^1.2.1"
@@ -6337,33 +5352,16 @@ postgres-array@~2.0.0:
resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e"
integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==
-postgres-array@~3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.4.tgz#4efcaf4d2c688d8bcaa8620ed13f35f299f7528c"
- integrity sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==
-
postgres-bytea@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35"
- integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==
-
-postgres-bytea@~3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089"
- integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==
- dependencies:
- obuf "~1.1.2"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.1.tgz#c40b3da0222c500ff1e51c5d7014b60b79697c7a"
+ integrity sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==
postgres-date@~1.0.4:
version "1.0.7"
resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8"
integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==
-postgres-date@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.1.0.tgz#b85d3c1fb6fb3c6c8db1e9942a13a3bf625189d0"
- integrity sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==
-
postgres-interval@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695"
@@ -6371,16 +5369,6 @@ postgres-interval@^1.1.0:
dependencies:
xtend "^4.0.0"
-postgres-interval@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a"
- integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==
-
-postgres-range@^1.1.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863"
- integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==
-
preact@~10.12.1:
version "10.12.1"
resolved "https://registry.yarnpkg.com/preact/-/preact-10.12.1.tgz#8f9cb5442f560e532729b7d23d42fd1161354a21"
@@ -6392,9 +5380,9 @@ prelude-ls@^1.2.1:
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier@^3.2.5:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5"
- integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==
+ version "3.9.6"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.9.6.tgz#b3ea5146515d40fc53f18aa63f74dfab1e10dbf6"
+ integrity sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==
prismjs@^1.30.0:
version "1.30.0"
@@ -6402,9 +5390,9 @@ prismjs@^1.30.0:
integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==
process-warning@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7"
- integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.1.0.tgz#0ea094b18b610f594243efc585e20f2dbee555dc"
+ integrity sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw==
prompts@2.4.2:
version "2.4.2"
@@ -6424,9 +5412,9 @@ prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.8.1:
react-is "^16.13.1"
pump@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8"
- integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c"
+ integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
@@ -6436,23 +5424,16 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-qs-esm@7.0.2:
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/qs-esm/-/qs-esm-7.0.2.tgz#cdd52c8ddba8270258e0808423e8f28d8a7195c9"
- integrity sha512-D8NAthKSD7SGn748v+GLaaO6k08Mvpoqroa35PqIQC4gtUa8/Pb/k+r0m0NnGBVbHDP1gKZ2nVywqfMisRhV5A==
+qs-esm@8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/qs-esm/-/qs-esm-8.0.1.tgz#4c96cfd41ec5d45cdf8f971c3d056032c81f5a20"
+ integrity sha512-eZ7l+0ZVy3He9c85pEM9KEBR9DFA4jrmWvIjm9wpcHvScwc/vgZDl2TNOF0pm0JsWKw24XBUZOY0Wxn7/nvJnw==
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-queue@6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65"
- integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==
- dependencies:
- inherits "~2.0.3"
-
quick-format-unescaped@^4.0.3:
version "4.0.4"
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
@@ -6472,10 +5453,10 @@ react-datepicker@7.6.0:
clsx "^2.1.1"
date-fns "^3.6.0"
-react-dom@19.2.1:
- version "19.2.1"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.1.tgz#ce3527560bda4f997e47d10dab754825b3061f59"
- integrity sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==
+react-dom@19.2.8:
+ version "19.2.8"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.8.tgz#3b46b9eeda877cdff2cf13d2770fff4ae36c2ec2"
+ integrity sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==
dependencies:
scheduler "^0.27.0"
@@ -6487,9 +5468,9 @@ react-error-boundary@4.1.2:
"@babel/runtime" "^7.12.5"
react-error-boundary@^6.0.0:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-6.1.1.tgz#491d655e86c32434ede852755bb649119fdddd89"
- integrity sha512-BrYwPOdXi5mqkk5lw+Uvt0ThHx32rCt3BkukS4X23A2AIWDPSGX6iaWTc0y9TU/mHDA/6qOSGel+B2ERkOvD1w==
+ version "6.1.5"
+ resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-6.1.5.tgz#239cefdd181285377f2444461e254f07d2324927"
+ integrity sha512-l2nk+KhgM6e79tAiHEs3tXTdiTW4ARniKYMQN+cLY5vQFpDOkxuXKIC4uIwYuIKoMpFQ6jEbQz9wBArUmq7GWA==
react-image-crop@10.1.8:
version "10.1.8"
@@ -6526,10 +5507,10 @@ react-transition-group@4.4.5, react-transition-group@^4.3.0:
loose-envify "^1.4.0"
prop-types "^15.6.2"
-react@19.2.1:
- version "19.2.1"
- resolved "https://registry.yarnpkg.com/react/-/react-19.2.1.tgz#8600fa205e58e2e807f6ef431c9f6492591a2700"
- integrity sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==
+react@19.2.8:
+ version "19.2.8"
+ resolved "https://registry.yarnpkg.com/react/-/react-19.2.8.tgz#a80663dbb58d69c6fe3fd291d3cb324e8a7dff2d"
+ integrity sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==
readable-stream@^3.5.0:
version "3.6.2"
@@ -6552,7 +5533,7 @@ real-require@^0.2.0:
resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78"
integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==
-reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
+reflect.getprototypeof@^1.0.10, reflect.getprototypeof@^1.0.9:
version "1.0.10"
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9"
integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==
@@ -6566,7 +5547,7 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
get-proto "^1.0.1"
which-builtin-type "^1.2.1"
-regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4:
+regexp.prototype.flags@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19"
integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==
@@ -6593,21 +5574,25 @@ resolve-pkg-maps@^1.0.0:
resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
-resolve@^1.19.0, resolve@^1.22.4:
- version "1.22.10"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
- integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
+resolve@^1.19.0:
+ version "1.22.12"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f"
+ integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==
dependencies:
- is-core-module "^2.16.0"
+ es-errors "^1.3.0"
+ is-core-module "^2.16.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^2.0.0-next.5:
- version "2.0.0-next.5"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c"
- integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==
+resolve@^2.0.0-next.5, resolve@^2.0.0-next.6:
+ version "2.0.0-next.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.7.tgz#ba3b035d4b1ee7c522426eee73cabcb0fd5515dd"
+ integrity sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==
dependencies:
- is-core-module "^2.13.0"
+ es-errors "^1.3.0"
+ is-core-module "^2.16.2"
+ node-exports-info "^1.6.0"
+ object-keys "^1.1.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -6624,13 +5609,13 @@ run-parallel@^1.1.9:
queue-microtask "^1.2.2"
safe-array-concat@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3"
- integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.4.tgz#a54cc9b61a57f33b42abad3cbdda3a2b38cc5719"
+ integrity sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.2"
- get-intrinsic "^1.2.6"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
+ get-intrinsic "^1.3.0"
has-symbols "^1.1.0"
isarray "^2.0.5"
@@ -6697,15 +5682,10 @@ semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.6.0, semver@^7.7.1:
- version "7.7.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
- integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
-
-semver@^7.7.3:
- version "7.7.3"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
- integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
+semver@^7.7.1, semver@^7.7.3, semver@^7.8.5:
+ version "7.8.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69"
+ integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==
set-function-length@^1.2.2:
version "1.2.2"
@@ -6738,39 +5718,40 @@ set-proto@^1.0.0:
es-errors "^1.3.0"
es-object-atoms "^1.0.0"
-sharp@^0.34.3:
- version "0.34.5"
- resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.34.5.tgz#b6f148e4b8c61f1797bde11a9d1cfebbae2c57b0"
- integrity sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==
+sharp@0.35.4, sharp@^0.35.4:
+ version "0.35.4"
+ resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.35.4.tgz#361df3b2959daeb380541289960456c6be0f92de"
+ integrity sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==
dependencies:
- "@img/colour" "^1.0.0"
+ "@img/colour" "^1.1.0"
detect-libc "^2.1.2"
- semver "^7.7.3"
+ semver "^7.8.5"
optionalDependencies:
- "@img/sharp-darwin-arm64" "0.34.5"
- "@img/sharp-darwin-x64" "0.34.5"
- "@img/sharp-libvips-darwin-arm64" "1.2.4"
- "@img/sharp-libvips-darwin-x64" "1.2.4"
- "@img/sharp-libvips-linux-arm" "1.2.4"
- "@img/sharp-libvips-linux-arm64" "1.2.4"
- "@img/sharp-libvips-linux-ppc64" "1.2.4"
- "@img/sharp-libvips-linux-riscv64" "1.2.4"
- "@img/sharp-libvips-linux-s390x" "1.2.4"
- "@img/sharp-libvips-linux-x64" "1.2.4"
- "@img/sharp-libvips-linuxmusl-arm64" "1.2.4"
- "@img/sharp-libvips-linuxmusl-x64" "1.2.4"
- "@img/sharp-linux-arm" "0.34.5"
- "@img/sharp-linux-arm64" "0.34.5"
- "@img/sharp-linux-ppc64" "0.34.5"
- "@img/sharp-linux-riscv64" "0.34.5"
- "@img/sharp-linux-s390x" "0.34.5"
- "@img/sharp-linux-x64" "0.34.5"
- "@img/sharp-linuxmusl-arm64" "0.34.5"
- "@img/sharp-linuxmusl-x64" "0.34.5"
- "@img/sharp-wasm32" "0.34.5"
- "@img/sharp-win32-arm64" "0.34.5"
- "@img/sharp-win32-ia32" "0.34.5"
- "@img/sharp-win32-x64" "0.34.5"
+ "@img/sharp-darwin-arm64" "0.35.4"
+ "@img/sharp-darwin-x64" "0.35.4"
+ "@img/sharp-freebsd-wasm32" "0.35.4"
+ "@img/sharp-libvips-darwin-arm64" "1.3.3"
+ "@img/sharp-libvips-darwin-x64" "1.3.3"
+ "@img/sharp-libvips-linux-arm" "1.3.3"
+ "@img/sharp-libvips-linux-arm64" "1.3.3"
+ "@img/sharp-libvips-linux-ppc64" "1.3.3"
+ "@img/sharp-libvips-linux-riscv64" "1.3.3"
+ "@img/sharp-libvips-linux-s390x" "1.3.3"
+ "@img/sharp-libvips-linux-x64" "1.3.3"
+ "@img/sharp-libvips-linuxmusl-arm64" "1.3.3"
+ "@img/sharp-libvips-linuxmusl-x64" "1.3.3"
+ "@img/sharp-linux-arm" "0.35.4"
+ "@img/sharp-linux-arm64" "0.35.4"
+ "@img/sharp-linux-ppc64" "0.35.4"
+ "@img/sharp-linux-riscv64" "0.35.4"
+ "@img/sharp-linux-s390x" "0.35.4"
+ "@img/sharp-linux-x64" "0.35.4"
+ "@img/sharp-linuxmusl-arm64" "0.35.4"
+ "@img/sharp-linuxmusl-x64" "0.35.4"
+ "@img/sharp-webcontainers-wasm32" "0.35.4"
+ "@img/sharp-win32-arm64" "0.35.4"
+ "@img/sharp-win32-ia32" "0.35.4"
+ "@img/sharp-win32-x64" "0.35.4"
shebang-command@^2.0.0:
version "2.0.0"
@@ -6784,13 +5765,13 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-side-channel-list@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
- integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
+side-channel-list@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127"
+ integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==
dependencies:
es-errors "^1.3.0"
- object-inspect "^1.13.3"
+ object-inspect "^1.13.4"
side-channel-map@^1.0.1:
version "1.0.1"
@@ -6813,21 +5794,21 @@ side-channel-weakmap@^1.0.2:
object-inspect "^1.13.3"
side-channel-map "^1.0.1"
-side-channel@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
- integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
+side-channel@^1.1.0, side-channel@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.1.tgz#ea02c62e05dc4bea67d4442f0fb71ee192f8e0ab"
+ integrity sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==
dependencies:
es-errors "^1.3.0"
- object-inspect "^1.13.3"
- side-channel-list "^1.0.0"
+ object-inspect "^1.13.4"
+ side-channel-list "^1.0.1"
side-channel-map "^1.0.1"
side-channel-weakmap "^1.0.2"
simple-wcswidth@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz#8ab18ac0ae342f9d9b629604e54d2aa1ecb018b2"
- integrity sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.1.2.tgz#66722f37629d5203f9b47c5477b1225b85d6525b"
+ integrity sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==
sisteransi@^1.0.5:
version "1.0.5"
@@ -6835,9 +5816,9 @@ sisteransi@^1.0.5:
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
sonic-boom@^4.0.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d"
- integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.1.tgz#28598250df4899c0ac572d7e2f0460690ba6a030"
+ integrity sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==
dependencies:
atomic-sleep "^1.0.0"
@@ -6846,7 +5827,7 @@ sonner@^1.7.2:
resolved "https://registry.yarnpkg.com/sonner/-/sonner-1.7.4.tgz#4c39820db86623800a17115c8970796aa862133a"
integrity sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==
-"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.1:
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
@@ -6915,23 +5896,23 @@ string.prototype.includes@^2.0.1:
es-abstract "^1.23.3"
string.prototype.matchall@^4.0.12:
- version "4.0.12"
- resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0"
- integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.1.0.tgz#8d854b2318fc596fc0877cfc6c4bcc50d0455b8e"
+ integrity sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.3"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
define-properties "^1.2.1"
- es-abstract "^1.23.6"
+ es-abstract "^1.24.2"
es-errors "^1.3.0"
- es-object-atoms "^1.0.0"
- get-intrinsic "^1.2.6"
+ es-object-atoms "^1.1.2"
+ get-intrinsic "^1.3.0"
gopd "^1.2.0"
has-symbols "^1.1.0"
internal-slot "^1.1.0"
- regexp.prototype.flags "^1.5.3"
+ regexp.prototype.flags "^1.5.4"
set-function-name "^2.0.2"
- side-channel "^1.1.0"
+ side-channel "^1.1.1"
string.prototype.repeat@^1.0.0:
version "1.0.0"
@@ -6942,27 +5923,28 @@ string.prototype.repeat@^1.0.0:
es-abstract "^1.17.5"
string.prototype.trim@^1.2.10:
- version "1.2.10"
- resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81"
- integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==
+ version "1.2.11"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz#e6bd19cda3985d05a42dda31f3ddf4d35d3430e3"
+ integrity sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.2"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
define-data-property "^1.1.4"
define-properties "^1.2.1"
- es-abstract "^1.23.5"
- es-object-atoms "^1.0.0"
+ es-abstract "^1.24.2"
+ es-object-atoms "^1.1.2"
has-property-descriptors "^1.0.2"
+ safe-regex-test "^1.1.0"
-string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942"
- integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==
+string.prototype.trimend@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz#be6bcf4f3fe0460bdeccdb2cf4f971b310f8346e"
+ integrity sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.2"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
define-properties "^1.2.1"
- es-object-atoms "^1.0.0"
+ es-object-atoms "^1.1.2"
string.prototype.trimstart@^1.0.8:
version "1.0.8"
@@ -7003,18 +5985,12 @@ strip-json-comments@^5.0.2:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.3.tgz#b7304249dd402ee67fd518ada993ab3593458bcf"
integrity sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==
-strnum@^1.0.5:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4"
- integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==
-
-strtok3@^8.0.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-8.1.0.tgz#9234a6f42ee03bf8569c7ae0788d5fd4e67e095b"
- integrity sha512-ExzDvHYPj6F6QkSNe/JxSlBxTh3OrI6wrAIz53ulxo1c4hBJ1bT9C/JrAthEKHWG9riVH3Xzg7B03Oxty6S2Lw==
+strtok3@^10.3.4:
+ version "10.3.5"
+ resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-10.3.5.tgz#7213285da0dc3dec0fc8ce5df4b8b7a733f14360"
+ integrity sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==
dependencies:
"@tokenizer/token" "^0.3.0"
- peek-readable "^5.1.4"
styled-jsx@5.1.6:
version "5.1.6"
@@ -7041,51 +6017,39 @@ supports-preserve-symlinks-flag@^1.0.0:
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tabbable@^6.0.0, tabbable@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
- integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.5.0.tgz#a65101385a4fd6cbd580b7546da0170f307b535d"
+ integrity sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==
tailwind-merge@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-3.3.0.tgz#d9bb4f298801ef6232ced4f97e830fc79bc3d3e7"
- integrity sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==
-
-tailwindcss@4.1.8, tailwindcss@^4.1.7:
- version "4.1.8"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.8.tgz#5d66d095ee7d82f03d6dbc6158bc248e064a5c05"
- integrity sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og==
-
-tapable@^2.2.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872"
- integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==
-
-tar@^7.4.3:
- version "7.4.3"
- resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571"
- integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==
- dependencies:
- "@isaacs/fs-minipass" "^4.0.0"
- chownr "^3.0.0"
- minipass "^7.1.2"
- minizlib "^3.0.1"
- mkdirp "^3.0.1"
- yallist "^5.0.0"
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-3.6.0.tgz#88d83242d1dd7bc847223f73dcf210dd1f2ee11c"
+ integrity sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==
+
+tailwindcss@4.3.3, tailwindcss@^4.1.7:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.3.3.tgz#c006861611c213c1877893ab5b23daa16be2bb55"
+ integrity sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==
+
+tapable@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160"
+ integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==
thread-stream@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1"
- integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.2.0.tgz#3720b496d646c8077b57406d53ec5a5385e3938c"
+ integrity sha512-zLBvqpwr4Esa0kRjcrzGU6zL25lePWaCLMx0RQFrmteozIfeNdaMLpG5U7PeHzvlFkAWaRKA9/KVW4F60iB+qw==
dependencies:
real-require "^0.2.0"
-tinyglobby@^0.2.13, tinyglobby@^0.2.9:
- version "0.2.14"
- resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d"
- integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==
+tinyglobby@^0.2.13, tinyglobby@^0.2.15, tinyglobby@^0.2.9:
+ version "0.2.17"
+ resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.17.tgz#562a9a6c9eb2b3b123d39719f9af5bb44fcd7631"
+ integrity sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==
dependencies:
- fdir "^6.4.4"
- picomatch "^4.0.2"
+ fdir "^6.5.0"
+ picomatch "^4.0.4"
to-no-case@^1.0.0:
version "1.0.2"
@@ -7113,11 +6077,12 @@ to-space-case@^1.0.0:
dependencies:
to-no-case "^1.0.0"
-token-types@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.0.0.tgz#1ab26be1ef9c434853500c071acfe5c8dd6544a3"
- integrity sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==
+token-types@^6.1.1:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.1.2.tgz#18d0fd59b996d421f9f83914d6101c201bd08129"
+ integrity sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==
dependencies:
+ "@borewit/text-codec" "^0.2.1"
"@tokenizer/token" "^0.3.0"
ieee754 "^1.2.1"
@@ -7133,10 +6098,10 @@ truncate-utf8-bytes@^1.0.0:
dependencies:
utf8-byte-length "^1.0.1"
-ts-api-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91"
- integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
+ts-api-utils@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1"
+ integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==
ts-essentials@10.0.3:
version "10.0.3"
@@ -7167,25 +6132,24 @@ tslib@^1.11.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2, tslib@^2.8.0:
+tslib@^2.0.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2, tslib@^2.8.0, tslib@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
-tsx@4.21.0:
- version "4.21.0"
- resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.21.0.tgz#32aa6cf17481e336f756195e6fe04dae3e6308b1"
- integrity sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==
+tsx@4.22.4:
+ version "4.22.4"
+ resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.22.4.tgz#0ab3b7fb4ec7feeee74e5b1f26337caa71e44700"
+ integrity sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==
dependencies:
- esbuild "~0.27.0"
- get-tsconfig "^4.7.5"
+ esbuild "~0.28.0"
optionalDependencies:
fsevents "~2.3.3"
tw-animate-css@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/tw-animate-css/-/tw-animate-css-1.3.2.tgz#5ddede70a66f7aefc7844b9960b12aaf073eeffe"
- integrity sha512-khGYcg4sHWFWcjpiWvy0KN0Bd6yVy6Ecc4r9ZP2u7FV+n4/Fp8MQscCWJkM0KMIRvrpGyKpIQnIbEd1hrewdeg==
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/tw-animate-css/-/tw-animate-css-1.4.0.tgz#b4a06f68244cba39428aa47e65e6e4c0babc21ee"
+ integrity sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
@@ -7228,26 +6192,36 @@ typed-array-byte-offset@^1.0.4:
reflect.getprototypeof "^1.0.9"
typed-array-length@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d"
- integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.8.tgz#0b70e982c9e9dafe2def6d6458ff4b3f2d2b6d70"
+ integrity sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==
dependencies:
- call-bind "^1.0.7"
- for-each "^0.3.3"
- gopd "^1.0.1"
- is-typed-array "^1.1.13"
- possible-typed-array-names "^1.0.0"
- reflect.getprototypeof "^1.0.6"
+ call-bind "^1.0.9"
+ for-each "^0.3.5"
+ gopd "^1.2.0"
+ is-typed-array "^1.1.15"
+ possible-typed-array-names "^1.1.0"
+ reflect.getprototypeof "^1.0.10"
+
+typescript-eslint@^8.46.0:
+ version "8.69.0"
+ resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.69.0.tgz#28a83f296d9c14001ea0691750c90cac8e94ba96"
+ integrity sha512-B3MltX0VqjUBNEe3b3sSuiRbfa6XrfHFtBiPamjT5AsW/dfq+y+bc0wyuS9DxAS1LyzCxRp2+rxzpLUvqM2BvA==
+ dependencies:
+ "@typescript-eslint/eslint-plugin" "8.69.0"
+ "@typescript-eslint/parser" "8.69.0"
+ "@typescript-eslint/typescript-estree" "8.69.0"
+ "@typescript-eslint/utils" "8.69.0"
typescript@^5:
- version "5.8.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
- integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
+ version "5.9.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f"
+ integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
-uint8array-extras@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.4.0.tgz#e42a678a6dd335ec2d21661333ed42f44ae7cc74"
- integrity sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==
+uint8array-extras@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.5.0.tgz#10d2a85213de3ada304fea1c454f635c73839e86"
+ integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==
unbox-primitive@^1.1.0:
version "1.1.0"
@@ -7259,25 +6233,20 @@ unbox-primitive@^1.1.0:
has-symbols "^1.1.0"
which-boxed-primitive "^1.1.1"
-undici-types@~6.19.2:
- version "6.19.8"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
- integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
-
undici-types@~6.21.0:
version "6.21.0"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
-undici-types@~7.18.0:
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9"
- integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==
+undici-types@~8.3.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-8.3.0.tgz#44e9fc9f3244648cdea35e4f9bb2d681e9410809"
+ integrity sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==
-undici@7.24.4:
- version "7.24.4"
- resolved "https://registry.yarnpkg.com/undici/-/undici-7.24.4.tgz#873bce680d7c6354c941399fd4e8ea4563de4ea7"
- integrity sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==
+undici@7.29.0:
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/undici/-/undici-7.29.0.tgz#ae0f6f62e06e057a9cbb7b2b5fde2bb74f791b8f"
+ integrity sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==
unfetch@^4.2.0:
version "4.2.0"
@@ -7285,9 +6254,9 @@ unfetch@^4.2.0:
integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==
unist-util-is@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424"
- integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.1.tgz#d0a3f86f2dd0db7acd7d8c2478080b5c67f9c6a9"
+ integrity sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==
dependencies:
"@types/unist" "^3.0.0"
@@ -7306,51 +6275,56 @@ unist-util-stringify-position@^4.0.0:
"@types/unist" "^3.0.0"
unist-util-visit-parents@^6.0.0:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815"
- integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz#777df7fb98652ce16b4b7cd999d0a1a40efa3a02"
+ integrity sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==
dependencies:
"@types/unist" "^3.0.0"
unist-util-is "^6.0.0"
unist-util-visit@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6"
- integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468"
+ integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==
dependencies:
"@types/unist" "^3.0.0"
unist-util-is "^6.0.0"
unist-util-visit-parents "^6.0.0"
unrs-resolver@^1.6.2:
- version "1.7.8"
- resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.7.8.tgz#f76ca5592d7225f8fd12cd5f39fad9e86f0945c9"
- integrity sha512-2zsXwyOXmCX9nGz4vhtZRYhe30V78heAv+KDc21A/KMdovGHbZcixeD5JHEF0DrFXzdytwuzYclcPbvp8A3Jlw==
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.12.2.tgz#a6c6888396abba5adaac4cab6587df866f1d7afd"
+ integrity sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==
dependencies:
- napi-postinstall "^0.2.2"
+ napi-postinstall "^0.3.4"
optionalDependencies:
- "@unrs/resolver-binding-darwin-arm64" "1.7.8"
- "@unrs/resolver-binding-darwin-x64" "1.7.8"
- "@unrs/resolver-binding-freebsd-x64" "1.7.8"
- "@unrs/resolver-binding-linux-arm-gnueabihf" "1.7.8"
- "@unrs/resolver-binding-linux-arm-musleabihf" "1.7.8"
- "@unrs/resolver-binding-linux-arm64-gnu" "1.7.8"
- "@unrs/resolver-binding-linux-arm64-musl" "1.7.8"
- "@unrs/resolver-binding-linux-ppc64-gnu" "1.7.8"
- "@unrs/resolver-binding-linux-riscv64-gnu" "1.7.8"
- "@unrs/resolver-binding-linux-riscv64-musl" "1.7.8"
- "@unrs/resolver-binding-linux-s390x-gnu" "1.7.8"
- "@unrs/resolver-binding-linux-x64-gnu" "1.7.8"
- "@unrs/resolver-binding-linux-x64-musl" "1.7.8"
- "@unrs/resolver-binding-wasm32-wasi" "1.7.8"
- "@unrs/resolver-binding-win32-arm64-msvc" "1.7.8"
- "@unrs/resolver-binding-win32-ia32-msvc" "1.7.8"
- "@unrs/resolver-binding-win32-x64-msvc" "1.7.8"
-
-update-browserslist-db@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
- integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
+ "@unrs/resolver-binding-android-arm-eabi" "1.12.2"
+ "@unrs/resolver-binding-android-arm64" "1.12.2"
+ "@unrs/resolver-binding-darwin-arm64" "1.12.2"
+ "@unrs/resolver-binding-darwin-x64" "1.12.2"
+ "@unrs/resolver-binding-freebsd-x64" "1.12.2"
+ "@unrs/resolver-binding-linux-arm-gnueabihf" "1.12.2"
+ "@unrs/resolver-binding-linux-arm-musleabihf" "1.12.2"
+ "@unrs/resolver-binding-linux-arm64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-arm64-musl" "1.12.2"
+ "@unrs/resolver-binding-linux-loong64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-loong64-musl" "1.12.2"
+ "@unrs/resolver-binding-linux-ppc64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-riscv64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-riscv64-musl" "1.12.2"
+ "@unrs/resolver-binding-linux-s390x-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-x64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-x64-musl" "1.12.2"
+ "@unrs/resolver-binding-openharmony-arm64" "1.12.2"
+ "@unrs/resolver-binding-wasm32-wasi" "1.12.2"
+ "@unrs/resolver-binding-win32-arm64-msvc" "1.12.2"
+ "@unrs/resolver-binding-win32-ia32-msvc" "1.12.2"
+ "@unrs/resolver-binding-win32-x64-msvc" "1.12.2"
+
+update-browserslist-db@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz#9d99fbff56c50bb11ba5fd35cece5916da595836"
+ integrity sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==
dependencies:
escalade "^3.2.0"
picocolors "^1.1.1"
@@ -7382,25 +6356,15 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-uuid@10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294"
- integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==
-
-uuid@9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
- integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
-
-uuid@^9.0.1:
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
- integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
+uuid@13.0.2:
+ version "13.0.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-13.0.2.tgz#41bc9c07b12f665089c205f6507976adbdf84ff8"
+ integrity sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==
vfile-message@^4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181"
- integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.3.tgz#87b44dddd7b70f0641c2e3ed0864ba73e2ea8df4"
+ integrity sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==
dependencies:
"@types/unist" "^3.0.0"
unist-util-stringify-position "^4.0.0"
@@ -7464,12 +6428,12 @@ which-collection@^1.0.2:
is-weakset "^2.0.3"
which-typed-array@^1.1.16, which-typed-array@^1.1.19:
- version "1.1.19"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
- integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
+ version "1.1.22"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.22.tgz#8f3cc78aefb40b437346dd40a1dbfa5d1da43fe9"
+ integrity sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==
dependencies:
available-typed-arrays "^1.0.7"
- call-bind "^1.0.8"
+ call-bind "^1.0.9"
call-bound "^1.0.4"
for-each "^0.3.5"
get-proto "^1.0.1"
@@ -7493,15 +6457,10 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-ws@^8.16.0:
- version "8.18.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a"
- integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==
-
-ws@^8.18.3:
- version "8.20.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.0.tgz#4cd9532358eba60bc863aad1623dfb045a4d4af8"
- integrity sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==
+ws@^8.16.0, ws@^8.21.0:
+ version "8.21.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.3.tgz#660b4faddb6a3e575c86e078126919961f4de4fc"
+ integrity sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==
xss@^1.0.6:
version "1.0.15"
@@ -7516,21 +6475,31 @@ xtend@^4.0.0:
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-yallist@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
- integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yaml@^1.10.0:
- version "1.10.2"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
- integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.3.tgz#76e407ed95c42684fb8e14641e5de62fe65bbcb3"
+ integrity sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+"zod-validation-error@^3.5.0 || ^4.0.0":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918"
+ integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==
+
+"zod@^3.25.0 || ^4.0.0":
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-4.5.4.tgz#e215c62420c528dd7951e31fb52c5438f1fd184a"
+ integrity sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==
+
zwitch@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"