diff --git a/.changeset/node-24-lts-requirement.md b/.changeset/node-24-lts-requirement.md new file mode 100644 index 0000000000..7dcbc3ba83 --- /dev/null +++ b/.changeset/node-24-lts-requirement.md @@ -0,0 +1,51 @@ +--- +"@web/browser-logs": major +"@web/config-loader": major +"@web/dev-server": major +"@web/dev-server-core": major +"@web/dev-server-esbuild": major +"@web/dev-server-hmr": major +"@web/dev-server-import-maps": major +"@web/dev-server-legacy": major +"@web/dev-server-polyfill": major +"@web/dev-server-rollup": major +"@web/dev-server-storybook": major +"@web/mocks": major +"@web/parse5-utils": major +"@web/polyfills-loader": major +"@web/rollup-plugin-copy": major +"@web/rollup-plugin-html": major +"@web/rollup-plugin-import-meta-assets": major +"@web/rollup-plugin-polyfills-loader": major +"@web/rollup-plugin-workbox": major +"@web/storybook-builder": major +"@web/storybook-framework-web-components": major +"@web/storybook-utils": major +"@web/test-runner": major +"@web/test-runner-browserstack": major +"@web/test-runner-chrome": major +"@web/test-runner-cli": major +"@web/test-runner-commands": major +"@web/test-runner-core": major +"@web/test-runner-coverage-v8": major +"@web/test-runner-junit-reporter": major +"@web/test-runner-mocha": major +"@web/test-runner-module-mocking": major +"@web/test-runner-playwright": major +"@web/test-runner-puppeteer": major +"@web/test-runner-saucelabs": major +"@web/test-runner-selenium": major +"@web/test-runner-visual-regression": major +"@web/test-runner-webdriver": major +--- + +**BREAKING**: Require Node.js 24 LTS (Iron) + +Update minimum Node.js version from 18.0.0 to 24.0.0 across all packages. Node.js 18 reached EOL in April 2025 + +**Migration:** +Update your Node.js version to 24 or later: +```bash +nvm install 24 +nvm use 24 +``` diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..8ef0a5258f --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v24.11.1 diff --git a/package-lock.json b/package-lock.json index 28895dc2b5..3e9a8e5c54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "wireit": "^0.14.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "integration/test-runner": { @@ -10027,6 +10027,57 @@ "node": ">=8" } }, + "node_modules/cidr-regex": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-4.0.3.tgz", + "integrity": "sha512-HOwDIy/rhKeMf6uOzxtv7FAbrz8zPjmVKfSpM+U7/bNBXC5rtOyr758jxcptiSx6ZZn5LOhPJT5WWxPAGDV8dw==", + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cidr-regex/node_modules/ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cidr-tools": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/cidr-tools/-/cidr-tools-6.4.2.tgz", + "integrity": "sha512-KZC8t2ipCqU2M+ISmTxRDGu9bku5MRU3V1cWyGEFJTZEzRhGvBJvVsbpZO5UAu12fExRFihtYGXAlgFFpmK9jw==", + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "4.0.3", + "ip-bigint": "7.3.0", + "ip-regex": "5.0.0", + "string-natural-compare": "3.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/cidr-tools/node_modules/ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cjs-module-lexer": { "version": "1.2.3", "license": "MIT" @@ -10182,6 +10233,33 @@ "node": ">=0.8" } }, + "node_modules/clone-regexp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", + "integrity": "sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==", + "license": "MIT", + "dependencies": { + "is-regexp": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-regexp/node_modules/is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/clone-response": { "version": "1.0.3", "license": "MIT", @@ -10715,6 +10793,18 @@ "node": ">= 0.6" } }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "license": "MIT" @@ -13494,6 +13584,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-0.1.1.tgz", + "integrity": "sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/function.prototype.name": { "version": "1.1.5", "license": "MIT", @@ -15874,6 +15976,108 @@ "version": "0.1.1", "license": "MIT" }, + "node_modules/internal-ip": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-8.0.1.tgz", + "integrity": "sha512-UBBMBk8f1PrIHUXOPI/6vW0eFWhZl/UGHpNaqLAAOANNZxkGuqq/IDfk2goQ902E9hy1mtM7iXhdgZCpCceeew==", + "license": "MIT", + "dependencies": { + "cidr-tools": "^6.4.1", + "default-gateway": "^7.2.2", + "is-ip": "^5.0.0", + "p-event": "^5.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" + } + }, + "node_modules/internal-ip/node_modules/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^7.1.1" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/internal-ip/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/internal-ip/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/internal-ip/node_modules/ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/internal-ip/node_modules/is-ip": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-5.0.1.tgz", + "integrity": "sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==", + "license": "MIT", + "dependencies": { + "ip-regex": "^5.0.0", + "super-regex": "^0.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/internal-ip/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/internal-slot": { "version": "1.0.5", "license": "MIT", @@ -15909,6 +16113,15 @@ "version": "1.1.3", "license": "BSD-3-Clause" }, + "node_modules/ip-bigint": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ip-bigint/-/ip-bigint-7.3.0.tgz", + "integrity": "sha512-2qVAe0Q9+Y+5nGvmogwK9y4kefD5Ks5l/IG0Jo1lhU9gIF34jifhqrwXwzkIl+LC594Q6SyAlngs4p890xsXVw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=16" + } + }, "node_modules/ip-regex": { "version": "4.3.0", "license": "MIT", @@ -19533,7 +19746,6 @@ }, "node_modules/mimic-fn": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -20177,7 +20389,6 @@ }, "node_modules/npm-run-path": { "version": "5.1.0", - "dev": true, "license": "MIT", "dependencies": { "path-key": "^4.0.0" @@ -20191,7 +20402,6 @@ }, "node_modules/npm-run-path/node_modules/path-key": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -20316,7 +20526,6 @@ }, "node_modules/onetime": { "version": "6.0.0", - "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" @@ -20408,6 +20617,33 @@ "node": ">=6" } }, + "node_modules/p-event": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", + "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", + "license": "MIT", + "dependencies": { + "p-timeout": "^5.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-event/node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-filter": { "version": "2.1.0", "dev": true, @@ -26939,6 +27175,12 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" + }, "node_modules/string-width": { "version": "5.1.2", "license": "MIT", @@ -27134,7 +27376,6 @@ }, "node_modules/strip-final-newline": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -27202,6 +27443,23 @@ "postcss": "^8.2.15" } }, + "node_modules/super-regex": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-0.2.0.tgz", + "integrity": "sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==", + "license": "MIT", + "dependencies": { + "clone-regexp": "^3.0.0", + "function-timeout": "^0.1.0", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "5.5.0", "license": "MIT", @@ -27561,6 +27819,21 @@ "node": ">=0.8.0" } }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "license": "MIT", + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tiny-invariant": { "version": "1.3.3", "license": "MIT" @@ -30746,7 +31019,7 @@ "puppeteer": "^24.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/config-loader": { @@ -30754,7 +31027,7 @@ "version": "0.3.3", "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server": { @@ -30767,15 +31040,15 @@ "@web/config-loader": "^0.3.0", "@web/dev-server-core": "^0.7.2", "@web/dev-server-rollup": "^0.6.1", - "camelcase": "^6.2.0", + "camelcase": "^6.3.0", "command-line-args": "^5.1.1", "command-line-usage": "^7.0.1", "debounce": "^1.2.0", "deepmerge": "^4.2.2", - "internal-ip": "^6.2.0", - "nanocolors": "^0.2.1", - "open": "^8.0.2", - "portfinder": "^1.0.32" + "internal-ip": "^8.0.1", + "nanocolors": "^0.2.13", + "open": "^8.4.2", + "portfinder": "^1.0.38" }, "bin": { "wds": "dist/bin.js", @@ -30787,7 +31060,7 @@ "puppeteer": "^24.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-core": { @@ -30983,7 +31256,7 @@ "dependencies": { "@mdn/browser-compat-data": "^4.0.0", "@web/dev-server-core": "^0.7.4", - "esbuild": "^0.27.0", + "esbuild": "^0.25.0", "parse5": "^6.0.1", "ua-parser-js": "^1.0.33" }, @@ -30994,7 +31267,7 @@ "preact": "^10.5.9" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-esbuild/node_modules/@esbuild/linux-x64": { @@ -31068,7 +31341,7 @@ "puppeteer": "^24.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-import-maps": { @@ -31087,7 +31360,7 @@ "@web/test-runner": "^0.20.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-import-maps/node_modules/parse5": { @@ -31125,7 +31398,7 @@ "@types/valid-url": "^1.0.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-legacy/node_modules/parse5": { @@ -31143,7 +31416,7 @@ "@web/polyfills-loader": "^2.3.1" }, "engines": { - "node": ">=16.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-rollup": { @@ -31153,7 +31426,7 @@ "dependencies": { "@rollup/plugin-node-resolve": "^15.0.1", "@web/dev-server-core": "^0.7.2", - "nanocolors": "^0.2.1", + "nanocolors": "^0.2.13", "parse5": "^6.0.1", "rollup": "^4.4.0", "whatwg-url": "^14.0.0" @@ -31174,7 +31447,7 @@ "rollup-plugin-postcss": "^4.0.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-rollup/node_modules/@rollup/plugin-alias": { @@ -31323,7 +31596,7 @@ "@rollup/plugin-terser": "^0.4.4", "@storybook/csf-tools": "^6.4.9", "@web/dev-server-core": "^0.7.2", - "@web/rollup-plugin-html": "^3.1.0", + "@web/rollup-plugin-html": "^2.1.2", "@web/rollup-plugin-polyfills-loader": "^2.1.1", "@web/storybook-prebuilt": "^0.1.37", "babel-plugin-bundled-import-meta": "^0.3.2", @@ -31343,7 +31616,7 @@ "htm": "^3.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/dev-server-storybook/node_modules/@rollup/plugin-babel": { @@ -31370,6 +31643,89 @@ } } }, + "packages/dev-server-storybook/node_modules/@web/rollup-plugin-html": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@web/rollup-plugin-html/-/rollup-plugin-html-2.4.1.tgz", + "integrity": "sha512-28n3S4FFlafkuk4bhaWNdgT8mDCoVBtSFeN829zrkWAzISZlHutkGJVD6xS35nUYGx+J/wfk635Fc+TX4mCm9g==", + "license": "MIT", + "dependencies": { + "@web/parse5-utils": "^2.1.0", + "glob": "^10.0.0", + "html-minifier-terser": "^7.1.0", + "lightningcss": "^1.24.0", + "parse5": "^6.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "packages/dev-server-storybook/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "packages/dev-server-storybook/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/dev-server-storybook/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "packages/dev-server-storybook/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/dev-server-storybook/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, "packages/dev-server/node_modules/array-back": { "version": "6.2.2", "license": "MIT", @@ -31409,43 +31765,10 @@ } } }, - "packages/dev-server/node_modules/internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", - "license": "MIT", - "dependencies": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" - } - }, "packages/dev-server/node_modules/ms": { "version": "2.1.3", "license": "MIT" }, - "packages/dev-server/node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "license": "MIT", - "dependencies": { - "p-timeout": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "packages/dev-server/node_modules/portfinder": { "version": "1.0.38", "license": "MIT", @@ -31662,7 +31985,7 @@ "@types/html-minifier-terser": "^7.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/parse5-utils/node_modules/parse5": { @@ -31702,7 +32025,7 @@ "@types/valid-url": "^1.0.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/polyfills-loader/node_modules/@webcomponents/scoped-custom-element-registry": { @@ -31726,7 +32049,7 @@ "@types/glob": "^8.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/rollup-plugin-copy/node_modules/@types/glob": { @@ -31799,7 +32122,7 @@ "rollup": "^4.4.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/rollup-plugin-html/node_modules/brace-expansion": { @@ -31861,7 +32184,7 @@ "magic-string": "^0.30.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/rollup-plugin-import-meta-assets/node_modules/@rollup/plugin-dynamic-import-vars": { @@ -31939,14 +32262,14 @@ "rollup": "^4.4.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/rollup-plugin-workbox": { "version": "8.1.3", "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", + "esbuild": "^0.25.0", "pretty-bytes": "^5.5.0", "workbox-build": "^7.0.0" } @@ -32020,11 +32343,11 @@ "@web/dev-server": "^0.4.0", "@web/dev-server-core": "^0.7.5", "@web/dev-server-rollup": "^0.6.1", - "@web/rollup-plugin-html": "^3.0.0", + "@web/rollup-plugin-html": "^2.3.0", "browser-assert": "^1.2.1", "cjs-module-lexer": "^1.2.3", "es-module-lexer": "^1.2.1", - "esbuild": "^0.27.0", + "esbuild": "^0.25.0", "glob": "^12.0.0", "lodash-es": "^4.17.21", "path-browserify": "^1.0.1", @@ -32039,7 +32362,7 @@ "@storybook/types": "^8.6.12" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/storybook-builder/node_modules/@esbuild/linux-x64": { @@ -32108,9 +32431,25 @@ "version": "3.0.3", "license": "MIT" }, + "packages/storybook-builder/node_modules/@web/rollup-plugin-html": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@web/rollup-plugin-html/-/rollup-plugin-html-2.4.1.tgz", + "integrity": "sha512-28n3S4FFlafkuk4bhaWNdgT8mDCoVBtSFeN829zrkWAzISZlHutkGJVD6xS35nUYGx+J/wfk635Fc+TX4mCm9g==", + "license": "MIT", + "dependencies": { + "@web/parse5-utils": "^2.1.0", + "glob": "^10.0.0", + "html-minifier-terser": "^7.1.0", + "lightningcss": "^1.24.0", + "parse5": "^6.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "packages/storybook-builder/node_modules/@web/rollup-plugin-html/node_modules/glob": { "version": "10.5.0", - "extraneous": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -32127,54 +32466,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/storybook-builder/node_modules/@web/rollup-plugin-html/node_modules/jackspeak": { - "version": "3.4.3", - "extraneous": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "packages/storybook-builder/node_modules/@web/rollup-plugin-html/node_modules/lru-cache": { - "version": "10.4.3", - "extraneous": true, - "license": "ISC" - }, - "packages/storybook-builder/node_modules/@web/rollup-plugin-html/node_modules/minimatch": { - "version": "9.0.9", - "extraneous": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/storybook-builder/node_modules/@web/rollup-plugin-html/node_modules/path-scurry": { - "version": "1.11.1", - "extraneous": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "packages/storybook-builder/node_modules/bail": { "version": "2.0.2", "license": "MIT", @@ -33161,6 +33452,12 @@ "version": "2.0.11", "license": "MIT" }, + "packages/storybook-builder/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, "packages/storybook-builder/node_modules/path-scurry": { "version": "2.0.1", "license": "BlueOak-1.0.0", @@ -33424,7 +33721,7 @@ "storybook": "^8.6.15" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/storybook-framework-web-components/node_modules/@storybook/blocks": { @@ -33476,7 +33773,7 @@ "react": "^19.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=24.0.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" @@ -33494,14 +33791,14 @@ "@web/test-runner-commands": "^0.9.0", "@web/test-runner-core": "^0.13.0", "@web/test-runner-mocha": "^0.9.0", - "camelcase": "^6.2.0", + "camelcase": "^6.3.0", "command-line-args": "^5.1.1", "command-line-usage": "^7.0.1", "convert-source-map": "^2.0.0", - "diff": "^5.2.2", - "globby": "^11.0.1", - "nanocolors": "^0.2.1", - "portfinder": "^1.0.32", + "diff": "^5.0.0", + "globby": "^11.1.0", + "nanocolors": "^0.2.13", + "portfinder": "^1.0.38", "source-map": "^0.7.3" }, "bin": { @@ -33516,7 +33813,7 @@ "concurrently": "^8.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-browserstack": { @@ -33535,7 +33832,7 @@ "portfinder": "^1.0.32" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-browserstack/node_modules/internal-ip": { @@ -33582,7 +33879,7 @@ "@web/test-runner-mocha": "^0.9.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-cli": { @@ -33590,7 +33887,7 @@ "version": "0.11.0", "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-commands": { @@ -33608,7 +33905,7 @@ "mocha": "^10.8.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-commands/node_modules/mkdirp": { @@ -33641,15 +33938,15 @@ "convert-source-map": "^2.0.0", "debounce": "^1.2.0", "dependency-graph": "^0.11.0", - "globby": "^11.0.1", + "globby": "^11.1.0", "internal-ip": "^6.2.0", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.0.2", "log-update": "^4.0.0", - "nanocolors": "^0.2.1", + "nanocolors": "^0.2.13", "nanoid": "^3.1.25", - "open": "^8.0.2", + "open": "^8.4.2", "picomatch": "^2.2.2", "source-map": "^0.7.3" }, @@ -33658,7 +33955,7 @@ "tsx": "^4.21.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-core/node_modules/chokidar": { @@ -33779,7 +34076,7 @@ "@types/picomatch": "^2.2.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-junit-reporter": { @@ -33797,7 +34094,7 @@ "@web/test-runner-playwright": "^0.11.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-mocha": { @@ -33813,7 +34110,7 @@ "mocha": "^10.8.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-module-mocking": { @@ -33829,7 +34126,7 @@ "@web/test-runner-core": "^0.13.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-playwright": { @@ -33846,7 +34143,7 @@ "portfinder": "^1.0.32" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-puppeteer": { @@ -33863,7 +34160,7 @@ "puppeteer-core": "^24.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-saucelabs": { @@ -33885,7 +34182,7 @@ "portfinder": "^1.0.32" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-saucelabs/node_modules/@sindresorhus/is": { @@ -34180,7 +34477,7 @@ "selenium-standalone": "^8.0.4" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-visual-regression": { @@ -34204,7 +34501,7 @@ "mocha": "^10.8.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-visual-regression/node_modules/mkdirp": { @@ -34230,7 +34527,7 @@ "selenium-standalone": "^8.0.4" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "packages/test-runner-webdriver/node_modules/@types/node": { diff --git a/package.json b/package.json index 7596f17228..8c42e386ea 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://github.com/modernweb-dev/web.git" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "node scripts/fix-jridgewell-dcts.js && rm -rf packages/dev-server-core/node_modules/@types/koa packages/dev-server-core/node_modules/@types/ws && npm run build:clean && tsc --build", diff --git a/packages/browser-logs/index.mjs b/packages/browser-logs/index.mjs deleted file mode 100644 index 24930934dc..0000000000 --- a/packages/browser-logs/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { deserialize, browserScript, parseStackTrace } = cjsEntrypoint; - -export { deserialize, browserScript, parseStackTrace }; diff --git a/packages/browser-logs/package.json b/packages/browser-logs/package.json index cb61f174cd..9a9eefd2c0 100644 --- a/packages/browser-logs/package.json +++ b/packages/browser-logs/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -52,5 +50,6 @@ "devDependencies": { "@esm-bundle/chai": "^4.1.5", "puppeteer": "^24.0.0" - } + }, + "type": "module" } diff --git a/packages/browser-logs/src/browserScript.ts b/packages/browser-logs/src/browserScript.ts index 22e1163692..bfe584ddb5 100644 --- a/packages/browser-logs/src/browserScript.ts +++ b/packages/browser-logs/src/browserScript.ts @@ -2,13 +2,18 @@ import fs from 'fs'; import path from 'path'; const REGEXP_SOURCE_MAP = /\/\/# sourceMappingURL=.*/; +const REGEXP_EXPORT = /^export /gm; +// @ts-ignore import.meta.dirname works at runtime on Node 24 +const __dir = import.meta.dirname; const serializeScript = fs - .readFileSync(path.resolve(__dirname, 'serialize.js'), 'utf-8') - .replace(REGEXP_SOURCE_MAP, ''); + .readFileSync(path.resolve(__dir, 'serialize.js'), 'utf-8') + .replace(REGEXP_SOURCE_MAP, '') + .replace(REGEXP_EXPORT, ''); const logUncaughtErrorsScript = fs - .readFileSync(path.resolve(__dirname, 'logUncaughtErrors.js'), 'utf-8') - .replace(REGEXP_SOURCE_MAP, ''); + .readFileSync(path.resolve(__dir, 'logUncaughtErrors.js'), 'utf-8') + .replace(REGEXP_SOURCE_MAP, '') + .replace(REGEXP_EXPORT, ''); /** * Create the browser script as an IIFE wrapper. diff --git a/packages/browser-logs/test/serialize-deserialize.test.ts b/packages/browser-logs/test/serialize-deserialize.test.ts index ee56a4744a..e5489d755d 100644 --- a/packages/browser-logs/test/serialize-deserialize.test.ts +++ b/packages/browser-logs/test/serialize-deserialize.test.ts @@ -7,7 +7,9 @@ import path from 'path'; import { deserialize } from '../src/deserialize.ts'; const __dirname = import.meta.dirname; -const serializeScript = fs.readFileSync(new URL('../dist/serialize.js', import.meta.url), 'utf-8'); +const serializeScript = fs + .readFileSync(new URL('../dist/serialize.js', import.meta.url), 'utf-8') + .replace(/^export /gm, ''); const defaultOptions = { browserRootDir: __dirname, cwd: __dirname }; describe('serialize deserialize', function () { diff --git a/packages/config-loader/index.mjs b/packages/config-loader/index.mjs deleted file mode 100644 index 95dbe7a033..0000000000 --- a/packages/config-loader/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -import cjsModule from './src/index.js'; - -const { readConfig, ConfigLoaderError } = cjsModule; -export { readConfig, ConfigLoaderError }; diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index ff04731e6f..1c29d02f76 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -14,9 +14,8 @@ "author": "modern-web", "homepage": "https://github.com/modernweb-dev/web/tree/master/packages/config-loader", "main": "src/index.js", - "type": "commonjs", "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -26,7 +25,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -42,9 +40,8 @@ "types": "dist/index.d.ts", "exports": { ".": { - "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./src/index.js" + "types": "./dist/index.d.ts", + "default": "./src/index.js" } } } diff --git a/packages/dev-server-core/index.mjs b/packages/dev-server-core/index.mjs deleted file mode 100644 index 784062c2e2..0000000000 --- a/packages/dev-server-core/index.mjs +++ /dev/null @@ -1,34 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { - FSWatcher, - Koa, - Server, - WebSocket, - DevServer, - WebSocketsManager, - getRequestBrowserPath, - getRequestFilePath, - getResponseBody, - getHtmlPath, - isInlineScriptRequest, - PluginSyntaxError, - PluginError, -} = cjsEntrypoint; - -export { - FSWatcher, - Koa, - Server, - WebSocket, - DevServer, - WebSocketsManager, - getRequestBrowserPath, - getRequestFilePath, - getResponseBody, - getHtmlPath, - isInlineScriptRequest, - PluginSyntaxError, - PluginError, -}; diff --git a/packages/dev-server-core/package.json b/packages/dev-server-core/package.json index 12124c25f2..64accca477 100644 --- a/packages/dev-server-core/package.json +++ b/packages/dev-server-core/package.json @@ -26,14 +26,10 @@ "./test-helpers": { "types": "./test-helpers.d.ts", "default": "./dist/test-helpers.js" - }, - "./test-helpers.js": { - "types": "./test-helpers.d.ts", - "default": "./dist/test-helpers.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -41,14 +37,13 @@ "start:event-stream": "node demo/event-stream/start-server.js", "start:http2": "node demo/http2/start-server.js", "start:import-asset": "node demo/import-asset/start-server.js", - "test": "node --experimental-transform-types --test --test-force-exit --test-timeout 120000 \"test/**/*.test.ts\"", - "test:watch": "node --experimental-transform-types --test --test-force-exit --watch \"test/**/*.test.ts\"" + "test": "mocha \"test/**/*.test.{ts,js,mjs,cjs}\" --require ts-node/register --exit --reporter dot", + "test:watch": "mocha \"test/**/*.test.{ts,js,mjs,cjs}\" --require ts-node/register --watch --watch-files src,test" }, "files": [ ".self-signed-dev-server-ssl.cert", ".self-signed-dev-server-ssl.key", "*.d.ts", - "*.mjs", "dist", "src" ], @@ -88,5 +83,6 @@ "express": "^4.21.2", "nanoid": "^3.1.25", "portfinder": "^1.0.32" - } + }, + "type": "module" } diff --git a/packages/dev-server-core/src/server/createServer.ts b/packages/dev-server-core/src/server/createServer.ts index 8dd5d090a1..1da83c4c09 100644 --- a/packages/dev-server-core/src/server/createServer.ts +++ b/packages/dev-server-core/src/server/createServer.ts @@ -68,7 +68,7 @@ export function createServer( let server: Server; if (cfg.http2) { - const dir = path.join(__dirname, '..'); + const dir = path.join(import.meta.dirname, '..'); const options = { key: fs.readFileSync( cfg.sslKey diff --git a/packages/dev-server-core/test-helpers.mjs b/packages/dev-server-core/test-helpers.mjs deleted file mode 100644 index 9c0d7140bc..0000000000 --- a/packages/dev-server-core/test-helpers.mjs +++ /dev/null @@ -1,20 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/test-helpers.js'; - -const { - virtualFilesPlugin, - createTestServer, - timeout, - fetchText, - expectIncludes, - expectNotIncludes, -} = cjsEntrypoint; - -export { - virtualFilesPlugin, - createTestServer, - timeout, - fetchText, - expectIncludes, - expectNotIncludes, -}; diff --git a/packages/dev-server-esbuild/index.mjs b/packages/dev-server-esbuild/index.mjs deleted file mode 100644 index 3d9d2f5958..0000000000 --- a/packages/dev-server-esbuild/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { esbuildPlugin } = cjsEntrypoint; - -export { esbuildPlugin }; diff --git a/packages/dev-server-esbuild/package.json b/packages/dev-server-esbuild/package.json index 8292cc07a7..ec7fa78edd 100644 --- a/packages/dev-server-esbuild/package.json +++ b/packages/dev-server-esbuild/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -34,7 +33,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -53,7 +51,7 @@ "dependencies": { "@mdn/browser-compat-data": "^4.0.0", "@web/dev-server-core": "^0.7.4", - "esbuild": "^0.27.0", + "esbuild": "^0.25.0", "parse5": "^6.0.1", "ua-parser-js": "^1.0.33" }, @@ -62,5 +60,6 @@ "@web/dev-server-rollup": "^0.6.1", "lit-element": "^3.0.0 || ^4.0.1", "preact": "^10.5.9" - } + }, + "type": "module" } diff --git a/packages/dev-server-hmr/index.mjs b/packages/dev-server-hmr/index.mjs deleted file mode 100644 index 63a3204eff..0000000000 --- a/packages/dev-server-hmr/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { hmrPlugin } = cjsEntrypoint; - -export { hmrPlugin }; diff --git a/packages/dev-server-hmr/package.json b/packages/dev-server-hmr/package.json index 41baa8fda1..793c4723c6 100644 --- a/packages/dev-server-hmr/package.json +++ b/packages/dev-server-hmr/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -34,7 +33,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "scripts", "src" @@ -45,5 +43,6 @@ "devDependencies": { "lit-html": "^2.7.3 || ^3.0.0", "puppeteer": "^24.0.0" - } + }, + "type": "module" } diff --git a/packages/dev-server-hmr/src/HmrPlugin.ts b/packages/dev-server-hmr/src/HmrPlugin.ts index f3401ef185..1e942ee3fd 100644 --- a/packages/dev-server-hmr/src/HmrPlugin.ts +++ b/packages/dev-server-hmr/src/HmrPlugin.ts @@ -10,8 +10,9 @@ import WebSocket from 'ws'; import type { Context } from 'koa'; import path, { posix as pathUtil } from 'path'; import fs from 'fs'; +import { fileURLToPath } from 'node:url'; -const hmrClientScriptPath = require.resolve('../scripts/hmrClientScript.js'); +const hmrClientScriptPath = fileURLToPath(import.meta.resolve('../scripts/hmrClientScript.js')); let hmrClientScript = fs.readFileSync(hmrClientScriptPath, 'utf-8'); export interface HmrReloadMessage { diff --git a/packages/dev-server-import-maps/index.mjs b/packages/dev-server-import-maps/index.mjs deleted file mode 100644 index 7d0bae643f..0000000000 --- a/packages/dev-server-import-maps/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { importMapsPlugin } = cjsEntrypoint; - -export { importMapsPlugin }; diff --git a/packages/dev-server-import-maps/package.json b/packages/dev-server-import-maps/package.json index d166ba6f58..6bc8b9ff76 100644 --- a/packages/dev-server-import-maps/package.json +++ b/packages/dev-server-import-maps/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -33,7 +32,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -59,5 +57,6 @@ }, "devDependencies": { "@web/test-runner": "^0.20.0" - } + }, + "type": "module" } diff --git a/packages/dev-server-legacy/index.mjs b/packages/dev-server-legacy/index.mjs deleted file mode 100644 index f0f92a15f3..0000000000 --- a/packages/dev-server-legacy/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { legacyPlugin } = cjsEntrypoint; - -export { legacyPlugin }; diff --git a/packages/dev-server-legacy/package.json b/packages/dev-server-legacy/package.json index aadff0ca27..f572f18a53 100644 --- a/packages/dev-server-legacy/package.json +++ b/packages/dev-server-legacy/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -33,7 +32,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -72,5 +70,6 @@ "@types/browserslist-useragent": "^3.0.2", "@types/caniuse-api": "^3.0.1", "@types/valid-url": "^1.0.3" - } + }, + "type": "module" } diff --git a/packages/dev-server-legacy/src/babelTransform.ts b/packages/dev-server-legacy/src/babelTransform.ts index 606286b212..c10659a8f6 100644 --- a/packages/dev-server-legacy/src/babelTransform.ts +++ b/packages/dev-server-legacy/src/babelTransform.ts @@ -1,6 +1,9 @@ +import { fileURLToPath } from 'node:url'; import { transformAsync } from '@babel/core'; import type { TransformOptions } from '@babel/core'; +const resolve = (specifier: string) => fileURLToPath(import.meta.resolve(specifier)); + export const es5Config: TransformOptions = { caller: { name: '@web/dev-server-legacy', @@ -11,7 +14,7 @@ export const es5Config: TransformOptions = { configFile: false, presets: [ [ - require.resolve('@babel/preset-env'), + resolve('@babel/preset-env'), { targets: ['defaults', 'ie 10'], useBuiltIns: false, @@ -26,10 +29,10 @@ export const es5Config: TransformOptions = { * it only ensures that babel does not crash when you're using them. */ plugins: [ - require.resolve('@babel/plugin-syntax-import-meta'), - require.resolve('@babel/plugin-syntax-class-properties'), - require.resolve('@babel/plugin-syntax-numeric-separator'), - require.resolve('@babel/plugin-syntax-dynamic-import'), + resolve('@babel/plugin-syntax-import-meta'), + resolve('@babel/plugin-syntax-class-properties'), + resolve('@babel/plugin-syntax-numeric-separator'), + resolve('@babel/plugin-syntax-dynamic-import'), ], }; @@ -37,11 +40,11 @@ export const systemJsConfig: TransformOptions = { ...es5Config, plugins: [ ...(es5Config.plugins ?? []), - require.resolve('@babel/plugin-proposal-dynamic-import'), - require.resolve('@babel/plugin-transform-modules-systemjs'), + resolve('@babel/plugin-proposal-dynamic-import'), + resolve('@babel/plugin-transform-modules-systemjs'), // systemjs adds template literals, we do systemjs after (potential) // es5 compilation so we need to ensure it stays es5 - require.resolve('@babel/plugin-transform-template-literals'), + resolve('@babel/plugin-transform-template-literals'), ], }; diff --git a/packages/dev-server-polyfill/package.json b/packages/dev-server-polyfill/package.json index 25f2d7ae3f..0d17d8b72d 100644 --- a/packages/dev-server-polyfill/package.json +++ b/packages/dev-server-polyfill/package.json @@ -21,7 +21,7 @@ } }, "engines": { - "node": ">=16.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc" diff --git a/packages/dev-server-rollup/index.mjs b/packages/dev-server-rollup/index.mjs deleted file mode 100644 index 2e9fdd7555..0000000000 --- a/packages/dev-server-rollup/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { nodeResolve, fromRollup, rollupAdapter, rollupBundlePlugin } = cjsEntrypoint; - -export { nodeResolve, fromRollup, rollupAdapter, rollupBundlePlugin }; diff --git a/packages/dev-server-rollup/package.json b/packages/dev-server-rollup/package.json index cf889b183c..259bb89218 100644 --- a/packages/dev-server-rollup/package.json +++ b/packages/dev-server-rollup/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "test:node": "node --experimental-transform-types --test --test-force-exit --test-timeout 120000 \"test/node/**/*.test.ts\"", @@ -31,7 +30,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -50,7 +48,7 @@ "dependencies": { "@rollup/plugin-node-resolve": "^15.0.1", "@web/dev-server-core": "^0.7.2", - "nanocolors": "^0.2.1", + "nanocolors": "^0.2.13", "parse5": "^6.0.1", "rollup": "^4.4.0", "whatwg-url": "^14.0.0" @@ -69,5 +67,6 @@ "mocha": "^10.8.2", "postcss": "^8.4.31", "rollup-plugin-postcss": "^4.0.2" - } + }, + "type": "module" } diff --git a/packages/dev-server-storybook/package.json b/packages/dev-server-storybook/package.json index e625e911d6..f04bb15ac7 100644 --- a/packages/dev-server-storybook/package.json +++ b/packages/dev-server-storybook/package.json @@ -21,12 +21,12 @@ "type": "module", "exports": { ".": { - "import": "./dist/serve/storybookPlugin.js", - "types": "./dist/serve/storybookPlugin.d.ts" + "types": "./dist/serve/storybookPlugin.d.ts", + "default": "./dist/serve/storybookPlugin.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build:wc": "node dist/build/cli.js -c demo/wc/.storybook", @@ -37,7 +37,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "CHANGELOG.md", "dist", "src" @@ -62,7 +61,7 @@ "@rollup/plugin-terser": "^0.4.4", "@storybook/csf-tools": "^6.4.9", "@web/dev-server-core": "^0.7.2", - "@web/rollup-plugin-html": "^3.1.0", + "@web/rollup-plugin-html": "^2.1.2", "@web/rollup-plugin-polyfills-loader": "^2.1.1", "@web/storybook-prebuilt": "^0.1.37", "babel-plugin-bundled-import-meta": "^0.3.2", diff --git a/packages/dev-server-storybook/src/shared/mdx/transformMdxToCsf.ts b/packages/dev-server-storybook/src/shared/mdx/transformMdxToCsf.ts index 06674d6b3b..afb5a3d5dd 100644 --- a/packages/dev-server-storybook/src/shared/mdx/transformMdxToCsf.ts +++ b/packages/dev-server-storybook/src/shared/mdx/transformMdxToCsf.ts @@ -1,3 +1,4 @@ +import { fileURLToPath } from 'node:url'; import mdx from '@mdx-js/mdx'; import { transformAsync } from '@babel/core'; // @ts-ignore @@ -17,7 +18,7 @@ export async function transformMdxToCsf(body: string, filePath: string): Promise const babelResult = await transformAsync(jsx, { filename: filePath, sourceMaps: true, - plugins: [require.resolve('@babel/plugin-transform-react-jsx')], + plugins: [fileURLToPath(import.meta.resolve('@babel/plugin-transform-react-jsx'))], }); if (!babelResult?.code) { diff --git a/packages/dev-server/index.mjs b/packages/dev-server/index.mjs deleted file mode 100644 index 113d1f3dee..0000000000 --- a/packages/dev-server/index.mjs +++ /dev/null @@ -1,7 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { startDevServer, mergeConfigs, DevServerStartError, esbuildPlugin, nodeResolvePlugin } = - cjsEntrypoint; - -export { startDevServer, mergeConfigs, DevServerStartError, esbuildPlugin, nodeResolvePlugin }; diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index 8fef100c0d..4279919d6f 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -21,12 +21,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "start": "npm run start:syntax", @@ -42,7 +41,6 @@ }, "files": [ "*.d.ts", - "*.mjs", "dist", "src" ], @@ -60,19 +58,20 @@ "@web/config-loader": "^0.3.0", "@web/dev-server-core": "^0.7.2", "@web/dev-server-rollup": "^0.6.1", - "camelcase": "^6.2.0", + "camelcase": "^6.3.0", "command-line-args": "^5.1.1", "command-line-usage": "^7.0.1", "debounce": "^1.2.0", "deepmerge": "^4.2.2", - "internal-ip": "^6.2.0", - "nanocolors": "^0.2.1", - "open": "^8.0.2", - "portfinder": "^1.0.32" + "internal-ip": "^8.0.1", + "nanocolors": "^0.2.13", + "open": "^8.4.2", + "portfinder": "^1.0.38" }, "devDependencies": { "@types/command-line-usage": "^5.0.1", "lit-html": "^2.7.3 || ^3.0.0", "puppeteer": "^24.0.0" - } + }, + "type": "module" } diff --git a/packages/dev-server/src/plugins/esbuildPlugin.ts b/packages/dev-server/src/plugins/esbuildPlugin.ts index 42a4c42437..1ca8b56222 100644 --- a/packages/dev-server/src/plugins/esbuildPlugin.ts +++ b/packages/dev-server/src/plugins/esbuildPlugin.ts @@ -1,6 +1,10 @@ +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); + function requirePlugin() { try { - const path = require.resolve('@web/dev-server-esbuild', { paths: [__dirname, process.cwd()] }); + const path = require.resolve('@web/dev-server-esbuild'); return require(path); } catch (error) { if ((error as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND') { diff --git a/packages/parse5-utils/index.mjs b/packages/parse5-utils/index.mjs index 9c207eaea7..b0a5f80d39 100644 --- a/packages/parse5-utils/index.mjs +++ b/packages/parse5-utils/index.mjs @@ -1,4 +1,6 @@ -import cjsEntrypoint from './src/index.js'; +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); +const cjsEntrypoint = require('./src/index.js'); const { createDocument, diff --git a/packages/parse5-utils/package.json b/packages/parse5-utils/package.json index 63d7f4be20..13f53c056a 100644 --- a/packages/parse5-utils/package.json +++ b/packages/parse5-utils/package.json @@ -18,11 +18,11 @@ ".": { "types": "./index.d.ts", "import": "./index.mjs", - "require": "./src/index.js" + "default": "./src/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -31,7 +31,6 @@ }, "files": [ "*.d.ts", - "*.mjs", "dist", "src" ], diff --git a/packages/polyfills-loader/index.mjs b/packages/polyfills-loader/index.mjs deleted file mode 100644 index 3dd11914bc..0000000000 --- a/packages/polyfills-loader/index.mjs +++ /dev/null @@ -1,20 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { - createPolyfillsData, - createPolyfillsLoader, - injectPolyfillsLoader, - hasFileOfType, - fileTypes, - getScriptFileType, -} = cjsEntrypoint; - -export { - createPolyfillsData, - createPolyfillsLoader, - injectPolyfillsLoader, - hasFileOfType, - fileTypes, - getScriptFileType, -}; diff --git a/packages/polyfills-loader/package.json b/packages/polyfills-loader/package.json index 1dc2e5a754..b91c6570f8 100644 --- a/packages/polyfills-loader/package.json +++ b/packages/polyfills-loader/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -33,7 +32,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -70,5 +68,6 @@ "@types/babel__core": "^7.1.12", "@types/parse5": "^6.0.1", "@types/valid-url": "^1.0.3" - } + }, + "type": "module" } diff --git a/packages/polyfills-loader/src/createPolyfillsData.ts b/packages/polyfills-loader/src/createPolyfillsData.ts index d2172d39a8..447fd72074 100644 --- a/packages/polyfills-loader/src/createPolyfillsData.ts +++ b/packages/polyfills-loader/src/createPolyfillsData.ts @@ -1,4 +1,5 @@ import path from 'path'; +import { fileURLToPath } from 'node:url'; import fs from 'fs'; import { minify } from 'terser'; import type { PolyfillsLoaderConfig, PolyfillConfig, PolyfillFile } from './types.ts'; @@ -25,47 +26,61 @@ export async function createPolyfillsData(cfg: PolyfillsLoaderConfig): Promise

import(s);').call(); return false; } catch (_) { return true; } })()", - path: require.resolve('dynamic-import-polyfill/dist/dynamic-import-polyfill.umd.js'), + path: fileURLToPath(dynamicImportPath), initializer: "window.dynamicImportPolyfill.initialize({ importFunctionName: 'importShim' });", }); } if (polyfills.intersectionObserver) { + const intersectionObserverPath = await import.meta + .resolve('intersection-observer/intersection-observer.js'); addPolyfillConfig({ name: 'intersection-observer', test: "!('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype)", - path: require.resolve('intersection-observer/intersection-observer.js'), + path: fileURLToPath(intersectionObserverPath), minify: true, }); } if (polyfills.resizeObserver) { + const resizeObserverPath = await import.meta + .resolve('resize-observer-polyfill/dist/ResizeObserver.global.js'); addPolyfillConfig({ name: 'resize-observer', test: "!('ResizeObserver' in window)", - path: require.resolve('resize-observer-polyfill/dist/ResizeObserver.global.js'), + path: fileURLToPath(resizeObserverPath), minify: true, }); } if (polyfills.scopedCustomElementRegistry) { + const scopedRegistryPath = await import.meta + .resolve('@webcomponents/scoped-custom-element-registry/scoped-custom-element-registry.min.js'); addPolyfillConfig({ name: 'scoped-custom-element-registry', test: "!('createElement' in ShadowRoot.prototype)", - path: require.resolve('@webcomponents/scoped-custom-element-registry/scoped-custom-element-registry.min.js'), + path: fileURLToPath(scopedRegistryPath), }); } if (polyfills.webcomponents && !polyfills.shadyCssCustomStyle) { + const webcomponentsPath = await import.meta + .resolve('@webcomponents/webcomponentsjs/webcomponents-bundle.js'); addPolyfillConfig({ name: 'webcomponents', test: "!('attachShadow' in Element.prototype) || !('getRootNode' in Element.prototype) || (window.ShadyDOM && window.ShadyDOM.force)", - path: require.resolve('@webcomponents/webcomponentsjs/webcomponents-bundle.js'), + path: fileURLToPath(webcomponentsPath), }); // If a browser does not support nomodule attribute, but does support custom elements, we need // to load the custom elements es5 adapter. This is the case for Safari 10.1 + const es5AdapterPath = await import.meta + .resolve('@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js'); addPolyfillConfig({ name: 'custom-elements-es5-adapter', test: "!('noModule' in HTMLScriptElement.prototype) && 'getRootNode' in Element.prototype", - path: require.resolve('@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js'), + path: fileURLToPath(es5AdapterPath), }); } @@ -182,13 +206,20 @@ export async function createPolyfillsData(cfg: PolyfillsLoaderConfig): Promise

=18.0.0" + "node": ">=24.0.0" }, "scripts": { "test:node": "node --experimental-transform-types --test --test-force-exit --test-timeout 120000 'test/**/*.test.mjs'", @@ -35,7 +34,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], diff --git a/packages/rollup-plugin-html/index.mjs b/packages/rollup-plugin-html/index.mjs deleted file mode 100644 index 4d19d569b8..0000000000 --- a/packages/rollup-plugin-html/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { rollupPluginHTML } = cjsEntrypoint; - -export { rollupPluginHTML }; diff --git a/packages/rollup-plugin-html/package.json b/packages/rollup-plugin-html/package.json index 3450446d9f..9252ba5bfc 100644 --- a/packages/rollup-plugin-html/package.json +++ b/packages/rollup-plugin-html/package.json @@ -16,13 +16,12 @@ "main": "dist/index.js", "exports": { ".": { - "import": "./index.mjs", - "require": "./dist/index.js", - "types": "./dist/index.d.ts" + "types": "./dist/index.d.ts", + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "demo:mpa": "rm -rf demo/dist && rollup -c demo/mpa/rollup.config.js --watch & npm run serve-demo", @@ -33,7 +32,6 @@ }, "files": [ "*.js", - "*.mjs", "dist", "src" ], @@ -58,5 +56,6 @@ "@types/prettier": "^3.0.0", "prettier": "^3.6.2", "rollup": "^4.4.0" - } + }, + "type": "module" } diff --git a/packages/rollup-plugin-import-meta-assets/index.mjs b/packages/rollup-plugin-import-meta-assets/index.mjs deleted file mode 100644 index 6304b074df..0000000000 --- a/packages/rollup-plugin-import-meta-assets/index.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import cjsEntrypoint from './src/rollup-plugin-import-meta-assets.js'; - -const { importMetaAssets } = cjsEntrypoint; - -export { importMetaAssets }; diff --git a/packages/rollup-plugin-import-meta-assets/package.json b/packages/rollup-plugin-import-meta-assets/package.json index c14a0e6921..675cc2d334 100644 --- a/packages/rollup-plugin-import-meta-assets/package.json +++ b/packages/rollup-plugin-import-meta-assets/package.json @@ -16,12 +16,11 @@ "main": "src/index.js", "exports": { ".": { - "import": "./index.mjs", - "require": "./src/index.js" + "default": "./src/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "test": "npm run test:node", @@ -31,7 +30,6 @@ }, "files": [ "*.js", - "*.mjs", "dist", "src" ], diff --git a/packages/rollup-plugin-polyfills-loader/index.mjs b/packages/rollup-plugin-polyfills-loader/index.mjs deleted file mode 100644 index f94c3df280..0000000000 --- a/packages/rollup-plugin-polyfills-loader/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { polyfillsLoader } = cjsEntrypoint; - -export { polyfillsLoader }; diff --git a/packages/rollup-plugin-polyfills-loader/package.json b/packages/rollup-plugin-polyfills-loader/package.json index 2836fce0d6..991fc4f843 100644 --- a/packages/rollup-plugin-polyfills-loader/package.json +++ b/packages/rollup-plugin-polyfills-loader/package.json @@ -16,13 +16,12 @@ "main": "dist/index.js", "exports": { ".": { - "import": "./index.mjs", - "require": "./dist/index.js", - "types": "./dist/index.d.ts" + "types": "./dist/index.d.ts", + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "test:node": "node --experimental-transform-types --test --test-force-exit --test-timeout 120000 \"test/**/*.test.ts\"", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -50,5 +48,6 @@ "devDependencies": { "@web/rollup-plugin-html": "^3.0.0", "rollup": "^4.4.0" - } + }, + "type": "module" } diff --git a/packages/rollup-plugin-workbox/index.mjs b/packages/rollup-plugin-workbox/index.mjs deleted file mode 100644 index bd27d0c2b7..0000000000 --- a/packages/rollup-plugin-workbox/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { generateSW, injectManifest } = cjsEntrypoint; - -export { generateSW, injectManifest }; diff --git a/packages/rollup-plugin-workbox/package.json b/packages/rollup-plugin-workbox/package.json index 6ad0628913..7ebbe9c65f 100644 --- a/packages/rollup-plugin-workbox/package.json +++ b/packages/rollup-plugin-workbox/package.json @@ -18,8 +18,7 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "scripts": { @@ -32,12 +31,13 @@ "workbox" ], "dependencies": { - "esbuild": "^0.27.0", + "esbuild": "^0.25.0", "pretty-bytes": "^5.5.0", "workbox-build": "^7.0.0" }, "contributors": [ "Pascal Schilp ", "Benny Powers " - ] + ], + "type": "module" } diff --git a/packages/storybook-builder/index.mjs b/packages/storybook-builder/index.mjs deleted file mode 100644 index 6e99cc3cba..0000000000 --- a/packages/storybook-builder/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { bail, start, build } = cjsEntrypoint; - -export { bail, start, build }; diff --git a/packages/storybook-builder/package.json b/packages/storybook-builder/package.json index adc0a4de51..fe1707319a 100644 --- a/packages/storybook-builder/package.json +++ b/packages/storybook-builder/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "require": "./dist/index.js", - "import": "./index.mjs" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc" @@ -30,7 +29,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "CHANGELOG.md", "dist", "static", @@ -58,11 +56,11 @@ "@web/dev-server": "^0.4.0", "@web/dev-server-core": "^0.7.5", "@web/dev-server-rollup": "^0.6.1", - "@web/rollup-plugin-html": "^3.0.0", + "@web/rollup-plugin-html": "^2.3.0", "browser-assert": "^1.2.1", "cjs-module-lexer": "^1.2.3", "es-module-lexer": "^1.2.1", - "esbuild": "^0.27.0", + "esbuild": "^0.25.0", "glob": "^12.0.0", "lodash-es": "^4.17.21", "path-browserify": "^1.0.1", @@ -75,5 +73,6 @@ }, "devDependencies": { "@storybook/types": "^8.6.12" - } + }, + "type": "module" } diff --git a/packages/storybook-builder/src/esbuild-plugin-commonjs-named-exports.ts b/packages/storybook-builder/src/esbuild-plugin-commonjs-named-exports.ts index 3b9fd6567f..31d35cbeda 100644 --- a/packages/storybook-builder/src/esbuild-plugin-commonjs-named-exports.ts +++ b/packages/storybook-builder/src/esbuild-plugin-commonjs-named-exports.ts @@ -1,5 +1,6 @@ import type { Plugin } from 'esbuild'; import { readFile } from 'node:fs/promises'; +import { createRequire } from 'node:module'; import { dirname, relative } from 'node:path'; export function esbuildPluginCommonjsNamedExports(modules: string[]): Plugin { @@ -79,7 +80,7 @@ export function esbuildPluginCommonjsNamedExports(modules: string[]): Plugin { } for (const reexport of reexports) { - const reexportPath = require.resolve(reexport, { paths: [dirname(path)] }); + const reexportPath = createRequire(`${dirname(path)}/noop.js`).resolve(reexport); const deepExports = await getNamedExports(reexportPath); for (const deepExport of deepExports) { exports.push(deepExport); diff --git a/packages/storybook-builder/src/generate-iframe-html.ts b/packages/storybook-builder/src/generate-iframe-html.ts index 27d94cffb8..61f0ab54e5 100644 --- a/packages/storybook-builder/src/generate-iframe-html.ts +++ b/packages/storybook-builder/src/generate-iframe-html.ts @@ -3,14 +3,18 @@ import { normalizeStories } from '@storybook/core-common'; import type { DocsOptions, Options, TagsOptions } from '@storybook/types'; import { readFile } from 'node:fs/promises'; +import { fileURLToPath } from 'node:url'; import { virtualAppFilename } from './virtual-file-names.ts'; export type PreviewHtml = string | undefined; export async function generateIframeHtml(options: Options): Promise { - const iframeHtmlTemplate = await readFile(require.resolve('../static/iframe-template.html'), { - encoding: 'utf-8', - }); + const iframeHtmlTemplate = await readFile( + fileURLToPath(import.meta.resolve('../static/iframe-template.html')), + { + encoding: 'utf-8', + }, + ); const { configType, features, presets } = options; const build = await presets.apply('build'); const frameworkOptions = await presets.apply | null>('frameworkOptions'); diff --git a/packages/storybook-builder/src/get-node-module-dir.ts b/packages/storybook-builder/src/get-node-module-dir.ts index 154b4eccee..f779ce17b3 100644 --- a/packages/storybook-builder/src/get-node-module-dir.ts +++ b/packages/storybook-builder/src/get-node-module-dir.ts @@ -1,5 +1,6 @@ import { dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; export function getNodeModuleDir(moduleName: string): string { - return dirname(require.resolve(`${moduleName}/package.json`)); + return dirname(fileURLToPath(import.meta.resolve(`${moduleName}/package.json`))); } diff --git a/packages/storybook-builder/src/index.ts b/packages/storybook-builder/src/index.ts index e8ded83046..9b826d8dd5 100644 --- a/packages/storybook-builder/src/index.ts +++ b/packages/storybook-builder/src/index.ts @@ -30,6 +30,7 @@ import { import { rollupPluginStorybookBuilder } from './rollup-plugin-storybook-builder.ts'; import { stringifyProcessEnvs } from './stringify-process-envs.ts'; +// @ts-ignore CJS interop const wdsPluginExternalGlobals = fromRollup(rollupPluginExternalGlobals); const wdsPluginMdx = fromRollup(rollupPluginMdx); const wdsPluginPrebundleModules = fromRollup(rollupPluginPrebundleModules); @@ -174,6 +175,7 @@ export const build: WdsBuilder['build'] = async ({ startTime, options }) => { rollupPluginPrebundleModules(env, options), rollupPluginStorybookBuilder(options), rollupPluginMdx(options), + // @ts-ignore CJS interop rollupPluginExternalGlobals(globalsNameReferenceMap || globals), rollupPluginReplace({ ...stringifyProcessEnvs(env), diff --git a/packages/storybook-builder/src/rollup-plugin-mdx.ts b/packages/storybook-builder/src/rollup-plugin-mdx.ts index 1247097890..85d6ceed07 100644 --- a/packages/storybook-builder/src/rollup-plugin-mdx.ts +++ b/packages/storybook-builder/src/rollup-plugin-mdx.ts @@ -1,6 +1,7 @@ import type { Options } from '@storybook/types'; import { readFile } from 'node:fs/promises'; import { dirname, join, sep } from 'node:path'; +import { fileURLToPath } from 'node:url'; import rehypeExternalLinks from 'rehype-external-links'; import rehypeSlug from 'rehype-slug'; import type { Plugin } from 'rollup'; @@ -40,7 +41,7 @@ export function rollupPluginMdx(options: Options): Plugin { // 3. addon-docs webpack loader (not run for our builder, because it's in the builder-webpack hook) // so we need to duplicate same logic here providerImportSource: join( - dirname(require.resolve('@storybook/addon-docs/package.json')), + dirname(fileURLToPath(import.meta.resolve('@storybook/addon-docs/package.json'))), '/dist/shims/mdx-react-shim.mjs', ), ...mdxPluginOptions?.mdxCompileOptions, diff --git a/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts b/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts index e7207831ec..1dde138bbf 100644 --- a/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts +++ b/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts @@ -1,7 +1,9 @@ import type { Options } from '@storybook/types'; import { build } from 'esbuild'; import { readFile, rm } from 'node:fs/promises'; +import { createRequire } from 'node:module'; import { dirname, isAbsolute, join, normalize } from 'node:path'; +import { fileURLToPath } from 'node:url'; import type { Plugin } from 'rollup'; import { esbuildPluginCommonjsNamedExports } from './esbuild-plugin-commonjs-named-exports.ts'; import { stringifyProcessEnvs } from './stringify-process-envs.ts'; @@ -82,9 +84,11 @@ export const CANDIDATES = [ 'color-convert', ]; +const cwdRequire = createRequire(join(process.cwd(), 'noop.js')); + function moduleExists(moduleName: string) { try { - require.resolve(moduleName, { paths: [process.cwd()] }); + cwdRequire.resolve(moduleName); return true; } catch (e) { return false; @@ -104,7 +108,8 @@ async function getIsReactVersion18or19(options: Options) { } const resolvedReact = await options.presets.apply<{ reactDom?: string }>('resolvedReact', {}); - const reactDom = resolvedReact.reactDom || dirname(require.resolve('react-dom/package.json')); + const reactDom = + resolvedReact.reactDom || dirname(fileURLToPath(import.meta.resolve('react-dom/package.json'))); if (!isAbsolute(reactDom)) { // if react-dom is not resolved to a file we can't be sure if the version in package.json is correct or even if package.json exists @@ -118,6 +123,6 @@ async function getIsReactVersion18or19(options: Options) { async function getReactDomShimAlias(options: Options) { return (await getIsReactVersion18or19(options)) - ? require.resolve('@storybook/react-dom-shim') - : require.resolve('@storybook/react-dom-shim/dist/react-16'); + ? fileURLToPath(import.meta.resolve('@storybook/react-dom-shim')) + : fileURLToPath(import.meta.resolve('@storybook/react-dom-shim/dist/react-16')); } diff --git a/packages/storybook-framework-web-components/index.mjs b/packages/storybook-framework-web-components/index.mjs deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/storybook-framework-web-components/package.json b/packages/storybook-framework-web-components/package.json index 2250448522..bdb3351235 100644 --- a/packages/storybook-framework-web-components/package.json +++ b/packages/storybook-framework-web-components/package.json @@ -17,14 +17,13 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "require": "./dist/index.js", - "import": "./index.mjs" + "default": "./dist/index.js" }, "./preset": "./preset.js", "./package.json": "./package.json" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -38,7 +37,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "CHANGELOG.md", "dist", "README.md" @@ -71,5 +69,6 @@ "@web/rollup-plugin-import-meta-assets": "^2.2.1", "@web/storybook-utils": "^1.1.0", "storybook": "^8.6.15" - } + }, + "type": "module" } diff --git a/packages/storybook-utils/index.mjs b/packages/storybook-utils/index.mjs deleted file mode 100644 index 4df73b330f..0000000000 --- a/packages/storybook-utils/index.mjs +++ /dev/null @@ -1 +0,0 @@ -export * from './src/index.js'; diff --git a/packages/storybook-utils/package.json b/packages/storybook-utils/package.json index 025aa584d9..490cc84df0 100644 --- a/packages/storybook-utils/package.json +++ b/packages/storybook-utils/package.json @@ -13,22 +13,20 @@ }, "author": "modern-web", "homepage": "https://github.com/modernweb-dev/web/tree/master/packages/storybook-utils", - "type": "module", "exports": { ".": { "types": "./dist/index.d.ts", - "default": "./index.mjs" + "default": "./dist/index.js" } }, "engines": { - "node": ">=16.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc" }, "files": [ "*.d.ts", - "*.mjs", "CHANGELOG.md", "dist", "src", diff --git a/packages/test-runner-browserstack/index.mjs b/packages/test-runner-browserstack/index.mjs deleted file mode 100644 index dba9e026a8..0000000000 --- a/packages/test-runner-browserstack/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { browserstackLauncher } = cjsEntrypoint; - -export { browserstackLauncher }; diff --git a/packages/test-runner-browserstack/package.json b/packages/test-runner-browserstack/package.json index 65bb6c0ac9..3b003f7189 100644 --- a/packages/test-runner-browserstack/package.json +++ b/packages/test-runner-browserstack/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -55,5 +53,6 @@ "@types/ip": "^1.1.0", "@web/dev-server-legacy": "^2.1.0", "portfinder": "^1.0.32" - } + }, + "type": "module" } diff --git a/packages/test-runner-chrome/index.mjs b/packages/test-runner-chrome/index.mjs deleted file mode 100644 index bab6951dbf..0000000000 --- a/packages/test-runner-chrome/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { ChromeLauncher, puppeteerCore, chromeLauncher } = cjsEntrypoint; - -export { ChromeLauncher, puppeteerCore, chromeLauncher }; diff --git a/packages/test-runner-chrome/package.json b/packages/test-runner-chrome/package.json index 3b6e25502c..654a5a6aad 100644 --- a/packages/test-runner-chrome/package.json +++ b/packages/test-runner-chrome/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -54,5 +52,6 @@ "devDependencies": { "@types/istanbul-reports": "^3.0.0", "@web/test-runner-mocha": "^0.9.0" - } + }, + "type": "module" } diff --git a/packages/test-runner-cli/package.json b/packages/test-runner-cli/package.json index bf0c6df21c..4ad6419f82 100644 --- a/packages/test-runner-cli/package.json +++ b/packages/test-runner-cli/package.json @@ -16,12 +16,11 @@ "main": "dist/index.js", "exports": { ".": { - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -31,7 +30,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -43,5 +41,6 @@ "terminal", "console", "CLI" - ] + ], + "type": "module" } diff --git a/packages/test-runner-commands/package.json b/packages/test-runner-commands/package.json index 4693f6a5ee..717b9ba742 100644 --- a/packages/test-runner-commands/package.json +++ b/packages/test-runner-commands/package.json @@ -13,7 +13,7 @@ }, "author": "modern-web", "homepage": "https://github.com/modernweb-dev/web/tree/master/packages/test-runner-commands", - "main": "browser/commands.mjs", + "main": "dist/index.js", "exports": { ".": { "types": "./browser/commands.d.ts", @@ -21,12 +21,11 @@ }, "./plugins": { "types": "./plugins.d.ts", - "import": "./plugins.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -36,7 +35,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "browser", "dist", "src" @@ -57,5 +55,6 @@ "@web/test-runner-playwright": "^0.11.0", "@web/test-runner-webdriver": "^0.9.0", "mocha": "^10.8.2" - } + }, + "type": "module" } diff --git a/packages/test-runner-commands/plugins.mjs b/packages/test-runner-commands/plugins.mjs deleted file mode 100644 index 88bc3da0c0..0000000000 --- a/packages/test-runner-commands/plugins.mjs +++ /dev/null @@ -1,26 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { - setViewportPlugin, - emulateMediaPlugin, - selectOptionPlugin, - setUserAgentPlugin, - sendKeysPlugin, - sendMousePlugin, - a11ySnapshotPlugin, - filePlugin, - snapshotPlugin, -} = cjsEntrypoint; - -export { - setViewportPlugin, - emulateMediaPlugin, - selectOptionPlugin, - setUserAgentPlugin, - sendKeysPlugin, - sendMousePlugin, - a11ySnapshotPlugin, - filePlugin, - snapshotPlugin, -}; diff --git a/packages/test-runner-core/index.mjs b/packages/test-runner-core/index.mjs deleted file mode 100644 index 5aba079162..0000000000 --- a/packages/test-runner-core/index.mjs +++ /dev/null @@ -1,26 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { - constants, - TestRunner, - TestRunnerCli, - BufferedLogger, - TestSessionManager, - SESSION_STATUS, - EventEmitter, - isTestFilePath, - fetchSourceMap, -} = cjsEntrypoint; - -export { - constants, - TestRunner, - TestRunnerCli, - BufferedLogger, - TestSessionManager, - SESSION_STATUS, - EventEmitter, - isTestFilePath, - fetchSourceMap, -}; diff --git a/packages/test-runner-core/package.json b/packages/test-runner-core/package.json index bba290c6e1..edbc241e2e 100644 --- a/packages/test-runner-core/package.json +++ b/packages/test-runner-core/package.json @@ -18,18 +18,16 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" }, "./test-helpers": { "types": "./dist/test-helpers.d.ts", - "import": "./test-helpers.mjs", - "require": "./dist/test-helpers.js" + "default": "./dist/test-helpers.js" }, "./browser/session.js": "./browser/session.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -39,7 +37,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "browser", "dist", "src" @@ -67,20 +64,21 @@ "convert-source-map": "^2.0.0", "debounce": "^1.2.0", "dependency-graph": "^0.11.0", - "globby": "^11.0.1", + "globby": "^11.1.0", "internal-ip": "^6.2.0", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.0.2", "log-update": "^4.0.0", - "nanocolors": "^0.2.1", + "nanocolors": "^0.2.13", "nanoid": "^3.1.25", - "open": "^8.0.2", + "open": "^8.4.2", "picomatch": "^2.2.2", "source-map": "^0.7.3" }, "devDependencies": { "portfinder": "^1.0.32", "tsx": "^4.21.0" - } + }, + "type": "module" } diff --git a/packages/test-runner-core/src/test-helpers.ts b/packages/test-runner-core/src/test-helpers.ts index e851c107c7..499fe67704 100644 --- a/packages/test-runner-core/src/test-helpers.ts +++ b/packages/test-runner-core/src/test-helpers.ts @@ -1,6 +1,9 @@ /* eslint-disable no-async-promise-executor, no-inner-declarations */ -import { getPortPromise } from 'portfinder'; +import portfinder from 'portfinder'; + +const { getPortPromise } = portfinder; import path from 'path'; +import { fileURLToPath } from 'node:url'; import { TestRunner, TestRunnerCoreConfig } from './index.ts'; import { Logger } from './logger/Logger.ts'; import { TestResult, TestSession, TestSuiteResult } from './test-session/TestSession.ts'; @@ -22,9 +25,9 @@ const minuteMs = secondMs * 60; const defaultBaseConfig: Partial = { watch: false, - rootDir: path.join(__dirname, '..', '..', '..'), + rootDir: path.join(import.meta.dirname, '..', '..', '..'), testFramework: { - path: require.resolve('@web/test-runner-mocha/dist/autorun.js'), + path: fileURLToPath(import.meta.resolve('@web/test-runner-mocha/dist/autorun.js')), }, protocol: 'http:', hostname: 'localhost', diff --git a/packages/test-runner-core/test-helpers.mjs b/packages/test-runner-core/test-helpers.mjs deleted file mode 100644 index 3fbb619857..0000000000 --- a/packages/test-runner-core/test-helpers.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/test-helpers.js'; - -const { runTests } = cjsEntrypoint; - -export { runTests }; diff --git a/packages/test-runner-coverage-v8/index.mjs b/packages/test-runner-coverage-v8/index.mjs deleted file mode 100644 index 4004fc26c7..0000000000 --- a/packages/test-runner-coverage-v8/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { v8ToIstanbul } = cjsEntrypoint; - -export { v8ToIstanbul }; diff --git a/packages/test-runner-coverage-v8/package.json b/packages/test-runner-coverage-v8/package.json index 8d641af828..fc34a3b816 100644 --- a/packages/test-runner-coverage-v8/package.json +++ b/packages/test-runner-coverage-v8/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc" @@ -30,7 +29,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -52,5 +50,6 @@ "devDependencies": { "@types/istanbul-lib-coverage": "^2.0.3", "@types/picomatch": "^2.2.1" - } + }, + "type": "module" } diff --git a/packages/test-runner-junit-reporter/index.mjs b/packages/test-runner-junit-reporter/index.mjs deleted file mode 100644 index 52bb196a1f..0000000000 --- a/packages/test-runner-junit-reporter/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { junitReporter } = cjsEntrypoint; - -export { junitReporter }; diff --git a/packages/test-runner-junit-reporter/package.json b/packages/test-runner-junit-reporter/package.json index 7853afa8a1..486a962c1f 100644 --- a/packages/test-runner-junit-reporter/package.json +++ b/packages/test-runner-junit-reporter/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -53,5 +51,6 @@ "devDependencies": { "@types/xml": "^1.0.11", "@web/test-runner-playwright": "^0.11.0" - } + }, + "type": "module" } diff --git a/packages/test-runner-mocha/package.json b/packages/test-runner-mocha/package.json index 10afb1059c..13e4ba4678 100644 --- a/packages/test-runner-mocha/package.json +++ b/packages/test-runner-mocha/package.json @@ -15,7 +15,7 @@ "homepage": "https://github.com/modernweb-dev/web/tree/master/packages/test-runner-mocha", "main": "dist/standalone.js", "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -41,5 +41,6 @@ "@types/mocha": "^10.0.1", "deepmerge": "^4.2.2", "mocha": "^10.8.2" - } + }, + "type": "module" } diff --git a/packages/test-runner-module-mocking/package.json b/packages/test-runner-module-mocking/package.json index beb84b7f90..e989a5d57e 100644 --- a/packages/test-runner-module-mocking/package.json +++ b/packages/test-runner-module-mocking/package.json @@ -20,7 +20,7 @@ "./plugin.js": "./dist/moduleMockingPlugin.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -30,7 +30,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], diff --git a/packages/test-runner-playwright/index.mjs b/packages/test-runner-playwright/index.mjs deleted file mode 100644 index f698e4395b..0000000000 --- a/packages/test-runner-playwright/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { playwright, PlaywrightLauncher, devices, playwrightLauncher } = cjsEntrypoint; - -export { playwright, PlaywrightLauncher, devices, playwrightLauncher }; diff --git a/packages/test-runner-playwright/package.json b/packages/test-runner-playwright/package.json index 52e5bdd6e0..4681a8b366 100644 --- a/packages/test-runner-playwright/package.json +++ b/packages/test-runner-playwright/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -53,5 +51,6 @@ "devDependencies": { "@web/test-runner-mocha": "^0.9.0", "portfinder": "^1.0.32" - } + }, + "type": "module" } diff --git a/packages/test-runner-puppeteer/index.mjs b/packages/test-runner-puppeteer/index.mjs deleted file mode 100644 index bf91d2c827..0000000000 --- a/packages/test-runner-puppeteer/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { puppeteerLauncher } = cjsEntrypoint; - -export { puppeteerLauncher }; diff --git a/packages/test-runner-puppeteer/package.json b/packages/test-runner-puppeteer/package.json index 53960626ec..3ccf91bac9 100644 --- a/packages/test-runner-puppeteer/package.json +++ b/packages/test-runner-puppeteer/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -53,5 +51,6 @@ "devDependencies": { "@web/test-runner-mocha": "^0.9.0", "puppeteer-core": "^24.0.0" - } + }, + "type": "module" } diff --git a/packages/test-runner-saucelabs/index.mjs b/packages/test-runner-saucelabs/index.mjs deleted file mode 100644 index dd357bf73c..0000000000 --- a/packages/test-runner-saucelabs/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { createSauceLabsLauncher } = cjsEntrypoint; - -export { createSauceLabsLauncher }; diff --git a/packages/test-runner-saucelabs/package.json b/packages/test-runner-saucelabs/package.json index 20fd5836ed..8bb1ebc148 100644 --- a/packages/test-runner-saucelabs/package.json +++ b/packages/test-runner-saucelabs/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -58,5 +56,6 @@ "@web/dev-server-esbuild": "^1.0.0", "@web/dev-server-legacy": "^2.1.0", "portfinder": "^1.0.32" - } + }, + "type": "module" } diff --git a/packages/test-runner-saucelabs/src/SauceLabsLauncherManager.ts b/packages/test-runner-saucelabs/src/SauceLabsLauncherManager.ts index 336acfccf2..6099c19033 100644 --- a/packages/test-runner-saucelabs/src/SauceLabsLauncherManager.ts +++ b/packages/test-runner-saucelabs/src/SauceLabsLauncherManager.ts @@ -1,12 +1,14 @@ import { BrowserLauncher } from '@web/test-runner-core'; import * as _SaucelabsModule from 'saucelabs'; -const SaucelabsAPI = (_SaucelabsModule as any).default ?? _SaucelabsModule; -type SauceLabsOptions = _SaucelabsModule.SauceLabsOptions; -type SauceConnectOptions = _SaucelabsModule.SauceConnectOptions; -type SauceConnectInstance = _SaucelabsModule.SauceConnectInstance; +const SaucelabsAPI = + (_SaucelabsModule as any).default?.default ?? + (_SaucelabsModule as any).default ?? + _SaucelabsModule; +type SauceLabsOptions = import('saucelabs').SauceLabsOptions; +type SauceConnectOptions = import('saucelabs').SauceConnectOptions; +type SauceConnectInstance = import('saucelabs').SauceConnectInstance; import * as _internalIpModule from 'internal-ip'; -const _internalIp = (_internalIpModule as any).default ?? _internalIpModule; -const { internalIpV4Sync } = _internalIp; +const { internalIpV4Sync } = (_internalIpModule as any).default ?? _internalIpModule; /** * Wraps a Promise with a timeout, rejecing the promise with the timeout. diff --git a/packages/test-runner-selenium/index.mjs b/packages/test-runner-selenium/index.mjs deleted file mode 100644 index a928632dfa..0000000000 --- a/packages/test-runner-selenium/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { seleniumLauncher, SeleniumLauncher } = cjsEntrypoint; - -export { seleniumLauncher, SeleniumLauncher }; diff --git a/packages/test-runner-selenium/package.json b/packages/test-runner-selenium/package.json index 9546c3ea42..2f67f8f727 100644 --- a/packages/test-runner-selenium/package.json +++ b/packages/test-runner-selenium/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -54,5 +52,6 @@ "@types/selenium-standalone": "^7.0.1", "@types/selenium-webdriver": "^4.0.11", "selenium-standalone": "^8.0.4" - } + }, + "type": "module" } diff --git a/packages/test-runner-visual-regression/package.json b/packages/test-runner-visual-regression/package.json index 247859ed33..5de69668b4 100644 --- a/packages/test-runner-visual-regression/package.json +++ b/packages/test-runner-visual-regression/package.json @@ -13,20 +13,19 @@ }, "author": "modern-web", "homepage": "https://github.com/modernweb-dev/web/tree/master/packages/test-runner-visual-regression", - "main": "browser/commands.mjs", + "main": "dist/index.js", "exports": { ".": { - "import": "./browser/commands.mjs", - "types": "./index.d.ts" + "types": "./index.d.ts", + "default": "./browser/commands.mjs" }, "./plugin": { - "import": "./plugin.mjs", - "require": "./dist/index.js", - "types": "./plugin.d.ts" + "types": "./plugin.d.ts", + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -36,7 +35,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "browser", "dist", "src" @@ -63,5 +61,6 @@ "@web/test-runner-playwright": "^0.11.0", "@web/test-runner-webdriver": "^0.9.0", "mocha": "^10.8.2" - } + }, + "type": "module" } diff --git a/packages/test-runner-visual-regression/plugin.mjs b/packages/test-runner-visual-regression/plugin.mjs deleted file mode 100644 index d860023832..0000000000 --- a/packages/test-runner-visual-regression/plugin.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { visualRegressionPlugin } = cjsEntrypoint; - -export { visualRegressionPlugin }; diff --git a/packages/test-runner-webdriver/index.mjs b/packages/test-runner-webdriver/index.mjs deleted file mode 100644 index 96987fbe95..0000000000 --- a/packages/test-runner-webdriver/index.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { webdriverLauncher, WebdriverLauncher } = cjsEntrypoint; - -export { webdriverLauncher, WebdriverLauncher }; diff --git a/packages/test-runner-webdriver/package.json b/packages/test-runner-webdriver/package.json index 7a9af67d12..5e626aed20 100644 --- a/packages/test-runner-webdriver/package.json +++ b/packages/test-runner-webdriver/package.json @@ -17,12 +17,11 @@ "exports": { ".": { "types": "./index.d.ts", - "import": "./index.mjs", - "require": "./dist/index.js" + "default": "./dist/index.js" } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -32,7 +31,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -54,5 +52,6 @@ "devDependencies": { "@types/selenium-standalone": "^7.0.1", "selenium-standalone": "^8.0.4" - } + }, + "type": "module" } diff --git a/packages/test-runner/index.mjs b/packages/test-runner/index.mjs deleted file mode 100644 index 0404e0d7d2..0000000000 --- a/packages/test-runner/index.mjs +++ /dev/null @@ -1,38 +0,0 @@ -// this file is autogenerated with the generate-mjs-dts-entrypoints script -import cjsEntrypoint from './dist/index.js'; - -const { - chromeLauncher, - startTestRunner, - defaultReporter, - summaryReporter, - dotReporter, - formatError, - constants, - TestRunner, - TestRunnerCli, - BufferedLogger, - TestSessionManager, - SESSION_STATUS, - EventEmitter, - isTestFilePath, - fetchSourceMap, -} = cjsEntrypoint; - -export { - chromeLauncher, - startTestRunner, - defaultReporter, - summaryReporter, - dotReporter, - formatError, - constants, - TestRunner, - TestRunnerCli, - BufferedLogger, - TestSessionManager, - SESSION_STATUS, - EventEmitter, - isTestFilePath, - fetchSourceMap, -}; diff --git a/packages/test-runner/package.json b/packages/test-runner/package.json index 7879f924e0..95a135fd3a 100644 --- a/packages/test-runner/package.json +++ b/packages/test-runner/package.json @@ -20,18 +20,14 @@ }, "exports": { ".": { - "import": { + "default": { "types": "./index.d.ts", - "default": "./index.mjs" - }, - "require": { - "types": "./dist/index.d.ts", "default": "./dist/index.js" } } }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" }, "scripts": { "build": "tsc", @@ -64,7 +60,6 @@ "files": [ "*.d.ts", "*.js", - "*.mjs", "dist", "src" ], @@ -85,14 +80,14 @@ "@web/test-runner-commands": "^0.9.0", "@web/test-runner-core": "^0.13.0", "@web/test-runner-mocha": "^0.9.0", - "camelcase": "^6.2.0", + "camelcase": "^6.3.0", "command-line-args": "^5.1.1", "command-line-usage": "^7.0.1", "convert-source-map": "^2.0.0", - "diff": "^5.2.2", - "globby": "^11.0.1", - "nanocolors": "^0.2.1", - "portfinder": "^1.0.32", + "diff": "^5.0.0", + "globby": "^11.1.0", + "nanocolors": "^0.2.13", + "portfinder": "^1.0.38", "source-map": "^0.7.3" }, "devDependencies": { @@ -101,5 +96,6 @@ "@web/test-runner-saucelabs": "^0.13.0", "babel-plugin-istanbul": "^6.0.0", "concurrently": "^8.0.1" - } + }, + "type": "module" } diff --git a/packages/test-runner/src/config/loadLauncher.ts b/packages/test-runner/src/config/loadLauncher.ts index 29efce007c..2b6cf5e742 100644 --- a/packages/test-runner/src/config/loadLauncher.ts +++ b/packages/test-runner/src/config/loadLauncher.ts @@ -1,13 +1,14 @@ +import { createRequire } from 'node:module'; import { TestRunnerStartError } from '../TestRunnerStartError.ts'; -/* eslint-disable @typescript-eslint/no-var-requires */ +const require = createRequire(import.meta.url); const puppeteerBrowsers = ['chrome', 'firefox']; const playwrightBrowsers = ['chromium', 'firefox', 'webkit']; function loadLauncher(name: string) { const pkg = `@web/test-runner-${name}`; try { - const path = require.resolve(pkg, { paths: [__dirname, process.cwd()] }); + const path = require.resolve(pkg); return require(path); } catch (error) { if ((error as NodeJS.ErrnoException).code === 'MODULE_NOT_FOUND') { diff --git a/packages/test-runner/src/config/parseConfig.ts b/packages/test-runner/src/config/parseConfig.ts index 4265377de1..500dc7d5a4 100644 --- a/packages/test-runner/src/config/parseConfig.ts +++ b/packages/test-runner/src/config/parseConfig.ts @@ -10,9 +10,12 @@ import { snapshotPlugin, sendMousePlugin, } from '@web/test-runner-commands/plugins'; -import { getPortPromise } from 'portfinder'; +import portfinder from 'portfinder'; + +const { getPortPromise } = portfinder; import path from 'path'; import { cpus } from 'os'; +import { fileURLToPath } from 'node:url'; import { TestRunnerCliArgs } from './readCliArgs.ts'; import { mergeConfigs } from './mergeConfigs.ts'; @@ -223,7 +226,7 @@ export async function parseConfig( } finalConfig.testFramework = { - path: require.resolve('@web/test-runner-mocha/dist/autorun.js'), + path: fileURLToPath(import.meta.resolve('@web/test-runner-mocha/dist/autorun.js')), ...(finalConfig.testFramework ?? {}), };