diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f5a6718e847db8f..e66357f7a3a4443 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,9 +6,7 @@ /.github/ @kodster28 @pedrosousa @haleycode @kristianfreeman @GregBrimble @KianNH @maxvp @marciocloudflare @WalshyDev /.github/CODEOWNERS @cloudflare/pcx-technical-writing -/.github/actions/assign-issue/index.js @cloudflare/pcx-technical-writing /.github/actions/assign-pr/index.js @cloudflare/pcx-technical-writing -/.github/styles/cloudflare/spelling-exceptions.txt @cloudflare/pcx-technical-writing /src/components/ @cloudflare/developer-advocacy @kristianfreeman @kodster28 @pedrosousa @marciocloudflare @haleycode @maxvp @GregBrimble @KianNH @WalshyDev *.js @cloudflare/developer-advocacy @kristianfreeman @kodster28 @pedrosousa @haleycode @GregBrimble @KianNH @WalshyDev *.ts @cloudflare/developer-advocacy @kristianfreeman @kodster28 @pedrosousa @haleycode @GregBrimble @KianNH @WalshyDev @@ -21,7 +19,7 @@ # AI /src/content/docs/agents/ @irvinebroque @rita3ko @elithrar @thomasgauvin @threepointone @cloudflare/pcx-technical-writing -/src/content/docs/ai-gateway/ @kathayl @mchenco @kodster28 @cloudflare/pcx-technical-writing +/src/content/docs/ai-gateway/ @palashgo @thebongy @kathayl @mchenco @kodster28 @cloudflare/pcx-technical-writing /src/content/docs/workers-ai/ @rita3ko @craigsdennis @markdembo @mchenco @kodster28 @cloudflare/pcx-technical-writing /src/content/docs/vectorize/ @elithrar @vy-ton @sejoker @mchenco @cloudflare/pcx-technical-writing /src/content/partials/vectorize/ @elithrar @mchenco @sejoker @cloudflare/pcx-technical-writing @@ -68,8 +66,6 @@ /src/content/docs/cloudflare-one/policies/data-loss-prevention/ @maxvp @cloudflare/pcx-technical-writing /src/content/docs/cloudflare-one/insights/dex/ @deadlypants1973 @cloudflare/pcx-technical-writing /src/content/docs/email-security/ @Maddy-Cloudflare @cloudflare/pcx-technical-writing -/src/content/release-notes/access.yaml @ranbel @kennyj42 @cloudflare/pcx-technical-writing -/src/content/release-notes/warp.yaml @kokolocomotion1 @ranbel @cloudflare/pcx-technical-writing # Consumer products @@ -96,7 +92,6 @@ # Developer Platform /src/content/docs/containers/ @mikenomitch @th0m @cloudflare/pcx-technical-writing @cloudflare/cloudchamber -/src/content/release-notes/containers.yaml @mikenomitch @th0m @cloudflare/pcx-technical-writing /src/content/docs/d1/ @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @harshil1712 @cloudflare/pcx-technical-writing /src/content/release-notes/d1.yaml @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @cloudflare/pcx-technical-writing /src/content/partials/d1/ @elithrar @rozenmd @vy-ton @joshthoward @oxyjun @harshil1712 @cloudflare/pcx-technical-writing @@ -134,7 +129,6 @@ /src/content/docs/workers/ci-cd/ @irvinebroque @aninibread @GregBrimble @kodster28 @cloudflare/pcx-technical-writing /src/content/compatibility-flags/ @irvinebroque @mikenomitch @GregBrimble @cloudflare/pcx-technical-writing /src/content/docs/workers/wrangler/ @cloudflare/wrangler @irvinebroque @kodster28 @cloudflare/pcx-technical-writing @cloudflare/workers-runtime-1 -/src/content/docs/workers/frameworks/ @igorminar @cloudflare/wrangler @aninibread @GregBrimble @kodster28 @cloudflare/pcx-technical-writing /src/content/docs/pages/framework-guides/ @igorminar @cloudflare/wrangler @aninibread @GregBrimble @kodster28 @cloudflare/pcx-technical-writing /src/content/docs/analytics/analytics-engine/ @irvinebroque @elithrar @cloudflare/pcx-technical-writing /src/content/docs/cloudflare-for-platforms/ @irvinebroque @dinasaur404 @cloudflare/pcx-technical-writing @@ -168,7 +162,11 @@ # Migration guides /src/content/docs/migration-guides/ @kimj15 @cloudflare/pcx-technical-writing -/src/assets/images/migration-guides/ @kimj15 @cloudflare/pcx-technical-writing + +# MoQ + +/src/content/docs/moq/ @englishm @renandincer @cloudflare/pcx-technical-writing +/src/content/products/moq.yml @englishm @renandincer @cloudflare/pcx-technical-writing # Performance products @@ -208,13 +206,13 @@ /src/content/docs/ssl/ @RebeccaTamachiro @cloudflare/pcx-technical-writing /src/content/docs/waf/ @pedrosousa @cloudflare/firewall @cloudflare/pcx-technical-writing /src/content/docs/waf/change-log/ @pedrosousa @cloudflare/firewall @vs-mg @cloudflare/pcx-technical-writing -/src/content/release-notes/waf.yaml @pedrosousa @cloudflare/firewall @vs-mg @cloudflare/pcx-technical-writing /src/content/docs/cloudflare-challenges/ @patriciasantaana @cloudflare/pcx-technical-writing # Support -/src/content/docs/support/ @zeinjaber @TracyCloudflare @ngayerie @cloudflare/pcx-technical-writing @cloudflare/customer-support -/src/assets/images/support/ @zeinjaber @TracyCloudflare @ngayerie @cloudflare/pcx-technical-writing @cloudflare/customer-support +/src/content/docs/support/ @zeinjaber @ngayerie @cloudflare/pcx-technical-writing @cloudflare/customer-support +/src/assets/images/support/ @zeinjaber @ngayerie @cloudflare/pcx-technical-writing @cloudflare/customer-support +/src/content/docs/billing/ @zeinjaber @ngayerie @simon-says @cloudflare/customer-support @cloudflare/pcx-technical-writing # Turnstile @@ -223,11 +221,10 @@ # Waiting Room /src/content/docs/waiting-room/ @angelampcosta @cloudflare/pcx-technical-writing -/src/content/release-notes/waiting-room.yaml @angelampcosta @cloudflare/pcx-technical-writing # Web Analytics /src/content/docs/web-analytics/ @angelampcosta @cloudflare/pcx-technical-writing # AI Prompts for Cloudflare Workers development -/public/workers/prompts/ @jahands @Maximo-Guk @jbwcloudflare @cloudflare/pcx-technical-writing \ No newline at end of file +/public/workers/prompts/ @jahands @Maximo-Guk @jbwcloudflare @cloudflare/pcx-technical-writing diff --git a/astro.config.ts b/astro.config.ts index 36f6af23a20ce23..3a28b6cba44f327 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -142,7 +142,7 @@ export default defineConfig({ "{props.*}", "/", "/glossary/", - "/products/", + "/directory/", "/rules/snippets/examples/?operation=*", "/rules/transform/examples/?operation=*", "/ruleset-engine/rules-language/fields/reference/**", diff --git a/eslint.config.js b/eslint.config.js index 6b00c2c49323801..61434bb5cefde2e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -34,7 +34,13 @@ export default [ "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-unused-vars": [ "error", - { ignoreRestSiblings: true }, + { + ignoreRestSiblings: true, + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + }, ], }, }, diff --git a/package-lock.json b/package-lock.json index aae1523e055890f..0194ca058a6ddab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,18 +13,18 @@ "@astrojs/check": "0.9.4", "@astrojs/react": "4.2.5", "@astrojs/rss": "4.0.12", - "@astrojs/sitemap": "3.4.2", + "@astrojs/sitemap": "3.5.0", "@astrojs/starlight": "0.35.1", "@astrojs/starlight-docsearch": "0.6.0", "@astrojs/starlight-tailwind": "4.0.1", - "@cloudflare/vitest-pool-workers": "0.8.59", - "@cloudflare/workers-types": "4.20250813.0", + "@cloudflare/vitest-pool-workers": "0.8.65", + "@cloudflare/workers-types": "4.20250819.0", "@codingheads/sticky-header": "1.0.2", "@expressive-code/plugin-collapsible-sections": "0.41.3", "@expressive-code/plugin-line-numbers": "0.41.3", "@floating-ui/react": "0.27.15", "@iarna/toml": "2.2.5", - "@lottiefiles/dotlottie-react": "0.14.4", + "@lottiefiles/dotlottie-react": "0.15.0", "@marsidev/react-turnstile": "1.3.0", "@microsoft/fetch-event-source": "2.0.1", "@nanostores/react": "1.0.0", @@ -37,9 +37,9 @@ "@types/node": "24.1.0", "@types/react": "19.0.7", "@types/react-dom": "19.0.4", - "@typescript-eslint/parser": "8.38.0", + "@typescript-eslint/parser": "8.40.0", "algoliasearch": "5.35.0", - "astro": "5.12.9", + "astro": "5.13.2", "astro-breadcrumbs": "3.3.1", "astro-icon": "1.1.5", "astro-live-code": "0.0.6", @@ -49,7 +49,7 @@ "dedent": "1.6.0", "dompurify": "3.2.6", "dot-prop": "9.0.0", - "eslint": "9.32.0", + "eslint": "9.33.0", "eslint-plugin-astro": "1.3.1", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.5", @@ -64,11 +64,11 @@ "jsonc-parser": "3.3.1", "ldrs": "1.1.7", "lz-string": "1.5.0", - "marked": "16.1.2", + "marked": "16.2.0", "mdast-util-from-markdown": "2.0.2", "mdast-util-mdx": "3.0.0", "mdast-util-mdx-expression": "2.0.1", - "mermaid": "11.9.0", + "mermaid": "11.10.0", "micromark-extension-mdxjs": "3.0.0", "nanostores": "1.0.1", "node-html-parser": "7.0.1", @@ -100,7 +100,7 @@ "sharp": "0.34.3", "solarflare-theme": "0.0.5", "starlight-image-zoom": "0.13.0", - "starlight-links-validator": "0.17.0", + "starlight-links-validator": "0.17.1", "starlight-package-managers": "0.11.0", "starlight-showcases": "0.3.0", "strip-markdown": "6.0.0", @@ -108,15 +108,15 @@ "svgo": "4.0.0", "tailwindcss": "4.1.4", "tippy.js": "6.3.7", - "ts-blank-space": "0.6.1", - "tsx": "4.20.3", + "ts-blank-space": "0.6.2", + "tsx": "4.20.4", "typescript": "5.8.3", - "typescript-eslint": "8.38.0", + "typescript-eslint": "8.40.0", "unified": "11.0.5", "unist-util-visit": "5.0.0", "vite-tsconfig-paths": "5.1.4", "vitest": "2.1.6", - "wrangler": "4.26.1" + "wrangler": "4.31.0" }, "engines": { "node": ">=22" @@ -837,9 +837,9 @@ } }, "node_modules/@astrojs/sitemap": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.4.2.tgz", - "integrity": "sha512-wfN2dZzdkto6yaMtOFa/J9gc60YE3wl3rgSBoNJ+MU3lJVUMsDY9xf9uAVi8Mp/zEQKFDSJlQzBvqQUpw0Hf6g==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.5.0.tgz", + "integrity": "sha512-ldOvoBxuRgpcdndzksskOTzU55g76tkHC/POpejUbPGz6zR4rJKiXh8thX4WEPWDhCTZUafhJ1qf7k1muStHfg==", "dev": true, "license": "MIT", "dependencies": { @@ -1330,14 +1330,14 @@ } }, "node_modules/@cloudflare/unenv-preset": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.5.0.tgz", - "integrity": "sha512-CZe9B2VbjIQjBTyc+KoZcN1oUcm4T6GgCXoel9O7647djHuSRAa6sM6G+NdxWArATZgeMMbsvn9C50GCcnIatA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.6.2.tgz", + "integrity": "sha512-C7/tW7Qy+wGOCmHXu7xpP1TF3uIhRoi7zVY7dmu/SOSGjPilK+lSQ2lIRILulZsT467ZJNlI0jBxMbd8LzkGRg==", "dev": true, "license": "MIT OR Apache-2.0", "peerDependencies": { "unenv": "2.0.0-rc.19", - "workerd": "^1.20250722.0" + "workerd": "^1.20250802.0" }, "peerDependenciesMeta": { "workerd": { @@ -1346,18 +1346,18 @@ } }, "node_modules/@cloudflare/vitest-pool-workers": { - "version": "0.8.59", - "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.59.tgz", - "integrity": "sha512-ji3ALNMPNMAJqxi77B9tvng6QKs04Z883RkHwH6i0V9QbbXblKZDKsCmx9kCaDDuK8UwiBG6/+ug3JSp9wl9WQ==", + "version": "0.8.65", + "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.65.tgz", + "integrity": "sha512-oq/EoTqpm6SuNrmqs2l5GGl1KTgZ9u6A6wAzT4KwjTnd6ZPQuX16nVgBYv6ykN6aY/Myp+FwZkjXeozTMW3sAw==", "dev": true, "license": "MIT", "dependencies": { "birpc": "0.2.14", "cjs-module-lexer": "^1.2.3", "devalue": "^4.3.0", - "miniflare": "4.20250730.0", + "miniflare": "4.20250816.0", "semver": "^7.7.1", - "wrangler": "4.27.0", + "wrangler": "4.31.0", "zod": "^3.22.3" }, "peerDependencies": { @@ -1366,45 +1366,10 @@ "vitest": "2.0.x - 3.2.x" } }, - "node_modules/@cloudflare/vitest-pool-workers/node_modules/wrangler": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.27.0.tgz", - "integrity": "sha512-YNHZyMNWebFt9jD6dc20tQrCmnSzJj3SoB0FFa90w11Cx4lbP3d+rUZYjb18Zt+OGSMay1wT2PzwT2vCTskkmg==", - "dev": true, - "license": "MIT OR Apache-2.0", - "dependencies": { - "@cloudflare/kv-asset-handler": "0.4.0", - "@cloudflare/unenv-preset": "2.5.0", - "blake3-wasm": "2.1.5", - "esbuild": "0.25.4", - "miniflare": "4.20250730.0", - "path-to-regexp": "6.3.0", - "unenv": "2.0.0-rc.19", - "workerd": "1.20250730.0" - }, - "bin": { - "wrangler": "bin/wrangler.js", - "wrangler2": "bin/wrangler.js" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@cloudflare/workers-types": "^4.20250730.0" - }, - "peerDependenciesMeta": { - "@cloudflare/workers-types": { - "optional": true - } - } - }, "node_modules/@cloudflare/workerd-darwin-64": { - "version": "1.20250730.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250730.0.tgz", - "integrity": "sha512-X3egNyTjLQaECYe34x8Al7r4oXAhcN3a8+8qcpNCcq1sgtuHIeAwS9potgRR/mwkGfmrJn7nfAyDKC4vrkniQQ==", + "version": "1.20250816.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250816.0.tgz", + "integrity": "sha512-yN1Rga4ufTdrJPCP4gEqfB47i1lWi3teY5IoeQbUuKnjnCtm4pZvXur526JzCmaw60Jx+AEWf5tizdwRd5hHBQ==", "cpu": [ "x64" ], @@ -1419,9 +1384,9 @@ } }, "node_modules/@cloudflare/workerd-darwin-arm64": { - "version": "1.20250730.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250730.0.tgz", - "integrity": "sha512-/4bvcaGY/9v0rghgKboGiyPKKGQTbDnQ1EeY0oN0SSQH0Cp3OBzqwni/JRvh8TEaD+5azJnSFLlFZj9w7fo+hw==", + "version": "1.20250816.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250816.0.tgz", + "integrity": "sha512-WyKPMQhbU+TTf4uDz3SA7ZObspg7WzyJMv/7J4grSddpdx2A4Y4SfPu3wsZleAOIMOAEVi0A1sYDhdltKM7Mxg==", "cpu": [ "arm64" ], @@ -1436,9 +1401,9 @@ } }, "node_modules/@cloudflare/workerd-linux-64": { - "version": "1.20250730.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250730.0.tgz", - "integrity": "sha512-I4ZsXYdNkqkJnzNFKADMufiLIzRdIRsN7dSH8UCPw2fYp1BbKA10AkKVqitFwBxIY8eOzQ6Vf7c41AjLQmtJqA==", + "version": "1.20250816.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250816.0.tgz", + "integrity": "sha512-NWHOuFnVBaPRhLHw8kjPO9GJmc2P/CTYbnNlNm0EThyi57o/oDx0ldWLJqEHlrdEPOw7zEVGBqM/6M+V9agC6w==", "cpu": [ "x64" ], @@ -1453,9 +1418,9 @@ } }, "node_modules/@cloudflare/workerd-linux-arm64": { - "version": "1.20250730.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250730.0.tgz", - "integrity": "sha512-tTpO6139jFQ5vxgtBZgS8Y8R1jVidS4n7s37x5xO9bCWLZoL0kTj38UGZ8FENkTeaMxE9Mm//nbQol7TfJ2nZg==", + "version": "1.20250816.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250816.0.tgz", + "integrity": "sha512-FR+/yhaWs7FhfC3GKsM3+usQVrGEweJ9qyh7p+R6HNwnobgKr/h5ATWvJ4obGJF6ZHHodgSe+gOSYR7fkJ1xAQ==", "cpu": [ "arm64" ], @@ -1470,9 +1435,9 @@ } }, "node_modules/@cloudflare/workerd-windows-64": { - "version": "1.20250730.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250730.0.tgz", - "integrity": "sha512-paVHgocuilMzOU+gEyKR/86j/yI+QzmSHRnqdd8OdQ37Hf6SyPX7kQj6VVNRXbzVHWix1WxaJsXfTGK1LK05wA==", + "version": "1.20250816.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250816.0.tgz", + "integrity": "sha512-0lqClj2UMhFa8tCBiiX7Zhd5Bjp0V+X8oNBG6V6WsR9p9/HlIHAGgwRAM7aYkyG+8KC8xlbC89O2AXUXLpHx0g==", "cpu": [ "x64" ], @@ -1487,9 +1452,9 @@ } }, "node_modules/@cloudflare/workers-types": { - "version": "4.20250813.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20250813.0.tgz", - "integrity": "sha512-RFFjomDndGR+p7ug1HWDlW21qOJyRZbmI99dUtuR9tmwJbSZhUUnSFmzok9lBYVfkMMrO1O5vmB+IlgiecgLEA==", + "version": "4.20250819.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20250819.0.tgz", + "integrity": "sha512-TGghrtaQzT2k71gdiUOxwwt3owni1rWX3+BBTk1K/H0vmsinwEJsGmEJRdvIuQO72Davtfz9u6LBbR1uNoE1Qw==", "dev": true, "license": "MIT OR Apache-2.0" }, @@ -2374,18 +2339,19 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2457,9 +2423,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", - "integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==", + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", + "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", "dev": true, "license": "MIT", "engines": { @@ -2479,13 +2445,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", - "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.1", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { @@ -3299,22 +3265,22 @@ } }, "node_modules/@lottiefiles/dotlottie-react": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.14.4.tgz", - "integrity": "sha512-HFaA9ttniLMDapYxRhui+YFKAOs1h/z1ILQCLYHhfXGOvETtoWqJpuKdSKeEsDFD4BhFjZRgEfRlPiGOEFikUg==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.15.0.tgz", + "integrity": "sha512-2/yH3jR+CFTQgW40yZ1DvyEsBkb5MUVHfcNrobZifU86DmpOjOOurXfFbRotV3Y+C2KWZbujNLtzmlBqdbXKTg==", "dev": true, "license": "MIT", "dependencies": { - "@lottiefiles/dotlottie-web": "0.49.0" + "@lottiefiles/dotlottie-web": "0.50.0" }, "peerDependencies": { "react": "^17 || ^18 || ^19" } }, "node_modules/@lottiefiles/dotlottie-web": { - "version": "0.49.0", - "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-web/-/dotlottie-web-0.49.0.tgz", - "integrity": "sha512-SQ8sDrUrGMM24QWjs0n863SKobMSB9Plz8gbte9RYnLc4TfmQoWxjFgGBTlbGnh/aTQvtpxOxX2ueBohCsCaRQ==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-web/-/dotlottie-web-0.50.0.tgz", + "integrity": "sha512-l8mEWe+SZ76RKj2R8BiqU5Pc/q4aj6YTunXuXW/JLMjKVJEpefRE+E7d6CnZxSnpf36bvd1zGdopATzjJEHlgA==", "dev": true, "license": "MIT" }, @@ -5210,17 +5176,57 @@ "@types/node": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.40.0.tgz", + "integrity": "sha512-w/EboPlBwnmOBtRbiOvzjD+wdiZdgFeo17lkltrtn7X37vagKKWJABvyfsJXTlHe6XBzugmYgd4A4nW+k8Mixw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/type-utils": "8.40.0", + "@typescript-eslint/utils": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.40.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz", - "integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.40.0.tgz", + "integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", "debug": "^4.3.4" }, "engines": { @@ -5232,18 +5238,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", - "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.40.0.tgz", + "integrity": "sha512-/A89vz7Wf5DEXsGVvcGdYKbVM9F7DyFXj52lNYUDS1L9yJfqjW/fIp5PgMuEJL/KeqVTe2QSbXAGUZljDUpArw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.38.0", - "@typescript-eslint/types": "^8.38.0", + "@typescript-eslint/tsconfig-utils": "^8.40.0", + "@typescript-eslint/types": "^8.40.0", "debug": "^4.3.4" }, "engines": { @@ -5254,18 +5260,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", - "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.40.0.tgz", + "integrity": "sha512-y9ObStCcdCiZKzwqsE8CcpyuVMwRouJbbSrNuThDpv16dFAj429IkM6LNb1dZ2m7hK5fHyzNcErZf7CEeKXR4w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0" + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5276,9 +5282,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", - "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.40.0.tgz", + "integrity": "sha512-jtMytmUaG9d/9kqSl/W3E3xaWESo4hFDxAIHGVW/WKKtQhesnRIJSAJO6XckluuJ6KDB5woD1EiqknriCtAmcw==", "dev": true, "license": "MIT", "engines": { @@ -5289,19 +5295,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz", - "integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.40.0.tgz", + "integrity": "sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0", - "@typescript-eslint/utils": "8.38.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/utils": "8.40.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -5314,13 +5320,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", - "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.40.0.tgz", + "integrity": "sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==", "dev": true, "license": "MIT", "engines": { @@ -5332,16 +5338,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", - "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.40.0.tgz", + "integrity": "sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.38.0", - "@typescript-eslint/tsconfig-utils": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", + "@typescript-eslint/project-service": "8.40.0", + "@typescript-eslint/tsconfig-utils": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/visitor-keys": "8.40.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5357,20 +5363,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", - "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.40.0.tgz", + "integrity": "sha512-Cgzi2MXSZyAUOY+BFwGs17s7ad/7L+gKt6Y8rAVVWS+7o6wrjeFN4nVfTpbE25MNcxyJ+iYUXflbs2xR9h4UBg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0" + "@typescript-eslint/scope-manager": "8.40.0", + "@typescript-eslint/types": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5381,17 +5387,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", - "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.40.0.tgz", + "integrity": "sha512-8CZ47QwalyRjsypfwnbI3hKy5gJDPmrkLjkgMxhi0+DZZ2QNx2naS6/hWoVYUHU7LU2zleF68V9miaVZvhFfTA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/types": "8.40.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -6099,15 +6105,15 @@ } }, "node_modules/astro": { - "version": "5.12.9", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.12.9.tgz", - "integrity": "sha512-cZ7kZ61jyE5nwSrFKSRyf5Gds+uJELqQxJFqMkcgiWQvhWZJUSShn8Uz3yc9WLyLw5Kim5P5un9SkJSGogfEZQ==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.13.2.tgz", + "integrity": "sha512-yjcXY0Ua3EwjpVd3GoUXa65HQ6qgmURBptA+M9GzE0oYvgfuyM7bIbH8IR/TWIbdefVUJR5b7nZ0oVnMytmyfQ==", "dev": true, "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.12.2", - "@astrojs/internal-helpers": "0.7.1", - "@astrojs/markdown-remark": "6.3.5", + "@astrojs/internal-helpers": "0.7.2", + "@astrojs/markdown-remark": "6.3.6", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", @@ -6282,20 +6288,20 @@ } }, "node_modules/astro/node_modules/@astrojs/internal-helpers": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.1.tgz", - "integrity": "sha512-7dwEVigz9vUWDw3nRwLQ/yH/xYovlUA0ZD86xoeKEBmkz9O6iELG1yri67PgAPW6VLL/xInA4t7H0CK6VmtkKQ==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz", + "integrity": "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==", "dev": true, "license": "MIT" }, "node_modules/astro/node_modules/@astrojs/markdown-remark": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.5.tgz", - "integrity": "sha512-MiR92CkE2BcyWf3b86cBBw/1dKiOH0qhLgXH2OXA6cScrrmmks1Rr4Tl0p/lFpvmgQQrP54Pd1uidJfmxGrpWQ==", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz", + "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==", "dev": true, "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.7.1", + "@astrojs/internal-helpers": "0.7.2", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", @@ -9393,20 +9399,20 @@ } }, "node_modules/eslint": { - "version": "9.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz", - "integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==", + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.33.0.tgz", + "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.15.0", + "@eslint/config-helpers": "^0.3.1", + "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.32.0", - "@eslint/plugin-kit": "^0.3.4", + "@eslint/js": "9.33.0", + "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -12836,9 +12842,9 @@ } }, "node_modules/marked": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.1.2.tgz", - "integrity": "sha512-rNQt5EvRinalby7zJZu/mB+BvaAY2oz3wCuCjt1RDrWNpS1Pdf9xqMOeC9Hm5adBdcV/3XZPJpG58eT+WBc0XQ==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.2.0.tgz", + "integrity": "sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg==", "dev": true, "license": "MIT", "bin": { @@ -13251,9 +13257,9 @@ } }, "node_modules/mermaid": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.9.0.tgz", - "integrity": "sha512-YdPXn9slEwO0omQfQIsW6vS84weVQftIyyTGAZCwM//MGhPzL1+l6vO6bkf0wnP4tHigH1alZ5Ooy3HXI2gOag==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.10.0.tgz", + "integrity": "sha512-oQsFzPBy9xlpnGxUqLbVY8pvknLlsNIJ0NWwi8SUJjhbP1IT0E0o1lfhU4iYV3ubpy+xkzkaOyDUQMn06vQElQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14117,9 +14123,9 @@ } }, "node_modules/miniflare": { - "version": "4.20250730.0", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20250730.0.tgz", - "integrity": "sha512-avGXBStHQSqcJr8ra1mJ3/OQvnLZ49B1uAILQapAha1DHNZZvXWLIgUVre/WGY6ZOlNGFPh5CJ+dXLm4yuV3Jw==", + "version": "4.20250816.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20250816.0.tgz", + "integrity": "sha512-HuakGvmsU8aC60wsHP7Su+BgJFly1GmKbmbR/nqIz0Xlk6wcd/pp3vZ7jtbT3unf+aeBOlEO/CzcUb8xFsJLdA==", "dev": true, "license": "MIT", "dependencies": { @@ -14131,7 +14137,7 @@ "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "^7.10.0", - "workerd": "1.20250730.0", + "workerd": "1.20250816.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" @@ -14564,9 +14570,9 @@ } }, "node_modules/miniflare/node_modules/undici": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.13.0.tgz", - "integrity": "sha512-l+zSMssRqrzDcb3fjMkjjLGmuiiK2pMIcV++mJaAc9vhjSGpvM7h43QgP+OAMb1GImHmbPyG2tBXeuyG5iY4gA==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.14.0.tgz", + "integrity": "sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==", "dev": true, "license": "MIT", "engines": { @@ -17487,9 +17493,9 @@ } }, "node_modules/starlight-links-validator": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/starlight-links-validator/-/starlight-links-validator-0.17.0.tgz", - "integrity": "sha512-D+j0W7Z6CVSxPlt8jskBcApqaAU16JmuxE4c483Xj2sWJteiz0wW2xvk0cG3o/cW1q9x44Ezc668OnUi3a5LAA==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/starlight-links-validator/-/starlight-links-validator-0.17.1.tgz", + "integrity": "sha512-d2QoBO3mQPWYq/TO4I0kT/3Z9hFulnMzMPaG2dW0H14hPq4N7ZwiBl2FMrLK8I4UE34sztcBatvWCZc62S0BMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18121,13 +18127,13 @@ } }, "node_modules/ts-blank-space": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/ts-blank-space/-/ts-blank-space-0.6.1.tgz", - "integrity": "sha512-LcM3W5HEyzTaXUeQITV8ploUOGe+zuuoFYsCfPscFLhx3bZn2sSfHMKxsULVG/zA7an9UhReiHv4Kk/6QzlpXQ==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/ts-blank-space/-/ts-blank-space-0.6.2.tgz", + "integrity": "sha512-hZjcHdHrveEKI67v8OzI90a1bizgoDkY7ekE4fH89qJhZgxvmjfBOv98aibCU7OpKbvV3R9p/qd3DrzZqT1cFQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "typescript": "5.1.6 - 5.8.x" + "typescript": "5.1.6 - 5.9.x" }, "engines": { "node": ">=18.0.0" @@ -18172,9 +18178,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", - "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz", + "integrity": "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==", "dev": true, "license": "MIT", "dependencies": { @@ -18337,16 +18343,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.38.0.tgz", - "integrity": "sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==", + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.40.0.tgz", + "integrity": "sha512-Xvd2l+ZmFDPEt4oj1QEXzA4A2uUK6opvKu3eGN9aGjB8au02lIVcLyi375w94hHyejTOmzIU77L8ol2sRg9n7Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.38.0", - "@typescript-eslint/parser": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0", - "@typescript-eslint/utils": "8.38.0" + "@typescript-eslint/eslint-plugin": "8.40.0", + "@typescript-eslint/parser": "8.40.0", + "@typescript-eslint/typescript-estree": "8.40.0", + "@typescript-eslint/utils": "8.40.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -18357,47 +18363,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz", - "integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/type-utils": "8.38.0", - "@typescript-eslint/utils": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.38.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/typescript-eslint/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/ufo": { @@ -19706,9 +19672,9 @@ } }, "node_modules/workerd": { - "version": "1.20250730.0", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250730.0.tgz", - "integrity": "sha512-w6e0WM2YGfYQGmg0dewZeLUYIxAzMYK1R31vaS4HHHjgT32Xqj0eVQH+leegzY51RZPNCvw5pe8DFmW4MGf8Fg==", + "version": "1.20250816.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250816.0.tgz", + "integrity": "sha512-5gIvHPE/3QVlQR1Sc1NdBkWmqWj/TSgIbY/f/qs9lhiLBw/Da+HbNBTVYGjvwYqEb3NQ+XQM4gAm5b2+JJaUJg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -19719,28 +19685,28 @@ "node": ">=16" }, "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20250730.0", - "@cloudflare/workerd-darwin-arm64": "1.20250730.0", - "@cloudflare/workerd-linux-64": "1.20250730.0", - "@cloudflare/workerd-linux-arm64": "1.20250730.0", - "@cloudflare/workerd-windows-64": "1.20250730.0" + "@cloudflare/workerd-darwin-64": "1.20250816.0", + "@cloudflare/workerd-darwin-arm64": "1.20250816.0", + "@cloudflare/workerd-linux-64": "1.20250816.0", + "@cloudflare/workerd-linux-arm64": "1.20250816.0", + "@cloudflare/workerd-windows-64": "1.20250816.0" } }, "node_modules/wrangler": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.26.1.tgz", - "integrity": "sha512-zGFEtHrjTAWOngm+zwEvYCxFwMSIBrzHa3Yu6rAxYMEzsT8PPvo2rdswyUJiUkpE9s2Depr37opceaY7JxEYFw==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.31.0.tgz", + "integrity": "sha512-blb8NfA4BGscvSzvLm2mEQRuUTmaMCiglkqHiR3EIque78UXG39xxVtFXlKhK32qaVvGI7ejdM//HC9plVPO3w==", "dev": true, "license": "MIT OR Apache-2.0", "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", - "@cloudflare/unenv-preset": "2.5.0", + "@cloudflare/unenv-preset": "2.6.2", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", - "miniflare": "4.20250726.0", + "miniflare": "4.20250816.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.19", - "workerd": "1.20250726.0" + "workerd": "1.20250816.0" }, "bin": { "wrangler": "bin/wrangler.js", @@ -19753,7 +19719,7 @@ "fsevents": "~2.3.2" }, "peerDependencies": { - "@cloudflare/workers-types": "^4.20250726.0" + "@cloudflare/workers-types": "^4.20250816.0" }, "peerDependenciesMeta": { "@cloudflare/workers-types": { @@ -19761,579 +19727,6 @@ } } }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-64": { - "version": "1.20250726.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250726.0.tgz", - "integrity": "sha512-SOpQqQ2blLY0io/vErve44vJC1M5i7RHuMBdrdEPIEtxiLBTdOOVp4nqZ3KchocxZjskgTc2N4N3b5hNYuKDGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-arm64": { - "version": "1.20250726.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250726.0.tgz", - "integrity": "sha512-I+TOQ+YQahxL/K7eS2GJzv5CZzSVaZoyqfB15Q71MT/+wyzPCaFDTt+fg3uXdwpaIQEMUfqFNpTQSqbKHAYNgA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-64": { - "version": "1.20250726.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250726.0.tgz", - "integrity": "sha512-WSCv4o2uOW6b++ROVazrEW+jjZdBqCmXmmt7uVVfvjVxlzoYVwK9IvV2IXe4gsJ99HG9I0YCa7AT743cZ7TNNg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-linux-arm64": { - "version": "1.20250726.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250726.0.tgz", - "integrity": "sha512-jNokAGL3EQqH+31b0dX8+tlbKdjt/0UtTLvgD1e+7bOD92lzjYMa/CixHyMIY/FVvhsN4TNqfiz4cqroABTlhg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@cloudflare/workerd-windows-64": { - "version": "1.20250726.0", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250726.0.tgz", - "integrity": "sha512-DiPTY63TNh6/ylvfutNQzYZi688x6NJDjQoqf5uiCp7xHweWx+GpVs42sZPeeXqCNvhm4dYjHjuigXJNh7t8Uw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=16" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.2.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/wrangler/node_modules/miniflare": { - "version": "4.20250726.0", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20250726.0.tgz", - "integrity": "sha512-7+/RQQ9dNsyGfR2XN2RDLultf7HHrJ5YltSXSeyQGUpzGU3iYlFhh9Smg+ygkkOJ3+trf0bgwixOnqnnWpc9ZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "0.8.1", - "acorn": "8.14.0", - "acorn-walk": "8.3.2", - "exit-hook": "2.2.1", - "glob-to-regexp": "0.4.1", - "sharp": "^0.33.5", - "stoppable": "1.1.0", - "undici": "^7.10.0", - "workerd": "1.20250726.0", - "ws": "8.18.0", - "youch": "4.1.0-beta.10", - "zod": "3.22.3" - }, - "bin": { - "miniflare": "bootstrap.js" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/wrangler/node_modules/sharp": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", - "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.5", - "@img/sharp-darwin-x64": "0.33.5", - "@img/sharp-libvips-darwin-arm64": "1.0.4", - "@img/sharp-libvips-darwin-x64": "1.0.4", - "@img/sharp-libvips-linux-arm": "1.0.5", - "@img/sharp-libvips-linux-arm64": "1.0.4", - "@img/sharp-libvips-linux-s390x": "1.0.4", - "@img/sharp-libvips-linux-x64": "1.0.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", - "@img/sharp-libvips-linuxmusl-x64": "1.0.4", - "@img/sharp-linux-arm": "0.33.5", - "@img/sharp-linux-arm64": "0.33.5", - "@img/sharp-linux-s390x": "0.33.5", - "@img/sharp-linux-x64": "0.33.5", - "@img/sharp-linuxmusl-arm64": "0.33.5", - "@img/sharp-linuxmusl-x64": "0.33.5", - "@img/sharp-wasm32": "0.33.5", - "@img/sharp-win32-ia32": "0.33.5", - "@img/sharp-win32-x64": "0.33.5" - } - }, - "node_modules/wrangler/node_modules/undici": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.12.0.tgz", - "integrity": "sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/wrangler/node_modules/workerd": { - "version": "1.20250726.0", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250726.0.tgz", - "integrity": "sha512-wDZqSKfIfQ2eVTUL6UawXdXEKPPyzRTnVdbhoKGq3NFrMxd+7v1cNH92u8775Qo1zO5S+GyWonQmZPFakXLvGw==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "bin": { - "workerd": "bin/workerd" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20250726.0", - "@cloudflare/workerd-darwin-arm64": "1.20250726.0", - "@cloudflare/workerd-linux-64": "1.20250726.0", - "@cloudflare/workerd-linux-arm64": "1.20250726.0", - "@cloudflare/workerd-windows-64": "1.20250726.0" - } - }, - "node_modules/wrangler/node_modules/zod": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", - "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", diff --git a/package.json b/package.json index e9d180b9b8c521c..9c6aba3edf7ae78 100644 --- a/package.json +++ b/package.json @@ -31,18 +31,18 @@ "@astrojs/check": "0.9.4", "@astrojs/react": "4.2.5", "@astrojs/rss": "4.0.12", - "@astrojs/sitemap": "3.4.2", + "@astrojs/sitemap": "3.5.0", "@astrojs/starlight": "0.35.1", "@astrojs/starlight-docsearch": "0.6.0", "@astrojs/starlight-tailwind": "4.0.1", - "@cloudflare/vitest-pool-workers": "0.8.59", - "@cloudflare/workers-types": "4.20250813.0", + "@cloudflare/vitest-pool-workers": "0.8.65", + "@cloudflare/workers-types": "4.20250819.0", "@codingheads/sticky-header": "1.0.2", "@expressive-code/plugin-collapsible-sections": "0.41.3", "@expressive-code/plugin-line-numbers": "0.41.3", "@floating-ui/react": "0.27.15", "@iarna/toml": "2.2.5", - "@lottiefiles/dotlottie-react": "0.14.4", + "@lottiefiles/dotlottie-react": "0.15.0", "@marsidev/react-turnstile": "1.3.0", "@microsoft/fetch-event-source": "2.0.1", "@nanostores/react": "1.0.0", @@ -55,9 +55,9 @@ "@types/node": "24.1.0", "@types/react": "19.0.7", "@types/react-dom": "19.0.4", - "@typescript-eslint/parser": "8.38.0", + "@typescript-eslint/parser": "8.40.0", "algoliasearch": "5.35.0", - "astro": "5.12.9", + "astro": "5.13.2", "astro-breadcrumbs": "3.3.1", "astro-icon": "1.1.5", "astro-live-code": "0.0.6", @@ -67,7 +67,7 @@ "dedent": "1.6.0", "dompurify": "3.2.6", "dot-prop": "9.0.0", - "eslint": "9.32.0", + "eslint": "9.33.0", "eslint-plugin-astro": "1.3.1", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.5", @@ -82,11 +82,11 @@ "jsonc-parser": "3.3.1", "ldrs": "1.1.7", "lz-string": "1.5.0", - "marked": "16.1.2", + "marked": "16.2.0", "mdast-util-from-markdown": "2.0.2", "mdast-util-mdx": "3.0.0", "mdast-util-mdx-expression": "2.0.1", - "mermaid": "11.9.0", + "mermaid": "11.10.0", "micromark-extension-mdxjs": "3.0.0", "nanostores": "1.0.1", "node-html-parser": "7.0.1", @@ -118,7 +118,7 @@ "sharp": "0.34.3", "solarflare-theme": "0.0.5", "starlight-image-zoom": "0.13.0", - "starlight-links-validator": "0.17.0", + "starlight-links-validator": "0.17.1", "starlight-package-managers": "0.11.0", "starlight-showcases": "0.3.0", "strip-markdown": "6.0.0", @@ -126,15 +126,15 @@ "svgo": "4.0.0", "tailwindcss": "4.1.4", "tippy.js": "6.3.7", - "ts-blank-space": "0.6.1", - "tsx": "4.20.3", + "ts-blank-space": "0.6.2", + "tsx": "4.20.4", "typescript": "5.8.3", - "typescript-eslint": "8.38.0", + "typescript-eslint": "8.40.0", "unified": "11.0.5", "unist-util-visit": "5.0.0", "vite-tsconfig-paths": "5.1.4", "vitest": "2.1.6", - "wrangler": "4.26.1" + "wrangler": "4.31.0" }, "engines": { "node": ">=22" diff --git a/public/__redirects b/public/__redirects index 16034c21cfbaef8..cac3938db49579f 100644 --- a/public/__redirects +++ b/public/__redirects @@ -1,6 +1,7 @@ # homepage /api /api/ 301 -/docs/ /products/ 301 +/docs/ /directory/ 301 +/products/ /directory/ 301 /zero-trust/ /products/?product-group=Cloudflare+One 301 /dashboard-landing/ / 301 /tutorials/ /search/?content_type%5B0%5D=Tutorial 301 @@ -162,11 +163,14 @@ /ai-gateway/integration/vercel-ai-sdk/ /ai-gateway/integrations/vercel-ai-sdk/ 301 /ai-gateway/integration/aig-workers-ai-binding/ /ai-gateway/integrations/aig-workers-ai-binding/ 301 /ai-gateway/integration/ /ai-gateway/integrations/ 301 -/ai-gateway/providers/open-router/ /ai-gateway/providers/openrouter/ 301 -/ai-gateway/providers/universal/ /ai-gateway/universal/ 301 -/ai-gateway/configuration/websockets-api/ /ai-gateway/websockets-api/ 301 -/ai-gateway/configuration/websockets-api/non-realtime-api/ /ai-gateway/websockets-api/non-realtime-api/ 301 -/ai-gateway/configuration/websockets-api/realtime-api/ /ai-gateway/websockets-api/realtime-api/ 301 +/ai-gateway/providers/open-router/ /ai-gateway/usage/providers/openrouter/ 301 +/ai-gateway/providers/universal/ /ai-gateway/usage/universal/ 301 +/ai-gateway/configuration/websockets-api/ /ai-gateway/usage/websockets-api/ 301 +/ai-gateway/configuration/websockets-api/non-realtime-api/ /ai-gateway/usage/websockets-api/non-realtime-api/ 301 +/ai-gateway/configuration/websockets-api/realtime-api/ /ai-gateway/usage/websockets-api/realtime-api/ 301 +/ai-gateway/configuration/caching/ /ai-gateway/features/caching/ 301 +/ai-gateway/configuration/rate-limiting/ /ai-gateway/features/rate-limiting/ 301 +/ai-gateway/configuration/custom-metadata/ /ai-gateway/observability/custom-metadata/ 301 # agents /agents/capabilities/mcp-server/ /agents/model-context-protocol/ 301 @@ -202,6 +206,7 @@ /analytics/graphql-api/tutorials/export-graphql-to-csv/ /analytics/graphql-api/tutorials/ 301 /analytics/analytics-integrations/google-cloud/ /analytics/analytics-integrations/ 301 /analytics/dashboards/ /log-explorer/custom-dashboards/ 301 +/analytics/analytics-integrations/looker/ /analytics/analytics-integrations/ 301 # email-security /email-security/reporting/search/detection-search/ /email-security/reporting/search/ 301 @@ -2345,6 +2350,11 @@ # Calls /calls/* /realtime/:splat 301 +# AI Gateway +/ai-gateway/providers/* /ai-gateway/usage/providers/:splat 301 +/ai-gateway/guardrails/* /ai-gateway/features/guardrails/:splat 301 +/ai-gateway/websockets-api/* /ai-gateway/usage/websockets-api/:splat 301 + # Realtime /realtime/limits /realtime/sfu/limits 302 /realtime/sessions-tracks /realtime/sfu/sessions-tracks/ 302 @@ -2356,4 +2366,8 @@ /realtime/demos /realtime/sfu/demos/ 302 /realtime/example-architecture /realtime/sfu/example-architecture/ 302 /realtime/pricing /realtime/sfu/pricing/ 302 -/realtime/changelog /realtime/sfu/changelog/ 302 \ No newline at end of file +/realtime/changelog /realtime/sfu/changelog/ 302 + +/realtime/realtimekit/get-started /realtime/realtimekit/getting-started/ 302 +/realtime/introduction /realtime/realtimekit/introduction 302 +/realtime/concepts /realtime/realtimekit/concepts 302 diff --git a/public/images/queues/queues-event-subscriptions.png b/public/images/queues/queues-event-subscriptions.png new file mode 100644 index 000000000000000..f00d85611323c71 Binary files /dev/null and b/public/images/queues/queues-event-subscriptions.png differ diff --git a/public/robots.txt b/public/robots.txt index 20a85d5f9226c20..2520e82139fecec 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -6,4 +6,6 @@ Disallow: /constellation Disallow: /cdn-cgi/ Disallow: /email-security/ +Content-Usage: tdm=y + Sitemap: https://developers.cloudflare.com/sitemap-index.xml diff --git a/src/assets/images/ai-gateway/dynamic-routing.png b/src/assets/images/ai-gateway/dynamic-routing.png new file mode 100644 index 000000000000000..123f107c424ab3f Binary files /dev/null and b/src/assets/images/ai-gateway/dynamic-routing.png differ diff --git a/src/assets/images/changelog/load-balancing/asnum-custom-rule.png b/src/assets/images/changelog/load-balancing/asnum-custom-rule.png new file mode 100644 index 000000000000000..05eab6514a7f157 Binary files /dev/null and b/src/assets/images/changelog/load-balancing/asnum-custom-rule.png differ diff --git a/src/assets/images/fundamentals/looker/dashboards/bot-management-cloudflare-dashboard-looker.png b/src/assets/images/fundamentals/looker/dashboards/bot-management-cloudflare-dashboard-looker.png deleted file mode 100644 index 4a5f3a4ccf64b93..000000000000000 Binary files a/src/assets/images/fundamentals/looker/dashboards/bot-management-cloudflare-dashboard-looker.png and /dev/null differ diff --git a/src/assets/images/fundamentals/looker/dashboards/performance-cloudflare-dashboard-looker.png b/src/assets/images/fundamentals/looker/dashboards/performance-cloudflare-dashboard-looker.png deleted file mode 100644 index 5870080aff00369..000000000000000 Binary files a/src/assets/images/fundamentals/looker/dashboards/performance-cloudflare-dashboard-looker.png and /dev/null differ diff --git a/src/assets/images/fundamentals/looker/dashboards/reliability-cloudflare-dashboard-looker.png b/src/assets/images/fundamentals/looker/dashboards/reliability-cloudflare-dashboard-looker.png deleted file mode 100644 index f0df8334dce1a6c..000000000000000 Binary files a/src/assets/images/fundamentals/looker/dashboards/reliability-cloudflare-dashboard-looker.png and /dev/null differ diff --git a/src/assets/images/fundamentals/looker/dashboards/security-cloudflare-dashboard-looker.png b/src/assets/images/fundamentals/looker/dashboards/security-cloudflare-dashboard-looker.png deleted file mode 100644 index 85a5ac56adcbb37..000000000000000 Binary files a/src/assets/images/fundamentals/looker/dashboards/security-cloudflare-dashboard-looker.png and /dev/null differ diff --git a/src/assets/images/fundamentals/looker/dashboards/snapshot-cloudflare-dashboard-looker.png b/src/assets/images/fundamentals/looker/dashboards/snapshot-cloudflare-dashboard-looker.png deleted file mode 100644 index 7822f8dc869ce98..000000000000000 Binary files a/src/assets/images/fundamentals/looker/dashboards/snapshot-cloudflare-dashboard-looker.png and /dev/null differ diff --git a/src/assets/images/fundamentals/looker/screenshots/cloudflare-looker-dashboard-filters.png b/src/assets/images/fundamentals/looker/screenshots/cloudflare-looker-dashboard-filters.png deleted file mode 100644 index 9d96a95d21c712b..000000000000000 Binary files a/src/assets/images/fundamentals/looker/screenshots/cloudflare-looker-dashboard-filters.png and /dev/null differ diff --git a/src/assets/images/fundamentals/looker/screenshots/develop-look-ml-project.png b/src/assets/images/fundamentals/looker/screenshots/develop-look-ml-project.png deleted file mode 100644 index 510094e99cdf023..000000000000000 Binary files a/src/assets/images/fundamentals/looker/screenshots/develop-look-ml-project.png and /dev/null differ diff --git a/src/assets/images/gateway/Gateway-byoip-dedicated-egress-ips.png b/src/assets/images/gateway/Gateway-byoip-dedicated-egress-ips.png new file mode 100644 index 000000000000000..2ac063bcd562256 Binary files /dev/null and b/src/assets/images/gateway/Gateway-byoip-dedicated-egress-ips.png differ diff --git a/src/assets/images/kv/changelog/kv-hybrid-providers-performance-improvements.png b/src/assets/images/kv/changelog/kv-hybrid-providers-performance-improvements.png new file mode 100644 index 000000000000000..a424a049a89c41f Binary files /dev/null and b/src/assets/images/kv/changelog/kv-hybrid-providers-performance-improvements.png differ diff --git a/src/assets/images/logs/destination-details.png b/src/assets/images/logs/destination-details.png new file mode 100644 index 000000000000000..0c7142330c67290 Binary files /dev/null and b/src/assets/images/logs/destination-details.png differ diff --git a/src/assets/images/logs/endpoint.png b/src/assets/images/logs/endpoint.png new file mode 100644 index 000000000000000..53359a6af0343a7 Binary files /dev/null and b/src/assets/images/logs/endpoint.png differ diff --git a/src/assets/images/queues/queues-event-subscriptions.png b/src/assets/images/queues/queues-event-subscriptions.png new file mode 100644 index 000000000000000..f00d85611323c71 Binary files /dev/null and b/src/assets/images/queues/queues-event-subscriptions.png differ diff --git a/src/assets/images/workers/changelog/new-error-screen-dark.png b/src/assets/images/workers/changelog/new-error-screen-dark.png new file mode 100644 index 000000000000000..a66ef70338fda10 Binary files /dev/null and b/src/assets/images/workers/changelog/new-error-screen-dark.png differ diff --git a/src/assets/images/workers/changelog/new-error-screen-light.png b/src/assets/images/workers/changelog/new-error-screen-light.png new file mode 100644 index 000000000000000..a5880a42e187018 Binary files /dev/null and b/src/assets/images/workers/changelog/new-error-screen-light.png differ diff --git a/src/assets/images/workers/changelog/old-error-screen.png b/src/assets/images/workers/changelog/old-error-screen.png new file mode 100644 index 000000000000000..c133a7b84319c96 Binary files /dev/null and b/src/assets/images/workers/changelog/old-error-screen.png differ diff --git a/src/components/Checkbox.astro b/src/components/Checkbox.astro new file mode 100644 index 000000000000000..5fcaa2441b4b775 --- /dev/null +++ b/src/components/Checkbox.astro @@ -0,0 +1,66 @@ +--- +import { z } from "astro:schema"; + +const props = z.object({ + label: z.string(), +}); + +const { label } = props.parse(Astro.props); +--- + + + + + + diff --git a/src/components/ProductCatalog.tsx b/src/components/DirectoryCatalog.tsx similarity index 95% rename from src/components/ProductCatalog.tsx rename to src/components/DirectoryCatalog.tsx index 7d405883ec48e2d..9eb7466952c4930 100644 --- a/src/components/ProductCatalog.tsx +++ b/src/components/DirectoryCatalog.tsx @@ -13,7 +13,7 @@ type Filters = { groups: string[]; }; -const ProductCatalog = ({ products }: { products: ProductData[] }) => { +const DirectoryCatalog = ({ products }: { products: ProductData[] }) => { const [filters, setFilters] = useState({ search: "", groups: [], @@ -74,7 +74,7 @@ const ProductCatalog = ({ products }: { products: ProductData[] }) => { setFilters({ ...filters, search: e.target.value })} /> @@ -116,7 +116,7 @@ const ProductCatalog = ({ products }: { products: ProductData[] }) => {
{productList.length === 0 && (
- No products found + No folders found

Try a different search term, or broaden your search by removing filters. @@ -163,4 +163,4 @@ const ProductCatalog = ({ products }: { products: ProductData[] }) => { ); }; -export default ProductCatalog; +export default DirectoryCatalog; diff --git a/src/components/DirectoryListing.astro b/src/components/DirectoryListing.astro index 2b8e3d1d9192060..a56fca778c901bc 100644 --- a/src/components/DirectoryListing.astro +++ b/src/components/DirectoryListing.astro @@ -22,6 +22,9 @@ let { descriptions, folder, maxDepth, tag } = props.parse(Astro.props); if (!folder) folder = Astro.params.slug!; +// Strip leading or trailing slashes +folder = folder.replace(/^\/|\/$/g, '') + const baseDepth = folder.split("/").length; let allPages = await getCollection("docs", (page) => { @@ -55,6 +58,12 @@ function buildPageTree(parentPath: string, currentDepth: number): PageNode[] { } const pageTree = buildPageTree(folder, baseDepth + 1); + +if (pageTree.length === 0) { + throw new Error ( + `[DirectoryListing] Bad folder parameter (determined by current folder OR the "folder" input) of "${folder}". Check to make sure "${folder}" exists, has child pages, .` + ) +} ---

diff --git a/src/pages/videos/[...slug].astro b/src/pages/videos/[...slug].astro index 8046ec22414d0fc..f23c3647e8e20d1 100644 --- a/src/pages/videos/[...slug].astro +++ b/src/pages/videos/[...slug].astro @@ -54,6 +54,7 @@ if (entry.transcript) { --- +

{entry.description}

{ diff --git a/src/schemas/base.ts b/src/schemas/base.ts index d962fc5dc1fcea2..0da9f63ed8e5e5a 100644 --- a/src/schemas/base.ts +++ b/src/schemas/base.ts @@ -74,15 +74,20 @@ export const baseSchema = ({ image }: SchemaContext) => .describe( "Difficulty is displayed as a column in the [ListTutorials component](/style-guide/components/list-tutorials/).", ), - updated: z + reviewed: z .date() .optional() .describe( - "This is used to automatically add the [LastReviewed component](/style-guide/components/last-reviewed/).", + "A `YYYY-MM-DD` value that signals when the page was last explicitly reviewed from beginning to end. This is used to automatically add the [LastReviewed component](/style-guide/components/last-reviewed/). Commonly related to [tutorials](/style-guide/documentation-content-strategy/content-types/tutorial/) and [reference architectures](/style-guide/documentation-content-strategy/content-types/reference-architecture/).", ), spotlight: spotlightAuthorDetails, - release_notes_file_name: z.string().array().optional(), - release_notes_product_area_name: z.string().optional(), + release_notes_file_name: z + .string() + .array() + .optional() + .describe( + "Required for the [`ProductReleaseNotes`](/style-guide/components/usage/#productreleasenotes) component.", + ), products: z .string() .array() @@ -90,7 +95,10 @@ export const baseSchema = ({ image }: SchemaContext) => .describe( "The names of related products, which show on some grids for Examples, [Tutorials](/style-guide/documentation-content-strategy/content-types/tutorial/), and [Reference Architectures](/style-guide/documentation-content-strategy/content-types/reference-architecture/)", ), - summary: z.string().optional(), + summary: z + .string() + .optional() + .describe("Renders a summary description directly below the page title."), goal: z.string().array().optional(), operation: z.string().array().optional(), noindex: z @@ -117,7 +125,9 @@ export const baseSchema = ({ image }: SchemaContext) => component: z.string(), }) .optional() - .describe("Used by overrides for style guide component documentation"), + .describe( + "Used by overrides for style guide component documentation, which helps us display the [usage counts](/style-guide/components/usage/) for components directly on the component page itself.", + ), banner: z .object({ content: z.string(), @@ -129,7 +139,10 @@ export const baseSchema = ({ image }: SchemaContext) => .object({ id: z.string(), days: z.number().optional().default(7) }) .optional(), }) - .optional(), + .optional() + .describe( + "Displays a [Banner](https://developers.cloudflare.com/style-guide/frontmatter/banner/) on the current docs page.", + ), icon: SidebarIconSchema(), feedback: z .boolean() diff --git a/src/util/api.ts b/src/util/api.ts index 04fcd31a19379e2..73aa750e10bca06 100644 --- a/src/util/api.ts +++ b/src/util/api.ts @@ -1,7 +1,7 @@ import SwaggerParser from "@apidevtools/swagger-parser"; import type { OpenAPI } from "openapi-types"; -const COMMIT = "452be897d64d328f68c96520b16fc5f15ce58a97"; +const COMMIT = "f800c3f3a8528c05b4199ebbbb82c5af9a644ad9"; let schema: OpenAPI.Document | undefined; export const getSchema = async () => { diff --git a/src/util/components.ts b/src/util/components.ts index 7a613f4932e72c1..7e82ead518e8252 100644 --- a/src/util/components.ts +++ b/src/util/components.ts @@ -84,6 +84,25 @@ export async function getPartialsUsage(): Promise> { withFileTypes: true, }); + const partialEntities = await readdir("./src/content/partials/", { + recursive: true, + withFileTypes: true, + }); + + // Populate all partials with zero usage + const partialFiles = partialEntities.filter( + (entity) => entity.isFile() && entity.name.endsWith(".mdx"), + ); + for (const file of partialFiles) { + const parentPath = + process.platform === "win32" + ? file.parentPath.replaceAll("\\", "/") + : file.parentPath; + const product = parentPath.split("/")[3]; + const partialName = `${product}/${file.name.replace(".mdx", "")}`; + partials[partialName] = { count: 0, pages: new Set() }; + } + const files = entities.filter( (entity) => entity.isFile() && entity.name.endsWith(".mdx"), ); @@ -132,6 +151,5 @@ export async function getPartialsUsage(): Promise> { }); } } - return partials; } diff --git a/worker/index.ts b/worker/index.ts index 1e05a69b420ab46..78307d4a6a81242 100644 --- a/worker/index.ts +++ b/worker/index.ts @@ -72,6 +72,7 @@ export default class extends WorkerEntrypoint { return new Response(markdown, { headers: { "content-type": "text/markdown; charset=utf-8", + "x-robots-tag": "noindex", }, }); } diff --git a/worker/index.worker.test.ts b/worker/index.worker.test.ts index 89c02de4803e72a..aa0dd03852a19ac 100644 --- a/worker/index.worker.test.ts +++ b/worker/index.worker.test.ts @@ -33,14 +33,14 @@ describe("Cloudflare Docs", () => { const request = new Request("http://fakehost/docs/"); const response = await SELF.fetch(request, { redirect: "manual" }); expect(response.status).toBe(301); - expect(response.headers.get("Location")).toBe("/products/"); + expect(response.headers.get("Location")).toBe("/directory/"); }); it("redirects requests without a trailing slash", async () => { const request = new Request("http://fakehost/docs"); const response = await SELF.fetch(request, { redirect: "manual" }); expect(response.status).toBe(301); - expect(response.headers.get("Location")).toBe("/products/"); + expect(response.headers.get("Location")).toBe("/directory/"); }); it("redirects /workers/index.html.md to /workers/index.md", async () => { @@ -178,6 +178,7 @@ describe("Cloudflare Docs", () => { const response = await SELF.fetch(request); expect(response.status).toBe(200); + expect(response.headers.get("x-robots-tag")).toBe("noindex"); const text = await response.text(); expect(text).toMatchInlineSnapshot(`