From b512ec25473f519a0916459b1d6ac2f6c7787db7 Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Mon, 21 Jul 2025 00:53:57 +1200 Subject: [PATCH 1/5] Throw `AggregateError` instead of only latest error --- index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 43c060a..754707b 100644 --- a/index.js +++ b/index.js @@ -55,17 +55,17 @@ async function getWindowsDefaultBrowserFromWsl() { } const pTryEach = async (array, mapper) => { - let latestError; + const errors = []; for (const item of array) { try { return await mapper(item); // eslint-disable-line no-await-in-loop } catch (error) { - latestError = error; + errors.push(error); } } - throw latestError; + throw new AggregateError(errors); }; // eslint-disable-next-line complexity From 5bc612687d8ab5854afb0c2d1cd14bc632459e03 Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Mon, 21 Jul 2025 00:58:25 +1200 Subject: [PATCH 2/5] Update index.js --- index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 754707b..800d56b 100644 --- a/index.js +++ b/index.js @@ -54,7 +54,7 @@ async function getWindowsDefaultBrowserFromWsl() { return browserMap[progId] ? {id: browserMap[progId]} : {}; } -const pTryEach = async (array, mapper) => { +const pTryEach = async (array, mapper, errorMessage) => { const errors = []; for (const item of array) { @@ -65,7 +65,7 @@ const pTryEach = async (array, mapper) => { } } - throw new AggregateError(errors); + throw new AggregateError(errors, errorMessage); }; // eslint-disable-next-line complexity @@ -82,7 +82,7 @@ const baseOpen = async options => { return pTryEach(options.app, singleApp => baseOpen({ ...options, app: singleApp, - })); + }), 'Failed to open in all supported apps'); } let {name: app, arguments: appArguments = []} = options.app ?? {}; @@ -95,7 +95,7 @@ const baseOpen = async options => { name: appName, arguments: appArguments, }, - })); + }), 'Failed to open in all supported apps'); } if (app === 'browser' || app === 'browserPrivate') { From 2feafdc4a87c0c1b003b8fad893a4dda733ab673 Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Mon, 21 Jul 2025 01:20:11 +1200 Subject: [PATCH 3/5] Update index.js --- index.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index 800d56b..5a9d4ae 100644 --- a/index.js +++ b/index.js @@ -54,18 +54,23 @@ async function getWindowsDefaultBrowserFromWsl() { return browserMap[progId] ? {id: browserMap[progId]} : {}; } -const pTryEach = async (array, mapper, errorMessage) => { +const tryEachApp = async (apps, opener) => { + if (apps.length === 0) { + // No app was provided + return; + } + const errors = []; - for (const item of array) { + for (const item of apps) { try { - return await mapper(item); // eslint-disable-line no-await-in-loop + return await opener(item); // eslint-disable-line no-await-in-loop } catch (error) { errors.push(error); } } - throw new AggregateError(errors, errorMessage); + throw new AggregateError(errors, 'Failed to open in all supported apps'); }; // eslint-disable-next-line complexity @@ -79,23 +84,23 @@ const baseOpen = async options => { }; if (Array.isArray(options.app)) { - return pTryEach(options.app, singleApp => baseOpen({ + return tryEachApp(options.app, singleApp => baseOpen({ ...options, app: singleApp, - }), 'Failed to open in all supported apps'); + })); } let {name: app, arguments: appArguments = []} = options.app ?? {}; appArguments = [...appArguments]; if (Array.isArray(app)) { - return pTryEach(app, appName => baseOpen({ + return tryEachApp(app, appName => baseOpen({ ...options, app: { name: appName, arguments: appArguments, }, - }), 'Failed to open in all supported apps'); + })); } if (app === 'browser' || app === 'browserPrivate') { From 60b8f3d6a3c1440153a9ce4667bce2682430a287 Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Mon, 21 Jul 2025 01:20:29 +1200 Subject: [PATCH 4/5] Update index.js --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 5a9d4ae..1e9ba97 100644 --- a/index.js +++ b/index.js @@ -62,9 +62,9 @@ const tryEachApp = async (apps, opener) => { const errors = []; - for (const item of apps) { + for (const app of apps) { try { - return await opener(item); // eslint-disable-line no-await-in-loop + return await opener(app); // eslint-disable-line no-await-in-loop } catch (error) { errors.push(error); } From 65d34ace8696573ff339d5f5b1ec2690a2a201ef Mon Sep 17 00:00:00 2001 From: Richie Bendall Date: Mon, 21 Jul 2025 01:26:04 +1200 Subject: [PATCH 5/5] Update index.js --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 1e9ba97..c4616fe 100644 --- a/index.js +++ b/index.js @@ -59,7 +59,7 @@ const tryEachApp = async (apps, opener) => { // No app was provided return; } - + const errors = []; for (const app of apps) {