@xyo-network/crypto-contract-function-read-plugin 2.99.4 → 2.99.5

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 (87) 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/Diviner/index.d.cts +1 -1
  5. package/dist/browser/Diviner/index.d.mts +1 -1
  6. package/dist/browser/Diviner/index.d.ts +1 -1
  7. package/dist/browser/Plugin.d.cts +1 -1
  8. package/dist/browser/Plugin.d.cts.map +1 -1
  9. package/dist/browser/Plugin.d.mts +1 -1
  10. package/dist/browser/Plugin.d.mts.map +1 -1
  11. package/dist/browser/Plugin.d.ts +1 -1
  12. package/dist/browser/Plugin.d.ts.map +1 -1
  13. package/dist/browser/Witness.d.cts.map +1 -1
  14. package/dist/browser/Witness.d.mts.map +1 -1
  15. package/dist/browser/Witness.d.ts.map +1 -1
  16. package/dist/browser/index.cjs +73 -62
  17. package/dist/browser/index.cjs.map +1 -1
  18. package/dist/browser/index.d.cts +3 -3
  19. package/dist/browser/index.d.cts.map +1 -1
  20. package/dist/browser/index.d.mts +3 -3
  21. package/dist/browser/index.d.mts.map +1 -1
  22. package/dist/browser/index.d.ts +3 -3
  23. package/dist/browser/index.d.ts.map +1 -1
  24. package/dist/browser/index.mjs +157 -0
  25. package/dist/browser/index.mjs.map +1 -0
  26. package/dist/neutral/Diviner/Diviner.d.cts.map +1 -1
  27. package/dist/neutral/Diviner/Diviner.d.mts.map +1 -1
  28. package/dist/neutral/Diviner/Diviner.d.ts.map +1 -1
  29. package/dist/neutral/Diviner/index.d.cts +1 -1
  30. package/dist/neutral/Diviner/index.d.mts +1 -1
  31. package/dist/neutral/Diviner/index.d.ts +1 -1
  32. package/dist/neutral/Plugin.d.cts +1 -1
  33. package/dist/neutral/Plugin.d.cts.map +1 -1
  34. package/dist/neutral/Plugin.d.mts +1 -1
  35. package/dist/neutral/Plugin.d.mts.map +1 -1
  36. package/dist/neutral/Plugin.d.ts +1 -1
  37. package/dist/neutral/Plugin.d.ts.map +1 -1
  38. package/dist/neutral/Witness.d.cts.map +1 -1
  39. package/dist/neutral/Witness.d.mts.map +1 -1
  40. package/dist/neutral/Witness.d.ts.map +1 -1
  41. package/dist/neutral/index.cjs +73 -62
  42. package/dist/neutral/index.cjs.map +1 -1
  43. package/dist/neutral/index.d.cts +3 -3
  44. package/dist/neutral/index.d.cts.map +1 -1
  45. package/dist/neutral/index.d.mts +3 -3
  46. package/dist/neutral/index.d.mts.map +1 -1
  47. package/dist/neutral/index.d.ts +3 -3
  48. package/dist/neutral/index.d.ts.map +1 -1
  49. package/dist/neutral/index.mjs +157 -0
  50. package/dist/neutral/index.mjs.map +1 -0
  51. package/dist/node/Diviner/Diviner.d.cts.map +1 -1
  52. package/dist/node/Diviner/Diviner.d.mts.map +1 -1
  53. package/dist/node/Diviner/Diviner.d.ts.map +1 -1
  54. package/dist/node/Diviner/index.d.cts +1 -1
  55. package/dist/node/Diviner/index.d.mts +1 -1
  56. package/dist/node/Diviner/index.d.ts +1 -1
  57. package/dist/node/Plugin.d.cts +1 -1
  58. package/dist/node/Plugin.d.cts.map +1 -1
  59. package/dist/node/Plugin.d.mts +1 -1
  60. package/dist/node/Plugin.d.mts.map +1 -1
  61. package/dist/node/Plugin.d.ts +1 -1
  62. package/dist/node/Plugin.d.ts.map +1 -1
  63. package/dist/node/Witness.d.cts.map +1 -1
  64. package/dist/node/Witness.d.mts.map +1 -1
  65. package/dist/node/Witness.d.ts.map +1 -1
  66. package/dist/node/index.cjs +80 -66
  67. package/dist/node/index.cjs.map +1 -1
  68. package/dist/node/index.d.cts +3 -3
  69. package/dist/node/index.d.cts.map +1 -1
  70. package/dist/node/index.d.mts +3 -3
  71. package/dist/node/index.d.mts.map +1 -1
  72. package/dist/node/index.d.ts +3 -3
  73. package/dist/node/index.d.ts.map +1 -1
  74. package/dist/node/index.mjs +163 -0
  75. package/dist/node/index.mjs.map +1 -0
  76. package/package.json +38 -38
  77. package/src/Diviner/Diviner.ts +2 -4
  78. package/src/Diviner/index.ts +1 -1
  79. package/src/Plugin.ts +2 -3
  80. package/src/Witness.ts +1 -2
  81. package/src/index.ts +3 -4
  82. package/dist/browser/index.js +0 -154
  83. package/dist/browser/index.js.map +0 -1
  84. package/dist/neutral/index.js +0 -154
  85. package/dist/neutral/index.js.map +0 -1
  86. package/dist/node/index.js +0 -157
  87. package/dist/node/index.js.map +0 -1
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.6.1",
14
- "@xylabs/promise": "^3.6.1",
15
- "@xyo-network/abstract-witness": "^2.110.6",
16
- "@xyo-network/crypto-contract-function-read-payload-plugin": "^2.99.4",
17
- "@xyo-network/crypto-nft-payload-plugin": "^2.99.4",
18
- "@xyo-network/diviner-abstract": "^2.110.6",
19
- "@xyo-network/module-model": "^2.110.6",
20
- "@xyo-network/payload-model": "^2.110.6",
21
- "@xyo-network/payloadset-plugin": "^2.110.6",
22
- "@xyo-network/witness-model": "^2.110.6",
23
- "ethers": "^6.13.1"
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",
23
+ "ethers": "^6.13.2"
24
24
  },
