diff --git a/.github/dependabot.yml b/.github/dependabot.yml index a84f086..207b2a2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,6 +6,14 @@ updates: interval: weekly open-pull-requests-limit: 5 groups: + dashboard-test-toolchain: + patterns: + - vite + - vitest + - "@vitest/*" + - "@vitejs/plugin-react" + - vite-tsconfig-paths + - "@testing-library/*" react: patterns: - react diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 99994af..d53dced 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,8 +35,10 @@ jobs: - run: corepack enable - run: yarn install --immutable - name: Audit dependencies - run: yarn npm audit --all --recursive --no-deprecations --severity high + run: yarn audit - run: yarn test:unit + - name: Check dependency compatibility + run: node --test scripts/test-esbuild-loader.mjs scripts/test-mail.mjs - run: yarn workspace site lint - name: Build public site env: diff --git a/apps/dash/package.json b/apps/dash/package.json index 5e369e5..d71ad4a 100644 --- a/apps/dash/package.json +++ b/apps/dash/package.json @@ -51,7 +51,7 @@ "dotenv": "16.4.7", "graphql": "^16.8.1", "jsdom": "28.0.0", - "knex": "^3.1.0", + "knex": "^3.3.0", "marked": "^17.0.5", "mysql2": "^3.14.2", "next": "16.3.5", @@ -65,22 +65,22 @@ "devDependencies": { "@playwright/test": "1.58.2", "@testing-library/dom": "^10.4.1", - "@testing-library/react": "16.3.0", + "@testing-library/react": "16.3.3", "@types/better-sqlite3": "^7.6.13", "@types/jsdom": "^28.0.1", "@types/node": "^24.0.0", "@types/pg": "^8.23.1", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", - "@vitejs/plugin-react": "4.5.2", + "@vitejs/plugin-react": "6.1.1", "eslint": "^9.16.0", "eslint-config-next": "16.3.5", "prettier": "^3.4.2", "tsx": "4.23.13", "typescript": "5.9.2", - "vite": "^7.1.7", + "vite": "^8.3.0", "vite-tsconfig-paths": "6.0.5", - "vitest": "^4.1.11" + "vitest": "^5.0.0" }, "engines": { "node": ">=24.21.0 <25", diff --git a/apps/site/package.json b/apps/site/package.json index 8e16453..52627a2 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -19,7 +19,7 @@ "dotenv": "^17.2.1", "gray-matter": "^4.0.3", "ioredis": "^5.6.1", - "knex": "^3.1.0", + "knex": "^3.3.0", "lucide-react": "^0.487.0", "moment": "^2.30.1", "mysql2": "^3.14.2", diff --git a/docs/DependencyAudit.md b/docs/DependencyAudit.md index efa46e8..f29ea7a 100644 --- a/docs/DependencyAudit.md +++ b/docs/DependencyAudit.md @@ -1,28 +1,36 @@ # Dependency audit -The public-source preparation audit on 2026-09-14 used Yarn 4.9.2 and Node.js 24.21.0: +The dependency review on 2026-09-15 used Yarn 4.9.2 and Node.js 24.21.0: ```bash yarn install --immutable yarn audit -yarn npm audit --all --recursive --no-deprecations --severity high +node --test scripts/test-esbuild-loader.mjs scripts/test-mail.mjs ``` -The final JavaScript dependency tree reports **no high or critical advisories**. The full audit still reports the moderate advisory below and exits with status 1. CI rejects high and critical advisories; the full audit remains available without suppressions. Registry results can change after this review. +The full JavaScript dependency audit reports **no advisories**. CI runs the full audit without severity exclusions or advisory suppressions. Registry results can change after this review. -The dependency-update review on 2026-09-15 repeated the audit after updating Next.js, React, PostgreSQL client packages, cross-env, and Tailwind CSS. The remaining advisory is unchanged. +## esbuild configuration-loader override -## Remaining moderate advisory +The original audit found [GHSA-67mh-4wv8-2f99: development server cross-origin information exposure](https://github.com/advisories/GHSA-67mh-4wv8-2f99) in `esbuild@0.18.20`, pulled in through Payload's Drizzle configuration loader: -- Package: `esbuild@0.18.20`. -- Advisory: [GHSA-67mh-4wv8-2f99: development server cross-origin information exposure](https://github.com/advisories/GHSA-67mh-4wv8-2f99). -- Dependency path: `apps/dash` → `@payloadcms/db-postgres` / `@payloadcms/db-sqlite@3.89.0` → `drizzle-kit@0.31.7` → `@esbuild-kit/esm-loader@2.6.5` → `@esbuild-kit/core-utils@3.3.2` → `esbuild@0.18.20`. -- The advisory concerns esbuild's development HTTP server. Inspection of the installed configuration loader found transform calls, with no call to esbuild's `serve` or `context` APIs. The repository does not start this esbuild development server. This limits the observed exposure; it is not a claim that every possible use of these dependencies is safe. -- Do not expose an esbuild development server using this version. Remove this advisory by updating Payload/Drizzle to a dependency tree that uses a supported loader and patched esbuild. Re-run the full audit, dashboard type check, integration tests, and build after that change. Avoid forcing an incompatible esbuild version into the deprecated loader without testing its configuration-loading behavior. +`apps/dash` → `@payloadcms/db-postgres` / `@payloadcms/db-sqlite@3.89.0` → `drizzle-kit@0.31.7` → `@esbuild-kit/esm-loader@2.6.5` → `@esbuild-kit/core-utils@3.3.2` → `esbuild`. + +Payload's current release still pins this Drizzle version, and the latest Drizzle Kit release also retains the legacy loader. The root `resolutions` entry therefore targets only `@esbuild-kit/core-utils/esbuild`, replacing the vulnerable version with patched `0.25.12`. Other esbuild consumers retain their own supported dependency ranges. + +This override crosses the loader's declared esbuild range. CI tests the actual resolved dependency chain, synchronous CommonJS and asynchronous ESM TypeScript transforms, and loading a TypeScript configuration with a relative import through the legacy ESM loader. Dashboard integration tests and the production build also validate Payload/Drizzle behavior with the override. + +Remove the resolution and its loader-specific regression tests when Payload/Drizzle drops the legacy loader or natively resolves patched esbuild. Repeat the full audit, dashboard type check, integration tests, and build when changing it. + +## Test toolchain and mail compatibility + +The dashboard uses Vite 8.3, Vitest 5, and `@vitejs/plugin-react` 6.1.1 together. The React plugin requires Vite 8; upgrading it alone on Vite 7 prevents the test configuration from loading. Dependabot groups these tools and Testing Library for future updates. + +Nodemailer 10 supports the repository's Node.js 24 baseline. A regression test compiles the real OTP template through its SES transport with the AWS SDK send method stubbed, without sending email or using credentials. This does not validate delivery through a live SES account. ## Next.js compatibility -Both Next.js applications use `next@16.3.5` with the matching ESLint configuration. The site uses the native flat ESLint configuration supported by Next.js 16. The earlier PostCSS override for `next@15.5.25` has been removed because that dependency is no longer present; site lint/build and the high/critical dependency audit pass without that override. +Both Next.js applications use `next@16.3.5` with the matching ESLint configuration. The site uses Next.js 16's native flat ESLint configuration. The obsolete Next.js 15 PostCSS override is no longer needed. ## PHP integration diff --git a/package.json b/package.json index 87e6903..febbba0 100644 --- a/package.json +++ b/package.json @@ -30,5 +30,8 @@ "bugs": { "url": "https://github.com/suciudan/gatekeepr/issues" }, - "homepage": "https://github.com/suciudan/gatekeepr#readme" + "homepage": "https://github.com/suciudan/gatekeepr#readme", + "resolutions": { + "@esbuild-kit/core-utils/esbuild": "0.25.12" + } } diff --git a/packages/core/package.json b/packages/core/package.json index 80d7a18..e838260 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -13,7 +13,7 @@ "ioredis": "^5.6.1", "ipaddr.js": "^2.5.0", "moment": "^2.30.1", - "nodemailer": "^9.1.0", + "nodemailer": "^10.0.8", "whoiser": "2.0.0-beta.9" }, "private": true, diff --git a/packages/db/package.json b/packages/db/package.json index cb210dd..96a18e7 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -13,7 +13,7 @@ "dependencies": { "@repo/config": "*", "dotenv": "^17.2.1", - "knex": "^3.1.0", + "knex": "^3.3.0", "mysql2": "^3.14.2" }, "private": true, diff --git a/scripts/test-esbuild-loader.mjs b/scripts/test-esbuild-loader.mjs new file mode 100644 index 0000000..c9c0380 --- /dev/null +++ b/scripts/test-esbuild-loader.mjs @@ -0,0 +1,59 @@ +import assert from "node:assert/strict" +import { execFileSync } from "node:child_process" +import { mkdtempSync, rmSync, writeFileSync } from "node:fs" +import { createRequire } from "node:module" +import { tmpdir } from "node:os" +import { join } from "node:path" +import { test } from "node:test" +import { pathToFileURL } from "node:url" +import { runInNewContext } from "node:vm" + +// Resolve through Payload's actual dependency chain, rather than a separately +// installed esbuild. This guards the scoped security override in package.json. +const dashRequire = createRequire(new URL("../apps/dash/package.json", import.meta.url)) +const payloadRequire = createRequire(dashRequire.resolve("@payloadcms/db-sqlite")) +const drizzleRequire = createRequire(payloadRequire.resolve("drizzle-kit/api")) +const loaderPath = drizzleRequire.resolve("@esbuild-kit/esm-loader") +const loaderRequire = createRequire(loaderPath) +const corePath = loaderRequire.resolve("@esbuild-kit/core-utils") +const { transform, transformSync } = loaderRequire("@esbuild-kit/core-utils") +const coreRequire = createRequire(corePath) + +const source = 'const value: number = 42; export default { value }' + +test("the legacy configuration loader resolves patched esbuild", () => { + const [major, minor] = coreRequire("esbuild").version.split(".").map(Number) + assert.ok(major > 0 || minor >= 25) +}) + +test("the loader synchronously transforms TypeScript configuration to CommonJS", () => { + const output = transformSync(source, "/tmp/gatekeepr-config.cts") + const module = { exports: {} } + runInNewContext(output.code, { module, exports: module.exports }) + assert.equal(module.exports.default.value, 42) + assert.ok(output.map) +}) + +test("the loader asynchronously transforms TypeScript configuration to ESM", async () => { + const output = await transform(source, "/tmp/gatekeepr-config.mts") + const config = await import(`data:text/javascript;base64,${Buffer.from(output.code).toString("base64")}`) + assert.equal(config.default.value, 42) + assert.ok(output.map) +}) + +test("the legacy ESM loader loads a TypeScript config with a relative import", () => { + const directory = mkdtempSync(join(tmpdir(), "gatekeepr-loader-test-")) + try { + writeFileSync(join(directory, "package.json"), '{"type":"module"}') + writeFileSync(join(directory, "value.ts"), 'export const value: number = 42') + writeFileSync(join(directory, "config.ts"), 'import { value } from "./value.ts"; export default { value }') + writeFileSync(join(directory, "entry.mjs"), 'import config from "./config.ts"; console.log(JSON.stringify(config))') + const result = execFileSync(process.execPath, ["--no-warnings", "--loader", pathToFileURL(loaderPath).href, join(directory, "entry.mjs")], { + encoding: "utf8", + timeout: 15_000, + }) + assert.equal(JSON.parse(result).value, 42) + } finally { + rmSync(directory, { recursive: true, force: true }) + } +}) diff --git a/scripts/test-mail.mjs b/scripts/test-mail.mjs new file mode 100644 index 0000000..224f520 --- /dev/null +++ b/scripts/test-mail.mjs @@ -0,0 +1,31 @@ +import assert from "node:assert/strict" +import { createRequire } from "node:module" +import { test } from "node:test" +import { pathToFileURL } from "node:url" + +const coreRequire = createRequire(new URL("../packages/core/package.json", import.meta.url)) +const { SESv2Client, SendEmailCommand } = await import(pathToFileURL(coreRequire.resolve("@aws-sdk/client-sesv2"))) + +test("the mail helper compiles the OTP template through Nodemailer's SES transport", async (t) => { + let request + // Replace the SDK boundary: this test must never send mail or use AWS credentials. + t.mock.method(SESv2Client.prototype, "send", async (command) => { + assert.ok(command instanceof SendEmailCommand) + request = command.input + return { MessageId: "synthetic-message-id" } + }) + t.mock.method(console, "log", () => {}) + const { sendEmail } = await import("../packages/core/src/mail.js") + const sent = await sendEmail({ + from: "sender@example.test", + to: "recipient@example.test", + subject: "Synthetic OTP test", + template: "otp-email", + templateProps: { otp: "123456" }, + }) + assert.equal(sent, true) + assert.deepEqual(request.Destination.ToAddresses, ["recipient@example.test"]) + const message = Buffer.from(request.Content.Raw.Data).toString("utf8") + assert.match(message, /Subject: Synthetic OTP test/) + assert.match(message, /123456/) +}) diff --git a/yarn.lock b/yarn.lock index 6f95d7d..d39ca18 100644 --- a/yarn.lock +++ b/yarn.lock @@ -318,7 +318,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.24.4, @babel/core@npm:^7.27.4": +"@babel/core@npm:^7.24.4": version: 7.29.7 resolution: "@babel/core@npm:7.29.7" dependencies: @@ -427,13 +427,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-plugin-utils@npm:7.27.1" - checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-string-parser@npm:7.27.1" @@ -479,7 +472,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.24.4, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.3 resolution: "@babel/parser@npm:7.29.3" dependencies: @@ -501,28 +494,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/00a4f917b70a608f9aca2fb39aabe04a60aa33165a7e0105fd44b3a8531630eb85bf5572e9f242f51e6ad2fa38c2e7e780902176c863556c58b5ba6f6e164031 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-source@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/5e67b56c39c4d03e59e03ba80692b24c5a921472079b63af711b1d250fc37c1733a17069b63537f750f3e937ec44a42b1ee6a46cd23b1a0df5163b17f741f7f2 - languageName: node - linkType: hard - "@babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": version: 7.29.2 resolution: "@babel/runtime@npm:7.29.2" @@ -582,7 +553,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": +"@babel/types@npm:^7.28.6, @babel/types@npm:^7.29.0": version: 7.29.0 resolution: "@babel/types@npm:7.29.0" dependencies: @@ -1101,13 +1072,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm64@npm:0.18.20" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/android-arm64@npm:0.25.12" @@ -1122,13 +1086,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm@npm:0.18.20" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/android-arm@npm:0.25.12" @@ -1143,13 +1100,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-x64@npm:0.18.20" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/android-x64@npm:0.25.12" @@ -1164,13 +1114,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-arm64@npm:0.18.20" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/darwin-arm64@npm:0.25.12" @@ -1185,13 +1128,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-x64@npm:0.18.20" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/darwin-x64@npm:0.25.12" @@ -1206,13 +1142,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-arm64@npm:0.18.20" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/freebsd-arm64@npm:0.25.12" @@ -1227,13 +1156,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-x64@npm:0.18.20" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/freebsd-x64@npm:0.25.12" @@ -1248,13 +1170,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm64@npm:0.18.20" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-arm64@npm:0.25.12" @@ -1269,13 +1184,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm@npm:0.18.20" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-arm@npm:0.25.12" @@ -1290,13 +1198,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ia32@npm:0.18.20" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-ia32@npm:0.25.12" @@ -1311,13 +1212,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-loong64@npm:0.18.20" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-loong64@npm:0.25.12" @@ -1332,13 +1226,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-mips64el@npm:0.18.20" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-mips64el@npm:0.25.12" @@ -1353,13 +1240,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ppc64@npm:0.18.20" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-ppc64@npm:0.25.12" @@ -1374,13 +1254,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-riscv64@npm:0.18.20" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-riscv64@npm:0.25.12" @@ -1395,13 +1268,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-s390x@npm:0.18.20" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-s390x@npm:0.25.12" @@ -1416,13 +1282,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-x64@npm:0.18.20" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/linux-x64@npm:0.25.12" @@ -1451,13 +1310,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/netbsd-x64@npm:0.18.20" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/netbsd-x64@npm:0.25.12" @@ -1486,13 +1338,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/openbsd-x64@npm:0.18.20" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/openbsd-x64@npm:0.25.12" @@ -1521,13 +1366,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/sunos-x64@npm:0.18.20" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/sunos-x64@npm:0.25.12" @@ -1542,13 +1380,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-arm64@npm:0.18.20" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/win32-arm64@npm:0.25.12" @@ -1563,13 +1394,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-ia32@npm:0.18.20" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/win32-ia32@npm:0.25.12" @@ -1584,13 +1408,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-x64@npm:0.18.20" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/win32-x64@npm:0.25.12" @@ -2333,7 +2150,14 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.28": +"@jridgewell/sourcemap-codec@npm:^1.6.0": + version: 1.6.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.6.0" + checksum: 10c0/b5be700e45a775f218589c3466c4ffea630582b4988657652da464e5ab8a7d18bf928ee4fd2363fb346ede4bea9c6ff0bae05a538358c4565ece6199531b5f72 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.31, @jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.28": version: 0.3.31 resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: @@ -3330,7 +3154,7 @@ __metadata: ioredis: "npm:^5.6.1" ipaddr.js: "npm:^2.5.0" moment: "npm:^2.30.1" - nodemailer: "npm:^9.1.0" + nodemailer: "npm:^10.0.8" whoiser: "npm:2.0.0-beta.9" languageName: unknown linkType: soft @@ -3342,7 +3166,7 @@ __metadata: "@repo/config": "npm:*" "@types/node": "npm:^24.0.0" dotenv: "npm:^17.2.1" - knex: "npm:^3.1.0" + knex: "npm:^3.3.0" mysql2: "npm:^3.14.2" languageName: unknown linkType: soft @@ -3452,195 +3276,13 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-beta.11": - version: 1.0.0-beta.11 - resolution: "@rolldown/pluginutils@npm:1.0.0-beta.11" - checksum: 10c0/140088e33a4dd3bc21d06fa0cbe79b52e95487c9737d425aa5729e52446dc70f066fbce632489a53e45bb567f1e86c19835677c98fe5d4123ae1e2fef53f8d97 - languageName: node - linkType: hard - -"@rolldown/pluginutils@npm:^1.0.0": +"@rolldown/pluginutils@npm:^1.0.0, @rolldown/pluginutils@npm:^1.0.1": version: 1.0.1 resolution: "@rolldown/pluginutils@npm:1.0.1" checksum: 10c0/99d9b06d90196823e4d8c841f258db7a16e5dbba5824a2962b05d907b79f1ba929d56f22dd744fd530936e568c865ee56a719dc31e57e13bc0a8eb4764a8d8dd languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.60.3" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-android-arm64@npm:4.60.3" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.60.3" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-x64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.60.3" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-freebsd-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.60.3" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-freebsd-x64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-freebsd-x64@npm:4.60.3" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm-gnueabihf@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.3" - conditions: os=linux & cpu=arm & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm-musleabihf@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.60.3" - conditions: os=linux & cpu=arm & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.60.3" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.60.3" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-loong64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.60.3" - conditions: os=linux & cpu=loong64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-loong64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-loong64-musl@npm:4.60.3" - conditions: os=linux & cpu=loong64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-ppc64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.60.3" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-ppc64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-ppc64-musl@npm:4.60.3" - conditions: os=linux & cpu=ppc64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-riscv64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.60.3" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-riscv64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.60.3" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-linux-s390x-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.60.3" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.60.3" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-musl@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.60.3" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@rollup/rollup-openbsd-x64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-openbsd-x64@npm:4.60.3" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-openharmony-arm64@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-openharmony-arm64@npm:4.60.3" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-arm64-msvc@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.60.3" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-ia32-msvc@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.60.3" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@rollup/rollup-win32-x64-gnu@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-x64-gnu@npm:4.60.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-x64-msvc@npm:4.60.3": - version: 4.60.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.60.3" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -3942,9 +3584,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/react@npm:16.3.0": - version: 16.3.0 - resolution: "@testing-library/react@npm:16.3.0" +"@testing-library/react@npm:16.3.3": + version: 16.3.3 + resolution: "@testing-library/react@npm:16.3.3" dependencies: "@babel/runtime": "npm:^7.12.5" peerDependencies: @@ -3958,7 +3600,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10c0/3a2cb1f87c9a67e1ebbbcfd99b94b01e496fc35147be8bc5d8bf07a699c7d523a09d57ef2f7b1d91afccd1a28e21eda3b00d80187fbb51b1de01e422592d845e + checksum: 10c0/87d65cca71a39c93fffa23746a751a7037a4b4e939ea6b234af5188e4bdec96a7568b05000db109b5b76c686899e93a329a594d7e690674e30b35594c87c9e1d languageName: node linkType: hard @@ -4055,47 +3697,6 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.20.5": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.27.0 - resolution: "@types/babel__generator@npm:7.27.0" - dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.28.0 - resolution: "@types/babel__traverse@npm:7.28.0" - dependencies: - "@babel/types": "npm:^7.28.2" - checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 - languageName: node - linkType: hard - "@types/better-sqlite3@npm:^7.6.13": version: 7.6.13 resolution: "@types/better-sqlite3@npm:7.6.13" @@ -4149,7 +3750,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 @@ -4618,43 +4219,35 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-react@npm:4.5.2": - version: 4.5.2 - resolution: "@vitejs/plugin-react@npm:4.5.2" - dependencies: - "@babel/core": "npm:^7.27.4" - "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" - "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" - "@rolldown/pluginutils": "npm:1.0.0-beta.11" - "@types/babel__core": "npm:^7.20.5" - react-refresh: "npm:^0.17.0" - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 - checksum: 10c0/37c58e6a9c953ab27eb6de42f0d317d26901117d4e4bec067b098c48353065888d240b819efc5b47e325f83532305d3cc51996fd3eb53f8649b199ecc4424746 - languageName: node - linkType: hard - -"@vitest/expect@npm:4.1.11": - version: 4.1.11 - resolution: "@vitest/expect@npm:4.1.11" +"@vitejs/plugin-react@npm:6.1.1": + version: 6.1.1 + resolution: "@vitejs/plugin-react@npm:6.1.1" dependencies: - "@standard-schema/spec": "npm:^1.1.0" - "@types/chai": "npm:^5.2.2" - "@vitest/spy": "npm:4.1.11" - "@vitest/utils": "npm:4.1.11" - chai: "npm:^6.2.2" - tinyrainbow: "npm:^3.1.0" - checksum: 10c0/0aa5e0973aca93a58cbdc3041c6bfed5897e976124965203b96a23b811f4ca403590c7eb15802c8d8366ec27a1db0682451e8a91c4d06617636de262baf86e4b + "@rolldown/pluginutils": "npm:^1.0.1" + peerDependencies: + "@rolldown/plugin-babel": ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + oxc-transform-react: ^0.145.0 + vite: ^8.0.0 + peerDependenciesMeta: + "@rolldown/plugin-babel": + optional: true + babel-plugin-react-compiler: + optional: true + oxc-transform-react: + optional: true + checksum: 10c0/4599b37ee19ebee289782b177642e3002afa9b74cb57a2c0e2a601053c7ebb47f9ef178ab605ff1217de1d23069948a8d366447bfac0d9fb2f17afee5368acd0 languageName: node linkType: hard -"@vitest/mocker@npm:4.1.11": - version: 4.1.11 - resolution: "@vitest/mocker@npm:4.1.11" +"@vitest/mocker@npm:5.0.0": + version: 5.0.0 + resolution: "@vitest/mocker@npm:5.0.0" dependencies: - "@vitest/spy": "npm:4.1.11" + "@jridgewell/trace-mapping": "npm:0.3.31" + "@vitest/spy": "npm:5.0.0" estree-walker: "npm:^3.0.3" - magic-string: "npm:^0.30.21" + magic-string: "npm:^1.2.3" peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4663,56 +4256,14 @@ __metadata: optional: true vite: optional: true - checksum: 10c0/3111ea34bd5046f6c70bbd67cf8b89608ee8c41cb27ab2bd61d42f4b68810e9ea16a9a757a71bc254c105f73b407d00ebb6bab1ab0f7f5cdcc9d7d16602a3933 - languageName: node - linkType: hard - -"@vitest/pretty-format@npm:4.1.11": - version: 4.1.11 - resolution: "@vitest/pretty-format@npm:4.1.11" - dependencies: - tinyrainbow: "npm:^3.1.0" - checksum: 10c0/ad32525c73807c0b72f38dc29bc51fd5a17879dc650f37995a9c5adbb8526e15f787691f76aa8768448ec7ed5bf5ba2b12329eac8fda1428b4d6b8c036390f71 - languageName: node - linkType: hard - -"@vitest/runner@npm:4.1.11": - version: 4.1.11 - resolution: "@vitest/runner@npm:4.1.11" - dependencies: - "@vitest/utils": "npm:4.1.11" - pathe: "npm:^2.0.3" - checksum: 10c0/3c782b055e9e688e1785f7c8937bd1669bad1b0e5758cb8b844f918f30a324b1d21e174d46c941ce80ebf37f2b89b55b6d619a675025914a1ece6377b95909e2 - languageName: node - linkType: hard - -"@vitest/snapshot@npm:4.1.11": - version: 4.1.11 - resolution: "@vitest/snapshot@npm:4.1.11" - dependencies: - "@vitest/pretty-format": "npm:4.1.11" - "@vitest/utils": "npm:4.1.11" - magic-string: "npm:^0.30.21" - pathe: "npm:^2.0.3" - checksum: 10c0/35d82a7c2a3e4b57529c30387d568d9106b6bf960189214e5d8cb1f5288cb042305c2e5c7b0b2f8cb56a2c814973de0310bc56d72deb79427bea272b6224190c + checksum: 10c0/b1dde0ef270e8f9401204cb19c798114de416c3cf31e1d44d0029c4281b33e9a799251e3015aaaa2bdf5858c97a56857812dcf1e04dcfd4ebeedf194e6bcf3e6 languageName: node linkType: hard -"@vitest/spy@npm:4.1.11": - version: 4.1.11 - resolution: "@vitest/spy@npm:4.1.11" - checksum: 10c0/06c68247a8efd21006abe7532fee17f30ba83c8cda3e0b952ef89e278d58058f4b1de69b6bbaa2ed614c568bf4f5769fcc76be42802dedf2bcdd9c0aae601740 - languageName: node - linkType: hard - -"@vitest/utils@npm:4.1.11": - version: 4.1.11 - resolution: "@vitest/utils@npm:4.1.11" - dependencies: - "@vitest/pretty-format": "npm:4.1.11" - convert-source-map: "npm:^2.0.0" - tinyrainbow: "npm:^3.1.0" - checksum: 10c0/a2c1ddc64333458c3e031465c1ee0440a7660fd1b298c54ccbf865ef1e5cf3ebdd6c5c75a5ea235d8a672498b394e7121f992b096f021f45014ab25e9abd1b52 +"@vitest/spy@npm:5.0.0": + version: 5.0.0 + resolution: "@vitest/spy@npm:5.0.0" + checksum: 10c0/7521b4ef803bc89974a738cead7d3fcd789af805f3ea3f496108fc802b2bc09b22fe8e7a3cc0be3f92b647427aea528657e3e87dd0201e432f56e62f84f25ba8 languageName: node linkType: hard @@ -5938,14 +5489,14 @@ __metadata: "@repo/core": "npm:*" "@repo/db": "npm:*" "@testing-library/dom": "npm:^10.4.1" - "@testing-library/react": "npm:16.3.0" + "@testing-library/react": "npm:16.3.3" "@types/better-sqlite3": "npm:^7.6.13" "@types/jsdom": "npm:^28.0.1" "@types/node": "npm:^24.0.0" "@types/pg": "npm:^8.23.1" "@types/react": "npm:19.3.0" "@types/react-dom": "npm:19.3.0" - "@vitejs/plugin-react": "npm:4.5.2" + "@vitejs/plugin-react": "npm:6.1.1" better-sqlite3: "npm:^12.9.0" cross-env: "npm:^10.1.0" dotenv: "npm:16.4.7" @@ -5953,7 +5504,7 @@ __metadata: eslint-config-next: "npm:16.3.5" graphql: "npm:^16.8.1" jsdom: "npm:28.0.0" - knex: "npm:^3.1.0" + knex: "npm:^3.3.0" marked: "npm:^17.0.5" mysql2: "npm:^3.14.2" next: "npm:16.3.5" @@ -5966,9 +5517,9 @@ __metadata: sharp: "npm:0.35.4" tsx: "npm:4.23.13" typescript: "npm:5.9.2" - vite: "npm:^7.1.7" + vite: "npm:^8.3.0" vite-tsconfig-paths: "npm:6.0.5" - vitest: "npm:^4.1.11" + vitest: "npm:^5.0.0" languageName: unknown linkType: soft @@ -6663,7 +6214,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^2.0.0": +"es-module-lexer@npm:^2.3.2": version: 2.3.2 resolution: "es-module-lexer@npm:2.3.2" checksum: 10c0/5e7389424c43478439f12f9a6aca1750f6f99afa384fc3de329f4a45f152ab156671055008adaafc74960877abf8cc338aeebf6bed8c21297b146fd6eb7a22f8 @@ -6722,7 +6273,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.25.4": +"esbuild@npm:0.25.12, esbuild@npm:^0.25.4": version: 0.25.12 resolution: "esbuild@npm:0.25.12" dependencies: @@ -6811,7 +6362,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.27.0 || ^0.28.0, esbuild@npm:~0.28.0": +"esbuild@npm:~0.28.0": version: 0.28.2 resolution: "esbuild@npm:0.28.2" dependencies: @@ -6900,83 +6451,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:~0.18.20": - version: 0.18.20 - resolution: "esbuild@npm:0.18.20" - dependencies: - "@esbuild/android-arm": "npm:0.18.20" - "@esbuild/android-arm64": "npm:0.18.20" - "@esbuild/android-x64": "npm:0.18.20" - "@esbuild/darwin-arm64": "npm:0.18.20" - "@esbuild/darwin-x64": "npm:0.18.20" - "@esbuild/freebsd-arm64": "npm:0.18.20" - "@esbuild/freebsd-x64": "npm:0.18.20" - "@esbuild/linux-arm": "npm:0.18.20" - "@esbuild/linux-arm64": "npm:0.18.20" - "@esbuild/linux-ia32": "npm:0.18.20" - "@esbuild/linux-loong64": "npm:0.18.20" - "@esbuild/linux-mips64el": "npm:0.18.20" - "@esbuild/linux-ppc64": "npm:0.18.20" - "@esbuild/linux-riscv64": "npm:0.18.20" - "@esbuild/linux-s390x": "npm:0.18.20" - "@esbuild/linux-x64": "npm:0.18.20" - "@esbuild/netbsd-x64": "npm:0.18.20" - "@esbuild/openbsd-x64": "npm:0.18.20" - "@esbuild/sunos-x64": "npm:0.18.20" - "@esbuild/win32-arm64": "npm:0.18.20" - "@esbuild/win32-ia32": "npm:0.18.20" - "@esbuild/win32-x64": "npm:0.18.20" - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/473b1d92842f50a303cf948a11ebd5f69581cd254d599dd9d62f9989858e0533f64e83b723b5e1398a5b488c0f5fd088795b4235f65ecaf4f007d4b79f04bc88 - languageName: node - linkType: hard - "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -7401,7 +6875,7 @@ __metadata: languageName: node linkType: hard -"expect-type@npm:^1.3.0": +"expect-type@npm:^1.4.0": version: 1.4.0 resolution: "expect-type@npm:1.4.0" checksum: 10c0/d40d76b8570695d36587beb3cc28494da2ca3ec8f04e67f5622ed2d372d850e401a9adef19c6835e1a8173903f157c79540b34c7b3fbd7cd8ce726cc903c57b7 @@ -9169,9 +8643,9 @@ __metadata: languageName: node linkType: hard -"knex@npm:^3.1.0": - version: 3.1.0 - resolution: "knex@npm:3.1.0" +"knex@npm:^3.3.0": + version: 3.3.0 + resolution: "knex@npm:3.3.0" dependencies: colorette: "npm:2.0.19" commander: "npm:^10.0.0" @@ -9181,15 +8655,19 @@ __metadata: get-package-type: "npm:^0.1.0" getopts: "npm:2.3.0" interpret: "npm:^2.2.0" - lodash: "npm:^4.17.21" + lodash: "npm:^4.18.1" pg-connection-string: "npm:2.6.2" rechoir: "npm:^0.8.0" resolve-from: "npm:^5.0.0" - tarn: "npm:^3.0.2" + tarn: "npm:^3.1.0" tildify: "npm:2.0.0" + peerDependencies: + pg-query-stream: ^4.14.0 peerDependenciesMeta: better-sqlite3: optional: true + mariadb: + optional: true mysql: optional: true mysql2: @@ -9198,13 +8676,15 @@ __metadata: optional: true pg-native: optional: true + pg-query-stream: + optional: true sqlite3: optional: true tedious: optional: true bin: knex: bin/cli.js - checksum: 10c0/d8a1f99fad143c6057e94759b2ae700ae661a0b0b2385f643011962ef501dcc7b32cfdb5bda66ef81283ca56f13630f47691c579ce66ad0e8128e209533c3785 + checksum: 10c0/946fb4d0a55894075fbdd45d8bcd8d14a358f1a89f413e205ee7867b8b3c58eb897b49facd3062f2be2abedaeb6ae98b5a593e6247848830088ceb55af2b4e8a languageName: node linkType: hard @@ -9567,7 +9047,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.21": +"lodash@npm:^4.17.21, lodash@npm:^4.18.1": version: 4.18.1 resolution: "lodash@npm:4.18.1" checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27 @@ -9663,6 +9143,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^1.2.3": + version: 1.4.1 + resolution: "magic-string@npm:1.4.1" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.6.0" + checksum: 10c0/d5162ed2cef7ffa4ee5bcf44fbaba3a814f65b9919f0f3eba43076fda4223161b1064779da32901c3d1f157e7bbc0b6dd973e06c7856e550424f5e73e9217f0a + languageName: node + linkType: hard + "make-dir@npm:^4.0.0": version: 4.0.0 resolution: "make-dir@npm:4.0.0" @@ -10779,10 +10268,10 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:^9.1.0": - version: 9.1.1 - resolution: "nodemailer@npm:9.1.1" - checksum: 10c0/b213a2a906697a735f6eb21103629b7a77aeac297b6d843efd4588157999bf6d19381853ac1224e472f5a34aec2e2412444151a2c6ec6e8c52150afa3055039c +"nodemailer@npm:^10.0.8": + version: 10.0.10 + resolution: "nodemailer@npm:10.0.10" + checksum: 10c0/062bf0861e4986eca150b8d78b8289c55f33ad689e9596aa71b4abd4ab4358b9c4881cec8acca3251643814d84d26ca6b1082153f47d35d65639d4ce858cfd67 languageName: node linkType: hard @@ -10913,10 +10402,10 @@ __metadata: languageName: node linkType: hard -"obug@npm:^2.1.1": - version: 2.1.1 - resolution: "obug@npm:2.1.1" - checksum: 10c0/59dccd7de72a047e08f8649e94c1015ec72f94eefb6ddb57fb4812c4b425a813bc7e7cd30c9aca20db3c59abc3c85cc7a62bb656a968741d770f4e8e02bc2e78 +"obug@npm:^2.1.4": + version: 2.2.1 + resolution: "obug@npm:2.2.1" + checksum: 10c0/8a7c001847d880fa6ba83c7bbee6a80fd271ee628439cd508c8647d53b217abb1759e2d5e4aaeb09a35d0a274bdb225a0a5a78eded3213d63e656153cf411b63 languageName: node linkType: hard @@ -11152,13 +10641,6 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^2.0.3": - version: 2.0.3 - resolution: "pathe@npm:2.0.3" - checksum: 10c0/c118dc5a8b5c4166011b2b70608762e260085180bb9e33e80a50dcdb1e78c010b1624f4280c492c92b05fc276715a4c357d1f9edc570f8f1b3d90b6839ebaca1 - languageName: node - linkType: hard - "payload@npm:3.89.0": version: 3.89.0 resolution: "payload@npm:3.89.0" @@ -11472,7 +10954,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.5.16, postcss@npm:^8.5.28, postcss@npm:^8.5.6": +"postcss@npm:^8.5.16, postcss@npm:^8.5.28": version: 8.5.28 resolution: "postcss@npm:8.5.28" dependencies: @@ -11824,13 +11306,6 @@ __metadata: languageName: node linkType: hard -"react-refresh@npm:^0.17.0": - version: 0.17.0 - resolution: "react-refresh@npm:0.17.0" - checksum: 10c0/002cba940384c9930008c0bce26cac97a9d5682bc623112c2268ba0c155127d9c178a9a5cc2212d560088d60dfd503edd808669a25f9b377f316a32361d0b23c - languageName: node - linkType: hard - "react-select@npm:5.9.0": version: 5.9.0 resolution: "react-select@npm:5.9.0" @@ -12300,96 +11775,6 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.43.0": - version: 4.60.3 - resolution: "rollup@npm:4.60.3" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.60.3" - "@rollup/rollup-android-arm64": "npm:4.60.3" - "@rollup/rollup-darwin-arm64": "npm:4.60.3" - "@rollup/rollup-darwin-x64": "npm:4.60.3" - "@rollup/rollup-freebsd-arm64": "npm:4.60.3" - "@rollup/rollup-freebsd-x64": "npm:4.60.3" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.60.3" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.60.3" - "@rollup/rollup-linux-arm64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-arm64-musl": "npm:4.60.3" - "@rollup/rollup-linux-loong64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-loong64-musl": "npm:4.60.3" - "@rollup/rollup-linux-ppc64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-ppc64-musl": "npm:4.60.3" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-riscv64-musl": "npm:4.60.3" - "@rollup/rollup-linux-s390x-gnu": "npm:4.60.3" - "@rollup/rollup-linux-x64-gnu": "npm:4.60.3" - "@rollup/rollup-linux-x64-musl": "npm:4.60.3" - "@rollup/rollup-openbsd-x64": "npm:4.60.3" - "@rollup/rollup-openharmony-arm64": "npm:4.60.3" - "@rollup/rollup-win32-arm64-msvc": "npm:4.60.3" - "@rollup/rollup-win32-ia32-msvc": "npm:4.60.3" - "@rollup/rollup-win32-x64-gnu": "npm:4.60.3" - "@rollup/rollup-win32-x64-msvc": "npm:4.60.3" - "@types/estree": "npm:1.0.8" - fsevents: "npm:~2.3.2" - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": - optional: true - "@rollup/rollup-darwin-x64": - optional: true - "@rollup/rollup-freebsd-arm64": - optional: true - "@rollup/rollup-freebsd-x64": - optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm-musleabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-loong64-gnu": - optional: true - "@rollup/rollup-linux-loong64-musl": - optional: true - "@rollup/rollup-linux-ppc64-gnu": - optional: true - "@rollup/rollup-linux-ppc64-musl": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-riscv64-musl": - optional: true - "@rollup/rollup-linux-s390x-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-openbsd-x64": - optional: true - "@rollup/rollup-openharmony-arm64": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-gnu": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 10c0/72c9c768f3fabeaeff228b6364e6600c169d6c231a4324c47c34880fd8961aebacd974cf905ecc2db75e56c6491bdd676409a06aecf589791bf419cd41d06e76 - languageName: node - linkType: hard - "rou3@npm:^0.9.1": version: 0.9.2 resolution: "rou3@npm:0.9.2" @@ -12911,7 +12296,7 @@ __metadata: eslint-config-next: "npm:16.3.5" gray-matter: "npm:^4.0.3" ioredis: "npm:^5.6.1" - knex: "npm:^3.1.0" + knex: "npm:^3.3.0" lucide-react: "npm:^0.487.0" moment: "npm:^2.30.1" mysql2: "npm:^3.14.2" @@ -13094,7 +12479,7 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^4.0.0-rc.1": +"std-env@npm:^4.2.0": version: 4.2.0 resolution: "std-env@npm:4.2.0" checksum: 10c0/40ac525ce7b7c556abc332a7376f14356eeb1a7f17f6ff9a003eb9f52326ff1f3745d3e1b43452675b1ec6fcc319f1b1d6f3b0d386cf3f91058479ad883cff69 @@ -13489,10 +12874,10 @@ __metadata: languageName: node linkType: hard -"tarn@npm:^3.0.2": - version: 3.0.2 - resolution: "tarn@npm:3.0.2" - checksum: 10c0/ea2344e3d21936111176375bd6f34eba69a38ef1bc59434d523fd313166f8a28a47b0a847846c119f72dcf2c1e1231596d74ac3fcfc3cc73966b3d293a327269 +"tarn@npm:^3.1.0": + version: 3.1.2 + resolution: "tarn@npm:3.1.2" + checksum: 10c0/fae37a0f2a9ee4b0ba5c309b213a1111e65bbc72cab5056be26beebcfa2980613aa0dd66f054fa0433e0cc6951875137e37c0ac52edb56812fbf05957130a795 languageName: node linkType: hard @@ -13523,17 +12908,17 @@ __metadata: languageName: node linkType: hard -"tinybench@npm:^2.9.0": - version: 2.9.0 - resolution: "tinybench@npm:2.9.0" - checksum: 10c0/c3500b0f60d2eb8db65250afe750b66d51623057ee88720b7f064894a6cb7eb93360ca824a60a31ab16dab30c7b1f06efe0795b352e37914a9d4bad86386a20c +"tinybench@npm:6.1.4": + version: 6.1.4 + resolution: "tinybench@npm:6.1.4" + checksum: 10c0/7a815318a02270a98247298ddd289b75c841725606c977f0b74749bc5ec811a44998267ccb60bd3deb23b551dbfaf4d979eb08e9b04fbc87ff571f9b39cc61c3 languageName: node linkType: hard -"tinyexec@npm:^1.0.2": - version: 1.1.2 - resolution: "tinyexec@npm:1.1.2" - checksum: 10c0/9e0ef6c001ce54688cf16833a02f70a339276219ca947b88930b124267de2cffc764ff44e87e7369384b1d75ab63491465412cbbdf06f2437956b9ab66ab4491 +"tinyexec@npm:1.3.0": + version: 1.3.0 + resolution: "tinyexec@npm:1.3.0" + checksum: 10c0/e9b89f97489d2aab2cef408da279e6b32547e738d1275032ccb8fd0028a006d93eb70fc51c6cffd9fc2f5aca6c2a273d8b6f73b52d46ee5116da6b94969ef958 languageName: node linkType: hard @@ -13567,13 +12952,6 @@ __metadata: languageName: node linkType: hard -"tinyrainbow@npm:^3.1.0": - version: 3.1.1 - resolution: "tinyrainbow@npm:3.1.1" - checksum: 10c0/f9d2743832c6191f753408f36224fe817620b8abcef572b2e570204c673a901d753ff84ca8e7b88f9c79e934295b3ffc6fcbc56a06f126e24e1ec6186dcad40d - languageName: node - linkType: hard - "tldts-core@npm:^7.0.30": version: 7.0.30 resolution: "tldts-core@npm:7.0.30" @@ -14343,7 +13721,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0": +"vite@npm:^8.3.0": version: 8.3.0 resolution: "vite@npm:8.3.0" dependencies: @@ -14400,98 +13778,36 @@ __metadata: languageName: node linkType: hard -"vite@npm:^7.1.7": - version: 7.3.6 - resolution: "vite@npm:7.3.6" - dependencies: - esbuild: "npm:^0.27.0 || ^0.28.0" - fdir: "npm:^6.5.0" - fsevents: "npm:~2.3.3" - picomatch: "npm:^4.0.3" - postcss: "npm:^8.5.6" - rollup: "npm:^4.43.0" - tinyglobby: "npm:^0.2.15" - peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - jiti: ">=1.21.0" - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: ">=0.54.8" - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/c6d359f84ad362f5c97ff7988b77c90add04162c60cdf6059375a7d9e3217848c53a8cb6b6c48517bef84b6bba4c9bc85319a889b5236acb7d5a2bc8cb7b9a8d - languageName: node - linkType: hard - -"vitest@npm:^4.1.11": - version: 4.1.11 - resolution: "vitest@npm:4.1.11" +"vitest@npm:^5.0.0": + version: 5.0.0 + resolution: "vitest@npm:5.0.0" dependencies: - "@vitest/expect": "npm:4.1.11" - "@vitest/mocker": "npm:4.1.11" - "@vitest/pretty-format": "npm:4.1.11" - "@vitest/runner": "npm:4.1.11" - "@vitest/snapshot": "npm:4.1.11" - "@vitest/spy": "npm:4.1.11" - "@vitest/utils": "npm:4.1.11" - es-module-lexer: "npm:^2.0.0" - expect-type: "npm:^1.3.0" - magic-string: "npm:^0.30.21" - obug: "npm:^2.1.1" - pathe: "npm:^2.0.3" - picomatch: "npm:^4.0.3" - std-env: "npm:^4.0.0-rc.1" - tinybench: "npm:^2.9.0" - tinyexec: "npm:^1.0.2" - tinyglobby: "npm:^0.2.15" - tinyrainbow: "npm:^3.1.0" - vite: "npm:^6.0.0 || ^7.0.0 || ^8.0.0" + "@types/chai": "npm:^5.2.2" + "@vitest/mocker": "npm:5.0.0" + chai: "npm:^6.2.2" + es-module-lexer: "npm:^2.3.2" + expect-type: "npm:^1.4.0" + magic-string: "npm:^1.2.3" + obug: "npm:^2.1.4" + picomatch: "npm:^4.0.7" + std-env: "npm:^4.2.0" + tinybench: "npm:6.1.4" + tinyexec: "npm:1.3.0" + tinyglobby: "npm:^0.2.17" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" "@opentelemetry/api": ^1.9.0 - "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 - "@vitest/browser-playwright": 4.1.11 - "@vitest/browser-preview": 4.1.11 - "@vitest/browser-webdriverio": 4.1.11 - "@vitest/coverage-istanbul": 4.1.11 - "@vitest/coverage-v8": 4.1.11 - "@vitest/ui": 4.1.11 + "@types/node": ^22.0.0 || >=24.0.0 + "@vitest/browser-playwright": 5.0.0 + "@vitest/browser-preview": 5.0.0 + "@vitest/browser-webdriverio": ^5.0.0-beta.5 || >=5.0.0 + "@vitest/coverage-istanbul": 5.0.0 + "@vitest/coverage-v8": 5.0.0 + "@vitest/ui": 5.0.0 happy-dom: "*" jsdom: "*" - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.4.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: "@edge-runtime/vm": optional: true @@ -14519,7 +13835,7 @@ __metadata: optional: false bin: vitest: ./vitest.mjs - checksum: 10c0/3fa0948cf74adcccc8cbcdb4e6d30ada6933bdfb1816ff99200f3d3b689325b37dc483b22535b57b6d911f7a7b64eaa6a5f8da1606cfe7f2466f48000c21e296 + checksum: 10c0/de56a0f2e989949e42cdf31150ef5c0c138c04950d14b158f618f8bd4dc9b7f1e9a20c98a2763c9fef0d2b5a97d86456a73dd18ebb8b2b99dd0837efd8688634 languageName: node linkType: hard