UNPKG

@atomiqlabs/chain-starknet

Version:

Starknet specific base implementation

53 lines (52 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StarknetChainEvents = void 0; const StarknetChainEventsBrowser_1 = require("./StarknetChainEventsBrowser"); //@ts-ignore const fs = require("fs/promises"); const BLOCKHEIGHT_FILENAME = "/strk-blockheight.txt"; class StarknetChainEvents extends StarknetChainEventsBrowser_1.StarknetChainEventsBrowser { constructor(directory, chainInterface, starknetSwapContract, starknetSpvVaultContract, pollIntervalSeconds) { super(chainInterface, starknetSwapContract, starknetSpvVaultContract, pollIntervalSeconds); this.directory = directory; } /** * Retrieves last signature & slot from filesystem * * @private */ async getLastEventData() { try { const txt = (await fs.readFile(this.directory + BLOCKHEIGHT_FILENAME)).toString(); const arr = txt.split(";"); if (arr.length < 2) return { blockNumber: parseInt(arr[0]), txHashes: null }; return { blockNumber: parseInt(arr[0]), txHashes: arr.slice(1) }; } catch (e) { return { blockNumber: null, txHashes: null }; } } /** * Saves last signature & slot to the filesystem * * @private */ saveLastEventData(blockNumber, txHashes) { return fs.writeFile(this.directory + BLOCKHEIGHT_FILENAME, blockNumber.toString() + ";" + txHashes.join(";")); } async init() { const { blockNumber, txHashes } = await this.getLastEventData(); await this.setupPoll(blockNumber, txHashes, (blockNumber, txHashes) => this.saveLastEventData(blockNumber, txHashes)); } } exports.StarknetChainEvents = StarknetChainEvents;