@xyo-network/crypto-contract-function-read-plugin 2.97.0 → 2.98.0

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.
Files changed (53) hide show
  1. package/dist/browser/Diviner/Diviner.d.cts.map +1 -1
  2. package/dist/browser/Diviner/Diviner.d.mts.map +1 -1
  3. package/dist/browser/Diviner/Diviner.d.ts.map +1 -1
  4. package/dist/browser/Plugin.d.cts.map +1 -1
  5. package/dist/browser/Plugin.d.mts.map +1 -1
  6. package/dist/browser/Plugin.d.ts.map +1 -1
  7. package/dist/browser/Witness.d.cts.map +1 -1
  8. package/dist/browser/Witness.d.mts.map +1 -1
  9. package/dist/browser/Witness.d.ts.map +1 -1
  10. package/dist/browser/index.cjs +166 -1
  11. package/dist/browser/index.cjs.map +1 -1
  12. package/dist/browser/index.d.cts.map +1 -1
  13. package/dist/browser/index.d.mts.map +1 -1
  14. package/dist/browser/index.d.ts.map +1 -1
  15. package/dist/browser/index.js +153 -1
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/neutral/Diviner/Diviner.d.cts.map +1 -1
  18. package/dist/neutral/Diviner/Diviner.d.mts.map +1 -1
  19. package/dist/neutral/Diviner/Diviner.d.ts.map +1 -1
  20. package/dist/neutral/Plugin.d.cts.map +1 -1
  21. package/dist/neutral/Plugin.d.mts.map +1 -1
  22. package/dist/neutral/Plugin.d.ts.map +1 -1
  23. package/dist/neutral/Witness.d.cts.map +1 -1
  24. package/dist/neutral/Witness.d.mts.map +1 -1
  25. package/dist/neutral/Witness.d.ts.map +1 -1
  26. package/dist/neutral/index.cjs +166 -1
  27. package/dist/neutral/index.cjs.map +1 -1
  28. package/dist/neutral/index.d.cts.map +1 -1
  29. package/dist/neutral/index.d.mts.map +1 -1
  30. package/dist/neutral/index.d.ts.map +1 -1
  31. package/dist/neutral/index.js +153 -1
  32. package/dist/neutral/index.js.map +1 -1
  33. package/dist/node/Diviner/Diviner.d.cts.map +1 -1
  34. package/dist/node/Diviner/Diviner.d.mts.map +1 -1
  35. package/dist/node/Diviner/Diviner.d.ts.map +1 -1
  36. package/dist/node/Plugin.d.cts.map +1 -1
  37. package/dist/node/Plugin.d.mts.map +1 -1
  38. package/dist/node/Plugin.d.ts.map +1 -1
  39. package/dist/node/Witness.d.cts.map +1 -1
  40. package/dist/node/Witness.d.mts.map +1 -1
  41. package/dist/node/Witness.d.ts.map +1 -1
  42. package/dist/node/index.cjs +175 -1
  43. package/dist/node/index.cjs.map +1 -1
  44. package/dist/node/index.d.cts.map +1 -1
  45. package/dist/node/index.d.mts.map +1 -1
  46. package/dist/node/index.d.ts.map +1 -1
  47. package/dist/node/index.js +156 -1
  48. package/dist/node/index.js.map +1 -1
  49. package/package.json +34 -34
  50. package/src/Diviner/Diviner.ts +2 -0
  51. package/src/Plugin.ts +3 -1
  52. package/src/Witness.ts +1 -0
  53. package/src/index.ts +1 -0