25
25
  "devDependencies": {
26
- "@xylabs/delay": "^3.6.1",
27
- "@xylabs/hex": "^3.6.1",
28
- "@xylabs/jest-helpers": "^3.6.1",
29
- "@xylabs/ts-scripts-yarn3": "^3.12.2",
30
- "@xylabs/tsconfig": "^3.12.2",
31
- "@xyo-network/account": "^2.110.6",
32
- "@xyo-network/archivist-memory": "^2.110.6",
33
- "@xyo-network/diviner-boundwitness-memory": "^2.110.6",
34
- "@xyo-network/diviner-jsonpatch": "^2.110.6",
35
- "@xyo-network/diviner-jsonpath-aggregate-memory": "^2.110.6",
36
- "@xyo-network/diviner-model": "^2.110.6",
37
- "@xyo-network/diviner-payload-memory": "^2.110.6",
38
- "@xyo-network/diviner-payload-model": "^2.110.6",
39
- "@xyo-network/diviner-range": "^2.110.6",
40
- "@xyo-network/diviner-temporal-indexing": "^2.110.6",
41
- "@xyo-network/evm-nft-id-payload-plugin": "^2.99.4",
42
- "@xyo-network/manifest": "^2.110.6",
43
- "@xyo-network/module-factory-locator": "^2.110.6",
44
- "@xyo-network/node-memory": "^2.110.6",
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
45
  "@xyo-network/open-zeppelin-typechain": "^3.0.5",
46
- "@xyo-network/sentinel-model": "^2.110.6",
47
- "@xyo-network/witness-blockchain-abstract": "^2.110.6",
48
- "@xyo-network/witness-timestamp": "^2.110.6",
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",
49
49
  "async-mutex": "^0.5.0",
50
50
  "jest": "^29.7.0",
51
- "typescript": "^5.5.3"
51
+ "typescript": "^5.5.4"
52
52
  },
