@clober/v2-sdk 1.0.0-beta.7 → 1.0.0-beta.9

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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Subgraph = exports.SUBGRAPH_URL = void 0;
3
+ exports.Subgraph = exports.FALLBACK_SUBGRAPH_URL = exports.SUBGRAPH_URL = void 0;
4
4
  const axios_1 = require("axios");
5
5
  const chain_1 = require("./chain");
6
6
  exports.SUBGRAPH_URL = {
@@ -12,24 +12,53 @@ exports.SUBGRAPH_URL = {
12
12
  [chain_1.CHAIN_IDS.MONAD_TESTNET]: 'https://api.goldsky.com/api/public/project_clsljw95chutg01w45cio46j0/subgraphs/v2-subgraph-monad-testnet/latest/gn',
13
13
  [chain_1.CHAIN_IDS.MONAD_MAINNET]: 'https://api.subgraph.ormilabs.com/api/public/27ad58eb-e12c-4b7b-8df8-0560d8e26b37/subgraphs/v2-subgraph-monad/latest/gn',
14
14
  };
15
+ exports.FALLBACK_SUBGRAPH_URL = {
16
+ [chain_1.CHAIN_IDS.MONAD_MAINNET]: 'https://api.goldsky.com/api/public/project_clsljw95chutg01w45cio46j0/subgraphs/v2-subgraph-monad/latest/gn',
17
+ };
15
18
  class Subgraph {
16
19
  static async get(chainId, operationName, query, variables) {
17
- if (!exports.SUBGRAPH_URL[chainId]) {
20
+ const timeout = 5000;
21
+ const primary = exports.SUBGRAPH_URL[chainId];
22
+ const fallback = exports.FALLBACK_SUBGRAPH_URL[chainId];
23
+ if (!primary) {
18
24
  throw new Error('Unsupported chain for subgraph');
19
25
  }
20
- const response = await axios_1.default.post(exports.SUBGRAPH_URL[chainId], {
21
- query,
22
- variables,
23
- operationName,
24
- }, {
25
- timeout: 5000,
26
- });
27
- if (response.status === 200) {
28
- return response.data;
26
+ const safePost = async (url) => {
27
+ try {
28
+ const res = await axios_1.default.post(url, { query, variables, operationName }, {
29
+ timeout,
30
+ validateStatus: () => true,
31
+ });
32
+ return { ok: true, status: res.status, data: res.data };
33
+ }
34
+ catch (err) {
35
+ return {
36
+ ok: false,
37
+ status: null,
38
+ error: err.message || 'Network error',
39
+ };
40
+ }
41
+ };
42
+ const primaryRes = await safePost(primary);
43
+ if (!primaryRes.ok) {
44
+ throw new Error(`Network error: ${primaryRes.error}`);
45
+ }
46
+ if (primaryRes.status === 200) {
47
+ return primaryRes.data;
29
48
  }
30
- else {
31
- throw new Error(response.data.errors || 'Failed to fetch data');
49
+ if (primaryRes.status === 429 && fallback) {
50
+ const fallbackRes = await safePost(fallback);
51
+ if (!fallbackRes.ok) {
52
+ throw new Error(`Fallback network error: ${fallbackRes.error}`);
53
+ }
54
+ if (fallbackRes.status === 200) {
55
+ return fallbackRes.data;
56
+ }
57
+ throw new Error(fallbackRes.data?.errors ||
58
+ `Fallback failed with status ${fallbackRes.status}`);
32
59
  }
60
+ throw new Error(primaryRes.data?.errors ||
61
+ `Failed with status ${primaryRes.status}`);
33
62
  }
34
63
  }
35
64
  exports.Subgraph = Subgraph;
@@ -1 +1 @@
1
- {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../../src/constants/chain-configs/subgraph.ts"],"names":[],"mappings":";;;AAAA,iCAAyB;AAEzB,mCAAmC;AAEtB,QAAA,YAAY,GAErB;IACF,CAAC,iBAAS,CAAC,cAAc,CAAC,EACxB,wFAAwF;IAC1F,CAAC,iBAAS,CAAC,gBAAgB,CAAC,EAC1B,wFAAwF;IAG1F,CAAC,iBAAS,CAAC,iBAAiB,CAAC,EAC3B,yFAAyF;IAC3F,CAAC,iBAAS,CAAC,YAAY,CAAC,EACtB,mHAAmH;IACrH,CAAC,iBAAS,CAAC,YAAY,CAAC,EACtB,qEAAqE;IACvE,CAAC,iBAAS,CAAC,aAAa,CAAC,EACvB,oHAAoH;IACtH,CAAC,iBAAS,CAAC,aAAa,CAAC,EACvB,yHAAyH;CAG5H,CAAA;AAED,MAAa,QAAQ;IACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CACrB,OAAkB,EAClB,aAAqB,EACrB,KAAa,EACb,SAAa;QAEb,IAAI,CAAC,oBAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,oBAAY,CAAC,OAAO,CAAC,EACrB;YACE,KAAK;YACL,SAAS;YACT,aAAa;SACd,EACD;YACE,OAAO,EAAE,IAAI;SACd,CACF,CAAA;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAE,QAAQ,CAAC,IAAY,CAAC,MAAM,IAAI,sBAAsB,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;CACF;AA5BD,4BA4BC"}
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../../src/constants/chain-configs/subgraph.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUserNativeVolume = exports.getTopUsersByNativeVolume = exports.getUserDailyVolumes = exports.getProtocolAnalytics = exports.getDailyClosePriceMap = exports.getLatestPriceMap = exports.getStableCurrencies = exports.getCurrencies = exports.getReferenceCurrency = exports.getNativeCurrency = exports.getContractAddresses = exports.getSubgraphBlock = exports.getSubgraphBlockNumber = exports.getSubgraphEndpoint = exports.getOpenOrders = exports.getOpenOrder = exports.getPriceNeighborhood = exports.getLatestTrades = exports.getLpWrappedERC20Address = exports.getLastAmounts = exports.getStrategyPrice = exports.getUserPoolPositions = exports.getPoolSnapshots = exports.getPoolSnapshot = exports.getPool = exports.parseMakeOrderIdsFromReceipt = exports.getQuoteToken = exports.getMarketSnapshot = exports.getMarketSnapshots = exports.getExpectedInput = exports.getExpectedOutput = exports.getLatestChartLog = exports.getChartLogs = exports.getMarket = void 0;
3
+ exports.getUserNativeVolume = exports.getTopUsersByNativeVolume = exports.getUserDailyVolumes = exports.getProtocolAnalytics = exports.getDailyClosePriceMap = exports.getLatestPriceMap = exports.getStableCurrencies = exports.getCurrencies = exports.getReferenceCurrency = exports.getNativeCurrency = exports.getContractAddresses = exports.getSubgraphBlock = exports.getSubgraphBlockNumber = exports.getFallbackSubgraphEndpoint = exports.getSubgraphEndpoint = exports.getOpenOrders = exports.getOpenOrder = exports.getPriceNeighborhood = exports.getLatestTrades = exports.getLpWrappedERC20Address = exports.getLastAmounts = exports.getStrategyPrice = exports.getUserPoolPositions = exports.getPoolSnapshots = exports.getPoolSnapshot = exports.getPool = exports.parseMakeOrderIdsFromReceipt = exports.getQuoteToken = exports.getMarketSnapshot = exports.getMarketSnapshots = exports.getExpectedInput = exports.getExpectedOutput = exports.getLatestChartLog = exports.getChartLogs = exports.getMarket = void 0;
4
4
  var market_1 = require("./market");
5
5
  Object.defineProperty(exports, "getMarket", { enumerable: true, get: function () { return market_1.getMarket; } });
6
6
  Object.defineProperty(exports, "getChartLogs", { enumerable: true, get: function () { return market_1.getChartLogs; } });
@@ -28,6 +28,7 @@ Object.defineProperty(exports, "getOpenOrder", { enumerable: true, get: function
28
28
  Object.defineProperty(exports, "getOpenOrders", { enumerable: true, get: function () { return open_order_1.getOpenOrders; } });
29
29
  var subgraph_1 = require("./subgraph");
30
30
  Object.defineProperty(exports, "getSubgraphEndpoint", { enumerable: true, get: function () { return subgraph_1.getSubgraphEndpoint; } });
31
+ Object.defineProperty(exports, "getFallbackSubgraphEndpoint", { enumerable: true, get: function () { return subgraph_1.getFallbackSubgraphEndpoint; } });
31
32
  Object.defineProperty(exports, "getSubgraphBlockNumber", { enumerable: true, get: function () { return subgraph_1.getSubgraphBlockNumber; } });
32
33
  Object.defineProperty(exports, "getSubgraphBlock", { enumerable: true, get: function () { return subgraph_1.getSubgraphBlock; } });
33
34
  var address_1 = require("./address");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,mCAUiB;AATf,mGAAA,SAAS,OAAA;AACT,sGAAA,YAAY,OAAA;AACZ,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AACb,sHAAA,4BAA4B,OAAA;AAE9B,+BAQe;AAPb,+FAAA,OAAO,OAAA;AACP,uGAAA,eAAe,OAAA;AACf,wGAAA,gBAAgB,OAAA;AAChB,4GAAA,oBAAoB,OAAA;AACpB,wGAAA,gBAAgB,OAAA;AAChB,sGAAA,cAAc,OAAA;AACd,gHAAA,wBAAwB,OAAA;AAE1B,iCAAyC;AAAhC,wGAAA,eAAe,OAAA;AAExB,+BAA6C;AAApC,4GAAA,oBAAoB,OAAA;AAC7B,2CAA0D;AAAjD,0GAAA,YAAY,OAAA;AAAE,2GAAA,aAAa,OAAA;AACpC,uCAImB;AAHjB,+GAAA,mBAAmB,OAAA;AACnB,kHAAA,sBAAsB,OAAA;AACtB,4GAAA,gBAAgB,OAAA;AAElB,qCAAgD;AAAvC,+GAAA,oBAAoB,OAAA;AAC7B,uCAOmB;AANjB,6GAAA,iBAAiB,OAAA;AACjB,gHAAA,oBAAoB,OAAA;AACpB,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,6GAAA,iBAAiB,OAAA;AACjB,iHAAA,qBAAqB,OAAA;AAEvB,yCAKoB;AAJlB,iHAAA,oBAAoB,OAAA;AACpB,gHAAA,mBAAmB,OAAA;AACnB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,mCAUiB;AATf,mGAAA,SAAS,OAAA;AACT,sGAAA,YAAY,OAAA;AACZ,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AACb,sHAAA,4BAA4B,OAAA;AAE9B,+BAQe;AAPb,+FAAA,OAAO,OAAA;AACP,uGAAA,eAAe,OAAA;AACf,wGAAA,gBAAgB,OAAA;AAChB,4GAAA,oBAAoB,OAAA;AACpB,wGAAA,gBAAgB,OAAA;AAChB,sGAAA,cAAc,OAAA;AACd,gHAAA,wBAAwB,OAAA;AAE1B,iCAAyC;AAAhC,wGAAA,eAAe,OAAA;AAExB,+BAA6C;AAApC,4GAAA,oBAAoB,OAAA;AAC7B,2CAA0D;AAAjD,0GAAA,YAAY,OAAA;AAAE,2GAAA,aAAa,OAAA;AACpC,uCAKmB;AAJjB,+GAAA,mBAAmB,OAAA;AACnB,uHAAA,2BAA2B,OAAA;AAC3B,kHAAA,sBAAsB,OAAA;AACtB,4GAAA,gBAAgB,OAAA;AAElB,qCAAgD;AAAvC,+GAAA,oBAAoB,OAAA;AAC7B,uCAOmB;AANjB,6GAAA,iBAAiB,OAAA;AACjB,gHAAA,oBAAoB,OAAA;AACpB,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,6GAAA,iBAAiB,OAAA;AACjB,iHAAA,qBAAqB,OAAA;AAEvB,yCAKoB;AAJlB,iHAAA,oBAAoB,OAAA;AACpB,gHAAA,mBAAmB,OAAA;AACnB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSubgraphBlock = exports.getSubgraphBlockNumber = exports.getSubgraphEndpoint = void 0;
3
+ exports.getSubgraphBlock = exports.getSubgraphBlockNumber = exports.getFallbackSubgraphEndpoint = exports.getSubgraphEndpoint = void 0;
4
4
  const subgraph_1 = require("../constants/chain-configs/subgraph");
5
5
  const getSubgraphEndpoint = ({ chainId }) => {
6
6
  return subgraph_1.SUBGRAPH_URL[chainId];
7
7
  };
8
8
  exports.getSubgraphEndpoint = getSubgraphEndpoint;
9
+ const getFallbackSubgraphEndpoint = ({ chainId, }) => {
10
+ return subgraph_1.FALLBACK_SUBGRAPH_URL[chainId];
11
+ };
12
+ exports.getFallbackSubgraphEndpoint = getFallbackSubgraphEndpoint;
9
13
  const getSubgraphBlockNumber = async ({ chainId, }) => {
10
14
  const { data: { _meta: { block: { number: blockNumber }, }, }, } = await subgraph_1.Subgraph.get(chainId, 'getLatestBlockNumber', 'query getLatestBlockNumber { _meta { block { number } } }', {});
11
15
  return blockNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/views/subgraph.ts"],"names":[],"mappings":";;;AACA,kEAA4E;AAcrE,MAAM,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAA0B,EAAE,EAAE;IACzE,OAAO,uBAAY,CAAC,OAAO,CAAC,CAAA;AAC9B,CAAC,CAAA;AAFY,QAAA,mBAAmB,uBAE/B;AAcM,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,OAAO,GAGR,EAAE,EAAE;IACH,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAC/B,GACF,GACF,GAAG,MAAM,mBAAQ,CAAC,GAAG,CAOpB,OAAO,EACP,sBAAsB,EACtB,2DAA2D,EAC3D,EAAE,CACH,CAAA;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAxBY,QAAA,sBAAsB,0BAwBlC;AAcM,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAE,OAAO,EAA0B,EAAE,EAAE;IAC5E,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAC5D,GACF,GACF,GAAG,MAAM,mBAAQ,CAAC,GAAG,CAYpB,OAAO,EACP,gBAAgB,EAChB,+EAA+E,EAC/E,EAAE,CACH,CAAA;IACD,OAAO;QACL,WAAW;QACX,IAAI;QACJ,SAAS;QACT,UAAU;KACX,CAAA;AACH,CAAC,CAAA;AA9BY,QAAA,gBAAgB,oBA8B5B"}
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/views/subgraph.ts"],"names":[],"mappings":";;;AACA,kEAI4C;AAcrC,MAAM,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAA0B,EAAE,EAAE;IACzE,OAAO,uBAAY,CAAC,OAAO,CAAC,CAAA;AAC9B,CAAC,CAAA;AAFY,QAAA,mBAAmB,uBAE/B;AAcM,MAAM,2BAA2B,GAAG,CAAC,EAC1C,OAAO,GAGR,EAAE,EAAE;IACH,OAAO,gCAAqB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC,CAAA;AANY,QAAA,2BAA2B,+BAMvC;AAcM,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,OAAO,GAGR,EAAE,EAAE;IACH,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAC/B,GACF,GACF,GAAG,MAAM,mBAAQ,CAAC,GAAG,CAOpB,OAAO,EACP,sBAAsB,EACtB,2DAA2D,EAC3D,EAAE,CACH,CAAA;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAxBY,QAAA,sBAAsB,0BAwBlC;AAcM,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAE,OAAO,EAA0B,EAAE,EAAE;IAC5E,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAC5D,GACF,GACF,GAAG,MAAM,mBAAQ,CAAC,GAAG,CAYpB,OAAO,EACP,gBAAgB,EAChB,+EAA+E,EAC/E,EAAE,CACH,CAAA;IACD,OAAO;QACL,WAAW;QACX,IAAI;QACJ,SAAS;QACT,UAAU;KACX,CAAA;AACH,CAAC,CAAA;AA9BY,QAAA,gBAAgB,oBA8B5B"}
@@ -13,24 +13,53 @@ export const SUBGRAPH_URL = {
13
13
  // [CHAIN_IDS.SONIC_MAINNET]:
14
14
  // 'https://subgraph.satsuma-prod.com/f6a8c4889b7b/clober/v2-core-subgraph-sonic-mainnet/api',
15
15
  };
16
+ export const FALLBACK_SUBGRAPH_URL = {
17
+ [CHAIN_IDS.MONAD_MAINNET]: 'https://api.goldsky.com/api/public/project_clsljw95chutg01w45cio46j0/subgraphs/v2-subgraph-monad/latest/gn',
18
+ };
16
19
  export class Subgraph {
17
20
  static async get(chainId, operationName, query, variables) {
18
- if (!SUBGRAPH_URL[chainId]) {
21
+ const timeout = 5000;
22
+ const primary = SUBGRAPH_URL[chainId];
23
+ const fallback = FALLBACK_SUBGRAPH_URL[chainId];
24
+ if (!primary) {
19
25
  throw new Error('Unsupported chain for subgraph');
20
26
  }
21
- const response = await axios.post(SUBGRAPH_URL[chainId], {
22
- query,
23
- variables,
24
- operationName,
25
- }, {
26
- timeout: 5000, // TODO: pass with option
27
- });
28
- if (response.status === 200) {
29
- return response.data;
27
+ const safePost = async (url) => {
28
+ try {
29
+ const res = await axios.post(url, { query, variables, operationName }, {
30
+ timeout,
31
+ validateStatus: () => true,
32
+ });
33
+ return { ok: true, status: res.status, data: res.data };
34
+ }
35
+ catch (err) {
36
+ return {
37
+ ok: false,
38
+ status: null,
39
+ error: err.message || 'Network error',
40
+ };
41
+ }
42
+ };
43
+ const primaryRes = await safePost(primary);
44
+ if (!primaryRes.ok) {
45
+ throw new Error(`Network error: ${primaryRes.error}`);
46
+ }
47
+ if (primaryRes.status === 200) {
48
+ return primaryRes.data;
30
49
  }
31
- else {
32
- throw new Error(response.data.errors || 'Failed to fetch data');
50
+ if (primaryRes.status === 429 && fallback) {
51
+ const fallbackRes = await safePost(fallback);
52
+ if (!fallbackRes.ok) {
53
+ throw new Error(`Fallback network error: ${fallbackRes.error}`);
54
+ }
55
+ if (fallbackRes.status === 200) {
56
+ return fallbackRes.data;
57
+ }
58
+ throw new Error(fallbackRes.data?.errors ||
59
+ `Fallback failed with status ${fallbackRes.status}`);
33
60
  }
61
+ throw new Error(primaryRes.data?.errors ||
62
+ `Failed with status ${primaryRes.status}`);
34
63
  }
35
64
  }
36
65
  //# sourceMappingURL=subgraph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../../src/constants/chain-configs/subgraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,MAAM,CAAC,MAAM,YAAY,GAErB;IACF,CAAC,SAAS,CAAC,cAAc,CAAC,EACxB,wFAAwF;IAC1F,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAC1B,wFAAwF;IAC1F,oBAAoB;IACpB,uFAAuF;IACvF,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAC3B,yFAAyF;IAC3F,CAAC,SAAS,CAAC,YAAY,CAAC,EACtB,mHAAmH;IACrH,CAAC,SAAS,CAAC,YAAY,CAAC,EACtB,qEAAqE;IACvE,CAAC,SAAS,CAAC,aAAa,CAAC,EACvB,oHAAoH;IACtH,CAAC,SAAS,CAAC,aAAa,CAAC,EACvB,yHAAyH;IAC3H,6BAA6B;IAC7B,gGAAgG;CACjG,CAAA;AAED,MAAM,OAAO,QAAQ;IACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CACrB,OAAkB,EAClB,aAAqB,EACrB,KAAa,EACb,SAAa;QAEb,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,YAAY,CAAC,OAAO,CAAC,EACrB;YACE,KAAK;YACL,SAAS;YACT,aAAa;SACd,EACD;YACE,OAAO,EAAE,IAAI,EAAE,yBAAyB;SACzC,CACF,CAAA;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAE,QAAQ,CAAC,IAAY,CAAC,MAAM,IAAI,sBAAsB,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../../src/constants/chain-configs/subgraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,MAAM,CAAC,MAAM,YAAY,GAErB;IACF,CAAC,SAAS,CAAC,cAAc,CAAC,EACxB,wFAAwF;IAC1F,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAC1B,wFAAwF;IAC1F,oBAAoB;IACpB,uFAAuF;IACvF,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAC3B,yFAAyF;IAC3F,CAAC,SAAS,CAAC,YAAY,CAAC,EACtB,mHAAmH;IACrH,CAAC,SAAS,CAAC,YAAY,CAAC,EACtB,qEAAqE;IACvE,CAAC,SAAS,CAAC,aAAa,CAAC,EACvB,oHAAoH;IACtH,CAAC,SAAS,CAAC,aAAa,CAAC,EACvB,yHAAyH;IAC3H,6BAA6B;IAC7B,gGAAgG;CACjG,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAE9B;IACF,CAAC,SAAS,CAAC,aAAa,CAAC,EACvB,4GAA4G;CAC/G,CAAA;AAED,MAAM,OAAO,QAAQ;IACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CACrB,OAAkB,EAClB,aAAqB,EACrB,KAAa,EACb,SAAa;QAEb,MAAM,OAAO,GAAG,IAAI,CAAA;QACpB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;QAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAC1B,GAAG,EACH,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,EACnC;oBACE,OAAO;oBACP,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;iBAC3B,CACF,CAAA;gBACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;YACzD,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,eAAe;iBACtC,CAAA;YACH,CAAC;QACH,CAAC,CAAA;QAED,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;QAE1C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC,IAAI,CAAA;QACxB,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAE5C,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;YACjE,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC/B,OAAO,WAAW,CAAC,IAAI,CAAA;YACzB,CAAC;YAED,MAAM,IAAI,KAAK,CACZ,WAAW,CAAC,IAAY,EAAE,MAAM;gBAC/B,+BAA+B,WAAW,CAAC,MAAM,EAAE,CACtD,CAAA;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CACZ,UAAU,CAAC,IAAY,EAAE,MAAM;YAC9B,sBAAsB,UAAU,CAAC,MAAM,EAAE,CAC5C,CAAA;IACH,CAAC;CACF"}
@@ -3,7 +3,7 @@ export { getPool, getPoolSnapshot, getPoolSnapshots, getUserPoolPositions, getSt
3
3
  export { getLatestTrades } from './trade';
4
4
  export { getPriceNeighborhood } from './tick';
5
5
  export { getOpenOrder, getOpenOrders } from './open-order';
6
- export { getSubgraphEndpoint, getSubgraphBlockNumber, getSubgraphBlock, } from './subgraph';
6
+ export { getSubgraphEndpoint, getFallbackSubgraphEndpoint, getSubgraphBlockNumber, getSubgraphBlock, } from './subgraph';
7
7
  export { getContractAddresses } from './address';
8
8
  export { getNativeCurrency, getReferenceCurrency, getCurrencies, getStableCurrencies, getLatestPriceMap, getDailyClosePriceMap, } from './currency';
9
9
  export { getProtocolAnalytics, getUserDailyVolumes, getTopUsersByNativeVolume, getUserNativeVolume, } from './analytics';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,4BAA4B,GAC7B,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,4BAA4B,GAC7B,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Subgraph, SUBGRAPH_URL } from '../constants/chain-configs/subgraph';
1
+ import { FALLBACK_SUBGRAPH_URL, Subgraph, SUBGRAPH_URL, } from '../constants/chain-configs/subgraph';
2
2
  /**
3
3
  * Get subgraph endpoint by chain id
4
4
  * @param chainId - chain id from {@link CHAIN_IDS}
@@ -14,6 +14,21 @@ import { Subgraph, SUBGRAPH_URL } from '../constants/chain-configs/subgraph';
14
14
  export const getSubgraphEndpoint = ({ chainId }) => {
15
15
  return SUBGRAPH_URL[chainId];
16
16
  };
17
+ /**
18
+ * Get fallback subgraph endpoint by chain id
19
+ * @param chainId - chain id from {@link CHAIN_IDS}
20
+ * @returns Subgraph endpoint
21
+ *
22
+ * @example
23
+ * import { getFallbackSubgraphEndpoint } from '@clober/v2-sdk'
24
+ *
25
+ * const endpoint = await getFallbackSubgraphEndpoint({
26
+ * chainId: 421614,
27
+ * })
28
+ */
29
+ export const getFallbackSubgraphEndpoint = ({ chainId, }) => {
30
+ return FALLBACK_SUBGRAPH_URL[chainId];
31
+ };
17
32
  /**
18
33
  * Get subgraph block number by chain id
19
34
  * @param chainId - chain id from {@link CHAIN_IDS}
@@ -1 +1 @@
1
- {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/views/subgraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAE5E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAA0B,EAAE,EAAE;IACzE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,OAAO,GAGR,EAAE,EAAE;IACH,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAC/B,GACF,GACF,GAAG,MAAM,QAAQ,CAAC,GAAG,CAOpB,OAAO,EACP,sBAAsB,EACtB,2DAA2D,EAC3D,EAAE,CACH,CAAA;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAE,OAAO,EAA0B,EAAE,EAAE;IAC5E,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAC5D,GACF,GACF,GAAG,MAAM,QAAQ,CAAC,GAAG,CAYpB,OAAO,EACP,gBAAgB,EAChB,+EAA+E,EAC/E,EAAE,CACH,CAAA;IACD,OAAO;QACL,WAAW;QACX,IAAI;QACJ,SAAS;QACT,UAAU;KACX,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/views/subgraph.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,QAAQ,EACR,YAAY,GACb,MAAM,qCAAqC,CAAA;AAE5C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAA0B,EAAE,EAAE;IACzE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAC1C,OAAO,GAGR,EAAE,EAAE;IACH,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,OAAO,GAGR,EAAE,EAAE;IACH,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAC/B,GACF,GACF,GAAG,MAAM,QAAQ,CAAC,GAAG,CAOpB,OAAO,EACP,sBAAsB,EACtB,2DAA2D,EAC3D,EAAE,CACH,CAAA;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAE,OAAO,EAA0B,EAAE,EAAE;IAC5E,MAAM,EACJ,IAAI,EAAE,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAC5D,GACF,GACF,GAAG,MAAM,QAAQ,CAAC,GAAG,CAYpB,OAAO,EACP,gBAAgB,EAChB,+EAA+E,EAC/E,EAAE,CACH,CAAA;IACD,OAAO;QACL,WAAW;QACX,IAAI;QACJ,SAAS;QACT,UAAU;KACX,CAAA;AACH,CAAC,CAAA"}