@@ -1,2 +1,176 @@
1
- "use strict";var h=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var A=(n,t)=>{for(var r in t)h(n,r,{get:t[r],enumerable:!0})},k=(n,t,r,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of D(t))!M.call(n,o)&&o!==r&&h(n,o,{get:()=>t[o],enumerable:!(e=E(t,o))||e.enumerable});return n};var $=n=>k(h({},"__esModule",{value:!0}),n);var q={};A(q,{CryptoContractDiviner:()=>F,CryptoContractFunctionReadWitness:()=>C,CryptoContractFunctionReadWitnessPlugin:()=>R,default:()=>R});module.exports=$(q);var g=require("@xylabs/assert"),i=require("@xyo-network/crypto-contract-function-read-payload-plugin"),P=require("@xyo-network/diviner-abstract"),S=require("@xyo-network/payload-model"),F=class n extends P.AbstractDiviner{static configSchemas=[...super.configSchemas,i.CryptoContractDivinerConfigSchema];static defaultConfigSchema=i.CryptoContractDivinerConfigSchema;static labels={...super.labels,...i.CryptoContractDivinerLabels};static findCallResult(t,r,e){var s;let o=e.find(a=>a.functionName===r&&a.address===t);return(s=(0,i.asCryptoContractFunctionCallSuccess)(o))==null?void 0:s.result}static matchingExistingField(t,r){var s;let e=(s=t.at(0))==null?void 0:s[r];return t.reduce((a,d)=>a||d[r]!==e,!1)?void 0:e}contractInfoRequiredFields(t){return{address:(0,g.assertEx)(n.matchingExistingField(t,"address"),()=>"Mismatched address"),chainId:(0,g.assertEx)(n.matchingExistingField(t,"chainId"),()=>"Mismatched chainId"),schema:i.ContractInfoSchema}}async divineHandler(t=[]){let r=t.filter((0,S.isPayloadOfSchemaType)(i.CryptoContractFunctionCallResultSchema)),e=Object.keys(r.reduce((s,a)=>(a.address&&(s[a.address]=!0),s),{}));return await Promise.all(e.map(async s=>{let a=r.filter(l=>l.address===s);return{results:await this.reduceResults(a),...this.contractInfoRequiredFields(a)}}))}reduceResults(t){return t.reduce((r,e)=>{var o;return r[e.functionName]=(o=(0,i.asCryptoContractFunctionCallSuccess)(e))==null?void 0:o.result,r},{})}};var T=require("@xyo-network/crypto-nft-payload-plugin"),w=require("@xyo-network/payload-model"),I=require("@xyo-network/payloadset-plugin");var p=require("@xylabs/assert"),v=require("@xyo-network/abstract-witness"),c=require("@xyo-network/crypto-contract-function-read-payload-plugin"),b=require("@xyo-network/payload-model"),x=require("ethers"),C=class extends v.AbstractWitness{static configSchemas=[...super.configSchemas,c.CryptoContractFunctionReadWitnessConfigSchema];static defaultConfigSchema=c.CryptoContractFunctionReadWitnessConfigSchema;get abi(){return(0,p.assertEx)(this.config.abi,()=>"Missing abi")}async observeHandler(t=[]){await this.started("throw");try{return await Promise.all(t.filter((0,b.isPayloadOfSchemaType)(c.CryptoContractFunctionCallSchema)).map(async({functionName:e,args:o,address:s})=>{let{providers:a}=this.params,d=a[Date.now()%a.length],l=(0,p.assertEx)(s??this.config.address,()=>"Missing address"),f=(0,p.assertEx)(e??this.config.functionName,()=>"Missing address"),y=[...o??this.config.args??[]],W=new x.Contract(l,this.abi,d);try{let u=await W[f](...y),m=typeof u=="bigint"?u.toString(16):u;return{address:l,args:y,chainId:Number((await d.getNetwork()).chainId),functionName:f,result:m,schema:c.CryptoContractFunctionCallResultSchema}}catch(u){let m=u;return console.log(`Error [${this.config.name}]: ${m.code}`),{address:l,args:y,chainId:Number((await d.getNetwork()).chainId),error:m.code,functionName:f,schema:c.CryptoContractFunctionCallResultSchema}}}))}catch(r){let e=r;throw console.log(`Error [${this.config.name}]: ${e.message}`),e}}};var R=()=>(0,I.createPayloadSetWitnessPlugin)({required:{[T.NftSchema]:1},schema:w.PayloadSetSchema},{witness:async n=>await C.create(n)});0&&(module.exports={CryptoContractDiviner,CryptoContractFunctionReadWitness,CryptoContractFunctionReadWitnessPlugin});
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ CryptoContractDiviner: () => CryptoContractDiviner,
24
+ CryptoContractFunctionReadWitness: () => CryptoContractFunctionReadWitness,
25
+ CryptoContractFunctionReadWitnessPlugin: () => CryptoContractFunctionReadWitnessPlugin,
26
+ default: () => CryptoContractFunctionReadWitnessPlugin
27
+ });
28
+ module.exports = __toCommonJS(src_exports);
29
+
30
+ // src/Diviner/Diviner.ts
31
+ var import_assert = require("@xylabs/assert");
32
+ var import_crypto_contract_function_read_payload_plugin = require("@xyo-network/crypto-contract-function-read-payload-plugin");
33
+ var import_diviner_abstract = require("@xyo-network/diviner-abstract");
34
+ var import_payload_model = require("@xyo-network/payload-model");
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 };
39
+ static findCallResult(address, functionName, payloads) {
40
+ var _a;
41
+ const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
42
+ return (_a = (0, import_crypto_contract_function_read_payload_plugin.asCryptoContractFunctionCallSuccess)(foundPayload)) == null ? void 0 : _a.result;
43
+ }
44
+ static matchingExistingField(objs, field) {
45
+ var _a;
46
+ const expectedValue = (_a = objs.at(0)) == null ? void 0 : _a[field];
47
+ const didNotMatch = objs.reduce((prev, obj) => {
48
+ return prev || obj[field] !== expectedValue;
49
+ }, false);
50
+ return didNotMatch ? void 0 : expectedValue;
51
+ }
52
+ contractInfoRequiredFields(callResults) {
53
+ return {
54
+ // eslint-disable-next-line deprecation/deprecation
55
+ address: (0, import_assert.assertEx)(_CryptoContractDiviner.matchingExistingField(callResults, "address"), () => "Mismatched address"),
56
+ // eslint-disable-next-line deprecation/deprecation
57
+ chainId: (0, import_assert.assertEx)(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), () => "Mismatched chainId"),
58
+ schema: import_crypto_contract_function_read_payload_plugin.ContractInfoSchema
59
+ };
60
+ }
61
+ async divineHandler(inPayloads = []) {
62
+ const callResults = inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallResultSchema));
63
+ const addresses = Object.keys(
64
+ // eslint-disable-next-line unicorn/no-array-reduce
65
+ callResults.reduce((prev, result2) => {
66
+ if (result2.address) {
67
+ prev[result2.address] = true;
68
+ }
69
+ return prev;
70
+ }, {})
71
+ );
72
+ const result = await Promise.all(
73
+ 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
+ })
81
+ );
82
+ return result;
83
+ }
84
+ reduceResults(callResults) {
85
+ return callResults.reduce((prev, callResult) => {
86
+ var _a;
87
+ prev[callResult.functionName] = (_a = (0, import_crypto_contract_function_read_payload_plugin.asCryptoContractFunctionCallSuccess)(callResult)) == null ? void 0 : _a.result;
88
+ return prev;
89
+ }, {});
90
+ }
91
+ };
92
+
93
+ // src/Plugin.ts
94
+ var import_crypto_nft_payload_plugin = require("@xyo-network/crypto-nft-payload-plugin");
95
+ var import_payload_model3 = require("@xyo-network/payload-model");
96
+ var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
97
+
98
+ // src/Witness.ts
99
+ var import_assert2 = require("@xylabs/assert");
100
+ var import_abstract_witness = require("@xyo-network/abstract-witness");
101
+ var import_crypto_contract_function_read_payload_plugin2 = require("@xyo-network/crypto-contract-function-read-payload-plugin");
102
+ var import_payload_model2 = require("@xyo-network/payload-model");
103
+ var import_ethers = require("ethers");
104
+ var CryptoContractFunctionReadWitness = class extends import_abstract_witness.AbstractWitness {
105
+ static configSchemas = [...super.configSchemas, import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionReadWitnessConfigSchema];
106
+ static defaultConfigSchema = import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionReadWitnessConfigSchema;
107
+ get abi() {
108
+ return (0, import_assert2.assertEx)(this.config.abi, () => "Missing abi");
109
+ }
110
+ async observeHandler(inPayloads = []) {
111
+ await this.started("throw");
112
+ try {
113
+ const observations = await Promise.all(
114
+ inPayloads.filter((0, import_payload_model2.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
115
+ const { providers } = this.params;
116
+ const provider = providers[Date.now() % providers.length];
117
+ const validatedAddress = (0, import_assert2.assertEx)(address ?? this.config.address, () => "Missing address");
118
+ const validatedFunctionName = (0, import_assert2.assertEx)(functionName ?? this.config.functionName, () => "Missing address");
119
+ const mergedArgs = [...args ?? this.config.args ?? []];
120
+ const contract = new import_ethers.Contract(validatedAddress, this.abi, provider);
121
+ try {
122
+ const result = await contract[validatedFunctionName](...mergedArgs);
123
+ const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
124
+ const observation = {
125
+ address: validatedAddress,
126
+ args: mergedArgs,
127
+ chainId: Number((await provider.getNetwork()).chainId),
128
+ functionName: validatedFunctionName,
129
+ result: transformedResult,
130
+ schema: import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallResultSchema
131
+ };
132
+ return observation;
133
+ } catch (ex) {
134
+ const error = ex;
135
+ console.log(`Error [${this.config.name}]: ${error.code}`);
136
+ const observation = {
137
+ address: validatedAddress,
138
+ args: mergedArgs,
139
+ chainId: Number((await provider.getNetwork()).chainId),
140
+ error: error.code,
141
+ functionName: validatedFunctionName,
142
+ schema: import_crypto_contract_function_read_payload_plugin2.CryptoContractFunctionCallResultSchema
143
+ };
144
+ return observation;
145
+ }
146
+ })
147
+ );
148
+ return observations;
149
+ } catch (ex) {
150
+ const error = ex;
151
+ console.log(`Error [${this.config.name}]: ${error.message}`);
152
+ throw error;
153
+ }
154
+ }
155
+ };
156
+
157
+ // src/Plugin.ts
158
+ var CryptoContractFunctionReadWitnessPlugin = () => (
159
+ // eslint-disable-next-line deprecation/deprecation, import/no-deprecated
160
+ (0, import_payloadset_plugin.createPayloadSetWitnessPlugin)(
161
+ { required: { [import_crypto_nft_payload_plugin.NftSchema]: 1 }, schema: import_payload_model3.PayloadSetSchema },
162
+ {
163
+ witness: async (params) => {
164
+ const result = await CryptoContractFunctionReadWitness.create(params);
165
+ return result;
166
+ }
167
+ }
168
+ )
169
+ );
170
+ // Annotate the CommonJS export names for ESM import in node:
171
+ 0 && (module.exports = {
172
+ CryptoContractDiviner,
173
+ CryptoContractFunctionReadWitness,
174
+ CryptoContractFunctionReadWitnessPlugin
175
+ });
2
176
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner'\nexport { CryptoContractFunctionReadWitnessPlugin, CryptoContractFunctionReadWitnessPlugin as default } from './Plugin'\nexport * from './Witness'\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","/* eslint-disable import/no-deprecated */\nimport { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\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":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,EAAA,sCAAAC,EAAA,4CAAAC,EAAA,YAAAA,IAAA,eAAAC,EAAAL,GCAA,IAAAM,EAAyB,0BAEzBC,EASO,qEACPC,EAAgC,yCAChCC,EAAuD,sCAM1CC,EAAN,MAAMC,UAAyG,iBAAyB,CAC7I,OAAyB,cAA0B,CAAC,GAAG,MAAM,cAAe,mCAAiC,EAC7G,OAAyB,oBAA8B,oCACvD,OAAgB,OAAsC,CAAE,GAAG,MAAM,OAAQ,GAAG,6BAA4B,EAExG,OAAiB,eACfC,EACAC,EACAC,EACqB,CA5BzB,IAAAC,EA6BI,IAAMC,EAAeF,EAAS,KAAMG,GAAYA,EAAQ,eAAiBJ,GAAgBI,EAAQ,UAAYL,CAAO,EACpH,OAAOG,KAAA,uCAAoCC,CAAY,IAAhD,YAAAD,EAAmD,MAC5D,CAEA,OAAiB,sBAA+DG,EAAWC,EAA+B,CAjC5H,IAAAJ,EAkCI,IAAMK,GAAgBL,EAAAG,EAAK,GAAG,CAAC,IAAT,YAAAH,EAAaI,GAKnC,OAHoBD,EAAK,OAAO,CAACG,EAAMC,IAC9BD,GAAQC,EAAIH,CAAK,IAAMC,EAC7B,EAAK,EACa,OAAYA,CACnC,CAEU,2BAA2BG,EAA+D,CAClG,MAAO,CACL,WAAS,YAASZ,EAAsB,sBAAsBY,EAAa,SAAS,EAAG,IAAM,oBAAoB,EACjH,WAAS,YAASZ,EAAsB,sBAAsBY,EAAa,SAAS,EAAG,IAAM,oBAAoB,EACjH,OAAQ,oBACV,CACF,CAEA,MAAyB,cAAcC,EAAiD,CAAC,EAA4B,CACnH,IAAMD,EAAcC,EAAW,UAAO,yBAAwD,wCAAsC,CAAC,EAC/HC,EAAY,OAAO,KAEvBF,EAAY,OAAgC,CAACF,EAAMK,KAC7CA,EAAO,UACTL,EAAKK,EAAO,OAAO,EAAI,IAElBL,GACN,CAAC,CAAC,CACP,EAYA,OAXe,MAAM,QAAQ,IAC3BI,EAAU,IAAI,MAAOb,GAAY,CAC/B,IAAMe,EAAmBJ,EAAY,OAAQK,GAAeA,EAAW,UAAYhB,CAAO,EAK1F,MAJ2B,CACzB,QAAS,MAAM,KAAK,cAAce,CAAgB,EAClD,GAAG,KAAK,2BAA2BA,CAAgB,CACrD,CAEF,CAAC,CACH,CAGF,CAEU,cAAcJ,EAAsF,CAE5G,OAAOA,EAAY,OAAgC,CAACF,EAAMO,IAAe,CA7E7E,IAAAb,EA8EM,OAAAM,EAAKO,EAAW,YAAY,GAAIb,KAAA,uCAAoCa,CAAU,IAA9C,YAAAb,EAAiD,OAC1EM,CACT,EAAG,CAAC,CAAC,CACP,CACF,ECjFA,IAAAQ,EAA0B,kDAC1BC,EAAiC,sCACjCC,EAA8C,0CCH9C,IAAAC,EAAyB,0BACzBC,EAAgC,yCAChCC,EASO,qEAEPC,EAA8C,sCAE9CC,EAAmC,kBAWtBC,EAAN,cAEG,iBAAuF,CAC/F,OAAyB,cAA0B,CAAC,GAAG,MAAM,cAAe,+CAA6C,EACzH,OAAyB,oBAA8B,gDAEvD,IAAI,KAAM,CACR,SAAO,YAAS,KAAK,OAAO,IAAK,IAAM,aAAa,CACtD,CAEA,MAAyB,eAAeC,EAA2C,CAAC,EAAgD,CAClI,MAAM,KAAK,QAAQ,OAAO,EAC1B,GAAI,CAqCF,OApCqB,MAAM,QAAQ,IACjCA,EAAW,UAAO,yBAAsB,kCAAgC,CAAC,EAAE,IAAI,MAAO,CAAE,aAAAC,EAAc,KAAAC,EAAM,QAAAC,CAAQ,IAAM,CACxH,GAAM,CAAE,UAAAC,CAAU,EAAI,KAAK,OACrBC,EAAWD,EAAU,KAAK,IAAI,EAAIA,EAAU,MAAM,EAClDE,KAAmB,YAASH,GAAW,KAAK,OAAO,QAAS,IAAM,iBAAiB,EACnFI,KAAwB,YAASN,GAAgB,KAAK,OAAO,aAAc,IAAM,iBAAiB,EAClGO,EAAa,CAAC,GAAIN,GAAQ,KAAK,OAAO,MAAQ,CAAC,CAAE,EAEjDO,EAAW,IAAI,WAASH,EAAkB,KAAK,IAAKD,CAAQ,EAClE,GAAI,CACF,IAAMK,EAAS,MAAMD,EAASF,CAAqB,EAAE,GAAGC,CAAU,EAC5DG,EAAoB,OAAOD,GAAW,SAAWA,EAAO,SAAS,EAAE,EAAIA,EAS7E,MARuD,CACrD,QAASJ,EACT,KAAME,EACN,QAAS,QAAQ,MAAMH,EAAS,WAAW,GAAG,OAAO,EACrD,aAAcE,EACd,OAAQI,EACR,OAAQ,wCACV,CAEF,OAASC,EAAI,CACX,IAAMC,EAAQD,EACd,eAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAMC,EAAM,IAAI,EAAE,EACD,CACrD,QAASP,EACT,KAAME,EACN,QAAS,QAAQ,MAAMH,EAAS,WAAW,GAAG,OAAO,EACrD,MAAOQ,EAAM,KACb,aAAcN,EACd,OAAQ,wCACV,CAEF,CACF,CAAC,CACH,CAEF,OAASK,EAAI,CACX,IAAMC,EAAQD,EACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAMC,EAAM,OAAO,EAAE,EACrDA,CACR,CACF,CACF,ED1EO,IAAMC,EAA0C,OACrD,iCACE,CAAE,SAAU,CAAE,CAAC,WAAS,EAAG,CAAE,EAAG,OAAQ,kBAAiB,EACzD,CACE,QAAS,MAAOC,GACC,MAAMC,EAAkC,OAAOD,CAAM,CAGxE,CACF","names":["src_exports","__export","CryptoContractDiviner","CryptoContractFunctionReadWitness","CryptoContractFunctionReadWitnessPlugin","__toCommonJS","import_assert","import_crypto_contract_function_read_payload_plugin","import_diviner_abstract","import_payload_model","CryptoContractDiviner","_CryptoContractDiviner","address","functionName","payloads","_a","foundPayload","payload","objs","field","expectedValue","prev","obj","callResults","inPayloads","addresses","result","foundCallResults","callResult","import_crypto_nft_payload_plugin","import_payload_model","import_payloadset_plugin","import_assert","import_abstract_witness","import_crypto_contract_function_read_payload_plugin","import_payload_model","import_ethers","CryptoContractFunctionReadWitness","inPayloads","functionName","args","address","providers","provider","validatedAddress","validatedFunctionName","mergedArgs","contract","result","transformedResult","ex","error","CryptoContractFunctionReadWitnessPlugin","params","CryptoContractFunctionReadWitness"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts","../../src/Witness.ts"],"sourcesContent":["export * from './Diviner'\n// eslint-disable-next-line deprecation/deprecation, import/no-default-export\nexport { CryptoContractFunctionReadWitnessPlugin, CryptoContractFunctionReadWitnessPlugin as default } from './Plugin'\nexport * from './Witness'\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 // eslint-disable-next-line deprecation/deprecation\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n // eslint-disable-next-line deprecation/deprecation\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'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n // eslint-disable-next-line deprecation/deprecation, import/no-deprecated\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n // eslint-disable-next-line deprecation/deprecation, import/no-deprecated\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 // eslint-disable-next-line deprecation/deprecation\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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,uCAAuC,EAAE,uCAAuC,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA;AACtH,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,uCAAuC,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA;AACtH,cAAc,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,uCAAuC,EAAE,uCAAuC,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA;AACtH,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,uCAAuC,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA;AACtH,cAAc,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,uCAAuC,EAAE,uCAAuC,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA;AACtH,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,uCAAuC,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA;AACtH,cAAc,WAAW,CAAA"}
@@ -1,2 +1,157 @@
1
- import{assertEx as f}from"@xylabs/assert";import{asCryptoContractFunctionCallSuccess as y,ContractInfoSchema as b,CryptoContractDivinerConfigSchema as h,CryptoContractDivinerLabels as x,CryptoContractFunctionCallResultSchema as T}from"@xyo-network/crypto-contract-function-read-payload-plugin";import{AbstractDiviner as w}from"@xyo-network/diviner-abstract";import{isPayloadOfSchemaType as I}from"@xyo-network/payload-model";var g=class i extends w{static configSchemas=[...super.configSchemas,h];static defaultConfigSchema=h;static labels={...super.labels,...x};static findCallResult(t,e,r){var n;let a=r.find(o=>o.functionName===e&&o.address===t);return(n=y(a))==null?void 0:n.result}static matchingExistingField(t,e){var n;let r=(n=t.at(0))==null?void 0:n[e];return t.reduce((o,s)=>o||s[e]!==r,!1)?void 0:r}contractInfoRequiredFields(t){return{address:f(i.matchingExistingField(t,"address"),()=>"Mismatched address"),chainId:f(i.matchingExistingField(t,"chainId"),()=>"Mismatched chainId"),schema:b}}async divineHandler(t=[]){let e=t.filter(I(T)),r=Object.keys(e.reduce((n,o)=>(o.address&&(n[o.address]=!0),n),{}));return await Promise.all(r.map(async n=>{let o=e.filter(c=>c.address===n);return{results:await this.reduceResults(o),...this.contractInfoRequiredFields(o)}}))}reduceResults(t){return t.reduce((e,r)=>{var a;return e[r.functionName]=(a=y(r))==null?void 0:a.result,e},{})}};import{NftSchema as M}from"@xyo-network/crypto-nft-payload-plugin";import{PayloadSetSchema as A}from"@xyo-network/payload-model";import{createPayloadSetWitnessPlugin as k}from"@xyo-network/payloadset-plugin";import{assertEx as p}from"@xylabs/assert";import{AbstractWitness as W}from"@xyo-network/abstract-witness";import{CryptoContractFunctionCallResultSchema as F,CryptoContractFunctionCallSchema as N,CryptoContractFunctionReadWitnessConfigSchema as R}from"@xyo-network/crypto-contract-function-read-payload-plugin";import{isPayloadOfSchemaType as E}from"@xyo-network/payload-model";import{Contract as D}from"ethers";var u=class extends W{static configSchemas=[...super.configSchemas,R];static defaultConfigSchema=R;get abi(){return p(this.config.abi,()=>"Missing abi")}async observeHandler(t=[]){await this.started("throw");try{return await Promise.all(t.filter(E(N)).map(async({functionName:r,args:a,address:n})=>{let{providers:o}=this.params,s=o[Date.now()%o.length],c=p(n??this.config.address,()=>"Missing address"),C=p(r??this.config.functionName,()=>"Missing address"),m=[...a??this.config.args??[]],S=new D(c,this.abi,s);try{let d=await S[C](...m),l=typeof d=="bigint"?d.toString(16):d;return{address:c,args:m,chainId:Number((await s.getNetwork()).chainId),functionName:C,result:l,schema:F}}catch(d){let l=d;return console.log(`Error [${this.config.name}]: ${l.code}`),{address:c,args:m,chainId:Number((await s.getNetwork()).chainId),error:l.code,functionName:C,schema:F}}}))}catch(e){let r=e;throw console.log(`Error [${this.config.name}]: ${r.message}`),r}}};var P=()=>k({required:{[M]:1},schema:A},{witness:async i=>await u.create(i)});export{g as CryptoContractDiviner,u as CryptoContractFunctionReadWitness,P as CryptoContractFunctionReadWitnessPlugin,P as default};
1
+ // src/Diviner/Diviner.ts
2
+ import { assertEx } from "@xylabs/assert";
3
+ import {
4
+ asCryptoContractFunctionCallSuccess,
5
+ ContractInfoSchema,
6
+ CryptoContractDivinerConfigSchema,
7
+ CryptoContractDivinerLabels,
8
+ CryptoContractFunctionCallResultSchema
9
+ } from "@xyo-network/crypto-contract-function-read-payload-plugin";
10
+ import { AbstractDiviner } from "@xyo-network/diviner-abstract";
11
+ import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
12
+ var CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner {
13
+ static configSchemas = [...super.configSchemas, CryptoContractDivinerConfigSchema];
14
+ static defaultConfigSchema = CryptoContractDivinerConfigSchema;
15
+ static labels = { ...super.labels, ...CryptoContractDivinerLabels };
16
+ static findCallResult(address, functionName, payloads) {
17
+ var _a;
18
+ const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
19
+ return (_a = asCryptoContractFunctionCallSuccess(foundPayload)) == null ? void 0 : _a.result;
20
+ }
21
+ static matchingExistingField(objs, field) {
22
+ var _a;
23
+ const expectedValue = (_a = objs.at(0)) == null ? void 0 : _a[field];
24
+ const didNotMatch = objs.reduce((prev, obj) => {
25
+ return prev || obj[field] !== expectedValue;
26
+ }, false);
27
+ return didNotMatch ? void 0 : expectedValue;
28
+ }
29
+ contractInfoRequiredFields(callResults) {
30
+ return {
31
+ // eslint-disable-next-line deprecation/deprecation
32
+ address: assertEx(_CryptoContractDiviner.matchingExistingField(callResults, "address"), () => "Mismatched address"),
33
+ // eslint-disable-next-line deprecation/deprecation
34
+ chainId: assertEx(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), () => "Mismatched chainId"),
35
+ schema: ContractInfoSchema
36
+ };
37
+ }
38
+ async divineHandler(inPayloads = []) {
39
+ const callResults = inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallResultSchema));
40
+ const addresses = Object.keys(
41
+ // eslint-disable-next-line unicorn/no-array-reduce
42
+ callResults.reduce((prev, result2) => {
43
+ if (result2.address) {
44
+ prev[result2.address] = true;
45
+ }
46
+ return prev;
47
+ }, {})
48
+ );
49
+ const result = await Promise.all(
50
+ addresses.map(async (address) => {
51
+ const foundCallResults = callResults.filter((callResult) => callResult.address === address);
52
+ const info = {
53
+ results: await this.reduceResults(foundCallResults),
54
+ ...this.contractInfoRequiredFields(foundCallResults)
55
+ };
56
+ return info;
57
+ })
58
+ );
59
+ return result;
60
+ }
61
+ reduceResults(callResults) {
62
+ return callResults.reduce((prev, callResult) => {
63
+ var _a;
64
+ prev[callResult.functionName] = (_a = asCryptoContractFunctionCallSuccess(callResult)) == null ? void 0 : _a.result;
65
+ return prev;
66
+ }, {});
67
+ }
68
+ };
69
+
70
+ // src/Plugin.ts
71
+ import { NftSchema } from "@xyo-network/crypto-nft-payload-plugin";
72
+ import { PayloadSetSchema } from "@xyo-network/payload-model";
73
+ import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
74
+
75
+ // src/Witness.ts
76
+ import { assertEx as assertEx2 } from "@xylabs/assert";
77
+ import { AbstractWitness } from "@xyo-network/abstract-witness";
78
+ import {
79
+ CryptoContractFunctionCallResultSchema as CryptoContractFunctionCallResultSchema2,
80
+ CryptoContractFunctionCallSchema,
81
+ CryptoContractFunctionReadWitnessConfigSchema
82
+ } from "@xyo-network/crypto-contract-function-read-payload-plugin";
83
+ import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
84
+ import { Contract } from "ethers";
85
+ var CryptoContractFunctionReadWitness = class extends AbstractWitness {
86
+ static configSchemas = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema];
87
+ static defaultConfigSchema = CryptoContractFunctionReadWitnessConfigSchema;
88
+ get abi() {
89
+ return assertEx2(this.config.abi, () => "Missing abi");
90
+ }
91
+ async observeHandler(inPayloads = []) {
92
+ await this.started("throw");
93
+ try {
94
+ const observations = await Promise.all(
95
+ inPayloads.filter(isPayloadOfSchemaType2(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
96
+ const { providers } = this.params;
97
+ const provider = providers[Date.now() % providers.length];
98
+ const validatedAddress = assertEx2(address ?? this.config.address, () => "Missing address");
99
+ const validatedFunctionName = assertEx2(functionName ?? this.config.functionName, () => "Missing address");
100
+ const mergedArgs = [...args ?? this.config.args ?? []];
101
+ const contract = new Contract(validatedAddress, this.abi, provider);
102
+ try {
103
+ const result = await contract[validatedFunctionName](...mergedArgs);
104
+ const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
105
+ const observation = {
106
+ address: validatedAddress,
107
+ args: mergedArgs,
108
+ chainId: Number((await provider.getNetwork()).chainId),
109
+ functionName: validatedFunctionName,
110
+ result: transformedResult,
111
+ schema: CryptoContractFunctionCallResultSchema2
112
+ };
113
+ return observation;
114
+ } catch (ex) {
115
+ const error = ex;
116
+ console.log(`Error [${this.config.name}]: ${error.code}`);
117
+ const observation = {
118
+ address: validatedAddress,
119
+ args: mergedArgs,
120
+ chainId: Number((await provider.getNetwork()).chainId),
121
+ error: error.code,
122
+ functionName: validatedFunctionName,
123
+ schema: CryptoContractFunctionCallResultSchema2
124
+ };
125
+ return observation;
126
+ }
127
+ })
128
+ );
129
+ return observations;
130
+ } catch (ex) {
131
+ const error = ex;
132
+ console.log(`Error [${this.config.name}]: ${error.message}`);
133
+ throw error;
134
+ }
135
+ }
136
+ };
137
+
138
+ // src/Plugin.ts
139
+ var CryptoContractFunctionReadWitnessPlugin = () => (
140
+ // eslint-disable-next-line deprecation/deprecation, import/no-deprecated
141
+ createPayloadSetWitnessPlugin(
142
+ { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },
143
+ {
144
+ witness: async (params) => {
145
+ const result = await CryptoContractFunctionReadWitness.create(params);
146
+ return result;
147
+ }
148
+ }
149
+ )
150
+ );
151
+ export {
152
+ CryptoContractDiviner,
153
+ CryptoContractFunctionReadWitness,
154
+ CryptoContractFunctionReadWitnessPlugin,
155
+ CryptoContractFunctionReadWitnessPlugin as default
156
+ };
2
157
  //# sourceMappingURL=index.js.map
