@skrillex1224/playwright-toolkit 2.1.170 → 2.1.171

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/index.cjs CHANGED
@@ -573,7 +573,7 @@ var CrawlerError = class _CrawlerError extends Error {
573
573
  // src/apify-kit.js
574
574
  var import_serialize_error2 = require("serialize-error");
575
575
 
576
- // src/proxy-meter-runtime.js
576
+ // src/internals/proxy-meter-runtime.js
577
577
  var import_child_process = require("child_process");
578
578
  var import_fs = require("fs");
579
579
  var import_os = require("os");
@@ -643,6 +643,10 @@ var resolveResourceTypeMeta = (domain) => {
643
643
  };
644
644
  var resolveScriptPath = () => {
645
645
  const baseDir = typeof __dirname !== "undefined" ? __dirname : import_path.default.dirname((0, import_url.fileURLToPath)(import_meta.url));
646
+ const internalCandidate = import_path.default.join(baseDir, "internals", "proxy-meter.js");
647
+ if ((0, import_fs.existsSync)(internalCandidate)) {
648
+ return internalCandidate;
649
+ }
646
650
  return import_path.default.join(baseDir, "proxy-meter.js");
647
651
  };
648
652
  var pickFreePort = () => {
@@ -926,6 +930,12 @@ var getProxyMeterSnapshot = async (options = {}) => {
926
930
  }
927
931
  return snapshot;
928
932
  };
933
+ var ProxyMeterRuntime = {
934
+ startProxyMeter,
935
+ recordProxyMeterResourceType,
936
+ stopProxyMeter,
937
+ getProxyMeterSnapshot
938
+ };
929
939
 
930
940
  // src/apify-kit.js
931
941
  var logger3 = createInternalLogger("ApifyKit");
@@ -1045,7 +1055,7 @@ async function createApifyKit() {
1045
1055
  * @param {Object} data - 要推送的数据对象
1046
1056
  */
1047
1057
  async pushSuccess(data) {
1048
- const traffic = await getProxyMeterSnapshot({ finalize: true });
1058
+ const traffic = await ProxyMeterRuntime.getProxyMeterSnapshot({ finalize: true });
1049
1059
  await Actor2.pushData({
1050
1060
  // 固定为0
1051
1061
  code: Code.Success,
@@ -1067,7 +1077,7 @@ async function createApifyKit() {
1067
1077
  const isCrawlerError = CrawlerError.isCrawlerError(error);
1068
1078
  const code = isCrawlerError ? error.code : Code.UnknownError;
1069
1079
  const context = isCrawlerError ? error.context : {};
1070
- const traffic = await getProxyMeterSnapshot({ finalize: true });
1080
+ const traffic = await ProxyMeterRuntime.getProxyMeterSnapshot({ finalize: true });
1071
1081
  await Actor2.pushData({
1072
1082
  // 如果是 CrawlerError,使用其 code,否则使用默认 Failed code
1073
1083
  code,
@@ -1698,6 +1708,7 @@ var normalizeByPassDomains = (domains) => {
1698
1708
  if (!Array.isArray(domains)) return [];
1699
1709
  return domains.map((item) => String(item || "").trim()).filter(Boolean);
1700
1710
  };
1711
+ var normalizeHostname = (value = "") => String(value || "").trim().toLowerCase();
1701
1712
  var buildByPassDomainRule = (rawPattern) => {
1702
1713
  const pattern = String(rawPattern || "").trim().toLowerCase();
1703
1714
  if (!pattern) return null;
@@ -1718,7 +1729,7 @@ var buildByPassDomainRules = (domains = []) => {
1718
1729
  var findMatchedByPassRule = (rules = [], requestUrl = "") => {
1719
1730
  let hostname = "";
1720
1731
  try {
1721
- hostname = new URL(String(requestUrl || "")).hostname.toLowerCase();
1732
+ hostname = normalizeHostname(new URL(String(requestUrl || "")).hostname);
1722
1733
  } catch {
1723
1734
  return null;
1724
1735
  }
@@ -1735,6 +1746,41 @@ var findMatchedByPassRule = (rules = [], requestUrl = "") => {
1735
1746
  hostname
1736
1747
  };
1737
1748
  };
1749
+ var isDomainCoveredByByPass = (domain = "", rules = []) => {
1750
+ const hostname = normalizeHostname(domain);
1751
+ if (!hostname) return false;
1752
+ for (const rule of rules || []) {
1753
+ if (!rule || typeof rule.test !== "function") continue;
1754
+ if (rule.test(hostname)) return true;
1755
+ }
1756
+ return false;
1757
+ };
1758
+ var resolveRouteByProxy = ({
1759
+ requestUrl = "",
1760
+ enableProxy = false,
1761
+ byPassRules = []
1762
+ }) => {
1763
+ if (!enableProxy) {
1764
+ return { route: "direct", matchedRule: null, hostname: "" };
1765
+ }
1766
+ const matched = findMatchedByPassRule(byPassRules, requestUrl);
1767
+ if (!matched) {
1768
+ return { route: "proxy", matchedRule: null, hostname: "" };
1769
+ }
1770
+ if (matched.rule) {
1771
+ return { route: "direct", matchedRule: matched.rule, hostname: matched.hostname };
1772
+ }
1773
+ return { route: "proxy", matchedRule: null, hostname: matched.hostname };
1774
+ };
1775
+ var ByPass = {
1776
+ normalizeByPassDomains,
1777
+ normalizeHostname,
1778
+ buildByPassDomainRule,
1779
+ buildByPassDomainRules,
1780
+ findMatchedByPassRule,
1781
+ isDomainCoveredByByPass,
1782
+ resolveRouteByProxy
1783
+ };
1738
1784
 
1739
1785
  // src/launch.js
1740
1786
  var logger7 = createInternalLogger("Launch");
@@ -1752,7 +1798,7 @@ var resolveProxyLaunchOptions = (proxyConfiguration = {}) => {
1752
1798
  if (!enableProxy || !proxyUrl) {
1753
1799
  return { byPassDomains: [], enableProxy, proxyUrl };
1754
1800
  }
1755
- const byPassDomains = normalizeByPassDomains(config.by_pass_domains);
1801
+ const byPassDomains = ByPass.normalizeByPassDomains(config.by_pass_domains);
1756
1802
  return { byPassDomains, enableProxy, proxyUrl };
1757
1803
  };
1758
1804
  var Launch = {
@@ -1770,8 +1816,8 @@ var Launch = {
1770
1816
  postNavigationHooks = []
1771
1817
  } = normalizedOptions;
1772
1818
  const { byPassDomains, enableProxy, proxyUrl } = resolveProxyLaunchOptions(proxyConfiguration);
1773
- const byPassRules = buildByPassDomainRules(byPassDomains);
1774
- const proxyMeter = enableProxy && proxyUrl ? startProxyMeter({ proxyUrl, debugMode }) : null;
1819
+ const byPassRules = ByPass.buildByPassDomainRules(byPassDomains);
1820
+ const proxyMeter = enableProxy && proxyUrl ? ProxyMeterRuntime.startProxyMeter({ proxyUrl, debugMode }) : null;
1775
1821
  const launchProxy = proxyMeter ? { server: proxyMeter.server } : null;
1776
1822
  if (launchProxy && byPassDomains.length > 0) {
1777
1823
  launchProxy.bypass = byPassDomains.join(",");
@@ -1825,9 +1871,9 @@ var Launch = {
1825
1871
  const requestHandler = (req) => {
1826
1872
  const requestUrl = req.url();
1827
1873
  const resourceType = req.resourceType();
1828
- const matched = byPassDomains.length > 0 ? findMatchedByPassRule(byPassRules, requestUrl) : null;
1829
- if (launchProxy && !matched) {
1830
- recordProxyMeterResourceType(requestUrl, resourceType);
1874
+ const matched = byPassDomains.length > 0 ? ByPass.findMatchedByPassRule(byPassRules, requestUrl) : null;
1875
+ if (launchProxy) {
1876
+ ProxyMeterRuntime.recordProxyMeterResourceType(requestUrl, resourceType);
1831
1877
  }
1832
1878
  if (!enableByPassLogger || byPassDomains.length === 0) return;
1833
1879
  if (!matched || !matched.rule) return;
@@ -4181,6 +4227,7 @@ var usePlaywrightToolKit = () => {
4181
4227
  Display,
4182
4228
  Logger,
4183
4229
  Share,
4230
+ ByPass,
4184
4231
  $Internals: { LOG_TEMPLATES, stripAnsi }
4185
4232
  };
4186
4233
  };