@xyo-network/crypto-contract-function-read-plugin 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.
@@ -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 = {};
@@ -38,7 +32,10 @@ var import_assert = require("@xylabs/assert");
38
32
  var import_crypto_contract_function_read_payload_plugin = require("@xyo-network/crypto-contract-function-read-payload-plugin");
39
33
  var import_diviner_abstract = require("@xyo-network/diviner-abstract");
40
34
  var import_payload_model = require("@xyo-network/payload-model");
41
- var _CryptoContractDiviner = class _CryptoContractDiviner extends import_diviner_abstract.AbstractDiviner {
35
+ var CryptoContractDiviner = class _CryptoContractDiviner extends import_diviner_abstract.AbstractDiviner {
36
+ static configSchemas = [...super.configSchemas, import_crypto_contract_function_read_payload_plugin.CryptoContractDivinerConfigSchema];
37
+ static defaultConfigSchema = import_crypto_contract_function_read_payload_plugin.CryptoContractDivinerConfigSchema;
38
+ static labels = { ...super.labels, ...import_crypto_contract_function_read_payload_plugin.CryptoContractDivinerLabels };
42
39
  static findCallResult(address, functionName, payloads) {
43
40
  var _a;
44
41
  const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
@@ -70,14 +67,16 @@ var _CryptoContractDiviner = class _CryptoContractDiviner extends import_diviner
70
67
  return prev;
71
68
  }, {})
72
69
  );
73
- const result = await Promise.all(addresses.map(async (address) => {
74
- const foundCallResults = callResults.filter((callResult) => callResult.address === address);
75
- const info = {
76
- results: await this.reduceResults(foundCallResults),
77
- ...this.contractInfoRequiredFields(foundCallResults)
78
- };
79
- return info;
80
- }));
70
+ const result = await Promise.all(
71
+ addresses.map(async (address) => {
72
+ const foundCallResults = callResults.filter((callResult) => callResult.address === address);
73
+ const info = {
74
+ results: await this.reduceResults(foundCallResults),
75
+ ...this.contractInfoRequiredFields(foundCallResults)
76
+ };
77
+ return info;
78
+ })
79
+ );
81
80
  return result;
82
81
  }
83
82
  reduceResults(callResults) {
@@ -88,17 +87,6 @@ var _CryptoContractDiviner = class _CryptoContractDiviner extends import_diviner
88
87
  }, {});
89
88
  }
90
89
  };
91
- __name(_CryptoContractDiviner, "CryptoContractDiviner");
92
- __publicField(_CryptoContractDiviner, "configSchemas", [
93
- ...__superGet(_CryptoContractDiviner, _CryptoContractDiviner, "configSchemas"),
94
- import_crypto_contract_function_read_payload_plugin.CryptoContractDivinerConfigSchema
95
- ]);
96
- __publicField(_CryptoContractDiviner, "defaultConfigSchema", import_crypto_contract_function_read_payload_plugin.CryptoContractDivinerConfigSchema);
97
- __publicField(_CryptoContractDiviner, "labels", {
98
- ...__superGet(_CryptoContractDiviner, _CryptoContractDiviner, "labels"),
99
- ...import_crypto_contract_function_read_payload_plugin.CryptoContractDivinerLabels
100
- });
101
- var CryptoContractDiviner = _CryptoContractDiviner;
102
90
 
103
91
  // src/Plugin.ts
104
92
  var import_crypto_nft_payload_plugin = require("@xyo-network/crypto-nft-payload-plugin");
@@ -111,48 +99,50 @@ var import_abstract_witness = require("@xyo-network/abstract-witness");
111
99
  var import_crypto_contract_function_read_payload_plugin2 = require("@xyo-network/crypto-contract-function-read-payload-plugin");
112
100
  var import_payload_model2 = require("@xyo-network/payload-model");
113
101
  var import_ethers = require("ethers");
