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 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
- const absolute = node_path__rspack_import_2.resolve(extensionPath);
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
- var _browsers_lib_browser_family__rspack_import_0 = __webpack_require__("./browsers/browsers-lib/browser-family.ts");
2035
- var _browsers_lib_output_binaries_resolver__rspack_import_1 = __webpack_require__("./browsers/browsers-lib/output-binaries-resolver.ts");
2036
- var _browsers_lib_runtime_options__rspack_import_10 = __webpack_require__("./browsers/browsers-lib/runtime-options.ts");
2037
- var _run_chromium_chromium_context__rspack_import_8 = __webpack_require__("./browsers/run-chromium/chromium-context/index.ts");
2038
- var _run_chromium_chromium_launch__rspack_import_2 = __webpack_require__("./browsers/run-chromium/chromium-launch/index.ts");
2039
- var _run_firefox_firefox_context__rspack_import_9 = __webpack_require__("./browsers/run-firefox/firefox-context/index.ts");
2040
- var _run_firefox_firefox_launch__rspack_import_3 = __webpack_require__("./browsers/run-firefox/firefox-launch/index.ts");
2041
- var _run_only__rspack_import_4 = __webpack_require__("./browsers/run-only.ts");
2042
- var _run_safari_safari_launch__rspack_import_5 = __webpack_require__("./browsers/run-safari/safari-launch/index.ts");
2043
- var _run_safari_safari_launch_safari_config__rspack_import_6 = __webpack_require__("./browsers/run-safari/safari-launch/safari-config.ts");
2044
- var _run_safari_safari_packager__rspack_import_7 = __webpack_require__("./browsers/run-safari/safari-packager.ts");
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, _browsers_lib_output_binaries_resolver__rspack_import_1.LB)(compilationLike);
2063
- if ((0, _browsers_lib_browser_family__rspack_import_0.rG)(opts.browser)) return launchChromium(opts, compilationLike, mode);
2064
- if ((0, _browsers_lib_browser_family__rspack_import_0.M_)(opts.browser)) return launchFirefox(opts, compilationLike, mode);
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, _run_chromium_chromium_context__rspack_import_8.g)();
2094
- const launcher = new _run_chromium_chromium_launch__rspack_import_2.f(chromiumOpts, ctx);
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, _run_firefox_firefox_context__rspack_import_9.D)();
2169
- const launcher = new _run_firefox_firefox_launch__rspack_import_3.c(firefoxOpts, ctx);
2170
- const launchRequest = (0, _browsers_lib_runtime_options__rspack_import_10.zU)(pluginOptions, mode, {
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
  },