diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 842fa6b671b..70ce08f0ac2 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -191,6 +191,108 @@ "dependencyDashboardApproval": true }, + // Keep `@types/*` aligned with the runtime major they describe. Type defs + // for a different major than what actually runs are silently wrong at best + // (e.g. @types/express 5 vs Express 4) and build-breaking at worst + // (@types/react 19 fails the @tryghost/shade build under React 18) — this + // is what stalled the grouped "Update Types packages (major)" PR (#28307). + // Two mechanisms, with the major-dashboard-approval rule above as the human + // backstop for any types-ahead major that still slips through: + // + // 1. @types/node has no `node` npm package to pair with — it tracks the + // Node.js runtime declared in `engines`, not a dependency — so a hard + // version cap is the only lever. Raise it when we bump the Node engine. + { + "description": "Cap @types/node at the installed Node major (engines: ^22.13.1)", + "matchPackageNames": [ + "@types/node" + ], + "allowedVersions": "<23" + }, + + // 2. Every other @types/* is grouped WITH the runtime package it describes + // (rules below) so a runtime major and its type-definition major travel + // in the same PR and land together, instead of the types racing ahead. + // This is self-maintaining — no per-package caps to hand-raise on each + // upgrade (a stale cap silently flips from guard to blocker once the + // runtime moves, as happened with supertest 6 -> 7). + // + // Any @types/* with NO managed runtime peer is left as its own individual + // PR rather than lumped into one mega "Types packages (major)" PR (so one + // breaking type can't block the rest). Ordering matters: this ungroup + // default comes BEFORE the pairings so the pairings (later) win for paired + // packages, and the pairings come BEFORE the react17/eslint9/tailwind3 + // catalog rules below so those version-lane groups still win for their own + // depTypes (e.g. react@17 in the react17 catalog stays in its own PR). + { + "description": "Unpaired @types/* majors get their own PR, not one mega Types group", + "matchPackageNames": [ + "@types/**" + ], + "matchUpdateTypes": [ + "major" + ], + "groupName": null + }, + { + "description": "React runtime + its type defs bump together", + "groupName": "React", + "matchPackageNames": [ + "react", + "react-dom", + "@types/react", + "@types/react-dom" + ] + }, + { + "description": "Express runtime + its type defs bump together", + "groupName": "Express", + "matchPackageNames": [ + "express", + "@types/express" + ] + }, + { + "description": "jest runtime + its type defs bump together", + "groupName": "jest", + "matchPackageNames": [ + "jest", + "@types/jest" + ] + }, + { + "description": "supertest runtime + its type defs bump together", + "groupName": "supertest", + "matchPackageNames": [ + "supertest", + "@types/supertest" + ] + }, + { + "description": "dockerode runtime + its type defs bump together", + "groupName": "dockerode", + "matchPackageNames": [ + "dockerode", + "@types/dockerode" + ] + }, + { + "description": "nodemailer runtime + its type defs bump together", + "groupName": "nodemailer", + "matchPackageNames": [ + "nodemailer", + "@types/nodemailer" + ] + }, + { + "description": "sinon runtime + its type defs bump together", + "groupName": "sinon", + "matchPackageNames": [ + "sinon", + "@types/sinon" + ] + }, + // Group NQL packages separately from other TryGhost packages { "groupName": "NQL packages", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 985b05e32d8..2db8005a084 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: pull-requests: read steps: - name: Checkout current commit - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: ref: ${{ env.HEAD_COMMIT }} fetch-depth: 0 @@ -241,7 +241,7 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout PR head commit - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 @@ -262,7 +262,7 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout PR head commit - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 @@ -282,7 +282,7 @@ jobs: if: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.affected_projects_str != '' name: Lint steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 1000 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -322,7 +322,7 @@ jobs: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.changed_i18n_apps == 'true' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: @@ -348,7 +348,7 @@ jobs: CI: true COVERAGE: true steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: @@ -387,7 +387,7 @@ jobs: node: ${{ fromJSON(needs.job_setup.outputs.node_test_matrix) }} name: Unit tests (Node ${{ matrix.node }}) steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 1000 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -493,7 +493,7 @@ jobs: NODE_ENV: ${{ matrix.env.NODE_ENV }} name: Acceptance tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }}) steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 env: @@ -612,7 +612,7 @@ jobs: NODE_ENV: ${{ matrix.env.NODE_ENV }} name: Legacy tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }}) steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: submodules: true - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -676,7 +676,7 @@ jobs: env: CI: true steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 env: @@ -731,7 +731,7 @@ jobs: ports: - 7181:7181 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install Tinybird CLI run: curl -fsSL https://tinybird.co/install.sh | sh - name: Build project @@ -827,7 +827,7 @@ jobs: packages: write steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: submodules: true @@ -1093,7 +1093,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -1140,7 +1140,7 @@ jobs: packages: write steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Download public app artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 @@ -1312,7 +1312,7 @@ jobs: shardTotal: 2 steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Setup Docker Registry Mirrors uses: ./.github/actions/setup-docker-registry-mirrors @@ -1409,7 +1409,7 @@ jobs: fail-fast: false steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 @@ -1493,7 +1493,7 @@ jobs: ] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore Admin coverage if: contains(needs.job_admin-tests.result, 'success') @@ -1596,7 +1596,7 @@ jobs: package_path: 'apps/admin-toolbar' steps: - name: Checkout code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - name: Set up Node.js @@ -1661,7 +1661,7 @@ jobs: cdn_paths: 'https://cdn.jsdelivr.net/ghost/admin-toolbar@~CURRENT_MINOR/umd/admin-toolbar.min.js' steps: - name: Checkout code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - name: Set up Node.js @@ -1872,7 +1872,7 @@ jobs: env: GH_TOKEN: ${{ secrets.CANARY_DOCKER_BUILD }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 0 diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 84d424ba9ea..b67799bd486 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install gh-aw extension uses: github/gh-aw/actions/setup-cli@ce1794953e0ec42adc41b6fca05e02ab49ee21c3 # v0.68.3 with: diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index 69a1e1ed8e6..f1bc90b6797 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -21,14 +21,14 @@ jobs: if: github.repository == 'TryGhost/Ghost' runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 if: inputs.base-ref == 'latest' with: ref: main fetch-depth: 0 submodules: true - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 if: inputs.base-ref != 'latest' with: ref: ${{ inputs.base-ref }} diff --git a/.github/workflows/devcontainer-build.yml b/.github/workflows/devcontainer-build.yml index f73849e814e..5f8a5cedf7c 100644 --- a/.github/workflows/devcontainer-build.yml +++ b/.github/workflows/devcontainer-build.yml @@ -41,7 +41,7 @@ jobs: cancel-in-progress: true steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up QEMU uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0 diff --git a/.github/workflows/publish-tb-cli.yml b/.github/workflows/publish-tb-cli.yml index 16fa4dc598e..f2971fd990e 100644 --- a/.github/workflows/publish-tb-cli.yml +++ b/.github/workflows/publish-tb-cli.yml @@ -21,7 +21,7 @@ jobs: cancel-in-progress: true steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fe041c71dec..df9db888848 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,7 @@ jobs: with: ssh-private-key: ${{ secrets.DEPLOY_KEY }} - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: # Deploy key (via ssh-agent) is used for git push — it bypasses # branch protection and triggers downstream workflows (unlike GITHUB_TOKEN) diff --git a/.github/workflows/translation-review.yml b/.github/workflows/translation-review.yml index 99cf7d0dab7..e83ec9c0a3a 100644 --- a/.github/workflows/translation-review.yml +++ b/.github/workflows/translation-review.yml @@ -53,7 +53,7 @@ jobs: ) steps: - name: Checkout main (trusted ref — never the PR head) - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false ref: main diff --git a/apps/admin-x-design-system/package.json b/apps/admin-x-design-system/package.json index 59c43e18378..f446809cac0 100644 --- a/apps/admin-x-design-system/package.json +++ b/apps/admin-x-design-system/package.json @@ -40,7 +40,7 @@ "@types/validator": "catalog:", "@typescript-eslint/parser": "catalog:", "@vitejs/plugin-react": "catalog:", - "autoprefixer": "10.4.21", + "autoprefixer": "10.5.0", "c8": "catalog:", "chai": "catalog:", "eslint": "catalog:", diff --git a/apps/comments-ui/package.json b/apps/comments-ui/package.json index 6526a6b6d5a..88f929e7143 100644 --- a/apps/comments-ui/package.json +++ b/apps/comments-ui/package.json @@ -68,7 +68,7 @@ "@tryghost/nql": "catalog:", "@vitejs/plugin-react": "catalog:", "@vitest/coverage-v8": "catalog:", - "autoprefixer": "10.4.21", + "autoprefixer": "10.5.0", "bson-objectid": "catalog:", "concurrently": "catalog:", "eslint": "catalog:", diff --git a/apps/portal/package.json b/apps/portal/package.json index 3824692b22c..c08339200d6 100644 --- a/apps/portal/package.json +++ b/apps/portal/package.json @@ -1,6 +1,6 @@ { "name": "@tryghost/portal", - "version": "2.68.58", + "version": "2.68.59", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", diff --git a/apps/portal/src/components/pages/account-plan-page.js b/apps/portal/src/components/pages/account-plan-page.js index 607832aa683..00f2050fc03 100644 --- a/apps/portal/src/components/pages/account-plan-page.js +++ b/apps/portal/src/components/pages/account-plan-page.js @@ -438,6 +438,23 @@ const UpgradePlanSection = ({ ); }; +// Shown when there are no paid plans to display (e.g. a member reaches the +// plans page via a theme button or deep link while the site has no paid tiers). +const NoPlansAvailableMessage = () => { + return ( +
+
+

+ {t('Sorry, no paid plans are available.')} +