114
- var _CryptoContractFunctionReadWitness = class _CryptoContractFunctionReadWitness extends import_abstract_witness.AbstractWitness {
102
+ var CryptoContractFunctionReadWitness = class extends import_abstract_witness.AbstractWitness {
103
+ static configSchemas = [...super.configSchemas, import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionReadWitnessConfigSchema];
104
+ static defaultConfigSchema = import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionReadWitnessConfigSchema;
115
105
  get abi() {
116
106
  return (0, import_assert2.assertEx)(this.config.abi, () => "Missing abi");
117
107
  }
118
108
  async observeHandler(inPayloads = []) {
119
109
  await this.started("throw");
120
110
  try {
121
- const observations = await Promise.all(inPayloads.filter((0, import_payload_model2.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
122
- const { providers } = this.params;
123
- const provider = providers[Date.now() % providers.length];
124
- const validatedAddress = (0, import_assert2.assertEx)(address ?? this.config.address, () => "Missing address");
125
- const validatedFunctionName = (0, import_assert2.assertEx)(functionName ?? this.config.functionName, () => "Missing address");
126
- const mergedArgs = [
127
- ...args ?? this.config.args ?? []
128
- ];
129
- const contract = new import_ethers.Contract(validatedAddress, this.abi, provider);
130
- try {
131
- const result = await contract[validatedFunctionName](...mergedArgs);
132
- const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
133
- const observation = {
134
- address: validatedAddress,
135
- args: mergedArgs,
136
- chainId: Number((await provider.getNetwork()).chainId),
137
- functionName: validatedFunctionName,
138
- result: transformedResult,
139
- schema: import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallResultSchema
140
- };
141
- return observation;
142
- } catch (ex) {
143
- const error = ex;
144
- console.log(`Error [${this.config.name}]: ${error.code}`);
145
- const observation = {
146
- address: validatedAddress,
147
- args: mergedArgs,
148
- chainId: Number((await provider.getNetwork()).chainId),
149
- error: error.code,
150
- functionName: validatedFunctionName,
151
- schema: import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallResultSchema
152
- };
153
- return observation;
154
- }
155
- }));
111
+ const observations = await Promise.all(
112
+ inPayloads.filter((0, import_payload_model2.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
113
+ const { providers } = this.params;
114
+ const provider = providers[Date.now() % providers.length];
115
+ const validatedAddress = (0, import_assert2.assertEx)(address ?? this.config.address, () => "Missing address");
116
+ const validatedFunctionName = (0, import_assert2.assertEx)(functionName ?? this.config.functionName, () => "Missing address");
117
+ const mergedArgs = [...args ?? this.config.args ?? []];
118
+ const contract = new import_ethers.Contract(validatedAddress, this.abi, provider);
119
+ try {
120
+ const result = await contract[validatedFunctionName](...mergedArgs);
121
+ const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
122
+ const observation = {
123
+ address: validatedAddress,
124
+ args: mergedArgs,
125
+ chainId: Number((await provider.getNetwork()).chainId),
126
+ functionName: validatedFunctionName,
127
+ result: transformedResult,
128
+ schema: import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallResultSchema
129
+ };
130
+ return observation;
131
+ } catch (ex) {
132
+ const error = ex;
133
+ console.log(`Error [${this.config.name}]: ${error.code}`);
134
+ const observation = {
135
+ address: validatedAddress,
136
+ args: mergedArgs,
137
+ chainId: Number((await provider.getNetwork()).chainId),
138
+ error: error.code,
139
+ functionName: validatedFunctionName,
140
+ schema: import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallResultSchema
141
+ };
142
+ return observation;
143
+ }
144
+ })
145
+ );
156
146
  return observations;
157
147
  } catch (ex) {
158
148
  const error = ex;
@@ -161,26 +151,17 @@ var _CryptoContractFunctionReadWitness = class _CryptoContractFunctionReadWitnes
161
151
  }
162
152
  }
163
153
  };
164
- __name(_CryptoContractFunctionReadWitness, "CryptoContractFunctionReadWitness");
165
- __publicField(_CryptoContractFunctionReadWitness, "configSchemas", [
166
- ...__superGet(_CryptoContractFunctionReadWitness, _CryptoContractFunctionReadWitness, "configSchemas"),
167
- import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionReadWitnessConfigSchema
168
- ]);
169
- __publicField(_CryptoContractFunctionReadWitness, "defaultConfigSchema", import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionReadWitnessConfigSchema);
170
- var CryptoContractFunctionReadWitness = _CryptoContractFunctionReadWitness;
171
154
 
172
155
  // src/Plugin.ts
173
- var CryptoContractFunctionReadWitnessPlugin = /* @__PURE__ */ __name(() => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)({
174
- required: {
175
- [import_crypto_nft_payload_plugin.NftSchema]: 1
176
- },
177
- schema: import_payload_model3.PayloadSetSchema
178
- }, {
179
- witness: /* @__PURE__ */ __name(async (params) => {
180
- const result = await CryptoContractFunctionReadWitness.create(params);
181
- return result;
182
- }, "witness")
183
- }), "CryptoContractFunctionReadWitnessPlugin");
156
+ var CryptoContractFunctionReadWitnessPlugin = () => (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
157
+ { required: { [import_crypto_nft_payload_plugin.NftSchema]: 1 }, schema: import_payload_model3.PayloadSetSchema },
158
+ {
159
+ witness: async (params) => {
160
+ const result = await CryptoContractFunctionReadWitness.create(params);
161
+ return result;
162
+ }
163
+ }
164
+ );
184
165
  // Annotate the CommonJS export names for ESM import in node:
185
166
  0 && (module.exports = {
186
167
  CryptoContractDiviner,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner/index.ts'\nexport { CryptoContractFunctionReadWitnessPlugin, CryptoContractFunctionReadWitnessPlugin as default } from './Plugin.ts'\nexport * from './Witness.ts'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport {\n asCryptoContractFunctionCallSuccess,\n ContractInfo,\n ContractInfoSchema,\n CryptoContractDivinerConfigSchema,\n CryptoContractDivinerLabels,\n CryptoContractDivinerParams,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { isPayloadOfSchemaType, Payload, Schema } from '@xyo-network/payload-model'\n\n/** @deprecated use EvmCallDiviner instead */\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\n/** @deprecated use EvmCallDiviner instead */\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractDivinerConfigSchema\n static override labels: CryptoContractDivinerLabels = { ...super.labels, ...CryptoContractDivinerLabels }\n\n protected static findCallResult<TResult = string>(\n address: string,\n functionName: string,\n payloads: CryptoContractFunctionCallResult[],\n ): TResult | undefined {\n const foundPayload = payloads.find(payload => payload.functionName === functionName && payload.address === address)\n return asCryptoContractFunctionCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n // eslint-disable-next-line unicorn/no-array-reduce\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),\n schema: ContractInfoSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<ContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n // eslint-disable-next-line unicorn/no-array-reduce\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter(callResult => callResult.address === address)\n const info: ContractInfo = {\n results: await this.reduceResults(foundCallResults),\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return info\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']> {\n // eslint-disable-next-line unicorn/no-array-reduce\n return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\n// eslint-disable-next-line import/no-deprecated\nimport { CryptoContractFunctionReadWitness } from './Witness.ts'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallFailure,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionCallSuccess,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\n/** @deprecated use EvmCallWitness instead */\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\n/** @deprecated use EvmCallWitness instead */\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractFunctionReadWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: CryptoContractFunctionCall[] = []): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {\n const { providers } = this.params\n const provider = providers[Date.now() % providers.length] // pick a random provider\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, () => 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n const transformedResult = typeof result === 'bigint' ? result.toString(16) : result\n const observation: CryptoContractFunctionCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n } catch (ex) {\n const error = ex as Error & { code: string }\n console.log(`Error [${this.config.name}]: ${error.code}`)\n const observation: CryptoContractFunctionCallFailure = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n error: error.code,\n functionName: validatedFunctionName,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }\n }),\n )\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":"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","names":["CryptoContractDiviner","AbstractDiviner","findCallResult","address","functionName","payloads","foundPayload","find","payload","asCryptoContractFunctionCallSuccess","result","matchingExistingField","objs","field","expectedValue","at","didNotMatch","reduce","prev","obj","undefined","contractInfoRequiredFields","callResults","assertEx","chainId","schema","ContractInfoSchema","divineHandler","inPayloads","filter","isPayloadOfSchemaType","CryptoContractFunctionCallResultSchema","addresses","Object","keys","Promise","all","map","foundCallResults","callResult","info","results","reduceResults","configSchemas","CryptoContractDivinerConfigSchema","defaultConfigSchema","labels","CryptoContractDivinerLabels","import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_payload_model","CryptoContractFunctionReadWitness","AbstractWitness","abi","assertEx","config","observeHandler","inPayloads","started","observations","Promise","all","filter","isPayloadOfSchemaType","CryptoContractFunctionCallSchema","map","functionName","args","address","providers","params","provider","Date","now","length","validatedAddress","validatedFunctionName","mergedArgs","contract","Contract","result","transformedResult","toString","observation","chainId","Number","getNetwork","schema","CryptoContractFunctionCallResultSchema","ex","error","console","log","name","code","message","configSchemas","CryptoContractFunctionReadWitnessConfigSchema","defaultConfigSchema","CryptoContractFunctionReadWitnessPlugin","createPayloadSetWitnessPlugin","required","NftSchema","schema","PayloadSetSchema","witness","params","result","CryptoContractFunctionReadWitness","create"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner/index.ts'\nexport { CryptoContractFunctionReadWitnessPlugin, CryptoContractFunctionReadWitnessPlugin as default } from './Plugin.ts'\nexport * from './Witness.ts'\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport {\n asCryptoContractFunctionCallSuccess,\n ContractInfo,\n ContractInfoSchema,\n CryptoContractDivinerConfigSchema,\n CryptoContractDivinerLabels,\n CryptoContractDivinerParams,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { isPayloadOfSchemaType, Payload, Schema } from '@xyo-network/payload-model'\n\n/** @deprecated use EvmCallDiviner instead */\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\n/** @deprecated use EvmCallDiviner instead */\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractDivinerConfigSchema\n static override labels: CryptoContractDivinerLabels = { ...super.labels, ...CryptoContractDivinerLabels }\n\n protected static findCallResult<TResult = string>(\n address: string,\n functionName: string,\n payloads: CryptoContractFunctionCallResult[],\n ): TResult | undefined {\n const foundPayload = payloads.find(payload => payload.functionName === functionName && payload.address === address)\n return asCryptoContractFunctionCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n // eslint-disable-next-line unicorn/no-array-reduce\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),\n schema: ContractInfoSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<ContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n // eslint-disable-next-line unicorn/no-array-reduce\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter(callResult => callResult.address === address)\n const info: ContractInfo = {\n results: await this.reduceResults(foundCallResults),\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return info\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']> {\n // eslint-disable-next-line unicorn/no-array-reduce\n return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\n// eslint-disable-next-line import/no-deprecated\nimport { CryptoContractFunctionReadWitness } from './Witness.ts'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallFailure,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionCallSuccess,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\n/** @deprecated use EvmCallWitness instead */\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\n/** @deprecated use EvmCallWitness instead */\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractFunctionReadWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: CryptoContractFunctionCall[] = []): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {\n const { providers } = this.params\n const provider = providers[Date.now() % providers.length] // pick a random provider\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, () => 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n const transformedResult = typeof result === 'bigint' ? result.toString(16) : result\n const observation: CryptoContractFunctionCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n } catch (ex) {\n const error = ex as Error & { code: string }\n console.log(`Error [${this.config.name}]: ${error.code}`)\n const observation: CryptoContractFunctionCallFailure = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n error: error.code,\n functionName: validatedFunctionName,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }\n }),\n )\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":"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","names":["result","import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_payload_model"]}
@@ -1,17 +1,18 @@
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/Diviner/Diviner.ts
10
2
  import { assertEx } from "@xylabs/assert";
11
- import { asCryptoContractFunctionCallSuccess, ContractInfoSchema, CryptoContractDivinerConfigSchema, CryptoContractDivinerLabels, CryptoContractFunctionCallResultSchema } from "@xyo-network/crypto-contract-function-read-payload-plugin";
3
+ import {
4
+ asCryptoContractFunctionCallSuccess,
5
+ ContractInfoSchema,
6
+ CryptoContractDivinerConfigSchema,
7
+ CryptoContractDivinerLabels,
8
+ CryptoContractFunctionCallResultSchema
9
+ } from "@xyo-network/crypto-contract-function-read-payload-plugin";
12
10
  import { AbstractDiviner } from "@xyo-network/diviner-abstract";
13
11
  import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
14
- var _CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner {
12
+ var CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner {
13
+ static configSchemas = [...super.configSchemas, CryptoContractDivinerConfigSchema];
14
+ static defaultConfigSchema = CryptoContractDivinerConfigSchema;
15
+ static labels = { ...super.labels, ...CryptoContractDivinerLabels };
15
16
  static findCallResult(address, functionName, payloads) {
16
17
  var _a;
17
18
  const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
@@ -43,14 +44,16 @@ var _CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDivine
43
44
  return prev;
44
45
  }, {})
45
46
  );
46
- const result = await Promise.all(addresses.map(async (address) => {
47
- const foundCallResults = callResults.filter((callResult) => callResult.address === address);
48
- const info = {
49
- results: await this.reduceResults(foundCallResults),
50
- ...this.contractInfoRequiredFields(foundCallResults)
51
- };
52
- return info;
53
- }));
47
+ const result = await Promise.all(
48
+ addresses.map(async (address) => {
49
+ const foundCallResults = callResults.filter((callResult) => callResult.address === address);
50
+ const info = {
51
+ results: await this.reduceResults(foundCallResults),
52
+ ...this.contractInfoRequiredFields(foundCallResults)
53
+ };
54
+ return info;
55
+ })
56
+ );
54
57
  return result;
55
58
  }
56
59
  reduceResults(callResults) {
@@ -61,17 +64,6 @@ var _CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDivine
61
64
  }, {});
