@across-protocol/sdk 3.1.18 → 3.1.20

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.
Files changed (78) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.js +2 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/providers/cachedProvider.d.ts +17 -0
  5. package/dist/cjs/providers/cachedProvider.js +149 -0
  6. package/dist/cjs/providers/cachedProvider.js.map +1 -0
  7. package/dist/cjs/providers/constants.d.ts +4 -0
  8. package/dist/cjs/providers/constants.js +8 -0
  9. package/dist/cjs/providers/constants.js.map +1 -0
  10. package/dist/cjs/providers/index.d.ts +5 -0
  11. package/dist/cjs/providers/index.js +9 -0
  12. package/dist/cjs/providers/index.js.map +1 -0
  13. package/dist/cjs/providers/rateLimitedProvider.d.ts +10 -0
  14. package/dist/cjs/providers/rateLimitedProvider.js +88 -0
  15. package/dist/cjs/providers/rateLimitedProvider.js.map +1 -0
  16. package/dist/cjs/providers/retryProvider.d.ts +16 -0
  17. package/dist/cjs/providers/retryProvider.js +224 -0
  18. package/dist/cjs/providers/retryProvider.js.map +1 -0
  19. package/dist/cjs/providers/utils.d.ts +21 -0
  20. package/dist/cjs/providers/utils.js +63 -0
  21. package/dist/cjs/providers/utils.js.map +1 -0
  22. package/dist/cjs/utils/NetworkUtils.d.ts +1 -0
  23. package/dist/cjs/utils/NetworkUtils.js +10 -1
  24. package/dist/cjs/utils/NetworkUtils.js.map +1 -1
  25. package/dist/cjs/utils/ObjectUtils.js.map +1 -1
  26. package/dist/esm/index.d.ts +1 -0
  27. package/dist/esm/index.js +2 -0
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/providers/cachedProvider.d.ts +17 -0
  30. package/dist/esm/providers/cachedProvider.js +167 -0
  31. package/dist/esm/providers/cachedProvider.js.map +1 -0
  32. package/dist/esm/providers/constants.d.ts +7 -0
  33. package/dist/esm/providers/constants.js +10 -0
  34. package/dist/esm/providers/constants.js.map +1 -0
  35. package/dist/esm/providers/index.d.ts +5 -0
  36. package/dist/esm/providers/index.js +6 -0
  37. package/dist/esm/providers/index.js.map +1 -0
  38. package/dist/esm/providers/rateLimitedProvider.d.ts +10 -0
  39. package/dist/esm/providers/rateLimitedProvider.js +101 -0
  40. package/dist/esm/providers/rateLimitedProvider.js.map +1 -0
  41. package/dist/esm/providers/retryProvider.d.ts +16 -0
  42. package/dist/esm/providers/retryProvider.js +249 -0
  43. package/dist/esm/providers/retryProvider.js.map +1 -0
  44. package/dist/esm/providers/utils.d.ts +39 -0
  45. package/dist/esm/providers/utils.js +89 -0
  46. package/dist/esm/providers/utils.js.map +1 -0
  47. package/dist/esm/utils/NetworkUtils.d.ts +6 -0
  48. package/dist/esm/utils/NetworkUtils.js +13 -0
  49. package/dist/esm/utils/NetworkUtils.js.map +1 -1
  50. package/dist/esm/utils/ObjectUtils.js +1 -1
  51. package/dist/esm/utils/ObjectUtils.js.map +1 -1
  52. package/dist/types/index.d.ts +1 -0
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/dist/types/providers/cachedProvider.d.ts +18 -0
  55. package/dist/types/providers/cachedProvider.d.ts.map +1 -0
  56. package/dist/types/providers/constants.d.ts +8 -0
  57. package/dist/types/providers/constants.d.ts.map +1 -0
  58. package/dist/types/providers/index.d.ts +6 -0
  59. package/dist/types/providers/index.d.ts.map +1 -0
  60. package/dist/types/providers/rateLimitedProvider.d.ts +11 -0
  61. package/dist/types/providers/rateLimitedProvider.d.ts.map +1 -0
  62. package/dist/types/providers/retryProvider.d.ts +17 -0
  63. package/dist/types/providers/retryProvider.d.ts.map +1 -0
  64. package/dist/types/providers/utils.d.ts +40 -0
  65. package/dist/types/providers/utils.d.ts.map +1 -0
  66. package/dist/types/utils/NetworkUtils.d.ts +6 -0
  67. package/dist/types/utils/NetworkUtils.d.ts.map +1 -1
  68. package/dist/types/utils/ObjectUtils.d.ts.map +1 -1
  69. package/package.json +6 -2
  70. package/src/index.ts +1 -0
  71. package/src/providers/cachedProvider.ts +155 -0
  72. package/src/providers/constants.ts +11 -0
  73. package/src/providers/index.ts +5 -0
  74. package/src/providers/rateLimitedProvider.ts +94 -0
  75. package/src/providers/retryProvider.ts +262 -0
  76. package/src/providers/utils.ts +119 -0
  77. package/src/utils/NetworkUtils.ts +13 -0
  78. package/src/utils/ObjectUtils.ts +1 -0
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheType = exports.compareRpcResults = exports.createSendErrorWithMessage = exports.formatProviderError = exports.compareArrayResultsWithIgnoredKeys = exports.compareResultsAndFilterIgnoredKeys = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var utils_1 = require("../utils");
6
+ var lodash_1 = require("lodash");
7
+ function deleteIgnoredKeys(ignoredKeys, obj) {
8
+ if (!(0, utils_1.isDefined)(obj)) {
9
+ return;
10
+ }
11
+ var newObj = tslib_1.__assign({}, obj);
12
+ for (var _i = 0, ignoredKeys_1 = ignoredKeys; _i < ignoredKeys_1.length; _i++) {
13
+ var key = ignoredKeys_1[_i];
14
+ delete newObj[key];
15
+ }
16
+ return newObj;
17
+ }
18
+ function compareResultsAndFilterIgnoredKeys(ignoredKeys, _objA, _objB) {
19
+ var filteredA = deleteIgnoredKeys(ignoredKeys, _objA);
20
+ var filteredB = deleteIgnoredKeys(ignoredKeys, _objB);
21
+ return (0, lodash_1.isEqual)(filteredA, filteredB);
22
+ }
23
+ exports.compareResultsAndFilterIgnoredKeys = compareResultsAndFilterIgnoredKeys;
24
+ function compareArrayResultsWithIgnoredKeys(ignoredKeys, objA, objB) {
25
+ var filteredA = objA === null || objA === void 0 ? void 0 : objA.map(function (obj) { return deleteIgnoredKeys(ignoredKeys, obj); });
26
+ var filteredB = objB === null || objB === void 0 ? void 0 : objB.map(function (obj) { return deleteIgnoredKeys(ignoredKeys, obj); });
27
+ return (0, utils_1.isDefined)(filteredA) && (0, utils_1.isDefined)(filteredB) && (0, lodash_1.isEqual)(filteredA, filteredB);
28
+ }
29
+ exports.compareArrayResultsWithIgnoredKeys = compareArrayResultsWithIgnoredKeys;
30
+ function formatProviderError(provider, rawErrorText) {
31
+ return "Provider ".concat(provider.connection.url, " failed with error: ").concat(rawErrorText);
32
+ }
33
+ exports.formatProviderError = formatProviderError;
34
+ function createSendErrorWithMessage(message, sendError) {
35
+ var error = new Error(message);
36
+ return tslib_1.__assign(tslib_1.__assign({}, sendError), error);
37
+ }
38
+ exports.createSendErrorWithMessage = createSendErrorWithMessage;
39
+ function compareRpcResults(method, rpcResultA, rpcResultB) {
40
+ if (method === "eth_getBlockByNumber") {
41
+ return compareResultsAndFilterIgnoredKeys([
42
+ "miner",
43
+ "l1BatchNumber",
44
+ "l1BatchTimestamp",
45
+ "size",
46
+ "totalDifficulty",
47
+ ], rpcResultA, rpcResultB);
48
+ }
49
+ else if (method === "eth_getLogs") {
50
+ return compareArrayResultsWithIgnoredKeys(["blockTimestamp", "transactionLogIndex", "l1BatchNumber", "logType"], rpcResultA, rpcResultB);
51
+ }
52
+ else {
53
+ return (0, lodash_1.isEqual)(rpcResultA, rpcResultB);
54
+ }
55
+ }
56
+ exports.compareRpcResults = compareRpcResults;
57
+ var CacheType;
58
+ (function (CacheType) {
59
+ CacheType[CacheType["NONE"] = 0] = "NONE";
60
+ CacheType[CacheType["WITH_TTL"] = 1] = "WITH_TTL";
61
+ CacheType[CacheType["NO_TTL"] = 2] = "NO_TTL";
62
+ })(CacheType || (exports.CacheType = CacheType = {}));
63
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":";;;;AAGA,kCAAqC;AACrC,iCAAiC;AAQjC,SAAS,iBAAiB,CAAC,WAAqB,EAAE,GAA4B;IAC5E,IAAI,CAAC,IAAA,iBAAS,EAAC,GAAG,CAAC,EAAE;QACnB,OAAO;KACR;IACD,IAAM,MAAM,wBAAQ,GAAG,CAAE,CAAC;IAC1B,KAAkB,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,EAAE;QAA1B,IAAM,GAAG,oBAAA;QACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;KACpB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,kCAAkC,CAChD,WAAqB,EACrB,KAA8B,EAC9B,KAA8B;IAG9B,IAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACxD,IAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAGxD,OAAO,IAAA,gBAAO,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAXD,gFAWC;AAED,SAAgB,kCAAkC,CAAC,WAAqB,EAAE,IAAe,EAAE,IAAe;IAExG,IAAM,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,iBAAiB,CAAC,WAAW,EAAE,GAA8B,CAAC,EAA9D,CAA8D,CAAC,CAAC;IACrG,IAAM,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,iBAAiB,CAAC,WAAW,EAAE,GAA8B,CAAC,EAA9D,CAA8D,CAAC,CAAC;IAGrG,OAAO,IAAA,iBAAS,EAAC,SAAS,CAAC,IAAI,IAAA,iBAAS,EAAC,SAAS,CAAC,IAAI,IAAA,gBAAO,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACvF,CAAC;AAPD,gFAOC;AAqBD,SAAgB,mBAAmB,CAAC,QAAyC,EAAE,YAAoB;IACjG,OAAO,mBAAY,QAAQ,CAAC,UAAU,CAAC,GAAG,iCAAuB,YAAY,CAAE,CAAC;AAClF,CAAC;AAFD,kDAEC;AAED,SAAgB,0BAA0B,CAAC,OAAe,EAAE,SAAkC;IAC5F,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,6CAAY,SAAS,GAAK,KAAK,EAAG;AACpC,CAAC;AAHD,gEAGC;AAWD,SAAgB,iBAAiB,CAAC,MAAc,EAAE,UAAmB,EAAE,UAAmB;IACxF,IAAI,MAAM,KAAK,sBAAsB,EAAE;QAGrC,OAAO,kCAAkC,CACvC;YACE,OAAO;YACP,eAAe;YACf,kBAAkB;YAClB,MAAM;YACN,iBAAiB;SAClB,EACD,UAAqC,EACrC,UAAqC,CACtC,CAAC;KACH;SAAM,IAAI,MAAM,KAAK,aAAa,EAAE;QAOnC,OAAO,kCAAkC,CACvC,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,SAAS,CAAC,EACrE,UAAuB,EACvB,UAAuB,CACxB,CAAC;KACH;SAAM;QACL,OAAO,IAAA,gBAAO,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KACxC;AACH,CAAC;AA9BD,8CA8BC;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,yCAAI,CAAA;IACJ,iDAAQ,CAAA;IACR,6CAAM,CAAA;AACR,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB"}
@@ -9,3 +9,4 @@ export declare function chainIsLinea(chainId: number): boolean;
9
9
  export declare function chainIsL1(chainId: number): boolean;