53
53
  "description": "Typescript/Javascript Plugins for XYO Platform",
54
54
  "types": "dist/node/index.d.ts",
@@ -61,7 +61,7 @@
61
61
  },
62
62
  "import": {
63
63
  "types": "./dist/browser/index.d.mts",
64
- "default": "./dist/browser/index.js"
64
+ "default": "./dist/browser/index.mjs"
65
65
  }
66
66
  },
67
67
  "node": {
@@ -71,14 +71,14 @@
71
71
  },
72
72
  "import": {
73
73
  "types": "./dist/node/index.d.mts",
74
- "default": "./dist/node/index.js"
74
+ "default": "./dist/node/index.mjs"
75
75
  }
76
76
  }
77
77
  },
78
78
  "./package.json": "./package.json"
79
79
  },
80
80
  "main": "dist/node/index.cjs",
81
- "module": "dist/node/index.js",
81
+ "module": "dist/node/index.mjs",
82
82
  "homepage": "https://xyo.network",
83
83
  "license": "LGPL-3.0-only",
84
84
  "publishConfig": {
@@ -89,6 +89,6 @@
89
89
  "url": "https://github.com/XYOracleNetwork/plugins.git"
90
90
  },
91
91
  "sideEffects": false,
92
- "version": "2.99.4",
92
+ "version": "2.99.5",
93
93
  "type": "module"
94
94
  }
@@ -27,7 +27,7 @@ export class CryptoContractDiviner<TParams extends CryptoContractDivinerParams =
27
27
  functionName: string,
28
28
  payloads: CryptoContractFunctionCallResult[],
29
29
  ): TResult | undefined {
30
- const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address)
30
+ const foundPayload = payloads.find(payload => payload.functionName === functionName && payload.address === address)
31
31
  return asCryptoContractFunctionCallSuccess(foundPayload)?.result as TResult | undefined
32
32
  }
33
33
 
@@ -42,9 +42,7 @@ 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
46
45
  address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), () => 'Mismatched address'),
47
- // eslint-disable-next-line deprecation/deprecation
48
46
  chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), () => 'Mismatched chainId'),
49
47
  schema: ContractInfoSchema,
50
48
  }
@@ -63,7 +61,7 @@ export class CryptoContractDiviner<TParams extends CryptoContractDivinerParams =
63
61
  )