62
65
  }
63
66
  };
64
- __name(_CryptoContractDiviner, "CryptoContractDiviner");
65
- __publicField(_CryptoContractDiviner, "configSchemas", [
66
- ...__superGet(_CryptoContractDiviner, _CryptoContractDiviner, "configSchemas"),
67
- CryptoContractDivinerConfigSchema
68
- ]);
69
- __publicField(_CryptoContractDiviner, "defaultConfigSchema", CryptoContractDivinerConfigSchema);
70
- __publicField(_CryptoContractDiviner, "labels", {
71
- ...__superGet(_CryptoContractDiviner, _CryptoContractDiviner, "labels"),
72
- ...CryptoContractDivinerLabels
73
- });
74
- var CryptoContractDiviner = _CryptoContractDiviner;
75
67
 
76
68
  // src/Plugin.ts
77
69
  import { NftSchema } from "@xyo-network/crypto-nft-payload-plugin";
@@ -81,51 +73,57 @@ import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
81
73
  // src/Witness.ts
82
74
  import { assertEx as assertEx2 } from "@xylabs/assert";
83
75
  import { AbstractWitness } from "@xyo-network/abstract-witness";
84
- import { CryptoContractFunctionCallResultSchema as CryptoContractFunctionCallResultSchema2, CryptoContractFunctionCallSchema, CryptoContractFunctionReadWitnessConfigSchema } from "@xyo-network/crypto-contract-function-read-payload-plugin";
76
+ import {
77
+ CryptoContractFunctionCallResultSchema as CryptoContractFunctionCallResultSchema2,
78
+ CryptoContractFunctionCallSchema,
79
+ CryptoContractFunctionReadWitnessConfigSchema
80
+ } from "@xyo-network/crypto-contract-function-read-payload-plugin";
85
81
  import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
