diff --git a/demo.test.mjs b/demo.test.mjs index d9e11b42..ac6cf672 100644 --- a/demo.test.mjs +++ b/demo.test.mjs @@ -4,14 +4,16 @@ import { test } from 'node:test' test('edge function config', async () => { const { config } = await import('./demo/.netlify/edge-functions/angular-ssr/angular-ssr.mjs') - assert.deepEqual(config.excludedPath, [ + const excludedPathsWithMaskedHashes = config.excludedPath.map((path) => path.replace(/-[A-Z\d]{8}\./, '-HASHHASH.')) + + assert.deepEqual(excludedPathsWithMaskedHashes, [ '/.netlify/*', '/favicon.ico', '/heroes/index.html', '/index.csr.html', - '/main-KVCR6MBP.js', - '/polyfills-FFHMD2TL.js', - '/styles-5INURTSO.css', + '/main-HASHHASH.js', + '/polyfills-HASHHASH.js', + '/styles-HASHHASH.css', '/heroes', ]) }) diff --git a/package-lock.json b/package-lock.json index cfa11f08..266eed7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "semver": "^7.5.4" }, "devDependencies": { - "@netlify/build": "^29.58.9", + "@netlify/build": "^29.59.2", "@netlify/eslint-config-node": "^7.0.1", "@opentelemetry/api": "~1.8.0", "@types/node": "^18.19.0", @@ -358,9 +358,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", - "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "license": "MIT", "dependencies": { @@ -1902,28 +1902,28 @@ } }, "node_modules/@netlify/build": { - "version": "29.58.9", - "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.58.9.tgz", - "integrity": "sha512-tu45eh8izdyRlzRfxTSQ8J6oYrGMni77PZRP4Ks8tlBA8Hy81NGB/TptMYAVRSEYbvCyozNhgRFhacqEgpK/8A==", + "version": "29.59.2", + "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.59.2.tgz", + "integrity": "sha512-15Qxw6qK8I4iTWUbdcBtMZ021hTpRGTdzAjbnqNl/C6sUrwugJPK6uf17tNHQIfHcCsVgNm9H1m7AhtRh9eSdA==", "dev": true, "license": "MIT", "dependencies": { "@bugsnag/js": "^7.0.0", "@netlify/blobs": "^7.4.0", "@netlify/cache-utils": "^5.2.0", - "@netlify/config": "^20.21.7", + "@netlify/config": "^20.22.0", "@netlify/edge-bundler": "12.3.2", "@netlify/framework-info": "^9.9.1", - "@netlify/functions-utils": "^5.3.5", + "@netlify/functions-utils": "^5.3.8", "@netlify/git-utils": "^5.2.0", "@netlify/opentelemetry-utils": "^1.3.0", "@netlify/plugins-list": "^6.80.0", "@netlify/run-utils": "^5.2.0", - "@netlify/zip-it-and-ship-it": "9.42.5", + "@netlify/zip-it-and-ship-it": "9.43.1", "@sindresorhus/slugify": "^2.0.0", "ansi-escapes": "^6.0.0", "chalk": "^5.0.0", - "clean-stack": "^4.0.0", + "clean-stack": "^5.0.0", "execa": "^7.0.0", "fdir": "^6.0.1", "figures": "^5.0.0", @@ -1954,7 +1954,7 @@ "ps-list": "^8.0.0", "read-package-up": "^11.0.0", "readdirp": "^3.4.0", - "resolve": "^2.0.0-next.1", + "resolve": "^2.0.0-next.5", "rfdc": "^1.3.0", "safe-json-stringify": "^1.2.0", "semver": "^7.3.8", @@ -2019,6 +2019,22 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@netlify/build/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@netlify/build/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2026,6 +2042,19 @@ "dev": true, "license": "MIT" }, + "node_modules/@netlify/build/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@netlify/build/node_modules/execa": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", @@ -2461,9 +2490,9 @@ } }, "node_modules/@netlify/config": { - "version": "20.21.7", - "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.21.7.tgz", - "integrity": "sha512-SoXHbUoJyj/XcIAmyHxJ4orD19nmjQWgycxZsVRUSpUu/JouV8nmD/kzMJinFbzgJdXXTcKWDCnDbpfRZE4q8Q==", + "version": "20.22.0", + "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.22.0.tgz", + "integrity": "sha512-+0AODXGkZSEBHnc/nZLhU+mf3jtRyMp+kND62qxkm7LS4h5/4WlimmocVH6wjCUnPNJW6QubIo8takegXyaf6w==", "dev": true, "license": "MIT", "dependencies": { @@ -3159,13 +3188,13 @@ } }, "node_modules/@netlify/functions-utils": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.3.5.tgz", - "integrity": "sha512-wKZBMvKGuAeQ0G02q+Rpb4ZQh6CXqkNurdGCFVAKOdxPcmivb+CIUmCMcmsc+NDxWdjzZ4yxGla1x+Q3IkaAOw==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.3.8.tgz", + "integrity": "sha512-YAVztfC6PTQ9zC/nj/kO7yhQMDnBQccmdWo6haqbaOS9/mppt6od+E/yYX5tbV4r8YwL12vCddKRwyZiJjh1Ug==", "dev": true, "license": "MIT", "dependencies": { - "@netlify/zip-it-and-ship-it": "9.42.5", + "@netlify/zip-it-and-ship-it": "9.43.1", "cpy": "^9.0.0", "path-exists": "^5.0.0" }, @@ -3285,16 +3314,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/@netlify/node-cookies": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz", - "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.16.0 || >=16.0.0" - } - }, "node_modules/@netlify/open-api": { "version": "2.36.0", "resolved": "https://registry.npmjs.org/@netlify/open-api/-/open-api-2.36.0.tgz", @@ -3381,30 +3400,26 @@ } }, "node_modules/@netlify/serverless-functions-api": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.33.0.tgz", - "integrity": "sha512-il9HUEC5Nu+6l7vJR2vvolJ12SuI/Yo6K8ZoAKHx7RkMGzS0LHcopDW2pIVRTP8I3vQBxvzuof3FUfqLdAiXhw==", + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.34.0.tgz", + "integrity": "sha512-jygLyd/kyaWPpyuHwGUoor6cUf2DXUOZbnU08Zk7nM8E0dNk4F5lCHQKeadgxOBLKL7Osx5NQ6qLtg5EKJf1zA==", "dev": true, "license": "MIT", - "dependencies": { - "@netlify/node-cookies": "^0.1.0", - "urlpattern-polyfill": "8.0.2" - }, "engines": { "node": ">=18.0.0" } }, "node_modules/@netlify/zip-it-and-ship-it": { - "version": "9.42.5", - "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.42.5.tgz", - "integrity": "sha512-Z9nhchO9ZdqFpAVT6+cQMNAyt+MdhAalK4mCmCAe88YflHzZ0x8npevnZxtN4tytbW9nF4mywRMlP04BWOl5Ig==", + "version": "9.43.1", + "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.43.1.tgz", + "integrity": "sha512-NPOntCuGmpulEUc3wpk3Fct7wI2KsrPnx7sCmEotNDJcLUtb0xEgNpBNclSGA6k5uQDhrLkC5TpaEnCkxjxGww==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.22.5", - "@babel/types": "7.26.5", + "@babel/types": "7.26.9", "@netlify/binary-info": "^1.0.0", - "@netlify/serverless-functions-api": "^1.33.0", + "@netlify/serverless-functions-api": "^1.34.0", "@vercel/nft": "0.27.7", "archiver": "^7.0.0", "common-path-prefix": "^3.0.0", @@ -6181,7 +6196,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -8104,13 +8121,13 @@ } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -27246,9 +27263,9 @@ } }, "node_modules/postcss": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", - "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -29628,9 +29645,9 @@ } }, "node_modules/zod": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", - "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index 5f18fa5d..49558d58 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "eslint-plugin-unicorn": "^49.0.0", "husky": "^4.3.0", "netlify-cli": "^18.0.4", - "@netlify/build": "^29.58.9", + "@netlify/build": "^29.59.2", "npm-run-all2": "^6.0.0", "prettier": "^2.1.2" }, diff --git a/renovate.json5 b/renovate.json5 index 44207d26..f049882f 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -2,23 +2,24 @@ $schema: 'https://docs.renovatebot.com/renovate-schema.json', extends: ['github>netlify/renovate-config:default'], ignorePresets: [':prHourlyLimit2'], + prHourlyLimit: 0, semanticCommits: true, // The config we're extending ignores test dirs, but we want to bump some fixture deps ignorePaths: ['**/node_modules/**'], packageRules: [ - // Since we've enabled Renovate (see above) for fixture sites, adjust the config for these. + // Since we've enabled Renovate (see above) for demo and fixture sites, adjust the config for these. { - matchFileNames: ['tests/**/fixtures/**/package.json'], + matchFileNames: ['tests/**/fixtures/**/package.json', 'demo/package.json'], // If a fixture requires a specific framework version, never bump it. updatePinnedDependencies: false, // Always use `chore:` (since these are test fixtures), to avoid no-op releases. extends: [':semanticCommitTypeAll(chore)'], }, { - description: 'Stable & unstable Angular bumps in test fixtures', - matchFileNames: ['tests/**/fixtures/**/package.json'], - // See https://docs.renovatebot.com/presets-monorepo/#monorepoangular. - matchSourceUrls: ['https://github.com/angular/angular'], + description: 'Stable & unstable Angular bumps in demo and test fixtures', + groupName: 'Angular packages', + matchFileNames: ['tests/**/fixtures/**/package.json', 'demo/package.json'], + matchPackageNames: ['@angular/**', 'zone.js', '@angular-devkit/**'], // Override the schedule to get immediate PRs. schedule: null, // Apply a unique label so we can trigger additional workflows for these PRs. @@ -31,5 +32,22 @@ // difficult (or impossible) to implement so we just disable it entirely. automerge: false, }, + // Angular major version updates attempt to upgrade fixtures for Angular 17, 18 etc + // we never want to upgrade those, so we disable them + { + description: 'Disable angular major version upgrades', + matchFileNames: ['tests/**/fixtures/**/package.json', 'demo/package.json'], + matchPackageNames: ['@angular/**', '@angular-devkit/**'], + matchUpdateTypes: ['major'], + enabled: false, + }, + // zone.js is in 0.x.y version range, so we also disable minor updates for those + { + description: 'Disable zone.js minor version upgrades', + matchFileNames: ['tests/**/fixtures/**/package.json', 'demo/package.json'], + matchPackageNames: ['zone.js'], + matchUpdateTypes: ['minor', 'major'], + enabled: false, + }, ], }