64
62
  const result = await Promise.all(
65
63
  addresses.map(async (address) => {
66
- const foundCallResults = callResults.filter((callResult) => callResult.address === address)
64
+ const foundCallResults = callResults.filter(callResult => callResult.address === address)
67
65
  const info: ContractInfo = {
68
66
  results: await this.reduceResults(foundCallResults),
69
67
  ...this.contractInfoRequiredFields(foundCallResults),
@@ -1 +1 @@
1
- export * from './Diviner.js'
1
+ export * from './Diviner.ts'
package/src/Plugin.ts CHANGED
@@ -3,16 +3,15 @@ import { PayloadSetSchema } from '@xyo-network/payload-model'
3
3
  import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
4
4
 
5
5
  // eslint-disable-next-line import/no-deprecated
6
- import { CryptoContractFunctionReadWitness } from './Witness.js'
6
+ import { CryptoContractFunctionReadWitness } from './Witness.ts'
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
11
  createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(
12
12
  { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },
13
13
  {
14
14
  witness: async (params) => {
15
- // eslint-disable-next-line deprecation/deprecation, import/no-deprecated
16
15
  const result = await CryptoContractFunctionReadWitness.create(params)
17
16
  return result
18
17
  },
package/src/Witness.ts CHANGED
@@ -25,7 +25,6 @@ export type CryptoContractFunctionReadWitnessParams = WitnessParams<
25
25
 
26
26
  /** @deprecated use EvmCallWitness instead */
27
27
  export class CryptoContractFunctionReadWitness<
28
- // eslint-disable-next-line deprecation/deprecation
29
28
  TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,
30
29
  > extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {
31
30
  static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema]
@@ -41,7 +40,7 @@ export class CryptoContractFunctionReadWitness<
41
40
  const observations = await Promise.all(
42
41
  inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
43
42
  const { providers } = this.params
44
- const provider = providers[Date.now() % providers.length] //pick a random provider
43
+ const provider = providers[Date.now() % providers.length] // pick a random provider
45
44
  const validatedAddress = assertEx(address ?? this.config.address, () => 'Missing address')
46
45
  const validatedFunctionName = assertEx(functionName ?? this.config.functionName, () => 'Missing address')
47
46
  const mergedArgs = [...(args ?? this.config.args ?? [])]
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './Diviner/index.js'
2
- // eslint-disable-next-line deprecation/deprecation, import/no-default-export
3
- export { CryptoContractFunctionReadWitnessPlugin, CryptoContractFunctionReadWitnessPlugin as default } from './Plugin.js'
4
- export * from './Witness.js'
1
+ export * from './Diviner/index.ts'
2
+ export { CryptoContractFunctionReadWitnessPlugin, CryptoContractFunctionReadWitnessPlugin as default } from './Plugin.ts'
3
+ export * from './Witness.ts'
@@ -1,154 +0,0 @@
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
- const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
18
- return asCryptoContractFunctionCallSuccess(foundPayload)?.result;
19
- }
20
- static matchingExistingField(objs, field) {
21
- const expectedValue = objs.at(0)?.[field];
22
- const didNotMatch = objs.reduce((prev, obj) => {
23
- return prev || obj[field] !== expectedValue;
24
- }, false);
25
- return didNotMatch ? void 0 : expectedValue;
26
- }
27
- contractInfoRequiredFields(callResults) {
28
- return {
29
- // eslint-disable-next-line deprecation/deprecation
30
- address: assertEx(_CryptoContractDiviner.matchingExistingField(callResults, "address"), () => "Mismatched address"),
31
- // eslint-disable-next-line deprecation/deprecation
32
- chainId: assertEx(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), () => "Mismatched chainId"),
33
- schema: ContractInfoSchema
34
- };
35
- }
36
- async divineHandler(inPayloads = []) {
37
- const callResults = inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallResultSchema));
38
- const addresses = Object.keys(
39
- // eslint-disable-next-line unicorn/no-array-reduce
40
- callResults.reduce((prev, result2) => {
41
- if (result2.address) {
42
- prev[result2.address] = true;
43
- }
44
- return prev;
45
- }, {})
46
- );
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
- );
57
- return result;
58
- }
59
- reduceResults(callResults) {
60
- return callResults.reduce((prev, callResult) => {
61
- prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result;
62
- return prev;
63
- }, {});
64
- }
65
- };
66
-
67
- // src/Plugin.ts
68
- import { NftSchema } from "@xyo-network/crypto-nft-payload-plugin";
69
- import { PayloadSetSchema } from "@xyo-network/payload-model";
70
- import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
71
-
72
- // src/Witness.ts
73
- import { assertEx as assertEx2 } from "@xylabs/assert";
74
- import { AbstractWitness } from "@xyo-network/abstract-witness";
75
- import {
76
- CryptoContractFunctionCallResultSchema as CryptoContractFunctionCallResultSchema2,
77
- CryptoContractFunctionCallSchema,
78
- CryptoContractFunctionReadWitnessConfigSchema
79
- } from "@xyo-network/crypto-contract-function-read-payload-plugin";
80
- import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
81
- import { Contract } from "ethers";
82
- var CryptoContractFunctionReadWitness = class extends AbstractWitness {
83
- static configSchemas = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema];
84
- static defaultConfigSchema = CryptoContractFunctionReadWitnessConfigSchema;
85
- get abi() {
86
- return assertEx2(this.config.abi, () => "Missing abi");
87
- }
88
- async observeHandler(inPayloads = []) {
89
- await this.started("throw");
90
- try {
91
- const observations = await Promise.all(
92
- inPayloads.filter(isPayloadOfSchemaType2(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
93
- const { providers } = this.params;
94
- const provider = providers[Date.now() % providers.length];
95
- const validatedAddress = assertEx2(address ?? this.config.address, () => "Missing address");
96
- const validatedFunctionName = assertEx2(functionName ?? this.config.functionName, () => "Missing address");
97
- const mergedArgs = [...args ?? this.config.args ?? []];
98
- const contract = new Contract(validatedAddress, this.abi, provider);
99
- try {
100
- const result = await contract[validatedFunctionName](...mergedArgs);
101
- const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
102
- const observation = {
103
- address: validatedAddress,
104
- args: mergedArgs,
105
- chainId: Number((await provider.getNetwork()).chainId),
106
- functionName: validatedFunctionName,
107
- result: transformedResult,
108
- schema: CryptoContractFunctionCallResultSchema2
109
- };
110
- return observation;
111
- } catch (ex) {
112
- const error = ex;
113
- console.log(`Error [${this.config.name}]: ${error.code}`);
114
- const observation = {
115
- address: validatedAddress,
116
- args: mergedArgs,
117
- chainId: Number((await provider.getNetwork()).chainId),
118
- error: error.code,
119
- functionName: validatedFunctionName,
120
- schema: CryptoContractFunctionCallResultSchema2
121
- };
122
- return observation;
123
- }
124
- })
125
- );
126
- return observations;
127
- } catch (ex) {
128
- const error = ex;
129
- console.log(`Error [${this.config.name}]: ${error.message}`);
130
- throw error;
131
- }
132
- }
133
- };
134
-
135
- // src/Plugin.ts
136
- var CryptoContractFunctionReadWitnessPlugin = () => (
137
- // eslint-disable-next-line deprecation/deprecation, import/no-deprecated
138
- createPayloadSetWitnessPlugin(
139
- { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },
140
- {
141
- witness: async (params) => {
142
- const result = await CryptoContractFunctionReadWitness.create(params);
143
- return result;
144
- }
145
- }
146
- )
147
- );
148
- export {
149
- CryptoContractDiviner,
150
- CryptoContractFunctionReadWitness,
151
- CryptoContractFunctionReadWitnessPlugin,
152
- CryptoContractFunctionReadWitnessPlugin as default
153
- };
154
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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.js'\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"]}
@@ -1,154 +0,0 @@
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
- const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
18
- return asCryptoContractFunctionCallSuccess(foundPayload)?.result;
19
- }
20
- static matchingExistingField(objs, field) {
21
- const expectedValue = objs.at(0)?.[field];
22
- const didNotMatch = objs.reduce((prev, obj) => {
23
- return prev || obj[field] !== expectedValue;
24
- }, false);
25
- return didNotMatch ? void 0 : expectedValue;
26
- }
27
- contractInfoRequiredFields(callResults) {
28
- return {
29
- // eslint-disable-next-line deprecation/deprecation
30
- address: assertEx(_CryptoContractDiviner.matchingExistingField(callResults, "address"), () => "Mismatched address"),
31
- // eslint-disable-next-line deprecation/deprecation
32
- chainId: assertEx(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), () => "Mismatched chainId"),
33
- schema: ContractInfoSchema
34
- };
35
- }
36
- async divineHandler(inPayloads = []) {
37
- const callResults = inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallResultSchema));
38
- const addresses = Object.keys(
39
- // eslint-disable-next-line unicorn/no-array-reduce
40
- callResults.reduce((prev, result2) => {
41
- if (result2.address) {
42
- prev[result2.address] = true;
43
- }
44
- return prev;
45
- }, {})
46
- );
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
- );
57
- return result;
58
- }
59
- reduceResults(callResults) {
60
- return callResults.reduce((prev, callResult) => {
61
- prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result;
62
- return prev;
63
- }, {});
64
- }
65
- };
66
-
67
- // src/Plugin.ts
68
- import { NftSchema } from "@xyo-network/crypto-nft-payload-plugin";
69
- import { PayloadSetSchema } from "@xyo-network/payload-model";
70
- import { createPayloadSetWitnessPlugin } from "@xyo-network/payloadset-plugin";
71
-
72
- // src/Witness.ts
73
- import { assertEx as assertEx2 } from "@xylabs/assert";
74
- import { AbstractWitness } from "@xyo-network/abstract-witness";
75
- import {
76
- CryptoContractFunctionCallResultSchema as CryptoContractFunctionCallResultSchema2,
77
- CryptoContractFunctionCallSchema,
78
- CryptoContractFunctionReadWitnessConfigSchema
79
- } from "@xyo-network/crypto-contract-function-read-payload-plugin";
80
- import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
81
- import { Contract } from "ethers";
82
- var CryptoContractFunctionReadWitness = class extends AbstractWitness {
83
- static configSchemas = [...super.configSchemas, CryptoContractFunctionReadWitnessConfigSchema];
84
- static defaultConfigSchema = CryptoContractFunctionReadWitnessConfigSchema;
85
- get abi() {
86
- return assertEx2(this.config.abi, () => "Missing abi");
87
- }
88
- async observeHandler(inPayloads = []) {
89
- await this.started("throw");
90
- try {
91
- const observations = await Promise.all(
92
- inPayloads.filter(isPayloadOfSchemaType2(CryptoContractFunctionCallSchema)).map(async ({ functionName, args, address }) => {
93
- const { providers } = this.params;
94
- const provider = providers[Date.now() % providers.length];
95
- const validatedAddress = assertEx2(address ?? this.config.address, () => "Missing address");
96
- const validatedFunctionName = assertEx2(functionName ?? this.config.functionName, () => "Missing address");
97
- const mergedArgs = [...args ?? this.config.args ?? []];
98
- const contract = new Contract(validatedAddress, this.abi, provider);
99
- try {
100
- const result = await contract[validatedFunctionName](...mergedArgs);
101
- const transformedResult = typeof result === "bigint" ? result.toString(16) : result;
102
- const observation = {
103
- address: validatedAddress,
104
- args: mergedArgs,
105
- chainId: Number((await provider.getNetwork()).chainId),
106
- functionName: validatedFunctionName,
107
- result: transformedResult,
108
- schema: CryptoContractFunctionCallResultSchema2
109
- };
110
- return observation;
111
- } catch (ex) {
112
- const error = ex;
113
- console.log(`Error [${this.config.name}]: ${error.code}`);
114
- const observation = {
115
- address: validatedAddress,
116
- args: mergedArgs,
117
- chainId: Number((await provider.getNetwork()).chainId),
118
- error: error.code,
119
- functionName: validatedFunctionName,
120
- schema: CryptoContractFunctionCallResultSchema2
121
- };
122
- return observation;
123
- }
124
- })
125
- );
126
- return observations;
127
- } catch (ex) {
128
- const error = ex;
129
- console.log(`Error [${this.config.name}]: ${error.message}`);
130
- throw error;
131
- }
132
- }
133
- };
134
-
135
- // src/Plugin.ts
136
- var CryptoContractFunctionReadWitnessPlugin = () => (
137
- // eslint-disable-next-line deprecation/deprecation, import/no-deprecated
138
- createPayloadSetWitnessPlugin(
139
- { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },
140
- {
141
- witness: async (params) => {
142
- const result = await CryptoContractFunctionReadWitness.create(params);
143
- return result;
144
- }
145
- }
146
- )
147
- );
148
- export {
149
- CryptoContractDiviner,
150
- CryptoContractFunctionReadWitness,
151
- CryptoContractFunctionReadWitnessPlugin,
152
- CryptoContractFunctionReadWitnessPlugin as default
153
- };
154
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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.js'\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"]}