@polygonlabs/servercore 1.0.0-dev.29 → 1.0.0-dev.30
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.
@@ -40,9 +40,9 @@ class EventConsumer extends AbstractEventConsumer {
|
|
40
40
|
toBlock: end
|
41
41
|
};
|
42
42
|
if (this.config.events.length > 1) {
|
43
|
-
getLogsConfig.event = this.config.events[0];
|
44
|
-
} else {
|
45
43
|
getLogsConfig.events = this.config.events;
|
44
|
+
} else {
|
45
|
+
getLogsConfig.event = this.config.events[0];
|
46
46
|
}
|
47
47
|
const logs = await this.client?.getLogs(getLogsConfig);
|
48
48
|
Logger.debug({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/consumers/event_consumer.ts"],"sourcesContent":["import { Logger } from \"../logger\";\nimport { createPublicClient, http, type PublicClient, type WatchEventReturnType } from \"viem\";\nimport { ConsumerError, ExternalDependencyError } from \"../errors\";\nimport type { IEventConsumerConfig, IObserver } from \"../types\";\nimport { AbstractEventConsumer } from \"./abstract_event_consumer\";\nimport { errorCodes } from \"../constants\";\n\nexport class EventConsumer<T, U> extends AbstractEventConsumer {\n protected client: PublicClient | null = null;\n protected observer: IObserver<T, ConsumerError, U> | null = null;\n public isBackfillingInProcess: boolean = false;\n protected unWatchFunction: WatchEventReturnType | undefined;\n\n constructor(private config: IEventConsumerConfig) {\n super();\n this.client = createPublicClient({\n chain: {\n id: config.chainId,\n name: \"custom\",\n rpcUrls: { default: { http: [config.rpcUrl] } },\n nativeCurrency: config.nativeCurrency,\n },\n transport: http(config.rpcUrl),\n });\n }\n\n private async _backfillEvents(\n fromBlock: bigint,\n toBlock: bigint,\n step: bigint\n ): Promise<void> {\n Logger.info({\n location: \"event_consumer\",\n functon: \"_backfillEvents\",\n status: `[Backfill] Starting backfill from block ${fromBlock.toString()} to ${toBlock.toString()}`,\n });\n\n for (let start = fromBlock; start <= toBlock; start += step) {\n const end =\n start + step - 1n > toBlock ? toBlock : start + step - 1n;\n Logger.debug({\n location: \"event_consumer\",\n functon: \"_backfillEvents\",\n status: `[Backfill] Fetching logs from block ${start.toString()} to ${end.toString()}`,\n });\n const getLogsConfig: any = {\n address: this.config.contractAddress,\n fromBlock: start,\n toBlock: end,\n };\n if (this.config.events.length > 1) {\n getLogsConfig.
|
1
|
+
{"version":3,"sources":["../../src/consumers/event_consumer.ts"],"sourcesContent":["import { Logger } from \"../logger\";\nimport { createPublicClient, http, type PublicClient, type WatchEventReturnType } from \"viem\";\nimport { ConsumerError, ExternalDependencyError } from \"../errors\";\nimport type { IEventConsumerConfig, IObserver } from \"../types\";\nimport { AbstractEventConsumer } from \"./abstract_event_consumer\";\nimport { errorCodes } from \"../constants\";\n\nexport class EventConsumer<T, U> extends AbstractEventConsumer {\n protected client: PublicClient | null = null;\n protected observer: IObserver<T, ConsumerError, U> | null = null;\n public isBackfillingInProcess: boolean = false;\n protected unWatchFunction: WatchEventReturnType | undefined;\n\n constructor(private config: IEventConsumerConfig) {\n super();\n this.client = createPublicClient({\n chain: {\n id: config.chainId,\n name: \"custom\",\n rpcUrls: { default: { http: [config.rpcUrl] } },\n nativeCurrency: config.nativeCurrency,\n },\n transport: http(config.rpcUrl),\n });\n }\n\n private async _backfillEvents(\n fromBlock: bigint,\n toBlock: bigint,\n step: bigint\n ): Promise<void> {\n Logger.info({\n location: \"event_consumer\",\n functon: \"_backfillEvents\",\n status: `[Backfill] Starting backfill from block ${fromBlock.toString()} to ${toBlock.toString()}`,\n });\n\n for (let start = fromBlock; start <= toBlock; start += step) {\n const end =\n start + step - 1n > toBlock ? toBlock : start + step - 1n;\n Logger.debug({\n location: \"event_consumer\",\n functon: \"_backfillEvents\",\n status: `[Backfill] Fetching logs from block ${start.toString()} to ${end.toString()}`,\n });\n const getLogsConfig: any = {\n address: this.config.contractAddress,\n fromBlock: start,\n toBlock: end,\n };\n if (this.config.events.length > 1) {\n getLogsConfig.events = this.config.events;\n } else {\n getLogsConfig.event = this.config.events[0];\n }\n const logs = await this.client?.getLogs(getLogsConfig);\n Logger.debug({\n location: \"event_consumer\",\n functon: \"_backfillEvents\",\n status: `[Backfill] ${logs?.length} logs from block ${start.toString()} to ${end.toString()}`,\n });\n await this.observer?.next(logs as T);\n }\n }\n\n public async start(\n observer: IObserver<T, ConsumerError, U>\n ): Promise<void> {\n try {\n this.isBackfillingInProcess = true\n this.observer = observer;\n const latestBlock: bigint =\n (await this.client?.getBlockNumber()) ?? BigInt(0);\n Logger.debug({\n location: \"event_consumer\",\n functon: \"start\",\n data: {\n latestBlock: latestBlock.toString(),\n startBlock: this.config.startBlock.toString(),\n pollBatchSize: this.config.pollBatchSize.toString(),\n },\n });\n if (latestBlock - this.config.startBlock > BigInt(0)) {\n await this._backfillEvents(\n this.config.startBlock,\n latestBlock,\n this.config.pollBatchSize\n );\n }\n this.isBackfillingInProcess = false\n\n Logger.debug({\n location: \"event_consumer\",\n functon: \"start\",\n status: `Starting event subscription`,\n });\n\n this.unWatchFunction = this.client?.watchEvent({\n address: this.config.contractAddress,\n events: this.config.events,\n fromBlock: latestBlock,\n onLogs: (logs) => {\n const transformedLogs = logs as T;\n this.observer?.next(transformedLogs);\n },\n onError: (error) => {\n this.onDisconnect();\n this.onFatalError(\n new ConsumerError(error.name, {\n name: \"CONSUMER_ERROR\",\n code: 1001,\n isFatal: true,\n origin: \"EventConsumer\",\n context: { eventName: this.config.events },\n })\n );\n },\n });\n\n Logger.debug({\n location: \"event_consumer\",\n functon: \"start\",\n status: `Subscribed to event`,\n });\n } catch (error) {\n this.onDisconnect();\n this.onFatalError(\n new ExternalDependencyError(\n this.config.rpcUrl,\n \"Failed to start the event consumer\",\n {\n externalCode:\n errorCodes.external\n .UNKNOWN_EXTERNAL_DEPENDENCY_ERROR,\n rawError: error as Error,\n origin: \"EventConsumer\",\n context: { eventName: this.config.events },\n }\n )\n );\n }\n }\n\n /**\n * Private method which updates the connection status of consumer to disconnected, and removes all listeners.\n *\n * @returns {void}\n */\n public onDisconnect(): void {\n this.removeAllListeners();\n if (this.unWatchFunction) {\n this.unWatchFunction();\n }\n this.observer?.closed();\n }\n}\n"],"mappings":"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","names":[]}
|