86
82
  import { Contract } from "ethers";
87
- var _CryptoContractFunctionReadWitness = class _CryptoContractFunctionReadWitness extends AbstractWitness {
83
+ var CryptoContractFunctionReadWitness = class extends AbstractWitness {
84
+ static configSchemas = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema];
85
+ static defaultConfigSchema = CryptoContractFunctionReadWitnessConfigSchema;
88
86
  get abi() {
89
87
  return assertEx2(this.config.abi, () => "Missing abi");
90
88
  }
91
89
  async observeHandler(inPayloads = []) {
92
90
  await this.started("throw");
93
91
  try {
94
- const observations = await Promise.all(inPayloads.filter(isPayloadOfSchemaType2(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
95
- const { providers } = this.params;
96
- const provider = providers[Date.now() % providers.length];
97
- const validatedAddress = assertEx2(address ?? this.config.address, () => "Missing address");
98
- const validatedFunctionName = assertEx2(functionName ?? this.config.functionName, () => "Missing address");
99
- const mergedArgs = [
100
- ...args ?? this.config.args ?? []
101
- ];
102
- const contract = new Contract(validatedAddress, this.abi, provider);
103
- try {
104
- const result = await contract[validatedFunctionName](...mergedArgs);
105
- const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
106
- const observation = {
107
- address: validatedAddress,
108
- args: mergedArgs,
109
- chainId: Number((await provider.getNetwork()).chainId),
110
- functionName: validatedFunctionName,
111
- result: transformedResult,
112
- schema: CryptoContractFunctionCallResultSchema2
113
- };
114
- return observation;
115
- } catch (ex) {
116
- const error = ex;
117
- console.log(`Error [${this.config.name}]: ${error.code}`);
118
- const observation = {
119
- address: validatedAddress,
120
- args: mergedArgs,
121
- chainId: Number((await provider.getNetwork()).chainId),
122
- error: error.code,
123
- functionName: validatedFunctionName,
124
- schema: CryptoContractFunctionCallResultSchema2
125
- };
126
- return observation;
127
- }
128
- }));
92
+ const observations = await Promise.all(
93
+ inPayloads.filter(isPayloadOfSchemaType2(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
94
+ const { providers } = this.params;
95
+ const provider = providers[Date.now() % providers.length];
96
+ const validatedAddress = assertEx2(address ?? this.config.address, () => "Missing address");
97
+ const validatedFunctionName = assertEx2(functionName ?? this.config.functionName, () => "Missing address");
98
+ const mergedArgs = [...args ?? this.config.args ?? []];
99
+ const contract = new Contract(validatedAddress, this.abi, provider);
100
+ try {
101
+ const result = await contract[validatedFunctionName](...mergedArgs);
102
+ const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
103
+ const observation = {
104
+ address: validatedAddress,
105
+ args: mergedArgs,
106
+ chainId: Number((await provider.getNetwork()).chainId),
107
+ functionName: validatedFunctionName,
108
+ result: transformedResult,
109
+ schema: CryptoContractFunctionCallResultSchema2
110
+ };
111
+ return observation;
112
+ } catch (ex) {
113
+ const error = ex;
114
+ console.log(`Error [${this.config.name}]: ${error.code}`);
115
+ const observation = {
116
+ address: validatedAddress,
117
+ args: mergedArgs,
118
+ chainId: Number((await provider.getNetwork()).chainId),
119
+ error: error.code,
120
+ functionName: validatedFunctionName,
121
+ schema: CryptoContractFunctionCallResultSchema2
122
+ };
123
+ return observation;
124
+ }
125
+ })
126
+ );
129
127
  return observations;
130
128
  } catch (ex) {
131
129
  const error = ex;
@@ -134,26 +132,17 @@ var _CryptoContractFunctionReadWitness = class _CryptoContractFunctionReadWitnes
134
132
  }
135
133
  }
136
134
  };
