Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/invoice_pdf/node_modules/puppeteer-core/lib/cjs/puppeteer/node/ drwxr-xr-x | |
| Viewing file: Select action/file-type: "use strict";
/**
* @license
* Copyright 2023 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FirefoxLauncher = void 0;
const fs_1 = __importDefault(require("fs"));
const promises_1 = require("fs/promises");
const os_1 = __importDefault(require("os"));
const path_1 = __importDefault(require("path"));
const browsers_1 = require("@puppeteer/browsers");
const util_js_1 = require("../common/util.js");
const assert_js_1 = require("../util/assert.js");
const ProductLauncher_js_1 = require("./ProductLauncher.js");
const fs_js_1 = require("./util/fs.js");
/**
* @internal
*/
class FirefoxLauncher extends ProductLauncher_js_1.ProductLauncher {
constructor(puppeteer) {
super(puppeteer, 'firefox');
}
static getPreferences(extraPrefsFirefox, protocol) {
return {
...extraPrefsFirefox,
...(protocol === 'webDriverBiDi'
? {}
: {
// Do not close the window when the last tab gets closed
'browser.tabs.closeWindowWithLastTab': false,
// Temporarily force disable BFCache in parent (https://bit.ly/bug-1732263)
'fission.bfcacheInParent': false,
}),
// Force all web content to use a single content process. TODO: remove
// this once Firefox supports mouse event dispatch from the main frame
// context. Once this happens, webContentIsolationStrategy should only
// be set for CDP. See
// https://bugzilla.mozilla.org/show_bug.cgi?id=1773393
'fission.webContentIsolationStrategy': 0,
};
}
/**
* @internal
*/
async computeLaunchArguments(options = {}) {
const { ignoreDefaultArgs = false, args = [], executablePath, pipe = false, extraPrefsFirefox = {}, debuggingPort = null, } = options;
const firefoxArguments = [];
if (!ignoreDefaultArgs) {
firefoxArguments.push(...this.defaultArgs(options));
}
else if (Array.isArray(ignoreDefaultArgs)) {
firefoxArguments.push(...this.defaultArgs(options).filter(arg => {
return !ignoreDefaultArgs.includes(arg);
}));
}
else {
firefoxArguments.push(...args);
}
if (!firefoxArguments.some(argument => {
return argument.startsWith('--remote-debugging-');
})) {
if (pipe) {
(0, assert_js_1.assert)(debuggingPort === null, 'Browser should be launched with either pipe or debugging port - not both.');
}
firefoxArguments.push(`--remote-debugging-port=${debuggingPort || 0}`);
}
let userDataDir;
let isTempUserDataDir = true;
// Check for the profile argument, which will always be set even
// with a custom directory specified via the userDataDir option.
const profileArgIndex = firefoxArguments.findIndex(arg => {
return ['-profile', '--profile'].includes(arg);
});
if (profileArgIndex !== -1) {
userDataDir = firefoxArguments[profileArgIndex + 1];
if (!userDataDir || !fs_1.default.existsSync(userDataDir)) {
throw new Error(`Firefox profile not found at '${userDataDir}'`);
}
// When using a custom Firefox profile it needs to be populated
// with required preferences.
isTempUserDataDir = false;
}
else {
userDataDir = await (0, promises_1.mkdtemp)(this.getProfilePath());
firefoxArguments.push('--profile');
firefoxArguments.push(userDataDir);
}
await (0, browsers_1.createProfile)(browsers_1.Browser.FIREFOX, {
path: userDataDir,
preferences: FirefoxLauncher.getPreferences(extraPrefsFirefox, options.protocol),
});
let firefoxExecutable;
if (this.puppeteer._isPuppeteerCore || executablePath) {
(0, assert_js_1.assert)(executablePath, `An \`executablePath\` must be specified for \`puppeteer-core\``);
firefoxExecutable = executablePath;
}
else {
firefoxExecutable = this.executablePath();
}
return {
isTempUserDataDir,
userDataDir,
args: firefoxArguments,
executablePath: firefoxExecutable,
};
}
/**
* @internal
*/
async cleanUserDataDir(userDataDir, opts) {
if (opts.isTemp) {
try {
await (0, fs_js_1.rm)(userDataDir);
}
catch (error) {
(0, util_js_1.debugError)(error);
throw error;
}
}
else {
try {
// When an existing user profile has been used remove the user
// preferences file and restore possibly backuped preferences.
await (0, promises_1.unlink)(path_1.default.join(userDataDir, 'user.js'));
const prefsBackupPath = path_1.default.join(userDataDir, 'prefs.js.puppeteer');
if (fs_1.default.existsSync(prefsBackupPath)) {
const prefsPath = path_1.default.join(userDataDir, 'prefs.js');
await (0, promises_1.unlink)(prefsPath);
await (0, promises_1.rename)(prefsBackupPath, prefsPath);
}
}
catch (error) {
(0, util_js_1.debugError)(error);
}
}
}
executablePath() {
// replace 'latest' placeholder with actual downloaded revision
if (this.puppeteer.browserRevision === 'latest') {
const cache = new browsers_1.Cache(this.puppeteer.defaultDownloadPath);
const installedFirefox = cache.getInstalledBrowsers().find(browser => {
return (browser.platform === (0, browsers_1.detectBrowserPlatform)() &&
browser.browser === browsers_1.Browser.FIREFOX);
});
if (installedFirefox) {
this.actualBrowserRevision = installedFirefox.buildId;
}
}
return this.resolveExecutablePath();
}
defaultArgs(options = {}) {
const { devtools = false, headless = !devtools, args = [], userDataDir = null, } = options;
const firefoxArguments = ['--no-remote'];
switch (os_1.default.platform()) {
case 'darwin':
firefoxArguments.push('--foreground');
break;
case 'win32':
firefoxArguments.push('--wait-for-browser');
break;
}
if (userDataDir) {
firefoxArguments.push('--profile');
firefoxArguments.push(userDataDir);
}
if (headless) {
firefoxArguments.push('--headless');
}
if (devtools) {
firefoxArguments.push('--devtools');
}
if (args.every(arg => {
return arg.startsWith('-');
})) {
firefoxArguments.push('about:blank');
}
firefoxArguments.push(...args);
return firefoxArguments;
}
}
exports.FirefoxLauncher = FirefoxLauncher;
//# sourceMappingURL=FirefoxLauncher.js.map |
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0093 ]-- |