@railgun-community/shared-models 5.1.12 → 5.1.13

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.
@@ -5,6 +5,10 @@ const ethers_1 = require("ethers");
5
5
  const polling_json_rpc_provider_1 = require("./polling-json-rpc-provider");
6
6
  const createFallbackProviderFromJsonConfig = (config) => {
7
7
  try {
8
+ const totalWeight = config.providers.reduce((acc, { weight }) => acc + weight, 0);
9
+ if (totalWeight < 2) {
10
+ throw new Error('Total weight across providers must be >= 2 for fallback quorum.');
11
+ }
8
12
  const network = ethers_1.Network.from(Number(config.chainId));
9
13
  const providers = config.providers.map(({ provider: providerURL, priority, weight, stallTimeout, disableBatching, }) => {
10
14
  const isWebsocket = providerURL.startsWith('wss');
@@ -25,7 +29,7 @@ const createFallbackProviderFromJsonConfig = (config) => {
25
29
  if (!(err instanceof Error)) {
26
30
  throw err;
27
31
  }
28
- throw new Error(`Invalid fallback provider config: ${err.message}`);
32
+ throw new Error(`Invalid fallback provider config for chain ${config.chainId}: ${err.message}`);
29
33
  }
30
34
  };
31
35
  exports.createFallbackProviderFromJsonConfig = createFallbackProviderFromJsonConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"fallback-provider.js","sourceRoot":"","sources":["../../src/utils/fallback-provider.ts"],"names":[],"mappings":";;;AAAA,mCAAsE;AACtE,2EAAqE;AAgB9D,MAAM,oCAAoC,GAAG,CAClD,MAAkC,EAChB,EAAE;IACpB,IAAI;QACF,MAAM,OAAO,GAAG,gBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAErD,MAAM,SAAS,GAA6B,MAAM,CAAC,SAAS,CAAC,GAAG,CAC9D,CAAC,EACC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,eAAe,GAChB,EAAE,EAAE;YACH,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,WAAW;gBAC1B,CAAC,CAAC,IAAI,0BAAiB,CAAC,WAAW,EAAE,OAAO,CAAC;gBAC7C,CAAC,CAAC,IAAI,kDAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YAEtE,MAAM,sBAAsB,GAA2B;gBACrD,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,YAAY;aACb,CAAC;YACF,OAAO,sBAAsB,CAAC;QAChC,CAAC,CACF,CAAC;QAEF,OAAO,IAAI,yBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACjD;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE;YAC3B,MAAM,GAAG,CAAC;SACX;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACrE;AACH,CAAC,CAAC;AApCW,QAAA,oCAAoC,wCAoC/C","sourcesContent":["import { FallbackProvider, Network, WebSocketProvider } from 'ethers';\nimport { PollingJsonRpcProvider } from './polling-json-rpc-provider';\nimport { FallbackProviderConfig } from 'ethers/lib.commonjs/providers/provider-fallback';\n\nexport type FallbackProviderJsonConfig = {\n chainId: number;\n providers: ProviderJson[];\n};\n\nexport type ProviderJson = {\n priority: number;\n weight: number;\n provider: string;\n stallTimeout?: number;\n disableBatching?: boolean;\n};\n\nexport const createFallbackProviderFromJsonConfig = (\n config: FallbackProviderJsonConfig,\n): FallbackProvider => {\n try {\n const network = Network.from(Number(config.chainId));\n\n const providers: FallbackProviderConfig[] = config.providers.map(\n ({\n provider: providerURL,\n priority,\n weight,\n stallTimeout,\n disableBatching,\n }) => {\n const isWebsocket = providerURL.startsWith('wss');\n const provider = isWebsocket\n ? new WebSocketProvider(providerURL, network)\n : new PollingJsonRpcProvider(providerURL, network, disableBatching);\n\n const fallbackProviderConfig: FallbackProviderConfig = {\n provider,\n priority,\n weight,\n stallTimeout,\n };\n return fallbackProviderConfig;\n },\n );\n\n return new FallbackProvider(providers, network);\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n throw new Error(`Invalid fallback provider config: ${err.message}`);\n }\n};\n"]}
1
+ {"version":3,"file":"fallback-provider.js","sourceRoot":"","sources":["../../src/utils/fallback-provider.ts"],"names":[],"mappings":";;;AAAA,mCAAsE;AACtE,2EAAqE;AAgB9D,MAAM,oCAAoC,GAAG,CAClD,MAAkC,EAChB,EAAE;IACpB,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,EACjC,CAAC,CACF,CAAC;QACF,IAAI,WAAW,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;SACH;QAED,MAAM,OAAO,GAAG,gBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAErD,MAAM,SAAS,GAA6B,MAAM,CAAC,SAAS,CAAC,GAAG,CAC9D,CAAC,EACC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,eAAe,GAChB,EAAE,EAAE;YACH,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,WAAW;gBAC1B,CAAC,CAAC,IAAI,0BAAiB,CAAC,WAAW,EAAE,OAAO,CAAC;gBAC7C,CAAC,CAAC,IAAI,kDAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YAEtE,MAAM,sBAAsB,GAA2B;gBACrD,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,YAAY;aACb,CAAC;YACF,OAAO,sBAAsB,CAAC;QAChC,CAAC,CACF,CAAC;QAEF,OAAO,IAAI,yBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACjD;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE;YAC3B,MAAM,GAAG,CAAC;SACX;QACD,MAAM,IAAI,KAAK,CACb,8CAA8C,MAAM,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAC/E,CAAC;KACH;AACH,CAAC,CAAC;AAhDW,QAAA,oCAAoC,wCAgD/C","sourcesContent":["import { FallbackProvider, Network, WebSocketProvider } from 'ethers';\nimport { PollingJsonRpcProvider } from './polling-json-rpc-provider';\nimport { FallbackProviderConfig } from 'ethers/lib.commonjs/providers/provider-fallback';\n\nexport type FallbackProviderJsonConfig = {\n chainId: number;\n providers: ProviderJson[];\n};\n\nexport type ProviderJson = {\n priority: number;\n weight: number;\n provider: string;\n stallTimeout?: number;\n disableBatching?: boolean;\n};\n\nexport const createFallbackProviderFromJsonConfig = (\n config: FallbackProviderJsonConfig,\n): FallbackProvider => {\n try {\n const totalWeight = config.providers.reduce(\n (acc, { weight }) => acc + weight,\n 0,\n );\n if (totalWeight < 2) {\n throw new Error(\n 'Total weight across providers must be >= 2 for fallback quorum.',\n );\n }\n\n const network = Network.from(Number(config.chainId));\n\n const providers: FallbackProviderConfig[] = config.providers.map(\n ({\n provider: providerURL,\n priority,\n weight,\n stallTimeout,\n disableBatching,\n }) => {\n const isWebsocket = providerURL.startsWith('wss');\n const provider = isWebsocket\n ? new WebSocketProvider(providerURL, network)\n : new PollingJsonRpcProvider(providerURL, network, disableBatching);\n\n const fallbackProviderConfig: FallbackProviderConfig = {\n provider,\n priority,\n weight,\n stallTimeout,\n };\n return fallbackProviderConfig;\n },\n );\n\n return new FallbackProvider(providers, network);\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n throw new Error(\n `Invalid fallback provider config for chain ${config.chainId}: ${err.message}`,\n );\n }\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@railgun-community/shared-models",
3
- "version": "5.1.12",
3
+ "version": "5.1.13",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "files": [