@xyo-network/evm-events-witness 2.99.5 → 2.99.6

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.
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
6
  var __export = (target, all) => {
8
7
  for (var name in all)
9
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -43,13 +42,7 @@ var import_payload_model = require("@xyo-network/payload-model");
43
42
  var import_witness_evm_abstract = require("@xyo-network/witness-evm-abstract");
44
43
  var import_ethers = require("ethers");
45
44
  var EvmEventsWitness = class extends import_witness_evm_abstract.AbstractEvmWitness {
46
- static {
47
- __name(this, "EvmEventsWitness");
48
- }
49
- static configSchemas = [
50
- ...super.configSchemas,
51
- EvmEventsWitnessConfigSchema
52
- ];
45
+ static configSchemas = [...super.configSchemas, EvmEventsWitnessConfigSchema];
53
46
  static defaultConfigSchema = EvmEventsWitnessConfigSchema;
54
47
  get abi() {
55
48
  return (0, import_assert.assertEx)(this.config.abi, () => "Missing abi");
@@ -58,38 +51,43 @@ var EvmEventsWitness = class extends import_witness_evm_abstract.AbstractEvmWitn
58
51
  await this.started("throw");
59
52
  await this.getProviders();
60
53
  try {
61
- const observations = (await Promise.all(inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
62
- const validatedAddress = (0, import_assert.assertEx)(address ?? this.config.address, () => "Missing address");
63
- const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, () => "Missing eventName");
64
- const provider = await this.getProvider(true, true);
65
- const network = await provider.getNetwork();
66
- const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
67
- const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
68
- const abiEvent = (0, import_assert.assertEx)(abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName), () => "Could not find event");
69
- const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
70
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
71
- const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
72
- const observation = allRawEvents.map((rawLog) => {
73
- const rawEvent = rawLog;
74
- if (rawEvent.args) {
75
- const argsObject = {};
76
- abiEvent.inputs.map((input, index) => {
77
- const value = rawEvent.args[index];
78
- argsObject[input.name] = typeof value === "bigint" ? (0, import_hex.hexFromBigInt)(value) : value;
79
- });
80
- const eventResult = {
81
- address: rawEvent.address,
82
- args: argsObject,
83
- block: rawEvent.blockNumber,
84
- chainId: Number(network.chainId),
85
- eventName: validatedEventName,
86
- schema: EvmEventSchema
87
- };
88
- return eventResult;
89
- }
90
- }).filter(import_exists.exists);
91
- return observation;
92
- }))).flat();
54
+ const observations = (await Promise.all(
55
+ inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
56
+ const validatedAddress = (0, import_assert.assertEx)(address ?? this.config.address, () => "Missing address");
57
+ const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, () => "Missing eventName");
58
+ const provider = await this.getProvider(true, true);
59
+ const network = await provider.getNetwork();
60
+ const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
61
+ const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
62
+ const abiEvent = (0, import_assert.assertEx)(
63
+ abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
64
+ () => "Could not find event"
65
+ );
66
+ const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
67
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
68
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
69
+ const observation = allRawEvents.map((rawLog) => {
70
+ const rawEvent = rawLog;
71
+ if (rawEvent.args) {
72
+ const argsObject = {};
73
+ abiEvent.inputs.map((input, index) => {
74
+ const value = rawEvent.args[index];
75
+ argsObject[input.name] = typeof value === "bigint" ? (0, import_hex.hexFromBigInt)(value) : value;
76
+ });
77
+ const eventResult = {
78
+ address: rawEvent.address,
79
+ args: argsObject,
80
+ block: rawEvent.blockNumber,
81
+ chainId: Number(network.chainId),
82
+ eventName: validatedEventName,
83
+ schema: EvmEventSchema
84
+ };
85
+ return eventResult;
86
+ }
87
+ }).filter(import_exists.exists);
88
+ return observation;
89
+ })
90
+ )).flat();
93
91
  return observations;
