From 95393f3d07b750316a54ad046a05519a205fbbb1 Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sat, 31 Aug 2024 23:32:26 -0500 Subject: [PATCH 01/10] refactor: replace rimraf with `rm` We should check if this regresses anything on Windows before merging. --- lib/fs-wrapper.js | 3 +-- package-lock.json | 23 ----------------------- package.json | 1 - 3 files changed, 1 insertion(+), 26 deletions(-) diff --git a/lib/fs-wrapper.js b/lib/fs-wrapper.js index 96f5659ad..04851313c 100644 --- a/lib/fs-wrapper.js +++ b/lib/fs-wrapper.js @@ -4,7 +4,6 @@ */ const fs = require('graceful-fs'); const fsp = fs.promises; -const {rimraf} = require('rimraf'); /** * Read a JSON file. @@ -90,7 +89,7 @@ module.exports = { readdir: fsp.readdir, - remove: rimraf, + remove: fsp.rm, stat: fsp.stat }; diff --git a/package-lock.json b/package-lock.json index b2f24919a..18379a50a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,6 @@ "ora": "^5.4.0", "path-key": "^3.1.1", "prompts": "^2.2.1", - "rimraf": "^5.0.0", "strip-ansi": "^6.0.0", "terminal-link": "^2.1.1", "tinyglobby": "^0.2.10", @@ -9120,20 +9119,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -17544,14 +17529,6 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "requires": { - "glob": "^10.3.7" - } - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", diff --git a/package.json b/package.json index 95098ca05..12f1d5c67 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,6 @@ "ora": "^5.4.0", "path-key": "^3.1.1", "prompts": "^2.2.1", - "rimraf": "^5.0.0", "strip-ansi": "^6.0.0", "terminal-link": "^2.1.1", "tinyglobby": "^0.2.10", From 73e5137260684cf2044803d2e1bedaaae696eaf9 Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 16:49:59 -0600 Subject: [PATCH 02/10] chore: remove rimraf dependabot ignore --- .github/dependabot.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index de4247672..63b8ed864 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -54,9 +54,6 @@ updates: - dependency-name: 'glob' update-types: - version-update:semver-major - - dependency-name: 'rimraf' - update-types: - - version-update:semver-major - dependency-name: 'which' update-types: - version-update:semver-major From 7acd992d85929b077e7b857a54b8a8dac9765ddb Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 16:56:05 -0600 Subject: [PATCH 03/10] fix: lint error --- lib/suppressed-errors.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/suppressed-errors.js b/lib/suppressed-errors.js index b0252321e..a9e710c39 100644 --- a/lib/suppressed-errors.js +++ b/lib/suppressed-errors.js @@ -73,7 +73,7 @@ Please check that ${chalk.greenBright('elm-review')} has write permissions to th return null; } - return await FS.remove(filePath); + await FS.remove(filePath); }); await Promise.all(writePromises); } From cd44c27552d3809abba6c13f388c03a10437cb57 Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 17:02:21 -0600 Subject: [PATCH 04/10] fix: default FS.remove to recursive --- lib/fs-wrapper.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/fs-wrapper.js b/lib/fs-wrapper.js index 04851313c..60232ad11 100644 --- a/lib/fs-wrapper.js +++ b/lib/fs-wrapper.js @@ -76,6 +76,14 @@ function mkdirpSync(dir) { fs.mkdirSync(dir, {recursive: true}); } +/** + * @param {fs.PathLike} file + * @param {fs.RmOptions?} options + */ +function remove(file, options) { + return fsp.rm(file, {recursive: true, ...options}); +} + module.exports = { readFile, readJsonFile, @@ -87,9 +95,9 @@ module.exports = { mkdirp, mkdirpSync, - readdir: fsp.readdir, + remove, - remove: fsp.rm, + readdir: fsp.readdir, stat: fsp.stat }; From a0bc003a1be2f281f7011eff0db30008fd48162f Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 19:44:33 -0600 Subject: [PATCH 05/10] fix: signature for remove --- lib/fs-wrapper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fs-wrapper.js b/lib/fs-wrapper.js index 60232ad11..be00e0e7e 100644 --- a/lib/fs-wrapper.js +++ b/lib/fs-wrapper.js @@ -78,7 +78,7 @@ function mkdirpSync(dir) { /** * @param {fs.PathLike} file - * @param {fs.RmOptions?} options + * @param {fs.RmOptions} [options={recursive: true}] */ function remove(file, options) { return fsp.rm(file, {recursive: true, ...options}); From e0469e6a9bf5d7a1406e5e69e72784d95107e7aa Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 19:45:24 -0600 Subject: [PATCH 06/10] refactor: use File type A type mismatch pointed out that this wrote out the whole type. --- lib/types/state.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/types/state.ts b/lib/types/state.ts index c2aebb9a5..325e082c5 100644 --- a/lib/types/state.ts +++ b/lib/types/state.ts @@ -1,4 +1,4 @@ -import type {ElmFile, Readme, Source} from './content.js'; +import type {ElmFile, File, Readme} from './content.js'; import type {Path} from './path.js'; export type Model = { @@ -23,7 +23,7 @@ export type ExitRequest = { export type AppUnsubscribeFunction = () => void; -export type FilesProposedByCurrentFix = {path: Path; source: Source}[]; +export type FilesProposedByCurrentFix = File[]; export type FileId = string; From 698dcf00ab84e94f5700a1c87096cee28d8c22a0 Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 19:45:55 -0600 Subject: [PATCH 07/10] fix: inference This was erroring, not sure why, but the new version certainly reads better. --- lib/autofix.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/autofix.js b/lib/autofix.js index 0f98e1acb..179cb52b6 100644 --- a/lib/autofix.js +++ b/lib/autofix.js @@ -109,7 +109,9 @@ function askConfirmationToFixWithOptions(options, app, elmVersion) { modifiedElmJson = file; } - return await FS.writeFile(filePath, file.source).then(() => file); + await FS.writeFile(filePath, file.source); + + return file; }) ); From 72995fe2c33aaf10b698dfea80455267e4e7138c Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 19:46:08 -0600 Subject: [PATCH 08/10] fix: lint --- lib/fs-wrapper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/fs-wrapper.js b/lib/fs-wrapper.js index be00e0e7e..ed3802a21 100644 --- a/lib/fs-wrapper.js +++ b/lib/fs-wrapper.js @@ -80,8 +80,8 @@ function mkdirpSync(dir) { * @param {fs.PathLike} file * @param {fs.RmOptions} [options={recursive: true}] */ -function remove(file, options) { - return fsp.rm(file, {recursive: true, ...options}); +async function remove(file, options) { + await fsp.rm(file, {recursive: true, ...options}); } module.exports = { From 146b94acf06e6eb3a96e764f357030c4a664d44b Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 19:58:51 -0600 Subject: [PATCH 09/10] fix: use rimraf-native's options Rimraf defaults to `force: true` and has 10 retries. --- lib/fs-wrapper.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/fs-wrapper.js b/lib/fs-wrapper.js index ed3802a21..5b0fc066c 100644 --- a/lib/fs-wrapper.js +++ b/lib/fs-wrapper.js @@ -78,10 +78,13 @@ function mkdirpSync(dir) { /** * @param {fs.PathLike} file - * @param {fs.RmOptions} [options={recursive: true}] */ -async function remove(file, options) { - await fsp.rm(file, {recursive: true, ...options}); +async function remove(file) { + await fsp.rm( + file, + // Rimraf compatibility: + {recursive: true, force: true, maxRetries: 10} + ); } module.exports = { From ed4cfa2e0c1e234a48e8c81231cbbeadcdbe9d08 Mon Sep 17 00:00:00 2001 From: Eli <88557639+lishaduck@users.noreply.github.com> Date: Sun, 3 Nov 2024 20:39:24 -0600 Subject: [PATCH 10/10] refactor: slip another one in With async-await, we can more clearly show that you send the info either way, only awaiting the promise is guarded. --- lib/elm-app-worker.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/elm-app-worker.js b/lib/elm-app-worker.js index 2db9c1f31..c56716fbb 100644 --- a/lib/elm-app-worker.js +++ b/lib/elm-app-worker.js @@ -31,14 +31,12 @@ if (parentPort) { * @returns {void} */ function subscribe(parentPort) { - parentPort.on('message', ([port, data]) => { + parentPort.on('message', async ([port, data]) => { if (port === 'startReview' || port === 'startGeneratingSuppressions') { - loadCachePromise.then(() => { - app.ports[port].send(data); - }); - } else { - app.ports[port].send(data); + await loadCachePromise; } + + app.ports[port].send(data); }); app.ports.requestReadingFiles.subscribe((data) => {