extension 4.1.25 → 4.1.26
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/dist/browsers.cjs +225 -38
- package/dist/cli.cjs +378 -143
- package/dist/extension/browsers/browsers-lib/banner.d.ts +1 -0
- package/dist/extension/browsers/browsers-lib/browser-family.d.ts +2 -0
- package/dist/extension/browsers/browsers-lib/output-binaries-resolver.d.ts +1 -1
- package/dist/extension/browsers/browsers-types.d.ts +1 -1
- package/dist/extension/browsers/index.d.ts +1 -0
- package/dist/extension/browsers/run-emulator/index.d.ts +30 -0
- package/dist/extension/config-types.d.ts +6 -1
- package/dist/extension/helpers/emulator-session.d.ts +4 -0
- package/dist/extension/helpers/vendors.d.ts +8 -2
- package/package.json +15 -12
package/dist/browsers.cjs
CHANGED
|
@@ -70,14 +70,27 @@ var __webpack_modules__ = {
|
|
|
70
70
|
return '';
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
function registeredDirectoryPath(dir, platform) {
|
|
74
|
+
const absolute = node_path__rspack_import_2.resolve(dir);
|
|
75
|
+
if ('win32' === platform) return absolute;
|
|
76
|
+
try {
|
|
77
|
+
return node_fs__rspack_import_1.realpathSync.native(absolute);
|
|
78
|
+
} catch {
|
|
79
|
+
return absolute;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function upperCaseDriveLetter(windowsPath) {
|
|
83
|
+
return /^[a-z]:/.test(windowsPath) ? windowsPath[0].toUpperCase() + windowsPath.slice(1) : windowsPath;
|
|
84
|
+
}
|
|
85
|
+
function chromiumExtensionIdFromRegisteredPath(registeredPath, platform = process.platform) {
|
|
86
|
+
const bytes = 'win32' === platform ? Buffer.from(upperCaseDriveLetter(registeredPath.replace(/\//g, '\\')), 'utf16le') : Buffer.from(registeredPath, 'utf8');
|
|
87
|
+
const digest = (0, node_crypto__rspack_import_0.createHash)('sha256').update(bytes).digest().subarray(0, 16);
|
|
88
|
+
return encodeChromiumExtensionIdFromDigest(digest);
|
|
89
|
+
}
|
|
73
90
|
function deriveChromiumExtensionIdFromPath(extensionPath) {
|
|
74
91
|
if (!extensionPath || 'string' != typeof extensionPath) return '';
|
|
75
92
|
try {
|
|
76
|
-
|
|
77
|
-
const isWindows = 'win32' === process.platform;
|
|
78
|
-
const seedBuffer = isWindows ? Buffer.from(absolute.replace(/\//g, '\\'), 'utf16le') : Buffer.from(absolute, 'utf8');
|
|
79
|
-
const digest = (0, node_crypto__rspack_import_0.createHash)('sha256').update(seedBuffer).digest().subarray(0, 16);
|
|
80
|
-
return encodeChromiumExtensionIdFromDigest(digest);
|
|
93
|
+
return chromiumExtensionIdFromRegisteredPath(registeredDirectoryPath(extensionPath, process.platform), process.platform);
|
|
81
94
|
} catch {
|
|
82
95
|
return '';
|
|
83
96
|
}
|
|
@@ -274,6 +287,8 @@ var __webpack_modules__ = {
|
|
|
274
287
|
'firefox',
|
|
275
288
|
'waterfox',
|
|
276
289
|
'librewolf',
|
|
290
|
+
'zen',
|
|
291
|
+
'floorp',
|
|
277
292
|
'gecko-based',
|
|
278
293
|
'firefox-based'
|
|
279
294
|
]);
|
|
@@ -283,8 +298,15 @@ var __webpack_modules__ = {
|
|
|
283
298
|
function isFirefoxBrowser(browser) {
|
|
284
299
|
return FIREFOX_BROWSERS.has(String(browser));
|
|
285
300
|
}
|
|
301
|
+
const EMULATOR_BROWSERS = new Set([
|
|
302
|
+
'chromium-emulator'
|
|
303
|
+
]);
|
|
304
|
+
function isEmulatorBrowser(browser) {
|
|
305
|
+
return EMULATOR_BROWSERS.has(String(browser));
|
|
306
|
+
}
|
|
286
307
|
__webpack_require__.d(__webpack_exports__, {
|
|
287
308
|
M_: ()=>isFirefoxBrowser,
|
|
309
|
+
eP: ()=>isEmulatorBrowser,
|
|
288
310
|
rG: ()=>isChromiumBrowser
|
|
289
311
|
});
|
|
290
312
|
},
|
|
@@ -1138,7 +1160,7 @@ var __webpack_modules__ = {
|
|
|
1138
1160
|
const root = String(cacheRoot || '').trim();
|
|
1139
1161
|
if (!root) return {};
|
|
1140
1162
|
if ('safari' === browser || 'webkit-based' === browser) return {};
|
|
1141
|
-
if ('brave' === browser || 'opera' === browser || 'vivaldi' === browser || 'yandex' === browser || 'waterfox' === browser || 'librewolf' === browser) return {};
|
|
1163
|
+
if ('brave' === browser || 'opera' === browser || 'vivaldi' === browser || 'yandex' === browser || 'waterfox' === browser || 'librewolf' === browser || 'zen' === browser || 'floorp' === browser) return {};
|
|
1142
1164
|
if ('chrome' === browser) return {
|
|
1143
1165
|
PUPPETEER_CACHE_DIR: node_path__rspack_import_1.join(root, 'chrome', 'chrome')
|
|
1144
1166
|
};
|
|
@@ -2031,17 +2053,127 @@ var __webpack_modules__ = {
|
|
|
2031
2053
|
},
|
|
2032
2054
|
"./browsers/index.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
2033
2055
|
__webpack_require__.r(__webpack_exports__);
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2056
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
2057
|
+
builtAppPath: ()=>safari_config.fd,
|
|
2058
|
+
createSafariPackager: ()=>safari_packager.P,
|
|
2059
|
+
isValidBundleId: ()=>safari_config.OA,
|
|
2060
|
+
launchBrowser: ()=>launchBrowser,
|
|
2061
|
+
macOsSchemeName: ()=>safari_config.aD,
|
|
2062
|
+
packageSafariExtension: ()=>safari_launch.Ah,
|
|
2063
|
+
resolveSafariBuildConfig: ()=>safari_config.F7,
|
|
2064
|
+
runOnlyPreviewBrowser: ()=>run_only.E,
|
|
2065
|
+
safariBuildPreflight: ()=>safari_launch.QW,
|
|
2066
|
+
safariPreflightError: ()=>safari_launch.iF,
|
|
2067
|
+
xcodeProjectPath: ()=>safari_config.Gi
|
|
2068
|
+
});
|
|
2069
|
+
var browser_family = __webpack_require__("./browsers/browsers-lib/browser-family.ts");
|
|
2070
|
+
var output_binaries_resolver = __webpack_require__("./browsers/browsers-lib/output-binaries-resolver.ts");
|
|
2071
|
+
var runtime_options = __webpack_require__("./browsers/browsers-lib/runtime-options.ts");
|
|
2072
|
+
var chromium_context = __webpack_require__("./browsers/run-chromium/chromium-context/index.ts");
|
|
2073
|
+
var chromium_launch = __webpack_require__("./browsers/run-chromium/chromium-launch/index.ts");
|
|
2074
|
+
var external_node_child_process_ = __webpack_require__("node:child_process");
|
|
2075
|
+
var external_pintor_ = __webpack_require__("pintor");
|
|
2076
|
+
var external_pintor_default = /*#__PURE__*/ __webpack_require__.n(external_pintor_);
|
|
2077
|
+
var emulator_session = __webpack_require__("./helpers/emulator-session.ts");
|
|
2078
|
+
var messaging = __webpack_require__("./helpers/messaging.ts");
|
|
2079
|
+
function emulatorViewerUrlLine(url) {
|
|
2080
|
+
return `${(0, messaging.Pl)('info')} Emulated Chromium runs in a web page. Open this address to load your extension:\n${external_pintor_default().underline(url)}`;
|
|
2081
|
+
}
|
|
2082
|
+
function emulatorLogsLimitLine() {
|
|
2083
|
+
return `${(0, messaging.Pl)('warn')} --logs has no effect here: ${emulator_session.fg}`;
|
|
2084
|
+
}
|
|
2085
|
+
function openCommandFor(url, platform = process.platform) {
|
|
2086
|
+
if ('darwin' === platform) return {
|
|
2087
|
+
command: 'open',
|
|
2088
|
+
args: [
|
|
2089
|
+
url
|
|
2090
|
+
]
|
|
2091
|
+
};
|
|
2092
|
+
if ('win32' === platform) return {
|
|
2093
|
+
command: 'rundll32',
|
|
2094
|
+
args: [
|
|
2095
|
+
'url.dll,FileProtocolHandler',
|
|
2096
|
+
url
|
|
2097
|
+
]
|
|
2098
|
+
};
|
|
2099
|
+
return {
|
|
2100
|
+
command: 'xdg-open',
|
|
2101
|
+
args: [
|
|
2102
|
+
url
|
|
2103
|
+
]
|
|
2104
|
+
};
|
|
2105
|
+
}
|
|
2106
|
+
function engineVersionUrl(viewerUrl) {
|
|
2107
|
+
try {
|
|
2108
|
+
const parsed = new URL(viewerUrl);
|
|
2109
|
+
const base = parsed.pathname.endsWith('/') ? parsed.pathname : `${parsed.pathname.replace(/[^/]*$/, '')}`;
|
|
2110
|
+
return `${parsed.origin}${base}version.json`;
|
|
2111
|
+
} catch {
|
|
2112
|
+
return null;
|
|
2113
|
+
}
|
|
2114
|
+
}
|
|
2115
|
+
async function probeEngineOrigin(viewerUrl, fetchImpl = (url, init)=>fetch(url, init), timeoutMs = 3000) {
|
|
2116
|
+
const url = engineVersionUrl(viewerUrl);
|
|
2117
|
+
if (!url) return 'unknown';
|
|
2118
|
+
const controller = new AbortController();
|
|
2119
|
+
const timer = setTimeout(()=>controller.abort(), timeoutMs);
|
|
2120
|
+
try {
|
|
2121
|
+
const response = await fetchImpl(url, {
|
|
2122
|
+
signal: controller.signal
|
|
2123
|
+
});
|
|
2124
|
+
if (429 === response.status) return 'throttled';
|
|
2125
|
+
if (503 === response.status) return 'held';
|
|
2126
|
+
if (200 !== response.status) return 'unknown';
|
|
2127
|
+
const report = await response.json();
|
|
2128
|
+
return report && 'held' === report.hold ? 'held' : 'open';
|
|
2129
|
+
} catch {
|
|
2130
|
+
return 'unknown';
|
|
2131
|
+
} finally{
|
|
2132
|
+
clearTimeout(timer);
|
|
2133
|
+
}
|
|
2134
|
+
}
|
|
2135
|
+
function engineOriginLine(verdict) {
|
|
2136
|
+
if ('held' === verdict) return `${(0, messaging.Pl)('warn')} emulated Chromium is not open to the public yet, so this address answers 503 until it is. Run this project with --browser=chrome in the meantime.`;
|
|
2137
|
+
if ('throttled' === verdict) return `${(0, messaging.Pl)('warn')} the emulated Chromium origin is rate limiting this address (HTTP 429). Wait a minute, then run extension dev again, or run this project with --browser=chrome.`;
|
|
2138
|
+
return null;
|
|
2139
|
+
}
|
|
2140
|
+
function openInDefaultBrowser(url) {
|
|
2141
|
+
const { command, args } = openCommandFor(url);
|
|
2142
|
+
try {
|
|
2143
|
+
const child = (0, external_node_child_process_.spawn)(command, args, {
|
|
2144
|
+
detached: true,
|
|
2145
|
+
stdio: 'ignore',
|
|
2146
|
+
windowsHide: true
|
|
2147
|
+
});
|
|
2148
|
+
child.on('error', ()=>{});
|
|
2149
|
+
child.unref();
|
|
2150
|
+
} catch {
|
|
2151
|
+
return;
|
|
2152
|
+
}
|
|
2153
|
+
}
|
|
2154
|
+
async function launchEmulator(opts, opener = openInDefaultBrowser, probe = probeEngineOrigin) {
|
|
2155
|
+
if ('development' !== (opts.mode || 'production')) throw new Error('emulated Chromium needs the dev server that serves the files the page reads. Run extension dev instead.');
|
|
2156
|
+
const url = opts.emulatorViewerUrl;
|
|
2157
|
+
if (!url) throw new Error('this version of extension-develop does not serve emulated Chromium. Update extension-develop so it matches the CLI, then run extension dev again.');
|
|
2158
|
+
console.log(emulatorViewerUrlLine(url));
|
|
2159
|
+
const willOpen = !opts.noOpen && !opts.dryRun;
|
|
2160
|
+
const verdict = willOpen ? await probe(url) : 'unknown';
|
|
2161
|
+
const originLine = engineOriginLine(verdict);
|
|
2162
|
+
if (originLine) console.warn(originLine);
|
|
2163
|
+
if (willOpen && !originLine) opener(url);
|
|
2164
|
+
const logsRequested = Boolean(opts.logLevel && 'off' !== opts.logLevel);
|
|
2165
|
+
return {
|
|
2166
|
+
async enableUnifiedLogging () {
|
|
2167
|
+
if (logsRequested) console.warn(emulatorLogsLimitLine());
|
|
2168
|
+
}
|
|
2169
|
+
};
|
|
2170
|
+
}
|
|
2171
|
+
var firefox_context = __webpack_require__("./browsers/run-firefox/firefox-context/index.ts");
|
|
2172
|
+
var firefox_launch = __webpack_require__("./browsers/run-firefox/firefox-launch/index.ts");
|
|
2173
|
+
var run_only = __webpack_require__("./browsers/run-only.ts");
|
|
2174
|
+
var safari_launch = __webpack_require__("./browsers/run-safari/safari-launch/index.ts");
|
|
2175
|
+
var safari_config = __webpack_require__("./browsers/run-safari/safari-launch/safari-config.ts");
|
|
2176
|
+
var safari_packager = __webpack_require__("./browsers/run-safari/safari-packager.ts");
|
|
2045
2177
|
function createCompilationLike(opts) {
|
|
2046
2178
|
return {
|
|
2047
2179
|
options: {
|
|
@@ -2057,11 +2189,12 @@ var __webpack_modules__ = {
|
|
|
2057
2189
|
};
|
|
2058
2190
|
}
|
|
2059
2191
|
async function launchBrowser(opts) {
|
|
2192
|
+
if ((0, browser_family.eP)(opts.browser)) return launchEmulator(opts);
|
|
2060
2193
|
const compilationLike = createCompilationLike(opts);
|
|
2061
2194
|
const mode = opts.mode || 'production';
|
|
2062
|
-
(0,
|
|
2063
|
-
if ((0,
|
|
2064
|
-
if ((0,
|
|
2195
|
+
(0, output_binaries_resolver.LB)(compilationLike);
|
|
2196
|
+
if ((0, browser_family.rG)(opts.browser)) return launchChromium(opts, compilationLike, mode);
|
|
2197
|
+
if ((0, browser_family.M_)(opts.browser)) return launchFirefox(opts, compilationLike, mode);
|
|
2065
2198
|
throw new Error(`Unsupported browser: ${String(opts.browser)}`);
|
|
2066
2199
|
}
|
|
2067
2200
|
async function launchChromium(opts, compilationLike, mode) {
|
|
@@ -2090,8 +2223,8 @@ var __webpack_modules__ = {
|
|
|
2090
2223
|
logTab: opts.logTab,
|
|
2091
2224
|
logSink: opts.logSink
|
|
2092
2225
|
};
|
|
2093
|
-
const ctx = (0,
|
|
2094
|
-
const launcher = new
|
|
2226
|
+
const ctx = (0, chromium_context.g)();
|
|
2227
|
+
const launcher = new chromium_launch.f(chromiumOpts, ctx);
|
|
2095
2228
|
const enableCdp = 'development' === mode;
|
|
2096
2229
|
await launcher.runOnce(compilationLike, {
|
|
2097
2230
|
enableCdpPostLaunch: enableCdp
|
|
@@ -2165,9 +2298,9 @@ var __webpack_modules__ = {
|
|
|
2165
2298
|
port: opts.port,
|
|
2166
2299
|
dryRun: opts.dryRun
|
|
2167
2300
|
};
|
|
2168
|
-
const ctx = (0,
|
|
2169
|
-
const launcher = new
|
|
2170
|
-
const launchRequest = (0,
|
|
2301
|
+
const ctx = (0, firefox_context.D)();
|
|
2302
|
+
const launcher = new firefox_launch.c(firefoxOpts, ctx);
|
|
2303
|
+
const launchRequest = (0, runtime_options.zU)(pluginOptions, mode, {
|
|
2171
2304
|
persistProfile: opts.persistProfile,
|
|
2172
2305
|
geckoBinary: opts.geckoBinary
|
|
2173
2306
|
});
|
|
@@ -2197,19 +2330,6 @@ var __webpack_modules__ = {
|
|
|
2197
2330
|
}
|
|
2198
2331
|
};
|
|
2199
2332
|
}
|
|
2200
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
2201
|
-
builtAppPath: ()=>_run_safari_safari_launch_safari_config__rspack_import_6.fd,
|
|
2202
|
-
createSafariPackager: ()=>_run_safari_safari_packager__rspack_import_7.P,
|
|
2203
|
-
isValidBundleId: ()=>_run_safari_safari_launch_safari_config__rspack_import_6.OA,
|
|
2204
|
-
launchBrowser: ()=>launchBrowser,
|
|
2205
|
-
macOsSchemeName: ()=>_run_safari_safari_launch_safari_config__rspack_import_6.aD,
|
|
2206
|
-
packageSafariExtension: ()=>_run_safari_safari_launch__rspack_import_5.Ah,
|
|
2207
|
-
resolveSafariBuildConfig: ()=>_run_safari_safari_launch_safari_config__rspack_import_6.F7,
|
|
2208
|
-
runOnlyPreviewBrowser: ()=>_run_only__rspack_import_4.E,
|
|
2209
|
-
safariBuildPreflight: ()=>_run_safari_safari_launch__rspack_import_5.QW,
|
|
2210
|
-
safariPreflightError: ()=>_run_safari_safari_launch__rspack_import_5.iF,
|
|
2211
|
-
xcodeProjectPath: ()=>_run_safari_safari_launch_safari_config__rspack_import_6.Gi
|
|
2212
|
-
});
|
|
2213
2333
|
},
|
|
2214
2334
|
"./browsers/run-chromium/cdp/discovery.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
2215
2335
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -3845,10 +3965,14 @@ var __webpack_modules__ = {
|
|
|
3845
3965
|
var external_node_fs_ = __webpack_require__("node:fs");
|
|
3846
3966
|
var external_firefox_location2_ = __webpack_require__("firefox-location2");
|
|
3847
3967
|
var external_firefox_location2_default = /*#__PURE__*/ __webpack_require__.n(external_firefox_location2_);
|
|
3968
|
+
const external_floorp_location_namespaceObject = require("floorp-location");
|
|
3969
|
+
var external_floorp_location_default = /*#__PURE__*/ __webpack_require__.n(external_floorp_location_namespaceObject);
|
|
3848
3970
|
const external_librewolf_location_namespaceObject = require("librewolf-location");
|
|
3849
3971
|
var external_librewolf_location_default = /*#__PURE__*/ __webpack_require__.n(external_librewolf_location_namespaceObject);
|
|
3850
3972
|
const external_waterfox_location_namespaceObject = require("waterfox-location");
|
|
3851
3973
|
var external_waterfox_location_default = /*#__PURE__*/ __webpack_require__.n(external_waterfox_location_namespaceObject);
|
|
3974
|
+
const external_zen_location_namespaceObject = require("zen-location");
|
|
3975
|
+
var external_zen_location_default = /*#__PURE__*/ __webpack_require__.n(external_zen_location_namespaceObject);
|
|
3852
3976
|
var messaging = __webpack_require__("./helpers/messaging.ts");
|
|
3853
3977
|
var banner = __webpack_require__("./browsers/browsers-lib/banner.ts");
|
|
3854
3978
|
var instance_registry = __webpack_require__("./browsers/browsers-lib/instance-registry.ts");
|
|
@@ -5591,6 +5715,18 @@ var __webpack_modules__ = {
|
|
|
5591
5715
|
});
|
|
5592
5716
|
const normalized = normalizePath(located);
|
|
5593
5717
|
if (normalized) browserBinaryLocation = normalized;
|
|
5718
|
+
} else if ('zen' === this.host.browser) {
|
|
5719
|
+
const located = external_zen_location_default()(true, {
|
|
5720
|
+
env: process.env
|
|
5721
|
+
});
|
|
5722
|
+
const normalized = normalizePath(located);
|
|
5723
|
+
if (normalized) browserBinaryLocation = normalized;
|
|
5724
|
+
} else if ('floorp' === this.host.browser) {
|
|
5725
|
+
const located = external_floorp_location_default()(true, {
|
|
5726
|
+
env: process.env
|
|
5727
|
+
});
|
|
5728
|
+
const normalized = normalizePath(located);
|
|
5729
|
+
if (normalized) browserBinaryLocation = normalized;
|
|
5594
5730
|
} else {
|
|
5595
5731
|
const cacheRoot = (0, output_binaries_resolver.LB)(compilation);
|
|
5596
5732
|
const env = {
|
|
@@ -6712,6 +6848,13 @@ var __webpack_modules__ = {
|
|
|
6712
6848
|
rQ: ()=>recordBrowserInstall
|
|
6713
6849
|
});
|
|
6714
6850
|
},
|
|
6851
|
+
"./helpers/emulator-session.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
6852
|
+
__webpack_require__("./helpers/vendors.ts");
|
|
6853
|
+
const EMULATOR_LOGS_REFUSAL = 'emulated Chromium runs in a web page, so extension logs has nothing to attach to. Open your browser devtools on that page to read the console.';
|
|
6854
|
+
__webpack_require__.d(__webpack_exports__, {}, {
|
|
6855
|
+
fg: EMULATOR_LOGS_REFUSAL
|
|
6856
|
+
});
|
|
6857
|
+
},
|
|
6715
6858
|
"./helpers/messaging.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
6716
6859
|
var pintor__rspack_import_0 = __webpack_require__("pintor");
|
|
6717
6860
|
var pintor__rspack_import_0_default = /*#__PURE__*/ __webpack_require__.n(pintor__rspack_import_0);
|
|
@@ -6796,6 +6939,8 @@ var __webpack_modules__ = {
|
|
|
6796
6939
|
'firefox-based',
|
|
6797
6940
|
'gecko-based',
|
|
6798
6941
|
'librewolf',
|
|
6942
|
+
'zen',
|
|
6943
|
+
'floorp',
|
|
6799
6944
|
'waterfox'
|
|
6800
6945
|
]);
|
|
6801
6946
|
function artifactNoun(browser) {
|
|
@@ -6817,6 +6962,48 @@ var __webpack_modules__ = {
|
|
|
6817
6962
|
od: ()=>claimCardKey
|
|
6818
6963
|
});
|
|
6819
6964
|
},
|
|
6965
|
+
"./helpers/vendors.ts" () {
|
|
6966
|
+
function isSafariVendor(value) {
|
|
6967
|
+
return 'safari' === value || 'webkit-based' === value;
|
|
6968
|
+
}
|
|
6969
|
+
const SUPPORTED_BROWSER_TARGETS = [
|
|
6970
|
+
'chrome',
|
|
6971
|
+
'chromium',
|
|
6972
|
+
'edge',
|
|
6973
|
+
'firefox',
|
|
6974
|
+
'brave',
|
|
6975
|
+
'opera',
|
|
6976
|
+
'vivaldi',
|
|
6977
|
+
'yandex',
|
|
6978
|
+
'waterfox',
|
|
6979
|
+
'librewolf',
|
|
6980
|
+
'zen',
|
|
6981
|
+
'floorp',
|
|
6982
|
+
'chromium-based',
|
|
6983
|
+
'gecko-based',
|
|
6984
|
+
'firefox-based',
|
|
6985
|
+
'safari',
|
|
6986
|
+
'webkit-based'
|
|
6987
|
+
];
|
|
6988
|
+
SUPPORTED_BROWSER_TARGETS.join(' | ');
|
|
6989
|
+
"chrome | chromium | edge | firefox | safari";
|
|
6990
|
+
SUPPORTED_BROWSER_TARGETS.filter((target)=>!isSafariVendor(target)).join(' | ');
|
|
6991
|
+
const MANAGED_INSTALL_TARGETS = [
|
|
6992
|
+
'chrome',
|
|
6993
|
+
'chromium',
|
|
6994
|
+
'edge',
|
|
6995
|
+
'firefox',
|
|
6996
|
+
'chromium-based',
|
|
6997
|
+
'gecko-based',
|
|
6998
|
+
'firefox-based'
|
|
6999
|
+
];
|
|
7000
|
+
[
|
|
7001
|
+
...MANAGED_INSTALL_TARGETS,
|
|
7002
|
+
'all'
|
|
7003
|
+
].join(' | ');
|
|
7004
|
+
new Set(MANAGED_INSTALL_TARGETS);
|
|
7005
|
+
new Set(SUPPORTED_BROWSER_TARGETS);
|
|
7006
|
+
},
|
|
6820
7007
|
"chrome-location2" (module) {
|
|
6821
7008
|
module.exports = require("chrome-location2");
|
|
6822
7009
|
},
|