From 8f4e96bed8bc91407cce3d662baf677cc27abc29 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Tue, 15 Jul 2025 00:26:08 +0100 Subject: [PATCH 1/3] chore: add skew-version support in Cloudflare open-next worker --- apps/site/next.config.mjs | 11 ++ apps/site/open-next.config.ts | 13 ++- apps/site/package.json | 4 +- apps/site/wrangler.jsonc | 10 ++ pnpm-lock.yaml | 187 ++++++++++++++++++++++++++++++---- 5 files changed, 202 insertions(+), 23 deletions(-) diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 14bb7afa4d3db..a077283675b5f 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -1,4 +1,5 @@ 'use strict'; +import { getDeploymentId } from '@opennextjs/cloudflare'; import createNextIntlPlugin from 'next-intl/plugin'; import { BASE_PATH, ENABLE_STATIC_EXPORT } from './next.constants.mjs'; @@ -95,6 +96,16 @@ const nextConfig = { 'shiki', ], }, + // If we're building for the Cloudflare deployment we want to set + // an appropriate deploymentId (needed for skew protection) + // TODO: The `OPEN_NEXT_CLOUDFLARE` environment variable is being + // defined in the worker building script, ideally the open-next + // adapter should set it itself when it invokes the Next.js build + // process, onces it does that remove the manual `OPEN_NEXT_CLOUDFLARE` + // definition in the package.json script. + deploymentId: process.env.OPEN_NEXT_CLOUDFLARE + ? getDeploymentId() + : undefined, }; const withNextIntl = createNextIntlPlugin('./i18n.tsx'); diff --git a/apps/site/open-next.config.ts b/apps/site/open-next.config.ts index f5e0cf658006f..d7dbb2ff9ddda 100644 --- a/apps/site/open-next.config.ts +++ b/apps/site/open-next.config.ts @@ -1,6 +1,17 @@ +import type { OpenNextConfig } from '@opennextjs/cloudflare'; import { defineCloudflareConfig } from '@opennextjs/cloudflare'; import incrementalCache from '@opennextjs/cloudflare/overrides/incremental-cache/kv-incremental-cache'; const cloudflareConfig = defineCloudflareConfig({ incrementalCache }); -export default { ...cloudflareConfig, buildCommand: 'pnpm build:default' }; +const openNextConfig: OpenNextConfig = { + ...cloudflareConfig, + buildCommand: 'pnpm build:default', + cloudflare: { + skewProtection: { + enabled: true, + }, + }, +}; + +export default openNextConfig; diff --git a/apps/site/package.json b/apps/site/package.json index a0d9710f005a0..c60ffd58aee55 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -7,7 +7,7 @@ "build:blog-data": "cross-env NODE_NO_WARNINGS=1 node ./scripts/blog-data/generate.mjs", "build:blog-data:watch": "node --watch --watch-path=pages/en/blog ./scripts/blog-data/generate.mjs", "build:default": "cross-env NODE_NO_WARNINGS=1 next build", - "cloudflare:build:worker": "opennextjs-cloudflare build", + "cloudflare:build:worker": "OPEN_NEXT_CLOUDFLARE=true opennextjs-cloudflare build", "cloudflare:deploy": "wrangler deploy", "cloudflare:preview": "wrangler dev", "predeploy": "node --run build:blog-data", @@ -80,7 +80,7 @@ "@eslint/eslintrc": "~3.3.1", "@flarelabs-net/wrangler-build-time-fs-assets-polyfilling": "^0.0.0", "@next/eslint-plugin-next": "15.3.4", - "@opennextjs/cloudflare": "^1.3.0", + "@opennextjs/cloudflare": "^1.5.1", "@playwright/test": "^1.53.2", "@testing-library/user-event": "~14.6.1", "@types/semver": "~7.7.0", diff --git a/apps/site/wrangler.jsonc b/apps/site/wrangler.jsonc index 65c4925c6f440..64b49c5977f55 100644 --- a/apps/site/wrangler.jsonc +++ b/apps/site/wrangler.jsonc @@ -1,4 +1,5 @@ { + "$schema": "./node_modules/wrangler/config-schema.json", "main": ".open-next/worker.js", "name": "nodejs-website", "compatibility_date": "2024-11-07", @@ -9,6 +10,15 @@ "assets": { "directory": ".open-next/assets", "binding": "ASSETS", + "run_worker_first": true, + }, + "vars": { + // Variables needed for skew protection + // Also note that an appropriate CF_WORKERS_SCRIPTS_API_TOKEN secret + // needs to be set as well in the Cloudflare dashboard + "CF_WORKER_NAME": "nodejs-website", + "CF_PREVIEW_DOMAIN": "testing.devprod.cloudflare.dev", + "CF_ACCOUNT_ID": "8ed4d03ac99f77561d0e8c9cbcc76cb6", }, "observability": { "enabled": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6df9fdce2ce2c..20d1f4fd3b0c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -215,8 +215,8 @@ importers: specifier: 15.3.4 version: 15.3.4 '@opennextjs/cloudflare': - specifier: ^1.3.0 - version: 1.3.0(wrangler@4.22.0) + specifier: ^1.5.1 + version: 1.5.1(wrangler@4.22.0) '@playwright/test': specifier: ^1.53.2 version: 1.53.2 @@ -1691,9 +1691,6 @@ packages: '@jridgewell/source-map@0.3.10': resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.5.4': resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} @@ -1850,15 +1847,15 @@ packages: resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} engines: {node: ^16.14.0 || >=18.0.0} - '@opennextjs/aws@3.6.5': - resolution: {integrity: sha512-wni+CWlRCyWfhNfekQBBPPkrDDnaGdZLN9hMybKI0wKOKTO+zhPOqR65Eh3V0pzWAi84Sureb5mdMuLwCxAAcw==} + '@opennextjs/aws@3.7.0': + resolution: {integrity: sha512-JXUZice+CedEQW20hnBVqzBEj+jfr4Oe2LVYSE4RNKdfHVIeYG+WJAop14TxRJ+NugKWGcJx6opf944l+ZG7XQ==} hasBin: true - '@opennextjs/cloudflare@1.3.0': - resolution: {integrity: sha512-3a/hHJ61laPEfPwiZAzMAbZ1ylegTBPY0fGcOlOJ3eGxE2c7XVGsDwCMcVmo9u5zJo4kcUXkcVKGheFkSN/pUg==} + '@opennextjs/cloudflare@1.5.1': + resolution: {integrity: sha512-G6OD+1II7TOM/+x0mtkHfDyJW2zp944gjBzy5VTeh97f4zbq9korFUhX1LFIZze7GMAlsAeJcWh5Thxph7ihJg==} hasBin: true peerDependencies: - wrangler: ^4.19.1 + wrangler: ^4.23.0 '@opentelemetry/api-logs@0.202.0': resolution: {integrity: sha512-fTBjMqKCfotFWfLzaKyhjLvyEyq5vDKTTFfBmx21btv3gvy8Lq6N5Dh2OzqeuN4DjtpSvNT1uNVfg08eD2Rfxw==} @@ -3198,6 +3195,12 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + + '@types/node@18.19.118': + resolution: {integrity: sha512-hIPK0hSrrcaoAu/gJMzN3QClXE4QdCdFvaenJ0JsjIbExP1JFFVH+RHcBt25c9n8bx5dkIfqKE+uw6BmBns7ug==} + '@types/node@22.15.3': resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} @@ -3541,6 +3544,10 @@ packages: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} @@ -3578,6 +3585,10 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -3722,6 +3733,9 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -3907,6 +3921,9 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cloudflare@4.4.1: + resolution: {integrity: sha512-wrtQ9WMflnfRcmdQZf/XfVVkeucgwzzYeqFDfgbNdADTaexsPwrtt3etzUvPGvVUeEk9kOPfNkl8MSzObxrIsg==} + code-block-writer@13.0.3: resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} @@ -3933,6 +3950,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -4168,6 +4189,10 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -4625,6 +4650,10 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -4767,10 +4796,21 @@ packages: typescript: '>3.6.0' webpack: ^5.11.0 + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + + form-data@4.0.3: + resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} + engines: {node: '>= 6'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -5062,6 +5102,9 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -6005,6 +6048,20 @@ packages: node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -7368,6 +7425,9 @@ packages: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -7508,6 +7568,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -7703,6 +7766,13 @@ packages: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -7748,6 +7818,9 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -9618,11 +9691,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - '@jridgewell/sourcemap-codec@1.5.4': {} '@jridgewell/trace-mapping@0.3.29': @@ -9817,7 +9885,7 @@ snapshots: dependencies: which: 4.0.0 - '@opennextjs/aws@3.6.5': + '@opennextjs/aws@3.7.0': dependencies: '@ast-grep/napi': 0.35.0 '@aws-sdk/client-cloudfront': 3.398.0 @@ -9840,16 +9908,18 @@ snapshots: - aws-crt - supports-color - '@opennextjs/cloudflare@1.3.0(wrangler@4.22.0)': + '@opennextjs/cloudflare@1.5.1(wrangler@4.22.0)': dependencies: '@dotenvx/dotenvx': 1.31.0 - '@opennextjs/aws': 3.6.5 + '@opennextjs/aws': 3.7.0 + cloudflare: 4.4.1 enquirer: 2.4.1 glob: 11.0.2 ts-tqdm: 0.8.6 wrangler: 4.22.0 transitivePeerDependencies: - aws-crt + - encoding - supports-color '@opentelemetry/api-logs@0.202.0': @@ -11442,6 +11512,15 @@ snapshots: '@types/ms@2.1.0': {} + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 22.15.3 + form-data: 4.0.3 + + '@types/node@18.19.118': + dependencies: + undici-types: 5.26.5 + '@types/node@22.15.3': dependencies: undici-types: 6.21.0 @@ -11785,6 +11864,10 @@ snapshots: abbrev@2.0.0: {} + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + accepts@2.0.0: dependencies: mime-types: 3.0.1 @@ -11812,6 +11895,10 @@ snapshots: agent-base@7.1.3: {} + agentkeepalive@4.6.0: + dependencies: + humanize-ms: 1.2.1 + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -11976,6 +12063,8 @@ snapshots: async-function@1.0.0: {} + asynckit@0.4.0: {} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -12165,6 +12254,18 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cloudflare@4.4.1: + dependencies: + '@types/node': 18.19.118 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.6.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + code-block-writer@13.0.3: {} collapse-white-space@2.1.0: {} @@ -12189,6 +12290,10 @@ snapshots: colorette@2.0.20: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} commander@11.1.0: {} @@ -12384,6 +12489,8 @@ snapshots: defu@6.1.4: {} + delayed-stream@1.0.0: {} + depd@2.0.0: {} dependency-graph@1.0.0: {} @@ -13118,6 +13225,8 @@ snapshots: etag@1.8.1: {} + event-target-shim@5.0.1: {} + eventemitter3@5.0.1: {} events@3.3.0: {} @@ -13323,8 +13432,23 @@ snapshots: typescript: 5.8.3 webpack: 5.99.9(@swc/core@1.11.24)(esbuild@0.25.5) + form-data-encoder@1.7.2: {} + + form-data@4.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + format@0.2.2: {} + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + forwarded@0.2.0: {} fresh@2.0.0: {} @@ -13697,6 +13821,10 @@ snapshots: human-signals@2.1.0: {} + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + husky@9.1.7: {} iconv-lite@0.6.3: @@ -14887,6 +15015,12 @@ snapshots: node-abort-controller@3.1.1: {} + node-domexception@1.0.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + node-releases@2.0.19: {} nopt@7.2.1: @@ -16178,7 +16312,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.3.6 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -16716,7 +16850,7 @@ snapshots: terser@5.16.9: dependencies: - '@jridgewell/source-map': 0.3.6 + '@jridgewell/source-map': 0.3.10 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -16757,6 +16891,8 @@ snapshots: dependencies: tldts: 6.1.86 + tr46@0.0.3: {} + tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -16904,6 +17040,8 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + undici-types@5.26.5: {} + undici-types@6.21.0: {} undici@5.29.0: @@ -17209,6 +17347,10 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + web-streams-polyfill@4.0.0-beta.3: {} + + webidl-conversions@3.0.1: {} + webidl-conversions@7.0.0: {} webpack-dev-middleware@6.1.3(webpack@5.99.9(@swc/core@1.11.24)(esbuild@0.25.5)): @@ -17273,6 +17415,11 @@ snapshots: tr46: 5.1.1 webidl-conversions: 7.0.0 + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 From 71105bf8ba69c4845573d501ce52d7e0fa82916e Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Tue, 15 Jul 2025 22:57:17 +0100 Subject: [PATCH 2/3] fix typo --- packages/rehype-shiki/src/index.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rehype-shiki/src/index.mjs b/packages/rehype-shiki/src/index.mjs index 4b852a9e252d2..cffd71ea4ce88 100644 --- a/packages/rehype-shiki/src/index.mjs +++ b/packages/rehype-shiki/src/index.mjs @@ -26,7 +26,7 @@ const { shiki, getLanguageDisplayName, highlightToHast, highlightToHtml } = // `WebAssembly.instantiate` with custom imports, which Cloudflare doesn't support // for security reasons. // - // TODO(@avivkeller): When available, use `OPEN_NEXT_CLOUDFLARE` environmen + // TODO(@avivkeller): When available, use `OPEN_NEXT_CLOUDFLARE` environment // variable for detection instead of current method, which will enable better // tree-shaking. // Reference: https://github.com/nodejs/nodejs.org/pull/7896#issuecomment-3009480615 From 9256c7a1ee3d111b4d32a30a30afb04237cffa03 Mon Sep 17 00:00:00 2001 From: Dario Piotrowicz Date: Tue, 15 Jul 2025 23:05:38 +0100 Subject: [PATCH 3/3] update ids in wrangler.jsonc file --- apps/site/wrangler.jsonc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/site/wrangler.jsonc b/apps/site/wrangler.jsonc index 64b49c5977f55..7be6f3b02e4f7 100644 --- a/apps/site/wrangler.jsonc +++ b/apps/site/wrangler.jsonc @@ -4,7 +4,7 @@ "name": "nodejs-website", "compatibility_date": "2024-11-07", "compatibility_flags": ["nodejs_compat"], - "account_id": "8ed4d03ac99f77561d0e8c9cbcc76cb6", + "account_id": "fb4a2d0f103c6ff38854ac69eb709272", "minify": true, "keep_names": false, "assets": { @@ -17,8 +17,8 @@ // Also note that an appropriate CF_WORKERS_SCRIPTS_API_TOKEN secret // needs to be set as well in the Cloudflare dashboard "CF_WORKER_NAME": "nodejs-website", - "CF_PREVIEW_DOMAIN": "testing.devprod.cloudflare.dev", - "CF_ACCOUNT_ID": "8ed4d03ac99f77561d0e8c9cbcc76cb6", + "CF_PREVIEW_DOMAIN": "nodejsorg.workers.dev", + "CF_ACCOUNT_ID": "fb4a2d0f103c6ff38854ac69eb709272", }, "observability": { "enabled": true, @@ -36,7 +36,7 @@ "kv_namespaces": [ { "binding": "NEXT_CACHE_WORKERS_KV", - "id": "32e8e26d2d2647fd96789baf83209fa9", + "id": "69b7422d56dd4244bc0127b69ecdc36f", }, ], }