@@ -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","/* eslint-disable import/no-deprecated */\nimport { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\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","_CryptoContractDiviner","address","functionName","payloads","_a","foundPayload","payload","objs","field","expectedValue","prev","obj","callResults","inPayloads","addresses","result","foundCallResults","callResult","NftSchema","PayloadSetSchema","createPayloadSetWitnessPlugin","assertEx","AbstractWitness","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","CryptoContractFunctionReadWitnessConfigSchema","isPayloadOfSchemaType","Contract","CryptoContractFunctionReadWitness","inPayloads","functionName","args","address","providers","provider","validatedAddress","validatedFunctionName","mergedArgs","contract","result","transformedResult","ex","error","CryptoContractFunctionReadWitnessPlugin","createPayloadSetWitnessPlugin","NftSchema","PayloadSetSchema","params","CryptoContractFunctionReadWitness"]}
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 // eslint-disable-next-line deprecation/deprecation\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),\n // eslint-disable-next-line deprecation/deprecation\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'\n\n/** @deprecated use EvmCallWitness instead */\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n // eslint-disable-next-line deprecation/deprecation, import/no-deprecated\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n // eslint-disable-next-line deprecation/deprecation, import/no-deprecated\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 // eslint-disable-next-line deprecation/deprecation\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,45 +10,45 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.5.1",
14
- "@xylabs/promise": "^3.5.1",
15
- "@xyo-network/abstract-witness": "^2.107.0",
16
- "@xyo-network/crypto-contract-function-read-payload-plugin": "~2.97.0",
17
- "@xyo-network/crypto-nft-payload-plugin": "~2.97.0",
18
- "@xyo-network/diviner-abstract": "^2.107.0",
19
- "@xyo-network/module-model": "^2.107.0",
20
- "@xyo-network/payload-model": "^2.107.0",
21
- "@xyo-network/payloadset-plugin": "^2.107.0",
22
- "@xyo-network/witness-model": "^2.107.0",
13
+ "@xylabs/assert": "^3.5.2",
14
+ "@xylabs/promise": "^3.5.2",
15
+ "@xyo-network/abstract-witness": "^2.108.0",
16
+ "@xyo-network/crypto-contract-function-read-payload-plugin": "^2.98.0",
17
+ "@xyo-network/crypto-nft-payload-plugin": "^2.98.0",
18
+ "@xyo-network/diviner-abstract": "^2.108.0",
19
+ "@xyo-network/module-model": "^2.108.0",
20
+ "@xyo-network/payload-model": "^2.108.0",
21
+ "@xyo-network/payloadset-plugin": "^2.108.0",
22
+ "@xyo-network/witness-model": "^2.108.0",
23
23
  "ethers": "^6.13.1"
24
24
  },