10
10
  export declare function chainIsCCTPEnabled(chainId: number): boolean;
11
11
  export declare function chainRequiresL1ToL2Finalization(chainId: number): boolean;
12
+ export declare function getOriginFromURL(url: string): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chainRequiresL1ToL2Finalization = exports.chainIsCCTPEnabled = exports.chainIsL1 = exports.chainIsLinea = exports.chainIsArbitrum = exports.chainIsOPStack = exports.chainIsMatic = exports.chainIsTestnet = exports.chainIsProd = exports.getNativeTokenSymbol = exports.getNetworkName = void 0;
3
+ exports.getOriginFromURL = exports.chainRequiresL1ToL2Finalization = exports.chainIsCCTPEnabled = exports.chainIsL1 = exports.chainIsLinea = exports.chainIsArbitrum = exports.chainIsOPStack = exports.chainIsMatic = exports.chainIsTestnet = exports.chainIsProd = exports.getNativeTokenSymbol = exports.getNetworkName = void 0;
4
4
  var constants_1 = require("../constants");
5
5
  var hreNetworks = {
6
6
  666: "Hardhat1",
@@ -63,4 +63,13 @@ function chainRequiresL1ToL2Finalization(chainId) {
63
63
  return chainIsCCTPEnabled(chainId) || chainIsLinea(chainId);
64
64
  }
65
65
  exports.chainRequiresL1ToL2Finalization = chainRequiresL1ToL2Finalization;
66
+ function getOriginFromURL(url) {
67
+ try {
68
+ return new URL(url).origin;
69
+ }
70
+ catch (e) {
71
+ return "UNKNOWN";
72
+ }
73
+ }
74
+ exports.getOriginFromURL = getOriginFromURL;
66
75
  //# sourceMappingURL=NetworkUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkUtils.js","sourceRoot":"","sources":["../../../src/utils/NetworkUtils.ts"],"names":[],"mappings":";;;AAAA,0CAA6G;AAE7G,IAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;CACjB,CAAC;AAOF,SAAgB,cAAc,CAAC,SAA0B;;IACvD,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO,MAAA,MAAA,MAAA,2BAAe,CAAC,SAAS,CAAC,0CAAE,IAAI,mCAAI,WAAW,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC;AACjF,CAAC;AAHD,wCAGC;AAOD,SAAgB,oBAAoB,CAAC,OAAwB;;IAC3D,OAAO,MAAA,MAAA,2BAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,0CAAE,WAAW,mCAAI,KAAK,CAAC;AAChE,CAAC;AAFD,oDAEC;AAOD,SAAgB,WAAW,CAAC,OAAe;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,6BAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAFD,kCAEC;AAOD,SAAgB,cAAc,CAAC,OAAe;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,6BAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAFD,wCAEC;AAOD,SAAgB,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,qBAAS,CAAC,OAAO,EAAE,qBAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAFD,oCAEC;AAOD,SAAgB,cAAc,CAAC,OAAe;;IAC5C,OAAO,MAAA,CAAA,MAAA,2BAAe,CAAC,OAAO,CAAC,0CAAE,MAAM,MAAK,uBAAW,CAAC,QAAQ,mCAAI,KAAK,CAAC;AAC5E,CAAC;AAFD,wCAEC;AAOD,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,CAAC,qBAAS,CAAC,QAAQ,EAAE,qBAAS,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAFD,0CAEC;AAOD,SAAgB,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,qBAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAFD,oCAEC;AAOD,SAAgB,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,qBAAS,CAAC,OAAO,EAAE,qBAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AAFD,8BAEC;AAOD,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO;QAEL,qBAAS,CAAC,IAAI;QACd,qBAAS,CAAC,QAAQ;QAClB,qBAAS,CAAC,QAAQ;QAClB,qBAAS,CAAC,OAAO;QAEjB,qBAAS,CAAC,YAAY;QACtB,qBAAS,CAAC,gBAAgB;QAC1B,qBAAS,CAAC,gBAAgB;QAC1B,qBAAS,CAAC,YAAY;KACvB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAbD,gDAaC;AAOD,SAAgB,+BAA+B,CAAC,OAAe;IAC7D,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC;AAFD,0EAEC"}
1
+ {"version":3,"file":"NetworkUtils.js","sourceRoot":"","sources":["../../../src/utils/NetworkUtils.ts"],"names":[],"mappings":";;;AAAA,0CAA6G;AAE7G,IAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;CACjB,CAAC;AAOF,SAAgB,cAAc,CAAC,SAA0B;;IACvD,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO,MAAA,MAAA,MAAA,2BAAe,CAAC,SAAS,CAAC,0CAAE,IAAI,mCAAI,WAAW,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC;AACjF,CAAC;AAHD,wCAGC;AAOD,SAAgB,oBAAoB,CAAC,OAAwB;;IAC3D,OAAO,MAAA,MAAA,2BAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,0CAAE,WAAW,mCAAI,KAAK,CAAC;AAChE,CAAC;AAFD,oDAEC;AAOD,SAAgB,WAAW,CAAC,OAAe;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,6BAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAFD,kCAEC;AAOD,SAAgB,cAAc,CAAC,OAAe;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,6BAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAFD,wCAEC;AAOD,SAAgB,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,qBAAS,CAAC,OAAO,EAAE,qBAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAFD,oCAEC;AAOD,SAAgB,cAAc,CAAC,OAAe;;IAC5C,OAAO,MAAA,CAAA,MAAA,2BAAe,CAAC,OAAO,CAAC,0CAAE,MAAM,MAAK,uBAAW,CAAC,QAAQ,mCAAI,KAAK,CAAC;AAC5E,CAAC;AAFD,wCAEC;AAOD,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,CAAC,qBAAS,CAAC,QAAQ,EAAE,qBAAS,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAFD,0CAEC;AAOD,SAAgB,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,qBAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAFD,oCAEC;AAOD,SAAgB,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,qBAAS,CAAC,OAAO,EAAE,qBAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AAFD,8BAEC;AAOD,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO;QAEL,qBAAS,CAAC,IAAI;QACd,qBAAS,CAAC,QAAQ;QAClB,qBAAS,CAAC,QAAQ;QAClB,qBAAS,CAAC,OAAO;QAEjB,qBAAS,CAAC,YAAY;QACtB,qBAAS,CAAC,gBAAgB;QAC1B,qBAAS,CAAC,gBAAgB;QAC1B,qBAAS,CAAC,YAAY;KACvB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAbD,gDAaC;AAOD,SAAgB,+BAA+B,CAAC,OAAe;IAC7D,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC;AAFD,0EAEC;AAOD,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,IAAI;QACF,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAND,4CAMC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../../src/utils/ObjectUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../../src/utils/ObjectUtils.ts"],"names":[],"mappings":"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"}
@@ -13,3 +13,4 @@ export * as typeguards from "./typeguards";
13
13
  export * as clients from "./clients";
