brave-real-launcher 1.2.31 → 1.2.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/chrome-launcher-sync.yml +2 -2
- package/README.md +131 -81
- package/dist/brave-installer.d.ts +57 -0
- package/dist/brave-installer.js +352 -0
- package/dist/brave-installer.mjs +323 -0
- package/dist/brave-launcher.d.ts +21 -0
- package/dist/brave-launcher.js +207 -15
- package/dist/brave-launcher.mjs +207 -15
- package/dist/extension-manager.d.ts +58 -0
- package/dist/extension-manager.js +333 -0
- package/dist/extension-manager.mjs +304 -0
- package/dist/flags.js +15 -1
- package/dist/flags.mjs +15 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +15 -2
- package/dist/index.mjs +7 -1
- package/dist/stealth-utils.d.ts +128 -0
- package/dist/stealth-utils.js +210 -0
- package/dist/stealth-utils.mjs +206 -0
- package/package.json +1 -1
- package/console.log(ESM build works!))' +0 -0
- package/workflow-test-report.md +0 -44
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright 2024 Brave Real Launcher Contributors.
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Brave Browser Installer
|
|
6
|
+
* Auto-installs Brave browser on Windows, Linux, and macOS
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
|
+
import * as fs from 'fs';
|
|
10
|
+
import * as path from 'path';
|
|
11
|
+
import * as https from 'https';
|
|
12
|
+
import * as http from 'http';
|
|
13
|
+
import { execSync } from 'child_process';
|
|
14
|
+
import { homedir } from 'os';
|
|
15
|
+
import log from './logger.mjs';
|
|
16
|
+
import { getPlatform } from './utils.mjs';
|
|
17
|
+
const BRAVE_DOWNLOAD_URLS = {
|
|
18
|
+
win32: {
|
|
19
|
+
release: 'https://laptop-updates.brave.com/latest/winx64',
|
|
20
|
+
beta: 'https://laptop-updates.brave.com/latest/winx64-beta',
|
|
21
|
+
nightly: 'https://laptop-updates.brave.com/latest/winx64-nightly'
|
|
22
|
+
},
|
|
23
|
+
darwin: {
|
|
24
|
+
release: 'https://laptop-updates.brave.com/latest/osx',
|
|
25
|
+
beta: 'https://laptop-updates.brave.com/latest/osx-beta',
|
|
26
|
+
nightly: 'https://laptop-updates.brave.com/latest/osx-nightly'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export class BraveInstaller {
|
|
30
|
+
constructor(options = {}) {
|
|
31
|
+
this.silent = options.silent || false;
|
|
32
|
+
this.downloadDir = options.downloadDir || path.join(homedir(), '.brave-real-launcher', 'downloads');
|
|
33
|
+
this.channel = options.channel || 'release';
|
|
34
|
+
if (!fs.existsSync(this.downloadDir)) {
|
|
35
|
+
fs.mkdirSync(this.downloadDir, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Install Brave browser on the current platform
|
|
40
|
+
*/
|
|
41
|
+
async install() {
|
|
42
|
+
const platform = getPlatform();
|
|
43
|
+
if (!this.silent) {
|
|
44
|
+
log.log('BraveInstaller', `Installing Brave Browser on ${platform}...`);
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
switch (platform) {
|
|
48
|
+
case 'win32':
|
|
49
|
+
return await this.installWindows();
|
|
50
|
+
case 'linux':
|
|
51
|
+
return await this.installLinux();
|
|
52
|
+
case 'darwin':
|
|
53
|
+
return await this.installMacOS();
|
|
54
|
+
default:
|
|
55
|
+
return { success: false, error: `Unsupported platform: ${platform}` };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return { success: false, error: error.message };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Install Brave on Windows
|
|
64
|
+
*/
|
|
65
|
+
async installWindows() {
|
|
66
|
+
const installerPath = path.join(this.downloadDir, 'BraveBrowserSetup.exe');
|
|
67
|
+
const downloadUrl = BRAVE_DOWNLOAD_URLS.win32[this.channel];
|
|
68
|
+
if (!this.silent) {
|
|
69
|
+
log.log('BraveInstaller', 'Downloading Brave installer for Windows...');
|
|
70
|
+
}
|
|
71
|
+
// Download installer
|
|
72
|
+
await this.downloadFile(downloadUrl, installerPath);
|
|
73
|
+
if (!this.silent) {
|
|
74
|
+
log.log('BraveInstaller', 'Running Brave installer (silent mode)...');
|
|
75
|
+
}
|
|
76
|
+
// Run installer silently
|
|
77
|
+
try {
|
|
78
|
+
execSync(`"${installerPath}" /silent /install`, {
|
|
79
|
+
stdio: 'ignore',
|
|
80
|
+
timeout: 300000 // 5 minutes timeout
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// Try alternative silent flags
|
|
85
|
+
try {
|
|
86
|
+
execSync(`"${installerPath}" --system-level --do-not-launch-chrome`, {
|
|
87
|
+
stdio: 'ignore',
|
|
88
|
+
timeout: 300000
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
// Installation might still succeed, continue checking
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Wait for installation to complete
|
|
96
|
+
await this.delay(5000);
|
|
97
|
+
// Find Brave installation
|
|
98
|
+
const bravePath = this.findBraveWindows();
|
|
99
|
+
if (bravePath) {
|
|
100
|
+
if (!this.silent) {
|
|
101
|
+
log.log('BraveInstaller', `Brave installed successfully at: ${bravePath}`);
|
|
102
|
+
}
|
|
103
|
+
// Cleanup installer
|
|
104
|
+
try {
|
|
105
|
+
fs.unlinkSync(installerPath);
|
|
106
|
+
}
|
|
107
|
+
catch (e) { }
|
|
108
|
+
return { success: true, bravePath };
|
|
109
|
+
}
|
|
110
|
+
return { success: false, error: 'Installation completed but Brave not found' };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Install Brave on Linux
|
|
114
|
+
*/
|
|
115
|
+
async installLinux() {
|
|
116
|
+
if (!this.silent) {
|
|
117
|
+
log.log('BraveInstaller', 'Installing Brave on Linux...');
|
|
118
|
+
}
|
|
119
|
+
// Detect package manager
|
|
120
|
+
const packageManager = this.detectLinuxPackageManager();
|
|
121
|
+
try {
|
|
122
|
+
if (packageManager === 'apt') {
|
|
123
|
+
// Debian/Ubuntu based
|
|
124
|
+
execSync('sudo apt install -y curl', { stdio: 'ignore' });
|
|
125
|
+
execSync('sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg', { stdio: 'ignore' });
|
|
126
|
+
execSync('echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list', { stdio: 'ignore' });
|
|
127
|
+
execSync('sudo apt update', { stdio: 'ignore' });
|
|
128
|
+
execSync('sudo apt install -y brave-browser', { stdio: 'ignore' });
|
|
129
|
+
}
|
|
130
|
+
else if (packageManager === 'dnf' || packageManager === 'yum') {
|
|
131
|
+
// Fedora/RHEL based
|
|
132
|
+
execSync('sudo dnf install -y dnf-plugins-core', { stdio: 'ignore' });
|
|
133
|
+
execSync('sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo', { stdio: 'ignore' });
|
|
134
|
+
execSync('sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc', { stdio: 'ignore' });
|
|
135
|
+
execSync('sudo dnf install -y brave-browser', { stdio: 'ignore' });
|
|
136
|
+
}
|
|
137
|
+
else if (packageManager === 'pacman') {
|
|
138
|
+
// Arch based
|
|
139
|
+
execSync('yay -S --noconfirm brave-bin', { stdio: 'ignore' });
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return { success: false, error: `Unsupported package manager. Please install Brave manually.` };
|
|
143
|
+
}
|
|
144
|
+
// Find Brave installation
|
|
145
|
+
const bravePath = this.findBraveLinux();
|
|
146
|
+
if (bravePath) {
|
|
147
|
+
if (!this.silent) {
|
|
148
|
+
log.log('BraveInstaller', `Brave installed successfully at: ${bravePath}`);
|
|
149
|
+
}
|
|
150
|
+
return { success: true, bravePath };
|
|
151
|
+
}
|
|
152
|
+
return { success: false, error: 'Installation completed but Brave not found' };
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return { success: false, error: `Linux installation failed: ${error.message}` };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Install Brave on macOS
|
|
160
|
+
*/
|
|
161
|
+
async installMacOS() {
|
|
162
|
+
var _a;
|
|
163
|
+
const dmgPath = path.join(this.downloadDir, 'Brave-Browser.dmg');
|
|
164
|
+
const downloadUrl = BRAVE_DOWNLOAD_URLS.darwin[this.channel];
|
|
165
|
+
if (!this.silent) {
|
|
166
|
+
log.log('BraveInstaller', 'Downloading Brave for macOS...');
|
|
167
|
+
}
|
|
168
|
+
// Download DMG
|
|
169
|
+
await this.downloadFile(downloadUrl, dmgPath);
|
|
170
|
+
if (!this.silent) {
|
|
171
|
+
log.log('BraveInstaller', 'Installing Brave...');
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
// Mount DMG
|
|
175
|
+
const mountOutput = execSync(`hdiutil attach "${dmgPath}" -nobrowse`, { encoding: 'utf-8' });
|
|
176
|
+
const mountPoint = ((_a = mountOutput.split('\t').pop()) === null || _a === void 0 ? void 0 : _a.trim()) || '/Volumes/Brave Browser';
|
|
177
|
+
// Copy to Applications
|
|
178
|
+
execSync(`cp -R "${mountPoint}/Brave Browser.app" /Applications/`, { stdio: 'ignore' });
|
|
179
|
+
// Unmount DMG
|
|
180
|
+
execSync(`hdiutil detach "${mountPoint}"`, { stdio: 'ignore' });
|
|
181
|
+
// Cleanup
|
|
182
|
+
try {
|
|
183
|
+
fs.unlinkSync(dmgPath);
|
|
184
|
+
}
|
|
185
|
+
catch (e) { }
|
|
186
|
+
const bravePath = '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser';
|
|
187
|
+
if (fs.existsSync(bravePath)) {
|
|
188
|
+
if (!this.silent) {
|
|
189
|
+
log.log('BraveInstaller', `Brave installed successfully at: ${bravePath}`);
|
|
190
|
+
}
|
|
191
|
+
return { success: true, bravePath };
|
|
192
|
+
}
|
|
193
|
+
return { success: false, error: 'Installation completed but Brave not found' };
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
return { success: false, error: `macOS installation failed: ${error.message}` };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Download file from URL
|
|
201
|
+
*/
|
|
202
|
+
downloadFile(url, destPath) {
|
|
203
|
+
return new Promise((resolve, reject) => {
|
|
204
|
+
const followRedirect = (url, redirectCount = 0) => {
|
|
205
|
+
if (redirectCount > 10) {
|
|
206
|
+
reject(new Error('Too many redirects'));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const protocol = url.startsWith('https') ? https : http;
|
|
210
|
+
protocol.get(url, {
|
|
211
|
+
headers: { 'User-Agent': 'brave-real-launcher' }
|
|
212
|
+
}, (response) => {
|
|
213
|
+
if (response.statusCode === 301 || response.statusCode === 302 || response.statusCode === 307 || response.statusCode === 308) {
|
|
214
|
+
const redirectUrl = response.headers.location;
|
|
215
|
+
if (redirectUrl) {
|
|
216
|
+
followRedirect(redirectUrl, redirectCount + 1);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (response.statusCode !== 200) {
|
|
221
|
+
reject(new Error(`Download failed: ${response.statusCode}`));
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
const file = fs.createWriteStream(destPath);
|
|
225
|
+
response.pipe(file);
|
|
226
|
+
file.on('finish', () => {
|
|
227
|
+
file.close();
|
|
228
|
+
resolve();
|
|
229
|
+
});
|
|
230
|
+
file.on('error', (err) => {
|
|
231
|
+
fs.unlinkSync(destPath);
|
|
232
|
+
reject(err);
|
|
233
|
+
});
|
|
234
|
+
}).on('error', reject);
|
|
235
|
+
};
|
|
236
|
+
followRedirect(url);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Detect Linux package manager
|
|
241
|
+
*/
|
|
242
|
+
detectLinuxPackageManager() {
|
|
243
|
+
try {
|
|
244
|
+
execSync('which apt', { stdio: 'ignore' });
|
|
245
|
+
return 'apt';
|
|
246
|
+
}
|
|
247
|
+
catch (e) { }
|
|
248
|
+
try {
|
|
249
|
+
execSync('which dnf', { stdio: 'ignore' });
|
|
250
|
+
return 'dnf';
|
|
251
|
+
}
|
|
252
|
+
catch (e) { }
|
|
253
|
+
try {
|
|
254
|
+
execSync('which yum', { stdio: 'ignore' });
|
|
255
|
+
return 'yum';
|
|
256
|
+
}
|
|
257
|
+
catch (e) { }
|
|
258
|
+
try {
|
|
259
|
+
execSync('which pacman', { stdio: 'ignore' });
|
|
260
|
+
return 'pacman';
|
|
261
|
+
}
|
|
262
|
+
catch (e) { }
|
|
263
|
+
return 'unknown';
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Find Brave on Windows
|
|
267
|
+
*/
|
|
268
|
+
findBraveWindows() {
|
|
269
|
+
const paths = [
|
|
270
|
+
`${process.env.LOCALAPPDATA}\\BraveSoftware\\Brave-Browser\\Application\\brave.exe`,
|
|
271
|
+
`${process.env.PROGRAMFILES}\\BraveSoftware\\Brave-Browser\\Application\\brave.exe`,
|
|
272
|
+
`${process.env['PROGRAMFILES(X86)']}\\BraveSoftware\\Brave-Browser\\Application\\brave.exe`,
|
|
273
|
+
];
|
|
274
|
+
for (const p of paths) {
|
|
275
|
+
if (p && fs.existsSync(p)) {
|
|
276
|
+
return p;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Find Brave on Linux
|
|
283
|
+
*/
|
|
284
|
+
findBraveLinux() {
|
|
285
|
+
const paths = [
|
|
286
|
+
'/usr/bin/brave-browser',
|
|
287
|
+
'/usr/bin/brave-browser-stable',
|
|
288
|
+
'/opt/brave.com/brave/brave',
|
|
289
|
+
'/snap/bin/brave'
|
|
290
|
+
];
|
|
291
|
+
for (const p of paths) {
|
|
292
|
+
if (fs.existsSync(p)) {
|
|
293
|
+
return p;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Delay helper
|
|
300
|
+
*/
|
|
301
|
+
delay(ms) {
|
|
302
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Check if Brave is installed
|
|
306
|
+
*/
|
|
307
|
+
static isInstalled() {
|
|
308
|
+
const platform = getPlatform();
|
|
309
|
+
const installer = new BraveInstaller({ silent: true });
|
|
310
|
+
switch (platform) {
|
|
311
|
+
case 'win32':
|
|
312
|
+
return installer.findBraveWindows() !== null;
|
|
313
|
+
case 'linux':
|
|
314
|
+
return installer.findBraveLinux() !== null;
|
|
315
|
+
case 'darwin':
|
|
316
|
+
return fs.existsSync('/Applications/Brave Browser.app/Contents/MacOS/Brave Browser');
|
|
317
|
+
default:
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
export default BraveInstaller;
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUtaW5zdGFsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JyYXZlLWluc3RhbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxZQUFZLENBQUM7QUFFYixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0IsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFjekMsTUFBTSxtQkFBbUIsR0FBRztJQUN4QixLQUFLLEVBQUU7UUFDSCxPQUFPLEVBQUUsZ0RBQWdEO1FBQ3pELElBQUksRUFBRSxxREFBcUQ7UUFDM0QsT0FBTyxFQUFFLHdEQUF3RDtLQUNwRTtJQUNELE1BQU0sRUFBRTtRQUNKLE9BQU8sRUFBRSw2Q0FBNkM7UUFDdEQsSUFBSSxFQUFFLGtEQUFrRDtRQUN4RCxPQUFPLEVBQUUscURBQXFEO0tBQ2pFO0NBQ0osQ0FBQztBQUVGLE1BQU0sT0FBTyxjQUFjO0lBS3ZCLFlBQVksVUFBNEIsRUFBRTtRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BHLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFD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
|
package/dist/brave-launcher.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import * as childProcess from 'child_process';
|
|
|
5
5
|
import * as fs from 'fs';
|
|
6
6
|
import { XvfbManager, XvfbOptions } from './utils.js';
|
|
7
7
|
import { ChildProcess } from 'child_process';
|
|
8
|
+
import { ExtensionInfo } from './extension-manager.js';
|
|
8
9
|
type JSONLike = {
|
|
9
10
|
[property: string]: JSONLike;
|
|
10
11
|
} | readonly JSONLike[] | string | number | boolean | null;
|
|
@@ -27,6 +28,11 @@ export interface Options {
|
|
|
27
28
|
launchMode?: 'auto' | 'headless' | 'gui';
|
|
28
29
|
xvfbOptions?: XvfbOptions;
|
|
29
30
|
enableXvfb?: boolean;
|
|
31
|
+
extensions?: string[];
|
|
32
|
+
autoLoadUBlock?: boolean;
|
|
33
|
+
autoInstall?: boolean;
|
|
34
|
+
enableStealth?: boolean;
|
|
35
|
+
userAgent?: string;
|
|
30
36
|
}
|
|
31
37
|
export interface RemoteDebuggingPipes {
|
|
32
38
|
incoming: NodeJS.ReadableStream;
|
|
@@ -39,6 +45,7 @@ export interface LaunchedBrave {
|
|
|
39
45
|
remoteDebuggingPipes: RemoteDebuggingPipes | null;
|
|
40
46
|
kill: () => void;
|
|
41
47
|
xvfbManager?: XvfbManager;
|
|
48
|
+
extensions?: ExtensionInfo[];
|
|
42
49
|
}
|
|
43
50
|
export interface ModuleOverrides {
|
|
44
51
|
fs?: typeof fs;
|
|
@@ -71,6 +78,13 @@ declare class Launcher {
|
|
|
71
78
|
private launchMode;
|
|
72
79
|
private enableXvfb;
|
|
73
80
|
private xvfbOptions;
|
|
81
|
+
private extensions;
|
|
82
|
+
private autoLoadUBlock;
|
|
83
|
+
private autoInstall;
|
|
84
|
+
private enableStealth;
|
|
85
|
+
private userAgent?;
|
|
86
|
+
private extensionManager?;
|
|
87
|
+
loadedExtensions: ExtensionInfo[];
|
|
74
88
|
braveProcess?: childProcess.ChildProcess;
|
|
75
89
|
userDataDir?: string;
|
|
76
90
|
port?: number;
|
|
@@ -79,6 +93,7 @@ declare class Launcher {
|
|
|
79
93
|
xvfbManager?: XvfbManager;
|
|
80
94
|
constructor(opts?: Options, moduleOverrides?: ModuleOverrides);
|
|
81
95
|
private get flags();
|
|
96
|
+
private getExtensionPaths;
|
|
82
97
|
private determineEffectiveLaunchMode;
|
|
83
98
|
static defaultFlags(): string[];
|
|
84
99
|
/** Returns the highest priority brave installation. */
|
|
@@ -87,8 +102,14 @@ declare class Launcher {
|
|
|
87
102
|
static getInstallations(): string[];
|
|
88
103
|
makeTmpDir(): string;
|
|
89
104
|
private setupXvfb;
|
|
105
|
+
/**
|
|
106
|
+
* Load uBlock Origin extension
|
|
107
|
+
*/
|
|
108
|
+
private loadUBlockOrigin;
|
|
90
109
|
prepare(): void;
|
|
91
110
|
private setBrowserPrefs;
|
|
111
|
+
private setLocalStatePrefs;
|
|
112
|
+
private deepMerge;
|
|
92
113
|
launch(): Promise<void>;
|
|
93
114
|
private spawnProcess;
|
|
94
115
|
private cleanup;
|