diff --git a/dev/payload-types.ts b/dev/payload-types.ts index e728e92..b4e0a51 100644 --- a/dev/payload-types.ts +++ b/dev/payload-types.ts @@ -88,7 +88,7 @@ export interface Config { 'payload-migrations': PayloadMigrationsSelect | PayloadMigrationsSelect; }; db: { - defaultIDType: string; + defaultIDType: number; }; globals: {}; globalsSelect: {}; @@ -124,7 +124,7 @@ export interface UserAuthOperations { * via the `definition` "posts". */ export interface Post { - id: string; + id: number; title: string; content?: { root: { @@ -151,7 +151,7 @@ export interface Post { * via the `definition` "pages". */ export interface Page { - id: string; + id: number; title: string; slug: string; content?: { @@ -178,7 +178,7 @@ export interface Page { * via the `definition` "users". */ export interface User { - id: string; + id: number; name?: string | null; role?: ('admin' | 'editor' | 'user') | null; updatedAt: string; @@ -190,6 +190,13 @@ export interface User { hash?: string | null; loginAttempts?: number | null; lockUntil?: string | null; + sessions?: + | { + id: string; + createdAt?: string | null; + expiresAt: string; + }[] + | null; password?: string | null; } /** @@ -197,7 +204,7 @@ export interface User { * via the `definition` "media". */ export interface Media { - id: string; + id: number; alt?: string | null; updatedAt: string; createdAt: string; @@ -218,7 +225,7 @@ export interface Media { * via the `definition` "feature-flags". */ export interface FeatureFlag { - id: string; + id: number; /** * Unique identifier for the feature flag */ @@ -291,7 +298,7 @@ export interface FeatureFlag { /** * Team member responsible for this feature flag */ - owner?: (string | null) | User; + owner?: (number | null) | User; /** * Optional expiration date for temporary flags */ @@ -308,32 +315,32 @@ export interface FeatureFlag { * via the `definition` "payload-locked-documents". */ export interface PayloadLockedDocument { - id: string; + id: number; document?: | ({ relationTo: 'posts'; - value: string | Post; + value: number | Post; } | null) | ({ relationTo: 'pages'; - value: string | Page; + value: number | Page; } | null) | ({ relationTo: 'users'; - value: string | User; + value: number | User; } | null) | ({ relationTo: 'media'; - value: string | Media; + value: number | Media; } | null) | ({ relationTo: 'feature-flags'; - value: string | FeatureFlag; + value: number | FeatureFlag; } | null); globalSlug?: string | null; user: { relationTo: 'users'; - value: string | User; + value: number | User; }; updatedAt: string; createdAt: string; @@ -343,10 +350,10 @@ export interface PayloadLockedDocument { * via the `definition` "payload-preferences". */ export interface PayloadPreference { - id: string; + id: number; user: { relationTo: 'users'; - value: string | User; + value: number | User; }; key?: string | null; value?: @@ -366,7 +373,7 @@ export interface PayloadPreference { * via the `definition` "payload-migrations". */ export interface PayloadMigration { - id: string; + id: number; name?: string | null; batch?: number | null; updatedAt: string; @@ -412,6 +419,13 @@ export interface UsersSelect { hash?: T; loginAttempts?: T; lockUntil?: T; + sessions?: + | T + | { + id?: T; + createdAt?: T; + expiresAt?: T; + }; } /** * This interface was referenced by `Config`'s JSON-Schema diff --git a/package.json b/package.json index 7045ebe..0fdad0e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xtr-dev/payload-feature-flags", - "version": "0.0.9", + "version": "0.0.12", "description": "Feature flags plugin for Payload CMS - manage feature toggles, A/B tests, and gradual rollouts", "license": "MIT", "type": "module", @@ -52,13 +52,13 @@ }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", - "@payloadcms/db-mongodb": "3.37.0", - "@payloadcms/db-postgres": "3.37.0", - "@payloadcms/db-sqlite": "3.37.0", + "@payloadcms/db-mongodb": "3.56.0", + "@payloadcms/db-postgres": "3.56.0", + "@payloadcms/db-sqlite": "3.56.0", "@payloadcms/eslint-config": "3.9.0", - "@payloadcms/next": "3.37.0", - "@payloadcms/richtext-lexical": "3.37.0", - "@payloadcms/ui": "3.37.0", + "@payloadcms/next": "3.56.0", + "@payloadcms/richtext-lexical": "3.56.0", + "@payloadcms/ui": "3.56.0", "@playwright/test": "^1.52.0", "@swc-node/register": "1.10.9", "@swc/cli": "0.6.0", @@ -74,7 +74,7 @@ "mongodb-memory-server": "10.1.4", "next": "15.4.4", "open": "^10.1.0", - "payload": "3.37.0", + "payload": "3.56.0", "prettier": "^3.4.2", "qs-esm": "7.0.2", "react": "19.1.0", @@ -87,7 +87,7 @@ "vitest": "^3.1.2" }, "peerDependencies": { - "payload": "^3.37.0" + "payload": "^3.56.0" }, "engines": { "node": "^18.20.2 || >=20.9.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f55ccd..fe9890b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,26 +12,26 @@ importers: specifier: ^3.2.0 version: 3.3.1 '@payloadcms/db-mongodb': - specifier: 3.37.0 - version: 3.37.0(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3)) + specifier: 3.56.0 + version: 3.56.0(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3)) '@payloadcms/db-postgres': - specifier: 3.37.0 - version: 3.37.0(@libsql/client@0.14.0)(@types/react@19.1.8)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react@19.1.0) + specifier: 3.56.0 + version: 3.56.0(@libsql/client@0.14.0)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3)) '@payloadcms/db-sqlite': - specifier: 3.37.0 - version: 3.37.0(@types/pg@8.10.2)(@types/react@19.1.8)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.11.3)(react@19.1.0) + specifier: 3.56.0 + version: 3.56.0(@types/pg@8.10.2)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.16.3) '@payloadcms/eslint-config': specifier: 3.9.0 - version: 3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3)) + version: 3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3)) '@payloadcms/next': - specifier: 3.37.0 - version: 3.37.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) + specifier: 3.56.0 + version: 3.56.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) '@payloadcms/richtext-lexical': - specifier: 3.37.0 - version: 3.37.0(@faceless-ui/modal@3.0.0-beta.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@faceless-ui/scroll-info@2.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@payloadcms/next@3.37.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3))(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)(yjs@13.6.27) + specifier: 3.56.0 + version: 3.56.0(@faceless-ui/modal@3.0.0-beta.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@faceless-ui/scroll-info@2.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@payloadcms/next@3.56.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3))(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)(yjs@13.6.27) '@payloadcms/ui': - specifier: 3.37.0 - version: 3.37.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) + specifier: 3.56.0 + version: 3.56.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) '@playwright/test': specifier: ^1.52.0 version: 1.55.0 @@ -78,8 +78,8 @@ importers: specifier: ^10.1.0 version: 10.2.0 payload: - specifier: 3.37.0 - version: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + specifier: 3.56.0 + version: 3.56.0(graphql@16.11.0)(typescript@5.7.3) prettier: specifier: ^3.4.2 version: 3.6.2 @@ -106,10 +106,10 @@ importers: version: 5.7.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.3)(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2)) + version: 5.1.4(typescript@5.7.3)(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3)) vitest: specifier: ^3.1.2 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3) packages: @@ -208,9 +208,6 @@ packages: '@emotion/cache@11.14.0': resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - '@emotion/css@11.13.5': - resolution: {integrity: sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==} - '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -254,12 +251,6 @@ packages: resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} deprecated: 'Merged into tsx: https://tsx.is' - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.23.1': resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} @@ -278,12 +269,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.23.1': resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} engines: {node: '>=18'} @@ -302,12 +287,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.23.1': resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} engines: {node: '>=18'} @@ -326,12 +305,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.23.1': resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} @@ -350,12 +323,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.23.1': resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} engines: {node: '>=18'} @@ -374,12 +341,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.23.1': resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} @@ -398,12 +359,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} engines: {node: '>=18'} @@ -422,12 +377,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} engines: {node: '>=18'} @@ -446,12 +395,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.23.1': resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} engines: {node: '>=18'} @@ -470,12 +413,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.23.1': resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} engines: {node: '>=18'} @@ -494,12 +431,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.23.1': resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} engines: {node: '>=18'} @@ -518,12 +449,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.23.1': resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} engines: {node: '>=18'} @@ -542,12 +467,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.23.1': resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} engines: {node: '>=18'} @@ -566,12 +485,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.23.1': resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} engines: {node: '>=18'} @@ -590,12 +503,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.23.1': resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} engines: {node: '>=18'} @@ -614,12 +521,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.23.1': resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} engines: {node: '>=18'} @@ -638,12 +539,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.23.1': resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} engines: {node: '>=18'} @@ -668,12 +563,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} @@ -704,12 +593,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} engines: {node: '>=18'} @@ -734,12 +617,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.23.1': resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} @@ -758,12 +635,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.23.1': resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} engines: {node: '>=18'} @@ -782,12 +653,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.23.1': resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} engines: {node: '>=18'} @@ -806,12 +671,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.23.1': resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} @@ -1223,77 +1082,77 @@ packages: '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@lexical/clipboard@0.28.0': - resolution: {integrity: sha512-LYqion+kAwFQJStA37JAEMxTL/m1WlZbotDfM/2WuONmlO0yWxiyRDI18oeCwhBD6LQQd9c3Ccxp9HFwUG1AVw==} + '@lexical/clipboard@0.35.0': + resolution: {integrity: sha512-ko7xSIIiayvDiqjNDX6fgH9RlcM6r9vrrvJYTcfGVBor5httx16lhIi0QJZ4+RNPvGtTjyFv4bwRmsixRRwImg==} - '@lexical/code@0.28.0': - resolution: {integrity: sha512-9LOKSWdRhxqAKRq5yveNC21XKtW4h2rmFNTucwMWZ9vLu9xteOHEwZdO1Qv82PFUmgCpAhg6EntmnZu9xD3K7Q==} + '@lexical/code@0.35.0': + resolution: {integrity: sha512-ox4DZwETQ9IA7+DS6PN8RJNwSAF7RMjL7YTVODIqFZ5tUFIf+5xoCHbz7Fll0Bvixlp12hVH90xnLwTLRGpkKw==} - '@lexical/devtools-core@0.28.0': - resolution: {integrity: sha512-Fk4itAjZ+MqTYXN84aE5RDf+wQX67N5nyo3JVxQTFZGAghx7Ux1xLWHB25zzD0YfjMtJ0NQROAbE3xdecZzxcQ==} + '@lexical/devtools-core@0.35.0': + resolution: {integrity: sha512-C2wwtsMCR6ZTfO0TqpSM17RLJWyfHmifAfCTjFtOJu15p3M6NO/nHYK5Mt7YMQteuS89mOjB4ng8iwoLEZ6QpQ==} peerDependencies: react: '>=17.x' react-dom: '>=17.x' - '@lexical/dragon@0.28.0': - resolution: {integrity: sha512-T6T8YaHnhU863ruuqmRHTLUYa8sfg/ArYcrnNGZGfpvvFTfFjpWb/ELOvOWo8N6Y/4fnSLjQ20aXexVW1KcTBQ==} + '@lexical/dragon@0.35.0': + resolution: {integrity: sha512-SL6mT5pcqrt6hEbJ16vWxip5+r3uvMd0bQV5UUxuk+cxIeuP86iTgRh0HFR7SM2dRTYovL6/tM/O+8QLAUGTIg==} - '@lexical/hashtag@0.28.0': - resolution: {integrity: sha512-zcqX9Qna4lj96bAUfwSQSVEhYQ0O5erSjrIhOVqEgeQ5ubz0EvqnnMbbwNHIb2n6jzSwAvpD/3UZJZtolh+zVg==} + '@lexical/hashtag@0.35.0': + resolution: {integrity: sha512-LYJWzXuO2ZjKsvQwrLkNZiS2TsjwYkKjlDgtugzejquTBQ/o/nfSn/MmVx6EkYLOYizaJemmZbz3IBh+u732FA==} - '@lexical/headless@0.28.0': - resolution: {integrity: sha512-btcaTfw9I/xQ/XYom6iKWgsPecmRawGd/5jOhP7QDtLUp7gxgM7/kiCZFYa8jDJO6j20rXuWTkc81ynVpKvjow==} + '@lexical/headless@0.35.0': + resolution: {integrity: sha512-UPmCqOsdGGC7/8Fkae2ADkTQfxTZOKxNEVKuqPfCkFs4Bag3s4z3V61jE+wYzqyU8eJh4DqZYSHoPzZCj8P9jg==} - '@lexical/history@0.28.0': - resolution: {integrity: sha512-CHzDxaGDn6qCFFhU0YKP1B8sgEb++0Ksqsj6BfDL/6TMxoLNQwRQhP3BUNNXl1kvUhxTQZgk3b9MjJZRaFKG9Q==} + '@lexical/history@0.35.0': + resolution: {integrity: sha512-onjDRLLxGbCfHexSxxrQaDaieIHyV28zCDrbxR5dxTfW8F8PxjuNyuaG0z6o468AXYECmclxkP+P4aT6poHEpQ==} - '@lexical/html@0.28.0': - resolution: {integrity: sha512-ayb0FPxr55Ko99/d9ewbfrApul4L0z+KpU2ZG03im7EvUPVLyIGLx4S0QguMDvQh0Vu+eJ7/EESuonDs5BCe3A==} + '@lexical/html@0.35.0': + resolution: {integrity: sha512-rXGFE5S5rKsg3tVnr1s4iEgOfCApNXGpIFI3T2jGEShaCZ5HLaBY9NVBXnE9Nb49e9bkDkpZ8FZd1qokCbQXbw==} - '@lexical/link@0.28.0': - resolution: {integrity: sha512-T5VKxpOnML5DcXv2lW3Le0vjNlcbdohZjS9f6PAvm6eX8EzBKDpLQCopr1/0KGdlLd1QrzQsykQrdU7ieC4LRg==} + '@lexical/link@0.35.0': + resolution: {integrity: sha512-+0Wx6cBwO8TfdMzpkYFacsmgFh8X1rkiYbq3xoLvk3qV8upYxaMzK1s8Q1cpKmWyI0aZrU6z7fiK4vUqB7+69w==} - '@lexical/list@0.28.0': - resolution: {integrity: sha512-3a8QcZ75n2TLxP+xkSPJ2V15jsysMLMe0YoObG+ew/sioVelIU8GciYsWBo5GgQmwSzJNQJeK5cJ9p1b71z2cg==} + '@lexical/list@0.35.0': + resolution: {integrity: sha512-owsmc8iwgExBX8sFe8fKTiwJVhYULt9hD1RZ/HwfaiEtRZZkINijqReOBnW2mJfRxBzhFSWc4NG3ISB+fHYzqw==} - '@lexical/mark@0.28.0': - resolution: {integrity: sha512-v5PzmTACsJrw3GvNZy2rgPxrNn9InLvLFoKqrSlNhhyvYNIAcuC4KVy00LKLja43Gw/fuB3QwKohYfAtM3yR3g==} + '@lexical/mark@0.35.0': + resolution: {integrity: sha512-W0hwMTAVeexvpk9/+J6n1G/sNkpI/Meq1yeDazahFLLAwXLHtvhIAq2P/klgFknDy1hr8X7rcsQuN/bqKcKHYg==} - '@lexical/markdown@0.28.0': - resolution: {integrity: sha512-F3JXClqN4cjmXYLDK0IztxkbZuqkqS/AVbxnhGvnDYHQ9Gp8l7BonczhOiPwmJCDubJrAACP0L9LCqyt0jDRFw==} + '@lexical/markdown@0.35.0': + resolution: {integrity: sha512-BlNyXZAt4gWidMw0SRWrhBETY1BpPglFBZI7yzfqukFqgXRh7HUQA28OYeI/nsx9pgNob8TiUduUwShqqvOdEA==} - '@lexical/offset@0.28.0': - resolution: {integrity: sha512-/SMDQgBPeWM936t04mtH6UAn3xAjP/meu9q136bcT3S7p7V8ew9JfNp9aznTPTx+2W3brJORAvUow7Xn1fSHmw==} + '@lexical/offset@0.35.0': + resolution: {integrity: sha512-DRE4Df6qYf2XiV6foh6KpGNmGAv2ANqt3oVXpyS6W8hTx3+cUuAA1APhCZmLNuU107um4zmHym7taCu6uXW5Yg==} - '@lexical/overflow@0.28.0': - resolution: {integrity: sha512-ppmhHXEZVicBm05w9EVflzwFavTVNAe4q0bkabWUeW0IoCT3Vg2A3JT7PC9ypmp+mboUD195foFEr1BBSv1Y8Q==} + '@lexical/overflow@0.35.0': + resolution: {integrity: sha512-B25YvnJQTGlZcrNv7b0PJBLWq3tl8sql497OHfYYLem7EOMPKKDGJScJAKM/91D4H/mMAsx5gnA/XgKobriuTg==} - '@lexical/plain-text@0.28.0': - resolution: {integrity: sha512-Jj2dCMDEfRuVetfDKcUes8J5jvAfZrLnILFlHxnu7y+lC+7R/NR403DYb3NJ8H7+lNiH1K15+U2K7ewbjxS6KQ==} + '@lexical/plain-text@0.35.0': + resolution: {integrity: sha512-lwBCUNMJf7Gujp2syVWMpKRahfbTv5Wq+H3HK1Q1gKH1P2IytPRxssCHvexw9iGwprSyghkKBlbF3fGpEdIJvQ==} - '@lexical/react@0.28.0': - resolution: {integrity: sha512-dWPnxrKrbQFjNqExqnaAsV0UEUgw/5M1ZYRWd5FGBGjHqVTCaX2jNHlKLMA68Od0VPIoOX2Zy1TYZ8ZKtsj5Dg==} + '@lexical/react@0.35.0': + resolution: {integrity: sha512-uYAZSqumH8tRymMef+A0f2hQvMwplKK9DXamcefnk3vSNDHHqRWQXpiUo6kD+rKWuQmMbVa5RW4xRQebXEW+1A==} peerDependencies: react: '>=17.x' react-dom: '>=17.x' - '@lexical/rich-text@0.28.0': - resolution: {integrity: sha512-y+vUWI+9uFupIb9UvssKU/DKcT9dFUZuQBu7utFkLadxCNyXQHeRjxzjzmvFiM3DBV0guPUDGu5VS5TPnIA+OA==} + '@lexical/rich-text@0.35.0': + resolution: {integrity: sha512-qEHu8g7vOEzz9GUz1VIUxZBndZRJPh9iJUFI+qTDHj+tQqnd5LCs+G9yz6jgNfiuWWpezTp0i1Vz/udNEuDPKQ==} - '@lexical/selection@0.28.0': - resolution: {integrity: sha512-AJDi67Nsexyejzp4dEQSVoPov4P+FJ0t1v6DxUU+YmcvV56QyJQi6ue0i/xd8unr75ZufzLsAC0cDJJCEI7QDA==} + '@lexical/selection@0.35.0': + resolution: {integrity: sha512-mMtDE7Q0nycXdFTTH/+ta6EBrBwxBB4Tg8QwsGntzQ1Cq//d838dpXpFjJOqHEeVHUqXpiuj+cBG8+bvz/rPRw==} - '@lexical/table@0.28.0': - resolution: {integrity: sha512-HMPCwXdj0sRWdlDzsHcNWRgbeKbEhn3L8LPhFnTq7q61gZ4YW2umdmuvQFKnIBcKq49drTH8cUwZoIwI8+AEEw==} + '@lexical/table@0.35.0': + resolution: {integrity: sha512-9jlTlkVideBKwsEnEkqkdg7A3mije1SvmfiqoYnkl1kKJCLA5iH90ywx327PU0p+bdnURAytWUeZPXaEuEl2OA==} - '@lexical/text@0.28.0': - resolution: {integrity: sha512-PT/A2RZv+ktn7SG/tJkOpGlYE6zjOND59VtRHnV/xciZ+jEJVaqAHtWjhbWibAIZQAkv/O7UouuDqzDaNTSGAA==} + '@lexical/text@0.35.0': + resolution: {integrity: sha512-uaMh46BkysV8hK8wQwp5g/ByZW+2hPDt8ahAErxtf8NuzQem1FHG/f5RTchmFqqUDVHO3qLNTv4AehEGmXv8MA==} - '@lexical/utils@0.28.0': - resolution: {integrity: sha512-Qw00DjkS1nRK7DLSgqJpJ77Ti2AuiOQ6m5eM38YojoWXkVmoxqKAUMaIbVNVKqjFgrQvKFF46sXxIJPbUQkB0w==} + '@lexical/utils@0.35.0': + resolution: {integrity: sha512-2H393EYDnFznYCDFOW3MHiRzwEO5M/UBhtUjvTT+9kc+qhX4U3zc8ixQalo5UmZ5B2nh7L/inXdTFzvSRXtsRA==} - '@lexical/yjs@0.28.0': - resolution: {integrity: sha512-rKHpUEd3nrvMY7ghmOC0AeGSYT7YIviba+JViaOzrCX4/Wtv5C/3Sl7Io12Z9k+s1BKmy7C28bOdQHvRWaD7vQ==} + '@lexical/yjs@0.35.0': + resolution: {integrity: sha512-3DSP7QpmTGYU9bN/yljP0PIao4tNIQtsR4ycauWNSawxs/GQCZtSmAPcLRnCm6qpqsDDjUtKjO/1Ej8FRp0m0w==} peerDependencies: yjs: '>=13.5.22' @@ -1601,25 +1460,25 @@ packages: cpu: [x64] os: [win32] - '@payloadcms/db-mongodb@3.37.0': - resolution: {integrity: sha512-4u4YZZCr5gJtivXptTs6vTNzDl9Lb87+9/Rl6qog8mmCtrjrJGJMUixWoatGClrFL8JctmuEu7CPINNBEDD7qA==} + '@payloadcms/db-mongodb@3.56.0': + resolution: {integrity: sha512-PlN7yLy9kBLNp1ykkx7g1lqDTsOfWKeY+KMhQwHZnFXcyMFvRMLK4dv250Dwp6dwvVh6HDg2s9anttJ1iuY77Q==} peerDependencies: - payload: 3.37.0 + payload: 3.56.0 - '@payloadcms/db-postgres@3.37.0': - resolution: {integrity: sha512-ffEwoBFLPXlscRuYWL395Z2TyLCcYOPFqKHAuCH0RNrpBN7f0XE6HLOK503+BBNKR2T3DFLt8xu/ygMDrM1VDQ==} + '@payloadcms/db-postgres@3.56.0': + resolution: {integrity: sha512-oK7PNhd16Yyr0NAwgTovo1l9cer7hDBX5I02SXIhvmXzQpJBMaOvjUMj1x6rdW1HUpS1dhsmkiYhma7eNos6Nw==} peerDependencies: - payload: 3.37.0 + payload: 3.56.0 - '@payloadcms/db-sqlite@3.37.0': - resolution: {integrity: sha512-RtGX7zqOoddarYic/rbbXXAUjKV2M8FF6U9i8cubRMBZLR9SR1CFVmlFN5jBgoS73OQBb7AoqbY3b6QpbebEhg==} + '@payloadcms/db-sqlite@3.56.0': + resolution: {integrity: sha512-yXVdqPOUYa/Y0ZrsPQhRAF1PzvDAsAmE2u+vwZser17FBf+TNk27evVoPQUqnwPFFqtMNJ4yh8nkEBi1qw3lPw==} peerDependencies: - payload: 3.37.0 + payload: 3.56.0 - '@payloadcms/drizzle@3.37.0': - resolution: {integrity: sha512-HCIqnTSHQILTFaXY2u+bjDwA+UPaNVOku6ZrHo57rdSy8fXQgT9Namf2IPdSeRM9pNBtX+sgHDnRaSowL0YTIA==} + '@payloadcms/drizzle@3.56.0': + resolution: {integrity: sha512-Sptbgbi/3V+eSCJnFQW3M0jqbw3WJf94JNZljj974Fv0hfp+otFcG/6P3+owrJclNdDZJpdu7uVvgEZzbhc5Eg==} peerDependencies: - payload: 3.37.0 + payload: 3.56.0 '@payloadcms/eslint-config@3.9.0': resolution: {integrity: sha512-4St7Ol8zaShcnVEk9AS3nYpKhtBLEsIXFkz94n5c3GsJdnWG0RfibJMZN4px01UXqHFkTJaM3NTggJk1nzx+VA==} @@ -1627,41 +1486,41 @@ packages: '@payloadcms/eslint-plugin@3.9.0': resolution: {integrity: sha512-EEGxhm+8geOHzdxjfRXgcEXxfx8+43ZVW9b6+6DTHrNliP/vsZzXWIDI8lQlxlk6Zc7n15hMBbgcs20F7/GM4A==} - '@payloadcms/graphql@3.37.0': - resolution: {integrity: sha512-Z+fEQR4NoCFGWkR3lTlw+1agsVn2LpxXJyeojORb8ZjZMwI8RlTEMa0llBQF5YeoabQao4Bkg2iG7fC9BZSZSw==} + '@payloadcms/graphql@3.56.0': + resolution: {integrity: sha512-yrwZaOTgfhykqGqofKZisQIt1qpTYQq8J8l3xn1UwCLKbWaJ4uEb29vofXZg3JrTApNIUW2iT1b0cwIeRD5LCQ==} hasBin: true peerDependencies: graphql: ^16.8.1 - payload: 3.37.0 + payload: 3.56.0 - '@payloadcms/next@3.37.0': - resolution: {integrity: sha512-C8jXKA/+C0DBJgQdL9ZNZ/TLFRwpHx10ne9j0tO1zZZsFkhU+/znZPcYYOpnbOfnuI+l3HNQmZ+Hg6fEJzNtiQ==} + '@payloadcms/next@3.56.0': + resolution: {integrity: sha512-C9oa0qCTV23wfZcKW4BEMrrHMjvaLGRikLgV0CRUFDD9gPh9Htff3o4B9OW6Wht/UuaeCtGin4pWNUXS9b8miQ==} engines: {node: ^18.20.2 || >=20.9.0} peerDependencies: graphql: ^16.8.1 next: ^15.2.3 - payload: 3.37.0 + payload: 3.56.0 - '@payloadcms/richtext-lexical@3.37.0': - resolution: {integrity: sha512-AhmrhX29NbBVdiKmzLx4vUyXE9rRcKDOZPJzD4dDN73qGz4lewrLDaUF+A2nyFxCLGBMYXKQNrg3j8YK/3UNaw==} + '@payloadcms/richtext-lexical@3.56.0': + resolution: {integrity: sha512-PENtNUNR2k34YHBAbl1IKt1MCy5/ahyzI4QGTe+six5eSjowWXce5uJF/WOngxlUGl4Qe1v3lF4BtCt1UWD9Pw==} engines: {node: ^18.20.2 || >=20.9.0} peerDependencies: '@faceless-ui/modal': 3.0.0-beta.2 '@faceless-ui/scroll-info': 2.0.0 - '@payloadcms/next': 3.37.0 - payload: 3.37.0 + '@payloadcms/next': 3.56.0 + payload: 3.56.0 react: ^19.0.0 || ^19.0.0-rc-65a56d0e-20241020 react-dom: ^19.0.0 || ^19.0.0-rc-65a56d0e-20241020 - '@payloadcms/translations@3.37.0': - resolution: {integrity: sha512-eFfvyREcyVB8XktSJ8Dazvs57qiKYZCESQcmsTgIwHTKskXwgZNtDXMYMbGQRDlPUgfIGab2uQSRtAnVuM9MaA==} + '@payloadcms/translations@3.56.0': + resolution: {integrity: sha512-4yguZ6boNebG93jtDSn5uz+4URi/EEWx9j+5FXKSg6n/TQPsIthfmhCIA9v6N/nDJFG2ZZKjDU9fgqB4wlnmzQ==} - '@payloadcms/ui@3.37.0': - resolution: {integrity: sha512-zGHYzY8xqeGTIV9UeoDuHS4jPPeL3bFW3fNICQe9A0xgYyMwkBmEjyKF5n/miBYCzBmX0O7ztDtu8kayIDU3yg==} + '@payloadcms/ui@3.56.0': + resolution: {integrity: sha512-Btl2Lm9Py2UvELypTUJF0UFKgZdhVpgAFzKFupMSDN6U0PqsFePqvzJn2i67cu98/HgvxEduWMJAnYhkmFLbWg==} engines: {node: ^18.20.2 || >=20.9.0} peerDependencies: next: ^15.2.3 - payload: 3.37.0 + payload: 3.56.0 react: ^19.0.0 || ^19.0.0-rc-65a56d0e-20241020 react-dom: ^19.0.0 || ^19.0.0-rc-65a56d0e-20241020 @@ -2446,10 +2305,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-writer@2.0.0: - resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} - engines: {node: '>=4'} - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -2534,9 +2389,6 @@ packages: resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} engines: {node: '>=8'} - classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -2606,8 +2458,8 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} - croner@9.0.0: - resolution: {integrity: sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==} + croner@9.1.0: + resolution: {integrity: sha512-p9nwwR4qyT5W996vBZhdvBCnMhicY5ytZkR4D1Xj0wuTDEiMnjwR57Q3RXYY/s0EpX6Ay3vgIcfaR+ewGHsi+g==} engines: {node: '>=18.0'} cross-env@7.0.3: @@ -2745,10 +2597,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -2760,40 +2608,40 @@ packages: dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - drizzle-kit@0.28.0: - resolution: {integrity: sha512-KqI+CS2Ga9GYIrXpxpCDUJJrH/AT/k4UY0Pb4oRgQEGkgN1EdCnqp664cXgwPWjDr5RBtTsjZipw8+8C//K63A==} + drizzle-kit@0.31.4: + resolution: {integrity: sha512-tCPWVZWZqWVx2XUsVpJRnH9Mx0ClVOf5YUHerZ5so1OKSlqww4zy1R5ksEdGRcO3tM3zj0PYN6V48TbQCL1RfA==} hasBin: true - drizzle-orm@0.36.1: - resolution: {integrity: sha512-F4hbimnMEhyWzDowQB4xEuVJJWXLHZYD7FYwvo8RImY+N7pStGqsbfmT95jDbec1s4qKmQbiuxEDZY90LRrfIw==} + drizzle-orm@0.44.2: + resolution: {integrity: sha512-zGAqBzWWkVSFjZpwPOrmCrgO++1kZ5H/rZ4qTGeGOe18iXGVJWf3WPfHOVwFIbmi8kHjfJstC6rJomzGx8g/dQ==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=3' + '@cloudflare/workers-types': '>=4' '@electric-sql/pglite': '>=0.2.0' '@libsql/client': '>=0.10.0' '@libsql/client-wasm': '>=0.10.0' - '@neondatabase/serverless': '>=0.1' + '@neondatabase/serverless': '>=0.10.0' '@op-engineering/op-sqlite': '>=2' '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1' + '@planetscale/database': '>=1.13' '@prisma/client': '*' '@tidbcloud/serverless': '*' '@types/better-sqlite3': '*' '@types/pg': '*' - '@types/react': '>=18' '@types/sql.js': '*' + '@upstash/redis': '>=1.34.7' '@vercel/postgres': '>=0.8.0' '@xata.io/client': '*' better-sqlite3: '>=7' bun-types: '*' - expo-sqlite: '>=13.2.0' + expo-sqlite: '>=14.0.0' + gel: '>=2' knex: '*' kysely: '*' mysql2: '>=2' pg: '>=8' postgres: '>=3' prisma: '*' - react: '>=18' sql.js: '>=1' sqlite3: '>=5' peerDependenciesMeta: @@ -2823,10 +2671,10 @@ packages: optional: true '@types/pg': optional: true - '@types/react': - optional: true '@types/sql.js': optional: true + '@upstash/redis': + optional: true '@vercel/postgres': optional: true '@xata.io/client': @@ -2837,6 +2685,8 @@ packages: optional: true expo-sqlite: optional: true + gel: + optional: true knex: optional: true kysely: @@ -2849,8 +2699,6 @@ packages: optional: true prisma: optional: true - react: - optional: true sql.js: optional: true sqlite3: @@ -2917,11 +2765,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.23.1: resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} engines: {node: '>=18'} @@ -3555,6 +3398,10 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -3825,8 +3672,8 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lexical@0.28.0: - resolution: {integrity: sha512-dLE3O1PZg0TlZxRQo9YDpjCjDUj8zluGyBO9MHdjo21qZmMUNrxQPeCRt8fn2s5l4HKYFQ1YNgl7k1pOJB/vZQ==} + lexical@0.35.0: + resolution: {integrity: sha512-3VuV8xXhh5xJA6tzvfDvE0YBCMkIZUmxtRilJQDDdCgJCc+eut6qAv2qbN+pbqvarqcQqPN1UF+8YvsjmyOZpw==} lib0@0.2.114: resolution: {integrity: sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==} @@ -4032,8 +3879,8 @@ packages: resolution: {integrity: sha512-+oKQ/kc3CX+816oPFRtaF0CN4vNcGKNjpOQe4bHo/21A3pMD+lC7Xz1EX5HP7siCX4iCpVchDMmCOFXVQSGkUg==} engines: {node: '>=16.20.1'} - mongodb@6.12.0: - resolution: {integrity: sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==} + mongodb@6.16.0: + resolution: {integrity: sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==} engines: {node: '>=16.20.1'} peerDependencies: '@aws-sdk/credential-providers': ^3.188.0 @@ -4090,8 +3937,8 @@ packages: resolution: {integrity: sha512-kFxhot+yw9KmpAGSSrF/o+f00aC2uawgNUbhyaM0USS9L7dln1NA77/pLg4lgOaRgXMtfgCENamjqZwIM1Zrig==} engines: {node: '>=4.0.0'} - mongoose@8.9.5: - resolution: {integrity: sha512-SPhOrgBm0nKV3b+IIHGqpUTOmgVL5Z3OO9AwkFEmvOZznXTvplbomstCnPOGAyungtRXE5pJTgKpKcZTdjeESg==} + mongoose@8.15.1: + resolution: {integrity: sha512-RhQ4DzmBi5BNGcS0w4u1vdMRIKcteXTCNzDt1j7XRcdWYBz1MjMjulBhPaeC5jBCHOD1yinuOFTTSOWLLGexWw==} engines: {node: '>=16.20.1'} mpath@0.9.0: @@ -4258,9 +4105,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - packet-reader@1.0.0: - resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4301,8 +4145,8 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} - payload@3.37.0: - resolution: {integrity: sha512-fihg4c/SyuvCAkOFKCwTblkQ9t5fE77nACJ/3BEZlPr8Ikl4AgfkBfc29yZnf+GFiEuaul1j0KYwI3le0wex/g==} + payload@3.56.0: + resolution: {integrity: sha512-eduFJJCyLv1lVuXpryBsNL2b6nFpQjsayNdfKrdDoUIT4sfgwSVgM/9YXHORvkpkC4uKnoLYBu+RSp3lLj7fDg==} engines: {node: ^18.20.2 || >=20.9.0} hasBin: true peerDependencies: @@ -4345,9 +4189,9 @@ packages: resolution: {integrity: sha512-o2XFanIMy/3+mThw69O8d4n1E5zsLhdO+OPqswezu7Z5ekP4hYDqlDjlmOpYMbzY2Br0ufCwJLdDIXeNVwcWFg==} engines: {node: '>=10'} - pg@8.11.3: - resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} - engines: {node: '>= 8.0.0'} + pg@8.16.3: + resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} + engines: {node: '>= 16.0.0'} peerDependencies: pg-native: '>=3.0.1' peerDependenciesMeta: @@ -4510,13 +4354,6 @@ packages: react: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc - react-diff-viewer-continued@4.0.5: - resolution: {integrity: sha512-L43gIPdhHgu1MYdip4vNqAt5s2JLICKe2/RyGUr2ohAxfhYaH1+QZ6vBO0qgo4xGBhE3jmvbOA/swq4/gdS/0g==} - engines: {node: '>= 16'} - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom@19.1.0: resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} peerDependencies: @@ -5065,6 +4902,11 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tsx@4.20.3: + resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} + engines: {node: '>=18.0.0'} + hasBin: true + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -5118,6 +4960,10 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici@7.10.0: + resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} + engines: {node: '>=20.18.1'} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -5496,16 +5342,6 @@ snapshots: '@emotion/weak-memoize': 0.4.0 stylis: 4.2.0 - '@emotion/css@11.13.5': - dependencies: - '@emotion/babel-plugin': 11.13.5 - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - transitivePeerDependencies: - - supports-color - '@emotion/hash@0.9.2': {} '@emotion/memoize@0.9.0': {} @@ -5556,9 +5392,6 @@ snapshots: '@esbuild-kit/core-utils': 3.3.2 get-tsconfig: 4.10.1 - '@esbuild/aix-ppc64@0.19.12': - optional: true - '@esbuild/aix-ppc64@0.23.1': optional: true @@ -5568,9 +5401,6 @@ snapshots: '@esbuild/android-arm64@0.18.20': optional: true - '@esbuild/android-arm64@0.19.12': - optional: true - '@esbuild/android-arm64@0.23.1': optional: true @@ -5580,9 +5410,6 @@ snapshots: '@esbuild/android-arm@0.18.20': optional: true - '@esbuild/android-arm@0.19.12': - optional: true - '@esbuild/android-arm@0.23.1': optional: true @@ -5592,9 +5419,6 @@ snapshots: '@esbuild/android-x64@0.18.20': optional: true - '@esbuild/android-x64@0.19.12': - optional: true - '@esbuild/android-x64@0.23.1': optional: true @@ -5604,9 +5428,6 @@ snapshots: '@esbuild/darwin-arm64@0.18.20': optional: true - '@esbuild/darwin-arm64@0.19.12': - optional: true - '@esbuild/darwin-arm64@0.23.1': optional: true @@ -5616,9 +5437,6 @@ snapshots: '@esbuild/darwin-x64@0.18.20': optional: true - '@esbuild/darwin-x64@0.19.12': - optional: true - '@esbuild/darwin-x64@0.23.1': optional: true @@ -5628,9 +5446,6 @@ snapshots: '@esbuild/freebsd-arm64@0.18.20': optional: true - '@esbuild/freebsd-arm64@0.19.12': - optional: true - '@esbuild/freebsd-arm64@0.23.1': optional: true @@ -5640,9 +5455,6 @@ snapshots: '@esbuild/freebsd-x64@0.18.20': optional: true - '@esbuild/freebsd-x64@0.19.12': - optional: true - '@esbuild/freebsd-x64@0.23.1': optional: true @@ -5652,9 +5464,6 @@ snapshots: '@esbuild/linux-arm64@0.18.20': optional: true - '@esbuild/linux-arm64@0.19.12': - optional: true - '@esbuild/linux-arm64@0.23.1': optional: true @@ -5664,9 +5473,6 @@ snapshots: '@esbuild/linux-arm@0.18.20': optional: true - '@esbuild/linux-arm@0.19.12': - optional: true - '@esbuild/linux-arm@0.23.1': optional: true @@ -5676,9 +5482,6 @@ snapshots: '@esbuild/linux-ia32@0.18.20': optional: true - '@esbuild/linux-ia32@0.19.12': - optional: true - '@esbuild/linux-ia32@0.23.1': optional: true @@ -5688,9 +5491,6 @@ snapshots: '@esbuild/linux-loong64@0.18.20': optional: true - '@esbuild/linux-loong64@0.19.12': - optional: true - '@esbuild/linux-loong64@0.23.1': optional: true @@ -5700,9 +5500,6 @@ snapshots: '@esbuild/linux-mips64el@0.18.20': optional: true - '@esbuild/linux-mips64el@0.19.12': - optional: true - '@esbuild/linux-mips64el@0.23.1': optional: true @@ -5712,9 +5509,6 @@ snapshots: '@esbuild/linux-ppc64@0.18.20': optional: true - '@esbuild/linux-ppc64@0.19.12': - optional: true - '@esbuild/linux-ppc64@0.23.1': optional: true @@ -5724,9 +5518,6 @@ snapshots: '@esbuild/linux-riscv64@0.18.20': optional: true - '@esbuild/linux-riscv64@0.19.12': - optional: true - '@esbuild/linux-riscv64@0.23.1': optional: true @@ -5736,9 +5527,6 @@ snapshots: '@esbuild/linux-s390x@0.18.20': optional: true - '@esbuild/linux-s390x@0.19.12': - optional: true - '@esbuild/linux-s390x@0.23.1': optional: true @@ -5748,9 +5536,6 @@ snapshots: '@esbuild/linux-x64@0.18.20': optional: true - '@esbuild/linux-x64@0.19.12': - optional: true - '@esbuild/linux-x64@0.23.1': optional: true @@ -5763,9 +5548,6 @@ snapshots: '@esbuild/netbsd-x64@0.18.20': optional: true - '@esbuild/netbsd-x64@0.19.12': - optional: true - '@esbuild/netbsd-x64@0.23.1': optional: true @@ -5781,9 +5563,6 @@ snapshots: '@esbuild/openbsd-x64@0.18.20': optional: true - '@esbuild/openbsd-x64@0.19.12': - optional: true - '@esbuild/openbsd-x64@0.23.1': optional: true @@ -5796,9 +5575,6 @@ snapshots: '@esbuild/sunos-x64@0.18.20': optional: true - '@esbuild/sunos-x64@0.19.12': - optional: true - '@esbuild/sunos-x64@0.23.1': optional: true @@ -5808,9 +5584,6 @@ snapshots: '@esbuild/win32-arm64@0.18.20': optional: true - '@esbuild/win32-arm64@0.19.12': - optional: true - '@esbuild/win32-arm64@0.23.1': optional: true @@ -5820,9 +5593,6 @@ snapshots: '@esbuild/win32-ia32@0.18.20': optional: true - '@esbuild/win32-ia32@0.19.12': - optional: true - '@esbuild/win32-ia32@0.23.1': optional: true @@ -5832,9 +5602,6 @@ snapshots: '@esbuild/win32-x64@0.18.20': optional: true - '@esbuild/win32-x64@0.19.12': - optional: true - '@esbuild/win32-x64@0.23.1': optional: true @@ -6255,153 +6022,154 @@ snapshots: '@jsdevtools/ono@7.1.3': {} - '@lexical/clipboard@0.28.0': + '@lexical/clipboard@0.35.0': dependencies: - '@lexical/html': 0.28.0 - '@lexical/list': 0.28.0 - '@lexical/selection': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/html': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/code@0.28.0': + '@lexical/code@0.35.0': dependencies: - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 prismjs: 1.30.0 - '@lexical/devtools-core@0.28.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@lexical/devtools-core@0.35.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@lexical/html': 0.28.0 - '@lexical/link': 0.28.0 - '@lexical/mark': 0.28.0 - '@lexical/table': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/html': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/mark': 0.35.0 + '@lexical/table': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@lexical/dragon@0.28.0': + '@lexical/dragon@0.35.0': dependencies: - lexical: 0.28.0 + lexical: 0.35.0 - '@lexical/hashtag@0.28.0': + '@lexical/hashtag@0.35.0': dependencies: - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/headless@0.28.0': + '@lexical/headless@0.35.0': dependencies: - lexical: 0.28.0 + lexical: 0.35.0 - '@lexical/history@0.28.0': + '@lexical/history@0.35.0': dependencies: - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/html@0.28.0': + '@lexical/html@0.35.0': dependencies: - '@lexical/selection': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/link@0.28.0': + '@lexical/link@0.35.0': dependencies: - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/list@0.28.0': + '@lexical/list@0.35.0': dependencies: - '@lexical/selection': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/mark@0.28.0': + '@lexical/mark@0.35.0': dependencies: - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/markdown@0.28.0': + '@lexical/markdown@0.35.0': dependencies: - '@lexical/code': 0.28.0 - '@lexical/link': 0.28.0 - '@lexical/list': 0.28.0 - '@lexical/rich-text': 0.28.0 - '@lexical/text': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/code': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/rich-text': 0.35.0 + '@lexical/text': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/offset@0.28.0': + '@lexical/offset@0.35.0': dependencies: - lexical: 0.28.0 + lexical: 0.35.0 - '@lexical/overflow@0.28.0': + '@lexical/overflow@0.35.0': dependencies: - lexical: 0.28.0 + lexical: 0.35.0 - '@lexical/plain-text@0.28.0': + '@lexical/plain-text@0.35.0': dependencies: - '@lexical/clipboard': 0.28.0 - '@lexical/selection': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/clipboard': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/react@0.28.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(yjs@13.6.27)': + '@lexical/react@0.35.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(yjs@13.6.27)': dependencies: - '@lexical/devtools-core': 0.28.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@lexical/dragon': 0.28.0 - '@lexical/hashtag': 0.28.0 - '@lexical/history': 0.28.0 - '@lexical/link': 0.28.0 - '@lexical/list': 0.28.0 - '@lexical/mark': 0.28.0 - '@lexical/markdown': 0.28.0 - '@lexical/overflow': 0.28.0 - '@lexical/plain-text': 0.28.0 - '@lexical/rich-text': 0.28.0 - '@lexical/table': 0.28.0 - '@lexical/text': 0.28.0 - '@lexical/utils': 0.28.0 - '@lexical/yjs': 0.28.0(yjs@13.6.27) - lexical: 0.28.0 + '@floating-ui/react': 0.27.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@lexical/devtools-core': 0.35.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@lexical/dragon': 0.35.0 + '@lexical/hashtag': 0.35.0 + '@lexical/history': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/mark': 0.35.0 + '@lexical/markdown': 0.35.0 + '@lexical/overflow': 0.35.0 + '@lexical/plain-text': 0.35.0 + '@lexical/rich-text': 0.35.0 + '@lexical/table': 0.35.0 + '@lexical/text': 0.35.0 + '@lexical/utils': 0.35.0 + '@lexical/yjs': 0.35.0(yjs@13.6.27) + lexical: 0.35.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-error-boundary: 3.1.4(react@19.1.0) transitivePeerDependencies: - yjs - '@lexical/rich-text@0.28.0': + '@lexical/rich-text@0.35.0': dependencies: - '@lexical/clipboard': 0.28.0 - '@lexical/selection': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/clipboard': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/selection@0.28.0': + '@lexical/selection@0.35.0': dependencies: - lexical: 0.28.0 + lexical: 0.35.0 - '@lexical/table@0.28.0': + '@lexical/table@0.35.0': dependencies: - '@lexical/clipboard': 0.28.0 - '@lexical/utils': 0.28.0 - lexical: 0.28.0 + '@lexical/clipboard': 0.35.0 + '@lexical/utils': 0.35.0 + lexical: 0.35.0 - '@lexical/text@0.28.0': + '@lexical/text@0.35.0': dependencies: - lexical: 0.28.0 + lexical: 0.35.0 - '@lexical/utils@0.28.0': + '@lexical/utils@0.35.0': dependencies: - '@lexical/list': 0.28.0 - '@lexical/selection': 0.28.0 - '@lexical/table': 0.28.0 - lexical: 0.28.0 + '@lexical/list': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/table': 0.35.0 + lexical: 0.35.0 - '@lexical/yjs@0.28.0(yjs@13.6.27)': + '@lexical/yjs@0.35.0(yjs@13.6.27)': dependencies: - '@lexical/offset': 0.28.0 - '@lexical/selection': 0.28.0 - lexical: 0.28.0 + '@lexical/offset': 0.35.0 + '@lexical/selection': 0.35.0 + lexical: 0.35.0 yjs: 13.6.27 '@libsql/client@0.14.0': @@ -6637,11 +6405,11 @@ snapshots: '@oxc-resolver/binding-win32-x64-msvc@1.12.0': optional: true - '@payloadcms/db-mongodb@3.37.0(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))': + '@payloadcms/db-mongodb@3.56.0(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))': dependencies: - mongoose: 8.9.5 + mongoose: 8.15.1 mongoose-paginate-v2: 1.8.5 - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) prompts: 2.4.2 uuid: 10.0.0 transitivePeerDependencies: @@ -6654,15 +6422,15 @@ snapshots: - socks - supports-color - '@payloadcms/db-postgres@3.37.0(@libsql/client@0.14.0)(@types/react@19.1.8)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react@19.1.0)': + '@payloadcms/db-postgres@3.56.0(@libsql/client@0.14.0)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))': dependencies: - '@payloadcms/drizzle': 3.37.0(@libsql/client@0.14.0)(@types/pg@8.10.2)(@types/react@19.1.8)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.11.3)(react@19.1.0) + '@payloadcms/drizzle': 3.56.0(@libsql/client@0.14.0)(@types/pg@8.10.2)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.16.3) '@types/pg': 8.10.2 console-table-printer: 2.12.1 - drizzle-kit: 0.28.0 - drizzle-orm: 0.36.1(@libsql/client@0.14.0)(@types/pg@8.10.2)(@types/react@19.1.8)(pg@8.11.3)(react@19.1.0) - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) - pg: 8.11.3 + drizzle-kit: 0.31.4 + drizzle-orm: 0.44.2(@libsql/client@0.14.0)(@types/pg@8.10.2)(pg@8.16.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) + pg: 8.16.3 prompts: 2.4.2 to-snake-case: 1.0.0 uuid: 10.0.0 @@ -6679,32 +6447,32 @@ snapshots: - '@prisma/client' - '@tidbcloud/serverless' - '@types/better-sqlite3' - - '@types/react' - '@types/sql.js' + - '@upstash/redis' - '@vercel/postgres' - '@xata.io/client' - better-sqlite3 - bun-types - expo-sqlite + - gel - knex - kysely - mysql2 - pg-native - postgres - prisma - - react - sql.js - sqlite3 - supports-color - '@payloadcms/db-sqlite@3.37.0(@types/pg@8.10.2)(@types/react@19.1.8)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.11.3)(react@19.1.0)': + '@payloadcms/db-sqlite@3.56.0(@types/pg@8.10.2)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.16.3)': dependencies: '@libsql/client': 0.14.0 - '@payloadcms/drizzle': 3.37.0(@libsql/client@0.14.0)(@types/pg@8.10.2)(@types/react@19.1.8)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.11.3)(react@19.1.0) + '@payloadcms/drizzle': 3.56.0(@libsql/client@0.14.0)(@types/pg@8.10.2)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.16.3) console-table-printer: 2.12.1 - drizzle-kit: 0.28.0 - drizzle-orm: 0.36.1(@libsql/client@0.14.0)(@types/pg@8.10.2)(@types/react@19.1.8)(pg@8.11.3)(react@19.1.0) - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + drizzle-kit: 0.31.4 + drizzle-orm: 0.44.2(@libsql/client@0.14.0)(@types/pg@8.10.2)(pg@8.16.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) prompts: 2.4.2 to-snake-case: 1.0.0 uuid: 9.0.0 @@ -6721,31 +6489,32 @@ snapshots: - '@tidbcloud/serverless' - '@types/better-sqlite3' - '@types/pg' - - '@types/react' - '@types/sql.js' + - '@upstash/redis' - '@vercel/postgres' - '@xata.io/client' - better-sqlite3 - bufferutil - bun-types - expo-sqlite + - gel - knex - kysely - mysql2 - pg - postgres - prisma - - react - sql.js - sqlite3 - supports-color - utf-8-validate - '@payloadcms/drizzle@3.37.0(@libsql/client@0.14.0)(@types/pg@8.10.2)(@types/react@19.1.8)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.11.3)(react@19.1.0)': + '@payloadcms/drizzle@3.56.0(@libsql/client@0.14.0)(@types/pg@8.10.2)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(pg@8.16.3)': dependencies: console-table-printer: 2.12.1 - drizzle-orm: 0.36.1(@libsql/client@0.14.0)(@types/pg@8.10.2)(@types/react@19.1.8)(pg@8.11.3)(react@19.1.0) - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + dequal: 2.0.3 + drizzle-orm: 0.44.2(@libsql/client@0.14.0)(@types/pg@8.10.2)(pg@8.16.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) prompts: 2.4.2 to-snake-case: 1.0.0 uuid: 9.0.0 @@ -6763,35 +6532,35 @@ snapshots: - '@tidbcloud/serverless' - '@types/better-sqlite3' - '@types/pg' - - '@types/react' - '@types/sql.js' + - '@upstash/redis' - '@vercel/postgres' - '@xata.io/client' - better-sqlite3 - bun-types - expo-sqlite + - gel - knex - kysely - mysql2 - pg - postgres - prisma - - react - sql.js - sqlite3 - '@payloadcms/eslint-config@3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))': + '@payloadcms/eslint-config@3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))': dependencies: '@eslint-react/eslint-plugin': 1.16.1(eslint@9.14.0)(typescript@5.7.2) '@eslint/js': 9.14.0 - '@payloadcms/eslint-plugin': 3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3)) + '@payloadcms/eslint-plugin': 3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3)) '@types/eslint': 9.6.1 '@types/eslint__js': 8.42.3 '@typescript-eslint/parser': 8.14.0(eslint@9.14.0)(typescript@5.7.2) eslint: 9.14.0 eslint-config-prettier: 9.1.0(eslint@9.14.0) eslint-plugin-import-x: 4.4.2(eslint@9.14.0)(typescript@5.7.2) - eslint-plugin-jest: 28.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2) + eslint-plugin-jest: 28.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2) eslint-plugin-jest-dom: 5.4.0(eslint@9.14.0) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.14.0) eslint-plugin-perfectionist: 3.9.1(eslint@9.14.0)(typescript@5.7.2) @@ -6811,7 +6580,7 @@ snapshots: - svelte-eslint-parser - vue-eslint-parser - '@payloadcms/eslint-plugin@3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))': + '@payloadcms/eslint-plugin@3.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))': dependencies: '@eslint-react/eslint-plugin': 1.16.1(eslint@9.14.0)(typescript@5.7.2) '@eslint/js': 9.14.0 @@ -6821,7 +6590,7 @@ snapshots: eslint: 9.14.0 eslint-config-prettier: 9.1.0(eslint@9.14.0) eslint-plugin-import-x: 4.4.2(eslint@9.14.0)(typescript@5.7.2) - eslint-plugin-jest: 28.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2) + eslint-plugin-jest: 28.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2) eslint-plugin-jest-dom: 5.4.0(eslint@9.14.0) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.14.0) eslint-plugin-perfectionist: 3.9.1(eslint@9.14.0)(typescript@5.7.2) @@ -6841,23 +6610,23 @@ snapshots: - svelte-eslint-parser - vue-eslint-parser - '@payloadcms/graphql@3.37.0(graphql@16.11.0)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(typescript@5.7.3)': + '@payloadcms/graphql@3.56.0(graphql@16.11.0)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(typescript@5.7.3)': dependencies: graphql: 16.11.0 graphql-scalars: 1.22.2(graphql@16.11.0) - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) pluralize: 8.0.0 ts-essentials: 10.0.3(typescript@5.7.3) tsx: 4.19.2 transitivePeerDependencies: - typescript - '@payloadcms/next@3.37.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)': + '@payloadcms/next@3.56.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)': dependencies: '@dnd-kit/core': 6.0.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@payloadcms/graphql': 3.37.0(graphql@16.11.0)(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(typescript@5.7.3) - '@payloadcms/translations': 3.37.0 - '@payloadcms/ui': 3.37.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) + '@payloadcms/graphql': 3.56.0(graphql@16.11.0)(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(typescript@5.7.3) + '@payloadcms/translations': 3.56.0 + '@payloadcms/ui': 3.56.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) busboy: 1.6.0 dequal: 2.0.3 file-type: 19.3.0 @@ -6867,9 +6636,8 @@ snapshots: http-status: 2.1.0 next: 15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4) path-to-regexp: 6.3.0 - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) qs-esm: 7.0.2 - react-diff-viewer-continued: 4.0.5(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) sass: 1.77.4 uuid: 10.0.0 transitivePeerDependencies: @@ -6880,34 +6648,35 @@ snapshots: - supports-color - typescript - '@payloadcms/richtext-lexical@3.37.0(@faceless-ui/modal@3.0.0-beta.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@faceless-ui/scroll-info@2.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@payloadcms/next@3.37.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3))(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)(yjs@13.6.27)': + '@payloadcms/richtext-lexical@3.56.0(@faceless-ui/modal@3.0.0-beta.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@faceless-ui/scroll-info@2.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@payloadcms/next@3.56.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3))(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)(yjs@13.6.27)': dependencies: '@faceless-ui/modal': 3.0.0-beta.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@faceless-ui/scroll-info': 2.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@lexical/headless': 0.28.0 - '@lexical/html': 0.28.0 - '@lexical/link': 0.28.0 - '@lexical/list': 0.28.0 - '@lexical/mark': 0.28.0 - '@lexical/react': 0.28.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(yjs@13.6.27) - '@lexical/rich-text': 0.28.0 - '@lexical/selection': 0.28.0 - '@lexical/table': 0.28.0 - '@lexical/utils': 0.28.0 - '@payloadcms/next': 3.37.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) - '@payloadcms/translations': 3.37.0 - '@payloadcms/ui': 3.37.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) + '@lexical/headless': 0.35.0 + '@lexical/html': 0.35.0 + '@lexical/link': 0.35.0 + '@lexical/list': 0.35.0 + '@lexical/mark': 0.35.0 + '@lexical/react': 0.35.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(yjs@13.6.27) + '@lexical/rich-text': 0.35.0 + '@lexical/selection': 0.35.0 + '@lexical/table': 0.35.0 + '@lexical/utils': 0.35.0 + '@payloadcms/next': 3.56.0(@types/react@19.1.8)(graphql@16.11.0)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) + '@payloadcms/translations': 3.56.0 + '@payloadcms/ui': 3.56.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3) '@types/uuid': 10.0.0 acorn: 8.12.1 bson-objectid: 2.0.4 + csstype: 3.1.3 dequal: 2.0.3 escape-html: 1.0.3 jsox: 1.2.121 - lexical: 0.28.0 + lexical: 0.35.0 mdast-util-from-markdown: 2.0.2 mdast-util-mdx-jsx: 3.1.3 micromark-extension-mdx-jsx: 3.0.1 - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) qs-esm: 7.0.2 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -6922,27 +6691,28 @@ snapshots: - typescript - yjs - '@payloadcms/translations@3.37.0': + '@payloadcms/translations@3.56.0': dependencies: date-fns: 4.1.0 - '@payloadcms/ui@3.37.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.37.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)': + '@payloadcms/ui@3.56.0(@types/react@19.1.8)(monaco-editor@0.53.0)(next@15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4))(payload@3.56.0(graphql@16.11.0)(typescript@5.7.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.3)': dependencies: '@date-fns/tz': 1.2.0 '@dnd-kit/core': 6.0.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.0.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + '@dnd-kit/utilities': 3.2.2(react@19.1.0) '@faceless-ui/modal': 3.0.0-beta.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@faceless-ui/scroll-info': 2.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@faceless-ui/window-info': 3.0.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@monaco-editor/react': 4.7.0(monaco-editor@0.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@payloadcms/translations': 3.37.0 + '@payloadcms/translations': 3.56.0 bson-objectid: 2.0.4 date-fns: 4.1.0 dequal: 2.0.3 md5: 2.3.0 next: 15.4.4(@playwright/test@1.55.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.77.4) object-to-formdata: 4.5.1 - payload: 3.37.0(graphql@16.11.0)(typescript@5.7.3) + payload: 3.56.0(graphql@16.11.0)(typescript@5.7.3) qs-esm: 7.0.2 react: 19.1.0 react-datepicker: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7242,7 +7012,7 @@ snapshots: dependencies: '@types/node': 22.18.1 - '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0)(typescript@5.7.2))(eslint@9.14.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 8.14.0(eslint@9.14.0)(typescript@5.7.2) @@ -7260,24 +7030,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.14.0(eslint@9.14.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.43.0 - eslint: 9.35.0 - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - optional: true - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -7553,13 +7305,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2))': + '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2) + vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3) '@vitest/pretty-format@3.2.4': dependencies: @@ -7857,8 +7609,6 @@ snapshots: buffer-from@1.1.2: {} - buffer-writer@2.0.0: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -7950,8 +7700,6 @@ snapshots: ci-info@4.3.0: {} - classnames@2.5.1: {} - client-only@0.0.1: {} cliui@7.0.4: @@ -8022,7 +7770,7 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - croner@9.0.0: {} + croner@9.1.0: {} cross-env@7.0.3: dependencies: @@ -8131,8 +7879,6 @@ snapshots: dependencies: dequal: 2.0.3 - diff@5.2.0: {} - doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -8146,22 +7892,20 @@ snapshots: '@babel/runtime': 7.28.4 csstype: 3.1.3 - drizzle-kit@0.28.0: + drizzle-kit@0.31.4: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 - esbuild: 0.19.12 - esbuild-register: 3.6.0(esbuild@0.19.12) + esbuild: 0.25.9 + esbuild-register: 3.6.0(esbuild@0.25.9) transitivePeerDependencies: - supports-color - drizzle-orm@0.36.1(@libsql/client@0.14.0)(@types/pg@8.10.2)(@types/react@19.1.8)(pg@8.11.3)(react@19.1.0): + drizzle-orm@0.44.2(@libsql/client@0.14.0)(@types/pg@8.10.2)(pg@8.16.3): optionalDependencies: '@libsql/client': 0.14.0 '@types/pg': 8.10.2 - '@types/react': 19.1.8 - pg: 8.11.3 - react: 19.1.0 + pg: 8.16.3 dunder-proto@1.0.1: dependencies: @@ -8284,10 +8028,10 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild-register@3.6.0(esbuild@0.19.12): + esbuild-register@3.6.0(esbuild@0.25.9): dependencies: debug: 4.4.1 - esbuild: 0.19.12 + esbuild: 0.25.9 transitivePeerDependencies: - supports-color @@ -8316,32 +8060,6 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - esbuild@0.23.1: optionalDependencies: '@esbuild/aix-ppc64': 0.23.1 @@ -8412,8 +8130,8 @@ snapshots: '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.7.3) eslint: 9.35.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0)(eslint@9.35.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0))(eslint@9.35.0) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.35.0) eslint-plugin-react: 7.37.5(eslint@9.35.0) eslint-plugin-react-hooks: 5.2.0(eslint@9.35.0) @@ -8436,7 +8154,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0)(eslint@9.35.0): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 @@ -8447,19 +8165,19 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0))(eslint@9.35.0) eslint-plugin-import-x: 4.4.2(eslint@9.35.0)(typescript@5.7.3) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0))(eslint@9.35.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.7.3) eslint: 9.35.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0)(eslint@9.35.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0) transitivePeerDependencies: - supports-color @@ -8498,7 +8216,7 @@ snapshots: - typescript optional: true - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0))(eslint@9.35.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -8509,7 +8227,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.35.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.35.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.4.2(eslint@9.35.0)(typescript@5.7.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0))(eslint@9.35.0))(eslint@9.35.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -8521,7 +8239,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.14.0(eslint@9.14.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -8533,12 +8251,12 @@ snapshots: eslint: 9.14.0 requireindex: 1.2.0 - eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2): + eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2): dependencies: '@typescript-eslint/utils': 8.43.0(eslint@9.14.0)(typescript@5.7.2) eslint: 9.14.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.35.0)(typescript@5.7.3) transitivePeerDependencies: - supports-color - typescript @@ -9221,6 +8939,8 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 + ipaddr.js@2.2.0: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -9474,7 +9194,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lexical@0.28.0: {} + lexical@0.35.0: {} lib0@0.2.114: dependencies: @@ -9839,7 +9559,7 @@ snapshots: - socks - supports-color - mongodb@6.12.0: + mongodb@6.16.0: dependencies: '@mongodb-js/saslprep': 1.3.0 bson: 6.10.4 @@ -9853,11 +9573,11 @@ snapshots: mongoose-paginate-v2@1.8.5: {} - mongoose@8.9.5: + mongoose@8.15.1: dependencies: bson: 6.10.4 kareem: 2.6.3 - mongodb: 6.12.0 + mongodb: 6.16.0 mpath: 0.9.0 mquery: 5.0.0 ms: 2.1.3 @@ -10054,8 +9774,6 @@ snapshots: p-try@2.2.0: {} - packet-reader@1.0.0: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -10093,17 +9811,17 @@ snapshots: pathval@2.0.1: {} - payload@3.37.0(graphql@16.11.0)(typescript@5.7.3): + payload@3.56.0(graphql@16.11.0)(typescript@5.7.3): dependencies: '@next/env': 15.5.3 - '@payloadcms/translations': 3.37.0 + '@payloadcms/translations': 3.56.0 '@types/busboy': 1.5.4 ajv: 8.17.1 bson-objectid: 2.0.4 busboy: 1.6.0 ci-info: 4.3.0 console-table-printer: 2.12.1 - croner: 9.0.0 + croner: 9.1.0 dataloader: 2.2.3 deepmerge: 4.3.1 file-type: 19.3.0 @@ -10111,6 +9829,7 @@ snapshots: graphql: 16.11.0 http-status: 2.1.0 image-size: 2.0.2 + ipaddr.js: 2.2.0 jose: 5.9.6 json-schema-to-typescript: 15.0.3 minimist: 1.2.8 @@ -10122,7 +9841,8 @@ snapshots: sanitize-filename: 1.6.3 scmp: 2.1.0 ts-essentials: 10.0.3(typescript@5.7.3) - tsx: 4.19.2 + tsx: 4.20.3 + undici: 7.10.0 uuid: 10.0.0 ws: 8.18.3 transitivePeerDependencies: @@ -10143,9 +9863,9 @@ snapshots: pg-numeric@1.0.2: {} - pg-pool@3.10.1(pg@8.11.3): + pg-pool@3.10.1(pg@8.16.3): dependencies: - pg: 8.11.3 + pg: 8.16.3 pg-protocol@1.10.3: {} @@ -10167,12 +9887,10 @@ snapshots: postgres-interval: 3.0.0 postgres-range: 1.1.4 - pg@8.11.3: + pg@8.16.3: dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 pg-connection-string: 2.9.1 - pg-pool: 3.10.1(pg@8.11.3) + pg-pool: 3.10.1(pg@8.16.3) pg-protocol: 1.10.3 pg-types: 2.2.0 pgpass: 1.0.5 @@ -10327,19 +10045,6 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-diff-viewer-continued@4.0.5(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): - dependencies: - '@emotion/css': 11.13.5 - '@emotion/react': 11.14.0(@types/react@19.1.8)(react@19.1.0) - classnames: 2.5.1 - diff: 5.2.0 - memoize-one: 6.0.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - transitivePeerDependencies: - - '@types/react' - - supports-color - react-dom@19.1.0(react@19.1.0): dependencies: react: 19.1.0 @@ -10999,7 +10704,14 @@ snapshots: tsx@4.19.2: dependencies: esbuild: 0.23.1 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + + tsx@4.20.3: + dependencies: + esbuild: 0.25.9 + get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 @@ -11042,7 +10754,7 @@ snapshots: typescript-eslint@8.14.0(eslint@9.14.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.35.0)(typescript@5.7.3))(eslint@9.14.0)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.14.0)(typescript@5.7.2))(eslint@9.14.0)(typescript@5.7.2) '@typescript-eslint/parser': 8.14.0(eslint@9.14.0)(typescript@5.7.2) '@typescript-eslint/utils': 8.14.0(eslint@9.14.0)(typescript@5.7.2) optionalDependencies: @@ -11071,6 +10783,8 @@ snapshots: undici-types@6.21.0: {} + undici@7.10.0: {} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 @@ -11148,13 +10862,13 @@ snapshots: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 - vite-node@3.2.4(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2): + vite-node@3.2.4(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2) + vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3) transitivePeerDependencies: - '@types/node' - jiti @@ -11169,18 +10883,18 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3)): dependencies: debug: 4.4.1 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.7.3) optionalDependencies: - vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2) + vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3) transitivePeerDependencies: - supports-color - typescript - vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2): + vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -11192,13 +10906,13 @@ snapshots: '@types/node': 22.18.1 fsevents: 2.3.3 sass: 1.77.4 - tsx: 4.19.2 + tsx: 4.20.3 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2)) + '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -11216,8 +10930,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2) - vite-node: 3.2.4(@types/node@22.18.1)(sass@1.77.4)(tsx@4.19.2) + vite: 7.1.5(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3) + vite-node: 3.2.4(@types/node@22.18.1)(sass@1.77.4)(tsx@4.20.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 diff --git a/src/exports/views.ts b/src/exports/views.ts index 473bec0..c3e68e6 100644 --- a/src/exports/views.ts +++ b/src/exports/views.ts @@ -1,2 +1,2 @@ // Custom admin views -export { FeatureFlagsView } from '../views/FeatureFlagsView.js' \ No newline at end of file +export { default as FeatureFlagsView } from '../views/FeatureFlagsView.js' \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 3d83577..3b03e47 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,9 @@ export type CollectionOverrides = Partial< fields?: (args: { defaultFields: Field[] }) => Field[] } +// Export shared types for users of the plugin +export type { PayloadID, FeatureFlag } from './types/index.js' + export type PayloadFeatureFlagsConfig = { /** * Enable/disable the plugin diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..85c5f11 --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,24 @@ +// Shared types for the feature flags plugin + +// Helper type for flexible ID handling - supports both string and number IDs +// This allows the plugin to work with different Payload ID configurations +export type PayloadID = string | number + +// Common interface for feature flags used across the plugin +export interface FeatureFlag { + id: PayloadID + name: string + description?: string + enabled: boolean + rolloutPercentage?: number + variants?: Array<{ + name: string + weight: number + metadata?: any + }> + environment?: 'development' | 'staging' | 'production' + tags?: Array<{ tag: string }> + metadata?: any + createdAt: string + updatedAt: string +} \ No newline at end of file diff --git a/src/views/FeatureFlagsClient.tsx b/src/views/FeatureFlagsClient.tsx new file mode 100644 index 0000000..36c4590 --- /dev/null +++ b/src/views/FeatureFlagsClient.tsx @@ -0,0 +1,667 @@ +'use client' +import { useState, useEffect, useCallback, useMemo, memo } from 'react' +import { + useConfig, + useTheme +} from '@payloadcms/ui' +import type { PayloadID, FeatureFlag } from '../types/index.js' + +// Simple debounce hook +function useDebounce(value: T, delay: number): T { + const [debouncedValue, setDebouncedValue] = useState(value) + + useEffect(() => { + const handler = setTimeout(() => { + setDebouncedValue(value) + }, delay) + + return () => { + clearTimeout(handler) + } + }, [value, delay]) + + return debouncedValue +} + +interface FeatureFlagsClientProps { + initialFlags?: FeatureFlag[] + canUpdate?: boolean + maxFlags?: number // Configurable limit for API requests + collectionSlug?: string // Configurable collection slug for URLs +} + +const FeatureFlagsClientComponent = ({ + initialFlags = [], + canUpdate = true, + maxFlags = 100, + collectionSlug = 'feature-flags' +}: FeatureFlagsClientProps) => { + const { config } = useConfig() + const { theme } = useTheme() + const [flags, setFlags] = useState(initialFlags) + const [loading, setLoading] = useState(false) + const [error, setError] = useState('') + const [search, setSearch] = useState('') + const [sortField, setSortField] = useState<'name' | 'enabled' | 'rolloutPercentage' | 'updatedAt'>('name') + const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc') + const [saving, setSaving] = useState(null) + const [successMessage, setSuccessMessage] = useState('') + + // Debounce search to reduce re-renders + const debouncedSearch = useDebounce(search, 300) + + const fetchFlags = useCallback(async (signal?: AbortSignal) => { + try { + setLoading(true) + setError('') + + // Use configurable limit, capped at 1000 for performance + const limit = Math.min(1000, maxFlags) + const response = await fetch(`${config.serverURL}${config.routes.api}/${collectionSlug}?limit=${limit}`, { + credentials: 'include', + signal, + }) + + if (!response.ok) { + throw new Error(`Failed to fetch feature flags: ${response.statusText}`) + } + + const result = await response.json() + + // Extract docs array from Payload API response and filter out null/invalid entries + const flagsArray = (result.docs || []).filter((flag: any) => flag && flag.id && flag.name) + + // Only update state if the component is still mounted (signal not aborted) + if (!signal?.aborted) { + setFlags(flagsArray as FeatureFlag[]) + } + } catch (err) { + // Don't show error if request was aborted (component unmounting) + if (err instanceof Error && err.name === 'AbortError') { + return + } + console.error('Error fetching feature flags:', err) + if (!signal?.aborted) { + setError(err instanceof Error ? err.message : 'Failed to fetch feature flags') + } + } finally { + if (!signal?.aborted) { + setLoading(false) + } + } + }, [config.serverURL, config.routes.api, collectionSlug, maxFlags]) + + useEffect(() => { + const abortController = new AbortController() + + const loadFlags = async () => { + await fetchFlags(abortController.signal) + } + + loadFlags() + + return () => { + abortController.abort() + } + }, [fetchFlags]) // Re-fetch if fetchFlags function changes + + const updateFlag = useCallback(async (flagId: PayloadID, updates: Partial) => { + // Security check: Don't allow updates if user doesn't have permission + if (!canUpdate) { + setError('You do not have permission to update feature flags') + setTimeout(() => setError(''), 5000) + return + } + + setSaving(flagId) + setError('') + setSuccessMessage('') + + try { + const response = await fetch(`${config.serverURL}${config.routes.api}/${collectionSlug}/${flagId}`, { + method: 'PATCH', + credentials: 'include', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(updates), + }) + + if (!response.ok) { + if (response.status === 403) { + throw new Error('Access denied: You do not have permission to update this feature flag') + } + if (response.status === 401) { + throw new Error('Authentication required: Please log in again') + } + throw new Error(`Failed to update feature flag: ${response.statusText}`) + } + + const updatedFlag = await response.json() + + // Update local state - merge only the specific updates we sent + setFlags(prev => prev.map(flag => + flag.id === flagId ? { ...flag, ...updates, updatedAt: updatedFlag.updatedAt || new Date().toISOString() } : flag + )) + + setSuccessMessage('โœ“ Saved') + setTimeout(() => setSuccessMessage(''), 2000) + } catch (err) { + console.error('Error updating feature flag:', err) + setError(err instanceof Error ? err.message : 'Failed to update feature flag') + setTimeout(() => setError(''), 5000) + } finally { + setSaving(null) + } + }, [config.serverURL, config.routes.api, canUpdate, collectionSlug]) + + const handleSort = useCallback((field: typeof sortField) => { + if (sortField === field) { + setSortDirection(prev => prev === 'asc' ? 'desc' : 'asc') + } else { + setSortField(field) + setSortDirection('asc') + } + }, [sortField]) + + const filteredAndSortedFlags = useMemo(() => { + // Filter out null/undefined entries first + let filtered = flags.filter(flag => flag && flag.name) + + // Filter by debounced search + if (debouncedSearch) { + const searchLower = debouncedSearch.toLowerCase() + filtered = filtered.filter(flag => + flag.name?.toLowerCase().includes(searchLower) || + flag.description?.toLowerCase().includes(searchLower) || + flag.tags?.some(t => t.tag?.toLowerCase().includes(searchLower)) + ) + } + + // Sort + filtered.sort((a, b) => { + let aVal: any = a[sortField] + let bVal: any = b[sortField] + + if (sortField === 'updatedAt') { + aVal = new Date(aVal || 0).getTime() + bVal = new Date(bVal || 0).getTime() + } + + if (aVal < bVal) return sortDirection === 'asc' ? -1 : 1 + if (aVal > bVal) return sortDirection === 'asc' ? 1 : -1 + return 0 + }) + + return filtered + }, [flags, debouncedSearch, sortField, sortDirection]) + + const SortIcon = ({ field }: { field: typeof sortField }) => { + if (sortField !== field) { + return โ‡… + } + return {sortDirection === 'asc' ? 'โ†‘' : 'โ†“'} + } + + // Theme-aware styles + const getThemeStyles = () => ({ + background: 'var(--theme-bg)', + surface: 'var(--theme-elevation-50)', + surfaceHover: 'var(--theme-elevation-100)', + border: 'var(--theme-elevation-150)', + text: 'var(--theme-text)', + textMuted: 'var(--theme-text-400)', + textSubdued: 'var(--theme-text-600)', + primary: 'var(--theme-success-500)', + warning: 'var(--theme-warning-500)', + error: 'var(--theme-error-500)', + info: 'var(--theme-info-500)', + inputBg: 'var(--theme-elevation-0)', + inputBorder: 'var(--theme-elevation-250)', + headerBg: 'var(--theme-elevation-100)', + }) + + const styles = getThemeStyles() + + return ( +
+ {/* Header */} +
+

+ Feature Flags Dashboard +

+

+ Manage all feature flags in a spreadsheet view with inline editing capabilities +

+ {!canUpdate && ( +
+ Read-Only Access: You can view feature flags but cannot edit them. Contact your administrator to request update permissions. +
+ )} +
+ + {loading ? ( +
+
Loading feature flags...
+
+ ) : ( + <> + {/* Success/Error Messages */} + {successMessage && ( +
+ {successMessage} +
+ )} + + {error && ( +
+ Error: {error} +
+ )} + + {/* Controls */} +
+ setSearch(e.target.value)} + style={{ + padding: '0.5rem 1rem', + border: `1px solid ${styles.inputBorder}`, + borderRadius: '0.5rem', + fontSize: '0.875rem', + width: '300px', + backgroundColor: styles.inputBg, + color: styles.text + }} + /> + +
+
+ {filteredAndSortedFlags.length} of {flags.filter(f => f && f.name).length} flags +
+ +
+
+ + {/* Spreadsheet Table */} +
+
+ + + + + + + + + + + + + + + {filteredAndSortedFlags.length === 0 ? ( + + + + ) : ( + filteredAndSortedFlags.map(flag => ( + e.currentTarget.style.backgroundColor = styles.surfaceHover} + onMouseLeave={(e) => e.currentTarget.style.backgroundColor = ''} + > + + + + + + + + + + )) + )} + +
+ Status + handleSort('name')} + style={{ + padding: '0.75rem 1rem', + textAlign: 'left', + fontWeight: '600', + color: styles.text, + borderBottom: `1px solid ${styles.border}`, + cursor: 'pointer', + minWidth: '200px', + userSelect: 'none' + }} + > + Name + + Description + handleSort('enabled')} + style={{ + padding: '0.75rem 1rem', + textAlign: 'center', + fontWeight: '600', + color: styles.text, + borderBottom: `1px solid ${styles.border}`, + cursor: 'pointer', + minWidth: '80px', + userSelect: 'none' + }} + > + Enabled + handleSort('rolloutPercentage')} + style={{ + padding: '0.75rem 1rem', + textAlign: 'center', + fontWeight: '600', + color: styles.text, + borderBottom: `1px solid ${styles.border}`, + cursor: 'pointer', + minWidth: '120px', + userSelect: 'none' + }} + > + Rollout % + + Variants + + Tags + handleSort('updatedAt')} + style={{ + padding: '0.75rem 1rem', + textAlign: 'left', + fontWeight: '600', + color: styles.text, + borderBottom: `1px solid ${styles.border}`, + cursor: 'pointer', + minWidth: '150px', + userSelect: 'none' + }} + > + Last Updated +
+ {debouncedSearch ? 'No flags match your search' : 'No feature flags yet'} +
+
+
+ e.currentTarget.style.textDecoration = 'underline'} + onMouseLeave={(e) => e.currentTarget.style.textDecoration = 'none'} + > + {flag.name} + + + {flag.description || '-'} + + updateFlag(flag.id, { enabled: e.target.checked })} + disabled={!canUpdate || saving === flag.id} + style={{ + width: '18px', + height: '18px', + cursor: (!canUpdate || saving === flag.id) ? 'not-allowed' : 'pointer', + accentColor: styles.primary, + opacity: canUpdate ? 1 : 0.6 + }} + /> + +
+ { + const value = Math.min(100, Math.max(0, parseFloat(e.target.value) || 0)) + updateFlag(flag.id, { rolloutPercentage: Math.round(value) }) + }} + disabled={!canUpdate || saving === flag.id} + min="0" + max="100" + style={{ + width: '60px', + padding: '0.25rem 0.5rem', + border: `1px solid ${styles.inputBorder}`, + borderRadius: '0.25rem', + fontSize: '0.875rem', + textAlign: 'center', + cursor: (!canUpdate || saving === flag.id) ? 'not-allowed' : 'text', + opacity: canUpdate ? 1 : 0.5, + backgroundColor: styles.inputBg, + color: styles.text + }} + /> + % +
+
+ {flag.variants && flag.variants.length > 0 ? ( + + {flag.variants.length} variants + + ) : '-'} + + {flag.tags && flag.tags.length > 0 ? ( +
+ {flag.tags.map((t, i) => ( + + {t.tag} + + ))} +
+ ) : '-'} +
+ {new Date(flag.updatedAt).toLocaleDateString()} {new Date(flag.updatedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} +
+
+
+ + {/* Summary Stats */} +
+
+ Total: {flags.filter(f => f && f.name).length} flags +
+
+ Enabled: {flags.filter(f => f && f.enabled).length} +
+
+ Disabled: {flags.filter(f => f && !f.enabled).length} +
+
+ Rolling out: {flags.filter(f => f && f.enabled && f.rolloutPercentage && f.rolloutPercentage < 100).length} +
+
+ A/B Tests: {flags.filter(f => f && f.variants && f.variants.length > 0).length} +
+
+ + )} +
+ ) +} + +export const FeatureFlagsClient = memo(FeatureFlagsClientComponent) +export default FeatureFlagsClient \ No newline at end of file diff --git a/src/views/FeatureFlagsView.tsx b/src/views/FeatureFlagsView.tsx index f52aa24..26fa08f 100644 --- a/src/views/FeatureFlagsView.tsx +++ b/src/views/FeatureFlagsView.tsx @@ -1,414 +1,154 @@ -'use client' -import { useState, useEffect, useCallback, useMemo, memo } from 'react' -import { useConfig } from '@payloadcms/ui' +import type { AdminViewServerProps } from 'payload' +import { DefaultTemplate } from '@payloadcms/next/templates' +import { Gutter } from '@payloadcms/ui' +import FeatureFlagsClient from './FeatureFlagsClient.js' +import type { FeatureFlag } from '../types/index.js' -interface FeatureFlag { - id: string - name: string - description?: string - enabled: boolean - rolloutPercentage?: number - variants?: Array<{ - name: string - weight: number - metadata?: any - }> - environment?: 'development' | 'staging' | 'production' - tags?: Array<{ tag: string }> - metadata?: any - createdAt: string - updatedAt: string +async function fetchInitialFlags(payload: any, searchParams?: Record): Promise { + try { + const limit = Math.min(1000, parseInt(searchParams?.limit as string) || 100) + const page = Math.max(1, parseInt(searchParams?.page as string) || 1) + const collectionSlug = searchParams?.collectionSlug as string || 'feature-flags' + + const result = await payload.find({ + collection: collectionSlug, + limit, + page, + sort: 'name', + }) + + return (result.docs || []).filter((flag: any) => flag && flag.id && flag.name) + } catch (error) { + console.error('Error fetching initial feature flags:', error) + return [] + } } -const FeatureFlagsViewComponent = () => { - const { config } = useConfig() - const [flags, setFlags] = useState([]) - const [loading, setLoading] = useState(true) - const [error, setError] = useState('') - const [filter, setFilter] = useState<'all' | 'enabled' | 'disabled'>('all') - const [search, setSearch] = useState('') +export default async function FeatureFlagsView({ + initPageResult, + params, + searchParams, +}: AdminViewServerProps) { + const { + req: { user }, + permissions, + } = initPageResult - useEffect(() => { - const abortController = new AbortController() - - const loadFlags = async () => { - await fetchFlags(abortController.signal) - } - - loadFlags() - - return () => { - abortController.abort() - } - }, [config.serverURL]) - - const fetchFlags = async (signal?: AbortSignal) => { - try { - setLoading(true) - setError('') - - const response = await fetch(`${config.serverURL}${config.routes.api}/feature-flags`, { - credentials: 'include', - signal, - }) - - if (!response.ok) { - throw new Error(`Failed to fetch feature flags: ${response.statusText}`) - } - - const result = await response.json() - - // Extract docs array from Payload API response - const flagsArray = result.docs || [] - - // Only update state if the component is still mounted (signal not aborted) - if (!signal?.aborted) { - setFlags(flagsArray as FeatureFlag[]) - } - } catch (err) { - // Don't show error if request was aborted (component unmounting) - if (err instanceof Error && err.name === 'AbortError') { - return - } - console.error('Error fetching feature flags:', err) - if (!signal?.aborted) { - setError(err instanceof Error ? err.message : 'Failed to fetch feature flags') - } - } finally { - if (!signal?.aborted) { - setLoading(false) - } - } - } - - const toggleFlag = useCallback(async (flagId: string, enabled: boolean) => { - // For now, just show a message that editing isn't available in the custom view - setError('Toggle functionality coming soon. Please use the standard collection view to edit flags.') - setTimeout(() => setError(''), 3000) - }, []) - - const filteredFlags = useMemo(() => { - return flags.filter(flag => { - const matchesFilter = filter === 'all' || - (filter === 'enabled' && flag.enabled) || - (filter === 'disabled' && !flag.enabled) - - const matchesSearch = !search || - flag.name.toLowerCase().includes(search.toLowerCase()) || - flag.description?.toLowerCase().includes(search.toLowerCase()) - - return matchesFilter && matchesSearch - }) - }, [flags, filter, search]) - - const getStatusColor = (flag: FeatureFlag) => { - if (!flag.enabled) return '#ef4444' - if (flag.rolloutPercentage && flag.rolloutPercentage < 100) return '#f59e0b' - return '#10b981' - } - - const getStatusText = (flag: FeatureFlag) => { - if (!flag.enabled) return 'Disabled' - if (flag.rolloutPercentage && flag.rolloutPercentage < 100) return `${flag.rolloutPercentage}% Rollout` - return 'Enabled' - } - - if (loading) { + // Security check: User must be logged in + if (!user) { return ( -
-
Loading feature flags...
-
- ) - } - - if (error) { - return ( -
-
- Error: {error} -
-
- ) - } - - return ( -
- {/* Header */} -
-

- ๐Ÿšฉ Feature Flags -

-

- Manage feature toggles, A/B tests, and gradual rollouts -

-
- - {/* Controls */} -
- setSearch(e.target.value)} - style={{ - padding: '0.5rem 1rem', - border: '1px solid #d1d5db', + + +
- -
- {(['all', 'enabled', 'disabled'] as const).map(filterType => ( - - ))} -
+ Go to Login + +
+
+
+ ) + } - -
+ margin: '2rem 0' + }}> +

+ Access Denied +

+

+ You don't have permission to access the Feature Flags Dashboard. +

+

+ Contact your administrator to request access to the feature-flags collection. +

+
+ + + ) + } - {/* Stats */} -
-
-
- {flags.length} -
-
Total Flags
-
- -
-
- {flags.filter(f => f.enabled).length} -
-
Enabled
-
- -
-
- {flags.filter(f => f.enabled && f.rolloutPercentage && f.rolloutPercentage < 100).length} -
-
Rolling Out
-
- -
-
- {flags.filter(f => f.variants && f.variants.length > 0).length} -
-
A/B Tests
-
-
+ // Fetch initial data server-side (only if user has access) + const initialFlags = await fetchInitialFlags(initPageResult.req.payload, searchParams) - {/* Feature Flags List */} - {filteredFlags.length === 0 ? ( -
-
- {search || filter !== 'all' ? 'No flags match your criteria' : 'No feature flags yet'} -
- {(!search && filter === 'all') && ( -
- Create your first feature flag to get started -
- )} -
- ) : ( -
- {filteredFlags.map(flag => ( -
- {/* Flag Info */} -
-
-

- {flag.name} -

- -
- {getStatusText(flag)} -
- - {flag.environment && ( -
- {flag.environment} -
- )} -
- - {flag.description && ( -

- {flag.description} -

- )} - -
- {flag.variants && flag.variants.length > 0 && ( - ๐Ÿงช {flag.variants.length} variants - )} - {flag.tags && flag.tags.length > 0 && ( - ๐Ÿท๏ธ {flag.tags.map(t => t.tag).join(', ')} - )} - ๐Ÿ“… {new Date(flag.updatedAt).toLocaleDateString()} -
-
- - {/* Toggle Switch */} -
- -
-
- ))} -
- )} - + // Check if user can update feature flags (use already defined collection slug) + const canUpdateFeatureFlags = permissions?.collections?.[collectionSlug]?.update || false + + // Use DefaultTemplate with proper props structure from initPageResult + return ( + + + + + ) -} - -export const FeatureFlagsView = memo(FeatureFlagsViewComponent) \ No newline at end of file +} \ No newline at end of file