14
14
  export * as typechain from "./typechain";
15
15
  export * as caching from "./caching";
16
+ export * as providers from "./providers";
package/dist/esm/index.js CHANGED
@@ -28,4 +28,6 @@ import * as typechain_1 from "./typechain";
28
28
  export { typechain_1 as typechain };
29
29
  import * as caching_1 from "./caching";
30
30
  export { caching_1 as caching };
31
+ import * as providers_1 from "./providers";
32
+ export { providers_1 as providers };
31
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"mCAAiC,mBAAmB;8BAAxC,eAAe;wBACL,QAAQ;mBAAlB,IAAI;sCACoB,sBAAsB;iCAA9C,kBAAkB;yBACP,SAAS;oBAApB,KAAK;6BACU,aAAa;wBAA5B,SAAS;6BACM,aAAa;wBAA5B,SAAS;kCACW,kBAAkB;6BAAtC,cAAc;+BACG,eAAe;0BAAhC,WAAW;qCACY,qBAAqB;gCAA5C,iBAAiB;6BACF,aAAa;wBAA5B,SAAS;8BACO,cAAc;yBAA9B,UAAU;8BACM,cAAc;yBAA9B,UAAU;2BACG,WAAW;sBAAxB,OAAO;6BACQ,aAAa;wBAA5B,SAAS;2BACI,WAAW;sBAAxB,OAAO"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"mCAAiC,mBAAmB;8BAAxC,eAAe;wBACL,QAAQ;mBAAlB,IAAI;sCACoB,sBAAsB;iCAA9C,kBAAkB;yBACP,SAAS;oBAApB,KAAK;6BACU,aAAa;wBAA5B,SAAS;6BACM,aAAa;wBAA5B,SAAS;kCACW,kBAAkB;6BAAtC,cAAc;+BACG,eAAe;0BAAhC,WAAW;qCACY,qBAAqB;gCAA5C,iBAAiB;6BACF,aAAa;wBAA5B,SAAS;8BACO,cAAc;yBAA9B,UAAU;8BACM,cAAc;yBAA9B,UAAU;2BACG,WAAW;sBAAxB,OAAO;6BACQ,aAAa;wBAA5B,SAAS;2BACI,WAAW;sBAAxB,OAAO;6BACQ,aAAa;wBAA5B,SAAS"}
@@ -0,0 +1,17 @@
1
+ import { CachingMechanismInterface } from "../interfaces";
2
+ import { RateLimitedProvider } from "./rateLimitedProvider";
3
+ export declare class CacheProvider extends RateLimitedProvider {
4
+ readonly redisClient?: CachingMechanismInterface | undefined;
5
+ readonly standardTtlBlockDistance: number;
6
+ readonly noTtlBlockDistance: number;
7
+ readonly providerCacheTtl: number;
8
+ readonly getBlockByNumberPrefix: string;
9
+ readonly getLogsCachePrefix: string;
10
+ readonly callCachePrefix: string;
11
+ readonly baseTTL: number;
12
+ constructor(providerCacheNamespace: string, redisClient?: CachingMechanismInterface | undefined, standardTtlBlockDistance: number, noTtlBlockDistance: number, providerCacheTtl: number, ...jsonRpcConstructorParams: ConstructorParameters<typeof RateLimitedProvider>);
13
+ send(method: string, params: Array<unknown>): Promise<unknown>;
14
+ private buildRedisKey;
15
+ private cacheType;
16
+ private cacheTypeForBlock;
17
+ }
@@ -0,0 +1,167 @@
1
+ import { __awaiter, __extends, __generator } from "tslib";
2
+ import { random } from "lodash";
3
+ import { BLOCK_NUMBER_TTL, PROVIDER_CACHE_TTL, PROVIDER_CACHE_TTL_MODIFIER as ttl_modifier } from "./constants";
4
+ import { RateLimitedProvider } from "./rateLimitedProvider";
5
+ import { CacheType } from "./utils";
6
+ var CacheProvider = /** @class */ (function (_super) {
7
+ __extends(CacheProvider, _super);
8
+ function CacheProvider(providerCacheNamespace, redisClient,
9
+ // Note: if not provided, this is set to POSITIVE_INFINITY, meaning no cache entries are set with the standard TTL.
10
+ standardTtlBlockDistance,
11
+ // Note: if not provided, this is set to POSITIVE_INFINITY, meaning no cache entries are set with no TTL.
12
+ noTtlBlockDistance, providerCacheTtl) {
13
+ if (standardTtlBlockDistance === void 0) { standardTtlBlockDistance = Number.POSITIVE_INFINITY; }
14
+ if (noTtlBlockDistance === void 0) { noTtlBlockDistance = Number.POSITIVE_INFINITY; }
15
+ if (providerCacheTtl === void 0) { providerCacheTtl = PROVIDER_CACHE_TTL; }
16
+ var jsonRpcConstructorParams = [];
17
+ for (var _i = 5; _i < arguments.length; _i++) {
18
+ jsonRpcConstructorParams[_i - 5] = arguments[_i];
19
+ }
20
+ var _this = _super.apply(this, jsonRpcConstructorParams) || this;
21
+ _this.redisClient = redisClient;
22
+ _this.standardTtlBlockDistance = standardTtlBlockDistance;
23
+ _this.noTtlBlockDistance = noTtlBlockDistance;
24
+ _this.providerCacheTtl = providerCacheTtl;
25
+ var chainId = _this.network.chainId;
26
+ // Pre-compute as much of the redis key as possible.
27
+ var cachePrefix = "".concat(providerCacheNamespace, ",").concat(new URL(_this.connection.url).hostname, ",").concat(chainId);
28
+ _this.getBlockByNumberPrefix = "".concat(cachePrefix, ":getBlockByNumber,");
29
+ _this.getLogsCachePrefix = "".concat(cachePrefix, ":eth_getLogs,");
30
+ _this.callCachePrefix = "".concat(cachePrefix, ":eth_call,");
31
+ var _ttlVar = providerCacheTtl;
32
+ var _ttl = Number(_ttlVar);
33
+ if (isNaN(_ttl) || _ttl <= 0) {
34
+ throw new Error("PROVIDER_CACHE_TTL (".concat(_ttlVar, ") must be numeric and > 0"));
35
+ }
36
+ _this.baseTTL = _ttl;
37
+ return _this;
38
+ }
39
+ CacheProvider.prototype.send = function (method, params) {
40
+ var _a, _b, _c;
41
+ return __awaiter(this, void 0, void 0, function () {
42
+ var cacheType, _d, redisKey, redisResult, result, _e, ttl;
43
+ return __generator(this, function (_f) {
44
+ switch (_f.label) {
45
+ case 0:
46
+ if (!this.redisClient) return [3 /*break*/, 2];
47
+ return [4 /*yield*/, this.cacheType(method, params)];
48
+ case 1:
49
+ _d = _f.sent();
50
+ return [3 /*break*/, 3];
51
+ case 2:
52
+ _d = CacheType.NONE;
53
+ _f.label = 3;
54
+ case 3:
55
+ cacheType = _d;
56
+ if (!(cacheType !== CacheType.NONE)) return [3 /*break*/, 12];
57
+ redisKey = this.buildRedisKey(method, params);
58
+ return [4 /*yield*/, ((_a = this.redisClient) === null || _a === void 0 ? void 0 : _a.get(redisKey))];
59
+ case 4:
60
+ redisResult = _f.sent();
61
+ // If cache has the result, parse the json and return it.
62
+ if (redisResult) {
63
+ return [2 /*return*/, JSON.parse(redisResult)];
64
+ }
65
+ return [4 /*yield*/, _super.prototype.send.call(this, method, params)];
66
+ case 5:
67
+ result = _f.sent();
68
+ _e = cacheType;
69
+ switch (_e) {
70
+ case CacheType.WITH_TTL: return [3 /*break*/, 6];
71
+ case CacheType.NO_TTL: return [3 /*break*/, 8];
72
+ }
73
+ return [3 /*break*/, 10];
74
+ case 6:
75
+ ttl = this.baseTTL + Math.ceil(random(-ttl_modifier, ttl_modifier, true) * this.baseTTL);
76
+ return [4 /*yield*/, ((_b = this.redisClient) === null || _b === void 0 ? void 0 : _b.set(redisKey, JSON.stringify(result), ttl))];
77
+ case 7:
78
+ _f.sent();
79
+ return [3 /*break*/, 11];
80
+ case 8: return [4 /*yield*/, ((_c = this.redisClient) === null || _c === void 0 ? void 0 : _c.set(redisKey, JSON.stringify(result), Number.POSITIVE_INFINITY))];
81
+ case 9:
82
+ _f.sent();
83
+ return [3 /*break*/, 11];
84
+ case 10: throw new Error("Unexpected Cache type: ".concat(cacheType));
85
+ case 11:
86
+ // Return the cached result.
87
+ return [2 /*return*/, result];
88
+ case 12: return [4 /*yield*/, _super.prototype.send.call(this, method, params)];
89
+ case 13: return [2 /*return*/, _f.sent()];
90
+ }
91
+ });
92
+ });
93
+ };
94
+ CacheProvider.prototype.buildRedisKey = function (method, params) {
95
+ // Only handles eth_getLogs and eth_call right now.
96
+ switch (method) {
97
+ case "eth_getBlockByNumber":
98
+ return this.getBlockByNumberPrefix + JSON.stringify(params);
99
+ case "eth_getLogs":
100
+ return this.getLogsCachePrefix + JSON.stringify(params);
101
+ case "eth_call":
102
+ return this.callCachePrefix + JSON.stringify(params);
103
+ default:
104
+ throw new Error("CacheProvider::buildRedisKey: invalid JSON-RPC method ".concat(method));
105
+ }
106
+ };
107
+ CacheProvider.prototype.cacheType = function (method, params) {
108
+ // Today, we only cache eth_getLogs and eth_call.
109
+ if (method === "eth_getLogs") {
110
+ var _a = params[0], fromBlock = _a.fromBlock, toBlock = _a.toBlock;
111
+ // Handle odd cases where the ordering is flipped, etc.
112
+ // toBlock/fromBlock is in hex, so it must be parsed before being compared to the first unsafe block.
113
+ var fromBlockNumber = parseInt(String(fromBlock), 16);
114
+ var toBlockNumber = parseInt(String(toBlock), 16);
115
+ // Handle cases where the input block numbers are not hex values ("latest", "pending", etc).
116
+ // This would result in the result of the above being NaN.
117
+ if (Number.isNaN(fromBlockNumber) || Number.isNaN(toBlockNumber)) {
118
+ return Promise.resolve(CacheType.NONE);
119
+ }
120
+ if (toBlockNumber < fromBlockNumber) {
121
+ throw new Error("CacheProvider::shouldCache toBlock cannot be smaller than fromBlock.");
122
+ }
123
+ return this.cacheTypeForBlock(toBlock);
124
+ }
125
+ else if ("eth_call" === method || "eth_getBlockByNumber" === method) {
126
+ // Pull out the block tag from params. Its position in params is dependent on the method.
127
+ // We are only interested in numeric block tags, which would be hex-encoded strings.
128
+ var idx = method === "eth_getBlockByNumber" ? 0 : 1;
129
+ var blockNumber = parseInt(String(params[idx]), 16);
130
+ // If the block number isn't present or is a text string, this will be NaN and we return false.
131
+ if (Number.isNaN(blockNumber)) {
132
+ return Promise.resolve(CacheType.NONE);
133
+ }
134
+ // If the block is old enough to cache, cache the call.
135
+ return this.cacheTypeForBlock(blockNumber);
136
+ }
137
+ else {
138
+ return Promise.resolve(CacheType.NONE);
139
+ }
140
+ };
141
+ CacheProvider.prototype.cacheTypeForBlock = function (blockNumber) {
142
+ return __awaiter(this, void 0, void 0, function () {
143
+ var currentBlockNumber, headDistance;
144
+ return __generator(this, function (_a) {
145
+ switch (_a.label) {
146
+ case 0: return [4 /*yield*/, _super.prototype._getInternalBlockNumber.call(this, BLOCK_NUMBER_TTL * 1000)];
147
+ case 1:
148
+ currentBlockNumber = _a.sent();
149
+ headDistance = currentBlockNumber - blockNumber;
150
+ // If the distance from head is large enough, set with no TTL.
151
+ if (headDistance > this.noTtlBlockDistance) {
152
+ return [2 /*return*/, CacheType.NO_TTL];
153
+ }
154
+ // If the distance is <= noTtlBlockDistance, but > standardTtlBlockDistance, use standard TTL.
155
+ if (headDistance > this.standardTtlBlockDistance) {
156
+ return [2 /*return*/, CacheType.WITH_TTL];
157
+ }
158
+ // Too close to HEAD, no cache.
159
+ return [2 /*return*/, CacheType.NONE];
160
+ }
161
+ });
162
+ });
163
+ };
164
+ return CacheProvider;
165
+ }(RateLimitedProvider));
166
+ export { CacheProvider };
167
+ //# sourceMappingURL=cachedProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachedProvider.js","sourceRoot":"","sources":["../../../src/providers/cachedProvider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,2BAA2B,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAChH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;IAAmC,iCAAmB;IAMpD,uBACE,sBAA8B,EACrB,WAAuC;IAChD,mHAAmH;IAC1G,wBAAmD;IAC5D,yGAAyG;IAChG,kBAA6C,EAC7C,gBAAqC;QAHrC,yCAAA,EAAA,2BAA2B,MAAM,CAAC,iBAAiB;QAEnD,mCAAA,EAAA,qBAAqB,MAAM,CAAC,iBAAiB;QAC7C,iCAAA,EAAA,qCAAqC;QAC9C,kCAA8E;aAA9E,UAA8E,EAA9E,qBAA8E,EAA9E,IAA8E;YAA9E,iDAA8E;;QARhF,+BAUW,wBAAwB,UAgBlC;QAxBU,iBAAW,GAAX,WAAW,CAA4B;QAEvC,8BAAwB,GAAxB,wBAAwB,CAA2B;QAEnD,wBAAkB,GAAlB,kBAAkB,CAA2B;QAC7C,sBAAgB,GAAhB,gBAAgB,CAAqB;QAKtC,IAAA,OAAO,GAAK,KAAI,CAAC,OAAO,QAAjB,CAAkB;QAEjC,oDAAoD;QACpD,IAAM,WAAW,GAAG,UAAG,sBAAsB,cAAI,IAAI,GAAG,CAAC,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,cAAI,OAAO,CAAE,CAAC;QACpG,KAAI,CAAC,sBAAsB,GAAG,UAAG,WAAW,uBAAoB,CAAC;QACjE,KAAI,CAAC,kBAAkB,GAAG,UAAG,WAAW,kBAAe,CAAC;QACxD,KAAI,CAAC,eAAe,GAAG,UAAG,WAAW,eAAY,CAAC;QAElD,IAAM,OAAO,GAAG,gBAAgB,CAAC;QACjC,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,8BAAuB,OAAO,8BAA2B,CAAC,CAAC;SAC5E;QACD,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;;IACtB,CAAC;IACc,4BAAI,GAAnB,UAAoB,MAAc,EAAE,MAAsB;;;;;;;6BACtC,IAAI,CAAC,WAAW,EAAhB,wBAAgB;wBAAG,qBAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAA;;wBAApC,KAAA,SAAoC,CAAA;;;wBAAG,KAAA,SAAS,CAAC,IAAI,CAAA;;;wBAApF,SAAS,KAA2E;6BAEtF,CAAA,SAAS,KAAK,SAAS,CAAC,IAAI,CAAA,EAA5B,yBAA4B;wBACxB,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAGhC,qBAAM,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAS,QAAQ,CAAC,CAAA,EAAA;;wBAA3D,WAAW,GAAG,SAA6C;wBAEjE,yDAAyD;wBACzD,IAAI,WAAW,EAAE;4BACf,sBAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC;yBAChC;wBAGc,qBAAM,iBAAM,IAAI,YAAC,MAAM,EAAE,MAAM,CAAC,EAAA;;wBAAzC,MAAM,GAAG,SAAgC;wBAGvC,KAAA,SAAS,CAAA;;iCACV,SAAS,CAAC,QAAQ,CAAC,CAAnB,wBAAkB;iCAOlB,SAAS,CAAC,MAAM,CAAC,CAAjB,wBAAgB;;;;wBAJX,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC/F,qBAAM,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA,EAAA;;wBAAlE,SAAkE,CAAC;wBAErE,yBAAM;4BAEN,qBAAM,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA,EAAA;;wBAAvF,SAAuF,CAAC;wBACxF,yBAAM;6BAEN,MAAM,IAAI,KAAK,CAAC,iCAA0B,SAAS,CAAE,CAAC,CAAC;;oBAG3D,4BAA4B;oBAC5B,sBAAO,MAAM,EAAC;6BAGT,qBAAM,iBAAM,IAAI,YAAC,MAAM,EAAE,MAAM,CAAC,EAAA;6BAAvC,sBAAO,SAAgC,EAAC;;;;KACzC;IAEO,qCAAa,GAArB,UAAsB,MAAc,EAAE,MAAsB;QAC1D,mDAAmD;QACnD,QAAQ,MAAM,EAAE;YACd,KAAK,sBAAsB;gBACzB,OAAO,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9D,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1D,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD;gBACE,MAAM,IAAI,KAAK,CAAC,gEAAyD,MAAM,CAAE,CAAC,CAAC;SACtF;IACH,CAAC;IAEO,iCAAS,GAAjB,UAAkB,MAAc,EAAE,MAAsB;QACtD,iDAAiD;QACjD,IAAI,MAAM,KAAK,aAAa,EAAE;YACrB,IAAA,KAA0B,MAAkD,GAAtD,EAApB,SAAS,eAAA,EAAE,OAAO,aAAE,CAAuD;YAEpF,uDAAuD;YACvD,qGAAqG;YACrG,IAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,IAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAEpD,4FAA4F;YAC5F,0DAA0D;YAC1D,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;gBAChE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACxC;YAED,IAAI,aAAa,GAAG,eAAe,EAAE;gBACnC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;aACzF;YAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;SACxC;aAAM,IAAI,UAAU,KAAK,MAAM,IAAI,sBAAsB,KAAK,MAAM,EAAE;YACrE,yFAAyF;YACzF,oFAAoF;YACpF,IAAM,GAAG,GAAG,MAAM,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEtD,+FAA+F;YAC/F,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACxC;YAED,uDAAuD;YACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;SAC5C;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAEa,yCAAiB,GAA/B,UAAgC,WAAmB;;;;;4BAItB,qBAAM,iBAAM,uBAAuB,YAAC,gBAAgB,GAAG,IAAI,CAAC,EAAA;;wBAAjF,kBAAkB,GAAG,SAA4D;wBAGjF,YAAY,GAAG,kBAAkB,GAAG,WAAW,CAAC;wBAEtD,8DAA8D;wBAC9D,IAAI,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE;4BAC1C,sBAAO,SAAS,CAAC,MAAM,EAAC;yBACzB;wBAED,8FAA8F;wBAC9F,IAAI,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE;4BAChD,sBAAO,SAAS,CAAC,QAAQ,EAAC;yBAC3B;wBAED,+BAA+B;wBAC/B,sBAAO,SAAS,CAAC,IAAI,EAAC;;;;KACvB;IACH,oBAAC;AAAD,CAAC,AApJD,CAAmC,mBAAmB,GAoJrD"}
@@ -0,0 +1,7 @@
1
+ export declare const BLOCK_NUMBER_TTL = 60;
2
+ export declare const PROVIDER_CACHE_TTL = 3600;
3
+ export declare const PROVIDER_CACHE_TTL_MODIFIER = 0.15;
4
+ /**
5
+ * A default timeout for requests of 60 seconds.
6
+ */
7
+ export declare const defaultTimeout: number;
@@ -0,0 +1,10 @@
1
+ // This is how many seconds stale the block number can be for us to use it for evaluating the reorg distance in the cache provider.
2
+ export var BLOCK_NUMBER_TTL = 60;
3
+ // This is the TTL for the provider cache.
4
+ export var PROVIDER_CACHE_TTL = 3600;
5
+ export var PROVIDER_CACHE_TTL_MODIFIER = 0.15;
6
+ /**
7
+ * A default timeout for requests of 60 seconds.
8
+ */
9
+ export var defaultTimeout = 60 * 1000;
10
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/providers/constants.ts"],"names":[],"mappings":"AAAA,mIAAmI;AACnI,MAAM,CAAC,IAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,0CAA0C;AAC1C,MAAM,CAAC,IAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,IAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,IAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./rateLimitedProvider";
2
+ export * from "./cachedProvider";
3
+ export * from "./retryProvider";
4
+ export * from "./constants";
5
+ export * from "./utils";
@@ -0,0 +1,6 @@
1
+ export * from "./rateLimitedProvider";
2
+ export * from "./cachedProvider";
3
+ export * from "./retryProvider";
4
+ export * from "./constants";
5
+ export * from "./utils";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ethers } from "ethers";
2
+ import { Logger } from "winston";
3
+ export declare class RateLimitedProvider extends ethers.providers.StaticJsonRpcProvider {
4
+ readonly pctRpcCallsLogged: number;
5
+ readonly logger: Logger;
6
+ private queue;
7
+ constructor(maxConcurrency: number, pctRpcCallsLogged: number, logger?: Logger, ...cacheConstructorParams: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>);
8
+ wrapSendWithLog(method: string, params: Array<unknown>): Promise<any>;
9
+ send(method: string, params: Array<unknown>): Promise<unknown>;
10
+ }
@@ -0,0 +1,101 @@
1
+ // StaticJsonRpcProvider is used in place of JsonRpcProvider to avoid redundant eth_chainId queries prior to each
2
+ // request. This is safe to use when the back-end provider is guaranteed not to change.
3
+ // See https://docs.ethers.io/v5/api/providers/jsonrpc-provider/#StaticJsonRpcProvider
4
+ import { __assign, __awaiter, __extends, __generator } from "tslib";
5
+ import { queue } from "async";
6
+ import { ethers } from "ethers";
7
+ import { getOriginFromURL } from "../utils/NetworkUtils";
8
+ import { Logger as umaLogger } from "@uma/logger";
9
+ // This provider is a very small addition to the StaticJsonRpcProvider that ensures that no more than `maxConcurrency`
10
+ // requests are ever in flight. It uses the async/queue library to manage this.
11
+ var RateLimitedProvider = /** @class */ (function (_super) {
12
+ __extends(RateLimitedProvider, _super);
13
+ // Takes the same arguments as the JsonRpcProvider, but it has an additional maxConcurrency value at the beginning
14
+ // of the list.
15
+ function RateLimitedProvider(maxConcurrency, pctRpcCallsLogged, logger) {
16
+ if (logger === void 0) { logger = umaLogger; }
17
+ var cacheConstructorParams = [];
18
+ for (var _i = 3; _i < arguments.length; _i++) {
19
+ cacheConstructorParams[_i - 3] = arguments[_i];
20
+ }
21
+ var _this = _super.apply(this, cacheConstructorParams) || this;
22
+ _this.pctRpcCallsLogged = pctRpcCallsLogged;
23
+ _this.logger = logger;
24
+ // This sets up the queue. Each task is executed by calling the superclass's send method, which fires off the
25
+ // request. This queue sends out requests concurrently, but stops once the concurrency limit is reached. The
26
+ // maxConcurrency is configured here.
27
+ _this.queue = queue(function (_a, callback) {
28
+ var sendArgs = _a.sendArgs, resolve = _a.resolve, reject = _a.reject;
29
+ return __awaiter(_this, void 0, void 0, function () {
30
+ return __generator(this, function (_b) {
31
+ switch (_b.label) {
32
+ case 0: return [4 /*yield*/, this.wrapSendWithLog.apply(this, sendArgs).then(resolve)
33
+ .catch(reject)];
34
+ case 1:
35
+ _b.sent();
36
+ // we need this for the queue to know that the task is done
37
+ // @see: https://caolan.github.io/async/v3/global.html
38
+ callback();
39
+ return [2 /*return*/];
40
+ }
41
+ });
42
+ });
43
+ }, maxConcurrency);
44
+ return _this;
45
+ }
46
+ RateLimitedProvider.prototype.wrapSendWithLog = function (method, params) {
47
+ return __awaiter(this, void 0, void 0, function () {
48
+ var loggerArgs, startTime, result, elapsedTimeS, error_1, elapsedTimeS;
49
+ return __generator(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0:
52
+ if (!(this.pctRpcCallsLogged <= 0 || Math.random() > this.pctRpcCallsLogged / 100)) return [3 /*break*/, 1];
53
+ // Non sample path: no logging or timing, just issue the request.
54
+ return [2 /*return*/, _super.prototype.send.call(this, method, params)];
55
+ case 1:
56
+ loggerArgs = {
57
+ at: "ProviderUtils",
58
+ message: "Provider response sample",
59
+ provider: getOriginFromURL(this.connection.url),
60
+ method: method,
61
+ params: params,
62
+ chainId: this.network.chainId,
63
+ };
64
+ startTime = performance.now();
65
+ _a.label = 2;
66
+ case 2:
67
+ _a.trys.push([2, 4, , 5]);
68
+ return [4 /*yield*/, _super.prototype.send.call(this, method, params)];
69
+ case 3:
70
+ result = _a.sent();
71
+ elapsedTimeS = (performance.now() - startTime) / 1000;
72
+ this.logger.debug(__assign(__assign({}, loggerArgs), { success: true, timeElapsed: elapsedTimeS }));
73
+ return [2 /*return*/, result];
74
+ case 4:
75
+ error_1 = _a.sent();
76
+ elapsedTimeS = (performance.now() - startTime) / 1000;
77
+ this.logger.debug(__assign(__assign({}, loggerArgs), { success: false, timeElapsed: elapsedTimeS }));
78
+ throw error_1;
79
+ case 5: return [2 /*return*/];
80
+ }
81
+ });
82
+ });
83
+ };
84
+ RateLimitedProvider.prototype.send = function (method, params) {
85
+ var _this = this;
86
+ // This simply creates a promise and adds the arguments and resolve and reject handlers to the task.
87
+ return new Promise(function (resolve, reject) {
88
+ var task = {
89
+ sendArgs: [method, params],
90
+ resolve: resolve,
91
+ reject: reject,
92
+ };
93
+ // We didn't previously wait for this push so we can emulate
94
+ // the same behavior with the `void` keyword.
95
+ void _this.queue.push(task);
96
+ });
97
+ };
98
+ return RateLimitedProvider;
99
+ }(ethers.providers.StaticJsonRpcProvider));
100
+ export { RateLimitedProvider };
101
+ //# sourceMappingURL=rateLimitedProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimitedProvider.js","sourceRoot":"","sources":["../../../src/providers/rateLimitedProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ethers } from "ethers";
2
+ import { CachingMechanismInterface } from "../interfaces";
3
+ import { AugmentedLogger } from "@uma/logger";
4
+ export declare class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
5
+ readonly nodeQuorumThreshold: number;
6
+ readonly retries: number;
7
+ readonly delay: number;
8
+ readonly maxConcurrency: number;
9
+ readonly providers: ethers.providers.StaticJsonRpcProvider[];
10
+ constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: AugmentedLogger);
11
+ send(method: string, params: Array<unknown>): Promise<unknown>;
12
+ _validateResponse(method: string, _: Array<unknown>, response: unknown): boolean;
13
+ _sendAndValidate(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
14
+ _trySend(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
15
+ _getQuorum(method: string, params: Array<unknown>): number;
16
+ }