+
+
+ ); +}; + const PlansContainer = ({ plans, selectedPlan, confirmationPlan, confirmationType, showConfirmation = false, pendingOffer, onPlanSelect, onPlanCheckout, onConfirm, onCancelSubscription, @@ -446,6 +463,14 @@ const PlansContainer = ({ const {member} = useContext(AppContext); // Plan upgrade flow for free, complimentary, or gift members. if (!isPaidMember({member}) || isComplimentaryMember({member}) || isGiftMember({member})) { + // No paid plans to choose from. This covers the deep-link / theme-button + // entry point (#/portal/account/plans), which cannot be gated in-app, + // where the body would otherwise render blank under the page header. + if (plans.length === 0) { + return ( + + ); + } return ( { expect(continueBtn).toHaveLength(1); }); + test('shows an informative message when no paid plans are available', () => { + // Reproduces the deep-link / theme-button entry point (#/portal/account/plans) + // on a site with members enabled but no paid plan configured. Without the + // empty state the body renders blank under the "Choose a plan" header. + const siteData = getSiteData({ + paidMembersEnabled: false, + products: getProductsData({numOfProducts: 0}) + }); + const {getByTestId, queryByTestId} = customSetup({site: siteData}); + + const message = getByTestId('no-plans-available-notification-text'); + expect(message).toBeInTheDocument(); + expect(message).toHaveTextContent('Sorry, no paid plans are available.'); + + // The plan selectors should not render in the empty state. + expect(queryByTestId('monthly-switch')).not.toBeInTheDocument(); + expect(queryByTestId('yearly-switch')).not.toBeInTheDocument(); + }); + test('can choose plan and continue', async () => { const siteData = getSiteData({ products: getProductsData({numOfProducts: 1}) diff --git a/apps/signup-form/package.json b/apps/signup-form/package.json index 66e5a3af2f4..f5f836e6e43 100644 --- a/apps/signup-form/package.json +++ b/apps/signup-form/package.json @@ -44,7 +44,7 @@ "@types/react": "catalog:", "@types/react-dom": "catalog:", "@vitejs/plugin-react": "catalog:", - "autoprefixer": "10.4.21", + "autoprefixer": "10.5.0", "concurrently": "catalog:", "eslint": "catalog:", "eslint-plugin-tailwindcss": "catalog:tailwind3", diff --git a/e2e/helpers/environment/service-managers/ghost-manager.ts b/e2e/helpers/environment/service-managers/ghost-manager.ts index c360b9f6096..d51dfe91ffd 100644 --- a/e2e/helpers/environment/service-managers/ghost-manager.ts +++ b/e2e/helpers/environment/service-managers/ghost-manager.ts @@ -21,6 +21,8 @@ import type {GhostConfig} from '@/helpers/playwright/fixture'; const debug = baseDebug('e2e:GhostManager'); type GhostEnvOverrides = GhostConfig | Record; +const READINESS_POLL_INTERVAL_MS = 250; + interface TinybirdConfigFile { workspaceId?: string; adminToken?: string; @@ -194,14 +196,13 @@ export class GhostManager { } /** - * Wait for Ghost container to become healthy. - * Uses Docker's built-in health check mechanism. + * Wait for Ghost to become reachable through the same gateway path used by tests. */ async waitForReady(timeoutMs: number = 120000): Promise { if (!this.ghostContainer) { throw new Error('Ghost container not initialized'); } - await this.waitForHealthy(this.ghostContainer, timeoutMs); + await this.waitForHostReadiness(this.ghostContainer, timeoutMs); } private async buildEnvWithSchedulerUrl( @@ -414,10 +415,7 @@ export class GhostManager { } } - /** - * Wait for a container to become healthy according to Docker's health check. - */ - private async waitForHealthy(container: Container, timeoutMs: number): Promise { + private async waitForHostReadiness(container: Container, timeoutMs: number): Promise { const startTime = Date.now(); while (Date.now() - startTime < timeoutMs) { @@ -425,8 +423,8 @@ export class GhostManager { const health = info.State.Health; const status = health?.Status; - if (status === 'healthy') { - debug('Container is healthy'); + if (info.State.Running && await this.probeHostReadiness()) { + debug('Host readiness probe passed'); return; } @@ -444,13 +442,34 @@ export class GhostManager { // Still starting - wait and check again await new Promise((r) => { - setTimeout(r, 1000); + setTimeout(r, READINESS_POLL_INTERVAL_MS); }); } // Timeout const logs = await container.logs({stdout: true, stderr: true, tail: 100}); logging.error(`Timeout waiting for container. Last logs:\n${logs.toString()}`); - throw new Error('Timeout waiting for Ghost to become healthy'); + throw new Error('Timeout waiting for Ghost to become ready'); + } + + private async probeHostReadiness(): Promise { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 500); + + try { + const response = await fetch(`http://localhost:${this.getGatewayPort()}/ghost/api/admin/authentication/setup`, { + method: 'GET', + headers: {Accept: 'application/json'}, + signal: controller.signal + }); + const body = await response.json().catch(() => null) as {setup?: Array<{status?: unknown}>} | null; + + return response.ok && Array.isArray(body?.setup) && typeof body.setup[0]?.status === 'boolean'; + } catch (error) { + debug('Host readiness probe failed:', error); + return false; + } finally { + clearTimeout(timeout); + } } } diff --git a/e2e/helpers/services/members/members-service.ts b/e2e/helpers/services/members/members-service.ts index ec5858c2f21..5afe2272b42 100644 --- a/e2e/helpers/services/members/members-service.ts +++ b/e2e/helpers/services/members/members-service.ts @@ -85,4 +85,11 @@ export class MembersService { } return data.members[0]; } + + async deleteAll(): Promise { + const response = await this.request.delete(`${this.adminEndpoint}/members?all=true`); + if (!response.ok()) { + throw new Error(`Failed to delete members: ${response.status()}`); + } + } } diff --git a/e2e/package.json b/e2e/package.json index 438e207be64..ae809c001cb 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -33,7 +33,7 @@ "@playwright/test": "catalog:", "@tryghost/debug": "catalog:", "@tryghost/logging": "catalog:", - "@types/dockerode": "3.3.47", + "@types/dockerode": "4.0.1", "@types/express": "catalog:", "busboy": "1.6.0", "dockerode": "4.0.12", diff --git a/e2e/tests/admin/billing/force-upgrade.test.ts b/e2e/tests/admin/billing/force-upgrade.test.ts index 3dadad8dd25..e4b3193a589 100644 --- a/e2e/tests/admin/billing/force-upgrade.test.ts +++ b/e2e/tests/admin/billing/force-upgrade.test.ts @@ -1,6 +1,5 @@ import {BillingPage, NAV_ITEMS, SidebarPage} from '@/helpers/pages'; import {expect, test} from '@/helpers/playwright'; -import {usePerTestIsolation} from '@/helpers/playwright/isolation'; const MOCK_BILLING_URL = 'https://billing.mock.test'; @@ -31,8 +30,6 @@ const FORCE_UPGRADE_BMA_HTML = ` `; -usePerTestIsolation(); - test.describe('Ghost Admin - Force Upgrade Mode', () => { test.use({ config: { @@ -99,16 +96,20 @@ test.describe('Ghost Admin - Force Upgrade Mode', () => { await expect(billingPage.billingIframe).toBeHidden(); }); - test('Sign out is accessible', async ({page}) => { - const sidebarPage = new SidebarPage(page); - const billingPage = new BillingPage(page); - await sidebarPage.goto(); + test.describe('signed-out navigation', () => { + test.use({isolation: 'per-test'}); - await billingPage.waitForBillingIframe(); - await sidebarPage.userDropdownTrigger.click(); - await sidebarPage.signOutLink.click(); + test('Sign out is accessible', async ({page}) => { + const sidebarPage = new SidebarPage(page); + const billingPage = new BillingPage(page); + await sidebarPage.goto(); + + await billingPage.waitForBillingIframe(); + await sidebarPage.userDropdownTrigger.click(); + await sidebarPage.signOutLink.click(); - await expect(page).toHaveURL(/signin/); + await expect(page).toHaveURL(/signin/); + }); }); test('Ember-handled tag detail route shows billing iframe', async ({page}) => { diff --git a/e2e/tests/admin/members/bulk-actions.test.ts b/e2e/tests/admin/members/bulk-actions.test.ts index f207b234dd5..d247421b7ff 100644 --- a/e2e/tests/admin/members/bulk-actions.test.ts +++ b/e2e/tests/admin/members/bulk-actions.test.ts @@ -1,14 +1,13 @@ import {MemberFactory, createMemberFactory} from '@/data-factory'; import {MembersListPage} from '@/admin-pages'; +import {MembersService} from '@/helpers/services/members'; import {expect, test} from '@/helpers/playwright'; -import {usePerTestIsolation} from '@/helpers/playwright/isolation'; - -usePerTestIsolation(); test.describe('Ghost Admin - Members Bulk Actions', () => { let memberFactory: MemberFactory; test.beforeEach(async ({page}) => { + await new MembersService(page.request).deleteAll(); memberFactory = createMemberFactory(page.request); }); diff --git a/e2e/tests/admin/members/list.test.ts b/e2e/tests/admin/members/list.test.ts index 3b57176378d..2ba4e513520 100644 --- a/e2e/tests/admin/members/list.test.ts +++ b/e2e/tests/admin/members/list.test.ts @@ -1,14 +1,13 @@ import {MemberDetailsPage, MembersListPage} from '@/admin-pages'; import {MemberFactory, createMemberFactory} from '@/data-factory'; +import {MembersService} from '@/helpers/services/members'; import {expect, test} from '@/helpers/playwright'; -import {usePerTestIsolation} from '@/helpers/playwright/isolation'; - -usePerTestIsolation(); test.describe('Ghost Admin - Members List', () => { let memberFactory: MemberFactory; test.beforeEach(async ({page}) => { + await new MembersService(page.request).deleteAll(); memberFactory = createMemberFactory(page.request); }); diff --git a/ghost/admin/mirage/config/members.js b/ghost/admin/mirage/config/members.js index 1a20914548d..e9cc46a5126 100644 --- a/ghost/admin/mirage/config/members.js +++ b/ghost/admin/mirage/config/members.js @@ -19,7 +19,7 @@ export function mockMembersStats(server) { server.get('/members/stats/count', withPermissionsCheck(ALLOWED_ROLES, function (db, {queryParams}) { let {days} = queryParams; - let firstSubscriberDays = faker.datatype.number({min: 30, max: 600}); + let firstSubscriberDays = faker.number.int({min: 30, max: 600}); if (days === 'all-time') { days = firstSubscriberDays; @@ -29,7 +29,7 @@ export function mockMembersStats(server) { let total = 0; if (firstSubscriberDays > days) { - total += faker.datatype.number({max: 1000}); + total += faker.number.int({max: 1000}); } // simulate sql GROUP BY where days with 0 subscribers are missing @@ -37,7 +37,7 @@ export function mockMembersStats(server) { let i = 0; while (i < days) { let date = moment().subtract(i, 'days').format('YYYY-MM-DD'); - let count = faker.datatype.number({min: 0, max: 30}); + let count = faker.number.int({min: 0, max: 30}); if (count !== 0) { dateCounts[date] = count; diff --git a/ghost/admin/mirage/factories/member.js b/ghost/admin/mirage/factories/member.js index b3828eff3b2..723310027b5 100644 --- a/ghost/admin/mirage/factories/member.js +++ b/ghost/admin/mirage/factories/member.js @@ -7,8 +7,8 @@ let randomDate = function randomDate(start = moment().subtract(30, 'days').toDat }; export default Factory.extend({ - name() { return `${faker.name.firstName()} ${faker.name.lastName()}`; }, - email: faker.internet.email, + name() { return `${faker.person.firstName()} ${faker.person.lastName()}`; }, + email() { return faker.internet.email(); }, status: 'free', createdAt() { return moment.utc(randomDate()).format('YYYY-MM-DD HH:mm:ss'); }, diff --git a/ghost/admin/mirage/factories/offer.js b/ghost/admin/mirage/factories/offer.js index fd4f51a3b1d..acf194b2448 100644 --- a/ghost/admin/mirage/factories/offer.js +++ b/ghost/admin/mirage/factories/offer.js @@ -7,8 +7,8 @@ let randomDate = function randomDate(start = moment().subtract(30, 'days').toDat }; export default Factory.extend({ - name() { return `${faker.name.firstName()} ${faker.name.lastName()}`; }, - amount() { return faker.datatype.number({min: 1, max: 10}); }, + name() { return `${faker.person.firstName()} ${faker.person.lastName()}`; }, + amount() { return faker.number.int({min: 1, max: 10}); }, displayTitle() { return faker.lorem.word(); }, code() { return faker.lorem.slug(); }, createdAt() { return randomDate(); }, diff --git a/ghost/admin/package.json b/ghost/admin/package.json index 65a5de402ee..068990f2e88 100644 --- a/ghost/admin/package.json +++ b/ghost/admin/package.json @@ -37,7 +37,7 @@ "@ember/test-helpers": "2.9.6", "@ember/test-waiters": "3.1.0", "@embroider/macros": "1.16.13", - "@faker-js/faker": "7.6.0", + "@faker-js/faker": "10.4.0", "@glimmer/component": "1.1.2", "@html-next/vertical-collection": "3.0.0", "@sentry/ember": "7.120.3", diff --git a/ghost/core/core/frontend/helpers/ghost_head.js b/ghost/core/core/frontend/helpers/ghost_head.js index ffb3013c68d..c2b272c4dc1 100644 --- a/ghost/core/core/frontend/helpers/ghost_head.js +++ b/ghost/core/core/frontend/helpers/ghost_head.js @@ -57,19 +57,21 @@ function getMembersHelper(data, frontendKey, excludeList) { if (!excludeList.has('portal')) { const {scriptUrl} = getFrontendAppConfig('portal'); - const colorString = (_.has(data, 'site._preview') && data.site.accent_color) ? data.site.accent_color : ''; - const attributes = { - i18n: true, - ghost: urlUtils.getSiteUrl(), - key: frontendKey, - api: urlUtils.urlFor('api', {type: 'content'}, true), - locale: settingsCache.get('locale') || 'en' - }; - if (colorString) { - attributes['accent-color'] = colorString; + if (scriptUrl) { + const colorString = (_.has(data, 'site._preview') && data.site.accent_color) ? data.site.accent_color : ''; + const attributes = { + i18n: true, + ghost: urlUtils.getSiteUrl(), + key: frontendKey, + api: urlUtils.urlFor('api', {type: 'content'}, true), + locale: settingsCache.get('locale') || 'en' + }; + if (colorString) { + attributes['accent-color'] = colorString; + } + const dataAttributes = getDataAttributes(attributes); + membersHelper += ``; } - const dataAttributes = getDataAttributes(attributes); - membersHelper += ``; } if (!excludeList.has('cta_styles')) { membersHelper += (``); diff --git a/ghost/core/core/server/services/member-welcome-emails/service.js b/ghost/core/core/server/services/member-welcome-emails/service.js index 8d43691a009..ec2b07f91cb 100644 --- a/ghost/core/core/server/services/member-welcome-emails/service.js +++ b/ghost/core/core/server/services/member-welcome-emails/service.js @@ -21,6 +21,10 @@ const EMAIL_VALIDATION_TYPE_BY_FIELD = { sender_reply_to: 'replyTo' }; +/** + * @param {null | undefined | string} value + * @returns {string} + */ const trimValue = value => value?.trim() || ''; class MemberWelcomeEmailService { diff --git a/ghost/core/core/shared/settings-cache/cache-manager.js b/ghost/core/core/shared/settings-cache/cache-manager.js index f5fe8e0a7be..9f74f890ca9 100644 --- a/ghost/core/core/shared/settings-cache/cache-manager.js +++ b/ghost/core/core/shared/settings-cache/cache-manager.js @@ -179,7 +179,7 @@ class CacheManager { * In which case the full JSON version of the model will be resolved * * @param {string} key - * @param {object} options + * @param {object} [options] * @return {*} */ get(key, options) { diff --git a/ghost/core/package.json b/ghost/core/package.json index 266dbd75077..1c86912174d 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -266,11 +266,11 @@ "@types/node": "catalog:", "@types/node-fetch": "2.6.13", "@types/node-jose": "1.1.13", - "@types/nodemailer": "6.4.23", + "@types/nodemailer": "8.0.0", "@types/on-headers": "1.0.4", "@types/papaparse": "5.5.2", "@types/sanitize-html": "catalog:", - "@types/sinon": "17.0.4", + "@types/sinon": "21.0.1", "@types/supertest": "6.0.3", "@typescript-eslint/parser": "catalog:", "@vitest/coverage-v8": "catalog:", @@ -278,7 +278,7 @@ "c8": "catalog:", "chai": "catalog:", "cli-progress": "3.12.0", - "cssnano": "7.1.1", + "cssnano": "7.1.9", "esbuild": "0.28.0", "eslint": "catalog:", "expect": "29.7.0", @@ -299,7 +299,7 @@ "qs": "6.15.2", "rewire": "9.0.1", "sinon": "catalog:", - "supertest": "6.3.4", + "supertest": "catalog:", "tmp": "0.2.6", "tsx": "catalog:", "typescript": "catalog:", diff --git a/ghost/core/test/e2e-frontend/advanced-url-config.test.js b/ghost/core/test/e2e-frontend/advanced-url-config.test.js index 8f7b5735c7d..3cb2feceb6f 100644 --- a/ghost/core/test/e2e-frontend/advanced-url-config.test.js +++ b/ghost/core/test/e2e-frontend/advanced-url-config.test.js @@ -25,7 +25,7 @@ describe('Advanced URL Configurations', function () { await testUtils.startGhost(); - request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); after(async function () { @@ -107,14 +107,14 @@ describe('Advanced URL Configurations', function () { configUtils.set('admin:url', 'http://admin.localhost/'); urlUtils.stubUrlUtilsFromConfig(); await testUtils.startGhost(); - request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); after(async function () { await urlUtils.restore(); await configUtils.restore(); await testUtils.startGhost(); - request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); it('/blog/ghost should redirect to external admin SPA', async function () { diff --git a/ghost/core/test/e2e-server/admin.test.js b/ghost/core/test/e2e-server/admin.test.js index b3f82ef8b17..3bba8429c73 100644 --- a/ghost/core/test/e2e-server/admin.test.js +++ b/ghost/core/test/e2e-server/admin.test.js @@ -86,7 +86,7 @@ describe('Admin Routing', function () { urlUtils.stubUrlUtilsFromConfig(); await testUtils.startGhost(); - request = supertest.agent(config.get('server:host') + ':' + config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); after(async function () { diff --git a/ghost/core/test/unit/frontend/helpers/ghost-head.test.js b/ghost/core/test/unit/frontend/helpers/ghost-head.test.js index 5c53d96a95b..9400a86b4ab 100644 --- a/ghost/core/test/unit/frontend/helpers/ghost-head.test.js +++ b/ghost/core/test/unit/frontend/helpers/ghost-head.test.js @@ -1271,6 +1271,22 @@ describe('{{ghost_head}} helper', function () { } })); }); + it('does not inject the portal script when portal url is disabled', async function () { + getStub.withArgs('members_enabled').returns(true); + getStub.withArgs('paid_members_enabled').returns(true); + configUtils.set({'portal:url': false}); + + const rendered = (await ghost_head(testUtils.createHbsResponse({ + locals: { + relativeUrl: '/', + context: ['home', 'index'], + safeVersion: '4.3' + } + }))).toString(); + + assert.doesNotMatch(rendered, /src="false"/); + assert.doesNotMatch(rendered, /data-ghost=/); + }); }); describe('search scripts', function () { diff --git a/ghost/core/test/utils/config-utils.js b/ghost/core/test/utils/config-utils.js index 7cef41987c8..db47cf369dd 100644 --- a/ghost/core/test/utils/config-utils.js +++ b/ghost/core/test/utils/config-utils.js @@ -1,4 +1,5 @@ const _ = require('lodash'); +const net = require('net'); const config = require('../../core/shared/config'); const configUtils = {}; @@ -42,4 +43,12 @@ configUtils.restore = async function () { }); }; +configUtils.getServerUrl = function ({protocol = 'http'} = {}) { + const host = config.get('server:host'); + const port = config.get('server:port'); + const hostname = net.isIPv6(host) ? `[${host}]` : host; + + return `${protocol}://${hostname}:${port}`; +}; + module.exports = configUtils; diff --git a/ghost/i18n/locales/af/portal.json b/ghost/i18n/locales/af/portal.json index 0691e2467e9..0f300bbcad3 100644 --- a/ghost/i18n/locales/af/portal.json +++ b/ghost/i18n/locales/af/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Aanmelding fout: Ongeldige skakel", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Jammer, dit het nie gewerk nie.", "Spam complaints": "Spam klagtes", diff --git a/ghost/i18n/locales/ar/portal.json b/ghost/i18n/locales/ar/portal.json index 2f03e344088..7ac8195dd60 100644 --- a/ghost/i18n/locales/ar/portal.json +++ b/ghost/i18n/locales/ar/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "خطأ في التسجيل: الرابط غير صالح", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": ".حدث خطأ ما، يرجى المحاولة مرة أخرى لاحقًا", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": ".عذرًا، لا توجد توصيات متاحة حاليًا", "Sorry, that didn’t work.": ".عذرًا، لم ينجح ذلك", "Spam complaints": "شكاوى البريد المزعج", diff --git a/ghost/i18n/locales/bg/portal.json b/ghost/i18n/locales/bg/portal.json index de15f2a1c75..dce73f24929 100644 --- a/ghost/i18n/locales/bg/portal.json +++ b/ghost/i18n/locales/bg/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Грешка при регистрация: Невалиден линк", "Signups from this email domain are currently restricted.": "Регистрациите от този домейн в момента са ограничени.", "Something went wrong, please try again later.": "Нещо се обърка, опитайте отново.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "За жалост, в момента няма налични препоръки.", "Sorry, that didn’t work.": "Жалко, така не се получава.", "Spam complaints": "Оплаквания от спам", diff --git a/ghost/i18n/locales/bn/portal.json b/ghost/i18n/locales/bn/portal.json index ab889b90c52..4519f0ef0ec 100644 --- a/ghost/i18n/locales/bn/portal.json +++ b/ghost/i18n/locales/bn/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "সাইন আপ ত্রুটি: অবৈধ লিঙ্ক", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "দুঃখিত, এটি কাজ করেনি।", "Spam complaints": "স্প্যাম অভিযোগ", diff --git a/ghost/i18n/locales/bs/portal.json b/ghost/i18n/locales/bs/portal.json index 2403d18157c..eaf11f6aa10 100644 --- a/ghost/i18n/locales/bs/portal.json +++ b/ghost/i18n/locales/bs/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Greška pri prijavi: Neispravan link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Žao nam je, to nije uspjelo.", "Spam complaints": "Pritužbe na spam", diff --git a/ghost/i18n/locales/ca/portal.json b/ghost/i18n/locales/ca/portal.json index 7b8a36223b6..9e81e425ebb 100644 --- a/ghost/i18n/locales/ca/portal.json +++ b/ghost/i18n/locales/ca/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Error de registre: Enllaç no vàlid", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Quelcom no ha funcionat. Si-us-plau, torna-ho a intentar més tard.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Ho sentim, no hi ha cap recomanació ara mateix.", "Sorry, that didn’t work.": "Em sap greu, però no ha funcionat.", "Spam complaints": "Queixes de correu brossa", diff --git a/ghost/i18n/locales/context.json b/ghost/i18n/locales/context.json index 5a58df2efc1..3c432b1208c 100644 --- a/ghost/i18n/locales/context.json +++ b/ghost/i18n/locales/context.json @@ -295,6 +295,7 @@ "Someone just replied to your comment on {postTitle}.": "Email text when informing user about reply to his comment on post", "Something went wrong, please try again later.": "Generic error message", "Something went wrong, please try again.": "Generic error message", + "Sorry, no paid plans are available.": "Shown on the Portal plans page when a member reaches it (e.g. via a theme button or deep link) but the site has no paid plans configured", "Sorry, no recommendations are available right now.": "Shown if a user visits the recommendations screen in portal when recommendations aren't available", "Sorry, that didn’t work.": "Title of a page when an error occured while submitting feedback", "Sort by": "Used for sorting comments, appears next to a dropdown with options (oldest, newest, best)", diff --git a/ghost/i18n/locales/cs/portal.json b/ghost/i18n/locales/cs/portal.json index fcf6cd85420..c29f4ee20de 100644 --- a/ghost/i18n/locales/cs/portal.json +++ b/ghost/i18n/locales/cs/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Chyba registrace: Neplatný odkaz", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Něco se pokazilo, zkuste to prosím později.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Omlouváme se, to nefungovalo.", "Spam complaints": "Stížnosti na spam", diff --git a/ghost/i18n/locales/da/portal.json b/ghost/i18n/locales/da/portal.json index d1e5ca031fa..459353b2fbc 100644 --- a/ghost/i18n/locales/da/portal.json +++ b/ghost/i18n/locales/da/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Tilmeldingsfejl: Ugyldigt link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Noget gik galt, prøv venligst igen senere.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Beklager, der er ingen anbefalinger tilgængelige lige nu.", "Sorry, that didn’t work.": "Beklager, det virkede ikke.", "Spam complaints": "Spam klager", diff --git a/ghost/i18n/locales/de-CH/portal.json b/ghost/i18n/locales/de-CH/portal.json index eab24ba6730..d8bd6648bf3 100644 --- a/ghost/i18n/locales/de-CH/portal.json +++ b/ghost/i18n/locales/de-CH/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Fehler bei der Registrierung: Ungültiger Link.", "Signups from this email domain are currently restricted.": "Anmeldungen mit dieser E-Mail-Domain sind momentan nicht möglich.", "Something went wrong, please try again later.": "Etwas ist schief gelaufen, bitte versuchen Sie es später erneut.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Entschuldigen Sie, aktuell sind keine Empfehlungen verfügbar.", "Sorry, that didn’t work.": "Entschuldigen Sie, das hat leider nicht funktioniert.", "Spam complaints": "Spam-Beschwerden", diff --git a/ghost/i18n/locales/de/portal.json b/ghost/i18n/locales/de/portal.json index 8c379742107..3da15622bb9 100644 --- a/ghost/i18n/locales/de/portal.json +++ b/ghost/i18n/locales/de/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Fehler bei der Registrierung: Ungültiger Link", "Signups from this email domain are currently restricted.": "Registrierungen über diese E-Mail-Domain sind aktuell nicht möglich.", "Something went wrong, please try again later.": "Etwas ist schief gelaufen, bitte versuche es später noch einmal.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Entschuldige, aktuell sind keine Empfehlungen verfügbar.", "Sorry, that didn’t work.": "Entschuldige, das hat nicht funktioniert.", "Spam complaints": "Spam-Beschwerden", diff --git a/ghost/i18n/locales/el/portal.json b/ghost/i18n/locales/el/portal.json index da9b5593584..ce69af6ce66 100644 --- a/ghost/i18n/locales/el/portal.json +++ b/ghost/i18n/locales/el/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Σφάλμα εγγραφής: Μη έγκυρος σύνδεσμος", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Συγγνώμη, αυτό δεν λειτούργησε.", "Spam complaints": "Αναφορές ανεπιθύμητης αλληλογραφίας", diff --git a/ghost/i18n/locales/en/portal.json b/ghost/i18n/locales/en/portal.json index d9cb8fe0396..9fa66a2bda1 100644 --- a/ghost/i18n/locales/en/portal.json +++ b/ghost/i18n/locales/en/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/eo/portal.json b/ghost/i18n/locales/eo/portal.json index 53bd99db091..845ad2e2dec 100644 --- a/ghost/i18n/locales/eo/portal.json +++ b/ghost/i18n/locales/eo/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/es/portal.json b/ghost/i18n/locales/es/portal.json index 2fcedd3ad26..0bb67d07ff2 100644 --- a/ghost/i18n/locales/es/portal.json +++ b/ghost/i18n/locales/es/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Error de registro: Enlace no válido", "Signups from this email domain are currently restricted.": "Los registros asociados a este dominio de email están actualmente restringidos.", "Something went wrong, please try again later.": "Algo salió mal, inténtalo de nuevo.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Lo sentimos, no tenemos recomendaciones en este momento", "Sorry, that didn’t work.": "Lo siento, eso no funcionó.", "Spam complaints": "Quejas de spam", diff --git a/ghost/i18n/locales/et/portal.json b/ghost/i18n/locales/et/portal.json index 59f3085659e..a103d646aba 100644 --- a/ghost/i18n/locales/et/portal.json +++ b/ghost/i18n/locales/et/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registreerimise viga: Vigane link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Midagi läks valesti, palun proovige hiljem uuesti.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "Rämpsposti kaebused", diff --git a/ghost/i18n/locales/eu/portal.json b/ghost/i18n/locales/eu/portal.json index 66bb3cb5f9b..4fa8f5a4f01 100644 --- a/ghost/i18n/locales/eu/portal.json +++ b/ghost/i18n/locales/eu/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Errorea izen-ematean: Esteka baliogabea", "Signups from this email domain are currently restricted.": "ePosta hornitzaile honetako izen-emateak mugatuta daude.", "Something went wrong, please try again later.": "Zerbaitek huts egin du, saiatu berriro geroago.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Une honetan ez dago gomendiorik zuretzat.", "Sorry, that didn’t work.": "Kale egin du.", "Spam complaints": "ePosta baztergarritzat jota", diff --git a/ghost/i18n/locales/fa/portal.json b/ghost/i18n/locales/fa/portal.json index 3c4f1f4ae62..1691a7aef21 100644 --- a/ghost/i18n/locales/fa/portal.json +++ b/ghost/i18n/locales/fa/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "خطای ثبت نام: پیوند معتبر نیست", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "پوزش می\u200cخواهیم، آن کار انجام نشد.", "Spam complaints": "گزارش\u200cهای اسپم", diff --git a/ghost/i18n/locales/fi/portal.json b/ghost/i18n/locales/fi/portal.json index 9f2409317c3..2e4c6eb78b0 100644 --- a/ghost/i18n/locales/fi/portal.json +++ b/ghost/i18n/locales/fi/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Virhe rekisteröinnissä: Linkki ei toimi", "Signups from this email domain are currently restricted.": "Tätä sähköpostidomainia käyttävien henkilöiden rekisteröitymistä on tällä hetkellä rajoitettu.", "Something went wrong, please try again later.": "Jotain meni pieleen, ole hyvä ja yritä uudestaan myöhemmin.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Valitettavasti suositukset eivät ole juuri nyt käytettävissä.", "Sorry, that didn’t work.": "Anteeksi, tämä ei onnistunut", "Spam complaints": "Spam-valitukset", diff --git a/ghost/i18n/locales/fr/portal.json b/ghost/i18n/locales/fr/portal.json index 1097c32ff3f..5598d50acfa 100644 --- a/ghost/i18n/locales/fr/portal.json +++ b/ghost/i18n/locales/fr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Erreur lors de l'inscription : le lien est invalide", "Signups from this email domain are currently restricted.": "Les inscriptions depuis ce domaine de messagerie sont actuellement restreintes.", "Something went wrong, please try again later.": "Quelque chose s'est mal passé, veuillez réessayer plus tard.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Désolé, aucune recommandation n'est disponible pour le moment.", "Sorry, that didn’t work.": "Désolé, cela n'a pas fonctionné.", "Spam complaints": "Plaintes contre le spam", diff --git a/ghost/i18n/locales/gd/portal.json b/ghost/i18n/locales/gd/portal.json index 3d3129568bf..70ace1808dc 100644 --- a/ghost/i18n/locales/gd/portal.json +++ b/ghost/i18n/locales/gd/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Mearachd: Ceangal mì-dhligheach", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Thachair mearachd, feuch a-rithist an ceann greis.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Duilich, cha do dh’obraich sin.", "Spam complaints": "Gearanan spama", diff --git a/ghost/i18n/locales/he/portal.json b/ghost/i18n/locales/he/portal.json index e2b1bacc335..b52985dd911 100644 --- a/ghost/i18n/locales/he/portal.json +++ b/ghost/i18n/locales/he/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "שגיאת הרשמה: לינק לא תקין", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "משהו השתבש, נסו שוב מאוחר יותר.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "מצטערים אך אין המלצות זמינות כעת.", "Sorry, that didn’t work.": "מצטערים, זה לא עבד", "Spam complaints": "תלונות ספאם", diff --git a/ghost/i18n/locales/hi/portal.json b/ghost/i18n/locales/hi/portal.json index 5c0fbcefa53..4f83d3e8716 100644 --- a/ghost/i18n/locales/hi/portal.json +++ b/ghost/i18n/locales/hi/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "साइनअप त्रुटि: अमान्य लिंक", "Signups from this email domain are currently restricted.": "इस ईमेल डोमेन से साइनअप वर्तमान में प्रतिबंधित हैं।", "Something went wrong, please try again later.": "कुछ गलत हो गया, कृपया बाद में पुनः प्रयास करें।", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "क्षमा करें, अभी कोई अनुशंसाएँ उपलब्ध नहीं हैं।", "Sorry, that didn’t work.": "क्षमा करें, वह काम नहीं किया।", "Spam complaints": "स्पैम शिकायतें", diff --git a/ghost/i18n/locales/hr/portal.json b/ghost/i18n/locales/hr/portal.json index f1304d0505b..d56e0c3ead6 100644 --- a/ghost/i18n/locales/hr/portal.json +++ b/ghost/i18n/locales/hr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Greška prilikom prijave. Neispravan link", "Signups from this email domain are currently restricted.": "Registracija sa ovog email domena trenutno nije dopuštena.", "Something went wrong, please try again later.": "Nešto je pošlo po zlu, pokušajte ponovno kasnije.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Trenutno nema dostupnih preporuka.", "Sorry, that didn’t work.": "Žao nam je, to nije uspjelo.", "Spam complaints": "Pritužbe za neželjenu e-poštu", diff --git a/ghost/i18n/locales/hu/portal.json b/ghost/i18n/locales/hu/portal.json index 39d8bafddb9..7f19a40e809 100644 --- a/ghost/i18n/locales/hu/portal.json +++ b/ghost/i18n/locales/hu/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Regisztrációs hiba: érvénytelen link", "Signups from this email domain are currently restricted.": "Ehhez az e-mail szolgáltatóhoz tartozó regisztráció jelenleg nem engedélyezett.", "Something went wrong, please try again later.": "Valami nem sikerült. Kérjük, próbáld újra.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Sajnáljuk, de az ajánlott oldalak most nem elérhetőek.", "Sorry, that didn’t work.": "Sajnáljuk, ez nem működött.", "Spam complaints": "Spam panaszok", diff --git a/ghost/i18n/locales/id/portal.json b/ghost/i18n/locales/id/portal.json index fbbb78f7c93..40e1b281be4 100644 --- a/ghost/i18n/locales/id/portal.json +++ b/ghost/i18n/locales/id/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Kesalahan pendaftaran: Tautan tidak valid", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Terjadi kesalahan, silakan coba lagi nanti.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Maaf, itu tidak berhasil.", "Spam complaints": "Keluhan spam", diff --git a/ghost/i18n/locales/is/portal.json b/ghost/i18n/locales/is/portal.json index a5cb56095f3..94f305a5fe3 100644 --- a/ghost/i18n/locales/is/portal.json +++ b/ghost/i18n/locales/is/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Villa við nýskráningu: Ógildur hlekkur", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Þetta virkaði því miður ekki.", "Spam complaints": "Kvartanir um ruslpóst", diff --git a/ghost/i18n/locales/it/portal.json b/ghost/i18n/locales/it/portal.json index 158e656449a..945234b24fc 100644 --- a/ghost/i18n/locales/it/portal.json +++ b/ghost/i18n/locales/it/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Errore di accesso: link invalido", "Signups from this email domain are currently restricted.": "Le iscrizioni con questo dominio email sono attualmente limitate.", "Something went wrong, please try again later.": "Qualcosa è andato storto, riprova più tardi.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Ci dispiace, al momento non ci sono consigli disponibili.", "Sorry, that didn’t work.": "Ci dispiace, non ha funzionato.", "Spam complaints": "Reclami per spam", @@ -272,15 +273,15 @@ "X (Twitter)": "X (Twitter)", "year": "Anno", "Yearly": "Annuale", - "You already have an active subscription.": "Hai già un abbonamento attivo.", + "You already have an active subscription.": "Hai già un abbonamento attivo.", "You currently have a free membership, upgrade to a paid subscription for full access.": "Attualmente hai un piano gratuito, abbonati per ottenere l'accesso completo.", "You have been successfully resubscribed": "Reiscrizione effettuata con successo", - "You now have access to {tierName} until {expiryDate}. Enjoy!": "Ora hai accesso a {tierName} fino al {expiryDate}. Buon divertimento!", + "You now have access to {tierName} until {expiryDate}. Enjoy!": "Ora hai accesso a {tierName} fino al {expiryDate}. Buon divertimento!", "You're currently not receiving emails": "Al momento non ricevi nessuna email", "You're not receiving emails": "Non ricevi nessuna email", "You're not receiving emails because you either marked a recent message as spam, or because messages could not be delivered to your provided email address.": "Non ricevi email perché hai contrassegnato un messaggio recente come spam, o perché non è stato possibile recapitare i messaggi all'indirizzo email fornito.", - "You've been gifted a membership": "Hai ricevuto un abbonamento in regalo", - "You've been gifted a membership to {siteTitle}": "Hai ricevuto un abbonamento in regalo a {siteTitle}", + "You've been gifted a membership": "Hai ricevuto un abbonamento in regalo", + "You've been gifted a membership to {siteTitle}": "Hai ricevuto un abbonamento in regalo a {siteTitle}", "You've successfully signed in.": "Accesso effettuato.", "You've successfully subscribed to {siteTitle}": "Iscrizione effettuata a {siteTitle}", "Your account": "Il tuo account", diff --git a/ghost/i18n/locales/ja/portal.json b/ghost/i18n/locales/ja/portal.json index 91326cff944..c65a176155d 100644 --- a/ghost/i18n/locales/ja/portal.json +++ b/ghost/i18n/locales/ja/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "エラー: 無効なリンク", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "申し訳ありませんが、うまくいきませんでした。", "Spam complaints": "スパムに関する苦情", diff --git a/ghost/i18n/locales/ko/portal.json b/ghost/i18n/locales/ko/portal.json index 9840a372125..ca12b7be594 100644 --- a/ghost/i18n/locales/ko/portal.json +++ b/ghost/i18n/locales/ko/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "가입 오류: 잘못된 링크", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "문제가 발생했어요. 나중에 다시 시도해 주세요.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "죄송해요. 현재 추천할 만한 콘텐츠가 없어요.", "Sorry, that didn’t work.": "죄송해요. 작동하지 않았어요.", "Spam complaints": "스팸 신고", diff --git a/ghost/i18n/locales/kz/portal.json b/ghost/i18n/locales/kz/portal.json index 127d67b119a..bfc72e6d995 100644 --- a/ghost/i18n/locales/kz/portal.json +++ b/ghost/i18n/locales/kz/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Тіркелу қатесі: Жарамсыз сілтеме", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Өкінішті, бұдан ештеңе шықпады.", "Spam complaints": "Спам шағымдары", diff --git a/ghost/i18n/locales/lt/portal.json b/ghost/i18n/locales/lt/portal.json index 7415586de6b..13e664a45b6 100644 --- a/ghost/i18n/locales/lt/portal.json +++ b/ghost/i18n/locales/lt/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registracijos klaida: negaliojanti nuoroda", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Atsiprašome, nepavyko.", "Spam complaints": "Skundai dėl šlamšto", diff --git a/ghost/i18n/locales/lv/portal.json b/ghost/i18n/locales/lv/portal.json index 6d8997f0d0b..15c059454e8 100644 --- a/ghost/i18n/locales/lv/portal.json +++ b/ghost/i18n/locales/lv/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Reģistrācijas kļūda: nederīga saite", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Diemžēl pašlaik ieteikumi nav pieejami.", "Sorry, that didn’t work.": "Atvainojiet, tas nedarbojās.", "Spam complaints": "Surogātpasta sūdzības", diff --git a/ghost/i18n/locales/mk/portal.json b/ghost/i18n/locales/mk/portal.json index c2258daf3c6..abd0778cdc5 100644 --- a/ghost/i18n/locales/mk/portal.json +++ b/ghost/i18n/locales/mk/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Грешка при регистрација: Невалиден линк", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Се извинуваме, тоа не проработи.", "Spam complaints": "Поплаки за спам", diff --git a/ghost/i18n/locales/mn/portal.json b/ghost/i18n/locales/mn/portal.json index d4d2e738abb..bde0c0f76ad 100644 --- a/ghost/i18n/locales/mn/portal.json +++ b/ghost/i18n/locales/mn/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Бүртгүүлэх алдаа: Буруу холбоос", "Signups from this email domain are currently restricted.": "Энэхүү имэйл домэйнээс бүртгүүлэх нь хязгаарлагдсан байна.", "Something went wrong, please try again later.": "Ямар нэг алдаа гарлаа, дараа дахин оролдоно уу.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Уучлаарай, одоогоор санал болгох зүйл алга байна.", "Sorry, that didn’t work.": "Уучлаарай, амжилтгүй боллоо.", "Spam complaints": "Спамын гомдлууд", diff --git a/ghost/i18n/locales/ms/portal.json b/ghost/i18n/locales/ms/portal.json index a4674e72809..7e60fefff06 100644 --- a/ghost/i18n/locales/ms/portal.json +++ b/ghost/i18n/locales/ms/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Ralat daftar: Pautan tidak sah", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Maaf, itu tidak berfungsi.", "Spam complaints": "Aduan spam", diff --git a/ghost/i18n/locales/nb/portal.json b/ghost/i18n/locales/nb/portal.json index baf04242cda..c91fed06553 100644 --- a/ghost/i18n/locales/nb/portal.json +++ b/ghost/i18n/locales/nb/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Feil ved registrering: Ugyldig lenke", "Signups from this email domain are currently restricted.": "Registrering fra dette e-postdomenet er utilgjengelig for øyeblikket.", "Something went wrong, please try again later.": "Noe gikk galt. Prøv igjen senere.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Beklager, ingen anbefalinger er tilgjengelige for øyeblikket.", "Sorry, that didn’t work.": "Beklager, det fungerte ikke", "Spam complaints": "Søppelpostklager", diff --git a/ghost/i18n/locales/ne/portal.json b/ghost/i18n/locales/ne/portal.json index d9cb8fe0396..9fa66a2bda1 100644 --- a/ghost/i18n/locales/ne/portal.json +++ b/ghost/i18n/locales/ne/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/nl/portal.json b/ghost/i18n/locales/nl/portal.json index 0b2755de4d2..3e18a534b2d 100644 --- a/ghost/i18n/locales/nl/portal.json +++ b/ghost/i18n/locales/nl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registratiefout: Ongeldige link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Er ging iets mis, probeer het later opnieuw.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Sorry, er zijn momenteel geen aanbevelingen beschikbaar.", "Sorry, that didn’t work.": "Sorry, dat werkte niet.", "Spam complaints": "Spamklachten", diff --git a/ghost/i18n/locales/nn/portal.json b/ghost/i18n/locales/nn/portal.json index b185abbda25..b56a69be3d0 100644 --- a/ghost/i18n/locales/nn/portal.json +++ b/ghost/i18n/locales/nn/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registreringsfeil: Ugyldig lenke", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Beklagar, det verka ikkje.", "Spam complaints": "Spamklagar", diff --git a/ghost/i18n/locales/pa/portal.json b/ghost/i18n/locales/pa/portal.json index 4d4eaf71cc2..825463e1727 100644 --- a/ghost/i18n/locales/pa/portal.json +++ b/ghost/i18n/locales/pa/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "ਸਾਈਨ-ਅੱਪ ਗਲਤੀ: ਅਵੈਧ ਲਿੰਕ", "Signups from this email domain are currently restricted.": "ਇਸ ਈਮੇਲ ਡੋਮੇਨ ਤੋਂ ਸਾਈਨ-ਅੱਪ ਵਰਤਮਾਨ ਵਿੱਚ ਪ੍ਰਤਿਬੰਧਿਤ ਹਨ।", "Something went wrong, please try again later.": "ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ, ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "ਮਾਫ਼ ਕਰਨਾ, ਇਸ ਵੇਲੇ ਕੋਈ ਸਿਫ਼ਾਰਸ਼ਾਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ।", "Sorry, that didn’t work.": "ਮਾਫ਼ ਕਰਨਾ, ਉਹ ਕੰਮ ਨਹੀਂ ਹੋਇਆ।", "Spam complaints": "ਸਪੈਮ ਸ਼ਿਕਾਇਤਾਂ", diff --git a/ghost/i18n/locales/pl/portal.json b/ghost/i18n/locales/pl/portal.json index 6cecfe38d6d..e1b6a0198b9 100644 --- a/ghost/i18n/locales/pl/portal.json +++ b/ghost/i18n/locales/pl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Błąd rejestracji: Nieprawidłowy link", "Signups from this email domain are currently restricted.": "Rejestracje z tej domeny email są obecnie ograniczone.", "Something went wrong, please try again later.": "Wystąpił błąd. Spróbuj ponownie później.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Przepraszamy, w tej chwili nie są dostępne żadne rekomendacje.", "Sorry, that didn’t work.": "Przepraszamy, to nie zadziałało.", "Spam complaints": "Skargi dotyczące spamu", diff --git a/ghost/i18n/locales/pt-BR/portal.json b/ghost/i18n/locales/pt-BR/portal.json index c86e22da5ff..56820160fb0 100644 --- a/ghost/i18n/locales/pt-BR/portal.json +++ b/ghost/i18n/locales/pt-BR/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Erro de inscrição: link inválido", "Signups from this email domain are currently restricted.": "As inscrições utilizando este domínio de e-mail estão restritas no momento.", "Something went wrong, please try again later.": "Algo deu errado, tente novamente mais tarde.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Desculpe, não há recomendações disponíveis no momento.", "Sorry, that didn’t work.": "Desculpe, isso não funcionou.", "Spam complaints": "Reclamações de spam", diff --git a/ghost/i18n/locales/pt/portal.json b/ghost/i18n/locales/pt/portal.json index ce1e0830ae5..d43859f393e 100644 --- a/ghost/i18n/locales/pt/portal.json +++ b/ghost/i18n/locales/pt/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Erro de inscrição: ligação inválida", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Temos um erro em mãos, tente por favor mais tarde.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Desculpe, mas isso não funcionou.", "Spam complaints": "Reclamações de spam", diff --git a/ghost/i18n/locales/ro/portal.json b/ghost/i18n/locales/ro/portal.json index e0d63254e3d..5ec2a966daa 100644 --- a/ghost/i18n/locales/ro/portal.json +++ b/ghost/i18n/locales/ro/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Eroare la înregistrare: Link invalid", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Ne pare rău, nu a funcționat.", "Spam complaints": "Reclamații spam", diff --git a/ghost/i18n/locales/ru/portal.json b/ghost/i18n/locales/ru/portal.json index 5ec7b4be967..e80b0f20153 100644 --- a/ghost/i18n/locales/ru/portal.json +++ b/ghost/i18n/locales/ru/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Ошибка регистрации: Неверная или просроченная ссылка", "Signups from this email domain are currently restricted.": "Регистрация почты с этого домена в настоящее время ограничена.", "Something went wrong, please try again later.": "Что-то пошло не так, попробуйте ещё раз позже.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Извините, на данный момент рекомендации недоступны.", "Sorry, that didn’t work.": "Извините, это не сработало.", "Spam complaints": "Жалобы на спам", diff --git a/ghost/i18n/locales/si/portal.json b/ghost/i18n/locales/si/portal.json index 6c23dcab61f..8031f615733 100644 --- a/ghost/i18n/locales/si/portal.json +++ b/ghost/i18n/locales/si/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Signup වීම අසාර්ථකයි: වැරදි link එකකි", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "සමාවෙන්න, නමුත් එය සාර්ථක වූයේ නැත.", "Spam complaints": "Spam සඳහා වන පැමිණිලි", diff --git a/ghost/i18n/locales/sk/portal.json b/ghost/i18n/locales/sk/portal.json index a55de59d25b..f765e8279dc 100644 --- a/ghost/i18n/locales/sk/portal.json +++ b/ghost/i18n/locales/sk/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Chyba registrácie: Neplatný odkaz", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Niečo sa pokazilo, skúste to prosím neskôr.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Prepáčte, momentálne nie sú dostupné žiadne odporúčania.", "Sorry, that didn’t work.": "Prepáčte, toto nezafungovalo.", "Spam complaints": "Sťažnosti na spam", diff --git a/ghost/i18n/locales/sl/portal.json b/ghost/i18n/locales/sl/portal.json index c88c18a4dca..1de299a9e06 100644 --- a/ghost/i18n/locales/sl/portal.json +++ b/ghost/i18n/locales/sl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Napaka pri registraciji: Neveljavna povezava", "Signups from this email domain are currently restricted.": "Prijave iz te e-pošte so trenutno omejene.", "Something went wrong, please try again later.": "Nekaj je šlo narobe, poskusite ponovno kasneje.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Oprostite, trenutno ni priporočil.", "Sorry, that didn’t work.": "Oprostite, to ni uspelo.", "Spam complaints": "Pritožbe zaradi vsiljene pošte", diff --git a/ghost/i18n/locales/sq/portal.json b/ghost/i18n/locales/sq/portal.json index 9bf651a9f82..3930a408a95 100644 --- a/ghost/i18n/locales/sq/portal.json +++ b/ghost/i18n/locales/sq/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Gabim ne rregjistrim: Link i pavlefshem", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Na vjen keq, kjo nuk funksionoi.", "Spam complaints": "Ankesat për mesazhe të padëshiruara", diff --git a/ghost/i18n/locales/sr-Cyrl/portal.json b/ghost/i18n/locales/sr-Cyrl/portal.json index 23814aee0c4..b24209413a3 100644 --- a/ghost/i18n/locales/sr-Cyrl/portal.json +++ b/ghost/i18n/locales/sr-Cyrl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Грешка при регистрацији: Невалидан линк", "Signups from this email domain are currently restricted.": "Регистрације са овог email домена су тренутно ограничене.", "Something went wrong, please try again later.": "Нешто је пошло наопако, молимо Вас покушајте касније.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Извините, али препоруке тренутно нису доступне.", "Sorry, that didn’t work.": "Извините, то није успело.", "Spam complaints": "Жалбе на нежељену пошту", diff --git a/ghost/i18n/locales/sr/portal.json b/ghost/i18n/locales/sr/portal.json index c5745400bd6..b6a1f7c475b 100644 --- a/ghost/i18n/locales/sr/portal.json +++ b/ghost/i18n/locales/sr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Greška pri registraciji: Nevalidan link", "Signups from this email domain are currently restricted.": "Registracije sa ovog email domena su trenutno ograničene.", "Something went wrong, please try again later.": "Nešto je pošlo naopako, molimo Vas pokušajte kasnije.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Izvinite, ali preporuke trenutno nisu dostupne.", "Sorry, that didn’t work.": "Izvinite, to nije uspelo.", "Spam complaints": "Žalbe na neželjenu poštu", diff --git a/ghost/i18n/locales/sv/portal.json b/ghost/i18n/locales/sv/portal.json index 8be5f6446d1..7991160cf15 100644 --- a/ghost/i18n/locales/sv/portal.json +++ b/ghost/i18n/locales/sv/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registreringsfel. Länken fungerade inte.", "Signups from this email domain are currently restricted.": "Registreringar från denna e-postdomän är för närvarande begränsade.", "Something went wrong, please try again later.": "Något gick fel, vänligen försök igen senare.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Ursäkta, inga rekommendationer finns tillgängliga just nu.", "Sorry, that didn’t work.": "Ursäkta, det fungerande inte.", "Spam complaints": "Skräppostrapporter", diff --git a/ghost/i18n/locales/sw/portal.json b/ghost/i18n/locales/sw/portal.json index 632f5f77a6b..f1cc25a3ed5 100644 --- a/ghost/i18n/locales/sw/portal.json +++ b/ghost/i18n/locales/sw/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Kosa la usajili: Kiungo batili", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Samahani, hiyo haikufanya kazi.", "Spam complaints": "Malalamiko ya Spam", diff --git a/ghost/i18n/locales/ta/portal.json b/ghost/i18n/locales/ta/portal.json index b099a3b19ab..ea17c36bd44 100644 --- a/ghost/i18n/locales/ta/portal.json +++ b/ghost/i18n/locales/ta/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "பதிவு பிழை: தவறான இணைப்பு", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "ஏதோ தவறு நடந்துவிட்டது, பிறகு மீண்டும் முயற்சிக்கவும்.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "மன்னிக்கவும், அது வேலை செய்யவில்லை.", "Spam complaints": "ஸ்பாம் புகார்கள்", diff --git a/ghost/i18n/locales/th/portal.json b/ghost/i18n/locales/th/portal.json index 0dda30d494b..1f57230bfca 100644 --- a/ghost/i18n/locales/th/portal.json +++ b/ghost/i18n/locales/th/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "มีข้อผิดพลาดในการสมัครใช้งาน: ลิงก์ไม่ถูกต้อง", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "ขออภัย, ไม่สามารถส่งได้", "Spam complaints": "การร้องเรียนเกี่ยวกับสแปม", diff --git a/ghost/i18n/locales/tr/portal.json b/ghost/i18n/locales/tr/portal.json index 2098f85a0f9..b226fc5d215 100644 --- a/ghost/i18n/locales/tr/portal.json +++ b/ghost/i18n/locales/tr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Kayıt hatası: Geçersiz bağlantı", "Signups from this email domain are currently restricted.": "Bu e-posta alan adından kayıtlar şu anda kısıtlıdır.", "Something went wrong, please try again later.": "Bir şeyler ters gitti, lütfen daha sonra tekrar deneyin.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Üzgünüz, şu anda öneri bulunmamaktadır", "Sorry, that didn’t work.": "Üzgünüm, bu işe yaramadı.", "Spam complaints": "Spam şikayetleri", diff --git a/ghost/i18n/locales/uk/portal.json b/ghost/i18n/locales/uk/portal.json index db720a1718d..a6ecbd87a7c 100644 --- a/ghost/i18n/locales/uk/portal.json +++ b/ghost/i18n/locales/uk/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Помилка реєстрації: недійсне посилання", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Щось пішло не так, спробуйте пізніше.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Вибачте, це не спрацювало.", "Spam complaints": "Скарги на спам", diff --git a/ghost/i18n/locales/ur/portal.json b/ghost/i18n/locales/ur/portal.json index 3434df50bb1..190f581cd4d 100644 --- a/ghost/i18n/locales/ur/portal.json +++ b/ghost/i18n/locales/ur/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "سائن اپ خطا: غیر معتبر لنک", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "معاف کریں، یہ کام نہیں کیا گیا۔", "Spam complaints": "سپیم شکایتیں", diff --git a/ghost/i18n/locales/uz/portal.json b/ghost/i18n/locales/uz/portal.json index 98a8670ad4e..2589ded2051 100644 --- a/ghost/i18n/locales/uz/portal.json +++ b/ghost/i18n/locales/uz/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/vi/portal.json b/ghost/i18n/locales/vi/portal.json index bce68abbbd8..8f832b129ba 100644 --- a/ghost/i18n/locales/vi/portal.json +++ b/ghost/i18n/locales/vi/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Lỗi đăng ký: Liên kết không hợp lệ", "Signups from this email domain are currently restricted.": "Tên miền email này đang bị hạn chế đăng ký.", "Something went wrong, please try again later.": "Xảy ra lỗi, hãy thử lại sau.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Rất tiếc, chưa có đề xuất nào vào lúc này.", "Sorry, that didn’t work.": "Rất tiếc, không dùng được.", "Spam complaints": "Than phiền", diff --git a/ghost/i18n/locales/zh-Hant/portal.json b/ghost/i18n/locales/zh-Hant/portal.json index fa97ea8a9b4..2de837761b7 100644 --- a/ghost/i18n/locales/zh-Hant/portal.json +++ b/ghost/i18n/locales/zh-Hant/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "註冊錯誤:連結無效", "Signups from this email domain are currently restricted.": "來自此電子郵件網域的註冊目前受到限制。", "Something went wrong, please try again later.": "伺服器錯誤,請稍後重試。", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "抱歉,目前沒有其他的推薦。", "Sorry, that didn’t work.": "抱歉,該操作無法完成。", "Spam complaints": "垃圾郵件", diff --git a/ghost/i18n/locales/zh/portal.json b/ghost/i18n/locales/zh/portal.json index b845fb043d6..d3dfbcb0290 100644 --- a/ghost/i18n/locales/zh/portal.json +++ b/ghost/i18n/locales/zh/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "注册错误:链接无效", "Signups from this email domain are currently restricted.": "来自此电子邮件域名的新会员注册目前受限。", "Something went wrong, please try again later.": "出了点问题,请稍后再试。", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "抱歉,目前暂无推荐。", "Sorry, that didn’t work.": "抱歉,该操作无法完成。", "Spam complaints": "垃圾邮件", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3e84c9e898..6c6065ababa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,8 +13,8 @@ catalogs: specifier: 8.57.1 version: 8.57.1 '@faker-js/faker': - specifier: 9.9.0 - version: 9.9.0 + specifier: 10.4.0 + version: 10.4.0 '@playwright/test': specifier: 1.60.0 version: 1.60.0 @@ -223,8 +223,8 @@ catalogs: specifier: 2.0.0 version: 2.0.0 postcss: - specifier: 8.5.10 - version: 8.5.10 + specifier: 8.5.15 + version: 8.5.15 preact: specifier: ^10.29.2 version: 10.29.2 @@ -249,6 +249,9 @@ catalogs: storybook: specifier: 10.3.5 version: 10.3.5 + supertest: + specifier: 7.2.2 + version: 7.2.2 tailwindcss: specifier: 4.2.2 version: 4.2.2 @@ -718,13 +721,13 @@ importers: version: 3.2.2(react@18.3.1) '@storybook/addon-docs': specifier: 'catalog:' - version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-links': specifier: 'catalog:' version: 10.3.5(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@tailwindcss/postcss': specifier: 'catalog:' version: 4.2.2 @@ -753,8 +756,8 @@ importers: specifier: 'catalog:' version: 4.7.0(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.10) + specifier: 10.5.0 + version: 10.5.0(postcss@8.5.15) c8: specifier: 'catalog:' version: 11.0.0 @@ -784,10 +787,10 @@ importers: version: 4.18.1 postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.10) + version: 16.1.1(postcss@8.5.15) react: specifier: 'catalog:' version: 18.3.1 @@ -1186,8 +1189,8 @@ importers: specifier: 'catalog:' version: 4.1.7(vitest@4.1.7) autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.10) + specifier: 10.5.0 + version: 10.5.0(postcss@8.5.15) bson-objectid: specifier: 'catalog:' version: 2.0.4 @@ -1211,10 +1214,10 @@ importers: version: 2.30.1 postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.10) + version: 16.1.1(postcss@8.5.15) sinon: specifier: 'catalog:' version: 22.0.0 @@ -1553,13 +1556,13 @@ importers: devDependencies: '@storybook/addon-docs': specifier: 'catalog:' - version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-links': specifier: 'catalog:' version: 10.3.5(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@tailwindcss/postcss': specifier: 'catalog:' version: 4.2.2 @@ -1610,7 +1613,7 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 remark-gfm: specifier: 4.0.1 version: 4.0.1 @@ -1659,13 +1662,13 @@ importers: version: 1.60.0 '@storybook/addon-docs': specifier: 'catalog:' - version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-links': specifier: 'catalog:' version: 10.3.5(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@tailwindcss/line-clamp': specifier: 0.4.4 version: 0.4.4(tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.9.0)) @@ -1682,8 +1685,8 @@ importers: specifier: 'catalog:' version: 4.7.0(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.10) + specifier: 10.5.0 + version: 10.5.0(postcss@8.5.15) concurrently: specifier: 'catalog:' version: 10.0.0 @@ -1698,10 +1701,10 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.10) + version: 16.1.1(postcss@8.5.15) storybook: specifier: 'catalog:' version: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1808,7 +1811,7 @@ importers: devDependencies: '@faker-js/faker': specifier: 'catalog:' - version: 9.9.0 + version: 10.4.0 '@testing-library/jest-dom': specifier: 'catalog:' version: 6.9.1 @@ -1874,7 +1877,7 @@ importers: version: 8.57.1 '@faker-js/faker': specifier: 'catalog:' - version: 9.9.0 + version: 10.4.0 '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -1885,8 +1888,8 @@ importers: specifier: 4.2.1 version: 4.2.1 '@types/dockerode': - specifier: 3.3.47 - version: 3.3.47 + specifier: 4.0.1 + version: 4.0.1 '@types/express': specifier: 'catalog:' version: 4.17.25 @@ -1967,8 +1970,8 @@ importers: specifier: 1.16.13 version: 1.16.13 '@faker-js/faker': - specifier: 7.6.0 - version: 7.6.0 + specifier: 10.4.0 + version: 10.4.0 '@glimmer/component': specifier: 1.1.2 version: 1.1.2(@babel/core@7.29.7) @@ -2316,7 +2319,7 @@ importers: version: 3.2.1(encoding@0.1.13) '@faker-js/faker': specifier: 'catalog:' - version: 9.9.0 + version: 10.4.0 '@isaacs/ttlcache': specifier: 1.4.1 version: 1.4.1 @@ -2844,8 +2847,8 @@ importers: specifier: 1.1.13 version: 1.1.13 '@types/nodemailer': - specifier: 6.4.23 - version: 6.4.23 + specifier: 8.0.0 + version: 8.0.0 '@types/on-headers': specifier: 1.0.4 version: 1.0.4 @@ -2856,8 +2859,8 @@ importers: specifier: 'catalog:' version: 2.16.1 '@types/sinon': - specifier: 17.0.4 - version: 17.0.4 + specifier: 21.0.1 + version: 21.0.1 '@types/supertest': specifier: 6.0.3 version: 6.0.3 @@ -2880,8 +2883,8 @@ importers: specifier: 3.12.0 version: 3.12.0 cssnano: - specifier: 7.1.1 - version: 7.1.1(postcss@8.5.10) + specifier: 7.1.9 + version: 7.1.9(postcss@8.5.15) esbuild: specifier: 0.28.0 version: 0.28.0 @@ -2926,10 +2929,10 @@ importers: version: 3.1.14 postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-cli: specifier: 11.0.1 - version: 11.0.1(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0) + version: 11.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0) qs: specifier: 6.15.2 version: 6.15.2 @@ -2940,8 +2943,8 @@ importers: specifier: 'catalog:' version: 22.0.0 supertest: - specifier: 6.3.4 - version: 6.3.4 + specifier: 'catalog:' + version: 7.2.2 tmp: specifier: 0.2.6 version: 0.2.6 @@ -4904,13 +4907,9 @@ packages: resolution: {integrity: sha512-ZwOY/SFqDph/1J4KfTTOKgGcy5xIrOSkK8b5KDHyoIg8AZ6+uEQ5l7SSNQskc4RxlLZGk+CBNOuRUGfkdPhKLA==} engines: {node: '>= 15'} - '@faker-js/faker@7.6.0': - resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==} - engines: {node: '>=14.0.0', npm: '>=6.0.0'} - - '@faker-js/faker@9.9.0': - resolution: {integrity: sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==} - engines: {node: '>=18.0.0', npm: '>=9.0.0'} + '@faker-js/faker@10.4.0': + resolution: {integrity: sha512-sDBWI3yLy8EcDzgobvJTWq1MJYzAkQdpjXuPukga9wXonhpMRvd1Izuo2Qgwey2OiEoRIBr35RMU9HJRoOHzpw==} + engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} '@fastify/otel@0.18.0': resolution: {integrity: sha512-3TASCATfw+ctICSb4ymrv7iCm0qJ0N9CarB+CZ7zIJ7KqNbwI5JjyDL1/sxoC0ccTO1Zyd1iQ+oqncPg5FJXaA==} @@ -9027,8 +9026,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.47': - resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==} + '@types/dockerode@4.0.1': + resolution: {integrity: sha512-cmUpB+dPN955PxBEuXE3f6lKO1hHiIGYJA46IVF3BJpNsZGvtBDcRnlrHYHtOH/B6vtDOyl2kZ2ShAu3mgc27Q==} '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} @@ -9179,8 +9178,8 @@ packages: '@types/node@9.6.61': resolution: {integrity: sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ==} - '@types/nodemailer@6.4.23': - resolution: {integrity: sha512-aFV3/NsYFLSx9mbb5gtirBSXJnAlrusoKNuPbxsASWc7vrKLmIrTQRpdcxNcSFL3VW2A2XpeLEavwb2qMi6nlQ==} + '@types/nodemailer@8.0.0': + resolution: {integrity: sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -9263,8 +9262,8 @@ packages: '@types/set-cookie-parser@2.4.10': resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} - '@types/sinon@17.0.4': - resolution: {integrity: sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==} + '@types/sinon@21.0.1': + resolution: {integrity: sha512-5yoJSqLbjH8T9V2bksgRayuhpZy+723/z6wBOR+Soe4ZlXC0eW8Na71TeaZPUWDQvM7LYKa9UGFc6LRqxiR5fQ==} '@types/sinonjs__fake-timers@15.0.1': resolution: {integrity: sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==} @@ -10165,6 +10164,13 @@ packages: peerDependencies: postcss: ^8.1.0 + autoprefixer@10.5.0: + resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + autoprefixer@9.8.6: resolution: {integrity: sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==} hasBin: true @@ -12289,11 +12295,11 @@ packages: resolution: {integrity: sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==} engines: {node: '>=6.9.0'} - cssnano@7.1.1: - resolution: {integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==} + cssnano@7.1.9: + resolution: {integrity: sha512-uPR75+5Dk/WJ/YSPR1/YDHdwMM9c5FsaARljfKWgeCKLKOtJ0we21xy/RcCjn53fZnD/f6yYEIZ8pu18+GnbNQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.32 + postcss: ^8.5.13 csso@3.5.1: resolution: {integrity: sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==} @@ -14320,8 +14326,9 @@ packages: resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' - formidable@2.1.5: - resolution: {integrity: sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==} + formidable@3.5.4: + resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==} + engines: {node: '>=14.0.0'} forwarded-parse@2.1.2: resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} @@ -14333,6 +14340,9 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -18802,10 +18812,6 @@ packages: resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} engines: {node: '>=6.0.0'} - postcss@8.5.10: - resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.15: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} @@ -20482,20 +20488,18 @@ packages: superagent-throttle@1.0.1: resolution: {integrity: sha512-m5Ngf0S5QoA84zgwVqVnVA34u9uvo8uM+QEF9B7eNI5FDaSoSoUwQsx7V1GmLXgYLkolhIiucFDVJXF9z49hgQ==} + superagent@10.3.0: + resolution: {integrity: sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==} + engines: {node: '>=14.18.0'} + superagent@5.3.1: resolution: {integrity: sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==} engines: {node: '>= 7.0.0'} deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net - superagent@8.1.2: - resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} - engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net - - supertest@6.3.4: - resolution: {integrity: sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==} - engines: {node: '>=6.4.0'} - deprecated: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net + supertest@7.2.2: + resolution: {integrity: sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==} + engines: {node: '>=14.18.0'} supports-color@1.2.0: resolution: {integrity: sha512-mS5xsnjTh5b7f2DM6bch6lR582UCOTphzINlZnDsfpIRrwI6r58rb6YSSGsdexkm8qw2bBVO2ID2fnJOTuLiPA==} @@ -24422,9 +24426,7 @@ snapshots: transitivePeerDependencies: - encoding - '@faker-js/faker@7.6.0': {} - - '@faker-js/faker@9.9.0': {} + '@faker-js/faker@10.4.0': {} '@fastify/otel@0.18.0(@opentelemetry/api@1.9.1)': dependencies: @@ -27854,10 +27856,10 @@ snapshots: '@stdlib/utils-constructor-name': 0.2.3 '@stdlib/utils-global': 0.2.3 - '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.29)(react@18.3.1) - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -27871,10 +27873,10 @@ snapshots: - vite - webpack - '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.29)(react@18.3.1) - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -27895,9 +27897,9 @@ snapshots: optionalDependencies: react: 18.3.1 - '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 vite: 7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) @@ -27906,9 +27908,9 @@ snapshots: - rollup - webpack - '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 vite: 7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) @@ -27917,7 +27919,7 @@ snapshots: - rollup - webpack - '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 @@ -27925,9 +27927,9 @@ snapshots: esbuild: 0.28.0 rollup: 4.60.4 vite: 7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10) + webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15) - '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 @@ -27935,7 +27937,7 @@ snapshots: esbuild: 0.28.0 rollup: 4.60.4 vite: 7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10) + webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15) '@storybook/global@5.0.0': {} @@ -27950,11 +27952,11 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.3.0(rollup@4.60.4) - '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/react': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3) empathic: 2.0.1 magic-string: 0.30.21 @@ -27972,11 +27974,11 @@ snapshots: - typescript - webpack - '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.3.0(rollup@4.60.4) - '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/react': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3) empathic: 2.0.1 magic-string: 0.30.21 @@ -29356,7 +29358,7 @@ snapshots: '@types/node': 25.9.1 '@types/ssh2': 1.15.5 - '@types/dockerode@3.3.47': + '@types/dockerode@4.0.1': dependencies: '@types/docker-modem': 3.0.6 '@types/node': 25.9.1 @@ -29540,7 +29542,7 @@ snapshots: '@types/node@9.6.61': {} - '@types/nodemailer@6.4.23': + '@types/nodemailer@8.0.0': dependencies: '@types/node': 25.9.1 @@ -29635,7 +29637,7 @@ snapshots: dependencies: '@types/node': 25.9.1 - '@types/sinon@17.0.4': + '@types/sinon@21.0.1': dependencies: '@types/sinonjs__fake-timers': 15.0.1 @@ -30863,22 +30865,21 @@ snapshots: audio-extensions@0.0.0: {} - autoprefixer@10.4.21(postcss@8.5.10): + autoprefixer@10.4.21(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001793 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 - autoprefixer@10.4.21(postcss@8.5.15): + autoprefixer@10.5.0(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001793 - fraction.js: 4.3.7 - normalize-range: 0.1.2 + fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.15 postcss-value-parser: 4.2.0 @@ -33443,9 +33444,9 @@ snapshots: postcss: 7.0.39 timsort: 0.3.0 - css-declaration-sorter@7.4.0(postcss@8.5.10): + css-declaration-sorter@7.4.0(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 css-has-pseudo@3.0.4(postcss@8.5.15): dependencies: @@ -33578,39 +33579,39 @@ snapshots: postcss-svgo: 4.0.3 postcss-unique-selectors: 4.0.1 - cssnano-preset-default@7.0.17(postcss@8.5.10): + cssnano-preset-default@7.0.17(postcss@8.5.15): dependencies: browserslist: 4.28.2 - css-declaration-sorter: 7.4.0(postcss@8.5.10) - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 - postcss-calc: 10.1.1(postcss@8.5.10) - postcss-colormin: 7.0.10(postcss@8.5.10) - postcss-convert-values: 7.0.12(postcss@8.5.10) - postcss-discard-comments: 7.0.8(postcss@8.5.10) - postcss-discard-duplicates: 7.0.4(postcss@8.5.10) - postcss-discard-empty: 7.0.3(postcss@8.5.10) - postcss-discard-overridden: 7.0.3(postcss@8.5.10) - postcss-merge-longhand: 7.0.7(postcss@8.5.10) - postcss-merge-rules: 7.0.11(postcss@8.5.10) - postcss-minify-font-values: 7.0.3(postcss@8.5.10) - postcss-minify-gradients: 7.0.5(postcss@8.5.10) - postcss-minify-params: 7.0.9(postcss@8.5.10) - postcss-minify-selectors: 7.1.2(postcss@8.5.10) - postcss-normalize-charset: 7.0.3(postcss@8.5.10) - postcss-normalize-display-values: 7.0.3(postcss@8.5.10) - postcss-normalize-positions: 7.0.4(postcss@8.5.10) - postcss-normalize-repeat-style: 7.0.4(postcss@8.5.10) - postcss-normalize-string: 7.0.3(postcss@8.5.10) - postcss-normalize-timing-functions: 7.0.3(postcss@8.5.10) - postcss-normalize-unicode: 7.0.9(postcss@8.5.10) - postcss-normalize-url: 7.0.3(postcss@8.5.10) - postcss-normalize-whitespace: 7.0.3(postcss@8.5.10) - postcss-ordered-values: 7.0.4(postcss@8.5.10) - postcss-reduce-initial: 7.0.9(postcss@8.5.10) - postcss-reduce-transforms: 7.0.3(postcss@8.5.10) - postcss-svgo: 7.1.3(postcss@8.5.10) - postcss-unique-selectors: 7.0.7(postcss@8.5.10) + css-declaration-sorter: 7.4.0(postcss@8.5.15) + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 + postcss-calc: 10.1.1(postcss@8.5.15) + postcss-colormin: 7.0.10(postcss@8.5.15) + postcss-convert-values: 7.0.12(postcss@8.5.15) + postcss-discard-comments: 7.0.8(postcss@8.5.15) + postcss-discard-duplicates: 7.0.4(postcss@8.5.15) + postcss-discard-empty: 7.0.3(postcss@8.5.15) + postcss-discard-overridden: 7.0.3(postcss@8.5.15) + postcss-merge-longhand: 7.0.7(postcss@8.5.15) + postcss-merge-rules: 7.0.11(postcss@8.5.15) + postcss-minify-font-values: 7.0.3(postcss@8.5.15) + postcss-minify-gradients: 7.0.5(postcss@8.5.15) + postcss-minify-params: 7.0.9(postcss@8.5.15) + postcss-minify-selectors: 7.1.2(postcss@8.5.15) + postcss-normalize-charset: 7.0.3(postcss@8.5.15) + postcss-normalize-display-values: 7.0.3(postcss@8.5.15) + postcss-normalize-positions: 7.0.4(postcss@8.5.15) + postcss-normalize-repeat-style: 7.0.4(postcss@8.5.15) + postcss-normalize-string: 7.0.3(postcss@8.5.15) + postcss-normalize-timing-functions: 7.0.3(postcss@8.5.15) + postcss-normalize-unicode: 7.0.9(postcss@8.5.15) + postcss-normalize-url: 7.0.3(postcss@8.5.15) + postcss-normalize-whitespace: 7.0.3(postcss@8.5.15) + postcss-ordered-values: 7.0.4(postcss@8.5.15) + postcss-reduce-initial: 7.0.9(postcss@8.5.15) + postcss-reduce-transforms: 7.0.3(postcss@8.5.15) + postcss-svgo: 7.1.3(postcss@8.5.15) + postcss-unique-selectors: 7.0.7(postcss@8.5.15) cssnano-util-get-arguments@4.0.0: {} @@ -33622,9 +33623,9 @@ snapshots: cssnano-util-same-parent@4.0.1: {} - cssnano-utils@5.0.3(postcss@8.5.10): + cssnano-utils@5.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 cssnano@4.1.10: dependencies: @@ -33633,11 +33634,11 @@ snapshots: is-resolvable: 1.1.0 postcss: 7.0.39 - cssnano@7.1.1(postcss@8.5.10): + cssnano@7.1.9(postcss@8.5.15): dependencies: - cssnano-preset-default: 7.0.17(postcss@8.5.10) + cssnano-preset-default: 7.0.17(postcss@8.5.15) lilconfig: 3.1.3 - postcss: 8.5.10 + postcss: 8.5.15 csso@3.5.1: dependencies: @@ -37067,12 +37068,11 @@ snapshots: formidable@1.2.6: {} - formidable@2.1.5: + formidable@3.5.4: dependencies: '@paralleldrive/cuid2': 2.3.1 dezalgo: 1.0.4 once: 1.4.0 - qs: 6.15.2 forwarded-parse@2.1.2: {} @@ -37080,6 +37080,8 @@ snapshots: fraction.js@4.3.7: {} + fraction.js@5.3.4: {} + fresh@0.5.2: {} fresh@2.0.0: {} @@ -42227,9 +42229,9 @@ snapshots: postcss: 8.5.15 postcss-selector-parser: 6.1.2 - postcss-calc@10.1.1(postcss@8.5.10): + postcss-calc@10.1.1(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 @@ -42244,15 +42246,15 @@ snapshots: postcss: 8.5.15 postcss-value-parser: 4.2.0 - postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0): + postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0): dependencies: chokidar: 3.6.0 dependency-graph: 1.0.0 fs-extra: 11.3.5 picocolors: 1.1.1 - postcss: 8.5.10 - postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0) - postcss-reporter: 7.1.0(postcss@8.5.10) + postcss: 8.5.15 + postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0) + postcss-reporter: 7.1.0(postcss@8.5.15) pretty-hrtime: 1.0.3 read-cache: 1.0.0 slash: 5.1.0 @@ -42291,12 +42293,12 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-colormin@7.0.10(postcss@8.5.10): + postcss-colormin@7.0.10(postcss@8.5.15): dependencies: '@colordx/core': 5.4.3 browserslist: 4.28.2 caniuse-api: 3.0.0 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-convert-values@4.0.1: @@ -42304,10 +42306,10 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-convert-values@7.0.12(postcss@8.5.10): + postcss-convert-values@7.0.12(postcss@8.5.15): dependencies: browserslist: 4.28.2 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-custom-media@7.0.8: @@ -42343,34 +42345,34 @@ snapshots: dependencies: postcss: 7.0.39 - postcss-discard-comments@7.0.8(postcss@8.5.10): + postcss-discard-comments@7.0.8(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-discard-duplicates@4.0.2: dependencies: postcss: 7.0.39 - postcss-discard-duplicates@7.0.4(postcss@8.5.10): + postcss-discard-duplicates@7.0.4(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-discard-empty@4.0.1: dependencies: postcss: 7.0.39 - postcss-discard-empty@7.0.3(postcss@8.5.10): + postcss-discard-empty@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-discard-overridden@4.0.1: dependencies: postcss: 7.0.39 - postcss-discard-overridden@7.0.3(postcss@8.5.10): + postcss-discard-overridden@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-double-position-gradients@3.1.2(postcss@8.5.15): dependencies: @@ -42420,9 +42422,9 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.12 - postcss-import@16.1.1(postcss@8.5.10): + postcss-import@16.1.1(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.12 @@ -42442,13 +42444,13 @@ snapshots: postcss: 8.5.15 postcss-value-parser: 4.2.0 - postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0): + postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0): dependencies: lilconfig: 3.1.3 yaml: 2.9.0 optionalDependencies: jiti: 2.7.0 - postcss: 8.5.10 + postcss: 8.5.15 tsx: 4.21.0 postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.15)(tsx@4.21.0)(yaml@2.9.0): @@ -42475,11 +42477,11 @@ snapshots: postcss-value-parser: 3.3.1 stylehacks: 4.0.3 - postcss-merge-longhand@7.0.7(postcss@8.5.10): + postcss-merge-longhand@7.0.7(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 - stylehacks: 7.0.11(postcss@8.5.10) + stylehacks: 7.0.11(postcss@8.5.15) postcss-merge-rules@4.0.3: dependencies: @@ -42490,12 +42492,12 @@ snapshots: postcss-selector-parser: 3.1.2 vendors: 1.0.4 - postcss-merge-rules@7.0.11(postcss@8.5.10): + postcss-merge-rules@7.0.11(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-api: 3.0.0 - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-minify-font-values@4.0.2: @@ -42503,9 +42505,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-minify-font-values@7.0.3(postcss@8.5.10): + postcss-minify-font-values@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-minify-gradients@4.0.2: @@ -42515,11 +42517,11 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-minify-gradients@7.0.5(postcss@8.5.10): + postcss-minify-gradients@7.0.5(postcss@8.5.15): dependencies: '@colordx/core': 5.4.3 - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-minify-params@4.0.2: @@ -42531,11 +42533,11 @@ snapshots: postcss-value-parser: 3.3.1 uniqs: 2.0.0 - postcss-minify-params@7.0.9(postcss@8.5.10): + postcss-minify-params@7.0.9(postcss@8.5.15): dependencies: browserslist: 4.28.2 - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-minify-selectors@4.0.2: @@ -42545,12 +42547,12 @@ snapshots: postcss: 7.0.39 postcss-selector-parser: 3.1.2 - postcss-minify-selectors@7.1.2(postcss@8.5.10): + postcss-minify-selectors@7.1.2(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-api: 3.0.0 cssesc: 3.0.0 - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-modules-extract-imports@3.1.0(postcss@8.5.15): @@ -42589,9 +42591,9 @@ snapshots: dependencies: postcss: 7.0.39 - postcss-normalize-charset@7.0.3(postcss@8.5.10): + postcss-normalize-charset@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-normalize-display-values@4.0.2: dependencies: @@ -42599,9 +42601,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-display-values@7.0.3(postcss@8.5.10): + postcss-normalize-display-values@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-positions@4.0.2: @@ -42611,9 +42613,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-positions@7.0.4(postcss@8.5.10): + postcss-normalize-positions@7.0.4(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-repeat-style@4.0.2: @@ -42623,9 +42625,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-repeat-style@7.0.4(postcss@8.5.10): + postcss-normalize-repeat-style@7.0.4(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-string@4.0.2: @@ -42634,9 +42636,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-string@7.0.3(postcss@8.5.10): + postcss-normalize-string@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-timing-functions@4.0.2: @@ -42645,9 +42647,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-timing-functions@7.0.3(postcss@8.5.10): + postcss-normalize-timing-functions@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-unicode@4.0.1: @@ -42656,10 +42658,10 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-unicode@7.0.9(postcss@8.5.10): + postcss-normalize-unicode@7.0.9(postcss@8.5.15): dependencies: browserslist: 4.28.2 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-url@4.0.1: @@ -42669,9 +42671,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-url@7.0.3(postcss@8.5.10): + postcss-normalize-url@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-whitespace@4.0.2: @@ -42679,9 +42681,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-whitespace@7.0.3(postcss@8.5.10): + postcss-normalize-whitespace@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-opacity-percentage@1.1.3(postcss@8.5.15): @@ -42694,10 +42696,10 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-ordered-values@7.0.4(postcss@8.5.10): + postcss-ordered-values@7.0.4(postcss@8.5.15): dependencies: - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-overflow-shorthand@3.0.4(postcss@8.5.15): @@ -42779,11 +42781,11 @@ snapshots: has: 1.0.4 postcss: 7.0.39 - postcss-reduce-initial@7.0.9(postcss@8.5.10): + postcss-reduce-initial@7.0.9(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-api: 3.0.0 - postcss: 8.5.10 + postcss: 8.5.15 postcss-reduce-transforms@4.0.2: dependencies: @@ -42792,19 +42794,19 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-reduce-transforms@7.0.3(postcss@8.5.10): + postcss-reduce-transforms@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-replace-overflow-wrap@4.0.0(postcss@8.5.15): dependencies: postcss: 8.5.15 - postcss-reporter@7.1.0(postcss@8.5.10): + postcss-reporter@7.1.0(postcss@8.5.15): dependencies: picocolors: 1.1.1 - postcss: 8.5.10 + postcss: 8.5.15 thenby: 1.4.1 postcss-selector-not@6.0.1(postcss@8.5.15): @@ -42834,9 +42836,9 @@ snapshots: postcss-value-parser: 3.3.1 svgo: 1.3.2 - postcss-svgo@7.1.3(postcss@8.5.10): + postcss-svgo@7.1.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 svgo: 4.0.1 @@ -42846,9 +42848,9 @@ snapshots: postcss: 7.0.39 uniqs: 2.0.0 - postcss-unique-selectors@7.0.7(postcss@8.5.10): + postcss-unique-selectors@7.0.7(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-value-parser@3.3.1: {} @@ -42872,12 +42874,6 @@ snapshots: picocolors: 0.2.1 source-map: 0.6.1 - postcss@8.5.10: - dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.15: dependencies: nanoid: 3.3.12 @@ -44961,10 +44957,10 @@ snapshots: postcss: 7.0.39 postcss-selector-parser: 3.1.2 - stylehacks@7.0.11(postcss@8.5.10): + stylehacks@7.0.11(postcss@8.5.15): dependencies: browserslist: 4.28.2 - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 stylis@4.2.0: {} @@ -44985,41 +44981,41 @@ snapshots: superagent-throttle@1.0.1: {} - superagent@5.3.1: + superagent@10.3.0: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 debug: 4.4.3(supports-color@5.5.0) fast-safe-stringify: 2.1.1 - form-data: 3.0.4 - formidable: 1.2.6 + form-data: 4.0.5 + formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 qs: 6.15.2 - readable-stream: 3.6.2 - semver: 7.7.4 transitivePeerDependencies: - supports-color - superagent@8.1.2: + superagent@5.3.1: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 debug: 4.4.3(supports-color@5.5.0) fast-safe-stringify: 2.1.1 - form-data: 4.0.5 - formidable: 2.1.5 + form-data: 3.0.4 + formidable: 1.2.6 methods: 1.1.2 mime: 2.6.0 qs: 6.15.2 + readable-stream: 3.6.2 semver: 7.7.4 transitivePeerDependencies: - supports-color - supertest@6.3.4: + supertest@7.2.2: dependencies: + cookie-signature: 1.2.2 methods: 1.1.2 - superagent: 8.1.2 + superagent: 10.3.0 transitivePeerDependencies: - supports-color @@ -45289,18 +45285,18 @@ snapshots: lightningcss: 1.32.0 postcss: 8.5.15 - terser-webpack-plugin@5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)): + terser-webpack-plugin@5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.1 - webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10) + webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15) optionalDependencies: '@swc/core': 1.15.40(@swc/helpers@0.5.21) esbuild: 0.28.0 lightningcss: 1.32.0 - postcss: 8.5.10 + postcss: 8.5.15 optional: true terser@4.8.1: @@ -46571,7 +46567,7 @@ snapshots: - postcss - uglify-js - webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10): + webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -46595,7 +46591,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + terser-webpack-plugin: 5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) watchpack: 2.5.1 webpack-sources: 3.5.0 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e61671d0f5a..681f8df6729 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -27,7 +27,7 @@ allowBuilds: catalog: '@ebay/nice-modal-react': 1.2.13 '@eslint/js': 8.57.1 - '@faker-js/faker': 9.9.0 + '@faker-js/faker': 10.4.0 '@playwright/test': 1.60.0 '@radix-ui/react-avatar': 1.1.11 '@radix-ui/react-checkbox': 1.3.3 @@ -98,7 +98,7 @@ catalog: mocha: 11.7.6 msw: 2.14.6 node-html-markdown: 2.0.0 - postcss: 8.5.10 + postcss: 8.5.15 preact: ^10.29.2 react: 18.3.1 react-dom: 18.3.1 @@ -107,6 +107,7 @@ catalog: sinon: 22.0.0 sonner: 2.0.7 storybook: 10.3.5 + supertest: 7.2.2 tailwindcss: 4.2.2 tsx: 4.21.0 tw-animate-css: 1.4.0