UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

55 lines (54 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.openUrlInBrowser = void 0; exports.getSupportedBrowsers = getSupportedBrowsers; exports.getDefaultBrowser = getDefaultBrowser; const constants_1 = require("../constants"); const logger_1 = require("../logger"); const options_1 = require("./options"); const getLogger = () => (0, logger_1.get)("utils.open"); async function getSupportedBrowsers() { const { apps } = await import("open"); return (Object.entries(apps) // Private browser is not supported .filter(([name]) => name !== "browserPrivate") .map(([key, value]) => ({ name: key, app: value, }))); } async function getDefaultBrowser() { const { apps } = await import("open"); return apps.browser; } async function getBrowser() { const { apps } = await import("open"); const browser = (0, options_1.getOptionValueFromConfig)(constants_1.OPTION_BROWSER, await getDefaultBrowser()); return apps[browser]; } const openUrlInBrowser = async (url, queryParameters = {}) => { const u = new URL(url); for (const [key, value] of Object.entries(queryParameters)) { u.searchParams.append(key, value); } const urlString = u.toString(); const { debug, error } = getLogger(); const browser = await getBrowser(); const open = (await import("open")).default; try { debug(`Attempting to open browser ${browser} at ${urlString}`); await open(urlString, { app: { name: browser } }); } catch (err) { error(`Failed to open browser ${browser}`, err); debug("Retrying with Google Chrome as fallback browser"); try { await open(urlString, { app: { name: "google chrome" } }); } catch (fallbackErr) { error(`Failed to open browser`, fallbackErr); throw fallbackErr; } } }; exports.openUrlInBrowser = openUrlInBrowser;