25
25
  "devDependencies": {
26
- "@xylabs/delay": "^3.5.1",
27
- "@xylabs/hex": "^3.5.1",
28
- "@xylabs/jest-helpers": "^3.5.1",
29
- "@xylabs/ts-scripts-yarn3": "^3.11.8",
30
- "@xylabs/tsconfig": "^3.11.8",
31
- "@xyo-network/account": "^2.107.0",
32
- "@xyo-network/archivist-memory": "^2.107.0",
33
- "@xyo-network/diviner-boundwitness-memory": "^2.107.0",
34
- "@xyo-network/diviner-jsonpatch": "^2.107.0",
35
- "@xyo-network/diviner-jsonpath-aggregate-memory": "^2.107.0",
36
- "@xyo-network/diviner-model": "^2.107.0",
37
- "@xyo-network/diviner-payload-memory": "^2.107.0",
38
- "@xyo-network/diviner-payload-model": "^2.107.0",
39
- "@xyo-network/diviner-range": "^2.107.0",
40
- "@xyo-network/diviner-temporal-indexing": "^2.107.0",
41
- "@xyo-network/evm-nft-id-payload-plugin": "~2.97.0",
42
- "@xyo-network/manifest": "^2.107.0",
43
- "@xyo-network/module-factory-locator": "^2.107.0",
44
- "@xyo-network/node-memory": "^2.107.0",
26
+ "@xylabs/delay": "^3.5.2",
27
+ "@xylabs/hex": "^3.5.2",
28
+ "@xylabs/jest-helpers": "^3.5.2",
29
+ "@xylabs/ts-scripts-yarn3": "^3.11.12",
30
+ "@xylabs/tsconfig": "^3.11.12",
31
+ "@xyo-network/account": "^2.108.0",
32
+ "@xyo-network/archivist-memory": "^2.108.0",
33
+ "@xyo-network/diviner-boundwitness-memory": "^2.108.0",
34
+ "@xyo-network/diviner-jsonpatch": "^2.108.0",
35
+ "@xyo-network/diviner-jsonpath-aggregate-memory": "^2.108.0",
36
+ "@xyo-network/diviner-model": "^2.108.0",
37
+ "@xyo-network/diviner-payload-memory": "^2.108.0",
38
+ "@xyo-network/diviner-payload-model": "^2.108.0",
39
+ "@xyo-network/diviner-range": "^2.108.0",
40
+ "@xyo-network/diviner-temporal-indexing": "^2.108.0",
41
+ "@xyo-network/evm-nft-id-payload-plugin": "^2.98.0",
42
+ "@xyo-network/manifest": "^2.108.0",
43
+ "@xyo-network/module-factory-locator": "^2.108.0",
44
+ "@xyo-network/node-memory": "^2.108.0",
45
45
  "@xyo-network/open-zeppelin-typechain": "^3.0.5",
46
- "@xyo-network/sentinel-model": "^2.107.0",
47
- "@xyo-network/witness-blockchain-abstract": "^2.107.0",
48
- "@xyo-network/witness-timestamp": "^2.107.0",
46
+ "@xyo-network/sentinel-model": "^2.108.0",
47
+ "@xyo-network/witness-blockchain-abstract": "^2.108.0",
48
+ "@xyo-network/witness-timestamp": "^2.108.0",
49
49
  "async-mutex": "^0.5.0",
50
50
  "jest": "^29.7.0",
51
- "typescript": "^5.5.2"
51
+ "typescript": "^5.5.3"
52
52
  },
