@across-protocol/sdk 4.1.16 → 4.1.17
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/cjs/providers/cachedProvider.d.ts +2 -0
- package/dist/cjs/providers/cachedProvider.js +37 -15
- package/dist/cjs/providers/cachedProvider.js.map +1 -1
- package/dist/cjs/providers/utils.d.ts +2 -1
- package/dist/cjs/providers/utils.js +1 -0
- package/dist/cjs/providers/utils.js.map +1 -1
- package/dist/esm/providers/cachedProvider.d.ts +2 -0
- package/dist/esm/providers/cachedProvider.js +39 -16
- package/dist/esm/providers/cachedProvider.js.map +1 -1
- package/dist/esm/providers/utils.d.ts +2 -1
- package/dist/esm/providers/utils.js +1 -0
- package/dist/esm/providers/utils.js.map +1 -1
- package/dist/types/providers/cachedProvider.d.ts +2 -0
- package/dist/types/providers/cachedProvider.d.ts.map +1 -1
- package/dist/types/providers/utils.d.ts +2 -1
- package/dist/types/providers/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/providers/cachedProvider.ts +23 -2
- package/src/providers/utils.ts +1 -0
|
@@ -8,10 +8,12 @@ export declare class CacheProvider extends RateLimitedProvider {
|
|
|
8
8
|
readonly getBlockByNumberPrefix: string;
|
|
9
9
|
readonly getLogsCachePrefix: string;
|
|
10
10
|
readonly callCachePrefix: string;
|
|
11
|
+
readonly getTransactionReceiptPrefix: string;
|
|
11
12
|
readonly baseTTL: number;
|
|
12
13
|
constructor(providerCacheNamespace: string, redisClient?: CachingMechanismInterface | undefined, standardTtlBlockDistance: number, noTtlBlockDistance: number, providerCacheTtl: number, ...jsonRpcConstructorParams: ConstructorParameters<typeof RateLimitedProvider>);
|
|
13
14
|
send(method: string, params: Array<unknown>): Promise<unknown>;
|
|
14
15
|
private buildRedisKey;
|
|
15
16
|
private cacheType;
|
|
17
|
+
private getBlockNumberFromRpcResponse;
|
|
16
18
|
private cacheTypeForBlock;
|
|
17
19
|
}
|
|
@@ -26,6 +26,7 @@ var CacheProvider = (function (_super) {
|
|
|
26
26
|
_this.getBlockByNumberPrefix = "".concat(cachePrefix, ":getBlockByNumber,");
|
|
27
27
|
_this.getLogsCachePrefix = "".concat(cachePrefix, ":eth_getLogs,");
|
|
28
28
|
_this.callCachePrefix = "".concat(cachePrefix, ":eth_call,");
|
|
29
|
+
_this.getTransactionReceiptPrefix = "".concat(cachePrefix, ":eth_getTransactionReceipt,");
|
|
29
30
|
var _ttlVar = providerCacheTtl;
|
|
30
31
|
var _ttl = Number(_ttlVar);
|
|
31
32
|
if (isNaN(_ttl) || _ttl <= 0) {
|
|
@@ -37,7 +38,7 @@ var CacheProvider = (function (_super) {
|
|
|
37
38
|
CacheProvider.prototype.send = function (method, params) {
|
|
38
39
|
var _a, _b, _c;
|
|
39
40
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
40
|
-
var cacheType, _d, redisKey, redisResult, result, _e, ttl;
|
|
41
|
+
var cacheType, _d, redisKey, redisResult, result, blockNumber, _e, ttl;
|
|
41
42
|
return tslib_1.__generator(this, function (_f) {
|
|
42
43
|
switch (_f.label) {
|
|
43
44
|
case 0:
|
|
@@ -51,7 +52,7 @@ var CacheProvider = (function (_super) {
|
|
|
51
52
|
_f.label = 3;
|
|
52
53
|
case 3:
|
|
53
54
|
cacheType = _d;
|
|
54
|
-
if (!(cacheType !== utils_1.CacheType.NONE)) return [3,
|
|
55
|
+
if (!(cacheType !== utils_1.CacheType.NONE)) return [3, 14];
|
|
55
56
|
redisKey = this.buildRedisKey(method, params);
|
|
56
57
|
return [4, ((_a = this.redisClient) === null || _a === void 0 ? void 0 : _a.get(redisKey))];
|
|
57
58
|
case 4:
|
|
@@ -62,26 +63,33 @@ var CacheProvider = (function (_super) {
|
|
|
62
63
|
return [4, _super.prototype.send.call(this, method, params)];
|
|
63
64
|
case 5:
|
|
64
65
|
result = _f.sent();
|
|
66
|
+
if (!(cacheType === utils_1.CacheType.DECIDE_TTL_POST_SEND)) return [3, 7];
|
|
67
|
+
blockNumber = this.getBlockNumberFromRpcResponse(method, result);
|
|
68
|
+
return [4, this.cacheTypeForBlock(blockNumber)];
|
|
69
|
+
case 6:
|
|
70
|
+
cacheType = _f.sent();
|
|
71
|
+
_f.label = 7;
|
|
72
|
+
case 7:
|
|
65
73
|
_e = cacheType;
|
|
66
74
|
switch (_e) {
|
|
67
|
-
case utils_1.CacheType.WITH_TTL: return [3,
|
|
68
|
-
case utils_1.CacheType.NO_TTL: return [3,
|
|
75
|
+
case utils_1.CacheType.WITH_TTL: return [3, 8];
|
|
76
|
+
case utils_1.CacheType.NO_TTL: return [3, 10];
|
|
69
77
|
}
|
|
70
|
-
return [3,
|
|
71
|
-
case
|
|
78
|
+
return [3, 12];
|
|
79
|
+
case 8:
|
|
72
80
|
ttl = this.baseTTL + Math.ceil((0, lodash_1.random)(-constants_1.PROVIDER_CACHE_TTL_MODIFIER, constants_1.PROVIDER_CACHE_TTL_MODIFIER, true) * this.baseTTL);
|
|
73
81
|
return [4, ((_b = this.redisClient) === null || _b === void 0 ? void 0 : _b.set(redisKey, JSON.stringify(result), ttl))];
|
|
74
|
-
case 7:
|
|
75
|
-
_f.sent();
|
|
76
|
-
return [3, 11];
|
|
77
|
-
case 8: return [4, ((_c = this.redisClient) === null || _c === void 0 ? void 0 : _c.set(redisKey, JSON.stringify(result), Number.POSITIVE_INFINITY))];
|
|
78
82
|
case 9:
|
|
79
83
|
_f.sent();
|
|
80
|
-
return [3,
|
|
81
|
-
case 10:
|
|
82
|
-
case 11:
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
return [3, 13];
|
|
85
|
+
case 10: return [4, ((_c = this.redisClient) === null || _c === void 0 ? void 0 : _c.set(redisKey, JSON.stringify(result), Number.POSITIVE_INFINITY))];
|
|
86
|
+
case 11:
|
|
87
|
+
_f.sent();
|
|
88
|
+
return [3, 13];
|
|
89
|
+
case 12: throw new Error("Unexpected Cache type: ".concat(cacheType));
|
|
90
|
+
case 13: return [2, result];
|
|
91
|
+
case 14: return [4, _super.prototype.send.call(this, method, params)];
|
|
92
|
+
case 15: return [2, _f.sent()];
|
|
85
93
|
}
|
|
86
94
|
});
|
|
87
95
|
});
|
|
@@ -94,6 +102,8 @@ var CacheProvider = (function (_super) {
|
|
|
94
102
|
return this.getLogsCachePrefix + JSON.stringify(params);
|
|
95
103
|
case "eth_call":
|
|
96
104
|
return this.callCachePrefix + JSON.stringify(params);
|
|
105
|
+
case "eth_getTransactionReceipt":
|
|
106
|
+
return this.getTransactionReceiptPrefix + JSON.stringify(params);
|
|
97
107
|
default:
|
|
98
108
|
throw new Error("CacheProvider::buildRedisKey: invalid JSON-RPC method ".concat(method));
|
|
99
109
|
}
|
|
@@ -119,10 +129,22 @@ var CacheProvider = (function (_super) {
|
|
|
119
129
|
}
|
|
120
130
|
return this.cacheTypeForBlock(blockNumber);
|
|
121
131
|
}
|
|
132
|
+
else if ("eth_getTransactionReceipt" === method) {
|
|
133
|
+
return Promise.resolve(utils_1.CacheType.DECIDE_TTL_POST_SEND);
|
|
134
|
+
}
|
|
122
135
|
else {
|
|
123
136
|
return Promise.resolve(utils_1.CacheType.NONE);
|
|
124
137
|
}
|
|
125
138
|
};
|
|
139
|
+
CacheProvider.prototype.getBlockNumberFromRpcResponse = function (method, result) {
|
|
140
|
+
if (method === "eth_getTransactionReceipt") {
|
|
141
|
+
var receipt = result;
|
|
142
|
+
return Number(receipt.blockNumber);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
throw new Error("CacheProvider::getBlockNumberFromRpcResponse: unsupported JSON-RPC method ".concat(method));
|
|
146
|
+
}
|
|
147
|
+
};
|
|
126
148
|
CacheProvider.prototype.cacheTypeForBlock = function (blockNumber) {
|
|
127
149
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
128
150
|
var currentBlockNumber, headDistance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cachedProvider.js","sourceRoot":"","sources":["../../../src/providers/cachedProvider.ts"],"names":[],"mappings":";;;;AAAA,iCAAgC;AAEhC,yCAAgH;AAChH,6DAA4D;AAC5D,iCAAoC;AAEpC;IAAmC,yCAAmB;
|
|
1
|
+
{"version":3,"file":"cachedProvider.js","sourceRoot":"","sources":["../../../src/providers/cachedProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,5 +86,6 @@ var CacheType;
|
|
|
86
86
|
CacheType[CacheType["NONE"] = 0] = "NONE";
|
|
87
87
|
CacheType[CacheType["WITH_TTL"] = 1] = "WITH_TTL";
|
|
88
88
|
CacheType[CacheType["NO_TTL"] = 2] = "NO_TTL";
|
|
89
|
+
CacheType[CacheType["DECIDE_TTL_POST_SEND"] = 3] = "DECIDE_TTL_POST_SEND";
|
|
89
90
|
})(CacheType || (exports.CacheType = CacheType = {}));
|
|
90
91
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":";;;;AACA,0DAA4B;AAE5B,iCAAiC;AACjC,kCAAqC;AAErC,yDAAqC;AACrC,uDAAmC;AACnC,mDAA+B;AAK/B,IAAM,SAAS,GAAG;IAChB,OAAO,EAAE,OAAO,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,IAAI,EAAE,IAAI,CAAC,MAAM;CAClB,CAAC;AAOF,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC;AAFD,kDAEC;AAUD,SAAgB,MAAM,CACpB,QAAqB,EACrB,OAAe,EACf,MAAc,EACd,SAAiC;IAAjC,0BAAA,EAAA,mBAAiC;IAEjC,IAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAA,gBAAM,EAAC,MAAM,EAAE,oCAA6B,QAAQ,MAAG,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AATD,wBASC;AAQD,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;AAMD,IAAM,cAAc,GAAG;IAOrB,oBAAoB,EAAE;QACpB,OAAO;QACP,eAAe;QACf,kBAAkB;QAClB,MAAM;QACN,iBAAiB;QACjB,WAAW;QACX,cAAc;KACf;IACD,WAAW,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,SAAS,CAAC;CACnF,CAAC;AAqBF,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,cAAc,CAAC,oBAAoB,EACnC,UAAqC,EACrC,UAAqC,CACtC,CAAC;KACH;SAAM,IAAI,MAAM,KAAK,aAAa,EAAE;QACnC,OAAO,kCAAkC,CACvC,cAAc,CAAC,WAAW,EAC1B,UAAuB,EACvB,UAAuB,CACxB,CAAC;KACH;SAAM;QACL,OAAO,IAAA,gBAAO,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KACxC;AACH,CAAC;AAlBD,8CAkBC;AAED,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,yCAAI,CAAA;IACJ,iDAAQ,CAAA;IACR,6CAAM,CAAA;IACN,yEAAoB,CAAA;AACtB,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB"}
|
|
@@ -8,10 +8,12 @@ export declare class CacheProvider extends RateLimitedProvider {
|
|
|
8
8
|
readonly getBlockByNumberPrefix: string;
|
|
9
9
|
readonly getLogsCachePrefix: string;
|
|
10
10
|
readonly callCachePrefix: string;
|
|
11
|
+
readonly getTransactionReceiptPrefix: string;
|
|
11
12
|
readonly baseTTL: number;
|
|
12
13
|
constructor(providerCacheNamespace: string, redisClient?: CachingMechanismInterface | undefined, standardTtlBlockDistance: number, noTtlBlockDistance: number, providerCacheTtl: number, ...jsonRpcConstructorParams: ConstructorParameters<typeof RateLimitedProvider>);
|
|
13
14
|
send(method: string, params: Array<unknown>): Promise<unknown>;
|
|
14
15
|
private buildRedisKey;
|
|
15
16
|
private cacheType;
|
|
17
|
+
private getBlockNumberFromRpcResponse;
|
|
16
18
|
private cacheTypeForBlock;
|
|
17
19
|
}
|
|
@@ -28,6 +28,7 @@ var CacheProvider = /** @class */ (function (_super) {
|
|
|
28
28
|
_this.getBlockByNumberPrefix = "".concat(cachePrefix, ":getBlockByNumber,");
|
|
29
29
|
_this.getLogsCachePrefix = "".concat(cachePrefix, ":eth_getLogs,");
|
|
30
30
|
_this.callCachePrefix = "".concat(cachePrefix, ":eth_call,");
|
|
31
|
+
_this.getTransactionReceiptPrefix = "".concat(cachePrefix, ":eth_getTransactionReceipt,");
|
|
31
32
|
var _ttlVar = providerCacheTtl;
|
|
32
33
|
var _ttl = Number(_ttlVar);
|
|
33
34
|
if (isNaN(_ttl) || _ttl <= 0) {
|
|
@@ -39,7 +40,7 @@ var CacheProvider = /** @class */ (function (_super) {
|
|
|
39
40
|
CacheProvider.prototype.send = function (method, params) {
|
|
40
41
|
var _a, _b, _c;
|
|
41
42
|
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
-
var cacheType, _d, redisKey, redisResult, result, _e, ttl;
|
|
43
|
+
var cacheType, _d, redisKey, redisResult, result, blockNumber, _e, ttl;
|
|
43
44
|
return __generator(this, function (_f) {
|
|
44
45
|
switch (_f.label) {
|
|
45
46
|
case 0:
|
|
@@ -53,7 +54,7 @@ var CacheProvider = /** @class */ (function (_super) {
|
|
|
53
54
|
_f.label = 3;
|
|
54
55
|
case 3:
|
|
55
56
|
cacheType = _d;
|
|
56
|
-
if (!(cacheType !== CacheType.NONE)) return [3 /*break*/,
|
|
57
|
+
if (!(cacheType !== CacheType.NONE)) return [3 /*break*/, 14];
|
|
57
58
|
redisKey = this.buildRedisKey(method, params);
|
|
58
59
|
return [4 /*yield*/, ((_a = this.redisClient) === null || _a === void 0 ? void 0 : _a.get(redisKey))];
|
|
59
60
|
case 4:
|
|
@@ -65,34 +66,40 @@ var CacheProvider = /** @class */ (function (_super) {
|
|
|
65
66
|
return [4 /*yield*/, _super.prototype.send.call(this, method, params)];
|
|
66
67
|
case 5:
|
|
67
68
|
result = _f.sent();
|
|
69
|
+
if (!(cacheType === CacheType.DECIDE_TTL_POST_SEND)) return [3 /*break*/, 7];
|
|
70
|
+
blockNumber = this.getBlockNumberFromRpcResponse(method, result);
|
|
71
|
+
return [4 /*yield*/, this.cacheTypeForBlock(blockNumber)];
|
|
72
|
+
case 6:
|
|
73
|
+
cacheType = _f.sent();
|
|
74
|
+
_f.label = 7;
|
|
75
|
+
case 7:
|
|
68
76
|
_e = cacheType;
|
|
69
77
|
switch (_e) {
|
|
70
|
-
case CacheType.WITH_TTL: return [3 /*break*/,
|
|
71
|
-
case CacheType.NO_TTL: return [3 /*break*/,
|
|
78
|
+
case CacheType.WITH_TTL: return [3 /*break*/, 8];
|
|
79
|
+
case CacheType.NO_TTL: return [3 /*break*/, 10];
|
|
72
80
|
}
|
|
73
|
-
return [3 /*break*/,
|
|
74
|
-
case
|
|
81
|
+
return [3 /*break*/, 12];
|
|
82
|
+
case 8:
|
|
75
83
|
ttl = this.baseTTL + Math.ceil(random(-ttl_modifier, ttl_modifier, true) * this.baseTTL);
|
|
76
84
|
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
85
|
case 9:
|
|
82
86
|
_f.sent();
|
|
83
|
-
return [3 /*break*/,
|
|
84
|
-
case 10:
|
|
85
|
-
case 11:
|
|
87
|
+
return [3 /*break*/, 13];
|
|
88
|
+
case 10: return [4 /*yield*/, ((_c = this.redisClient) === null || _c === void 0 ? void 0 : _c.set(redisKey, JSON.stringify(result), Number.POSITIVE_INFINITY))];
|
|
89
|
+
case 11:
|
|
90
|
+
_f.sent();
|
|
91
|
+
return [3 /*break*/, 13];
|
|
92
|
+
case 12: throw new Error("Unexpected Cache type: ".concat(cacheType));
|
|
93
|
+
case 13:
|
|
86
94
|
// Return the cached result.
|
|
87
95
|
return [2 /*return*/, result];
|
|
88
|
-
case
|
|
89
|
-
case
|
|
96
|
+
case 14: return [4 /*yield*/, _super.prototype.send.call(this, method, params)];
|
|
97
|
+
case 15: return [2 /*return*/, _f.sent()];
|
|
90
98
|
}
|
|
91
99
|
});
|
|
92
100
|
});
|
|
93
101
|
};
|
|
94
102
|
CacheProvider.prototype.buildRedisKey = function (method, params) {
|
|
95
|
-
// Only handles eth_getLogs and eth_call right now.
|
|
96
103
|
switch (method) {
|
|
97
104
|
case "eth_getBlockByNumber":
|
|
98
105
|
return this.getBlockByNumberPrefix + JSON.stringify(params);
|
|
@@ -100,6 +107,8 @@ var CacheProvider = /** @class */ (function (_super) {
|
|
|
100
107
|
return this.getLogsCachePrefix + JSON.stringify(params);
|
|
101
108
|
case "eth_call":
|
|
102
109
|
return this.callCachePrefix + JSON.stringify(params);
|
|
110
|
+
case "eth_getTransactionReceipt":
|
|
111
|
+
return this.getTransactionReceiptPrefix + JSON.stringify(params);
|
|
103
112
|
default:
|
|
104
113
|
throw new Error("CacheProvider::buildRedisKey: invalid JSON-RPC method ".concat(method));
|
|
105
114
|
}
|
|
@@ -134,10 +143,24 @@ var CacheProvider = /** @class */ (function (_super) {
|
|
|
134
143
|
// If the block is old enough to cache, cache the call.
|
|
135
144
|
return this.cacheTypeForBlock(blockNumber);
|
|
136
145
|
}
|
|
146
|
+
else if ("eth_getTransactionReceipt" === method) {
|
|
147
|
+
// The only param to this request is "hash" so we can't determine how old the data we want is until after
|
|
148
|
+
// we receive the RPC result. Therefore we'll defer the TTL decision.
|
|
149
|
+
return Promise.resolve(CacheType.DECIDE_TTL_POST_SEND);
|
|
150
|
+
}
|
|
137
151
|
else {
|
|
138
152
|
return Promise.resolve(CacheType.NONE);
|
|
139
153
|
}
|
|
140
154
|
};
|
|
155
|
+
CacheProvider.prototype.getBlockNumberFromRpcResponse = function (method, result) {
|
|
156
|
+
if (method === "eth_getTransactionReceipt") {
|
|
157
|
+
var receipt = result;
|
|
158
|
+
return Number(receipt.blockNumber);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
throw new Error("CacheProvider::getBlockNumberFromRpcResponse: unsupported JSON-RPC method ".concat(method));
|
|
162
|
+
}
|
|
163
|
+
};
|
|
141
164
|
CacheProvider.prototype.cacheTypeForBlock = function (blockNumber) {
|
|
142
165
|
return __awaiter(this, void 0, void 0, function () {
|
|
143
166
|
var currentBlockNumber, headDistance;
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"cachedProvider.js","sourceRoot":"","sources":["../../../src/providers/cachedProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -130,5 +130,6 @@ export var CacheType;
|
|
|
130
130
|
CacheType[CacheType["NONE"] = 0] = "NONE";
|
|
131
131
|
CacheType[CacheType["WITH_TTL"] = 1] = "WITH_TTL";
|
|
132
132
|
CacheType[CacheType["NO_TTL"] = 2] = "NO_TTL";
|
|
133
|
+
CacheType[CacheType["DECIDE_TTL_POST_SEND"] = 3] = "DECIDE_TTL_POST_SEND";
|
|
133
134
|
})(CacheType || (CacheType = {}));
|
|
134
135
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,13 @@ export declare class CacheProvider extends RateLimitedProvider {
|
|
|
8
8
|
readonly getBlockByNumberPrefix: string;
|
|
9
9
|
readonly getLogsCachePrefix: string;
|
|
10
10
|
readonly callCachePrefix: string;
|
|
11
|
+
readonly getTransactionReceiptPrefix: string;
|
|
11
12
|
readonly baseTTL: number;
|
|
12
13
|
constructor(providerCacheNamespace: string, redisClient?: CachingMechanismInterface | undefined, standardTtlBlockDistance: number, noTtlBlockDistance: number, providerCacheTtl: number, ...jsonRpcConstructorParams: ConstructorParameters<typeof RateLimitedProvider>);
|
|
13
14
|
send(method: string, params: Array<unknown>): Promise<unknown>;
|
|
14
15
|
private buildRedisKey;
|
|
15
16
|
private cacheType;
|
|
17
|
+
private getBlockNumberFromRpcResponse;
|
|
16
18
|
private cacheTypeForBlock;
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=cachedProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cachedProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/cachedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qBAAa,aAAc,SAAQ,mBAAmB;
|
|
1
|
+
{"version":3,"file":"cachedProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/cachedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qBAAa,aAAc,SAAQ,mBAAmB;IASlD,QAAQ,CAAC,WAAW,CAAC;IAErB,QAAQ,CAAC,wBAAwB;IAEjC,QAAQ,CAAC,kBAAkB;IAC3B,QAAQ,CAAC,gBAAgB;IAb3B,SAAgB,sBAAsB,EAAE,MAAM,CAAC;IAC/C,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,eAAe,EAAE,MAAM,CAAC;IACxC,SAAgB,2BAA2B,EAAE,MAAM,CAAC;IACpD,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAG9B,sBAAsB,EAAE,MAAM,EACrB,WAAW,CAAC,uCAA2B,EAEvC,wBAAwB,QAA2B,EAEnD,kBAAkB,QAA2B,EAC7C,gBAAgB,QAAqB,EAC9C,GAAG,wBAAwB,EAAE,qBAAqB,CAAC,OAAO,mBAAmB,CAAC;IAoBjE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA6C7E,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,SAAS;IA2CjB,OAAO,CAAC,6BAA6B;YASvB,iBAAiB;CAsBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAepD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,WAAW,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,YAAsB,GAChC,MAAM,CAIR;AAmBD,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAOT;AAED,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAOnH;AAyBD;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAInC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,EAAE,YAAY,EAAE,MAAM,UAElG;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAG7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAkBnG;AAED,oBAAY,SAAS;IACnB,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,MAAM,IAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAepD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,WAAW,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,YAAsB,GAChC,MAAM,CAIR;AAmBD,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAOT;AAED,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAOnH;AAyBD;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAInC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,EAAE,YAAY,EAAE,MAAM,UAElG;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAG7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAkBnG;AAED,oBAAY,SAAS;IACnB,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,oBAAoB,IAAA;CACrB"}
|
package/package.json
CHANGED
|
@@ -8,6 +8,7 @@ export class CacheProvider extends RateLimitedProvider {
|
|
|
8
8
|
public readonly getBlockByNumberPrefix: string;
|
|
9
9
|
public readonly getLogsCachePrefix: string;
|
|
10
10
|
public readonly callCachePrefix: string;
|
|
11
|
+
public readonly getTransactionReceiptPrefix: string;
|
|
11
12
|
public readonly baseTTL: number;
|
|
12
13
|
|
|
13
14
|
constructor(
|
|
@@ -29,6 +30,7 @@ export class CacheProvider extends RateLimitedProvider {
|
|
|
29
30
|
this.getBlockByNumberPrefix = `${cachePrefix}:getBlockByNumber,`;
|
|
30
31
|
this.getLogsCachePrefix = `${cachePrefix}:eth_getLogs,`;
|
|
31
32
|
this.callCachePrefix = `${cachePrefix}:eth_call,`;
|
|
33
|
+
this.getTransactionReceiptPrefix = `${cachePrefix}:eth_getTransactionReceipt,`;
|
|
32
34
|
|
|
33
35
|
const _ttlVar = providerCacheTtl;
|
|
34
36
|
const _ttl = Number(_ttlVar);
|
|
@@ -38,7 +40,7 @@ export class CacheProvider extends RateLimitedProvider {
|
|
|
38
40
|
this.baseTTL = _ttl;
|
|
39
41
|
}
|
|
40
42
|
override async send(method: string, params: Array<unknown>): Promise<unknown> {
|
|
41
|
-
|
|
43
|
+
let cacheType = this.redisClient ? await this.cacheType(method, params) : CacheType.NONE;
|
|
42
44
|
|
|
43
45
|
if (cacheType !== CacheType.NONE) {
|
|
44
46
|
const redisKey = this.buildRedisKey(method, params);
|
|
@@ -54,6 +56,11 @@ export class CacheProvider extends RateLimitedProvider {
|
|
|
54
56
|
// Cache does not have the result. Query it directly and cache.
|
|
55
57
|
const result = await super.send(method, params);
|
|
56
58
|
|
|
59
|
+
if (cacheType === CacheType.DECIDE_TTL_POST_SEND) {
|
|
60
|
+
const blockNumber = this.getBlockNumberFromRpcResponse(method, result);
|
|
61
|
+
cacheType = await this.cacheTypeForBlock(blockNumber);
|
|
62
|
+
}
|
|
63
|
+
|
|
57
64
|
// Note: use swtich to ensure all enum cases are handled.
|
|
58
65
|
switch (cacheType) {
|
|
59
66
|
case CacheType.WITH_TTL:
|
|
@@ -78,7 +85,6 @@ export class CacheProvider extends RateLimitedProvider {
|
|
|
78
85
|
}
|
|
79
86
|
|
|
80
87
|
private buildRedisKey(method: string, params: Array<unknown>) {
|
|
81
|
-
// Only handles eth_getLogs and eth_call right now.
|
|
82
88
|
switch (method) {
|
|
83
89
|
case "eth_getBlockByNumber":
|
|
84
90
|
return this.getBlockByNumberPrefix + JSON.stringify(params);
|
|
@@ -86,6 +92,8 @@ export class CacheProvider extends RateLimitedProvider {
|
|
|
86
92
|
return this.getLogsCachePrefix + JSON.stringify(params);
|
|
87
93
|
case "eth_call":
|
|
88
94
|
return this.callCachePrefix + JSON.stringify(params);
|
|
95
|
+
case "eth_getTransactionReceipt":
|
|
96
|
+
return this.getTransactionReceiptPrefix + JSON.stringify(params);
|
|
89
97
|
default:
|
|
90
98
|
throw new Error(`CacheProvider::buildRedisKey: invalid JSON-RPC method ${method}`);
|
|
91
99
|
}
|
|
@@ -125,11 +133,24 @@ export class CacheProvider extends RateLimitedProvider {
|
|
|
125
133
|
|
|
126
134
|
// If the block is old enough to cache, cache the call.
|
|
127
135
|
return this.cacheTypeForBlock(blockNumber);
|
|
136
|
+
} else if ("eth_getTransactionReceipt" === method) {
|
|
137
|
+
// The only param to this request is "hash" so we can't determine how old the data we want is until after
|
|
138
|
+
// we receive the RPC result. Therefore we'll defer the TTL decision.
|
|
139
|
+
return Promise.resolve(CacheType.DECIDE_TTL_POST_SEND);
|
|
128
140
|
} else {
|
|
129
141
|
return Promise.resolve(CacheType.NONE);
|
|
130
142
|
}
|
|
131
143
|
}
|
|
132
144
|
|
|
145
|
+
private getBlockNumberFromRpcResponse(method: string, result: unknown): number {
|
|
146
|
+
if (method === "eth_getTransactionReceipt") {
|
|
147
|
+
const receipt = result as { blockNumber: number | string };
|
|
148
|
+
return Number(receipt.blockNumber);
|
|
149
|
+
} else {
|
|
150
|
+
throw new Error(`CacheProvider::getBlockNumberFromRpcResponse: unsupported JSON-RPC method ${method}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
133
154
|
private async cacheTypeForBlock(blockNumber: number): Promise<CacheType> {
|
|
134
155
|
// Note: this method is an internal method provided by the BaseProvider. It allows the caller to specify a maxAge of
|
|
135
156
|
// the block that is allowed. This means if a block has been retrieved within the last n seconds, no provider
|