UNPKG

@hippy/debug-server-next

Version:
71 lines (70 loc) 2.85 kB
"use strict"; /* * Tencent is pleased to support the open source community by making * Hippy available. * * Copyright (C) 2017-2019 THL A29 Limited, a Tencent company. * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.startBrowserProcess = void 0; const tslib_1 = require("tslib"); const child_process_1 = require("child_process"); const open_1 = tslib_1.__importDefault(require("open")); const OSX_CHROME = 'google chrome'; /** * start browser * if open chrome on mac, will try to reuse the opened same tab */ const startBrowserProcess = (browser, url) => { // If we're on OS X, the user hasn't specifically // requested a different browser, we can try opening // Chrome with AppleScript. This lets us reuse an // existing tab when possible instead of creating a new one. const shouldTryOpenChromeWithAppleScript = process.platform === 'darwin' && (typeof browser !== 'string' || browser === OSX_CHROME); if (shouldTryOpenChromeWithAppleScript) { try { // Try our best to reuse existing tab // on OS X Google Chrome with AppleScript (0, child_process_1.execSync)('ps cax | grep "Google Chrome"'); (0, child_process_1.execSync)(`osascript openChrome.applescript "${encodeURI(url)}"`, { cwd: __dirname, stdio: 'ignore', }); return true; } catch (err) { // Ignore errors. } } // Another special case: on OS X, check if BROWSER has been set to "open". // In this case, instead of passing `open` to `opn` (which won't work), // just ignore it (thus ensuring the intended behavior, i.e. opening the system browser): // https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768 if (process.platform === 'darwin' && browser === 'open') { browser = undefined; } // Fallback to open // (It will always open new tab) try { const options = { app: browser, wait: false }; (0, open_1.default)(url, options).catch(() => { }); // Prevent `unhandledRejection` error. return true; } catch (err) { return false; } }; exports.startBrowserProcess = startBrowserProcess;