137
- __name(_CryptoContractFunctionReadWitness, "CryptoContractFunctionReadWitness");
138
- __publicField(_CryptoContractFunctionReadWitness, "configSchemas", [
139
- ...__superGet(_CryptoContractFunctionReadWitness, _CryptoContractFunctionReadWitness, "configSchemas"),
140
- CryptoContractFunctionReadWitnessConfigSchema
141
- ]);
142
- __publicField(_CryptoContractFunctionReadWitness, "defaultConfigSchema", CryptoContractFunctionReadWitnessConfigSchema);
143
- var CryptoContractFunctionReadWitness = _CryptoContractFunctionReadWitness;
144
135
 
145
136
  // src/Plugin.ts
146
- var CryptoContractFunctionReadWitnessPlugin = /* @__PURE__ */ __name(() => createPayloadSetWitnessPlugin({
147
- required: {
148
- [NftSchema]: 1
149
- },
150
- schema: PayloadSetSchema
151
- }, {
152
- witness: /* @__PURE__ */ __name(async (params) => {
153
- const result = await CryptoContractFunctionReadWitness.create(params);
154
- return result;
155
- }, "witness")
156
- }), "CryptoContractFunctionReadWitnessPlugin");
137
+ var CryptoContractFunctionReadWitnessPlugin = () => createPayloadSetWitnessPlugin(
138
+ { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },
139
+ {
140
+ witness: async (params) => {
141
+ const result = await CryptoContractFunctionReadWitness.create(params);
142
+ return result;
143
+ }
144
+ }
145
+ );
157
146
  export {
158
147
  CryptoContractDiviner,
159
148
  CryptoContractFunctionReadWitness,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner/Diviner.ts","../../src/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport {\n asCryptoContractFunctionCallSuccess,\n ContractInfo,\n ContractInfoSchema,\n CryptoContractDivinerConfigSchema,\n CryptoContractDivinerLabels,\n CryptoContractDivinerParams,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { isPayloadOfSchemaType, Payload, Schema } from '@xyo-network/payload-model'\n\n/** @deprecated use EvmCallDiviner instead */\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\n/** @deprecated use EvmCallDiviner instead */\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractDivinerConfigSchema\n static override labels: CryptoContractDivinerLabels = { ...super.labels, ...CryptoContractDivinerLabels }\n\n protected static findCallResult<TResult = string>(\n address: string,\n functionName: string,\n payloads: CryptoContractFunctionCallResult[],\n ): TResult | undefined {\n const foundPayload = payloads.find(payload => payload.functionName === functionName && payload.address === address)\n return asCryptoContractFunctionCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n // eslint-disable-next-line unicorn/no-array-reduce\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),\n schema: ContractInfoSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<ContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n // eslint-disable-next-line unicorn/no-array-reduce\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter(callResult => callResult.address === address)\n const info: ContractInfo = {\n results: await this.reduceResults(foundCallResults),\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return info\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']> {\n // eslint-disable-next-line unicorn/no-array-reduce\n return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\n// eslint-disable-next-line import/no-deprecated\nimport { CryptoContractFunctionReadWitness } from './Witness.ts'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallFailure,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionCallSuccess,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\n/** @deprecated use EvmCallWitness instead */\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\n/** @deprecated use EvmCallWitness instead */\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractFunctionReadWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: CryptoContractFunctionCall[] = []): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {\n const { providers } = this.params\n const provider = providers[Date.now() % providers.length] // pick a random provider\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, () => 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n const transformedResult = typeof result === 'bigint' ? result.toString(16) : result\n const observation: CryptoContractFunctionCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n } catch (ex) {\n const error = ex as Error & { code: string }\n console.log(`Error [${this.config.name}]: ${error.code}`)\n const observation: CryptoContractFunctionCallFailure = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n error: error.code,\n functionName: validatedFunctionName,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }\n }),\n )\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":"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","names":["assertEx","asCryptoContractFunctionCallSuccess","ContractInfoSchema","CryptoContractDivinerConfigSchema","CryptoContractDivinerLabels","CryptoContractFunctionCallResultSchema","AbstractDiviner","isPayloadOfSchemaType","CryptoContractDiviner","AbstractDiviner","findCallResult","address","functionName","payloads","foundPayload","find","payload","asCryptoContractFunctionCallSuccess","result","matchingExistingField","objs","field","expectedValue","at","didNotMatch","reduce","prev","obj","undefined","contractInfoRequiredFields","callResults","assertEx","chainId","schema","ContractInfoSchema","divineHandler","inPayloads","filter","isPayloadOfSchemaType","CryptoContractFunctionCallResultSchema","addresses","Object","keys","Promise","all","map","foundCallResults","callResult","info","results","reduceResults","configSchemas","CryptoContractDivinerConfigSchema","defaultConfigSchema","labels","CryptoContractDivinerLabels","NftSchema","PayloadSetSchema","createPayloadSetWitnessPlugin","assertEx","AbstractWitness","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","CryptoContractFunctionReadWitnessConfigSchema","isPayloadOfSchemaType","Contract","CryptoContractFunctionReadWitness","AbstractWitness","abi","assertEx","config","observeHandler","inPayloads","started","observations","Promise","all","filter","isPayloadOfSchemaType","CryptoContractFunctionCallSchema","map","functionName","args","address","providers","params","provider","Date","now","length","validatedAddress","validatedFunctionName","mergedArgs","contract","Contract","result","transformedResult","toString","observation","chainId","Number","getNetwork","schema","CryptoContractFunctionCallResultSchema","ex","error","console","log","name","code","message","configSchemas","CryptoContractFunctionReadWitnessConfigSchema","defaultConfigSchema","CryptoContractFunctionReadWitnessPlugin","createPayloadSetWitnessPlugin","required","NftSchema","schema","PayloadSetSchema","witness","params","result","CryptoContractFunctionReadWitness","create"]}
1
+ {"version":3,"sources":["../../src/Diviner/Diviner.ts","../../src/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport {\n asCryptoContractFunctionCallSuccess,\n ContractInfo,\n ContractInfoSchema,\n CryptoContractDivinerConfigSchema,\n CryptoContractDivinerLabels,\n CryptoContractDivinerParams,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { isPayloadOfSchemaType, Payload, Schema } from '@xyo-network/payload-model'\n\n/** @deprecated use EvmCallDiviner instead */\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\n/** @deprecated use EvmCallDiviner instead */\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractDivinerConfigSchema\n static override labels: CryptoContractDivinerLabels = { ...super.labels, ...CryptoContractDivinerLabels }\n\n protected static findCallResult<TResult = string>(\n address: string,\n functionName: string,\n payloads: CryptoContractFunctionCallResult[],\n ): TResult | undefined {\n const foundPayload = payloads.find(payload => payload.functionName === functionName && payload.address === address)\n return asCryptoContractFunctionCallSuccess(foundPayload)?.result as TResult | undefined\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T): R | undefined {\n const expectedValue = objs.at(0)?.[field] as R\n // eslint-disable-next-line unicorn/no-array-reduce\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),\n schema: ContractInfoSchema,\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<ContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n // eslint-disable-next-line unicorn/no-array-reduce\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter(callResult => callResult.address === address)\n const info: ContractInfo = {\n results: await this.reduceResults(foundCallResults),\n ...this.contractInfoRequiredFields(foundCallResults),\n }\n return info\n }),\n )\n\n return result\n }\n\n protected reduceResults(callResults: CryptoContractFunctionCallResult[]): Promisable<ContractInfo['results']> {\n // eslint-disable-next-line unicorn/no-array-reduce\n return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\n// eslint-disable-next-line import/no-deprecated\nimport { CryptoContractFunctionReadWitness } from './Witness.ts'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallFailure,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionCallSuccess,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType, Schema } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\n/** @deprecated use EvmCallWitness instead */\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\n/** @deprecated use EvmCallWitness instead */\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoContractFunctionReadWitnessConfigSchema\n\n get abi() {\n return assertEx(this.config.abi, () => 'Missing abi')\n }\n\n protected override async observeHandler(inPayloads: CryptoContractFunctionCall[] = []): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {\n const { providers } = this.params\n const provider = providers[Date.now() % providers.length] // pick a random provider\n const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')\n const validatedFunctionName = assertEx(functionName ?? this.config.functionName, () => 'Missing address')\n const mergedArgs = [...(args ?? this.config.args ?? [])]\n\n const contract = new Contract(validatedAddress, this.abi, provider)\n try {\n const result = await contract[validatedFunctionName](...mergedArgs)\n const transformedResult = typeof result === 'bigint' ? result.toString(16) : result\n const observation: CryptoContractFunctionCallSuccess = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n functionName: validatedFunctionName,\n result: transformedResult,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n } catch (ex) {\n const error = ex as Error & { code: string }\n console.log(`Error [${this.config.name}]: ${error.code}`)\n const observation: CryptoContractFunctionCallFailure = {\n address: validatedAddress,\n args: mergedArgs,\n chainId: Number((await provider.getNetwork()).chainId),\n error: error.code,\n functionName: validatedFunctionName,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }\n }),\n )\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":"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","names":["result","assertEx","CryptoContractFunctionCallResultSchema","isPayloadOfSchemaType"]}
package/package.json CHANGED
@@ -10,42 +10,42 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.6.8",
14
- "@xylabs/promise": "^3.6.8",
15
- "@xyo-network/abstract-witness": "^2.111.2",
16
- "@xyo-network/crypto-contract-function-read-payload-plugin": "^2.99.5",
17
- "@xyo-network/crypto-nft-payload-plugin": "^2.99.5",
18
- "@xyo-network/diviner-abstract": "^2.111.2",
19
- "@xyo-network/module-model": "^2.111.2",
20
- "@xyo-network/payload-model": "^2.111.2",
21
- "@xyo-network/payloadset-plugin": "^2.111.2",
22
- "@xyo-network/witness-model": "^2.111.2",
13
+ "@xylabs/assert": "^3.6.12",
14
+ "@xylabs/promise": "^3.6.12",
15
+ "@xyo-network/abstract-witness": "^2.111.3",
16
+ "@xyo-network/crypto-contract-function-read-payload-plugin": "^2.99.6",
17
+ "@xyo-network/crypto-nft-payload-plugin": "^2.99.6",
18
+ "@xyo-network/diviner-abstract": "^2.111.3",
19
+ "@xyo-network/module-model": "^2.111.3",
20
+ "@xyo-network/payload-model": "^2.111.3",
21
+ "@xyo-network/payloadset-plugin": "^2.111.3",
22
+ "@xyo-network/witness-model": "^2.111.3",
23
23
  "ethers": "^6.13.2"
24
24
  },
25
25
  "devDependencies": {
26
- "@xylabs/delay": "^3.6.8",
27
- "@xylabs/hex": "^3.6.8",
28
- "@xylabs/jest-helpers": "^3.6.8",
29
- "@xylabs/ts-scripts-yarn3": "^3.15.13",
30
- "@xylabs/tsconfig": "^3.15.13",
31
- "@xyo-network/account": "^2.111.2",
32
- "@xyo-network/archivist-memory": "^2.111.2",
33
- "@xyo-network/diviner-boundwitness-memory": "^2.111.2",
34
- "@xyo-network/diviner-jsonpatch": "^2.111.2",
35
- "@xyo-network/diviner-jsonpath-aggregate-memory": "^2.111.2",
36
- "@xyo-network/diviner-model": "^2.111.2",
37
- "@xyo-network/diviner-payload-memory": "^2.111.2",
38
- "@xyo-network/diviner-payload-model": "^2.111.2",
39
- "@xyo-network/diviner-range": "^2.111.2",
40
- "@xyo-network/diviner-temporal-indexing": "^2.111.2",
41
- "@xyo-network/evm-nft-id-payload-plugin": "^2.99.5",
42
- "@xyo-network/manifest": "^2.111.2",
43
- "@xyo-network/module-factory-locator": "^2.111.2",
44
- "@xyo-network/node-memory": "^2.111.2",
45
- "@xyo-network/open-zeppelin-typechain": "^3.0.5",
46
- "@xyo-network/sentinel-model": "^2.111.2",
47
- "@xyo-network/witness-blockchain-abstract": "^2.111.2",
48
- "@xyo-network/witness-timestamp": "^2.111.2",
26
+ "@xylabs/delay": "^3.6.12",
27
+ "@xylabs/hex": "^3.6.12",
28
+ "@xylabs/jest-helpers": "^3.6.12",
29
+ "@xylabs/ts-scripts-yarn3": "^3.15.14",
30
+ "@xylabs/tsconfig": "^3.15.14",
31
+ "@xyo-network/account": "^2.111.3",
32
+ "@xyo-network/archivist-memory": "^2.111.3",
33
+ "@xyo-network/diviner-boundwitness-memory": "^2.111.3",
34
+ "@xyo-network/diviner-jsonpatch": "^2.111.3",
35
+ "@xyo-network/diviner-jsonpath-aggregate-memory": "^2.111.3",
36
+ "@xyo-network/diviner-model": "^2.111.3",
37
+ "@xyo-network/diviner-payload-memory": "^2.111.3",
38
+ "@xyo-network/diviner-payload-model": "^2.111.3",
39
+ "@xyo-network/diviner-range": "^2.111.3",
40
+ "@xyo-network/diviner-temporal-indexing": "^2.111.3",
41
+ "@xyo-network/evm-nft-id-payload-plugin": "^2.99.6",
42
+ "@xyo-network/manifest": "^2.111.3",
43
+ "@xyo-network/module-factory-locator": "^2.111.3",
44
+ "@xyo-network/node-memory": "^2.111.3",
45
+ "@xyo-network/open-zeppelin-typechain": "^3.1.0",
46
+ "@xyo-network/sentinel-model": "^2.111.3",
47
+ "@xyo-network/witness-blockchain-abstract": "^2.111.3",
48
+ "@xyo-network/witness-timestamp": "^2.111.3",
49
49
  "async-mutex": "^0.5.0",
50
50
  "jest": "^29.7.0",
51
51
  "typescript": "^5.5.4"
@@ -89,6 +89,6 @@
89
89
  "url": "https://github.com/XYOracleNetwork/plugins.git"
90
90
  },
91
91
  "sideEffects": false,
92
- "version": "2.99.5",
92
+ "version": "2.99.6",
93
93
  "type": "module"
94
94
  }