94
92
  } catch (ex) {
95
93
  const error = ex;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model.ts'\nexport * from './Payload.ts'\nexport * from './Witness.ts'\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;ACKO,IAAMA,+BAA+B;;;ACHrC,IAAMC,kBAAkB;AAaxB,IAAMC,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAA8C;AAC9C,kCAAmC;AACnC,oBAAmC;AAK5B,IAAMC,mBAAN,cAAgGC,+CAAAA;EAVvG,OAUuGA;;;EAKrG,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EAEvD,IAAIE,MAAM;AACR,eAAOC,wBAAS,KAAKC,OAAOF,KAAK,MAAM,aAAA;EACzC;EAEA,MAAyBG,eAAeC,aAA0B,CAAA,GAAyB;AACzF,UAAM,KAAKC,QAAQ,OAAA;AAEnB,UAAM,KAAKC,aAAY;AACvB,QAAI;AACF,YAAMC,gBACJ,MAAMC,QAAQC,IACZL,WACGM,WAAOC,4CAAiCC,eAAAA,CAAAA,EACxCC,IAAI,OAAO,EAAEC,WAAWC,SAASC,WAAWC,kBAAkBC,SAASC,eAAc,MAAE;AACtF,cAAMC,uBAAmBnB,wBAASc,WAAW,KAAKb,OAAOa,SAAS,MAAM,iBAAA;AACxE,cAAMM,yBAAqBpB,wBAASa,aAAa,KAAKZ,OAAOY,WAAW,MAAM,mBAAA;AAE9E,cAAMQ,WAAW,MAAM,KAAKC,YAAY,MAAM,IAAA;AAC9C,cAAMC,UAAU,MAAMF,SAASG,WAAU;AAEzC,cAAMC,WAAW,IAAIC,uBAASP,kBAAkB,KAAKpB,KAAKsB,QAAAA,EAAUM,OAAOR,gBAAAA;AAE3E,cAAMS,eAAW5B,wBAAS6B,MAAMC,QAAQ,KAAK/B,GAAG,IAAI,KAAKA,MAAMgC,QAAW,MAAM,qBAAA;AAEhF,cAAMC,eAAWhC,wBACf4B,SAASK,KAAKC,CAAAA,UAASA,MAAMC,SAAS,WAAWD,MAAME,SAAShB,kBAAAA,GAChE,MAAM,sBAAA;AAGR,cAAMH,UAAU,KAAKhB,OAAOgB,WAAWC,kBAAmB,MAAMG,SAASgB,eAAc;AACvF,cAAMtB,YAAY,KAAKd,OAAOc,aAAaC,oBAAoB;AAE/D,cAAMsB,eAAe,MAAMb,SAASc,YAAYd,SAASe,QAAQpB,kBAAAA,GAAqBL,WAAWE,OAAAA;AAGjG,cAAMwB,cAAcH,aACjB1B,IAAI,CAAC8B,WAAAA;AACJ,gBAAMC,WAAWD;AACjB,cAAIC,SAASC,MAAM;AACjB,kBAAMC,aAAsC,CAAC;AAE7Cb,qBAASc,OAAOlC,IAAI,CAACmC,OAAyBC,UAAAA;AAC5C,oBAAMC,QAAQN,SAASC,KAAKI,KAAAA;AAC5BH,yBAAWE,MAAMX,IAAI,IAAI,OAAOa,UAAU,eAAWC,0BAAcD,KAAAA,IAASA;YAC9E,CAAA;AAEA,kBAAME,cAAwB;cAC5BrC,SAAS6B,SAAS7B;cAClB8B,MAAMC;cACNO,OAAOT,SAASU;cAChBC,SAASC,OAAOhC,QAAQ+B,OAAO;cAC/BzC,WAAWO;cACXoC,QAAQC;YACV;AACA,mBAAON;UACT;QACF,CAAA,EACC1C,OAAOiD,oBAAAA;AAEV,eAAOjB;MACT,CAAA,CAAA,GAEJkB,KAAI;AACN,aAAOrD;IACT,SAASsD,IAAI;AACX,YAAMC,QAAQD;AACdE,cAAQC,IAAI,UAAU,KAAK9D,OAAOmC,IAAI,MAAMyB,MAAMG,OAAO,EAAE;AAC3D,YAAMH;IACR;EACF;AACF;","names":["EvmEventsWitnessConfigSchema","EvmEventsSchema","EvmEventSchema","EvmEventsWitness","AbstractEvmWitness","configSchemas","EvmEventsWitnessConfigSchema","defaultConfigSchema","abi","assertEx","config","observeHandler","inPayloads","started","getProviders","observations","Promise","all","filter","isPayloadOfSchemaType","EvmEventsSchema","map","eventName","address","fromBlock","payloadFromBlock","toBlock","payloadToBlock","validatedAddress","validatedEventName","provider","getProvider","network","getNetwork","contract","Contract","attach","abiArray","Array","isArray","undefined","abiEvent","find","entry","type","name","getBlockNumber","allRawEvents","queryFilter","filters","observation","rawLog","rawEvent","args","argsObject","inputs","input","index","value","hexFromBigInt","eventResult","block","blockNumber","chainId","Number","schema","EvmEventSchema","exists","flat","ex","error","console","log","message"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model.ts'\nexport * from './Payload.ts'\nexport * from './Witness.ts'\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAA8C;AAC9C,kCAAmC;AACnC,oBAAmC;AAK5B,IAAM,mBAAN,cAAgG,+CAIrG;AAAA,EACA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAEvD,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,EACtD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,WAAO,4CAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,MAAM,iBAAiB;AACzF,gBAAM,yBAAqB,wBAAS,aAAa,KAAK,OAAO,WAAW,MAAM,mBAAmB;AAEjG,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,eAAW,wBAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,MAAM,qBAAqB;AAErG,gBAAM,eAAW;AAAA,YACf,SAAS,KAAK,WAAS,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YAClF,MAAM;AAAA,UACR;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,2BAAW,MAAM,IAAI,IAAI,OAAO,UAAU,eAAW,0BAAc,KAAK,IAAI;AAAA,cAC9E,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,oBAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/model.ts
5
2
  var EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
6
3
 
@@ -16,13 +13,7 @@ import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
16
13
  import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
17
14
  import { Contract } from "ethers";
18
15
  var EvmEventsWitness = class extends AbstractEvmWitness {
19
- static {
20
- __name(this, "EvmEventsWitness");
21
- }
22
- static configSchemas = [
23
- ...super.configSchemas,
24
- EvmEventsWitnessConfigSchema
25
- ];
16
+ static configSchemas = [...super.configSchemas, EvmEventsWitnessConfigSchema];
26
17
  static defaultConfigSchema = EvmEventsWitnessConfigSchema;
27
18
  get abi() {
28
19
  return assertEx(this.config.abi, () => "Missing abi");
@@ -31,38 +22,43 @@ var EvmEventsWitness = class extends AbstractEvmWitness {
31
22
  await this.started("throw");
32
23
  await this.getProviders();
33
24
  try {
34
- const observations = (await Promise.all(inPayloads.filter(isPayloadOfSchemaType(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
35
- const validatedAddress = assertEx(address ?? this.config.address, () => "Missing address");
36
- const validatedEventName = assertEx(eventName ?? this.config.eventName, () => "Missing eventName");
37
- const provider = await this.getProvider(true, true);
38
- const network = await provider.getNetwork();
39
- const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
40
- const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
41
- const abiEvent = assertEx(abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName), () => "Could not find event");
42
- const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
43
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
44
- const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
45
- const observation = allRawEvents.map((rawLog) => {
46
- const rawEvent = rawLog;
47
- if (rawEvent.args) {
48
- const argsObject = {};
49
- abiEvent.inputs.map((input, index) => {
50
- const value = rawEvent.args[index];
51
- argsObject[input.name] = typeof value === "bigint" ? hexFromBigInt(value) : value;
52
- });
53
- const eventResult = {
54
- address: rawEvent.address,
55
- args: argsObject,
56
- block: rawEvent.blockNumber,
57
- chainId: Number(network.chainId),
58
- eventName: validatedEventName,
59
- schema: EvmEventSchema
60
- };
61
- return eventResult;
62
- }
63
- }).filter(exists);
64
- return observation;
65
- }))).flat();
25
+ const observations = (await Promise.all(
26
+ inPayloads.filter(isPayloadOfSchemaType(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
27
+ const validatedAddress = assertEx(address ?? this.config.address, () => "Missing address");
28
+ const validatedEventName = assertEx(eventName ?? this.config.eventName, () => "Missing eventName");
29
+ const provider = await this.getProvider(true, true);
30
+ const network = await provider.getNetwork();
31
+ const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
32
+ const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
33
+ const abiEvent = assertEx(
34
+ abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
35
+ () => "Could not find event"
36
+ );
37
+ const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
38
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
39
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
40
+ const observation = allRawEvents.map((rawLog) => {
41
+ const rawEvent = rawLog;
42
+ if (rawEvent.args) {
43
+ const argsObject = {};
44
+ abiEvent.inputs.map((input, index) => {
45
+ const value = rawEvent.args[index];
46
+ argsObject[input.name] = typeof value === "bigint" ? hexFromBigInt(value) : value;
47
+ });
48
+ const eventResult = {
49
+ address: rawEvent.address,
50
+ args: argsObject,
51
+ block: rawEvent.blockNumber,
52
+ chainId: Number(network.chainId),
53
+ eventName: validatedEventName,
54
+ schema: EvmEventSchema
55
+ };
56
+ return eventResult;
57
+ }
58
+ }).filter(exists);
59
+ return observation;
60
+ })
61
+ )).flat();
66
62
  return observations;
67
63
  } catch (ex) {
68
64
  const error = ex;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;AAKO,IAAMA,+BAA+B;;;ACHrC,IAAMC,kBAAkB;AAaxB,IAAMC,iBAAiB;;;ACf9B,SAASC,gBAAgB;AACzB,SAASC,cAAc;AACvB,SAASC,qBAAqB;AAC9B,SAASC,6BAAqC;AAC9C,SAASC,0BAA0B;AACnC,SAASC,gBAA0B;AAK5B,IAAMC,mBAAN,cAAgGC,mBAAAA;EAVvG,OAUuGA;;;EAKrG,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EAEvD,IAAIE,MAAM;AACR,WAAOC,SAAS,KAAKC,OAAOF,KAAK,MAAM,aAAA;EACzC;EAEA,MAAyBG,eAAeC,aAA0B,CAAA,GAAyB;AACzF,UAAM,KAAKC,QAAQ,OAAA;AAEnB,UAAM,KAAKC,aAAY;AACvB,QAAI;AACF,YAAMC,gBACJ,MAAMC,QAAQC,IACZL,WACGM,OAAOC,sBAAiCC,eAAAA,CAAAA,EACxCC,IAAI,OAAO,EAAEC,WAAWC,SAASC,WAAWC,kBAAkBC,SAASC,eAAc,MAAE;AACtF,cAAMC,mBAAmBnB,SAASc,WAAW,KAAKb,OAAOa,SAAS,MAAM,iBAAA;AACxE,cAAMM,qBAAqBpB,SAASa,aAAa,KAAKZ,OAAOY,WAAW,MAAM,mBAAA;AAE9E,cAAMQ,WAAW,MAAM,KAAKC,YAAY,MAAM,IAAA;AAC9C,cAAMC,UAAU,MAAMF,SAASG,WAAU;AAEzC,cAAMC,WAAW,IAAIC,SAASP,kBAAkB,KAAKpB,KAAKsB,QAAAA,EAAUM,OAAOR,gBAAAA;AAE3E,cAAMS,WAAW5B,SAAS6B,MAAMC,QAAQ,KAAK/B,GAAG,IAAI,KAAKA,MAAMgC,QAAW,MAAM,qBAAA;AAEhF,cAAMC,WAAWhC,SACf4B,SAASK,KAAKC,CAAAA,UAASA,MAAMC,SAAS,WAAWD,MAAME,SAAShB,kBAAAA,GAChE,MAAM,sBAAA;AAGR,cAAMH,UAAU,KAAKhB,OAAOgB,WAAWC,kBAAmB,MAAMG,SAASgB,eAAc;AACvF,cAAMtB,YAAY,KAAKd,OAAOc,aAAaC,oBAAoB;AAE/D,cAAMsB,eAAe,MAAMb,SAASc,YAAYd,SAASe,QAAQpB,kBAAAA,GAAqBL,WAAWE,OAAAA;AAGjG,cAAMwB,cAAcH,aACjB1B,IAAI,CAAC8B,WAAAA;AACJ,gBAAMC,WAAWD;AACjB,cAAIC,SAASC,MAAM;AACjB,kBAAMC,aAAsC,CAAC;AAE7Cb,qBAASc,OAAOlC,IAAI,CAACmC,OAAyBC,UAAAA;AAC5C,oBAAMC,QAAQN,SAASC,KAAKI,KAAAA;AAC5BH,yBAAWE,MAAMX,IAAI,IAAI,OAAOa,UAAU,WAAWC,cAAcD,KAAAA,IAASA;YAC9E,CAAA;AAEA,kBAAME,cAAwB;cAC5BrC,SAAS6B,SAAS7B;cAClB8B,MAAMC;cACNO,OAAOT,SAASU;cAChBC,SAASC,OAAOhC,QAAQ+B,OAAO;cAC/BzC,WAAWO;cACXoC,QAAQC;YACV;AACA,mBAAON;UACT;QACF,CAAA,EACC1C,OAAOiD,MAAAA;AAEV,eAAOjB;MACT,CAAA,CAAA,GAEJkB,KAAI;AACN,aAAOrD;IACT,SAASsD,IAAI;AACX,YAAMC,QAAQD;AACdE,cAAQC,IAAI,UAAU,KAAK9D,OAAOmC,IAAI,MAAMyB,MAAMG,OAAO,EAAE;AAC3D,YAAMH;IACR;EACF;AACF;","names":["EvmEventsWitnessConfigSchema","EvmEventsSchema","EvmEventSchema","assertEx","exists","hexFromBigInt","isPayloadOfSchemaType","AbstractEvmWitness","Contract","EvmEventsWitness","AbstractEvmWitness","configSchemas","EvmEventsWitnessConfigSchema","defaultConfigSchema","abi","assertEx","config","observeHandler","inPayloads","started","getProviders","observations","Promise","all","filter","isPayloadOfSchemaType","EvmEventsSchema","map","eventName","address","fromBlock","payloadFromBlock","toBlock","payloadToBlock","validatedAddress","validatedEventName","provider","getProvider","network","getNetwork","contract","Contract","attach","abiArray","Array","isArray","undefined","abiEvent","find","entry","type","name","getBlockNumber","allRawEvents","queryFilter","filters","observation","rawLog","rawEvent","args","argsObject","inputs","input","index","value","hexFromBigInt","eventResult","block","blockNumber","chainId","Number","schema","EvmEventSchema","exists","flat","ex","error","console","log","message"]}
1
+ {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";AAKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,6BAAqC;AAC9C,SAAS,0BAA0B;AACnC,SAAS,gBAA0B;AAK5B,IAAM,mBAAN,cAAgG,mBAIrG;AAAA,EACA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAEvD,IAAI,MAAM;AACR,WAAO,SAAS,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,EACtD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,OAAO,sBAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,mBAAmB,SAAS,WAAW,KAAK,OAAO,SAAS,MAAM,iBAAiB;AACzF,gBAAM,qBAAqB,SAAS,aAAa,KAAK,OAAO,WAAW,MAAM,mBAAmB;AAEjG,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,SAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,WAAW,SAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,MAAM,qBAAqB;AAErG,gBAAM,WAAW;AAAA,YACf,SAAS,KAAK,WAAS,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YAClF,MAAM;AAAA,UACR;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,2BAAW,MAAM,IAAI,IAAI,OAAO,UAAU,WAAW,cAAc,KAAK,IAAI;AAAA,cAC9E,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,MAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
6
  var __export = (target, all) => {
8
7
  for (var name in all)
9
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -43,13 +42,7 @@ var import_payload_model = require("@xyo-network/payload-model");
43
42
  var import_witness_evm_abstract = require("@xyo-network/witness-evm-abstract");
44
43
  var import_ethers = require("ethers");
45
44
  var EvmEventsWitness = class extends import_witness_evm_abstract.AbstractEvmWitness {
46
- static {
47
- __name(this, "EvmEventsWitness");
48
- }
49
- static configSchemas = [
50
- ...super.configSchemas,
51
- EvmEventsWitnessConfigSchema
52
- ];
45
+ static configSchemas = [...super.configSchemas, EvmEventsWitnessConfigSchema];
53
46
  static defaultConfigSchema = EvmEventsWitnessConfigSchema;
54
47
  get abi() {
55
48
  return (0, import_assert.assertEx)(this.config.abi, () => "Missing abi");
@@ -58,38 +51,43 @@ var EvmEventsWitness = class extends import_witness_evm_abstract.AbstractEvmWitn
58
51
  await this.started("throw");
59
52
  await this.getProviders();
60
53
  try {
61
- const observations = (await Promise.all(inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
62
- const validatedAddress = (0, import_assert.assertEx)(address ?? this.config.address, () => "Missing address");
63
- const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, () => "Missing eventName");
64
- const provider = await this.getProvider(true, true);
65
- const network = await provider.getNetwork();
66
- const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
67
- const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
68
- const abiEvent = (0, import_assert.assertEx)(abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName), () => "Could not find event");
69
- const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
70
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
71
- const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
72
- const observation = allRawEvents.map((rawLog) => {
73
- const rawEvent = rawLog;
74
- if (rawEvent.args) {
75
- const argsObject = {};
76
- abiEvent.inputs.map((input, index) => {
77
- const value = rawEvent.args[index];
78
- argsObject[input.name] = typeof value === "bigint" ? (0, import_hex.hexFromBigInt)(value) : value;
79
- });
80
- const eventResult = {
81
- address: rawEvent.address,
82
- args: argsObject,
83
- block: rawEvent.blockNumber,
84
- chainId: Number(network.chainId),
85
- eventName: validatedEventName,
86
- schema: EvmEventSchema
87
- };
88
- return eventResult;
89
- }
90
- }).filter(import_exists.exists);
91
- return observation;
92
- }))).flat();
54
+ const observations = (await Promise.all(
55
+ inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
56
+ const validatedAddress = (0, import_assert.assertEx)(address ?? this.config.address, () => "Missing address");
57
+ const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, () => "Missing eventName");
58
+ const provider = await this.getProvider(true, true);
59
+ const network = await provider.getNetwork();
60
+ const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
61
+ const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
62
+ const abiEvent = (0, import_assert.assertEx)(
63
+ abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
64
+ () => "Could not find event"
65
+ );
66
+ const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
67
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
68
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
69
+ const observation = allRawEvents.map((rawLog) => {
70
+ const rawEvent = rawLog;
71
+ if (rawEvent.args) {
72
+ const argsObject = {};
73
+ abiEvent.inputs.map((input, index) => {
74
+ const value = rawEvent.args[index];
75
+ argsObject[input.name] = typeof value === "bigint" ? (0, import_hex.hexFromBigInt)(value) : value;
76
+ });
77
+ const eventResult = {
78
+ address: rawEvent.address,
79
+ args: argsObject,
80
+ block: rawEvent.blockNumber,
81
+ chainId: Number(network.chainId),
82
+ eventName: validatedEventName,
83
+ schema: EvmEventSchema
84
+ };
85
+ return eventResult;
86
+ }
87
+ }).filter(import_exists.exists);
88
+ return observation;
89
+ })
90
+ )).flat();
93
91
  return observations;
94
92
  } catch (ex) {
95
93
  const error = ex;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model.ts'\nexport * from './Payload.ts'\nexport * from './Witness.ts'\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;ACKO,IAAMA,+BAA+B;;;ACHrC,IAAMC,kBAAkB;AAaxB,IAAMC,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAA8C;AAC9C,kCAAmC;AACnC,oBAAmC;AAK5B,IAAMC,mBAAN,cAAgGC,+CAAAA;EAVvG,OAUuGA;;;EAKrG,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EAEvD,IAAIE,MAAM;AACR,eAAOC,wBAAS,KAAKC,OAAOF,KAAK,MAAM,aAAA;EACzC;EAEA,MAAyBG,eAAeC,aAA0B,CAAA,GAAyB;AACzF,UAAM,KAAKC,QAAQ,OAAA;AAEnB,UAAM,KAAKC,aAAY;AACvB,QAAI;AACF,YAAMC,gBACJ,MAAMC,QAAQC,IACZL,WACGM,WAAOC,4CAAiCC,eAAAA,CAAAA,EACxCC,IAAI,OAAO,EAAEC,WAAWC,SAASC,WAAWC,kBAAkBC,SAASC,eAAc,MAAE;AACtF,cAAMC,uBAAmBnB,wBAASc,WAAW,KAAKb,OAAOa,SAAS,MAAM,iBAAA;AACxE,cAAMM,yBAAqBpB,wBAASa,aAAa,KAAKZ,OAAOY,WAAW,MAAM,mBAAA;AAE9E,cAAMQ,WAAW,MAAM,KAAKC,YAAY,MAAM,IAAA;AAC9C,cAAMC,UAAU,MAAMF,SAASG,WAAU;AAEzC,cAAMC,WAAW,IAAIC,uBAASP,kBAAkB,KAAKpB,KAAKsB,QAAAA,EAAUM,OAAOR,gBAAAA;AAE3E,cAAMS,eAAW5B,wBAAS6B,MAAMC,QAAQ,KAAK/B,GAAG,IAAI,KAAKA,MAAMgC,QAAW,MAAM,qBAAA;AAEhF,cAAMC,eAAWhC,wBACf4B,SAASK,KAAKC,CAAAA,UAASA,MAAMC,SAAS,WAAWD,MAAME,SAAShB,kBAAAA,GAChE,MAAM,sBAAA;AAGR,cAAMH,UAAU,KAAKhB,OAAOgB,WAAWC,kBAAmB,MAAMG,SAASgB,eAAc;AACvF,cAAMtB,YAAY,KAAKd,OAAOc,aAAaC,oBAAoB;AAE/D,cAAMsB,eAAe,MAAMb,SAASc,YAAYd,SAASe,QAAQpB,kBAAAA,GAAqBL,WAAWE,OAAAA;AAGjG,cAAMwB,cAAcH,aACjB1B,IAAI,CAAC8B,WAAAA;AACJ,gBAAMC,WAAWD;AACjB,cAAIC,SAASC,MAAM;AACjB,kBAAMC,aAAsC,CAAC;AAE7Cb,qBAASc,OAAOlC,IAAI,CAACmC,OAAyBC,UAAAA;AAC5C,oBAAMC,QAAQN,SAASC,KAAKI,KAAAA;AAC5BH,yBAAWE,MAAMX,IAAI,IAAI,OAAOa,UAAU,eAAWC,0BAAcD,KAAAA,IAASA;YAC9E,CAAA;AAEA,kBAAME,cAAwB;cAC5BrC,SAAS6B,SAAS7B;cAClB8B,MAAMC;cACNO,OAAOT,SAASU;cAChBC,SAASC,OAAOhC,QAAQ+B,OAAO;cAC/BzC,WAAWO;cACXoC,QAAQC;YACV;AACA,mBAAON;UACT;QACF,CAAA,EACC1C,OAAOiD,oBAAAA;AAEV,eAAOjB;MACT,CAAA,CAAA,GAEJkB,KAAI;AACN,aAAOrD;IACT,SAASsD,IAAI;AACX,YAAMC,QAAQD;AACdE,cAAQC,IAAI,UAAU,KAAK9D,OAAOmC,IAAI,MAAMyB,MAAMG,OAAO,EAAE;AAC3D,YAAMH;IACR;EACF;AACF;","names":["EvmEventsWitnessConfigSchema","EvmEventsSchema","EvmEventSchema","EvmEventsWitness","AbstractEvmWitness","configSchemas","EvmEventsWitnessConfigSchema","defaultConfigSchema","abi","assertEx","config","observeHandler","inPayloads","started","getProviders","observations","Promise","all","filter","isPayloadOfSchemaType","EvmEventsSchema","map","eventName","address","fromBlock","payloadFromBlock","toBlock","payloadToBlock","validatedAddress","validatedEventName","provider","getProvider","network","getNetwork","contract","Contract","attach","abiArray","Array","isArray","undefined","abiEvent","find","entry","type","name","getBlockNumber","allRawEvents","queryFilter","filters","observation","rawLog","rawEvent","args","argsObject","inputs","input","index","value","hexFromBigInt","eventResult","block","blockNumber","chainId","Number","schema","EvmEventSchema","exists","flat","ex","error","console","log","message"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model.ts'\nexport * from './Payload.ts'\nexport * from './Witness.ts'\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAA8C;AAC9C,kCAAmC;AACnC,oBAAmC;AAK5B,IAAM,mBAAN,cAAgG,+CAIrG;AAAA,EACA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAEvD,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,EACtD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,WAAO,4CAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,MAAM,iBAAiB;AACzF,gBAAM,yBAAqB,wBAAS,aAAa,KAAK,OAAO,WAAW,MAAM,mBAAmB;AAEjG,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,eAAW,wBAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,MAAM,qBAAqB;AAErG,gBAAM,eAAW;AAAA,YACf,SAAS,KAAK,WAAS,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YAClF,MAAM;AAAA,UACR;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,2BAAW,MAAM,IAAI,IAAI,OAAO,UAAU,eAAW,0BAAc,KAAK,IAAI;AAAA,cAC9E,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,oBAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/model.ts
5
2
  var EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
6
3
 
@@ -16,13 +13,7 @@ import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
16
13
  import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
17
14
  import { Contract } from "ethers";
18
15
  var EvmEventsWitness = class extends AbstractEvmWitness {
19
- static {
20
- __name(this, "EvmEventsWitness");
21
- }
22
- static configSchemas = [
23
- ...super.configSchemas,
24
- EvmEventsWitnessConfigSchema
25
- ];
16
+ static configSchemas = [...super.configSchemas, EvmEventsWitnessConfigSchema];
26
17
  static defaultConfigSchema = EvmEventsWitnessConfigSchema;
27
18
  get abi() {
28
19
  return assertEx(this.config.abi, () => "Missing abi");
@@ -31,38 +22,43 @@ var EvmEventsWitness = class extends AbstractEvmWitness {
31
22
  await this.started("throw");
32
23
  await this.getProviders();
33
24
  try {
34
- const observations = (await Promise.all(inPayloads.filter(isPayloadOfSchemaType(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
35
- const validatedAddress = assertEx(address ?? this.config.address, () => "Missing address");
36
- const validatedEventName = assertEx(eventName ?? this.config.eventName, () => "Missing eventName");
37
- const provider = await this.getProvider(true, true);
38
- const network = await provider.getNetwork();
39
- const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
40
- const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
41
- const abiEvent = assertEx(abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName), () => "Could not find event");
42
- const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
43
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
44
- const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
45
- const observation = allRawEvents.map((rawLog) => {
46
- const rawEvent = rawLog;
47
- if (rawEvent.args) {
48
- const argsObject = {};
49
- abiEvent.inputs.map((input, index) => {
50
- const value = rawEvent.args[index];
51
- argsObject[input.name] = typeof value === "bigint" ? hexFromBigInt(value) : value;
52
- });
53
- const eventResult = {
54
- address: rawEvent.address,
55
- args: argsObject,
56
- block: rawEvent.blockNumber,
57
- chainId: Number(network.chainId),
58
- eventName: validatedEventName,
59
- schema: EvmEventSchema
60
- };
61
- return eventResult;
62
- }
63
- }).filter(exists);
64
- return observation;
65
- }))).flat();
25
+ const observations = (await Promise.all(
26
+ inPayloads.filter(isPayloadOfSchemaType(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
27
+ const validatedAddress = assertEx(address ?? this.config.address, () => "Missing address");
28
+ const validatedEventName = assertEx(eventName ?? this.config.eventName, () => "Missing eventName");
29
+ const provider = await this.getProvider(true, true);
30
+ const network = await provider.getNetwork();
31
+ const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
32
+ const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
33
+ const abiEvent = assertEx(
34
+ abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
35
+ () => "Could not find event"
36
+ );
37
+ const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
38
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
39
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
40
+ const observation = allRawEvents.map((rawLog) => {
41
+ const rawEvent = rawLog;
42
+ if (rawEvent.args) {
43
+ const argsObject = {};
44
+ abiEvent.inputs.map((input, index) => {
45
+ const value = rawEvent.args[index];
46
+ argsObject[input.name] = typeof value === "bigint" ? hexFromBigInt(value) : value;
47
+ });
48
+ const eventResult = {
49
+ address: rawEvent.address,
50
+ args: argsObject,
51
+ block: rawEvent.blockNumber,
52
+ chainId: Number(network.chainId),
53
+ eventName: validatedEventName,
54
+ schema: EvmEventSchema
55
+ };
56
+ return eventResult;
57
+ }
58
+ }).filter(exists);
59
+ return observation;
60
+ })
61
+ )).flat();
66
62
  return observations;
67
63
  } catch (ex) {
68
64
  const error = ex;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;AAKO,IAAMA,+BAA+B;;;ACHrC,IAAMC,kBAAkB;AAaxB,IAAMC,iBAAiB;;;ACf9B,SAASC,gBAAgB;AACzB,SAASC,cAAc;AACvB,SAASC,qBAAqB;AAC9B,SAASC,6BAAqC;AAC9C,SAASC,0BAA0B;AACnC,SAASC,gBAA0B;AAK5B,IAAMC,mBAAN,cAAgGC,mBAAAA;EAVvG,OAUuGA;;;EAKrG,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EAEvD,IAAIE,MAAM;AACR,WAAOC,SAAS,KAAKC,OAAOF,KAAK,MAAM,aAAA;EACzC;EAEA,MAAyBG,eAAeC,aAA0B,CAAA,GAAyB;AACzF,UAAM,KAAKC,QAAQ,OAAA;AAEnB,UAAM,KAAKC,aAAY;AACvB,QAAI;AACF,YAAMC,gBACJ,MAAMC,QAAQC,IACZL,WACGM,OAAOC,sBAAiCC,eAAAA,CAAAA,EACxCC,IAAI,OAAO,EAAEC,WAAWC,SAASC,WAAWC,kBAAkBC,SAASC,eAAc,MAAE;AACtF,cAAMC,mBAAmBnB,SAASc,WAAW,KAAKb,OAAOa,SAAS,MAAM,iBAAA;AACxE,cAAMM,qBAAqBpB,SAASa,aAAa,KAAKZ,OAAOY,WAAW,MAAM,mBAAA;AAE9E,cAAMQ,WAAW,MAAM,KAAKC,YAAY,MAAM,IAAA;AAC9C,cAAMC,UAAU,MAAMF,SAASG,WAAU;AAEzC,cAAMC,WAAW,IAAIC,SAASP,kBAAkB,KAAKpB,KAAKsB,QAAAA,EAAUM,OAAOR,gBAAAA;AAE3E,cAAMS,WAAW5B,SAAS6B,MAAMC,QAAQ,KAAK/B,GAAG,IAAI,KAAKA,MAAMgC,QAAW,MAAM,qBAAA;AAEhF,cAAMC,WAAWhC,SACf4B,SAASK,KAAKC,CAAAA,UAASA,MAAMC,SAAS,WAAWD,MAAME,SAAShB,kBAAAA,GAChE,MAAM,sBAAA;AAGR,cAAMH,UAAU,KAAKhB,OAAOgB,WAAWC,kBAAmB,MAAMG,SAASgB,eAAc;AACvF,cAAMtB,YAAY,KAAKd,OAAOc,aAAaC,oBAAoB;AAE/D,cAAMsB,eAAe,MAAMb,SAASc,YAAYd,SAASe,QAAQpB,kBAAAA,GAAqBL,WAAWE,OAAAA;AAGjG,cAAMwB,cAAcH,aACjB1B,IAAI,CAAC8B,WAAAA;AACJ,gBAAMC,WAAWD;AACjB,cAAIC,SAASC,MAAM;AACjB,kBAAMC,aAAsC,CAAC;AAE7Cb,qBAASc,OAAOlC,IAAI,CAACmC,OAAyBC,UAAAA;AAC5C,oBAAMC,QAAQN,SAASC,KAAKI,KAAAA;AAC5BH,yBAAWE,MAAMX,IAAI,IAAI,OAAOa,UAAU,WAAWC,cAAcD,KAAAA,IAASA;YAC9E,CAAA;AAEA,kBAAME,cAAwB;cAC5BrC,SAAS6B,SAAS7B;cAClB8B,MAAMC;cACNO,OAAOT,SAASU;cAChBC,SAASC,OAAOhC,QAAQ+B,OAAO;cAC/BzC,WAAWO;cACXoC,QAAQC;YACV;AACA,mBAAON;UACT;QACF,CAAA,EACC1C,OAAOiD,MAAAA;AAEV,eAAOjB;MACT,CAAA,CAAA,GAEJkB,KAAI;AACN,aAAOrD;IACT,SAASsD,IAAI;AACX,YAAMC,QAAQD;AACdE,cAAQC,IAAI,UAAU,KAAK9D,OAAOmC,IAAI,MAAMyB,MAAMG,OAAO,EAAE;AAC3D,YAAMH;IACR;EACF;AACF;","names":["EvmEventsWitnessConfigSchema","EvmEventsSchema","EvmEventSchema","assertEx","exists","hexFromBigInt","isPayloadOfSchemaType","AbstractEvmWitness","Contract","EvmEventsWitness","AbstractEvmWitness","configSchemas","EvmEventsWitnessConfigSchema","defaultConfigSchema","abi","assertEx","config","observeHandler","inPayloads","started","getProviders","observations","Promise","all","filter","isPayloadOfSchemaType","EvmEventsSchema","map","eventName","address","fromBlock","payloadFromBlock","toBlock","payloadToBlock","validatedAddress","validatedEventName","provider","getProvider","network","getNetwork","contract","Contract","attach","abiArray","Array","isArray","undefined","abiEvent","find","entry","type","name","getBlockNumber","allRawEvents","queryFilter","filters","observation","rawLog","rawEvent","args","argsObject","inputs","input","index","value","hexFromBigInt","eventResult","block","blockNumber","chainId","Number","schema","EvmEventSchema","exists","flat","ex","error","console","log","message"]}
1
+ {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";AAKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,6BAAqC;AAC9C,SAAS,0BAA0B;AACnC,SAAS,gBAA0B;AAK5B,IAAM,mBAAN,cAAgG,mBAIrG;AAAA,EACA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAEvD,IAAI,MAAM;AACR,WAAO,SAAS,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,EACtD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,OAAO,sBAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,mBAAmB,SAAS,WAAW,KAAK,OAAO,SAAS,MAAM,iBAAiB;AACzF,gBAAM,qBAAqB,SAAS,aAAa,KAAK,OAAO,WAAW,MAAM,mBAAmB;AAEjG,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,SAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,WAAW,SAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,MAAM,qBAAqB;AAErG,gBAAM,WAAW;AAAA,YACf,SAAS,KAAK,WAAS,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YAClF,MAAM;AAAA,UACR;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,2BAAW,MAAM,IAAI,IAAI,OAAO,UAAU,WAAW,cAAc,KAAK,IAAI;AAAA,cAC9E,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,MAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -2,11 +2,7 @@
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __reflectGet = Reflect.get;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
6
  var __export = (target, all) => {
11
7
  for (var name in all)
12
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -20,8 +16,6 @@ var __copyProps = (to, from, except, desc) => {
20
16
  return to;
21
17
  };
22
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
24
- var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
25
19
 
26
20
  // src/index.ts
27
21
  var src_exports = {};
@@ -47,7 +41,9 @@ var import_hex = require("@xylabs/hex");
47
41
  var import_payload_model = require("@xyo-network/payload-model");
48
42
  var import_witness_evm_abstract = require("@xyo-network/witness-evm-abstract");
49
43
  var import_ethers = require("ethers");
50
- var _EvmEventsWitness = class _EvmEventsWitness extends import_witness_evm_abstract.AbstractEvmWitness {
44
+ var EvmEventsWitness = class extends import_witness_evm_abstract.AbstractEvmWitness {
45
+ static configSchemas = [...super.configSchemas, EvmEventsWitnessConfigSchema];
46
+ static defaultConfigSchema = EvmEventsWitnessConfigSchema;
51
47
  get abi() {
52
48
  return (0, import_assert.assertEx)(this.config.abi, () => "Missing abi");
53
49
  }
@@ -55,38 +51,43 @@ var _EvmEventsWitness = class _EvmEventsWitness extends import_witness_evm_abstr
55
51
  await this.started("throw");
56
52
  await this.getProviders();
57
53
  try {
58
- const observations = (await Promise.all(inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
59
- const validatedAddress = (0, import_assert.assertEx)(address ?? this.config.address, () => "Missing address");
60
- const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, () => "Missing eventName");
61
- const provider = await this.getProvider(true, true);
62
- const network = await provider.getNetwork();
63
- const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
64
- const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
65
- const abiEvent = (0, import_assert.assertEx)(abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName), () => "Could not find event");
66
- const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
67
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
68
- const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
69
- const observation = allRawEvents.map((rawLog) => {
70
- const rawEvent = rawLog;
71
- if (rawEvent.args) {
72
- const argsObject = {};
73
- abiEvent.inputs.map((input, index) => {
74
- const value = rawEvent.args[index];
75
- argsObject[input.name] = typeof value === "bigint" ? (0, import_hex.hexFromBigInt)(value) : value;
76
- });
77
- const eventResult = {
78
- address: rawEvent.address,
79
- args: argsObject,
80
- block: rawEvent.blockNumber,
81
- chainId: Number(network.chainId),
82
- eventName: validatedEventName,
83
- schema: EvmEventSchema
84
- };
85
- return eventResult;
86
- }
87
- }).filter(import_exists.exists);
88
- return observation;
89
- }))).flat();
54
+ const observations = (await Promise.all(
55
+ inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
56
+ const validatedAddress = (0, import_assert.assertEx)(address ?? this.config.address, () => "Missing address");
57
+ const validatedEventName = (0, import_assert.assertEx)(eventName ?? this.config.eventName, () => "Missing eventName");
58
+ const provider = await this.getProvider(true, true);
59
+ const network = await provider.getNetwork();
60
+ const contract = new import_ethers.Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
61
+ const abiArray = (0, import_assert.assertEx)(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
62
+ const abiEvent = (0, import_assert.assertEx)(
63
+ abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
64
+ () => "Could not find event"
65
+ );
66
+ const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
67
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
68
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
69
+ const observation = allRawEvents.map((rawLog) => {
70
+ const rawEvent = rawLog;
71
+ if (rawEvent.args) {
72
+ const argsObject = {};
73
+ abiEvent.inputs.map((input, index) => {
74
+ const value = rawEvent.args[index];
75
+ argsObject[input.name] = typeof value === "bigint" ? (0, import_hex.hexFromBigInt)(value) : value;
76
+ });
77
+ const eventResult = {
78
+ address: rawEvent.address,
79
+ args: argsObject,
80
+ block: rawEvent.blockNumber,
81
+ chainId: Number(network.chainId),
82
+ eventName: validatedEventName,
83
+ schema: EvmEventSchema
84
+ };
85
+ return eventResult;
86
+ }
87
+ }).filter(import_exists.exists);
88
+ return observation;
89
+ })
90
+ )).flat();
90
91
  return observations;
91
92
  } catch (ex) {
92
93
  const error = ex;
@@ -95,13 +96,6 @@ var _EvmEventsWitness = class _EvmEventsWitness extends import_witness_evm_abstr
95
96
  }
96
97
  }
97
98
  };
98
- __name(_EvmEventsWitness, "EvmEventsWitness");
99
- __publicField(_EvmEventsWitness, "configSchemas", [
100
- ...__superGet(_EvmEventsWitness, _EvmEventsWitness, "configSchemas"),
101
- EvmEventsWitnessConfigSchema
102
- ]);
103
- __publicField(_EvmEventsWitness, "defaultConfigSchema", EvmEventsWitnessConfigSchema);
104
- var EvmEventsWitness = _EvmEventsWitness;
105
99
  // Annotate the CommonJS export names for ESM import in node:
106
100
  0 && (module.exports = {
107
101
  EvmEventSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model.ts'\nexport * from './Payload.ts'\nexport * from './Witness.ts'\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;ACKO,IAAMA,+BAA+B;;;ACHrC,IAAMC,kBAAkB;AAaxB,IAAMC,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAA8C;AAC9C,kCAAmC;AACnC,oBAAmC;AAK5B,IAAMC,oBAAN,MAAMA,0BAA0FC,+CAAAA;EAQrG,IAAIC,MAAM;AACR,eAAOC,wBAAS,KAAKC,OAAOF,KAAK,MAAM,aAAA;EACzC;EAEA,MAAyBG,eAAeC,aAA0B,CAAA,GAAyB;AACzF,UAAM,KAAKC,QAAQ,OAAA;AAEnB,UAAM,KAAKC,aAAY;AACvB,QAAI;AACF,YAAMC,gBACJ,MAAMC,QAAQC,IACZL,WACGM,WAAOC,4CAAiCC,eAAAA,CAAAA,EACxCC,IAAI,OAAO,EAAEC,WAAWC,SAASC,WAAWC,kBAAkBC,SAASC,eAAc,MAAE;AACtF,cAAMC,uBAAmBnB,wBAASc,WAAW,KAAKb,OAAOa,SAAS,MAAM,iBAAA;AACxE,cAAMM,yBAAqBpB,wBAASa,aAAa,KAAKZ,OAAOY,WAAW,MAAM,mBAAA;AAE9E,cAAMQ,WAAW,MAAM,KAAKC,YAAY,MAAM,IAAA;AAC9C,cAAMC,UAAU,MAAMF,SAASG,WAAU;AAEzC,cAAMC,WAAW,IAAIC,uBAASP,kBAAkB,KAAKpB,KAAKsB,QAAAA,EAAUM,OAAOR,gBAAAA;AAE3E,cAAMS,eAAW5B,wBAAS6B,MAAMC,QAAQ,KAAK/B,GAAG,IAAI,KAAKA,MAAMgC,QAAW,MAAM,qBAAA;AAEhF,cAAMC,eAAWhC,wBACf4B,SAASK,KAAKC,CAAAA,UAASA,MAAMC,SAAS,WAAWD,MAAME,SAAShB,kBAAAA,GAChE,MAAM,sBAAA;AAGR,cAAMH,UAAU,KAAKhB,OAAOgB,WAAWC,kBAAmB,MAAMG,SAASgB,eAAc;AACvF,cAAMtB,YAAY,KAAKd,OAAOc,aAAaC,oBAAoB;AAE/D,cAAMsB,eAAe,MAAMb,SAASc,YAAYd,SAASe,QAAQpB,kBAAAA,GAAqBL,WAAWE,OAAAA;AAGjG,cAAMwB,cAAcH,aACjB1B,IAAI,CAAC8B,WAAAA;AACJ,gBAAMC,WAAWD;AACjB,cAAIC,SAASC,MAAM;AACjB,kBAAMC,aAAsC,CAAC;AAE7Cb,qBAASc,OAAOlC,IAAI,CAACmC,OAAyBC,UAAAA;AAC5C,oBAAMC,QAAQN,SAASC,KAAKI,KAAAA;AAC5BH,yBAAWE,MAAMX,IAAI,IAAI,OAAOa,UAAU,eAAWC,0BAAcD,KAAAA,IAASA;YAC9E,CAAA;AAEA,kBAAME,cAAwB;cAC5BrC,SAAS6B,SAAS7B;cAClB8B,MAAMC;cACNO,OAAOT,SAASU;cAChBC,SAASC,OAAOhC,QAAQ+B,OAAO;cAC/BzC,WAAWO;cACXoC,QAAQC;YACV;AACA,mBAAON;UACT;QACF,CAAA,EACC1C,OAAOiD,oBAAAA;AAEV,eAAOjB;MACT,CAAA,CAAA,GAEJkB,KAAI;AACN,aAAOrD;IACT,SAASsD,IAAI;AACX,YAAMC,QAAQD;AACdE,cAAQC,IAAI,UAAU,KAAK9D,OAAOmC,IAAI,MAAMyB,MAAMG,OAAO,EAAE;AAC3D,YAAMH;IACR;EACF;AACF;AA9EuG/D;AAKrG,cALWD,mBAKcoE,iBAA0B;KAAI,iDAAMA;EAAeC;;AAC5E,cANWrE,mBAMcsE,uBAA8BD;AANlD,IAAMrE,mBAAN;","names":["EvmEventsWitnessConfigSchema","EvmEventsSchema","EvmEventSchema","EvmEventsWitness","AbstractEvmWitness","abi","assertEx","config","observeHandler","inPayloads","started","getProviders","observations","Promise","all","filter","isPayloadOfSchemaType","EvmEventsSchema","map","eventName","address","fromBlock","payloadFromBlock","toBlock","payloadToBlock","validatedAddress","validatedEventName","provider","getProvider","network","getNetwork","contract","Contract","attach","abiArray","Array","isArray","undefined","abiEvent","find","entry","type","name","getBlockNumber","allRawEvents","queryFilter","filters","observation","rawLog","rawEvent","args","argsObject","inputs","input","index","value","hexFromBigInt","eventResult","block","blockNumber","chainId","Number","schema","EvmEventSchema","exists","flat","ex","error","console","log","message","configSchemas","EvmEventsWitnessConfigSchema","defaultConfigSchema"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["export * from './model.ts'\nexport * from './Payload.ts'\nexport * from './Witness.ts'\n","import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,oBAAyB;AACzB,oBAAuB;AACvB,iBAA8B;AAC9B,2BAA8C;AAC9C,kCAAmC;AACnC,oBAAmC;AAK5B,IAAM,mBAAN,cAAgG,+CAIrG;AAAA,EACA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAEvD,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,EACtD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,WAAO,4CAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,MAAM,iBAAiB;AACzF,gBAAM,yBAAqB,wBAAS,aAAa,KAAK,OAAO,WAAW,MAAM,mBAAmB;AAEjG,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,eAAW,wBAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,MAAM,qBAAqB;AAErG,gBAAM,eAAW;AAAA,YACf,SAAS,KAAK,WAAS,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YAClF,MAAM;AAAA,UACR;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,2BAAW,MAAM,IAAI,IAAI,OAAO,UAAU,eAAW,0BAAc,KAAK,IAAI;AAAA,cAC9E,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,oBAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -1,11 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __getProtoOf = Object.getPrototypeOf;
3
- var __reflectGet = Reflect.get;
4
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
- var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
8
-
9
1
  // src/model.ts
10
2
  var EvmEventsWitnessConfigSchema = "network.xyo.evm.events.witness.config";
11
3
 
@@ -20,7 +12,9 @@ import { hexFromBigInt } from "@xylabs/hex";
20
12
  import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
21
13
  import { AbstractEvmWitness } from "@xyo-network/witness-evm-abstract";
22
14
  import { Contract } from "ethers";
23
- var _EvmEventsWitness = class _EvmEventsWitness extends AbstractEvmWitness {
15
+ var EvmEventsWitness = class extends AbstractEvmWitness {
16
+ static configSchemas = [...super.configSchemas, EvmEventsWitnessConfigSchema];
17
+ static defaultConfigSchema = EvmEventsWitnessConfigSchema;
24
18
  get abi() {
25
19
  return assertEx(this.config.abi, () => "Missing abi");
26
20
  }
@@ -28,38 +22,43 @@ var _EvmEventsWitness = class _EvmEventsWitness extends AbstractEvmWitness {
28
22
  await this.started("throw");
29
23
  await this.getProviders();
30
24
  try {
31
- const observations = (await Promise.all(inPayloads.filter(isPayloadOfSchemaType(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
32
- const validatedAddress = assertEx(address ?? this.config.address, () => "Missing address");
33
- const validatedEventName = assertEx(eventName ?? this.config.eventName, () => "Missing eventName");
34
- const provider = await this.getProvider(true, true);
35
- const network = await provider.getNetwork();
36
- const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
37
- const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
38
- const abiEvent = assertEx(abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName), () => "Could not find event");
39
- const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
40
- const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
41
- const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
42
- const observation = allRawEvents.map((rawLog) => {
43
- const rawEvent = rawLog;
44
- if (rawEvent.args) {
45
- const argsObject = {};
46
- abiEvent.inputs.map((input, index) => {
47
- const value = rawEvent.args[index];
48
- argsObject[input.name] = typeof value === "bigint" ? hexFromBigInt(value) : value;
49
- });
50
- const eventResult = {
51
- address: rawEvent.address,
52
- args: argsObject,
53
- block: rawEvent.blockNumber,
54
- chainId: Number(network.chainId),
55
- eventName: validatedEventName,
56
- schema: EvmEventSchema
57
- };
58
- return eventResult;
59
- }
60
- }).filter(exists);
61
- return observation;
62
- }))).flat();
25
+ const observations = (await Promise.all(
26
+ inPayloads.filter(isPayloadOfSchemaType(EvmEventsSchema)).map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {
27
+ const validatedAddress = assertEx(address ?? this.config.address, () => "Missing address");
28
+ const validatedEventName = assertEx(eventName ?? this.config.eventName, () => "Missing eventName");
29
+ const provider = await this.getProvider(true, true);
30
+ const network = await provider.getNetwork();
31
+ const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress);
32
+ const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : void 0, () => "Abi is not an array");
33
+ const abiEvent = assertEx(
34
+ abiArray.find((entry) => entry.type === "event" && entry.name === validatedEventName),
35
+ () => "Could not find event"
36
+ );
37
+ const toBlock = this.config.toBlock ?? payloadToBlock ?? await provider.getBlockNumber();
38
+ const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0;
39
+ const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock);
40
+ const observation = allRawEvents.map((rawLog) => {
41
+ const rawEvent = rawLog;
42
+ if (rawEvent.args) {
43
+ const argsObject = {};
44
+ abiEvent.inputs.map((input, index) => {
45
+ const value = rawEvent.args[index];
46
+ argsObject[input.name] = typeof value === "bigint" ? hexFromBigInt(value) : value;
47
+ });
48
+ const eventResult = {
49
+ address: rawEvent.address,
50
+ args: argsObject,
51
+ block: rawEvent.blockNumber,
52
+ chainId: Number(network.chainId),
53
+ eventName: validatedEventName,
54
+ schema: EvmEventSchema
55
+ };
56
+ return eventResult;
57
+ }
58
+ }).filter(exists);
59
+ return observation;
60
+ })
61
+ )).flat();
63
62
  return observations;
64
63
  } catch (ex) {
65
64
  const error = ex;
@@ -68,13 +67,6 @@ var _EvmEventsWitness = class _EvmEventsWitness extends AbstractEvmWitness {
68
67
  }
69
68
  }
70
69
  };
71
- __name(_EvmEventsWitness, "EvmEventsWitness");
72
- __publicField(_EvmEventsWitness, "configSchemas", [
73
- ...__superGet(_EvmEventsWitness, _EvmEventsWitness, "configSchemas"),
74
- EvmEventsWitnessConfigSchema
75
- ]);
76
- __publicField(_EvmEventsWitness, "defaultConfigSchema", EvmEventsWitnessConfigSchema);
77
- var EvmEventsWitness = _EvmEventsWitness;
78
70
  export {
79
71
  EvmEventSchema,
80
72
  EvmEventsSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;AAKO,IAAMA,+BAA+B;;;ACHrC,IAAMC,kBAAkB;AAaxB,IAAMC,iBAAiB;;;ACf9B,SAASC,gBAAgB;AACzB,SAASC,cAAc;AACvB,SAASC,qBAAqB;AAC9B,SAASC,6BAAqC;AAC9C,SAASC,0BAA0B;AACnC,SAASC,gBAA0B;AAK5B,IAAMC,oBAAN,MAAMA,0BAA0FC,mBAAAA;EAQrG,IAAIC,MAAM;AACR,WAAOC,SAAS,KAAKC,OAAOF,KAAK,MAAM,aAAA;EACzC;EAEA,MAAyBG,eAAeC,aAA0B,CAAA,GAAyB;AACzF,UAAM,KAAKC,QAAQ,OAAA;AAEnB,UAAM,KAAKC,aAAY;AACvB,QAAI;AACF,YAAMC,gBACJ,MAAMC,QAAQC,IACZL,WACGM,OAAOC,sBAAiCC,eAAAA,CAAAA,EACxCC,IAAI,OAAO,EAAEC,WAAWC,SAASC,WAAWC,kBAAkBC,SAASC,eAAc,MAAE;AACtF,cAAMC,mBAAmBnB,SAASc,WAAW,KAAKb,OAAOa,SAAS,MAAM,iBAAA;AACxE,cAAMM,qBAAqBpB,SAASa,aAAa,KAAKZ,OAAOY,WAAW,MAAM,mBAAA;AAE9E,cAAMQ,WAAW,MAAM,KAAKC,YAAY,MAAM,IAAA;AAC9C,cAAMC,UAAU,MAAMF,SAASG,WAAU;AAEzC,cAAMC,WAAW,IAAIC,SAASP,kBAAkB,KAAKpB,KAAKsB,QAAAA,EAAUM,OAAOR,gBAAAA;AAE3E,cAAMS,WAAW5B,SAAS6B,MAAMC,QAAQ,KAAK/B,GAAG,IAAI,KAAKA,MAAMgC,QAAW,MAAM,qBAAA;AAEhF,cAAMC,WAAWhC,SACf4B,SAASK,KAAKC,CAAAA,UAASA,MAAMC,SAAS,WAAWD,MAAME,SAAShB,kBAAAA,GAChE,MAAM,sBAAA;AAGR,cAAMH,UAAU,KAAKhB,OAAOgB,WAAWC,kBAAmB,MAAMG,SAASgB,eAAc;AACvF,cAAMtB,YAAY,KAAKd,OAAOc,aAAaC,oBAAoB;AAE/D,cAAMsB,eAAe,MAAMb,SAASc,YAAYd,SAASe,QAAQpB,kBAAAA,GAAqBL,WAAWE,OAAAA;AAGjG,cAAMwB,cAAcH,aACjB1B,IAAI,CAAC8B,WAAAA;AACJ,gBAAMC,WAAWD;AACjB,cAAIC,SAASC,MAAM;AACjB,kBAAMC,aAAsC,CAAC;AAE7Cb,qBAASc,OAAOlC,IAAI,CAACmC,OAAyBC,UAAAA;AAC5C,oBAAMC,QAAQN,SAASC,KAAKI,KAAAA;AAC5BH,yBAAWE,MAAMX,IAAI,IAAI,OAAOa,UAAU,WAAWC,cAAcD,KAAAA,IAASA;YAC9E,CAAA;AAEA,kBAAME,cAAwB;cAC5BrC,SAAS6B,SAAS7B;cAClB8B,MAAMC;cACNO,OAAOT,SAASU;cAChBC,SAASC,OAAOhC,QAAQ+B,OAAO;cAC/BzC,WAAWO;cACXoC,QAAQC;YACV;AACA,mBAAON;UACT;QACF,CAAA,EACC1C,OAAOiD,MAAAA;AAEV,eAAOjB;MACT,CAAA,CAAA,GAEJkB,KAAI;AACN,aAAOrD;IACT,SAASsD,IAAI;AACX,YAAMC,QAAQD;AACdE,cAAQC,IAAI,UAAU,KAAK9D,OAAOmC,IAAI,MAAMyB,MAAMG,OAAO,EAAE;AAC3D,YAAMH;IACR;EACF;AACF;AA9EuG/D;AAKrG,cALWD,mBAKcoE,iBAA0B;KAAI,iDAAMA;EAAeC;;AAC5E,cANWrE,mBAMcsE,uBAA8BD;AANlD,IAAMrE,mBAAN;","names":["EvmEventsWitnessConfigSchema","EvmEventsSchema","EvmEventSchema","assertEx","exists","hexFromBigInt","isPayloadOfSchemaType","AbstractEvmWitness","Contract","EvmEventsWitness","AbstractEvmWitness","abi","assertEx","config","observeHandler","inPayloads","started","getProviders","observations","Promise","all","filter","isPayloadOfSchemaType","EvmEventsSchema","map","eventName","address","fromBlock","payloadFromBlock","toBlock","payloadToBlock","validatedAddress","validatedEventName","provider","getProvider","network","getNetwork","contract","Contract","attach","abiArray","Array","isArray","undefined","abiEvent","find","entry","type","name","getBlockNumber","allRawEvents","queryFilter","filters","observation","rawLog","rawEvent","args","argsObject","inputs","input","index","value","hexFromBigInt","eventResult","block","blockNumber","chainId","Number","schema","EvmEventSchema","exists","flat","ex","error","console","log","message","configSchemas","EvmEventsWitnessConfigSchema","defaultConfigSchema"]}
1
+ {"version":3,"sources":["../../src/model.ts","../../src/Payload.ts","../../src/Witness.ts"],"sourcesContent":["import { EvmWitnessConfig, EvmWitnessParams } from '@xyo-network/witness-evm-abstract'\nimport { JsonFragment } from 'ethers'\n\nexport type Abi = string | ReadonlyArray<JsonFragment | string>\n\nexport const EvmEventsWitnessConfigSchema = 'network.xyo.evm.events.witness.config'\nexport type EvmEventsWitnessConfigSchema = typeof EvmEventsWitnessConfigSchema\n\nexport type EvmEventsWitnessConfig = EvmWitnessConfig<\n {\n abi?: Abi\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsWitnessConfigSchema\n>\n\nexport type EvmEventsWitnessParams = EvmWitnessParams<EvmEventsWitnessConfig>\n","import { Payload } from '@xyo-network/payload-model'\n\nexport const EvmEventsSchema = 'network.xyo.evm.events'\nexport type EvmEventsSchema = typeof EvmEventsSchema\n\nexport type EvmEvents = Payload<\n {\n address?: string\n eventName?: string\n fromBlock?: number\n toBlock?: number\n },\n EvmEventsSchema\n>\n\nexport const EvmEventSchema = 'network.xyo.evm.event'\nexport type EvmEventSchema = typeof EvmEventSchema\n\nexport type EvmEvent = Payload<\n {\n address: string\n args: Record<string, unknown>\n block: number\n chainId: number\n eventName: string\n },\n EvmEventSchema\n>\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { hexFromBigInt } from '@xylabs/hex'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { AbstractEvmWitness } from '@xyo-network/witness-evm-abstract'\nimport { Contract, EventLog } from 'ethers'\n\nimport { EvmEventsWitnessConfigSchema, EvmEventsWitnessParams } from './model.ts'\nimport { EvmEvent, EvmEvents, EvmEventSchema, EvmEventsSchema } from './Payload.ts'\n\nexport class EvmEventsWitness<TParams extends EvmEventsWitnessParams = EvmEventsWitnessParams> extends AbstractEvmWitness<\n TParams,\n EvmEvents,\n EvmEvent\n> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EvmEventsWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = EvmEventsWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: EvmEvents[] = []): Promise<EvmEvent[]> {\n await this.started('throw')\n // calling it here to make sure we rests the cache\n await this.getProviders()\n try {\n const observations = (\n await Promise.all(\n inPayloads\n .filter(isPayloadOfSchemaType<EvmEvents>(EvmEventsSchema))\n .map(async ({ eventName, address, fromBlock: payloadFromBlock, toBlock: payloadToBlock }) => {\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedEventName = assertEx(eventName ?? this.config.eventName, () => 'Missing eventName')\n\n const provider = await this.getProvider(true, true)\n const network = await provider.getNetwork()\n\n const contract = new Contract(validatedAddress, this.abi, provider).attach(validatedAddress)\n\n const abiArray = assertEx(Array.isArray(this.abi) ? this.abi : undefined, () => 'Abi is not an array')\n\n const abiEvent = assertEx(\n abiArray.find(entry => entry.type === 'event' && entry.name === validatedEventName),\n () => 'Could not find event',\n )\n\n const toBlock = this.config.toBlock ?? payloadToBlock ?? (await provider.getBlockNumber())\n const fromBlock = this.config.fromBlock ?? payloadFromBlock ?? 0\n\n const allRawEvents = await contract.queryFilter(contract.filters[validatedEventName], fromBlock, toBlock)\n // console.log(`from-to: ${fromBlock}|${toBlock} = ${allRawEvents.length}`)\n\n const observation = allRawEvents\n .map((rawLog) => {\n const rawEvent = rawLog as EventLog\n if (rawEvent.args) {\n const argsObject: Record<string, unknown> = {}\n\n abiEvent.inputs.map((input: { name: string }, index: number) => {\n const value = rawEvent.args[index]\n argsObject[input.name] = typeof value === 'bigint' ? hexFromBigInt(value) : value\n })\n\n const eventResult: EvmEvent = {\n address: rawEvent.address,\n args: argsObject,\n block: rawEvent.blockNumber,\n chainId: Number(network.chainId),\n eventName: validatedEventName,\n schema: EvmEventSchema,\n }\n return eventResult\n }\n })\n .filter(exists)\n\n return observation\n }),\n )\n ).flat()\n return observations\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n throw error\n }\n }\n}\n"],"mappings":";AAKO,IAAM,+BAA+B;;;ACHrC,IAAM,kBAAkB;AAaxB,IAAM,iBAAiB;;;ACf9B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,6BAAqC;AAC9C,SAAS,0BAA0B;AACnC,SAAS,gBAA0B;AAK5B,IAAM,mBAAN,cAAgG,mBAIrG;AAAA,EACA,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,4BAA4B;AAAA,EACxG,OAAyB,sBAA8B;AAAA,EAEvD,IAAI,MAAM;AACR,WAAO,SAAS,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,EACtD;AAAA,EAEA,MAAyB,eAAe,aAA0B,CAAC,GAAwB;AACzF,UAAM,KAAK,QAAQ,OAAO;AAE1B,UAAM,KAAK,aAAa;AACxB,QAAI;AACF,YAAM,gBACJ,MAAM,QAAQ;AAAA,QACZ,WACG,OAAO,sBAAiC,eAAe,CAAC,EACxD,IAAI,OAAO,EAAE,WAAW,SAAS,WAAW,kBAAkB,SAAS,eAAe,MAAM;AAC3F,gBAAM,mBAAmB,SAAS,WAAW,KAAK,OAAO,SAAS,MAAM,iBAAiB;AACzF,gBAAM,qBAAqB,SAAS,aAAa,KAAK,OAAO,WAAW,MAAM,mBAAmB;AAEjG,gBAAM,WAAW,MAAM,KAAK,YAAY,MAAM,IAAI;AAClD,gBAAM,UAAU,MAAM,SAAS,WAAW;AAE1C,gBAAM,WAAW,IAAI,SAAS,kBAAkB,KAAK,KAAK,QAAQ,EAAE,OAAO,gBAAgB;AAE3F,gBAAM,WAAW,SAAS,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,MAAM,QAAW,MAAM,qBAAqB;AAErG,gBAAM,WAAW;AAAA,YACf,SAAS,KAAK,WAAS,MAAM,SAAS,WAAW,MAAM,SAAS,kBAAkB;AAAA,YAClF,MAAM;AAAA,UACR;AAEA,gBAAM,UAAU,KAAK,OAAO,WAAW,kBAAmB,MAAM,SAAS,eAAe;AACxF,gBAAM,YAAY,KAAK,OAAO,aAAa,oBAAoB;AAE/D,gBAAM,eAAe,MAAM,SAAS,YAAY,SAAS,QAAQ,kBAAkB,GAAG,WAAW,OAAO;AAGxG,gBAAM,cAAc,aACjB,IAAI,CAAC,WAAW;AACf,kBAAM,WAAW;AACjB,gBAAI,SAAS,MAAM;AACjB,oBAAM,aAAsC,CAAC;AAE7C,uBAAS,OAAO,IAAI,CAAC,OAAyB,UAAkB;AAC9D,sBAAM,QAAQ,SAAS,KAAK,KAAK;AACjC,2BAAW,MAAM,IAAI,IAAI,OAAO,UAAU,WAAW,cAAc,KAAK,IAAI;AAAA,cAC9E,CAAC;AAED,oBAAM,cAAwB;AAAA,gBAC5B,SAAS,SAAS;AAAA,gBAClB,MAAM;AAAA,gBACN,OAAO,SAAS;AAAA,gBAChB,SAAS,OAAO,QAAQ,OAAO;AAAA,gBAC/B,WAAW;AAAA,gBACX,QAAQ;AAAA,cACV;AACA,qBAAO;AAAA,YACT;AAAA,UACF,CAAC,EACA,OAAO,MAAM;AAEhB,iBAAO;AAAA,QACT,CAAC;AAAA,MACL,GACA,KAAK;AACP,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -10,18 +10,18 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.6.8",
14
- "@xylabs/exists": "^3.6.8",
15
- "@xylabs/hex": "^3.6.8",
16
- "@xyo-network/payload-model": "^2.111.2",
17
- "@xyo-network/witness-evm-abstract": "^2.111.2",
13
+ "@xylabs/assert": "^3.6.12",
14
+ "@xylabs/exists": "^3.6.12",
15
+ "@xylabs/hex": "^3.6.12",
16
+ "@xyo-network/payload-model": "^2.111.3",
17
+ "@xyo-network/witness-evm-abstract": "^2.111.3",
18
18
  "ethers": "^6.13.2"
19
19
  },
20
20
  "devDependencies": {
21
- "@xylabs/jest-helpers": "^3.6.8",
22
- "@xylabs/ts-scripts-yarn3": "^3.15.13",
23
- "@xylabs/tsconfig": "^3.15.13",
24
- "@xyo-network/open-zeppelin-typechain": "^3.0.5",
21
+ "@xylabs/jest-helpers": "^3.6.12",
22
+ "@xylabs/ts-scripts-yarn3": "^3.15.14",
23
+ "@xylabs/tsconfig": "^3.15.14",
24
+ "@xyo-network/open-zeppelin-typechain": "^3.1.0",
25
25
  "jest": "^29.7.0",
26
26
  "typescript": "^5.5.4"
27
27
  },
@@ -64,6 +64,6 @@
64
64
  "url": "https://github.com/XYOracleNetwork/plugins.git"
65
65
  },
66
66
  "sideEffects": false,
67
- "version": "2.99.5",
67
+ "version": "2.99.6",
68
68
  "type": "module"
69
69
  }