From 04833d59d06da71ee6ff809b9df289617a8d4aa8 Mon Sep 17 00:00:00 2001 From: Dominik Ferber Date: Fri, 7 Feb 2025 07:32:25 +0200 Subject: [PATCH 1/2] add server-only --- packages/flags/package.json | 3 +- packages/flags/src/next/index.ts | 2 + pnpm-lock.yaml | 74 +++++++++++++++----------------- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/packages/flags/package.json b/packages/flags/package.json index a110b87..17ab521 100644 --- a/packages/flags/package.json +++ b/packages/flags/package.json @@ -78,7 +78,8 @@ }, "dependencies": { "@edge-runtime/cookies": "^5.0.2", - "jose": "^5.2.1" + "jose": "^5.2.1", + "server-only": "0.0.1" }, "devDependencies": { "@types/node": "20.11.17", diff --git a/packages/flags/src/next/index.ts b/packages/flags/src/next/index.ts index 4481038..8112d55 100644 --- a/packages/flags/src/next/index.ts +++ b/packages/flags/src/next/index.ts @@ -1,3 +1,5 @@ +import 'server-only'; + import { RequestCookies } from '@edge-runtime/cookies'; import { type FlagDefinitionType, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c19a4a..9ca9d18 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -471,7 +471,10 @@ importers: version: 5.9.6 react-dom: specifier: '*' - version: 19.0.0(react@19.1.0-canary-9ff42a87-20250130) + version: 19.0.0(react@19.1.0-canary-ff628334-20250205) + server-only: + specifier: 0.0.1 + version: 0.0.1 devDependencies: '@types/node': specifier: 20.11.17 @@ -490,10 +493,10 @@ importers: version: 2.6.4(@types/node@20.11.17)(typescript@5.6.3) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0)(react@19.1.0-canary-9ff42a87-20250130) + version: 15.1.4(@babel/core@7.26.0)(react-dom@19.0.0)(react@19.1.0-canary-ff628334-20250205) react: specifier: canary - version: 19.1.0-canary-9ff42a87-20250130 + version: 19.1.0-canary-ff628334-20250205 rimraf: specifier: 6.0.1 version: 6.0.1 @@ -1462,7 +1465,6 @@ packages: dependencies: eslint: 8.56.0 eslint-visitor-keys: 3.4.3 - dev: true /@eslint-community/regexpp@4.12.1: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} @@ -1491,7 +1493,6 @@ packages: /@eslint/js@8.56.0: resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /@floating-ui/core@1.6.8: resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} @@ -2508,6 +2509,7 @@ packages: /@opentelemetry/api@1.9.0: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + dev: false /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -3182,7 +3184,7 @@ packages: sirv: 3.0.0 svelte: 4.2.19 tiny-glob: 0.2.9 - vite: 5.1.1(@types/node@20.11.17) + vite: 5.1.1(@types/node@22.9.0) /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2)(svelte@4.2.19)(vite@5.1.1): resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} @@ -3195,7 +3197,7 @@ packages: '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.1.1) debug: 4.4.0 svelte: 4.2.19 - vite: 5.1.1(@types/node@20.11.17) + vite: 5.1.1(@types/node@22.9.0) transitivePeerDependencies: - supports-color @@ -3213,7 +3215,7 @@ packages: magic-string: 0.30.15 svelte: 4.2.19 svelte-hmr: 0.16.0(svelte@4.2.19) - vite: 5.1.1(@types/node@20.11.17) + vite: 5.1.1(@types/node@22.9.0) vitefu: 0.2.5(vite@5.1.1) transitivePeerDependencies: - supports-color @@ -3705,7 +3707,6 @@ packages: typescript: 5.6.3 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/parser@8.18.0(eslint@8.56.0)(typescript@5.6.3): resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} @@ -4095,7 +4096,6 @@ packages: /@ungap/structured-clone@1.2.1: resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==} - dev: true /@vercel/edge-config-fs@0.1.0: resolution: {integrity: sha512-NRIBwfcS0bUoUbRWlNGetqjvLSwgYH/BqKqDN7vK1g32p7dN96k0712COgaz6VFizAm9b0g6IG6hR6+hc0KCPg==} @@ -5625,7 +5625,7 @@ packages: peerDependencies: eslint-plugin-import: '>=1.4.0' dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.48.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.56.0) /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -5679,7 +5679,7 @@ packages: debug: 4.4.0 enhanced-resolve: 5.17.1 eslint: 8.56.0 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.56.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.56.0) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.3.0 @@ -5687,7 +5687,6 @@ packages: stable-hash: 0.0.4 transitivePeerDependencies: - supports-color - dev: true /eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.48.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} @@ -5746,7 +5745,6 @@ packages: eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.56.0) transitivePeerDependencies: - supports-color - dev: true /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.56.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} @@ -5870,7 +5868,6 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.56.0): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} @@ -6345,7 +6342,6 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true /esm-env@1.2.1: resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} @@ -8423,7 +8419,7 @@ packages: - babel-plugin-macros dev: false - /next@15.1.4(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0)(react@19.1.0-canary-9ff42a87-20250130): + /next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-02c0e824-20241028)(react@19.0.0-rc-02c0e824-20241028): resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true @@ -8445,15 +8441,15 @@ packages: optional: true dependencies: '@next/env': 15.1.4 - '@opentelemetry/api': 1.9.0 + '@playwright/test': 1.48.2 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 caniuse-lite: 1.0.30001688 postcss: 8.4.31 - react: 19.1.0-canary-9ff42a87-20250130 - react-dom: 19.0.0(react@19.1.0-canary-9ff42a87-20250130) - styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.1.0-canary-9ff42a87-20250130) + react: 19.0.0-rc-02c0e824-20241028 + react-dom: 19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0-rc-02c0e824-20241028) optionalDependencies: '@next/swc-darwin-arm64': 15.1.4 '@next/swc-darwin-x64': 15.1.4 @@ -8467,9 +8463,9 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: true + dev: false - /next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-02c0e824-20241028)(react@19.0.0-rc-02c0e824-20241028): + /next@15.1.4(@babel/core@7.26.0)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true @@ -8491,15 +8487,14 @@ packages: optional: true dependencies: '@next/env': 15.1.4 - '@playwright/test': 1.48.2 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 caniuse-lite: 1.0.30001688 postcss: 8.4.31 - react: 19.0.0-rc-02c0e824-20241028 - react-dom: 19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028) - styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0-rc-02c0e824-20241028) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 15.1.4 '@next/swc-darwin-x64': 15.1.4 @@ -8515,7 +8510,7 @@ packages: - babel-plugin-macros dev: false - /next@15.1.4(@babel/core@7.26.0)(react-dom@18.3.1)(react@18.3.1): + /next@15.1.4(@babel/core@7.26.0)(react-dom@19.0.0)(react@19.1.0-canary-ff628334-20250205): resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true @@ -8542,9 +8537,9 @@ packages: busboy: 1.6.0 caniuse-lite: 1.0.30001688 postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.6(@babel/core@7.26.0)(react@18.3.1) + react: 19.1.0-canary-ff628334-20250205 + react-dom: 19.0.0(react@19.1.0-canary-ff628334-20250205) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.1.0-canary-ff628334-20250205) optionalDependencies: '@next/swc-darwin-arm64': 15.1.4 '@next/swc-darwin-x64': 15.1.4 @@ -8558,7 +8553,7 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false + dev: true /next@15.2.0-canary.3(@babel/core@7.26.0)(react-dom@19.0.0-rc-02c0e824-20241028)(react@19.0.0-rc-02c0e824-20241028): resolution: {integrity: sha512-mnlR2nZEsYCd6+wiLKJh09KVIRbsjybPfTQnqdVSq7TWkeK/zuLMug4IgwZ3bI9+fSjh/7zrpde84SdFMvJNIg==} @@ -9194,12 +9189,12 @@ packages: scheduler: 0.23.2 dev: false - /react-dom@19.0.0(react@19.1.0-canary-9ff42a87-20250130): + /react-dom@19.0.0(react@19.1.0-canary-ff628334-20250205): resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: react: ^19.0.0 dependencies: - react: 19.1.0-canary-9ff42a87-20250130 + react: 19.1.0-canary-ff628334-20250205 scheduler: 0.25.0 /react-dom@19.0.0-rc-02c0e824-20241028(react@19.0.0-rc-02c0e824-20241028): @@ -9285,8 +9280,8 @@ packages: engines: {node: '>=0.10.0'} dev: false - /react@19.1.0-canary-9ff42a87-20250130: - resolution: {integrity: sha512-fbXINn6mPPRtFx8Z+SKHI/9TohJPwz179O14j0C125ssm81C1wpPYMoYK6WjMpgtMFC2sw519BOl98obgAHfQw==} + /react@19.1.0-canary-ff628334-20250205: + resolution: {integrity: sha512-lJUElq6aqp9uYWXx+yGb1yzVU/vvdu1ffQ+Ly56jlKPrgJQeZvX3dTmSjIcbTJJGq9OhvoRWz/0PUC1r3lx0xw==} engines: {node: '>=0.10.0'} /read-cache@1.0.0: @@ -10134,7 +10129,7 @@ packages: react: 19.0.0-rc-02c0e824-20241028 dev: false - /styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.1.0-canary-9ff42a87-20250130): + /styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.1.0-canary-ff628334-20250205): resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -10149,7 +10144,7 @@ packages: dependencies: '@babel/core': 7.26.0 client-only: 0.0.1 - react: 19.1.0-canary-9ff42a87-20250130 + react: 19.1.0-canary-ff628334-20250205 dev: true /sucrase@3.35.0: @@ -10953,6 +10948,7 @@ packages: rollup: 4.28.1 optionalDependencies: fsevents: 2.3.3 + dev: true /vite@5.1.1(@types/node@22.9.0): resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==} @@ -10997,7 +10993,7 @@ packages: vite: optional: true dependencies: - vite: 5.1.1(@types/node@20.11.17) + vite: 5.1.1(@types/node@22.9.0) /vitest@1.4.0(@types/node@20.11.17): resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} From 3616b264f145d8f5d9db0d5d40af346fcc29afd3 Mon Sep 17 00:00:00 2001 From: Dominik Ferber Date: Fri, 7 Feb 2025 07:33:46 +0200 Subject: [PATCH 2/2] add changeset --- .changeset/tricky-lemons-fold.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tricky-lemons-fold.md diff --git a/.changeset/tricky-lemons-fold.md b/.changeset/tricky-lemons-fold.md new file mode 100644 index 0000000..b31a79f --- /dev/null +++ b/.changeset/tricky-lemons-fold.md @@ -0,0 +1,5 @@ +--- +'@vercel/flags': patch +--- + +provide a clearer warning when flags are attempted to be used client-side