From 384eb7a70e5eb4253613fdbb866a94ddaca00f37 Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 20 Apr 2026 17:22:06 +0100 Subject: [PATCH 1/4] docs: design spec for issue #7570 (ueberdb2 driver bundling) Spec for the upstream ueberDB fix (move 10 drivers back from optional peer deps to dependencies) plus downstream etherpad-lite safety net (explicit driver list + build-test-db-drivers CI job covering all 10 via presence check and MySQL+Postgres smoke tests). Co-Authored-By: Claude Opus 4.7 (1M context) --- ...4-20-issue-7570-ueberdb2-drivers-design.md | 222 ++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 docs/superpowers/specs/2026-04-20-issue-7570-ueberdb2-drivers-design.md diff --git a/docs/superpowers/specs/2026-04-20-issue-7570-ueberdb2-drivers-design.md b/docs/superpowers/specs/2026-04-20-issue-7570-ueberdb2-drivers-design.md new file mode 100644 index 00000000000..9d7975890bd --- /dev/null +++ b/docs/superpowers/specs/2026-04-20-issue-7570-ueberdb2-drivers-design.md @@ -0,0 +1,222 @@ +# Design: Fix #7570 — `Cannot find module 'mysql2'` in Docker production image + +Upstream: + +## Problem + +`ueberdb2@5.0.45` moved its ten database driver dependencies from normal +`dependencies` to `peerDependencies` with `peerDependenciesMeta.optional = true`. +Production `pnpm install` in the Etherpad Docker image does not install +optional peer dependencies, so the drivers are absent. At startup, +`ueberdb2`'s driver loader does `require('mysql2')` (or the configured +driver) and crashes: + +``` +Error: Cannot find module 'mysql2' +Require stack: +- /opt/etherpad-lite/node_modules/.pnpm/ueberdb2@5.0.45/node_modules/ueberdb2/dist/mysql_db-*.js +- /opt/etherpad-lite/node_modules/.pnpm/ueberdb2@5.0.45/node_modules/ueberdb2/dist/index.js +- /opt/etherpad-lite/src/node/db/DB.ts +``` + +The bug affects every non-default DB backend (mysql, postgres, mongodb, +mssql, redis, couchdb, cassandra, elasticsearch, rethinkdb, surrealdb). +The reporter hit it with MySQL because MySQL is the most common prod +backend; the class of failure is identical for the other nine. + +The earlier Copilot PR #7571 attempted a fix but (a) initially only listed +`mysql2`, (b) now lists all ten but only regression-tests MySQL in CI, +and (c) accumulated unrelated scope (bumps to `typescript`, +`oidc-provider`, `eslint-config-etherpad`, `@types/express-session`, +`resolve`; firefox removed from `test-admin`; a repo URL change; a +docker.yml restructure that collides with the already-merged GHCR PR +#7569). This spec replaces it. + +## Goals + +1. Restore Docker prod startup for every supported DB backend. +2. Prevent the same class of regression from silently returning. +3. Keep the downstream diff minimal and reviewable. + +## Non-goals + +- Refactoring ueberdb2 to a plugin-per-driver architecture. +- Changing which backends Etherpad officially supports. +- Addressing other unrelated dependency bumps. + +## Architecture + +Two independent changes that stack: + +**Upstream fix (`ether/ueberDB`)** — the real "reintroduce bundling." +Move the ten DB drivers from `peerDependencies` + `peerDependenciesMeta` +back to `dependencies`. Publish as a new patch version. Restores +pre-5.0.45 behavior where `npm install ueberdb2` pulls the drivers. + +**Downstream fix (`ether/etherpad-lite`)** — bump `ueberdb2` to the new +version, additionally declare the ten drivers as direct `dependencies` +in `src/package.json` as a defensive safety net, and add a CI regression +test that would have caught #7570. + +The downstream driver listing is redundant on a good day and +load-bearing on a bad day: if a future ueberdb2 release drifts the +peer-vs-dep classification again, Etherpad stays buildable and the CI +job reports the drift loudly rather than only at Docker startup in +production. + +## Upstream change (`ether/ueberDB`) + +**File:** `package.json` + +1. Move these ten entries from `peerDependencies` → `dependencies`, + preserving version ranges exactly as currently declared in 5.0.45: + - `@elastic/elasticsearch` `^9.3.4` + - `cassandra-driver` `^4.8.0` + - `mongodb` `^7.1.1` + - `mssql` `^12.2.1` + - `mysql2` `^3.22.0` + - `nano` `^11.0.5` + - `pg` `^8.20.0` + - `redis` `^5.12.1` + - `rethinkdb` `^2.4.2` + - `surrealdb` `^2.0.3` +2. Delete the `peerDependenciesMeta` block entirely. +3. Version bump: `5.0.45` → `5.0.46`. + +**Tradeoff accepted:** every ueberdb2 consumer now installs ~250 MB of +driver code regardless of which backend they use. This is the pre-5.0.45 +behavior, is what Etherpad needs, and avoids a larger +plugin-per-driver refactor. + +**Verification:** ueberdb2's existing vitest + testcontainers suite +exercises every driver end-to-end. If the migration is correct, CI stays +green. Nothing else needs adding upstream. + +**Delivery:** PR from `johnmclear/ueberDB` fork into `ether/ueberDB` +default branch. After merge, publish `ueberdb2@5.0.46` to npm via the +existing release workflow. + +## Downstream change (`ether/etherpad-lite`) + +### Decision: replace PR #7571 rather than rebase + +Copilot's #7571 has correct direction but mixed scope. Cleanest path is +to close it with a pointer to the replacement and open a fresh branch +off the current `ether/etherpad-lite:develop` (post #7569 merge). No +shared commits. + +### `src/package.json` + +- Bump `ueberdb2` → `^5.0.46`. +- Add the ten drivers to `dependencies`, with the **same version ranges + ueberdb2 itself declares**, so the two lists can't drift on the + range: + - `@elastic/elasticsearch` `^9.3.4` + - `cassandra-driver` `^4.8.0` + - `mongodb` `^7.1.1` + - `mssql` `^12.2.1` + - `mysql2` `^3.22.0` + - `nano` `^11.0.5` + - `pg` `^8.20.0` + - `redis` `^5.12.1` + - `rethinkdb` `^2.4.2` + - `surrealdb` `^2.0.3` +- No other edits. Specifically do **not** bump + `typescript`, `oidc-provider`, `eslint-config-etherpad`, + `@types/express-session`, or `resolve`, and do **not** change the + `repository.url` field or the `test-admin` project list. + +### `pnpm-lock.yaml` + +Regenerated via `pnpm install` on the clean branch. Not cherry-picked +from #7571. + +### `.github/workflows/docker.yml` + +Add one new job, `build-test-db-drivers`, alongside the existing +`build-test`. **No restructuring of existing jobs.** The `publish` job's +`needs:` is extended from `[build-test]` to `[build-test, build-test-db-drivers]` +so driver regressions block publication. + +The new job runs four sequential stages in a single job (so any failure +blocks `publish` via `needs:`): + +1. **Build production image** — reuse the existing buildx + GHA cache + pattern from `build-test`. + +2. **Driver presence test (all ten, fast).** Run one container: + ``` + docker run --rm "$TEST_TAG" node -e " + const mods = [ + '@elastic/elasticsearch','cassandra-driver','mongodb','mssql', + 'mysql2','nano','pg','redis','rethinkdb','surrealdb' + ]; + for (const m of mods) { + try { require(m); console.log('ok', m); } + catch (e) { console.error('MISSING', m, e.message); process.exit(1); } + } + " + ``` + This is the precise regression test for the #7570 class — catches + "driver missing from production image" for every backend in seconds. + +3. **MySQL smoke test.** `mysql:8` service container, launch Etherpad + with `DB_TYPE=mysql` against the service, poll container health for + up to ~2 minutes, fail on unhealthy. Reproduces the issue reporter's + scenario. + +4. **Postgres smoke test.** `postgres:16` service container, same + pattern with `DB_TYPE=postgres`. Covers the other common prod + backend. + +Stages 2–4 are the actual regression signal; stage 1 just prepares the +image they run against. + +The other seven backends (mongodb, mssql, redis, couchdb/nano, +cassandra, elasticsearch, rethinkdb, surrealdb) are covered by the +presence test only. Full service-container smokes for all ten would +10× CI time and several of them (SurrealDB, RethinkDB, Cassandra) are +awkward to stand up reliably on GitHub-hosted runners. If a specific +backend regresses in practice, we upgrade its coverage then. + +## Rollout order + +1. Open fork PR against `ether/ueberDB` with the ten-driver move + version bump. +2. Merge and publish `ueberdb2@5.0.46` to npm. +3. Close `ether/etherpad-lite#7571` with a comment linking here. +4. Open fork PR against `ether/etherpad-lite:develop` with the + `src/package.json` + `pnpm-lock.yaml` + `docker.yml` changes. +5. Confirm CI goes green on the new PR — specifically the MySQL stage + of `build-test-db-drivers` is the live reproduction of #7570. + +Step 4 depends on step 2 (the new `pnpm-lock.yaml` must be able to +resolve `ueberdb2@^5.0.46` from the public registry). + +## Local verification before pushing + +- `pnpm install` resolves cleanly with no warnings about missing peer deps. +- `docker build --target production -t etherpad:test .` succeeds. +- `docker run --rm etherpad:test node -e ""` prints `ok` for all ten. +- `docker compose up` with the issue reporter's exact compose file + (mariadb:11.4, `DB_TYPE=mysql`) reaches a healthy state and serves + `/`. + +## Testing + +The new CI job is itself the regression test. No separate unit tests +added — the failure mode is a packaging concern, not a code-path +concern, and unit tests cannot observe it. + +## Out of scope + +- Reverting or auditing the unrelated bumps included in #7571. If any + of those bumps is wanted independently, it gets its own PR. +- Reworking the Docker image to slim down the ~250 MB driver payload + for users who only need SQLite. If this matters, future work could + introduce a build arg that prunes unneeded drivers post-install. + +## Commit targets + +Per project rules, both PRs originate from `johnmclear/` forks, never +direct commits to `ether/*`. ueberDB fork to be created if it does not +already exist. From aa8c91604bc76e18c7b331a38da773e34745c4aa Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 20 Apr 2026 17:25:43 +0100 Subject: [PATCH 2/4] docs: implementation plan for issue #7570 ueberdb2 driver bundling Covers upstream ueberDB PR (move drivers from optional peer deps back to dependencies, publish 5.0.46) and downstream etherpad-lite PR (bump ueberdb2, defensive driver list, build-test-db-drivers CI job with presence + MySQL + Postgres stages gating publish). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../2026-04-20-issue-7570-ueberdb2-drivers.md | 863 ++++++++++++++++++ 1 file changed, 863 insertions(+) create mode 100644 docs/superpowers/plans/2026-04-20-issue-7570-ueberdb2-drivers.md diff --git a/docs/superpowers/plans/2026-04-20-issue-7570-ueberdb2-drivers.md b/docs/superpowers/plans/2026-04-20-issue-7570-ueberdb2-drivers.md new file mode 100644 index 00000000000..a2d4eee33cb --- /dev/null +++ b/docs/superpowers/plans/2026-04-20-issue-7570-ueberdb2-drivers.md @@ -0,0 +1,863 @@ +# Fix #7570 (ueberdb2 driver bundling) — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Restore Etherpad Docker production startup for every supported DB backend (broken by `ueberdb2@5.0.45` moving drivers to optional peer deps), and add CI that would have caught it. + +**Architecture:** Two coupled PRs. Upstream PR to `ether/ueberDB` moves the 10 DB drivers back from `peerDependencies` (optional) to `dependencies` and publishes `5.0.46`. Downstream PR to `ether/etherpad-lite` bumps `ueberdb2`, declares the same 10 drivers as direct deps as a defensive safety net, and adds a `build-test-db-drivers` CI job with a require-each-driver presence check plus MySQL + Postgres smoke tests that gate publish. + +**Tech Stack:** Node.js / pnpm / TypeScript, ueberdb2 KV abstraction, Docker Buildx, GitHub Actions service containers, vitest + testcontainers (upstream tests). + +**Spec:** `docs/superpowers/specs/2026-04-20-issue-7570-ueberdb2-drivers-design.md` + +**Conventions:** +- All pushes land on `johnmclear/` forks — never `ether/*` directly. +- The branch `fix/issue-7570-ueberdb2-drivers` already exists in `/home/jose/etherpad/etherpad-lite` with the design spec committed. +- Working dirs: + - Downstream: `/home/jose/etherpad/etherpad-lite` + - Upstream ueberDB will be cloned to: `/home/jose/etherpad/ueberDB` + +--- + +## Phase A — Upstream (`ether/ueberDB`) + +### Task A1: Create johnmclear/ueberDB fork and clone it + +**Files:** none (git/gh only) + +- [ ] **Step 1: Create the fork on GitHub** + +Run: +```bash +gh repo fork ether/ueberDB --clone=false --default-branch-only +``` +Expected: `✓ Created fork johnmclear/ueberDB`. + +If it already exists the command prints `johnmclear/ueberDB already exists` — that is fine, continue. + +- [ ] **Step 2: Clone the fork locally** + +Run: +```bash +git clone https://github.com/johnmclear/ueberDB.git /home/jose/etherpad/ueberDB +cd /home/jose/etherpad/ueberDB +git remote add upstream https://github.com/ether/ueberDB.git +git fetch upstream +``` +Expected: clone succeeds, `git remote -v` shows both `origin` (johnmclear) and `upstream` (ether). + +- [ ] **Step 3: Identify default branch and sync** + +Run: +```bash +git -C /home/jose/etherpad/ueberDB remote show upstream | grep 'HEAD branch' +``` +Expected: prints either `HEAD branch: develop` or `HEAD branch: main`. Record the name — subsequent steps refer to it as ``. + +Run: +```bash +git -C /home/jose/etherpad/ueberDB checkout +git -C /home/jose/etherpad/ueberDB pull upstream +git -C /home/jose/etherpad/ueberDB push origin +``` +Expected: fork's default branch now matches upstream. + +- [ ] **Step 4: Create feature branch** + +Run: +```bash +git -C /home/jose/etherpad/ueberDB checkout -b fix/bundle-driver-deps +``` +Expected: switched to a new branch. + +--- + +### Task A2: Confirm the baseline (existing tests green) + +**Files:** none — read-only validation + +- [ ] **Step 1: Install deps** + +Run: +```bash +cd /home/jose/etherpad/ueberDB && pnpm install +``` +Expected: install succeeds, no unusual errors. + +- [ ] **Step 2: Run type check and lint** + +Run: +```bash +pnpm run ts-check && pnpm run lint +``` +Expected: both pass with exit 0. + +- [ ] **Step 3: Skip the full driver test suite** + +Do **not** run `pnpm test` here — it uses testcontainers and spins up every database, which is slow and requires Docker. CI will run it. If Docker is available and the engineer wants to sanity-run it: +```bash +pnpm test +``` +Expected: all driver suites pass. + +--- + +### Task A3: Move drivers from optional peer deps to dependencies + +**Files:** +- Modify: `/home/jose/etherpad/ueberDB/package.json` + +- [ ] **Step 1: Read current package.json** + +Open `/home/jose/etherpad/ueberDB/package.json`. Locate the three relevant blocks: `dependencies`, `peerDependencies`, `peerDependenciesMeta`. Current state (as of 5.0.45): + +```json +"dependencies": { + "async": "^3.2.6", + "dirty-ts": "^1.1.8", + "rusty-store-kv": "^1.3.1", + "simple-git": "^3.36.0" +}, +"peerDependencies": { + "@elastic/elasticsearch": "^9.3.4", + "cassandra-driver": "^4.8.0", + "mongodb": "^7.1.1", + "mssql": "^12.2.1", + "mysql2": "^3.22.0", + "nano": "^11.0.5", + "pg": "^8.20.0", + "redis": "^5.12.1", + "rethinkdb": "^2.4.2", + "surrealdb": "^2.0.3" +}, +"peerDependenciesMeta": { + "@elastic/elasticsearch": {"optional": true}, + "cassandra-driver": {"optional": true}, + "mongodb": {"optional": true}, + "mssql": {"optional": true}, + "mysql2": {"optional": true}, + "nano": {"optional": true}, + "pg": {"optional": true}, + "redis": {"optional": true}, + "rethinkdb": {"optional": true}, + "surrealdb": {"optional": true} +}, +``` + +- [ ] **Step 2: Rewrite the three blocks** + +Replace the three blocks with: + +```json +"dependencies": { + "@elastic/elasticsearch": "^9.3.4", + "async": "^3.2.6", + "cassandra-driver": "^4.8.0", + "dirty-ts": "^1.1.8", + "mongodb": "^7.1.1", + "mssql": "^12.2.1", + "mysql2": "^3.22.0", + "nano": "^11.0.5", + "pg": "^8.20.0", + "redis": "^5.12.1", + "rethinkdb": "^2.4.2", + "rusty-store-kv": "^1.3.1", + "simple-git": "^3.36.0", + "surrealdb": "^2.0.3" +}, +``` + +Delete the `peerDependencies` and `peerDependenciesMeta` blocks entirely. + +Keys must be alphabetically sorted in the merged `dependencies` block (matches existing convention). + +- [ ] **Step 3: Bump version** + +In the same file, change `"version": "5.0.45"` to `"version": "5.0.46"`. + +- [ ] **Step 4: Regenerate lockfile** + +Run: +```bash +cd /home/jose/etherpad/ueberDB && pnpm install +``` +Expected: `pnpm-lock.yaml` updates. No errors. No warnings about missing peer deps (since there are now none). + +- [ ] **Step 5: Re-run ts-check and lint** + +Run: +```bash +pnpm run ts-check && pnpm run lint +``` +Expected: exit 0. + +- [ ] **Step 6: Verify drivers now resolve in a fresh node_modules** + +Run: +```bash +cd /tmp && rm -rf uberdb-smoke && mkdir uberdb-smoke && cd uberdb-smoke +npm init -y >/dev/null +npm install file:/home/jose/etherpad/ueberDB 2>&1 | tail -3 +node -e " +const mods = [ + '@elastic/elasticsearch','cassandra-driver','mongodb','mssql', + 'mysql2','nano','pg','redis','rethinkdb','surrealdb' +]; +for (const m of mods) { + try { require(m); console.log('ok', m); } + catch (e) { console.error('MISSING', m, e.message); process.exit(1); } +} +" +``` +Expected: prints `ok` ten times, exits 0. + +This is the direct repro test for the issue. + +--- + +### Task A4: Commit and push upstream fix + +**Files:** +- Stage: `/home/jose/etherpad/ueberDB/package.json`, `/home/jose/etherpad/ueberDB/pnpm-lock.yaml` + +- [ ] **Step 1: Review staged diff** + +Run: +```bash +cd /home/jose/etherpad/ueberDB +git diff package.json +git status +``` +Expected: only `package.json` and `pnpm-lock.yaml` modified. Confirm the diff matches Task A3. + +- [ ] **Step 2: Commit** + +Run: +```bash +git add package.json pnpm-lock.yaml +git commit -m "$(cat <<'EOF' +fix: bundle DB drivers as dependencies (restore pre-5.0.45 behavior) + +Moves the ten DB drivers back from optional peerDependencies to +dependencies so consumers (notably Etherpad Docker production images) +get them installed automatically. + +Fixes Etherpad issue ether/etherpad-lite#7570: +"Cannot find module 'mysql2'" at startup when pnpm production install +skips optional peer deps. +EOF +)" +``` +Expected: one commit created on `fix/bundle-driver-deps`. + +- [ ] **Step 3: Push to fork** + +Run: +```bash +git push -u origin fix/bundle-driver-deps +``` +Expected: branch pushed to `johnmclear/ueberDB`. + +--- + +### Task A5: Open upstream PR + +**Files:** none + +- [ ] **Step 1: Create PR** + +Run: +```bash +gh pr create \ + --repo ether/ueberDB \ + --base \ + --head johnmclear:fix/bundle-driver-deps \ + --title "fix: bundle DB drivers as dependencies (fix Etherpad #7570)" \ + --body "$(cat <<'EOF' +## Summary +- Moves all ten DB drivers (`@elastic/elasticsearch`, `cassandra-driver`, `mongodb`, `mssql`, `mysql2`, `nano`, `pg`, `redis`, `rethinkdb`, `surrealdb`) from `peerDependencies` + `peerDependenciesMeta.optional` back to `dependencies`. +- Deletes `peerDependenciesMeta`. +- Bumps version to 5.0.46. + +## Why +`ueberdb2@5.0.45` declared the drivers as optional peer deps. Production installs (e.g., `pnpm install --prod`) skip optional peer deps, so consumers hit `Error: Cannot find module 'mysql2'` at first `require` of a driver. + +Reported against Etherpad Docker: https://github.com/ether/etherpad-lite/issues/7570 + +## Test plan +- [ ] CI green (vitest + testcontainers exercises every driver) +- [ ] Local smoke: `npm install ueberdb2@next` into a fresh project, then `require()` each of the ten driver modules — all resolve +EOF +)" +``` +Replace `` with whatever Task A1 step 3 recorded (`develop` or `main`). + +Expected: PR URL printed. + +- [ ] **Step 2: Record PR URL** + +Note the PR URL — downstream task (closing #7571) references it. + +--- + +### Task A6: Await merge + publish to npm + +**Files:** none — gating task + +- [ ] **Step 1: Merge upstream PR** + +Once review passes on the PR opened in Task A5, merge it. Then: + +```bash +cd /home/jose/etherpad/ueberDB +git checkout +git pull upstream +``` +Expected: local default branch is at the merge commit. + +- [ ] **Step 2: Publish to npm** + +Run the project's existing release workflow. Typically: +```bash +cd /home/jose/etherpad/ueberDB +npm publish +``` +(Or trigger the CI publish workflow if one exists — check `.github/workflows/` first.) + +Expected: `ueberdb2@5.0.46` is live on npm. Verify: +```bash +npm view ueberdb2 version +``` +Expected output: `5.0.46`. + +**Do not start Phase B until this step completes** — downstream `pnpm install` must be able to resolve `ueberdb2@^5.0.46` from the public registry. + +--- + +## Phase B — Downstream (`ether/etherpad-lite`) + +### Task B1: Close Copilot's PR #7571 + +**Files:** none — GitHub issue action + +- [ ] **Step 1: Comment and close** + +Run: +```bash +gh pr close 7571 \ + --repo ether/etherpad-lite \ + --comment "Superseded by the upstream ueberdb2 fix () plus a clean downstream replacement PR incoming on branch \`fix/issue-7570-ueberdb2-drivers\`. See design spec: docs/superpowers/specs/2026-04-20-issue-7570-ueberdb2-drivers-design.md." +``` +Expected: PR #7571 closed with comment. + +--- + +### Task B2: Reproduce the bug locally (baseline) + +**Files:** none — validation + +- [ ] **Step 1: Confirm we are on the feature branch** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +git status +``` +Expected: `On branch fix/issue-7570-ueberdb2-drivers`. + +- [ ] **Step 2: Build current Docker production image** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +docker build --target production -t etherpad:pre-fix . +``` +Expected: build succeeds. + +- [ ] **Step 3: Demonstrate the missing module** + +Run: +```bash +docker run --rm etherpad:pre-fix node -e "try { require('mysql2'); console.log('HAS mysql2'); } catch(e) { console.log('MISSING mysql2:', e.message); }" +``` +Expected output: `MISSING mysql2: Cannot find module 'mysql2'`. + +This confirms the bug reproduces in the current prod image. Keep this evidence — the same command run in Task B5 Step 3 against the fixed image should print `HAS mysql2`. + +--- + +### Task B3: Bump ueberdb2 and add drivers to `src/package.json` + +**Files:** +- Modify: `/home/jose/etherpad/etherpad-lite/src/package.json` + +- [ ] **Step 1: Read current dependencies block** + +Open `/home/jose/etherpad/etherpad-lite/src/package.json`. Locate the `dependencies` object. + +- [ ] **Step 2: Add ten driver entries, keep alphabetical order, bump ueberdb2** + +Within `dependencies`, add these keys (inserted in alphabetical position; do not touch any other key): + +```json +"@elastic/elasticsearch": "^9.3.4", +"cassandra-driver": "^4.8.0", +"mongodb": "^7.1.1", +"mssql": "^12.2.1", +"mysql2": "^3.22.0", +"nano": "^11.0.5", +"pg": "^8.20.0", +"redis": "^5.12.1", +"rethinkdb": "^2.4.2", +"surrealdb": "^2.0.3", +``` + +And change the existing `ueberdb2` entry from its current value to: +```json +"ueberdb2": "^5.0.46", +``` + +**Do not touch** any other dependency, devDependency, script, or metadata field. Specifically the following must remain unchanged vs `origin/develop`: +- `typescript`, `oidc-provider`, `eslint-config-etherpad`, `@types/express-session`, `resolve` versions +- `repository.url` +- `test-admin` npm script and its project list +- Every other field. + +- [ ] **Step 3: Verify diff is minimal** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +git diff src/package.json +``` +Expected: exactly 11 lines added (10 new drivers + no other lines) and exactly 1 line modified (the `ueberdb2` version bump). If anything else shows up, revert it. + +--- + +### Task B4: Regenerate `pnpm-lock.yaml` + +**Files:** +- Modify: `/home/jose/etherpad/etherpad-lite/pnpm-lock.yaml` + +- [ ] **Step 1: Install** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite/src +pnpm install +``` +Expected: install succeeds, resolves `ueberdb2@5.0.46` plus the ten drivers. No missing-peer-dep warnings. + +- [ ] **Step 2: Sanity-check lockfile scope** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +git diff --stat pnpm-lock.yaml +``` +Expected: only `pnpm-lock.yaml` modified. No unrelated `package.json` files touched. + +--- + +### Task B5: Verify fix locally + +**Files:** none — validation + +- [ ] **Step 1: Rebuild Docker production image with the fix** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +docker build --target production -t etherpad:post-fix . +``` +Expected: build succeeds. + +- [ ] **Step 2: Presence test — all ten drivers resolve** + +Run: +```bash +docker run --rm etherpad:post-fix node -e " +const mods = [ + '@elastic/elasticsearch','cassandra-driver','mongodb','mssql', + 'mysql2','nano','pg','redis','rethinkdb','surrealdb' +]; +for (const m of mods) { + try { require(m); console.log('ok', m); } + catch (e) { console.error('MISSING', m, e.message); process.exit(1); } +} +" +``` +Expected output: ten lines starting with `ok `, exit code 0. + +- [ ] **Step 3: MySQL end-to-end repro (exact issue reporter scenario)** + +Create `/tmp/et7570-compose.yml`: +```yaml +services: + app: + image: etherpad:post-fix + depends_on: + - mariadb + environment: + NODE_ENV: production + ADMIN_PASSWORD: admin + DB_CHARSET: utf8mb4 + DB_HOST: mariadb + DB_NAME: etherpad + DB_PASS: password + DB_PORT: 3306 + DB_TYPE: mysql + DB_USER: user + DEFAULT_PAD_TEXT: "Test " + TRUST_PROXY: "true" + ports: + - "9001:9001" + mariadb: + image: mariadb:11.4 + environment: + MYSQL_DATABASE: etherpad + MYSQL_USER: user + MYSQL_PASSWORD: password + MYSQL_ROOT_PASSWORD: root + MARIADB_AUTO_UPGRADE: 1 +``` + +Run: +```bash +docker compose -f /tmp/et7570-compose.yml up -d +sleep 30 +curl -sf http://localhost:9001/ >/dev/null && echo "OK: Etherpad serves / over MySQL" +docker compose -f /tmp/et7570-compose.yml logs app | grep -c "Cannot find module 'mysql2'" || true +docker compose -f /tmp/et7570-compose.yml down -v +``` +Expected: `OK: Etherpad serves / over MySQL`, and the grep count is `0`. + +If `curl` fails, inspect `docker compose logs app` — startup may just be slow on the first run; wait 30 more seconds and retry `curl`. If the missing-module error still appears, Task B3/B4 were not applied cleanly. + +--- + +### Task B6: Add the `build-test-db-drivers` CI job + +**Files:** +- Modify: `/home/jose/etherpad/etherpad-lite/.github/workflows/docker.yml` + +- [ ] **Step 1: Read the current workflow end-to-end** + +Open `/home/jose/etherpad/etherpad-lite/.github/workflows/docker.yml` and identify: +- The `jobs:` key and the existing job(s) under it (likely `docker` and/or `publish` after PR #7569). +- The value of `env.TEST_TAG` (expected: `etherpad/etherpad:test`). +- Any `needs:` on a `publish` job. + +Do not restructure existing jobs. Only append the new job and extend `needs:`. + +- [ ] **Step 2: Append the new job** + +Append the following job under `jobs:` (same indentation as existing jobs), placed after the existing `build-test` / `docker` job: + +```yaml + build-test-db-drivers: + runs-on: ubuntu-latest + permissions: + contents: read + services: + mysql: + image: mysql:8 + env: + MYSQL_ROOT_PASSWORD: password + MYSQL_DATABASE: etherpad + MYSQL_USER: etherpad + MYSQL_PASSWORD: password + ports: + - 3306:3306 + options: >- + --health-cmd="mysqladmin ping -h 127.0.0.1 -uroot -ppassword" + --health-interval=5s + --health-timeout=5s + --health-retries=20 + postgres: + image: postgres:16 + env: + POSTGRES_DB: etherpad + POSTGRES_USER: etherpad + POSTGRES_PASSWORD: password + ports: + - 5432:5432 + options: >- + --health-cmd="pg_isready -U etherpad -d etherpad" + --health-interval=5s + --health-timeout=5s + --health-retries=20 + steps: + - name: Check out + uses: actions/checkout@v6 + with: + path: etherpad + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v4 + - name: Build production image + uses: docker/build-push-action@v7 + with: + context: ./etherpad + target: production + load: true + tags: ${{ env.TEST_TAG }} + cache-from: type=gha + cache-to: type=gha,mode=max + - name: Driver presence test (all 10 drivers must resolve) + run: | + docker run --rm "$TEST_TAG" node -e " + const mods = [ + '@elastic/elasticsearch','cassandra-driver','mongodb','mssql', + 'mysql2','nano','pg','redis','rethinkdb','surrealdb' + ]; + let fail = false; + for (const m of mods) { + try { require(m); console.log('ok', m); } + catch (e) { console.error('MISSING', m, e.message); fail = true; } + } + if (fail) process.exit(1); + " + - name: MySQL smoke — start Etherpad against mysql service + run: | + docker run --rm -d \ + --network host \ + -e NODE_ENV=production \ + -e ADMIN_PASSWORD=admin \ + -e DB_TYPE=mysql \ + -e DB_HOST=127.0.0.1 \ + -e DB_PORT=3306 \ + -e DB_NAME=etherpad \ + -e DB_USER=etherpad \ + -e DB_PASS=password \ + -e DB_CHARSET=utf8mb4 \ + -e DEFAULT_PAD_TEXT="Test " \ + --name et-mysql "$TEST_TAG" + for i in $(seq 1 60); do + if curl -sf http://127.0.0.1:9001/ >/dev/null; then + echo "mysql smoke: Etherpad is serving /" + docker rm -f et-mysql + exit 0 + fi + sleep 2 + done + echo "mysql smoke: timed out waiting for Etherpad" + docker logs et-mysql || true + docker rm -f et-mysql || true + exit 1 + - name: Postgres smoke — start Etherpad against postgres service + run: | + docker run --rm -d \ + --network host \ + -e NODE_ENV=production \ + -e ADMIN_PASSWORD=admin \ + -e DB_TYPE=postgres \ + -e DB_HOST=127.0.0.1 \ + -e DB_PORT=5432 \ + -e DB_NAME=etherpad \ + -e DB_USER=etherpad \ + -e DB_PASS=password \ + -e DEFAULT_PAD_TEXT="Test " \ + --name et-postgres "$TEST_TAG" + for i in $(seq 1 60); do + if curl -sf http://127.0.0.1:9001/ >/dev/null; then + echo "postgres smoke: Etherpad is serving /" + docker rm -f et-postgres + exit 0 + fi + sleep 2 + done + echo "postgres smoke: timed out waiting for Etherpad" + docker logs et-postgres || true + docker rm -f et-postgres || true + exit 1 +``` + +Notes: +- `$TEST_TAG` comes from workflow-level `env.TEST_TAG` — no need to redeclare. +- Port 9001 is Etherpad's default bind port; `--network host` lets us hit the service containers directly. +- Stage order (presence → mysql → postgres) means the fastest, clearest failure mode runs first. + +- [ ] **Step 3: Extend `publish` job's `needs:` to gate on this new job** + +Locate the `publish` job (added in PR #7569). Its `needs:` currently looks like either: +```yaml +needs: build-test +``` +or +```yaml +needs: [build-test] +``` + +Change to: +```yaml +needs: [build-test, build-test-db-drivers] +``` + +If no `publish` job exists yet (shouldn't happen post-#7569), the existing job that pushes images (probably containing `docker/login-action`) is the one to gate. Apply the same change to its `needs:`. + +- [ ] **Step 4: Lint the YAML** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +python3 -c "import yaml; yaml.safe_load(open('.github/workflows/docker.yml'))" +``` +Expected: exit 0, no output. + +- [ ] **Step 5: Confirm no unrelated changes to `docker.yml`** + +Run: +```bash +git diff .github/workflows/docker.yml | head -50 +git diff --stat .github/workflows/docker.yml +``` +Expected: only additions (the new job + the `needs:` change). No other lines modified. + +--- + +### Task B7: Commit and push downstream fix + +**Files:** +- Stage: `src/package.json`, `pnpm-lock.yaml`, `.github/workflows/docker.yml` + +- [ ] **Step 1: Verify final diff scope** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +git status +git diff --stat +``` +Expected (modified files only): +``` +.github/workflows/docker.yml | 90+ additions +pnpm-lock.yaml | large change +src/package.json | 11 additions, 1 change +``` +The spec commit from earlier (branch `fix/issue-7570-ueberdb2-drivers`) is already present from previous work — `git log --oneline` should show it as the tip. + +- [ ] **Step 2: Commit** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +git add src/package.json pnpm-lock.yaml .github/workflows/docker.yml +git commit -m "$(cat <<'EOF' +fix(#7570): bundle DB drivers, add regression CI + +- Bump ueberdb2 to ^5.0.46 (upstream now re-bundles drivers). +- Declare all 10 ueberdb2 DB drivers as direct src dependencies as a + defensive safety net against a future upstream drift. +- Add build-test-db-drivers CI job that blocks the publish job: + * all-10-drivers presence check in the built prod image + * end-to-end MySQL smoke (reproduces #7570) + * end-to-end Postgres smoke + Any stage failure blocks Docker Hub / GHCR publish. +EOF +)" +``` +Expected: one commit on `fix/issue-7570-ueberdb2-drivers`. + +- [ ] **Step 3: Add johnmclear fork remote if needed** + +Run: +```bash +cd /home/jose/etherpad/etherpad-lite +git remote -v | grep -q '^fork' || git remote add fork https://github.com/johnmclear/etherpad-lite.git +``` +Expected: `fork` remote exists. + +- [ ] **Step 4: Push branch to fork** + +Run: +```bash +git push -u fork fix/issue-7570-ueberdb2-drivers +``` +Expected: branch pushed to `johnmclear/etherpad-lite`. + +--- + +### Task B8: Open downstream PR + +**Files:** none + +- [ ] **Step 1: Create PR** + +Run: +```bash +gh pr create \ + --repo ether/etherpad-lite \ + --base develop \ + --head johnmclear:fix/issue-7570-ueberdb2-drivers \ + --title "fix(#7570): bundle DB drivers, add regression CI" \ + --body "$(cat <<'EOF' +## Summary +- Bumps `ueberdb2` to `^5.0.46` — upstream PR `` restored drivers as real dependencies. +- Declares all 10 ueberdb2 DB drivers as direct `src/package.json` dependencies as a defensive safety net against any future upstream drift. +- Adds a new `build-test-db-drivers` CI job that blocks `publish`: + - presence test for all 10 drivers in the built production image + - MySQL service-container smoke (reproduces #7570) + - Postgres service-container smoke +- Supersedes #7571 (which mixed scope). + +## Test plan +- [ ] `build-test` passes on this PR (existing coverage) +- [ ] `build-test-db-drivers` passes — specifically the MySQL stage is the live reproduction of #7570 +- [ ] Local: `docker compose up` with reporter's MySQL config reaches healthy and serves `/` +EOF +)" +``` + +Expected: PR URL printed. Record it. + +--- + +### Task B9: Verify downstream CI is green + +**Files:** none — validation + iteration + +- [ ] **Step 1: Watch CI** + +Run: +```bash +gh pr checks --repo ether/etherpad-lite --watch +``` +Expected: all checks green. The two critical ones: +- `build-test` (pre-existing) +- `build-test-db-drivers` (new, with its four stages) + +- [ ] **Step 2: If a stage fails, read the logs and fix** + +Run: +```bash +gh run view --log-failed --repo ether/etherpad-lite +``` +Common failure modes and fixes: +- **Presence test fails for a specific module** → `src/package.json` missing that driver. Re-check Task B3. +- **MySQL smoke times out** → increase retry loop from 60 to 90 iterations, or increase `--health-retries` on the service, and push again. Do not skip the stage. +- **Postgres smoke times out** → same pattern. +- **YAML parse error** → re-run Task B6 Step 4 locally, fix, force-push. + +Iterate until green. Per project rule, update PR title/description after every push and post `/review` as a comment to trigger Qodo re-review. + +- [ ] **Step 3: Hand off for human review** + +Once CI is green, notify the user the PR is ready for review. No further automated action. + +--- + +## Self-review + +**Spec coverage:** +- Upstream ueberdb2 driver move → Tasks A1–A6 +- Downstream `ueberdb2` bump + driver safety-net list → B3, B4 +- Close #7571 → B1 +- CI job (presence + MySQL + Postgres, gating publish) → B6 +- No unrelated bumps → explicit guard in B3 Step 2 + B7 Step 1 diff check +- Local verification matches spec's "Local verification before pushing" → B5 Steps 1–3 +- Rollout order matches spec → Phase A gates Phase B via A6 +- Commit targets use johnmclear fork → A1 for upstream, B7 Step 3 for downstream + +**Placeholders:** One deliberate placeholder remains (`` for ueberDB's default branch name in A1/A4/A5, and `` referenced from B1/B8). These are values the engineer fills in once observed from `gh`/`git`; they are not "TBD implementation details." + +**Consistency:** `build-test-db-drivers` job name used identically in B6, B7 commit message, and B8 PR body. Driver list of ten appears identically in A3, B3, B5, and B6. Version `5.0.46` used consistently across A3, A5, A6, B3. From 93f05c50627631d15d24744a9291ba6c4bd04e62 Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 20 Apr 2026 17:59:44 +0100 Subject: [PATCH 3/4] fix(#7570): bundle DB drivers, add regression CI - Bump ueberdb2 to ^5.0.47 (upstream ueberDB PR #939 re-bundles drivers as real dependencies instead of optional peer deps, fixing the class of Docker-prod "Cannot find module" failures). - Declare all 10 ueberdb2 DB drivers as direct src dependencies as a defensive safety net against a future upstream drift. - Add build-test-db-drivers CI job that blocks the publish job: * all-10-drivers presence check in the built prod image * end-to-end MySQL smoke (reproduces the #7570 repro) * end-to-end Postgres smoke Any stage failure blocks Docker Hub / GHCR publish. Supersedes #7571. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/docker.yml | 124 +++- pnpm-lock.yaml | 1182 +++++++++++++++++++++++++++++++++- src/package.json | 12 +- 3 files changed, 1307 insertions(+), 11 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 156a14d239b..6a211f5fe7e 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -77,8 +77,130 @@ jobs: (cd src && gnpm run test-container) git clean -dxf . + build-test-db-drivers: + runs-on: ubuntu-latest + permissions: + contents: read + services: + mysql: + image: mysql:8 + env: + MYSQL_ROOT_PASSWORD: password + MYSQL_DATABASE: etherpad + MYSQL_USER: etherpad + MYSQL_PASSWORD: password + ports: + - 3306:3306 + options: >- + --health-cmd="mysqladmin ping -h 127.0.0.1 -uroot -ppassword" + --health-interval=5s + --health-timeout=5s + --health-retries=20 + postgres: + image: postgres:16 + env: + POSTGRES_DB: etherpad + POSTGRES_USER: etherpad + POSTGRES_PASSWORD: password + ports: + - 5432:5432 + options: >- + --health-cmd="pg_isready -U etherpad -d etherpad" + --health-interval=5s + --health-timeout=5s + --health-retries=20 + steps: + - + name: Check out + uses: actions/checkout@v6 + with: + path: etherpad + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v4 + - + name: Build production image + uses: docker/build-push-action@v7 + with: + context: ./etherpad + target: production + load: true + tags: ${{ env.TEST_TAG }} + cache-from: type=gha + cache-to: type=gha,mode=max + - + name: Driver presence test (all 10 ueberdb2 drivers must resolve) + run: | + docker run --rm "$TEST_TAG" node -e " + const mods = [ + '@elastic/elasticsearch','cassandra-driver','mongodb','mssql', + 'mysql2','nano','pg','redis','rethinkdb','surrealdb' + ]; + let fail = false; + for (const m of mods) { + try { require(m); console.log('ok', m); } + catch (e) { console.error('MISSING', m, e.message); fail = true; } + } + if (fail) process.exit(1); + " + - + name: MySQL smoke — start Etherpad against mysql service + run: | + docker run --rm -d \ + --network host \ + -e NODE_ENV=production \ + -e ADMIN_PASSWORD=admin \ + -e DB_TYPE=mysql \ + -e DB_HOST=127.0.0.1 \ + -e DB_PORT=3306 \ + -e DB_NAME=etherpad \ + -e DB_USER=etherpad \ + -e DB_PASS=password \ + -e DB_CHARSET=utf8mb4 \ + -e DEFAULT_PAD_TEXT="Test " \ + --name et-mysql "$TEST_TAG" + for i in $(seq 1 60); do + if curl -sf http://127.0.0.1:9001/ >/dev/null; then + echo "mysql smoke: Etherpad is serving /" + docker rm -f et-mysql + exit 0 + fi + sleep 2 + done + echo "mysql smoke: timed out waiting for Etherpad" + docker logs et-mysql || true + docker rm -f et-mysql || true + exit 1 + - + name: Postgres smoke — start Etherpad against postgres service + run: | + docker run --rm -d \ + --network host \ + -e NODE_ENV=production \ + -e ADMIN_PASSWORD=admin \ + -e DB_TYPE=postgres \ + -e DB_HOST=127.0.0.1 \ + -e DB_PORT=5432 \ + -e DB_NAME=etherpad \ + -e DB_USER=etherpad \ + -e DB_PASS=password \ + -e DEFAULT_PAD_TEXT="Test " \ + --name et-postgres "$TEST_TAG" + for i in $(seq 1 60); do + if curl -sf http://127.0.0.1:9001/ >/dev/null; then + echo "postgres smoke: Etherpad is serving /" + docker rm -f et-postgres + exit 0 + fi + sleep 2 + done + echo "postgres smoke: timed out waiting for Etherpad" + docker logs et-postgres || true + docker rm -f et-postgres || true + exit 1 + publish: - needs: build-test + needs: [build-test, build-test-db-drivers] if: github.event_name == 'push' runs-on: ubuntu-latest permissions: diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 594e5cdb034..c4f3c862f40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,7 +141,7 @@ importers: version: 4.21.0 ueberdb2: specifier: ^5.0.45 - version: 5.0.45 + version: 5.0.45(@elastic/elasticsearch@9.3.4)(cassandra-driver@4.8.0)(mongodb@7.2.0)(mssql@12.3.1(@azure/core-client@1.10.1))(mysql2@3.22.1(@types/node@25.6.0))(nano@11.0.5)(pg@8.20.0)(redis@5.12.1(@opentelemetry/api@1.9.0))(rethinkdb@2.4.2)(surrealdb@2.0.3(tslib@2.8.1)(typescript@6.0.3)) devDependencies: '@types/node': specifier: ^25.6.0 @@ -165,12 +165,18 @@ importers: src: dependencies: + '@elastic/elasticsearch': + specifier: ^9.3.4 + version: 9.3.4 async: specifier: ^3.2.6 version: 3.2.6 axios: specifier: ^1.15.0 version: 1.15.0 + cassandra-driver: + specifier: ^4.8.0 + version: 4.8.0 cookie-parser: specifier: ^1.4.7 version: 1.4.7 @@ -243,12 +249,27 @@ importers: mime-types: specifier: ^3.0.2 version: 3.0.2 + mongodb: + specifier: ^7.1.1 + version: 7.2.0 + mssql: + specifier: ^12.2.1 + version: 12.3.1(@azure/core-client@1.10.1) + mysql2: + specifier: ^3.22.0 + version: 3.22.1(@types/node@25.6.0) + nano: + specifier: ^11.0.5 + version: 11.0.5 oidc-provider: specifier: 9.8.2 version: 9.8.2 openapi-backend: specifier: ^5.16.1 version: 5.16.1 + pg: + specifier: ^8.20.0 + version: 8.20.0 prom-client: specifier: ^15.1.3 version: 15.1.3 @@ -258,6 +279,9 @@ importers: rate-limiter-flexible: specifier: ^11.0.0 version: 11.0.0 + redis: + specifier: ^5.12.1 + version: 5.12.1(@opentelemetry/api@1.9.0) rehype: specifier: ^13.0.2 version: 13.0.2 @@ -267,6 +291,9 @@ importers: resolve: specifier: 1.22.12 version: 1.22.12 + rethinkdb: + specifier: ^2.4.2 + version: 2.4.2 rusty-store-kv: specifier: ^1.3.1 version: 1.3.1 @@ -285,6 +312,9 @@ importers: superagent: specifier: 10.3.0 version: 10.3.0 + surrealdb: + specifier: ^2.0.3 + version: 2.0.3(tslib@2.8.1)(typescript@6.0.3) swagger-ui-express: specifier: ^5.0.1 version: 5.0.1(express@5.2.1) @@ -295,8 +325,8 @@ importers: specifier: 4.21.0 version: 4.21.0 ueberdb2: - specifier: ^5.0.45 - version: 5.0.45 + specifier: ^5.0.47 + version: 5.0.47(@azure/core-client@1.10.1)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(tslib@2.8.1)(typescript@6.0.3) underscore: specifier: 1.13.8 version: 1.13.8 @@ -459,6 +489,77 @@ packages: '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@azure-rest/core-client@2.6.0': + resolution: {integrity: sha512-iuFKDm8XPzNxPfRjhyU5/xKZmcRDzSuEghXDHHk4MjBV/wFL34GmYVBZnn9wmuoLBeS1qAw9ceMdaeJBPcB1QQ==} + engines: {node: '>=20.0.0'} + + '@azure/abort-controller@2.1.2': + resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} + engines: {node: '>=18.0.0'} + + '@azure/core-auth@1.10.1': + resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==} + engines: {node: '>=20.0.0'} + + '@azure/core-client@1.10.1': + resolution: {integrity: sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==} + engines: {node: '>=20.0.0'} + + '@azure/core-http-compat@2.4.0': + resolution: {integrity: sha512-f1P96IB399YiN2ARYHP7EpZi3Bf3wH4SN2lGzrw7JVwm7bbsVYtf2iKSBwTywD2P62NOPZGHFSZi+6jjb75JuA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@azure/core-client': ^1.10.0 + '@azure/core-rest-pipeline': ^1.22.0 + + '@azure/core-lro@2.7.2': + resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} + engines: {node: '>=18.0.0'} + + '@azure/core-paging@1.6.2': + resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} + engines: {node: '>=18.0.0'} + + '@azure/core-rest-pipeline@1.23.0': + resolution: {integrity: sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==} + engines: {node: '>=20.0.0'} + + '@azure/core-tracing@1.3.1': + resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==} + engines: {node: '>=20.0.0'} + + '@azure/core-util@1.13.1': + resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==} + engines: {node: '>=20.0.0'} + + '@azure/identity@4.13.1': + resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==} + engines: {node: '>=20.0.0'} + + '@azure/keyvault-common@2.1.0': + resolution: {integrity: sha512-aCDidWuKY06LWQ4x7/8TIXK6iRqTaRWRL3t7T+LC+j1b07HtoIsOxP/tU90G4jCSBn5TAyUTCtA4MS/y5Hudaw==} + engines: {node: '>=20.0.0'} + + '@azure/keyvault-keys@4.10.0': + resolution: {integrity: sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==} + engines: {node: '>=18.0.0'} + + '@azure/logger@1.3.0': + resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} + engines: {node: '>=20.0.0'} + + '@azure/msal-browser@5.7.0': + resolution: {integrity: sha512-uYbJ0YarxkVGWEq814BysJry/IPvpDNkVKmc2bMZp4G+igUQkJ5nlFirycwPGUeA9ICLQqCxqExCA1Z1E07bPA==} + engines: {node: '>=0.8.0'} + + '@azure/msal-common@16.5.0': + resolution: {integrity: sha512-i3eS/5pmxDbIU/mLMENs88Qg3k6XxqJytJy6PpB7L1tCBjdXHJDadCD3Hu1TyTooe7iQo7CYqbocgL/l/8u90g==} + engines: {node: '>=0.8.0'} + + '@azure/msal-node@5.1.3': + resolution: {integrity: sha512-LqT8mRZpEils9zGR9eW+Ljqifh2aMA99UF/X0jxIKDYZeHr6onlHwhVP4xHCeLhh55BI63JCbdf1iWJbMh1mPw==} + engines: {node: '>=20'} + '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} @@ -591,6 +692,14 @@ packages: '@docsearch/sidepanel-js@4.6.0': resolution: {integrity: sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==} + '@elastic/elasticsearch@9.3.4': + resolution: {integrity: sha512-Mp14fPEYx+WTfZdcvAaZ9WkLYGHQCbwMx6EP5VCucYdhv4cn/g2sbnMT5HzK+gX3XEpBnnkEK/+WysCKzxuo3A==} + engines: {node: '>=18'} + + '@elastic/transport@9.3.5': + resolution: {integrity: sha512-hIMJbt1guqr3/N2zCN45k9hw9o78qcdsO0xietLe+Bfa+JL0YafHTgkWkM1oT3Ht5sGMJaDcJZiYomSMU6CtTA==} + engines: {node: '>=20'} + '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} @@ -1011,6 +1120,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@js-joda/core@5.7.0': + resolution: {integrity: sha512-WBu4ULVVxySLLzK1Ppq+OdfP+adRS4ntmDQT915rzDJ++i95gc2jZkM5B6LWEAwN3lGXpfie3yPABozdD3K3Vg==} + '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} @@ -1030,6 +1142,9 @@ packages: '@kwsites/promise-deferred@1.1.1': resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + '@mongodb-js/saslprep@1.4.8': + resolution: {integrity: sha512-kpjr2jy2w71w0oqAMI8oibBmiF9lXxWkEQs5gMkW4hVE48bsqINGLxnCSYW62ck/NHXJQpQEfA9WlJ1sY0eqBg==} + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -1066,6 +1181,16 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + '@opentelemetry/core@2.7.0': + resolution: {integrity: sha512-DT12SXVwV2eoJrGf4nnsvZojxxeQo+LlNAsoYGRRObPWTeN6APiqZ2+nqDCQDvQX40eLi1AePONS0onoASp3yQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.40.0': + resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==} + engines: {node: '>=14'} + '@oxc-project/runtime@0.101.0': resolution: {integrity: sha512-t3qpfVZIqSiLQ5Kqt/MC4Ge/WCOGrrcagAdzTcDaggupjiGxUx4nJF2v6wUCXWSzWHn5Ns7XLv13fCJEwCOERQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1325,6 +1450,42 @@ packages: '@types/react-dom': optional: true + '@redis/bloom@5.12.1': + resolution: {integrity: sha512-PUUfv+ms7jgPSBVoo/DN4AkPHj4D5TZSd6SbJX7egzBplkYUcKmHRE8RKia7UtZ8bSQbLguLvxVO+asKtQfZWA==} + engines: {node: '>= 18.19.0'} + peerDependencies: + '@redis/client': ^5.12.1 + + '@redis/client@5.12.1': + resolution: {integrity: sha512-7aPGWeqA3uFm43o19umzdl16CEjK/JQGtSXVPevplTaOU3VJA/rseBC1QvYUz9lLDIMBimc4SW/zrW4S89BaCA==} + engines: {node: '>= 18.19.0'} + peerDependencies: + '@node-rs/xxhash': ^1.1.0 + '@opentelemetry/api': '>=1 <2' + peerDependenciesMeta: + '@node-rs/xxhash': + optional: true + '@opentelemetry/api': + optional: true + + '@redis/json@5.12.1': + resolution: {integrity: sha512-eOze75esLve4vfqDel7aMX08CNaiLLQS2fV8mpRN9NxPe1rVR4vQyYiW/OgtGUysF6QOr9ANhfxABKNOJfXdKg==} + engines: {node: '>= 18.19.0'} + peerDependencies: + '@redis/client': ^5.12.1 + + '@redis/search@5.12.1': + resolution: {integrity: sha512-ItlxbxC9cKI6IU1TLWoczwJCRb6TdmkEpWv05UrPawqaAnWGRu3rcIqsc5vN483T2fSociuyV1UkWIL5I4//2w==} + engines: {node: '>= 18.19.0'} + peerDependencies: + '@redis/client': ^5.12.1 + + '@redis/time-series@5.12.1': + resolution: {integrity: sha512-c6JL6E3EcZJuNqKFz+KM+l9l5mpcQiKvTwgA3blt5glWJ8hjDk0yeHN3beE/MpqYIQ8UEX44ItQzgkE/gCBELQ==} + engines: {node: '>= 18.19.0'} + peerDependencies: + '@redis/client': ^5.12.1 + '@rolldown/binding-android-arm64@1.0.0-beta.53': resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1567,6 +1728,16 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@surrealdb/cbor@2.0.0-alpha.4': + resolution: {integrity: sha512-l/hNZ3ZCOJq8rzwx1y5ZV/8b2bYCWdhGqRVY33Pu50NAHyAW5qLsMn3ZBkZow77mAKwNCsbDsRGnyYEuU95mjw==} + engines: {node: '>=18.0.0'} + + '@swc/helpers@0.5.21': + resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} + + '@tediousjs/connection-string@1.1.0': + resolution: {integrity: sha512-z9ZBWEG+8pIB5V1zYzlRPXx0oRJ5H7coPnMQK8EZOw03UTPI9Umn6viL36f5w+CuqkKsnCM50RVStpjZmR0Bng==} + '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -1585,6 +1756,12 @@ packages: '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/command-line-args@5.2.3': + resolution: {integrity: sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==} + + '@types/command-line-usage@5.0.4': + resolution: {integrity: sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -1710,6 +1887,12 @@ packages: '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} + + '@types/node@24.12.2': + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} + '@types/node@25.6.0': resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} @@ -1730,6 +1913,9 @@ packages: '@types/react@19.2.14': resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/readable-stream@4.0.23': + resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==} + '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} @@ -1778,9 +1964,15 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + '@types/whatwg-mimetype@5.0.0': resolution: {integrity: sha512-YYiBDCoqBgDIF2ByYn4qDb4RaXZ46cOQ6j2We1Ni3bikFNI7YFeL8jxSiYowWsriZrb1mw09CLZ+b+ZkIhsLVw==} + '@types/whatwg-url@13.0.0': + resolution: {integrity: sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==} + '@typescript-eslint/eslint-plugin@7.18.0': resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -1898,6 +2090,10 @@ packages: resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typespec/ts-http-runtime@0.3.5': + resolution: {integrity: sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==} + engines: {node: '>=20.0.0'} + '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -2124,6 +2320,10 @@ packages: peerDependencies: vue: ^3.5.0 + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -2142,6 +2342,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + adm-zip@0.5.17: + resolution: {integrity: sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==} + engines: {node: '>=12.0'} + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} @@ -2176,6 +2380,10 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + apache-arrow@21.1.0: + resolution: {integrity: sha512-kQrYLxhC+NTVVZ4CCzGF6L/uPVOzJmD1T3XgbiUnP7oTeVFOFgEUu6IKNwCDkpFoBVqDKQivlX4RUFqqnWFlEA==} + hasBin: true + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2183,6 +2391,10 @@ packages: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} + array-back@6.2.3: + resolution: {integrity: sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==} + engines: {node: '>=12.17'} + array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} @@ -2236,6 +2448,10 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + aws-ssl-profiles@1.1.2: + resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} + engines: {node: '>= 6.0.0'} + axios@1.15.0: resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} @@ -2252,6 +2468,9 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64id@2.0.0: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} @@ -2284,6 +2503,12 @@ packages: birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + bl@6.1.6: + resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==} + + bluebird@2.11.0: + resolution: {integrity: sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==} + body-parser@2.2.1: resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} engines: {node: '>=18'} @@ -2310,9 +2535,20 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + bson@7.2.0: + resolution: {integrity: sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ==} + engines: {node: '>=20.19.0'} + buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -2336,6 +2572,10 @@ packages: caniuse-lite@1.0.30001788: resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} + cassandra-driver@4.8.0: + resolution: {integrity: sha512-HritfMGq9V7SuESeSodHvArs0mLuMk7uh+7hQK2lqdvXrvm50aWxb4RPxkK3mPDdsgHjJ427xNRFITMH2ei+Sw==} + engines: {node: '>=18'} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2343,6 +2583,10 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} + chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2376,6 +2620,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -2390,6 +2638,23 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + command-line-args@6.0.2: + resolution: {integrity: sha512-AIjYVxrV9X752LmPDLbVYv8aMCuHPSLZJXEo2qo/xJfv+NYhaZ4sMSF01rM+gHPaMgvPM0l5D/F+Qx+i2WfSmQ==} + engines: {node: '>=12.20'} + peerDependencies: + '@75lb/nature': latest + peerDependenciesMeta: + '@75lb/nature': + optional: true + + command-line-usage@7.0.4: + resolution: {integrity: sha512-85UdvzTNx/+s5CkSgBm/0hzP80RFHAa7PsfeADE5ezZF3uHz3/Tqj9gIKGT9PTtpycc3Ua64T0oVulGfKxzfqg==} + engines: {node: '>=12.20.0'} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + component-emitter@1.3.1: resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} @@ -2536,10 +2801,22 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -2555,6 +2832,10 @@ packages: delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -2903,6 +3184,14 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} @@ -2975,6 +3264,15 @@ packages: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} + find-replace@5.0.2: + resolution: {integrity: sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==} + engines: {node: '>=14'} + peerDependencies: + '@75lb/nature': latest + peerDependenciesMeta: + '@75lb/nature': + optional: true + find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} @@ -2990,6 +3288,9 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true + flatbuffers@25.9.23: + resolution: {integrity: sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==} + flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} @@ -3061,6 +3362,9 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + generate-function@2.3.1: + resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -3207,6 +3511,10 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hpagent@1.2.0: + resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} + engines: {node: '>=14'} + html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -3256,6 +3564,9 @@ packages: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3326,6 +3637,11 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3346,6 +3662,11 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -3383,6 +3704,9 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-property@1.0.2: + resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -3423,6 +3747,10 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3436,6 +3764,9 @@ packages: resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} engines: {node: '>=14'} + js-md4@0.3.2: + resolution: {integrity: sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3460,6 +3791,10 @@ packages: engines: {node: '>=6'} hasBin: true + json-bignum@0.0.3: + resolution: {integrity: sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==} + engines: {node: '>=0.8'} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -3693,6 +4028,9 @@ packages: lockfile@1.0.4: resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -3731,6 +4069,12 @@ packages: resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} engines: {node: '>=8.0'} + long@5.2.5: + resolution: {integrity: sha512-e0r9YBBgNCq1D1o5Dp8FMH0N5hsFtXDBiVa0qoJPHpakvZkmDKPRoGffZJII/XsHvj9An9blm+cRJ01yQqU+Dw==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + lru-cache@11.3.5: resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} engines: {node: 20 || >=22} @@ -3742,6 +4086,10 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} + lru.min@1.1.4: + resolution: {integrity: sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==} + engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} + lucide-react@1.8.0: resolution: {integrity: sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw==} peerDependencies: @@ -3771,6 +4119,9 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -3867,12 +4218,62 @@ packages: mock-json-schema@1.1.2: resolution: {integrity: sha512-3IyduYlhfzPy+nFN8wxUjloUi1hM7l8lN5LITuauUNMQltynJIOfLf/DADwTAp2d6kvSBtWojly1EuxX5B0WkA==} + mongodb-connection-string-url@7.0.1: + resolution: {integrity: sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ==} + engines: {node: '>=20.19.0'} + + mongodb@7.2.0: + resolution: {integrity: sha512-F/2+BMZtLVhY30ioZp0dAmZ+IRZMBqI+nrv6t5+9/1AIwCa8sMRC3jBf81lpxMhnZgqq8CoUD503Z1oZWq1/sw==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.806.0 + '@mongodb-js/zstd': ^7.0.0 + gcp-metadata: ^7.0.1 + kerberos: ^7.0.0 + mongodb-client-encryption: '>=7.0.0 <7.1.0' + snappy: ^7.3.2 + socks: ^2.8.6 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mssql@12.3.1: + resolution: {integrity: sha512-vejZVkcJE6QoXOwt0nwQ79zpnnyworRmIs81qSDWTFUPui6oVv2bs06Tx2iHxrslxUXuXAJevFzWwYjO7mVeOg==} + engines: {node: '>=18'} + hasBin: true + + mysql2@3.22.1: + resolution: {integrity: sha512-48+9UXehKyxxiP2pqCxUq+MSFvX+v41jwsSpFDQO/jAoFuAELutBGJUhWJnDbe82/OBlIhSBMC82WeonmznT/Q==} + engines: {node: '>= 8.0'} + peerDependencies: + '@types/node': '>= 8' + + named-placeholders@1.1.6: + resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==} + engines: {node: '>=8.0.0'} + + nano@11.0.5: + resolution: {integrity: sha512-yLYmFH7S33OWYPAG12wNqMR6l9hC3qOWLbr7hZPqKBVKO8BYhAaLlWENeJEpPY8Rm12lGvzKWBp8LGEgWhEqmw==} + engines: {node: '>=20.0'} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3883,6 +4284,9 @@ packages: engines: {node: ^18 || >=20} hasBin: true + native-duplexpair@1.0.0: + resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3976,6 +4380,10 @@ packages: oniguruma-to-es@4.3.5: resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + openapi-backend@5.16.1: resolution: {integrity: sha512-1tfLpC+7CajKv08vuFOLm4t8rJvJyqKuyau5IIIrGg3YuQYhmP7JqDL6p6WnbDCusmh3krCrKXoHB6hLF/iHcQ==} engines: {node: '>=20.0.0'} @@ -4058,6 +4466,40 @@ packages: perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} + + pg-connection-string@2.12.0: + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.13.0: + resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.13.0: + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.20.0: + resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -4091,10 +4533,30 @@ packages: resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + prom-client@15.1.3: resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==} engines: {node: ^16 || ^18 || >=20} @@ -4231,6 +4693,10 @@ packages: resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -4243,6 +4709,10 @@ packages: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} + redis@5.12.1: + resolution: {integrity: sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==} + engines: {node: '>= 18.19.0'} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -4293,6 +4763,10 @@ packages: engines: {node: '>= 0.4'} hasBin: true + rethinkdb@2.4.2: + resolution: {integrity: sha512-6DzwqEpFc8cqesAdo07a845oBRxLiHvWzopTKBo/uY2ypGWIsJQFJk3wjRDtSEhczxJqLS0jnf37rwgzYAw8NQ==} + engines: {node: '>= 0.10.0'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -4359,6 +4833,10 @@ packages: resolution: {integrity: sha512-az/PLDwa1xijNv4bAFBS8mtqqJC1Y3lVyFag4cuyIUOHq/ft5kSZlHbqYaLZLpsQtPWv4ZGDo5ycySKJzUvU/A==} deprecated: Please migrate to the brand new `@rspack/resolver` or `unrs-resolver` instead + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -4458,6 +4936,9 @@ packages: search-insights@2.17.3: resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} + secure-json-parse@4.1.0: + resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} + security@1.0.0: resolution: {integrity: sha512-5qfoAgfRWS1sUn+fUJtdbbqM1BD/LoQGa+smPTDjf9OqHyuJqi6ewtbYL0+V1S1RaU6OCOCMWGZocIfz2YK4uw==} @@ -4584,12 +5065,23 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + split-grid@1.0.11: resolution: {integrity: sha512-ELtFtxc3r5we5GZfe6Fi0BFFxIi2M6BY1YEntBscKRDD3zx4JVHqx2VnTRSQu1BixCYSTH3MTjKd4esI2R7EgQ==} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + sql-escaper@1.3.3: + resolution: {integrity: sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==} + engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'} + stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} @@ -4631,6 +5123,9 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -4666,6 +5161,12 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + surrealdb@2.0.3: + resolution: {integrity: sha512-60dXe7K+7M5EUr6VyIgd/SEUCKFXqc54JHUhCTG8IDlqp7pmuuQQWs2wpgulp2oSXpy+9jwKhgNR/mP3wrEgfw==} + peerDependencies: + tslib: ^2.6.3 + typescript: ^5.0.0 + swagger-schema-official@2.0.0-bab6bed: resolution: {integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==} @@ -4684,6 +5185,10 @@ packages: tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + table-layout@4.1.1: + resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} + engines: {node: '>=12.17'} + tapable@2.3.2: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} @@ -4692,9 +5197,17 @@ packages: resolution: {integrity: sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==} engines: {node: '>=18'} + tarn@3.0.2: + resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} + engines: {node: '>=8.0.0'} + tdigest@0.1.2: resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==} + tedious@19.2.1: + resolution: {integrity: sha512-pk1Q16Yl62iocuQB+RWbg6rFUFkIyzqOFQ6NfysCltRvQqKwfurgj8v/f2X+CKvDhSL4IJ0cCOfCHDg9PWEEYA==} + engines: {node: '>=18.17'} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -4736,6 +5249,10 @@ packages: resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + tr46@6.0.0: resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} engines: {node: '>=20'} @@ -4819,6 +5336,10 @@ packages: engines: {node: '>=14.17'} hasBin: true + typical@7.3.0: + resolution: {integrity: sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==} + engines: {node: '>=12.17'} + ueberdb2@5.0.45: resolution: {integrity: sha512-w4jie3q9yDIgBfmvS1DZiXKe5+o8Wqp3/3y6qgcigyPy7ELVueNSUmvhtz7m0vXl6E/Y9bb1UIMf1Prm8ev7NA==} engines: {node: '>=18.0.0'} @@ -4855,6 +5376,10 @@ packages: surrealdb: optional: true + ueberdb2@5.0.47: + resolution: {integrity: sha512-5XVv+y67x1P5o7ClTdKlUSEwn96GdkaSOgQg+VINo6mzjujrK1awaudqmYs2YgsCGTjRmrlUOW/eH68JDQc+gA==} + engines: {node: '>=18.0.0'} + uid-safe@2.1.5: resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} engines: {node: '>= 0.8'} @@ -4866,6 +5391,12 @@ packages: underscore@1.13.8: resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==} + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.19.2: resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} @@ -4950,6 +5481,14 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuidv7@1.2.1: + resolution: {integrity: sha512-4kPkK3/XTQW9Hbm4CaqfICn+kY9LJtDVEOfgsRRra/+n2Ofg4NqzRFceAkxvQ/Ud/6BpHOPzj8cirqM7TzTN5Q==} + hasBin: true + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -5097,6 +5636,10 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + webidl-conversions@8.0.1: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} @@ -5105,6 +5648,10 @@ packages: resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@16.0.1: resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -5139,6 +5686,10 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wordwrapjs@5.1.1: + resolution: {integrity: sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==} + engines: {node: '>=12.17'} + workerpool@9.3.4: resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} @@ -5161,6 +5712,10 @@ packages: utf-8-validate: optional: true + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + wtfnode@0.10.1: resolution: {integrity: sha512-4mcHdlvcdSytsbFueN6QYZxmh5K7REawBk//ZOrJrtVOe548Qsq4GNEm/OUfZATqDnsX4g8uBbzmN7NdEZx09Q==} engines: {node: '>=0.10.0'} @@ -5177,6 +5732,10 @@ packages: resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -5266,6 +5825,150 @@ snapshots: '@asamuzakjp/nwsapi@2.3.9': {} + '@azure-rest/core-client@2.6.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/abort-controller@2.1.2': + dependencies: + tslib: 2.8.1 + + '@azure/core-auth@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-client@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-http-compat@2.4.0(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0)': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + + '@azure/core-lro@2.7.2': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-paging@1.6.2': + dependencies: + tslib: 2.8.1 + + '@azure/core-rest-pipeline@1.23.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-tracing@1.3.1': + dependencies: + tslib: 2.8.1 + + '@azure/core-util@1.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/identity@4.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@azure/msal-browser': 5.7.0 + '@azure/msal-node': 5.1.3 + open: 10.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/keyvault-common@2.1.0': + dependencies: + '@azure-rest/core-client': 2.6.0 + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/keyvault-keys@4.10.0(@azure/core-client@1.10.1)': + dependencies: + '@azure-rest/core-client': 2.6.0 + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-http-compat': 2.4.0(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) + '@azure/core-lro': 2.7.2 + '@azure/core-paging': 1.6.2 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/keyvault-common': 2.1.0 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + + '@azure/logger@1.3.0': + dependencies: + '@typespec/ts-http-runtime': 0.3.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/msal-browser@5.7.0': + dependencies: + '@azure/msal-common': 16.5.0 + + '@azure/msal-common@16.5.0': {} + + '@azure/msal-node@5.1.3': + dependencies: + '@azure/msal-common': 16.5.0 + jsonwebtoken: 9.0.3 + uuid: 8.3.2 + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -5411,6 +6114,28 @@ snapshots: '@docsearch/sidepanel-js@4.6.0': {} + '@elastic/elasticsearch@9.3.4': + dependencies: + '@elastic/transport': 9.3.5 + apache-arrow: 21.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@75lb/nature' + - supports-color + + '@elastic/transport@9.3.5': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.7.0(@opentelemetry/api@1.9.0) + debug: 4.4.3(supports-color@8.1.1) + hpagent: 1.2.0 + ms: 2.1.3 + secure-json-parse: 4.1.0 + tslib: 2.8.1 + undici: 7.24.7 + transitivePeerDependencies: + - supports-color + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 @@ -5686,6 +6411,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@js-joda/core@5.7.0': {} + '@jsdevtools/ono@7.1.3': {} '@koa/cors@5.0.0': @@ -5710,6 +6437,10 @@ snapshots: '@kwsites/promise-deferred@1.1.1': {} + '@mongodb-js/saslprep@1.4.8': + dependencies: + sparse-bitfield: 3.0.3 + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.10.0 @@ -5749,6 +6480,13 @@ snapshots: '@opentelemetry/api@1.9.0': {} + '@opentelemetry/core@2.7.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.40.0 + + '@opentelemetry/semantic-conventions@1.40.0': {} + '@oxc-project/runtime@0.101.0': {} '@oxc-project/types@0.101.0': {} @@ -5975,6 +6713,28 @@ snapshots: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@redis/bloom@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0))': + dependencies: + '@redis/client': 5.12.1(@opentelemetry/api@1.9.0) + + '@redis/client@5.12.1(@opentelemetry/api@1.9.0)': + dependencies: + cluster-key-slot: 1.1.2 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + + '@redis/json@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0))': + dependencies: + '@redis/client': 5.12.1(@opentelemetry/api@1.9.0) + + '@redis/search@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0))': + dependencies: + '@redis/client': 5.12.1(@opentelemetry/api@1.9.0) + + '@redis/time-series@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0))': + dependencies: + '@redis/client': 5.12.1(@opentelemetry/api@1.9.0) + '@rolldown/binding-android-arm64@1.0.0-beta.53': optional: true @@ -6140,6 +6900,14 @@ snapshots: '@standard-schema/spec@1.1.0': {} + '@surrealdb/cbor@2.0.0-alpha.4': {} + + '@swc/helpers@0.5.21': + dependencies: + tslib: 2.8.1 + + '@tediousjs/connection-string@1.1.0': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} '@tybys/wasm-util@0.10.1': @@ -6163,6 +6931,10 @@ snapshots: '@types/deep-eql': 4.0.2 assertion-error: 2.0.1 + '@types/command-line-args@5.2.3': {} + + '@types/command-line-usage@5.0.4': {} + '@types/connect@3.4.38': dependencies: '@types/node': 25.6.0 @@ -6304,6 +7076,14 @@ snapshots: '@types/node': 25.6.0 form-data: 4.0.5 + '@types/node@18.19.130': + dependencies: + undici-types: 5.26.5 + + '@types/node@24.12.2': + dependencies: + undici-types: 7.16.0 + '@types/node@25.6.0': dependencies: undici-types: 7.19.2 @@ -6326,6 +7106,10 @@ snapshots: dependencies: csstype: 3.2.3 + '@types/readable-stream@4.0.23': + dependencies: + '@types/node': 25.6.0 + '@types/semver@7.7.1': {} '@types/send@0.17.4': @@ -6386,8 +7170,14 @@ snapshots: '@types/web-bluetooth@0.0.21': {} + '@types/webidl-conversions@7.0.3': {} + '@types/whatwg-mimetype@5.0.0': {} + '@types/whatwg-url@13.0.0': + dependencies: + '@types/webidl-conversions': 7.0.3 + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -6560,6 +7350,14 @@ snapshots: '@typescript-eslint/types': 8.58.2 eslint-visitor-keys: 5.0.1 + '@typespec/ts-http-runtime@0.3.5': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + '@ungap/structured-clone@1.3.0': {} '@unrs/rspack-resolver-binding-darwin-arm64@1.3.0': @@ -6753,6 +7551,10 @@ snapshots: dependencies: vue: 3.5.30(typescript@6.0.3) + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -6769,6 +7571,8 @@ snapshots: acorn@8.16.0: {} + adm-zip@0.5.17: {} + agent-base@7.1.3: {} agent-base@7.1.4: {} @@ -6802,12 +7606,28 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.2 + apache-arrow@21.1.0: + dependencies: + '@swc/helpers': 0.5.21 + '@types/command-line-args': 5.2.3 + '@types/command-line-usage': 5.0.4 + '@types/node': 24.12.2 + command-line-args: 6.0.2 + command-line-usage: 7.0.4 + flatbuffers: 25.9.23 + json-bignum: 0.0.3 + tslib: 2.8.1 + transitivePeerDependencies: + - '@75lb/nature' + argparse@2.0.1: {} aria-hidden@1.2.6: dependencies: tslib: 2.8.1 + array-back@6.2.3: {} + array-buffer-byte-length@1.0.2: dependencies: call-bound: 1.0.4 @@ -6878,6 +7698,8 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 + aws-ssl-profiles@1.1.2: {} + axios@1.15.0: dependencies: follow-redirects: 1.16.0 @@ -6896,6 +7718,8 @@ snapshots: balanced-match@4.0.4: {} + base64-js@1.5.1: {} + base64id@2.0.0: {} baseline-browser-mapping@2.10.19: {} @@ -6916,6 +7740,15 @@ snapshots: birpc@2.9.0: {} + bl@6.1.6: + dependencies: + '@types/readable-stream': 4.0.23 + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 4.7.0 + + bluebird@2.11.0: {} + body-parser@2.2.1: dependencies: bytes: 3.1.2 @@ -6957,8 +7790,19 @@ snapshots: node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) + bson@7.2.0: {} + buffer-equal-constant-time@1.0.1: {} + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + bytes@3.1.2: {} call-bind-apply-helpers@1.0.2: @@ -6982,10 +7826,20 @@ snapshots: caniuse-lite@1.0.30001788: {} + cassandra-driver@4.8.0: + dependencies: + '@types/node': 18.19.130 + adm-zip: 0.5.17 + long: 5.2.5 + ccount@2.0.1: {} chai@6.2.2: {} + chalk-template@0.4.0: + dependencies: + chalk: 4.1.2 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -7025,6 +7879,8 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cluster-key-slot@1.1.2: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -7037,6 +7893,22 @@ snapshots: comma-separated-tokens@2.0.3: {} + command-line-args@6.0.2: + dependencies: + array-back: 6.2.3 + find-replace: 5.0.2 + lodash.camelcase: 4.3.0 + typical: 7.3.0 + + command-line-usage@7.0.4: + dependencies: + array-back: 6.2.3 + chalk-template: 0.4.0 + table-layout: 4.1.1 + typical: 7.3.0 + + commander@11.1.0: {} + component-emitter@1.3.1: {} concat-map@0.0.1: {} @@ -7151,12 +8023,21 @@ snapshots: deep-is@0.1.4: {} + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -7173,6 +8054,8 @@ snapshots: delegates@1.0.0: {} + denque@2.1.0: {} + depd@1.1.2: {} depd@2.0.0: {} @@ -7441,7 +8324,7 @@ snapshots: '@rushstack/eslint-patch': 1.16.1 '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0)(typescript@6.0.3) '@typescript-eslint/parser': 7.18.0(eslint@10.2.0)(typescript@6.0.3) - eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.32.0)(eslint@10.2.0) + eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0))(eslint@10.2.0) eslint-plugin-cypress: 2.15.2(eslint@10.2.0) eslint-plugin-eslint-comments: 3.2.0(eslint@10.2.0) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint-import-resolver-typescript@3.9.1)(eslint@10.2.0) @@ -7465,7 +8348,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.32.0)(eslint@10.2.0): + eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0))(eslint@10.2.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) @@ -7480,14 +8363,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.9.1)(eslint@10.2.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0))(eslint@10.2.0))(eslint@10.2.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@10.2.0)(typescript@6.0.3) eslint: 10.2.0 eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.32.0)(eslint@10.2.0) + eslint-import-resolver-typescript: 3.9.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0))(eslint@10.2.0) transitivePeerDependencies: - supports-color @@ -7520,7 +8403,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.2.0 eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.9.1)(eslint@10.2.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.9.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@10.2.0)(typescript@6.0.3))(eslint@10.2.0))(eslint@10.2.0))(eslint@10.2.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7680,6 +8563,10 @@ snapshots: - supports-color - utf-8-validate + event-target-shim@5.0.1: {} + + events@3.3.0: {} + expect-type@1.3.0: {} express-rate-limit@8.3.2(express@5.2.1): @@ -7789,6 +8676,8 @@ snapshots: transitivePeerDependencies: - supports-color + find-replace@5.0.2: {} + find-root@1.1.0: {} find-up@5.0.0: @@ -7803,6 +8692,8 @@ snapshots: flat@5.0.2: {} + flatbuffers@25.9.23: {} + flatted@3.4.2: {} focus-trap@8.0.0: @@ -7870,6 +8761,10 @@ snapshots: functions-have-names@1.2.3: {} + generate-function@2.3.1: + dependencies: + is-property: 1.0.2 + generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -8059,6 +8954,8 @@ snapshots: hookable@5.5.3: {} + hpagent@1.2.0: {} + html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): dependencies: '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) @@ -8124,6 +9021,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 + ieee754@1.2.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} @@ -8195,6 +9094,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -8215,6 +9116,10 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -8238,6 +9143,8 @@ snapshots: is-promise@4.0.0: {} + is-property@1.0.2: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -8279,6 +9186,10 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + isarray@2.0.5: {} isexe@2.0.0: {} @@ -8287,6 +9198,8 @@ snapshots: js-cookie@3.0.5: {} + js-md4@0.3.2: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: @@ -8323,6 +9236,8 @@ snapshots: jsesc@3.1.0: {} + json-bignum@0.0.3: {} + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -8547,6 +9462,8 @@ snapshots: dependencies: signal-exit: 3.0.7 + lodash.camelcase@4.3.0: {} + lodash.clonedeep@4.5.0: {} lodash.includes@4.3.0: {} @@ -8582,6 +9499,10 @@ snapshots: transitivePeerDependencies: - supports-color + long@5.2.5: {} + + long@5.3.2: {} + lru-cache@11.3.5: {} lru-cache@5.1.1: @@ -8590,6 +9511,8 @@ snapshots: lru-cache@7.18.3: {} + lru.min@1.1.4: {} + lucide-react@1.8.0(react@19.2.5): dependencies: react: 19.2.5 @@ -8623,6 +9546,8 @@ snapshots: media-typer@1.1.0: {} + memory-pager@1.5.0: {} + merge-descriptors@2.0.0: {} merge2@1.4.1: {} @@ -8721,14 +9646,56 @@ snapshots: dependencies: lodash: 4.18.1 + mongodb-connection-string-url@7.0.1: + dependencies: + '@types/whatwg-url': 13.0.0 + whatwg-url: 14.2.0 + + mongodb@7.2.0: + dependencies: + '@mongodb-js/saslprep': 1.4.8 + bson: 7.2.0 + mongodb-connection-string-url: 7.0.1 + ms@2.0.0: {} ms@2.1.3: {} + mssql@12.3.1(@azure/core-client@1.10.1): + dependencies: + '@tediousjs/connection-string': 1.1.0 + commander: 11.1.0 + debug: 4.4.3(supports-color@8.1.1) + tarn: 3.0.2 + tedious: 19.2.1(@azure/core-client@1.10.1) + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + + mysql2@3.22.1(@types/node@25.6.0): + dependencies: + '@types/node': 25.6.0 + aws-ssl-profiles: 1.1.2 + denque: 2.1.0 + generate-function: 2.3.1 + iconv-lite: 0.7.2 + long: 5.3.2 + lru.min: 1.1.4 + named-placeholders: 1.1.6 + sql-escaper: 1.3.3 + + named-placeholders@1.1.6: + dependencies: + lru.min: 1.1.4 + + nano@11.0.5: {} + nanoid@3.3.11: {} nanoid@5.1.9: {} + native-duplexpair@1.0.0: {} + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -8837,6 +9804,13 @@ snapshots: regex: 6.1.0 regex-recursion: 6.0.2 + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + openapi-backend@5.16.1: dependencies: '@apidevtools/json-schema-ref-parser': 11.9.3 @@ -8939,6 +9913,41 @@ snapshots: perfect-debounce@2.1.0: {} + pg-cloudflare@1.3.0: + optional: true + + pg-connection-string@2.12.0: {} + + pg-int8@1.0.1: {} + + pg-pool@3.13.0(pg@8.20.0): + dependencies: + pg: 8.20.0 + + pg-protocol@1.13.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.20.0: + dependencies: + pg-connection-string: 2.12.0 + pg-pool: 3.13.0(pg@8.20.0) + pg-protocol: 1.13.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.3.0 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -8967,8 +9976,20 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-bytea@1.0.1: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + prelude-ls@1.2.1: {} + process@0.11.10: {} + prom-client@15.1.3: dependencies: '@opentelemetry/api': 1.9.0 @@ -9090,6 +10111,14 @@ snapshots: react@19.2.5: {} + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + readdirp@3.6.0: dependencies: picomatch: 2.3.2 @@ -9098,6 +10127,17 @@ snapshots: readdirp@5.0.0: {} + redis@5.12.1(@opentelemetry/api@1.9.0): + dependencies: + '@redis/bloom': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0)) + '@redis/client': 5.12.1(@opentelemetry/api@1.9.0) + '@redis/json': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0)) + '@redis/search': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0)) + '@redis/time-series': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.0)) + transitivePeerDependencies: + - '@node-rs/xxhash' + - '@opentelemetry/api' + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.9 @@ -9174,6 +10214,10 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + rethinkdb@2.4.2: + dependencies: + bluebird: 2.11.0 + reusify@1.1.0: {} rfdc@1.4.1: {} @@ -9260,6 +10304,8 @@ snapshots: '@unrs/rspack-resolver-binding-win32-ia32-msvc': 1.3.0 '@unrs/rspack-resolver-binding-win32-x64-msvc': 1.3.0 + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -9338,6 +10384,8 @@ snapshots: search-insights@2.17.3: {} + secure-json-parse@4.1.0: {} + security@1.0.0: {} semver@6.3.1: {} @@ -9530,10 +10578,18 @@ snapshots: space-separated-tokens@2.0.2: {} + sparse-bitfield@3.0.3: + dependencies: + memory-pager: 1.5.0 + split-grid@1.0.11: {} + split2@4.2.0: {} + sprintf-js@1.1.3: {} + sql-escaper@1.3.3: {} + stable-hash@0.0.5: {} stackback@0.0.2: {} @@ -9586,6 +10642,10 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -9631,6 +10691,13 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + surrealdb@2.0.3(tslib@2.8.1)(typescript@6.0.3): + dependencies: + '@surrealdb/cbor': 2.0.0-alpha.4 + tslib: 2.8.1 + typescript: 6.0.3 + uuidv7: 1.2.1 + swagger-schema-official@2.0.0-bab6bed: {} swagger-ui-dist@5.20.6: @@ -9646,6 +10713,11 @@ snapshots: tabbable@6.4.0: {} + table-layout@4.1.1: + dependencies: + array-back: 6.2.3 + wordwrapjs: 5.1.1 + tapable@2.3.2: {} tar@7.5.13: @@ -9656,10 +10728,28 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 + tarn@3.0.2: {} + tdigest@0.1.2: dependencies: bintrees: 1.0.2 + tedious@19.2.1(@azure/core-client@1.10.1): + dependencies: + '@azure/core-auth': 1.10.1 + '@azure/identity': 4.13.1 + '@azure/keyvault-keys': 4.10.0(@azure/core-client@1.10.1) + '@js-joda/core': 5.7.0 + '@types/node': 25.6.0 + bl: 6.1.6 + iconv-lite: 0.7.2 + js-md4: 0.3.2 + native-duplexpair: 1.0.0 + sprintf-js: 1.1.3 + transitivePeerDependencies: + - '@azure/core-client' + - supports-color + tinybench@2.9.0: {} tinycon@0.6.8: {} @@ -9694,6 +10784,10 @@ snapshots: dependencies: tldts: 7.0.28 + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -9784,15 +10878,62 @@ snapshots: typescript@6.0.3: {} - ueberdb2@5.0.45: + typical@7.3.0: {} + + ueberdb2@5.0.45(@elastic/elasticsearch@9.3.4)(cassandra-driver@4.8.0)(mongodb@7.2.0)(mssql@12.3.1(@azure/core-client@1.10.1))(mysql2@3.22.1(@types/node@25.6.0))(nano@11.0.5)(pg@8.20.0)(redis@5.12.1(@opentelemetry/api@1.9.0))(rethinkdb@2.4.2)(surrealdb@2.0.3(tslib@2.8.1)(typescript@6.0.3)): dependencies: async: 3.2.6 dirty-ts: 1.1.8 rusty-store-kv: 1.3.1 simple-git: 3.36.0 + optionalDependencies: + '@elastic/elasticsearch': 9.3.4 + cassandra-driver: 4.8.0 + mongodb: 7.2.0 + mssql: 12.3.1(@azure/core-client@1.10.1) + mysql2: 3.22.1(@types/node@25.6.0) + nano: 11.0.5 + pg: 8.20.0 + redis: 5.12.1(@opentelemetry/api@1.9.0) + rethinkdb: 2.4.2 + surrealdb: 2.0.3(tslib@2.8.1)(typescript@6.0.3) transitivePeerDependencies: - supports-color + ueberdb2@5.0.47(@azure/core-client@1.10.1)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(tslib@2.8.1)(typescript@6.0.3): + dependencies: + '@elastic/elasticsearch': 9.3.4 + async: 3.2.6 + cassandra-driver: 4.8.0 + dirty-ts: 1.1.8 + mongodb: 7.2.0 + mssql: 12.3.1(@azure/core-client@1.10.1) + mysql2: 3.22.1(@types/node@25.6.0) + nano: 11.0.5 + pg: 8.20.0 + redis: 5.12.1(@opentelemetry/api@1.9.0) + rethinkdb: 2.4.2 + rusty-store-kv: 1.3.1 + simple-git: 3.36.0 + surrealdb: 2.0.3(tslib@2.8.1)(typescript@6.0.3) + transitivePeerDependencies: + - '@75lb/nature' + - '@aws-sdk/credential-providers' + - '@azure/core-client' + - '@mongodb-js/zstd' + - '@node-rs/xxhash' + - '@opentelemetry/api' + - '@types/node' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - pg-native + - snappy + - socks + - supports-color + - tslib + - typescript + uid-safe@2.1.5: dependencies: random-bytes: 1.0.0 @@ -9806,6 +10947,10 @@ snapshots: underscore@1.13.8: {} + undici-types@5.26.5: {} + + undici-types@7.16.0: {} + undici-types@7.19.2: {} undici-types@7.24.5: {} @@ -9888,6 +11033,10 @@ snapshots: dependencies: react: 19.2.5 + uuid@8.3.2: {} + + uuidv7@1.2.1: {} + vary@1.1.2: {} vfile-location@5.0.3: @@ -10029,10 +11178,17 @@ snapshots: web-streams-polyfill@3.3.3: {} + webidl-conversions@7.0.0: {} + webidl-conversions@8.0.1: {} whatwg-mimetype@5.0.0: {} + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + whatwg-url@16.0.1(@noble/hashes@1.8.0): dependencies: '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) @@ -10093,6 +11249,8 @@ snapshots: word-wrap@1.2.5: {} + wordwrapjs@5.1.1: {} + workerpool@9.3.4: {} wrap-ansi@7.0.0: @@ -10105,6 +11263,10 @@ snapshots: ws@8.18.3: {} + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + wtfnode@0.10.1: {} xml-name-validator@5.0.0: {} @@ -10113,6 +11275,8 @@ snapshots: xmlhttprequest-ssl@2.1.2: {} + xtend@4.0.2: {} + y18n@5.0.8: {} yallist@3.1.1: {} diff --git a/src/package.json b/src/package.json index b3c2cab1bfc..cac9398ed4f 100644 --- a/src/package.json +++ b/src/package.json @@ -30,8 +30,10 @@ } ], "dependencies": { + "@elastic/elasticsearch": "^9.3.4", "async": "^3.2.6", "axios": "^1.15.0", + "cassandra-driver": "^4.8.0", "cookie-parser": "^1.4.7", "cross-env": "^10.1.0", "cross-spawn": "^7.0.6", @@ -56,24 +58,32 @@ "lru-cache": "^11.3.5", "measured-core": "^2.0.0", "mime-types": "^3.0.2", + "mongodb": "^7.1.1", + "mssql": "^12.2.1", + "mysql2": "^3.22.0", + "nano": "^11.0.5", "oidc-provider": "9.8.2", "openapi-backend": "^5.16.1", + "pg": "^8.20.0", "prom-client": "^15.1.3", "proxy-addr": "^2.0.7", "rate-limiter-flexible": "^11.0.0", + "redis": "^5.12.1", "rehype": "^13.0.2", "rehype-minify-whitespace": "^6.0.2", "resolve": "1.22.12", + "rethinkdb": "^2.4.2", "rusty-store-kv": "^1.3.1", "security": "1.0.0", "semver": "^7.7.4", "socket.io": "^4.8.3", "socket.io-client": "^4.8.3", "superagent": "10.3.0", + "surrealdb": "^2.0.3", "swagger-ui-express": "^5.0.1", "tinycon": "0.6.8", "tsx": "4.21.0", - "ueberdb2": "^5.0.45", + "ueberdb2": "^5.0.47", "underscore": "1.13.8", "unorm": "1.6.0", "wtfnode": "^0.10.1" From 3c21e6437de0cd62ea232233f8e60f59a7c5b523 Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 20 Apr 2026 18:06:23 +0100 Subject: [PATCH 4/4] fix(ci): run driver presence test from src/ so node_modules resolves The presence test ran node from the default cwd (/opt/etherpad-lite), but the drivers are installed under /opt/etherpad-lite/src/node_modules by the monorepo workspace. Adding `-w /opt/etherpad-lite/src` makes Node resolve modules from src/node_modules where pnpm places them. Matches how the production container itself runs: `pnpm run prod` is invoked from src/ (cross-env + node --require tsx/cjs node/server.ts). --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6a211f5fe7e..4c97bcf52c9 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -131,7 +131,7 @@ jobs: - name: Driver presence test (all 10 ueberdb2 drivers must resolve) run: | - docker run --rm "$TEST_TAG" node -e " + docker run --rm -w /opt/etherpad-lite/src "$TEST_TAG" node -e " const mods = [ '@elastic/elasticsearch','cassandra-driver','mongodb','mssql', 'mysql2','nano','pg','redis','rethinkdb','surrealdb'