Add .gitignore to exclude all node packages and lock files
This commit is contained in:
Generated
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
export declare const openBrowser: ({ url, browserFlag, browserArgs, }: {
|
||||
url: string;
|
||||
browserFlag: string | undefined;
|
||||
browserArgs: string | undefined;
|
||||
}) => Promise<boolean | import("child_process").ChildProcess>;
|
||||
Generated
Vendored
+202
@@ -0,0 +1,202 @@
|
||||
"use strict";
|
||||
// Copied from https://github.com/michaellzc/better-opn#readme
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.openBrowser = void 0;
|
||||
const node_child_process_1 = require("node:child_process");
|
||||
const open = require("open");
|
||||
const normalizeURLToMatch = (target) => {
|
||||
// We may encounter URL parse error but want to fallback to default behavior
|
||||
try {
|
||||
// Url module is deprecated on newer version of NodeJS, only use it when URL class is not supported (like Node 8)
|
||||
const URL = typeof global.URL === 'undefined' ? require('url').URL : global.URL;
|
||||
const url = new URL(target);
|
||||
return url.origin;
|
||||
}
|
||||
catch (_a) {
|
||||
return target;
|
||||
}
|
||||
};
|
||||
// Copy from
|
||||
// https://github.com/facebook/create-react-app/blob/master/packages/react-dev-utils/openBrowser.js#L64
|
||||
const startBrowserProcess = async ({ browser, url, args, }) => {
|
||||
const tryNewInstance = args.length > 0;
|
||||
const shouldTryOpenChromiumWithAppleScript = process.platform === 'darwin' &&
|
||||
!tryNewInstance &&
|
||||
(typeof browser !== 'string' ||
|
||||
browser === 'google chrome' ||
|
||||
browser === 'chrome');
|
||||
if (shouldTryOpenChromiumWithAppleScript) {
|
||||
let appleScriptDenied = false;
|
||||
// Will use the first open browser found from list
|
||||
const supportedChromiumBrowsers = [
|
||||
'Google Chrome',
|
||||
'Google Chrome Canary',
|
||||
'Microsoft Edge',
|
||||
'Brave Browser',
|
||||
'Vivaldi',
|
||||
'Chromium',
|
||||
'Arc',
|
||||
];
|
||||
const processes = await new Promise((resolve, reject) => {
|
||||
(0, node_child_process_1.exec)('ps cax', (err, stdout) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
else {
|
||||
resolve(stdout);
|
||||
}
|
||||
});
|
||||
});
|
||||
const browsersToTry = supportedChromiumBrowsers.filter((b) => processes.includes(b));
|
||||
for (const chromiumBrowser of browsersToTry) {
|
||||
if (appleScriptDenied) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
// Try our best to reuse existing tab
|
||||
// on OSX Chromium-based browser with AppleScript
|
||||
const appleScript = `
|
||||
(*
|
||||
Copyright (c) 2015-present, Facebook, Inc.
|
||||
This source code is licensed under the MIT license found in the
|
||||
LICENSE file in the root directory of this source tree.
|
||||
*)
|
||||
|
||||
property targetTab: null
|
||||
property targetTabIndex: -1
|
||||
property targetWindow: null
|
||||
property theProgram: "${chromiumBrowser}"
|
||||
|
||||
on run argv
|
||||
set theURL to "${encodeURI(url)}"
|
||||
set matchURL to "${process.env.OPEN_MATCH_HOST_ONLY === 'true'
|
||||
? encodeURI(normalizeURLToMatch(url))
|
||||
: encodeURI(url)}"
|
||||
|
||||
using terms from application "Google Chrome"
|
||||
tell application theProgram
|
||||
|
||||
if (count every window) = 0 then
|
||||
make new window
|
||||
end if
|
||||
|
||||
-- 1: Looking for tab running debugger
|
||||
-- then, Reload debugging tab if found
|
||||
-- then return
|
||||
set found to my lookupTabWithUrl(matchURL)
|
||||
if found then
|
||||
set targetWindow's active tab index to targetTabIndex
|
||||
tell targetTab to reload
|
||||
tell targetWindow to activate
|
||||
set index of targetWindow to 1
|
||||
return
|
||||
end if
|
||||
|
||||
-- 2: Looking for Empty tab
|
||||
-- In case debugging tab was not found
|
||||
-- We try to find an empty tab instead
|
||||
set found to my lookupTabWithUrl("chrome://newtab/")
|
||||
if found then
|
||||
set targetWindow's active tab index to targetTabIndex
|
||||
set URL of targetTab to theURL
|
||||
tell targetWindow to activate
|
||||
return
|
||||
end if
|
||||
|
||||
-- 3: Create new tab
|
||||
-- both debugging and empty tab were not found
|
||||
-- make a new tab with url
|
||||
tell window 1
|
||||
activate
|
||||
make new tab with properties {URL:theURL}
|
||||
end tell
|
||||
end tell
|
||||
end using terms from
|
||||
end run
|
||||
|
||||
-- Function:
|
||||
-- Lookup tab with given url
|
||||
-- if found, store tab, index, and window in properties
|
||||
-- (properties were declared on top of file)
|
||||
on lookupTabWithUrl(lookupUrl)
|
||||
using terms from application "Google Chrome"
|
||||
tell application theProgram
|
||||
-- Find a tab with the given url
|
||||
set found to false
|
||||
set theTabIndex to -1
|
||||
repeat with theWindow in every window
|
||||
set theTabIndex to 0
|
||||
repeat with theTab in every tab of theWindow
|
||||
set theTabIndex to theTabIndex + 1
|
||||
if (theTab's URL as string) contains lookupUrl then
|
||||
-- assign tab, tab index, and window to properties
|
||||
set targetTab to theTab
|
||||
set targetTabIndex to theTabIndex
|
||||
set targetWindow to theWindow
|
||||
set found to true
|
||||
exit repeat
|
||||
end if
|
||||
end repeat
|
||||
|
||||
if found then
|
||||
exit repeat
|
||||
end if
|
||||
end repeat
|
||||
end tell
|
||||
end using terms from
|
||||
return found
|
||||
end lookupTabWithUrl
|
||||
`.trim();
|
||||
await new Promise((resolve, reject) => {
|
||||
const proc = (0, node_child_process_1.exec)(`osascript -`, (error) => {
|
||||
if (error) {
|
||||
reject(error);
|
||||
}
|
||||
else {
|
||||
// Ignore errors.
|
||||
// It it breaks, it will fallback to `opn` anyway
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
proc.stdin.write(appleScript);
|
||||
proc.stdin.end();
|
||||
});
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
catch (error) {
|
||||
const appleScriptError = error.message;
|
||||
if (appleScriptError
|
||||
.toLowerCase()
|
||||
.includes('not authorised to send apple events')) {
|
||||
appleScriptDenied = true;
|
||||
}
|
||||
// Ignore errors.
|
||||
// It it breaks, it will fallback to `opn` anyway
|
||||
}
|
||||
}
|
||||
}
|
||||
// Fallback to opn
|
||||
// (It will always open new tab)
|
||||
return open(url, {
|
||||
...(browser ? { app: { name: browser, arguments: args } } : {}),
|
||||
newInstance: tryNewInstance,
|
||||
wait: false,
|
||||
});
|
||||
};
|
||||
const getBrowserArgs = (browserArgs) => {
|
||||
if (browserArgs) {
|
||||
return browserArgs.split(' ');
|
||||
}
|
||||
if (process.env.BROWSER_ARGS) {
|
||||
return process.env.BROWSER_ARGS.split(' ');
|
||||
}
|
||||
return [];
|
||||
};
|
||||
const openBrowser = ({ url, browserFlag, browserArgs, }) => {
|
||||
return startBrowserProcess({
|
||||
browser: browserFlag !== null && browserFlag !== void 0 ? browserFlag : process.env.BROWSER,
|
||||
url,
|
||||
args: getBrowserArgs(browserArgs),
|
||||
});
|
||||
};
|
||||
exports.openBrowser = openBrowser;
|
||||
Reference in New Issue
Block a user