From 927df7a2ec17e35158d694698cb807e1d316b912 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 8 Jul 2022 06:45:21 +0200 Subject: [PATCH] [v3.0] Convert build scripts to ESM, update dependencies (#4558) * Convert scripts to ESM, update dependencies * Fix lint issue 3.0.0-1 --- package-lock.json | 421 ++++++++++++++--------------------- package.json | 7 +- scripts/find-config.js | 11 + scripts/load-perf-config.js | 39 ---- scripts/package.json | 3 + scripts/perf-debug.js | 8 - scripts/perf-init.js | 22 +- scripts/perf.js | 72 +++--- scripts/test-package.js | 26 +-- scripts/update-git-commit.js | 9 +- scripts/update-snapshots.js | 19 +- 11 files changed, 257 insertions(+), 380 deletions(-) create mode 100644 scripts/find-config.js delete mode 100644 scripts/load-perf-config.js create mode 100644 scripts/package.json delete mode 100644 scripts/perf-debug.js diff --git a/package-lock.json b/package-lock.json index 0573072f21d..f46fb2a95dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rollup", - "version": "3.0.0-0", + "version": "3.0.0-1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "rollup", - "version": "3.0.0-0", + "version": "3.0.0-1", "license": "MIT", "bin": { "rollup": "dist/bin/rollup" @@ -40,7 +40,7 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^4.2.1", - "execa": "^5.1.1", + "execa": "^6.1.0", "fixturify": "^2.1.1", "fs-extra": "^10.1.0", "hash.js": "^1.1.7", @@ -52,7 +52,7 @@ "mocha": "^10.0.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "pretty-bytes": "^5.6.0", + "pretty-bytes": "^6.0.0", "pretty-ms": "^8.0.0", "requirejs": "^2.3.6", "rollup": "^2.77.0", @@ -2605,23 +2605,23 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^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": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -3163,6 +3163,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/hasha/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hasha/node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -3188,12 +3200,12 @@ "dev": true }, "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">=12.20.0" } }, "node_modules/husky": { @@ -3506,12 +3518,12 @@ } }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3890,116 +3902,6 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "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": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/lint-staged/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==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/listr2": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", @@ -4443,12 +4345,15 @@ } }, "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/minimalistic-assert": { @@ -4780,15 +4685,30 @@ } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/nyc": { @@ -5114,15 +5034,15 @@ } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5435,12 +5355,12 @@ } }, "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.0.0.tgz", + "integrity": "sha512-6UqkYefdogmzqAZWzJ7laYeJnaXDy2/J+ZqiiMtS7t7OfpXWTlaeGMwX8U6EFvPV/YWWEKRkS8hKS4k60WHTOg==", "dev": true, "engines": { - "node": ">=6" + "node": "^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5705,6 +5625,30 @@ "node": ">=8" } }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -6239,12 +6183,15 @@ } }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -8818,20 +8765,20 @@ "dev": true }, "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", "dev": true, "requires": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" } }, "fast-deep-equal": { @@ -9228,6 +9175,12 @@ "type-fest": "^0.8.0" }, "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -9249,9 +9202,9 @@ "dev": true }, "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", "dev": true }, "husky": { @@ -9465,9 +9418,9 @@ } }, "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true }, "is-string": { @@ -9750,73 +9703,6 @@ "pidtree": "^0.6.0", "string-argv": "^0.3.1", "yaml": "^2.1.1" - }, - "dependencies": { - "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "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" - } - }, - "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true - }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, - "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "requires": { - "path-key": "^4.0.0" - } - }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "requires": { - "mimic-fn": "^4.0.0" - } - }, - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true - } } }, "listr2": { @@ -10151,9 +10037,9 @@ } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true }, "minimalistic-assert": { @@ -10394,12 +10280,20 @@ "dev": true }, "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, "requires": { - "path-key": "^3.0.0" + "path-key": "^4.0.0" + }, + "dependencies": { + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + } } }, "nyc": { @@ -10652,12 +10546,12 @@ } }, "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^4.0.0" } }, "optionator": { @@ -10870,9 +10764,9 @@ } }, "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.0.0.tgz", + "integrity": "sha512-6UqkYefdogmzqAZWzJ7laYeJnaXDy2/J+ZqiiMtS7t7OfpXWTlaeGMwX8U6EFvPV/YWWEKRkS8hKS4k60WHTOg==", "dev": true }, "pretty-ms": { @@ -11053,6 +10947,23 @@ "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + } } }, "reusify": { @@ -11473,9 +11384,9 @@ "dev": true }, "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true }, "strip-json-comments": { diff --git a/package.json b/package.json index 9f3031888d6..703981d1e03 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rollup", - "version": "3.0.0-0", + "version": "3.0.0-1", "description": "Next-generation ES module bundler", "main": "dist/rollup.js", "module": "dist/es/rollup.js", @@ -20,7 +20,6 @@ "lint:nofix": "eslint . --cache && prettier --check \"**/*.md\"", "lint:markdown": "prettier --write \"**/*.md\"", "perf": "npm run build:cjs && node --expose-gc scripts/perf.js", - "perf:debug": "node --inspect-brk scripts/perf-debug.js", "perf:init": "node scripts/perf-init.js", "postpublish": "git push && git push --tags", "prepare": "husky install && npm run build", @@ -85,7 +84,7 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^4.2.1", - "execa": "^5.1.1", + "execa": "^6.1.0", "fixturify": "^2.1.1", "fs-extra": "^10.1.0", "hash.js": "^1.1.7", @@ -97,7 +96,7 @@ "mocha": "^10.0.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "pretty-bytes": "^5.6.0", + "pretty-bytes": "^6.0.0", "pretty-ms": "^8.0.0", "requirejs": "^2.3.6", "rollup": "^2.77.0", diff --git a/scripts/find-config.js b/scripts/find-config.js new file mode 100644 index 00000000000..eba93586b43 --- /dev/null +++ b/scripts/find-config.js @@ -0,0 +1,11 @@ +import { promises as fs } from 'fs'; +import { resolve } from 'path'; + +export async function findConfigFileName(targetDir) { + const filesInWorkingDir = new Set(await fs.readdir(targetDir)); + for (const extension of ['mjs', 'cjs', 'ts', 'js']) { + const fileName = `rollup.config.${extension}`; + if (filesInWorkingDir.has(fileName)) return resolve(targetDir, fileName); + } + throw new Error('The repository needs to have a file "rollup.config.js" at the top level.'); +} diff --git a/scripts/load-perf-config.js b/scripts/load-perf-config.js deleted file mode 100644 index 647ee9b720f..00000000000 --- a/scripts/load-perf-config.js +++ /dev/null @@ -1,39 +0,0 @@ -const { accessSync, constants } = require('fs'); -const path = require('path'); -const rollup = require('../dist/rollup.js'); - -exports.targetDir = path.resolve(__dirname, '..', 'perf'); -const configFile = path.resolve(exports.targetDir, 'rollup.config.js'); - -try { - accessSync(configFile, constants.R_OK); -} catch (e) { - console.error( - `No valid "rollup.config.js" in ${exports.targetDir}. Did you "npm run perf:init"?` - ); - process.exit(1); -} - -exports.loadPerfConfig = async () => { - const bundle = await rollup.rollup({ - external: id => (id[0] !== '.' && !path.isAbsolute(id)) || id.slice(-5, id.length) === '.json', - input: configFile, - onwarn: warning => console.error(warning.message) - }); - let config = loadConfigFromCode((await bundle.generate({ format: 'cjs' })).output[0].code); - config = typeof config === 'function' ? config({}) : config; - return Array.isArray(config) ? config[0] : config; -}; - -function loadConfigFromCode(code) { - const defaultLoader = require.extensions['.js']; - require.extensions['.js'] = (module, filename) => { - if (filename === configFile) { - module._compile(code, filename); - } else { - defaultLoader(module, filename); - } - }; - delete require.cache[configFile]; - return require(configFile); -} diff --git a/scripts/package.json b/scripts/package.json new file mode 100644 index 00000000000..3dbc1ca591c --- /dev/null +++ b/scripts/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/scripts/perf-debug.js b/scripts/perf-debug.js deleted file mode 100644 index 2173118fc3d..00000000000 --- a/scripts/perf-debug.js +++ /dev/null @@ -1,8 +0,0 @@ -const rollup = require('../dist/rollup.js'); -const loadConfig = require('./load-perf-config').loadPerfConfig; - -loadConfig().then(async config => - (await rollup.rollup(config)).generate( - Array.isArray(config.output) ? config.output[0] : config.output - ) -); diff --git a/scripts/perf-init.js b/scripts/perf-init.js index 72e617d7db6..86bdc0a6b5e 100644 --- a/scripts/perf-init.js +++ b/scripts/perf-init.js @@ -1,13 +1,14 @@ /* eslint-disable no-console */ -const { accessSync, constants } = require('fs'); -const path = require('path'); -const execa = require('execa'); -const { removeSync } = require('fs-extra'); -const repoWithBranch = process.argv[2]; +import path, { dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { execa } from 'execa'; +import fs from 'fs-extra'; +import { findConfigFileName } from './find-config.js'; -const TARGET_DIR = path.resolve(__dirname, '..', 'perf'); +const TARGET_DIR = path.resolve(dirname(fileURLToPath(import.meta.url)), '..', 'perf'); const VALID_REPO = /^([^/\s#]+\/[^/\s#]+)(#([^/\s#]+))?$/; +const repoWithBranch = process.argv[2]; if (process.argv.length !== 3 || !VALID_REPO.test(repoWithBranch)) { console.error( @@ -16,8 +17,9 @@ if (process.argv.length !== 3 || !VALID_REPO.test(repoWithBranch)) { ); process.exit(1); } + console.error(`Cleaning up '${TARGET_DIR}'...`); -removeSync(TARGET_DIR); +fs.removeSync(TARGET_DIR); const [, repo, , branch] = VALID_REPO.exec(repoWithBranch); @@ -42,11 +44,7 @@ async function setupNewRepo(repo, branch) { } gitArgs.push(`https://github.com/${repo}.git`, TARGET_DIR); await execWithOutput('git', gitArgs); - try { - accessSync(path.resolve(TARGET_DIR, 'rollup.config.js'), constants.R_OK); - } catch (e) { - throw new Error('The repository needs to have a file "rollup.config.js" at the top level.'); - } + await findConfigFileName(TARGET_DIR); process.chdir(TARGET_DIR); await execWithOutput('npm', ['install']); } diff --git a/scripts/perf.js b/scripts/perf.js index be74ae5c56f..03f730c38e6 100644 --- a/scripts/perf.js +++ b/scripts/perf.js @@ -1,14 +1,29 @@ +/* eslint-disable import/no-unresolved */ /* global gc */ -const { readFileSync, writeFileSync } = require('fs'); -const path = require('path'); -const colorette = require('colorette'); -const prettyBytes = require('pretty-bytes'); -const rollup = require('../dist/rollup.js'); -const { loadPerfConfig, targetDir } = require('./load-perf-config'); +import { readFileSync, writeFileSync } from 'fs'; +import path, { dirname } from 'path'; +import { cwd } from 'process'; +import { fileURLToPath } from 'url'; +import { createColors } from 'colorette'; +import prettyBytes from 'pretty-bytes'; +import loadConfigFile from '../dist/loadConfigFile.js'; +import { rollup } from '../dist/rollup.js'; +import { findConfigFileName } from './find-config.js'; -const initialDir = process.cwd(); +const initialDir = cwd(); +const targetDir = path.resolve(dirname(fileURLToPath(import.meta.url)), '..', 'perf'); const perfFile = path.resolve(targetDir, 'rollup.perf.json'); +const { bold, underline, cyan, red, green } = createColors(); +const MIN_ABSOLUTE_TIME_DEVIATION = 10; +const RELATIVE_DEVIATION_FOR_COLORING = 5; + +process.chdir(targetDir); +const configFile = await findConfigFileName(targetDir); +const configs = await loadConfigFile( + configFile, + configFile.endsWith('.ts') ? { configPlugin: 'typescript' } : {} +); let numberOfRunsToAverage = 6; let numberOfDiscardedResults = 3; @@ -27,13 +42,15 @@ if (!(numberOfDiscardedResults >= 0) || !(numberOfDiscardedResults < numberOfRun process.exit(1); } console.info( - colorette.bold( - `Calculating the average of ${colorette.cyan( - numberOfRunsToAverage - )} runs discarding the ${colorette.cyan(numberOfDiscardedResults)} largest results.\n` + bold( + `Calculating the average of ${cyan(numberOfRunsToAverage)} runs discarding the ${cyan( + numberOfDiscardedResults + )} largest results.\n` ) + 'Run "npm run perf " to change that.' ); +await calculatePrintAndPersistTimings(configs.options[0], await getExistingTimings()); + function getSingleAverage(times, runs, discarded) { const actualDiscarded = Math.min(discarded, runs - 1); return ( @@ -99,7 +116,7 @@ async function buildAndGetTimings(config) { } gc(); process.chdir(targetDir); - const bundle = await rollup.rollup(config); + const bundle = await rollup(config); process.chdir(initialDir); await bundle.generate(config.output); return bundle.getTimings(); @@ -111,9 +128,9 @@ function printMeasurements(average, existingAverage, filter = /.*/) { printedLabels.forEach(label => { let color = text => text; if (label[0] === '#') { - color = colorette.bold; + color = bold; if (label[1] !== '#') { - color = colorette.underline; + color = underline; } } console.info( @@ -132,16 +149,14 @@ function printMeasurements(average, existingAverage, filter = /.*/) { } function clearLines(numberOfLines) { - console.info('\33[A' + '\33[2K\33[A'.repeat(numberOfLines)); + // console.info('\33[A' + '\33[2K\33[A'.repeat(numberOfLines)); } function getExistingTimings() { try { const timings = JSON.parse(readFileSync(perfFile, 'utf8')); console.info( - colorette.bold( - `Comparing with ${colorette.cyan(perfFile)}. Delete this file to create a new base line.` - ) + bold(`Comparing with ${cyan(perfFile)}. Delete this file to create a new base line.`) ); return timings; } catch (e) { @@ -152,22 +167,13 @@ function getExistingTimings() { function persistTimings(timings) { try { writeFileSync(perfFile, JSON.stringify(timings, null, 2), 'utf8'); - console.info( - colorette.bold( - `Saving performance information to new reference file ${colorette.cyan(perfFile)}.` - ) - ); + console.info(bold(`Saving performance information to new reference file ${cyan(perfFile)}.`)); } catch (e) { - console.error( - colorette.bold(`Could not persist performance information in ${colorette.cyan(perfFile)}.`) - ); + console.error(bold(`Could not persist performance information in ${cyan(perfFile)}.`)); process.exit(1); } } -const MIN_ABSOLUTE_TIME_DEVIATION = 10; -const RELATIVE_DEVIATION_FOR_COLORING = 5; - function getFormattedTime(currentTime, persistedTime = currentTime) { let color = text => text, formattedTime = `${currentTime.toFixed(0)}ms`; @@ -179,7 +185,7 @@ function getFormattedTime(currentTime, persistedTime = currentTime) { 0 )}ms, ${sign}${relativeDeviation.toFixed(1)}%)`; if (relativeDeviation > RELATIVE_DEVIATION_FOR_COLORING) { - color = currentTime >= persistedTime ? colorette.red : colorette.green; + color = currentTime >= persistedTime ? red : green; } } return color(formattedTime); @@ -193,11 +199,7 @@ function getFormattedMemory(currentMemory, persistedMemory = currentMemory) { const relativeDeviation = 100 * (absoluteDeviation / persistedMemory); if (relativeDeviation > RELATIVE_DEVIATION_FOR_COLORING) { formattedMemory += ` (${sign}${relativeDeviation.toFixed(0)}%)`; - color = currentMemory >= persistedMemory ? colorette.red : colorette.green; + color = currentMemory >= persistedMemory ? red : green; } return color(formattedMemory); } - -loadPerfConfig().then(async config => - calculatePrintAndPersistTimings(config, await getExistingTimings()) -); diff --git a/scripts/test-package.js b/scripts/test-package.js index 4368d20ad8e..bc63ffaadc8 100644 --- a/scripts/test-package.js +++ b/scripts/test-package.js @@ -1,16 +1,14 @@ -const pkg = require('../package.json'); +import { readFile } from 'fs/promises'; -function checkChokidar() { - const chokidarPkg = require('../node_modules/chokidar/package.json'); - const chokidarFsevents = - chokidarPkg.dependencies.fsevents || chokidarPkg.optionalDependencies.fsevents; - if (!chokidarFsevents) return; - const pkgFsevents = pkg.optionalDependencies.fsevents; - if (chokidarFsevents !== pkgFsevents) { - throw new Error( - `The dependency "fsevents" should exist with the same version range "${chokidarFsevents}" as it has for chokidar but it has "${pkgFsevents}".` - ); - } +const pkg = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8')); +const chokidarPkg = JSON.parse( + await readFile(new URL('../node_modules/chokidar/package.json', import.meta.url), 'utf8') +); +const chokidarFsevents = + chokidarPkg.dependencies.fsevents || chokidarPkg.optionalDependencies.fsevents; +const pkgFsevents = pkg.optionalDependencies.fsevents; +if (chokidarFsevents !== pkgFsevents) { + throw new Error( + `The dependency "fsevents" should exist with the same version range "${chokidarFsevents}" as it has for chokidar but it has "${pkgFsevents}".` + ); } - -checkChokidar(); diff --git a/scripts/update-git-commit.js b/scripts/update-git-commit.js index 2f167f35d27..06a200e5cb6 100644 --- a/scripts/update-git-commit.js +++ b/scripts/update-git-commit.js @@ -1,6 +1,7 @@ -const { execSync } = require('child_process'); -const { writeFileSync } = require('fs'); -const { join } = require('path'); +import { execSync } from 'child_process'; +import { writeFileSync } from 'fs'; +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; let revision; try { @@ -9,4 +10,4 @@ try { console.warn('Could not determine git commit when building Rollup.'); revision = '(could not be determined)'; } -writeFileSync(join(__dirname, '../.commithash'), revision); +writeFileSync(join(dirname(fileURLToPath(import.meta.url)), '../.commithash'), revision); diff --git a/scripts/update-snapshots.js b/scripts/update-snapshots.js index 79b6e28fde8..fda68a2b21c 100755 --- a/scripts/update-snapshots.js +++ b/scripts/update-snapshots.js @@ -1,10 +1,11 @@ #!/usr/bin/env node -const { readdirSync } = require('fs'); -const { resolve, join } = require('path'); -const { copySync, removeSync } = require('fs-extra'); +import { readdirSync } from 'fs'; +import { dirname, join, resolve } from 'path'; +import { fileURLToPath } from 'url'; +import fs from 'fs-extra'; -const basePath = resolve(__dirname, '../test'); +const basePath = resolve(dirname(fileURLToPath(import.meta.url)), '../test'); const formPath = join(basePath, 'form/samples'); const formDirsToHandle = readdirSync(formPath); @@ -15,10 +16,10 @@ for (const dir of formDirsToHandle) { formDirsToHandle.push(...testFiles.map(filename => join(dir, filename))); } else if (testFiles.includes('_actual')) { const expectedPath = join(testPath, '_expected'); - removeSync(expectedPath); - copySync(join(testPath, '_actual'), expectedPath); + fs.removeSync(expectedPath); + fs.copySync(join(testPath, '_actual'), expectedPath); } else if (testFiles.includes('_actual.js')) { - copySync(join(testPath, '_actual.js'), join(testPath, '_expected.js')); + fs.copySync(join(testPath, '_actual.js'), join(testPath, '_expected.js')); } else { throw new Error(`Could not find test output in ${testPath}`); } @@ -33,8 +34,8 @@ for (const dir of chunkingDirsToHandle) { chunkingDirsToHandle.push(...testFiles.map(filename => join(dir, filename))); } else if (testFiles.includes('_actual')) { const expectedPath = join(testPath, '_expected'); - removeSync(expectedPath); - copySync(join(testPath, '_actual'), expectedPath); + fs.removeSync(expectedPath); + fs.copySync(join(testPath, '_actual'), expectedPath); } else { throw new Error(`Could not find test output in ${testPath}`); }