carbon-proxy 0.14.2 → 0.14.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-proxy",
3
- "version": "0.14.2",
3
+ "version": "0.14.4",
4
4
  "type": "module",
5
5
  "main": "./dist/src/index.js",
6
6
  "repository": {
@@ -16,6 +16,12 @@ export interface ShardingPluginOptions extends Omit<GatewayPluginOptions, "shard
16
16
  * Maximum number of shards to spawn concurrently
17
17
  */
18
18
  maxConcurrency?: number;
19
+ /**
20
+ * Proxy URL for both WebSocket connections and REST API calls.
21
+ * If not specified, will check DISCORD_SOCKS_PROXY, DISCORD_HTTP_PROXY,
22
+ * then HTTP_PROXY/HTTPS_PROXY environment variables.
23
+ */
24
+ proxyUrl?: string;
19
25
  }
20
26
  export declare class ShardingPlugin extends Plugin {
21
27
  readonly id = "sharding";
@@ -1 +1 @@
1
- {"version":3,"file":"ShardingPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE/D,MAAM,WAAW,qBAChB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,cAAe,SAAQ,MAAM;IACzC,QAAQ,CAAC,EAAE,cAAa;IACxB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAY;IACvD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAA;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAK;IACnC,SAAS,CAAC,QAAQ,UAAQ;IAC1B,SAAS,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAEzC,mBAAmB,uBAAgB;gBAEvB,OAAO,EAAE,qBAAqB;IAM1C,IAAI,IAAI,kCAMP;IAEY,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cA0C1C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3C,UAAU,IAAI,IAAI;IAQzB;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAUnE;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;CAMrE"}
1
+ {"version":3,"file":"ShardingPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE/D,MAAM,WAAW,qBAChB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,cAAe,SAAQ,MAAM;IACzC,QAAQ,CAAC,EAAE,cAAa;IACxB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAY;IACvD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAA;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAK;IACnC,SAAS,CAAC,QAAQ,UAAQ;IAC1B,SAAS,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAEzC,mBAAmB,uBAAgB;gBAEvB,OAAO,EAAE,qBAAqB;IAM1C,IAAI,IAAI,kCAMP;IAEY,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAsE1C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3C,UAAU,IAAI,IAAI;IAQzB;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAUnE;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;CAMrE"}
@@ -1,4 +1,5 @@
1
1
  import { Plugin } from "../../abstracts/Plugin.js";
2
+ import { createProxyAgent, getProxyUrl } from "../../utils/proxy.js";
2
3
  import { GatewayPlugin } from "../gateway/GatewayPlugin.js";
3
4
  export class ShardingPlugin extends Plugin {
4
5
  id = "sharding";
@@ -27,11 +28,35 @@ export class ShardingPlugin extends Plugin {
27
28
  // If totalShards not provided, get recommended amount from Discord
28
29
  if (!this.config.totalShards) {
29
30
  try {
30
- const response = await fetch("https://discord.com/api/v10/gateway/bot", {
31
+ // Import proxy utilities for REST API calls
32
+ const proxyUrl = getProxyUrl(this.config.proxyUrl);
33
+ const fetchOptions = {
31
34
  headers: {
32
35
  Authorization: `Bot ${client.options.token}`
33
36
  }
34
- });
37
+ };
38
+ // Add dispatcher if proxy is configured
39
+ // For SOCKS proxies, try to use HTTP_PROXY for REST API calls
40
+ let effectiveProxyUrl = proxyUrl;
41
+ if (proxyUrl?.startsWith("socks")) {
42
+ // SOCKS doesn't work with fetch, try HTTP_PROXY fallback
43
+ const httpProxy = process.env.DISCORD_HTTP_PROXY ||
44
+ process.env.HTTP_PROXY ||
45
+ process.env.HTTPS_PROXY ||
46
+ process.env.http_proxy ||
47
+ process.env.https_proxy;
48
+ if (httpProxy && !httpProxy.startsWith("socks")) {
49
+ effectiveProxyUrl = httpProxy;
50
+ }
51
+ }
52
+ if (effectiveProxyUrl && !effectiveProxyUrl.startsWith("socks")) {
53
+ const proxyAgent = await createProxyAgent(effectiveProxyUrl);
54
+ if (proxyAgent?.dispatcher) {
55
+ // @ts-expect-error - dispatcher is not in standard RequestInit but supported by undici
56
+ fetchOptions.dispatcher = proxyAgent.dispatcher;
57
+ }
58
+ }
59
+ const response = await fetch("https://discord.com/api/v10/gateway/bot", fetchOptions);
35
60
  const gatewayInfo = (await response.json());
36
61
  this.config.totalShards = gatewayInfo.shards;
37
62
  if (!this.config.url) {
@@ -1 +1 @@
1
- {"version":3,"file":"ShardingPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShardingPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Priority:
5
5
  * 1. configuredProxy (passed directly)
6
- * 2. DISCORD_HTTP_PROXY environment variable
7
- * 3. HTTP_PROXY / HTTPS_PROXY environment variables (fallback)
6
+ * 2. DISCORD_SOCKS_PROXY environment variable (for SOCKS proxies)
7
+ * 3. DISCORD_HTTP_PROXY environment variable (for HTTP/HTTPS proxies)
8
+ * 4. HTTP_PROXY / HTTPS_PROXY environment variables (fallback)
8
9
  *
9
10
  * @param configuredProxy - Proxy URL from options
10
11
  * @returns Proxy URL string or null if no proxy is configured
@@ -16,6 +17,13 @@ export declare function getProxyUrl(configuredProxy?: string): string | null;
16
17
  * Supports:
17
18
  * - HTTP/HTTPS proxies via undici's ProxyAgent
18
19
  * - SOCKS4/5 proxies via socks-proxy-agent (for WebSocket)
20
+ * - SOCKS5H/SOCKS4A proxies with remote DNS resolution (avoids DNS pollution)
21
+ *
22
+ * Protocol suffixes:
23
+ * - socks5:// - Local DNS resolution (default)
24
+ * - socks5h:// - Remote DNS resolution via proxy (recommended for DNS pollution issues)
25
+ * - socks4:// - SOCKS4 with local DNS
26
+ * - socks4a:// - SOCKS4A with remote DNS
19
27
  *
20
28
  * @param proxyUrl - The proxy URL to create an agent for
21
29
  * @returns Proxy agent instance or null if not supported
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BnE;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAC,CAyEzD"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"AA2CA;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoCnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAC,CAiFzD"}
@@ -2,7 +2,15 @@ function parseProxyUrl(proxyUrl) {
2
2
  try {
3
3
  const url = new URL(proxyUrl);
4
4
  const protocol = url.protocol.replace(":", "");
5
- if (["http", "https", "socks", "socks5", "socks4"].includes(protocol)) {
5
+ if ([
6
+ "http",
7
+ "https",
8
+ "socks",
9
+ "socks5",
10
+ "socks5h",
11
+ "socks4",
12
+ "socks4a"
13
+ ].includes(protocol)) {
6
14
  return {
7
15
  url: proxyUrl,
8
16
  type: protocol
@@ -19,8 +27,9 @@ function parseProxyUrl(proxyUrl) {
19
27
  *
20
28
  * Priority:
21
29
  * 1. configuredProxy (passed directly)
22
- * 2. DISCORD_HTTP_PROXY environment variable
23
- * 3. HTTP_PROXY / HTTPS_PROXY environment variables (fallback)
30
+ * 2. DISCORD_SOCKS_PROXY environment variable (for SOCKS proxies)
31
+ * 3. DISCORD_HTTP_PROXY environment variable (for HTTP/HTTPS proxies)
32
+ * 4. HTTP_PROXY / HTTPS_PROXY environment variables (fallback)
24
33
  *
25
34
  * @param configuredProxy - Proxy URL from options
26
35
  * @returns Proxy URL string or null if no proxy is configured
@@ -30,12 +39,17 @@ export function getProxyUrl(configuredProxy) {
30
39
  if (configuredProxy) {
31
40
  return configuredProxy;
32
41
  }
33
- // 2. Check Discord-specific proxy environment variable
42
+ // 2. Check Discord-specific SOCKS proxy environment variable
43
+ const discordSocksProxy = process.env.DISCORD_SOCKS_PROXY;
44
+ if (discordSocksProxy) {
45
+ return discordSocksProxy;
46
+ }
47
+ // 3. Check Discord-specific HTTP proxy environment variable
34
48
  const discordProxy = process.env.DISCORD_HTTP_PROXY;
35
49
  if (discordProxy) {
36
50
  return discordProxy;
37
51
  }
38
- // 3. Fall back to generic proxy variables
52
+ // 4. Fall back to generic proxy variables
39
53
  const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
40
54
  if (httpsProxy) {
41
55
  return httpsProxy;
@@ -44,7 +58,7 @@ export function getProxyUrl(configuredProxy) {
44
58
  if (httpProxy) {
45
59
  return httpProxy;
46
60
  }
47
- // 4. Check ALL_PROXY (supports SOCKS)
61
+ // 5. Check ALL_PROXY (supports SOCKS)
48
62
  const allProxy = process.env.ALL_PROXY || process.env.all_proxy;
49
63
  if (allProxy) {
50
64
  return allProxy;
@@ -57,6 +71,13 @@ export function getProxyUrl(configuredProxy) {
57
71
  * Supports:
58
72
  * - HTTP/HTTPS proxies via undici's ProxyAgent
59
73
  * - SOCKS4/5 proxies via socks-proxy-agent (for WebSocket)
74
+ * - SOCKS5H/SOCKS4A proxies with remote DNS resolution (avoids DNS pollution)
75
+ *
76
+ * Protocol suffixes:
77
+ * - socks5:// - Local DNS resolution (default)
78
+ * - socks5h:// - Remote DNS resolution via proxy (recommended for DNS pollution issues)
79
+ * - socks4:// - SOCKS4 with local DNS
80
+ * - socks4a:// - SOCKS4A with remote DNS
60
81
  *
61
82
  * @param proxyUrl - The proxy URL to create an agent for
62
83
  * @returns Proxy agent instance or null if not supported
@@ -96,8 +117,13 @@ export async function createProxyAgent(proxyUrl) {
96
117
  // Use SOCKS proxy agent
97
118
  try {
98
119
  const { SocksProxyAgent } = await import("socks-proxy-agent");
99
- const agent = new SocksProxyAgent(parsed.url);
100
- console.log(`[Carbon] Using SOCKS proxy: ${parsed.url}`);
120
+ // Add timeout configuration to prevent hanging connections
121
+ // Use environment variable or default to 60 seconds for slow proxies
122
+ const proxyTimeout = Number(process.env.DISCORD_PROXY_TIMEOUT) || 60000;
123
+ const agent = new SocksProxyAgent(parsed.url, {
124
+ timeout: proxyTimeout
125
+ });
126
+ console.log(`[Carbon] Using SOCKS proxy: ${parsed.url} (timeout: ${proxyTimeout}ms)`);
101
127
  // Return both agent and dispatcher for compatibility
102
128
  // - agent: for ws library (WebSocket)
103
129
  // - dispatcher: for undici fetch API (may not work with legacy agents)
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"AAQA,SAAS,aAAa,CAAC,QAAgB;IACtC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAE9C,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvE,OAAO;gBACN,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,QAA4D;aAClE,CAAA;QACF,CAAC;QAED,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,eAAwB;IACnD,sCAAsC;IACtC,IAAI,eAAe,EAAE,CAAC;QACrB,OAAO,eAAe,CAAA;IACvB,CAAC;IAED,uDAAuD;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IACnD,IAAI,YAAY,EAAE,CAAC;QAClB,OAAO,YAAY,CAAA;IACpB,CAAC;IAED,0CAA0C;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IACrE,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;IAClE,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,sCAAsC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAA;IAChB,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,QAAgB;IAEhB,4BAA4B;IAC5B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,IAAI,CAAC;QACJ,0CAA0C;QAC1C,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC9D,wDAAwD;YACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC;oBACJ,uDAAuD;oBACvD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC7C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAC7C,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;oBACvD,qDAAqD;oBACrD,yFAAyF;oBACzF,qCAAqC;oBACrC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACnC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,kEAAkE;oBAClE,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAA;gBAC1D,CAAC;YACF,CAAC;YAED,4EAA4E;YAC5E,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,wBAAwB;gBACxB,IAAI,CAAC;oBACJ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;oBAC7D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAC7C,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;oBACxD,qDAAqD;oBACrD,sCAAsC;oBACtC,uEAAuE;oBACvE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;gBACnC,CAAC;gBAAC,OAAO,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CACX,wGAAwG,CACxG,CAAA;oBACD,OAAO,IAAI,CAAA;gBACZ,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,yCAAyC;gBACzC,IAAI,CAAC;oBACJ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;oBAC7D,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAC7C,OAAO,CAAC,GAAG,CAAC,uCAAuC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;oBAChE,qDAAqD;oBACrD,sCAAsC;oBACtC,uEAAuE;oBACvE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;gBACnC,CAAC;gBAAC,OAAO,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CACX,uGAAuG,CACvG,CAAA;oBACD,OAAO,IAAI,CAAA;gBACZ,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,0BAA0B;QAC1B,OAAO,CAAC,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"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"}