@ercworldio/blockchain-shared 1.0.0-dev.18 → 1.0.0-dev.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.
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -2
- package/build/services/AlchemyService.d.ts +1 -0
- package/build/services/AlchemyService.d.ts.map +1 -1
- package/build/services/AlchemyService.js +6 -2
- package/build/services/WalletManager.d.ts.map +1 -1
- package/build/services/WalletManager.js +13 -5
- package/build/services/quicknode-notifications/QnNotificationsApi.js +1 -1
- package/build/services/quicknode-notifications/QnWebhookAddressManager.d.ts +18 -0
- package/build/services/quicknode-notifications/QnWebhookAddressManager.d.ts.map +1 -0
- package/build/services/quicknode-notifications/QnWebhookAddressManager.js +137 -0
- package/build/utils/AsyncTTLCache.d.ts +1 -0
- package/build/utils/AsyncTTLCache.d.ts.map +1 -1
- package/build/utils/AsyncTTLCache.js +3 -0
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ export { default as Worker } from './services/Worker';
|
|
|
42
42
|
export { default as QuicknodeWebhookSignature } from './services/QuicknodeWebhookSignature';
|
|
43
43
|
export { default as QnNotificationsApi } from "./services/quicknode-notifications/QnNotificationsApi";
|
|
44
44
|
export { default as SetupNotifications } from "./services/quicknode-notifications/SetupNotifications";
|
|
45
|
+
export { default as QnWebhookAddressManager } from "./services/quicknode-notifications/QnWebhookAddressManager";
|
|
45
46
|
export * from './contracts/contract-events/types/events';
|
|
46
47
|
export * from './contracts/types/escrow';
|
|
47
48
|
export * from './services/solana/escrow/types/index';
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -40,8 +40,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
40
40
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
41
|
};
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.
|
|
44
|
-
exports.AppErrors = exports.EscrowIdl = exports.CoverageInfo = exports.EscrowEvents = exports.Erc20Events = exports.AccessControlEvents = exports.ERC20Abi = exports.ErrorAbi = exports.EscrowAbi = exports.ERC20MockAbi = exports.BaseErrors = exports.VoltageErrors = exports.AlchemyErrors = void 0;
|
|
43
|
+
exports.DatabaseErrors = exports.BalanceErrors = exports.AdminErrors = exports.TransactionsErrors = exports.EscrowInteraction = exports.QnWebhookAddressManager = exports.SetupNotifications = exports.QnNotificationsApi = exports.QuicknodeWebhookSignature = exports.Worker = exports.WithdrawalManager = exports.WalletManagerHelper = exports.WalletManager = exports.WalletIndexService = exports.SweepHistoryService = exports.SweepJobService = exports.StorageService = exports.ProviderManager = exports.Provider = exports.TronFundingWallet = exports.TronCustodialWallet = exports.TronHotWallet = exports.TronHelper = exports.TronTransaction = exports.TronSigner = exports.TimerManager = exports.RedisPubSub = exports.RedisListQueue = exports.RedisQueue = exports.Redis = exports.MemoryMonitor = exports.Logger = exports.KeyVaultHandler = exports.InvoiceQueue = exports.EscrowService = exports.EventsService = exports.EventsHandler = exports.ElasticSearch = exports.DepositAddressService = exports.ClaimJobService = exports.ClaimHistoryService = exports.ChainManager = exports.BalanceService = exports.AlchemyWebhookSignature = exports.AlchemyWebhooks = exports.AlchemyService = exports.AccountingService = exports.AzureEventHubHandler = exports.AsyncTTLCache = exports.AsyncRateLimiter = void 0;
|
|
44
|
+
exports.AppErrors = exports.EscrowIdl = exports.CoverageInfo = exports.EscrowEvents = exports.Erc20Events = exports.AccessControlEvents = exports.ERC20Abi = exports.ErrorAbi = exports.EscrowAbi = exports.ERC20MockAbi = exports.BaseErrors = exports.VoltageErrors = exports.AlchemyErrors = exports.WalletErrors = void 0;
|
|
45
45
|
// Services
|
|
46
46
|
var AsyncRateLimiter_1 = require("./utils/AsyncRateLimiter");
|
|
47
47
|
Object.defineProperty(exports, "AsyncRateLimiter", { enumerable: true, get: function () { return __importDefault(AsyncRateLimiter_1).default; } });
|
|
@@ -130,6 +130,8 @@ var QnNotificationsApi_1 = require("./services/quicknode-notifications/QnNotific
|
|
|
130
130
|
Object.defineProperty(exports, "QnNotificationsApi", { enumerable: true, get: function () { return __importDefault(QnNotificationsApi_1).default; } });
|
|
131
131
|
var SetupNotifications_1 = require("./services/quicknode-notifications/SetupNotifications");
|
|
132
132
|
Object.defineProperty(exports, "SetupNotifications", { enumerable: true, get: function () { return __importDefault(SetupNotifications_1).default; } });
|
|
133
|
+
var QnWebhookAddressManager_1 = require("./services/quicknode-notifications/QnWebhookAddressManager");
|
|
134
|
+
Object.defineProperty(exports, "QnWebhookAddressManager", { enumerable: true, get: function () { return __importDefault(QnWebhookAddressManager_1).default; } });
|
|
133
135
|
// Types nested under services/types
|
|
134
136
|
__exportStar(require("./contracts/contract-events/types/events"), exports);
|
|
135
137
|
__exportStar(require("./contracts/types/escrow"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlchemyService.d.ts","sourceRoot":"","sources":["../../src/services/AlchemyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EACH,yBAAyB,EAEzB,yBAAyB,EACzB,oBAAoB,EAEpB,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAI9B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACd,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AlchemyService.d.ts","sourceRoot":"","sources":["../../src/services/AlchemyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EACH,yBAAyB,EAEzB,yBAAyB,EACzB,oBAAoB,EAEpB,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAI9B,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,WAAW,EACd,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAc/C,UAAU,kBAAkB;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAOD,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,cAAM,cAAc;IAChB,OAAc,QAAQ,EAAE,cAAc,CAAC;IACvC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAuC;gBAEhD,MAAM,EAAE,OAAO;IAO3B,OAAO,CAAC,YAAY,CAGlB;WAGY,WAAW,CAAC,MAAM,EAAE,OAAO;IAOlC,gBAAgB,GAAU,KAAK,yBAAyB,KAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CASvF;IAEM,6BAA6B,GAAU,KAAK,yBAAyB,EAAE,SAAS,6BAA6B,KAAG,OAAO,CAAC,8BAA8B,CAAC,CAO7J;IAEM,iCAAiC,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,kBAAkB,MAAM,EAAE,EAAE,qBAAqB,MAAM,EAAE;;;;OA+C/K;IAIM,wBAAwB,GAAU,cAAc,yBAAyB,EAAE,kBAAkB,MAAM,EAAE,EAAE,qBAAqB,MAAM,EAAE,sBAmC1I;IAGM,aAAa,GAAU,KAAK,yBAAyB,EAAE,SAAS,OAAO,EAAE,cAAc,WAAW,EAAE,mCAqB1G;IAEY,mBAAmB,CAAC,YAAY,EAAE,yBAAyB;;;;;;;;;IAsBjE,cAAc,GAAU,cAAc,yBAAyB,EAAE,SAAS,oBAAoB,KAAG,OAAO,CAAC,WAAW,CAAC,CAc3H;IAEM,iBAAiB,GAAU,cAAc,yBAAyB,EAAE,SAAS,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAAC,CAK7H;IAEM,oBAAoB,GAAU,cAAc,yBAAyB,EAAE,SAAS,yBAAyB,KAAG,OAAO,CAAC,OAAO,CAAC,CAIlI;IACM,qBAAqB,GAAU,cAAc,yBAAyB,EAAE,SAAS,0BAA0B,KAAG,OAAO,CAAC,WAAW,CAAC,CAKxI;IACM,cAAc,GAAU,cAAc,yBAAyB,EAAE,SAAS,oBAAoB,KAAG,OAAO,CAAC,OAAO,CAAC,CAKvH;IACD,OAAO,CAAC,IAAI,CA+CX;CACJ;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -16,8 +16,10 @@ const alchemy_1 = require("./utils/alchemy");
|
|
|
16
16
|
const AlchemyErrors_1 = __importDefault(require("../errors/AlchemyErrors"));
|
|
17
17
|
const ChainManager_1 = __importDefault(require("./ChainManager"));
|
|
18
18
|
const Logger_1 = require("../utils/Logger");
|
|
19
|
+
const AsyncTTLCache_1 = __importDefault(require("../utils/AsyncTTLCache"));
|
|
19
20
|
class AlchemyService {
|
|
20
21
|
constructor(config) {
|
|
22
|
+
this.webhook_cache = AsyncTTLCache_1.default.create(5 * 60 * 1000); // 5 minutes
|
|
21
23
|
this.access_token = (subscription) => {
|
|
22
24
|
if (subscription === 'prod')
|
|
23
25
|
return this.config.config.alchemyAccessToken;
|
|
@@ -25,8 +27,10 @@ class AlchemyService {
|
|
|
25
27
|
return this.config.config.alchemyAccessTokenDev;
|
|
26
28
|
};
|
|
27
29
|
this.get_all_webhooks = (env) => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
return this.webhook_cache.get_value(`webhooks_${env}`, env, (e) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const res = yield this.call(e, 'team-webhooks', "GET");
|
|
32
|
+
return res.data;
|
|
33
|
+
}));
|
|
30
34
|
});
|
|
31
35
|
this.get_all_addresses_for_webhook = (env, payload) => __awaiter(this, void 0, void 0, function* () {
|
|
32
36
|
if (!payload.webhook_id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletManager.d.ts","sourceRoot":"","sources":["../../src/services/WalletManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoC,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAe,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAe,OAAO,EAAgB,cAAc,EAAc,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAO5D,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAK1C,cAAM,aAAc,SAAQ,UAAU;IAClC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAgB;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,8BAA8B,EAAE,MAAM,CAAC;IACvC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAS;gBACX,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAelD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAOlD,SAAS,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAqB7F;IAEM,2BAA2B,GAAI,YAAY,cAAc,8CAoC/D;IAGM,gBAAgB,GAAU,SAAS,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,iBAAiB,eAAe,qBAiBrG;IAED,OAAO,CAAC,2BAA2B;IAa5B,YAAY,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CA2BzF;IAEY,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;IAsBlE,gBAAgB,CAAC,MAAM,EAAE,OAAO;;;;;;;IAoBhC,YAAY,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc;;;OAGtE;IAGM,WAAW,GAAU,cAAc,yBAAyB,EAAE,QAAQ,MAAM,EAAE,YAAY,cAAc,EAAE,iBAAiB,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAsC1J;IAEM,iBAAiB,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,YAAY,OAAO,EAAE,YAAY,OAAO,
|
|
1
|
+
{"version":3,"file":"WalletManager.d.ts","sourceRoot":"","sources":["../../src/services/WalletManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoC,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAe,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAe,OAAO,EAAgB,cAAc,EAAc,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAO5D,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAK1C,cAAM,aAAc,SAAQ,UAAU;IAClC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAgB;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,8BAA8B,EAAE,MAAM,CAAC;IACvC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAS;gBACX,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAelD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAOlD,SAAS,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAqB7F;IAEM,2BAA2B,GAAI,YAAY,cAAc,8CAoC/D;IAGM,gBAAgB,GAAU,SAAS,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,iBAAiB,eAAe,qBAiBrG;IAED,OAAO,CAAC,2BAA2B;IAa5B,YAAY,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CA2BzF;IAEY,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;IAsBlE,gBAAgB,CAAC,MAAM,EAAE,OAAO;;;;;;;IAoBhC,YAAY,GAAU,QAAQ,MAAM,EAAE,YAAY,cAAc;;;OAGtE;IAGM,WAAW,GAAU,cAAc,yBAAyB,EAAE,QAAQ,MAAM,EAAE,YAAY,cAAc,EAAE,iBAAiB,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAsC1J;IAEM,iBAAiB,GAAU,cAAc,yBAAyB,EAAE,YAAY,cAAc,EAAE,YAAY,OAAO,EAAE,YAAY,OAAO,sBA+B9I;IAIM,YAAY,GAAI,aAAa,MAAM,EAAE,YAAY,MAAM,EAAE,YAAY,cAAc,EAAE,YAAY,MAAM,eA4E7G;CAIJ;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -64,6 +64,7 @@ const constants_1 = require("../constants");
|
|
|
64
64
|
const tronweb_1 = require("tronweb");
|
|
65
65
|
const errors_1 = __importDefault(require("../errors/errors"));
|
|
66
66
|
const Logger_1 = require("../utils/Logger");
|
|
67
|
+
const QnWebhookAddressManager_1 = __importDefault(require("./quicknode-notifications/QnWebhookAddressManager"));
|
|
67
68
|
class WalletManager extends errors_1.default {
|
|
68
69
|
constructor(config, dbPool) {
|
|
69
70
|
super();
|
|
@@ -207,16 +208,23 @@ class WalletManager extends errors_1.default {
|
|
|
207
208
|
return updatedWallet;
|
|
208
209
|
});
|
|
209
210
|
this.handleRenewWallet = (subscription, blockchain, old_wallet, new_wallet) => __awaiter(this, void 0, void 0, function* () {
|
|
210
|
-
const wallet_manager = WalletManager.getInstance(this.config, this.dbPool);
|
|
211
211
|
const alchemy_service = AlchemyService_1.default.getInstance(this.config);
|
|
212
|
+
const qn_service = QnWebhookAddressManager_1.default.getInstance(this.config);
|
|
212
213
|
// Dispatch insert sweep job handler
|
|
213
214
|
const sweep_job_service = new SweepJobService_1.default(this.dbPool, this.config);
|
|
214
215
|
yield sweep_job_service.dispatchAddSweepJobWithBalanceCheck(old_wallet.id, old_wallet.blockchain, old_wallet.userId, old_wallet.address, old_wallet.parentIndex, old_wallet.childIndex, true // full sweep for expired wallet
|
|
215
216
|
);
|
|
216
|
-
// Add new address and remove expired address
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
217
|
+
// Add new address and remove expired address (quicknode and alchemy webhooks)
|
|
218
|
+
const promises = yield Promise.allSettled([
|
|
219
|
+
alchemy_service.add_remove_addresses_all_webhooks(subscription, blockchain, [new_wallet.address], [old_wallet.address]),
|
|
220
|
+
qn_service.add_address(blockchain, new_wallet.address),
|
|
221
|
+
qn_service.remove_address(blockchain, old_wallet.address),
|
|
222
|
+
]);
|
|
223
|
+
const failed = promises
|
|
224
|
+
.filter(r => r.status === 'rejected')
|
|
225
|
+
.map(r => r.status);
|
|
226
|
+
if (failed.length > 0) {
|
|
227
|
+
throw new Error(`Error renewing wallet. ${failed.length} failed`);
|
|
220
228
|
}
|
|
221
229
|
return new_wallet;
|
|
222
230
|
});
|
|
@@ -51,7 +51,7 @@ class QnNotificationsApi extends errors_1.default {
|
|
|
51
51
|
constructor(config) {
|
|
52
52
|
super();
|
|
53
53
|
this.base_url = "https://api.quicknode.com/webhooks/rest/v1";
|
|
54
|
-
this.rlc = { maxConcurrent:
|
|
54
|
+
this.rlc = { maxConcurrent: 1, minDelayMs: 300 };
|
|
55
55
|
this.api_key = config.config.quicknodeApiKey;
|
|
56
56
|
if (!this.api_key)
|
|
57
57
|
throw new Error(`quicknode api key is required`);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BlockchainType } from "../../interfaces";
|
|
2
|
+
import { IConfig } from "../../interfaces/config";
|
|
3
|
+
declare class QnWebhookAddressManager {
|
|
4
|
+
private static instance;
|
|
5
|
+
private api;
|
|
6
|
+
private config;
|
|
7
|
+
private cache;
|
|
8
|
+
private constructor();
|
|
9
|
+
static getInstance(config: IConfig): QnWebhookAddressManager;
|
|
10
|
+
private get_notif_configs;
|
|
11
|
+
private is_stale;
|
|
12
|
+
private load;
|
|
13
|
+
private ensure_loaded;
|
|
14
|
+
add_address(blockchain: BlockchainType, address: string): Promise<boolean>;
|
|
15
|
+
remove_address(blockchain: BlockchainType, address: string): Promise<boolean>;
|
|
16
|
+
}
|
|
17
|
+
export default QnWebhookAddressManager;
|
|
18
|
+
//# sourceMappingURL=QnWebhookAddressManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QnWebhookAddressManager.d.ts","sourceRoot":"","sources":["../../../src/services/quicknode-notifications/QnWebhookAddressManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAoBlD,cAAM,uBAAuB;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IACjD,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,KAAK,CAAmD;IAEhE,OAAO;IAKP,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,uBAAuB;IAO5D,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,QAAQ;YAMF,IAAI;YAsCJ,aAAa;IAOd,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB1E,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAiB7F;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const ChainManager_1 = __importDefault(require("../ChainManager"));
|
|
16
|
+
const QnNotificationsApi_1 = __importDefault(require("./QnNotificationsApi"));
|
|
17
|
+
const CACHE_TTL_MS = 10 * 60 * 1000; // 10 minutes
|
|
18
|
+
class QnWebhookAddressManager {
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.cache = new Map();
|
|
21
|
+
this.config = config;
|
|
22
|
+
this.api = new QnNotificationsApi_1.default(config);
|
|
23
|
+
}
|
|
24
|
+
static getInstance(config) {
|
|
25
|
+
if (!this.instance) {
|
|
26
|
+
this.instance = new QnWebhookAddressManager(config);
|
|
27
|
+
}
|
|
28
|
+
return this.instance;
|
|
29
|
+
}
|
|
30
|
+
get_notif_configs(blockchain) {
|
|
31
|
+
const chain_manager = ChainManager_1.default.getInstance(this.config);
|
|
32
|
+
if (!chain_manager.contractsMap)
|
|
33
|
+
return [];
|
|
34
|
+
return Object.entries(chain_manager.contractsMap)
|
|
35
|
+
.filter(([_, cfg]) => {
|
|
36
|
+
var _a;
|
|
37
|
+
return cfg.blockchainType === blockchain &&
|
|
38
|
+
((_a = cfg.quicknodeNotificationConfig) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
39
|
+
})
|
|
40
|
+
.flatMap(([_, cfg]) => cfg.quicknodeNotificationConfig.map(n => (Object.assign(Object.assign({}, n), { blockchain: cfg.blockchainType }))))
|
|
41
|
+
.filter((n, i, arr) => arr.findIndex(x => x.name === n.name) === i);
|
|
42
|
+
}
|
|
43
|
+
is_stale(blockchain) {
|
|
44
|
+
const cached = this.cache.get(blockchain);
|
|
45
|
+
if (!cached)
|
|
46
|
+
return true;
|
|
47
|
+
return Date.now() - cached.loaded_at > CACHE_TTL_MS;
|
|
48
|
+
}
|
|
49
|
+
load(blockchain) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
var _a;
|
|
52
|
+
const notif_configs = this.get_notif_configs(blockchain);
|
|
53
|
+
if (notif_configs.length === 0)
|
|
54
|
+
return;
|
|
55
|
+
let all_webhooks = [];
|
|
56
|
+
try {
|
|
57
|
+
const res = yield this.api.get_all_webhooks();
|
|
58
|
+
all_webhooks = res.data || [];
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error(`QnWebhookAddressManager: Failed to fetch webhooks for blockchain=${blockchain}`, error);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const entries = [];
|
|
65
|
+
for (const notif_config of notif_configs) {
|
|
66
|
+
const existing = all_webhooks.find(w => {
|
|
67
|
+
var _a, _b;
|
|
68
|
+
return ((_a = w.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === notif_config.name.toLowerCase() &&
|
|
69
|
+
((_b = w.network) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === notif_config.network.toLowerCase();
|
|
70
|
+
});
|
|
71
|
+
if (!existing) {
|
|
72
|
+
console.warn(`QnWebhookAddressManager: No webhook found for config=${notif_config.name} network=${notif_config.network}`);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const arg_key = notif_config.template === 'solanaWalletFilter' ? 'accounts' : 'wallets';
|
|
76
|
+
const addresses = ((_a = existing.templateArgs) === null || _a === void 0 ? void 0 : _a[arg_key]) || [];
|
|
77
|
+
entries.push({
|
|
78
|
+
webhook_id: existing.id,
|
|
79
|
+
template: notif_config.template,
|
|
80
|
+
network: notif_config.network,
|
|
81
|
+
address_set: new Set(addresses),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
this.cache.set(blockchain, { entries, loaded_at: Date.now() });
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
ensure_loaded(blockchain) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
var _a;
|
|
90
|
+
if (this.is_stale(blockchain)) {
|
|
91
|
+
yield this.load(blockchain);
|
|
92
|
+
}
|
|
93
|
+
return ((_a = this.cache.get(blockchain)) === null || _a === void 0 ? void 0 : _a.entries) || [];
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
add_address(blockchain, address) {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
const entries = yield this.ensure_loaded(blockchain);
|
|
99
|
+
for (const entry of entries) {
|
|
100
|
+
if (entry.address_set.has(address))
|
|
101
|
+
continue;
|
|
102
|
+
entry.address_set.add(address);
|
|
103
|
+
try {
|
|
104
|
+
yield this.api.update_webhook_addresses(entry.webhook_id, entry.template, Array.from(entry.address_set));
|
|
105
|
+
console.log(`QnWebhookAddressManager: Added ${address} to ${entry.network} webhook`);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
entry.address_set.delete(address);
|
|
109
|
+
console.error(`QnWebhookAddressManager: Failed to add ${address} to ${entry.network}`, error);
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
remove_address(blockchain, address) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
const entries = yield this.ensure_loaded(blockchain);
|
|
119
|
+
for (const entry of entries) {
|
|
120
|
+
if (!entry.address_set.has(address))
|
|
121
|
+
continue;
|
|
122
|
+
entry.address_set.delete(address);
|
|
123
|
+
try {
|
|
124
|
+
yield this.api.update_webhook_addresses(entry.webhook_id, entry.template, Array.from(entry.address_set));
|
|
125
|
+
console.log(`QnWebhookAddressManager: Removed ${address} from ${entry.network} webhook`);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
entry.address_set.add(address);
|
|
129
|
+
console.error(`QnWebhookAddressManager: Failed to remove ${address} from ${entry.network}`, error);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return true;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.default = QnWebhookAddressManager;
|
|
@@ -5,6 +5,7 @@ declare class AsyncTTLCache {
|
|
|
5
5
|
private cache;
|
|
6
6
|
private constructor();
|
|
7
7
|
static getInstance(): AsyncTTLCache;
|
|
8
|
+
static create(stale_time_in_ms: number): AsyncTTLCache;
|
|
8
9
|
private resolve_inflight;
|
|
9
10
|
get_value<K, V>(key: string, data: K, fetch_task: (data: K) => Promise<V>): Promise<any>;
|
|
10
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncTTLCache.d.ts","sourceRoot":"","sources":["../../src/utils/AsyncTTLCache.ts"],"names":[],"mappings":"AAOA,cAAM,aAAa;IACf,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAwC;IAEjD,aAAa,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAmB;IAEhC,OAAO;IAKP,MAAM,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"AsyncTTLCache.d.ts","sourceRoot":"","sources":["../../src/utils/AsyncTTLCache.ts"],"names":[],"mappings":"AAOA,cAAM,aAAa;IACf,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAwC;IAEjD,aAAa,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAmB;IAEhC,OAAO;IAKP,MAAM,CAAC,WAAW;IAQlB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,GAAG,aAAa;YAQxC,gBAAgB;IAUjB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;CAiCzF;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -22,6 +22,9 @@ class AsyncTTLCache {
|
|
|
22
22
|
}
|
|
23
23
|
return this.instance;
|
|
24
24
|
}
|
|
25
|
+
static create(stale_time_in_ms) {
|
|
26
|
+
return new AsyncTTLCache(stale_time_in_ms);
|
|
27
|
+
}
|
|
25
28
|
// Handle error from external price provider (fetch task)
|
|
26
29
|
// Returns stale price on error
|
|
27
30
|
// Throws error if no stale price in memory and provider threw an exception
|