53
53
  "description": "Typescript/Javascript Plugins for XYO Platform",
54
54
  "types": "dist/node/index.d.ts",
@@ -89,6 +89,6 @@
89
89
  "url": "https://github.com/XYOracleNetwork/plugins.git"
90
90
  },
91
91
  "sideEffects": false,
92
- "version": "2.97.0",
92
+ "version": "2.98.0",
93
93
  "type": "module"
94
94
  }
@@ -42,7 +42,9 @@ export class CryptoContractDiviner<TParams extends CryptoContractDivinerParams =
42
42
 
43
43
  protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): ContractInfo {
44
44
  return {
45
+ // eslint-disable-next-line deprecation/deprecation
45
46
  address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),
47
+ // eslint-disable-next-line deprecation/deprecation
46
48
  chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),
47
49
  schema: ContractInfoSchema,
48
50
  }
package/src/Plugin.ts CHANGED
@@ -1,16 +1,18 @@
1
- /* eslint-disable import/no-deprecated */
2
1
  import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'
3
2
  import { PayloadSetSchema } from '@xyo-network/payload-model'
4
3
  import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
5
4
 
5
+ // eslint-disable-next-line import/no-deprecated
6
6
  import { CryptoContractFunctionReadWitness } from './Witness'
7
7
 
8
8
  /** @deprecated use EvmCallWitness instead */
9
9
  export const CryptoContractFunctionReadWitnessPlugin = () =>
10
+ // eslint-disable-next-line deprecation/deprecation, import/no-deprecated
10
11
  createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(
11
12
  { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },
12
13
  {
13
14
  witness: async (params) => {
15
+ // eslint-disable-next-line deprecation/deprecation, import/no-deprecated
14
16
  const result = await CryptoContractFunctionReadWitness.create(params)
15
17
  return result
16
18
  },
package/src/Witness.ts CHANGED
@@ -25,6 +25,7 @@ export type CryptoContractFunctionReadWitnessParams = WitnessParams<
25
25
 
26
26
  /** @deprecated use EvmCallWitness instead */
27
27
  export class CryptoContractFunctionReadWitness<
28
+ // eslint-disable-next-line deprecation/deprecation
28
29
  TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,
29
30
  > extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {
30
31
  static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema]
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './Diviner'
2
+ // eslint-disable-next-line deprecation/deprecation, import/no-default-export
2
3
  export { CryptoContractFunctionReadWitnessPlugin, CryptoContractFunctionReadWitnessPlugin as default } from './Plugin'
3
4
  export * from './Witness'