@xyo-network/crypto-contract-function-read-plugin 2.83.0 → 2.84.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.
- package/dist/browser/{CryptoContractDiviner.d.cts → Diviner/Diviner.d.cts} +3 -16
- package/dist/browser/Diviner/Diviner.d.cts.map +1 -0
- package/dist/browser/{CryptoContractDiviner.d.ts → Diviner/Diviner.d.mts} +3 -16
- package/dist/browser/Diviner/Diviner.d.mts.map +1 -0
- package/dist/browser/{CryptoContractDiviner.d.mts → Diviner/Diviner.d.ts} +3 -16
- package/dist/browser/Diviner/Diviner.d.ts.map +1 -0
- package/dist/browser/Diviner/index.d.cts +1 -1
- package/dist/browser/Diviner/index.d.cts.map +1 -1
- package/dist/browser/Diviner/index.d.mts +1 -1
- package/dist/browser/Diviner/index.d.mts.map +1 -1
- package/dist/browser/Diviner/index.d.ts +1 -1
- package/dist/browser/Diviner/index.d.ts.map +1 -1
- package/dist/browser/Plugin.d.cts +611 -5
- package/dist/browser/Plugin.d.cts.map +1 -1
- package/dist/browser/Plugin.d.mts +611 -5
- package/dist/browser/Plugin.d.mts.map +1 -1
- package/dist/browser/Plugin.d.ts +611 -5
- package/dist/browser/Plugin.d.ts.map +1 -1
- package/dist/browser/index.cjs +4 -7
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -1
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -1
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +5 -5
- package/dist/browser/index.js.map +1 -1
- package/dist/node/{CryptoContractDiviner.d.cts → Diviner/Diviner.d.cts} +3 -16
- package/dist/node/Diviner/Diviner.d.cts.map +1 -0
- package/dist/node/Diviner/Diviner.d.mts +15 -0
- package/dist/node/Diviner/Diviner.d.mts.map +1 -0
- package/dist/node/Diviner/Diviner.d.ts +15 -0
- package/dist/node/Diviner/Diviner.d.ts.map +1 -0
- package/dist/node/Diviner/index.d.cts +1 -1
- package/dist/node/Diviner/index.d.cts.map +1 -1
- package/dist/node/Diviner/index.d.mts +1 -1
- package/dist/node/Diviner/index.d.mts.map +1 -1
- package/dist/node/Diviner/index.d.ts +1 -1
- package/dist/node/Diviner/index.d.ts.map +1 -1
- package/dist/node/Plugin.d.cts +611 -5
- package/dist/node/Plugin.d.cts.map +1 -1
- package/dist/node/Plugin.d.mts +611 -5
- package/dist/node/Plugin.d.mts.map +1 -1
- package/dist/node/Plugin.d.ts +611 -5
- package/dist/node/Plugin.d.ts.map +1 -1
- package/dist/node/index.d.cts +1 -1
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -1
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +4 -9
- package/dist/node/index.js.map +1 -1
- package/dist/node/index.mjs +5 -5
- package/dist/node/index.mjs.map +1 -1
- package/package.json +22 -15
- package/src/{CryptoContractDiviner.ts → Diviner/Diviner.ts} +6 -21
- package/src/Diviner/index.ts +1 -1
- package/src/index.ts +1 -1
- package/src/spec/Contract.Sentinel.Erc1155.Index.json +191 -0
- package/src/spec/Contract.Sentinel.Erc721.Index.json +191 -0
- package/src/spec/Contract.Sentinel.Node.json +233 -0
- package/dist/browser/CryptoContractDiviner.d.cts.map +0 -1
- package/dist/browser/CryptoContractDiviner.d.mts.map +0 -1
- package/dist/browser/CryptoContractDiviner.d.ts.map +0 -1
- package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.cts +0 -6
- package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.cts.map +0 -1
- package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.mts +0 -6
- package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.mts.map +0 -1
- package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.ts +0 -6
- package/dist/browser/Diviner/CryptoContractIndexingDiviner.d.ts.map +0 -1
- package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.cts +0 -19
- package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.cts.map +0 -1
- package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.mts +0 -19
- package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.mts.map +0 -1
- package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.ts +0 -19
- package/dist/browser/Diviner/CryptoContractIndexingDivinerLabels.d.ts.map +0 -1
- package/dist/node/CryptoContractDiviner.d.cts.map +0 -1
- package/dist/node/CryptoContractDiviner.d.mts +0 -28
- package/dist/node/CryptoContractDiviner.d.mts.map +0 -1
- package/dist/node/CryptoContractDiviner.d.ts +0 -28
- package/dist/node/CryptoContractDiviner.d.ts.map +0 -1
- package/dist/node/Diviner/CryptoContractIndexingDiviner.d.cts +0 -6
- package/dist/node/Diviner/CryptoContractIndexingDiviner.d.cts.map +0 -1
- package/dist/node/Diviner/CryptoContractIndexingDiviner.d.mts +0 -6
- package/dist/node/Diviner/CryptoContractIndexingDiviner.d.mts.map +0 -1
- package/dist/node/Diviner/CryptoContractIndexingDiviner.d.ts +0 -6
- package/dist/node/Diviner/CryptoContractIndexingDiviner.d.ts.map +0 -1
- package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.cts +0 -19
- package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.cts.map +0 -1
- package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.mts +0 -19
- package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.mts.map +0 -1
- package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.ts +0 -19
- package/dist/node/Diviner/CryptoContractIndexingDivinerLabels.d.ts.map +0 -1
- package/src/Diviner/CryptoContractIndexingDiviner.ts +0 -7
- package/src/Diviner/CryptoContractIndexingDivinerLabels.ts +0 -26
- /package/src/{Erc721Sentinel.json → spec/Erc721Sentinel.json} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,MAAM,WAAW,CAAA;AAE7D,eAAO,MAAM,uCAAuC
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,MAAM,WAAW,CAAA;AAE7D,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GASjD,CAAA"}
|
package/dist/node/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CryptoContractFunctionReadWitnessPlugin } from './Plugin';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './Diviner';
|
|
3
3
|
export * from './Witness';
|
|
4
4
|
export { CryptoContractFunctionReadWitnessPlugin };
|
|
5
5
|
export default CryptoContractFunctionReadWitnessPlugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
|
package/dist/node/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CryptoContractFunctionReadWitnessPlugin } from './Plugin';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './Diviner';
|
|
3
3
|
export * from './Witness';
|
|
4
4
|
export { CryptoContractFunctionReadWitnessPlugin };
|
|
5
5
|
export default CryptoContractFunctionReadWitnessPlugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CryptoContractFunctionReadWitnessPlugin } from './Plugin';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './Diviner';
|
|
3
3
|
export * from './Witness';
|
|
4
4
|
export { CryptoContractFunctionReadWitnessPlugin };
|
|
5
5
|
export default CryptoContractFunctionReadWitnessPlugin;
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,UAAU,CAAA;AAElE,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,uCAAuC,EAAE,CAAA;AAGlD,eAAe,uCAAuC,CAAA"}
|
package/dist/node/index.js
CHANGED
|
@@ -20,9 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
-
ContractInfoSchema: () => ContractInfoSchema,
|
|
24
23
|
CryptoContractDiviner: () => CryptoContractDiviner,
|
|
25
|
-
CryptoContractDivinerConfigSchema: () => CryptoContractDivinerConfigSchema,
|
|
26
24
|
CryptoContractFunctionReadWitness: () => CryptoContractFunctionReadWitness,
|
|
27
25
|
CryptoContractFunctionReadWitnessPlugin: () => CryptoContractFunctionReadWitnessPlugin,
|
|
28
26
|
default: () => src_default
|
|
@@ -103,15 +101,14 @@ var CryptoContractFunctionReadWitnessPlugin = () => (0, import_payloadset_plugin
|
|
|
103
101
|
}
|
|
104
102
|
);
|
|
105
103
|
|
|
106
|
-
// src/
|
|
104
|
+
// src/Diviner/Diviner.ts
|
|
107
105
|
var import_assert2 = require("@xylabs/assert");
|
|
108
106
|
var import_abstract_diviner = require("@xyo-network/abstract-diviner");
|
|
109
107
|
var import_crypto_contract_function_read_payload_plugin2 = require("@xyo-network/crypto-contract-function-read-payload-plugin");
|
|
110
108
|
var import_payload_model3 = require("@xyo-network/payload-model");
|
|
111
|
-
var CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
|
|
112
|
-
var ContractInfoSchema = "network.xyo.crypto.contract.info";
|
|
113
109
|
var CryptoContractDiviner = class _CryptoContractDiviner extends import_abstract_diviner.AbstractDiviner {
|
|
114
|
-
static configSchemas = [CryptoContractDivinerConfigSchema];
|
|
110
|
+
static configSchemas = [import_crypto_contract_function_read_payload_plugin2.CryptoContractDivinerConfigSchema];
|
|
111
|
+
static labels = import_crypto_contract_function_read_payload_plugin2.CryptoContractDivinerLabels;
|
|
115
112
|
static findCallResult(address, functionName, payloads) {
|
|
116
113
|
var _a;
|
|
117
114
|
const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
|
|
@@ -129,7 +126,7 @@ var CryptoContractDiviner = class _CryptoContractDiviner extends import_abstract
|
|
|
129
126
|
return {
|
|
130
127
|
address: (0, import_assert2.assertEx)(_CryptoContractDiviner.matchingExistingField(callResults, "address"), "Mismatched address"),
|
|
131
128
|
chainId: (0, import_assert2.assertEx)(_CryptoContractDiviner.matchingExistingField(callResults, "chainId"), "Mismatched chainId"),
|
|
132
|
-
schema: ContractInfoSchema
|
|
129
|
+
schema: import_crypto_contract_function_read_payload_plugin2.ContractInfoSchema
|
|
133
130
|
};
|
|
134
131
|
}
|
|
135
132
|
async divineHandler(inPayloads = []) {
|
|
@@ -167,9 +164,7 @@ var CryptoContractDiviner = class _CryptoContractDiviner extends import_abstract
|
|
|
167
164
|
var src_default = CryptoContractFunctionReadWitnessPlugin;
|
|
168
165
|
// Annotate the CommonJS export names for ESM import in node:
|
|
169
166
|
0 && (module.exports = {
|
|
170
|
-
ContractInfoSchema,
|
|
171
167
|
CryptoContractDiviner,
|
|
172
|
-
CryptoContractDivinerConfigSchema,
|
|
173
168
|
CryptoContractFunctionReadWitness,
|
|
174
169
|
CryptoContractFunctionReadWitnessPlugin
|
|
175
170
|
});
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\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\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\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 } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override configSchemas = [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","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n asCryptoContractFunctionCallSuccess,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig<{\n schema: CryptoContractDivinerConfigSchema\n}>\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type ContractInfo = Payload<\n {\n address: string\n chainId: string\n results?: Record<string, unknown>\n },\n ContractInfoSchema\n>\n\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\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 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 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 return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n"],"mappings":"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","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_payload_model","result"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/Diviner/Diviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\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\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\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 } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override configSchemas = [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","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\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 { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n static labels: CryptoContractDivinerLabels = 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 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 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 return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,uCAA0B;AAC1B,IAAAA,wBAAiC;AACjC,+BAA8C;;;ACF9C,oBAAyB;AACzB,8BAAgC;AAChC,0DASO;AAEP,2BAAsC;AAEtC,oBAAmC;AAS5B,IAAM,oCAAN,cAEG,wCAAuF;AAAA,EAC/F,OAAgB,gBAAgB,CAAC,iGAA6C;AAAA,EAE9E,IAAI,MAAM;AACR,eAAO,wBAAS,KAAK,OAAO,KAAK,aAAa;AAAA,EAChD;AAAA,EAEA,MAAyB,eAAe,aAA2C,CAAC,GAAgD;AAClI,UAAM,KAAK,QAAQ,OAAO;AAC1B,QAAI;AACF,YAAM,eAAe,MAAM,QAAQ;AAAA,QACjC,WAAW,WAAO,4CAAsB,oFAAgC,CAAC,EAAE,IAAI,OAAO,EAAE,cAAc,MAAM,QAAQ,MAAM;AACxH,gBAAM,EAAE,UAAU,IAAI,KAAK;AAC3B,gBAAM,WAAW,UAAU,KAAK,IAAI,IAAI,UAAU,MAAM;AACxD,gBAAM,uBAAmB,wBAAS,WAAW,KAAK,OAAO,SAAS,iBAAiB;AACnF,gBAAM,4BAAwB,wBAAS,gBAAgB,KAAK,OAAO,cAAc,iBAAiB;AAClG,gBAAM,aAAa,CAAC,GAAI,QAAQ,KAAK,OAAO,QAAQ,CAAC,CAAE;AAEvD,gBAAM,WAAW,IAAI,uBAAS,kBAAkB,KAAK,KAAK,QAAQ;AAClE,cAAI;AACF,kBAAM,SAAS,MAAM,SAAS,qBAAqB,EAAE,GAAG,UAAU;AAClE,kBAAM,oBAAoB,OAAO,WAAW,WAAW,OAAO,SAAS,EAAE,IAAI;AAC7E,kBAAM,cAAiD;AAAA,cACrD,SAAS;AAAA,cACT,MAAM;AAAA,cACN,SAAS,QAAQ,MAAM,SAAS,WAAW,GAAG,OAAO;AAAA,cACrD,cAAc;AAAA,cACd,QAAQ;AAAA,cACR,QAAQ;AAAA,YACV;AACA,mBAAO;AAAA,UACT,SAAS,IAAI;AACX,kBAAM,QAAQ;AACd,oBAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,IAAI,EAAE;AACxD,kBAAM,cAAiD;AAAA,cACrD,SAAS;AAAA,cACT,MAAM;AAAA,cACN,SAAS,QAAQ,MAAM,SAAS,WAAW,GAAG,OAAO;AAAA,cACrD,OAAO,MAAM;AAAA,cACb,cAAc;AAAA,cACd,QAAQ;AAAA,YACV;AACA,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AACF;;;ADzEO,IAAM,0CAA0C,UACrD;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,0CAAS,GAAG,EAAE,GAAG,QAAQ,uCAAiB;AAAA,EACzD;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,kCAAkC,OAAO,MAAM;AACpE,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;AEfF,IAAAC,iBAAyB;AAEzB,8BAAgC;AAChC,IAAAC,uDASO;AACP,IAAAC,wBAA+C;AAIxC,IAAM,wBAAN,MAAM,+BAAyG,wCAAyB;AAAA,EAC7I,OAAgB,gBAAgB,CAAC,sFAAiC;AAAA,EAClE,OAAO,SAAsC;AAAA,EAE7C,OAAiB,eACf,SACA,cACA,UACqB;AAzBzB;AA0BI,UAAM,eAAe,SAAS,KAAK,CAAC,YAAY,QAAQ,iBAAiB,gBAAgB,QAAQ,YAAY,OAAO;AACpH,YAAO,mGAAoC,YAAY,MAAhD,mBAAmD;AAAA,EAC5D;AAAA,EAEA,OAAiB,sBAA+D,MAAW,OAA+B;AA9B5H;AA+BI,UAAM,iBAAgB,UAAK,GAAG,CAAC,MAAT,mBAAa;AACnC,UAAM,cAAc,KAAK,OAAO,CAAC,MAAM,QAAQ;AAC7C,aAAO,QAAQ,IAAI,KAAK,MAAM;AAAA,IAChC,GAAG,KAAK;AACR,WAAO,cAAc,SAAY;AAAA,EACnC;AAAA,EAEU,2BAA2B,aAA+D;AAClG,WAAO;AAAA,MACL,aAAS,yBAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,MAC3G,aAAS,yBAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,MAC3G,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAyB,cAAc,aAAiD,CAAC,GAA4B;AACnH,UAAM,cAAc,WAAW,WAAO,6CAAwD,2FAAsC,CAAC;AACrI,UAAM,YAAY,OAAO;AAAA,MACvB,YAAY,OAAgC,CAAC,MAAMC,YAAW;AAC5D,YAAIA,QAAO,SAAS;AAClB,eAAKA,QAAO,OAAO,IAAI;AAAA,QACzB;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AACA,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,UAAU,IAAI,OAAO,YAAY;AAC/B,cAAM,mBAAmB,YAAY,OAAO,CAAC,eAAe,WAAW,YAAY,OAAO;AAC1F,cAAM,OAAqB;AAAA,UACzB,GAAG,EAAE,SAAS,MAAM,KAAK,cAAc,gBAAgB,EAAE;AAAA,UACzD,GAAG,KAAK,2BAA2B,gBAAgB;AAAA,QACrD;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAEU,cAAc,aAAsF;AAC5G,WAAO,YAAY,OAAgC,CAAC,MAAM,eAAe;AAvE7E;AAwEM,WAAK,WAAW,YAAY,KAAI,mGAAoC,UAAU,MAA9C,mBAAiD;AACjF,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACF;;;AHpEA,IAAO,cAAQ;","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_payload_model","result"]}
|
package/dist/node/index.mjs
CHANGED
|
@@ -76,18 +76,20 @@ var CryptoContractFunctionReadWitnessPlugin = () => createPayloadSetWitnessPlugi
|
|
|
76
76
|
}
|
|
77
77
|
);
|
|
78
78
|
|
|
79
|
-
// src/
|
|
79
|
+
// src/Diviner/Diviner.ts
|
|
80
80
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
81
81
|
import { AbstractDiviner } from "@xyo-network/abstract-diviner";
|
|
82
82
|
import {
|
|
83
83
|
asCryptoContractFunctionCallSuccess,
|
|
84
|
+
ContractInfoSchema,
|
|
85
|
+
CryptoContractDivinerConfigSchema,
|
|
86
|
+
CryptoContractDivinerLabels,
|
|
84
87
|
CryptoContractFunctionCallResultSchema as CryptoContractFunctionCallResultSchema2
|
|
85
88
|
} from "@xyo-network/crypto-contract-function-read-payload-plugin";
|
|
86
89
|
import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
|
|
87
|
-
var CryptoContractDivinerConfigSchema = "network.xyo.crypto.contract.diviner.config";
|
|
88
|
-
var ContractInfoSchema = "network.xyo.crypto.contract.info";
|
|
89
90
|
var CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner {
|
|
90
91
|
static configSchemas = [CryptoContractDivinerConfigSchema];
|
|
92
|
+
static labels = CryptoContractDivinerLabels;
|
|
91
93
|
static findCallResult(address, functionName, payloads) {
|
|
92
94
|
var _a;
|
|
93
95
|
const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address);
|
|
@@ -142,9 +144,7 @@ var CryptoContractDiviner = class _CryptoContractDiviner extends AbstractDiviner
|
|
|
142
144
|
// src/index.ts
|
|
143
145
|
var src_default = CryptoContractFunctionReadWitnessPlugin;
|
|
144
146
|
export {
|
|
145
|
-
ContractInfoSchema,
|
|
146
147
|
CryptoContractDiviner,
|
|
147
|
-
CryptoContractDivinerConfigSchema,
|
|
148
148
|
CryptoContractFunctionReadWitness,
|
|
149
149
|
CryptoContractFunctionReadWitnessPlugin,
|
|
150
150
|
src_default as default
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/index.ts"],"sourcesContent":["import { 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\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 } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override configSchemas = [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","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n asCryptoContractFunctionCallSuccess,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig<{\n schema: CryptoContractDivinerConfigSchema\n}>\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type ContractInfo = Payload<\n {\n address: string\n chainId: string\n results?: Record<string, unknown>\n },\n ContractInfoSchema\n>\n\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\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 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 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 return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":"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","names":["assertEx","CryptoContractFunctionCallResultSchema","isPayloadOfSchemaType","result"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/Diviner/Diviner.ts","../../src/index.ts"],"sourcesContent":["import { 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\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 } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { Contract, Provider } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n providers: Provider[]\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TParams extends CryptoContractFunctionReadWitnessParams = CryptoContractFunctionReadWitnessParams,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall, CryptoContractFunctionCallResult> {\n static override configSchemas = [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","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\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 { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n static labels: CryptoContractDivinerLabels = 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 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 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 return callResults.reduce<Record<string, unknown>>((prev, callResult) => {\n prev[callResult.functionName] = asCryptoContractFunctionCallSuccess(callResult)?.result\n return prev\n }, {})\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":"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","names":["assertEx","CryptoContractFunctionCallResultSchema","isPayloadOfSchemaType","result"]}
|
package/package.json
CHANGED
|
@@ -12,16 +12,14 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.13.20",
|
|
14
14
|
"@xylabs/promise": "^2.13.20",
|
|
15
|
-
"@xyo-network/abstract-diviner": "^2.
|
|
16
|
-
"@xyo-network/abstract-witness": "^2.
|
|
17
|
-
"@xyo-network/crypto-contract-function-read-payload-plugin": "~2.
|
|
18
|
-
"@xyo-network/crypto-nft-payload-plugin": "~2.
|
|
19
|
-
"@xyo-network/
|
|
20
|
-
"@xyo-network/
|
|
21
|
-
"@xyo-network/
|
|
22
|
-
"@xyo-network/
|
|
23
|
-
"@xyo-network/payloadset-plugin": "^2.83.2",
|
|
24
|
-
"@xyo-network/witness-model": "^2.83.2",
|
|
15
|
+
"@xyo-network/abstract-diviner": "^2.84.0",
|
|
16
|
+
"@xyo-network/abstract-witness": "^2.84.0",
|
|
17
|
+
"@xyo-network/crypto-contract-function-read-payload-plugin": "~2.84.0",
|
|
18
|
+
"@xyo-network/crypto-nft-payload-plugin": "~2.84.0",
|
|
19
|
+
"@xyo-network/module-model": "^2.84.0",
|
|
20
|
+
"@xyo-network/payload-model": "^2.84.0",
|
|
21
|
+
"@xyo-network/payloadset-plugin": "^2.84.0",
|
|
22
|
+
"@xyo-network/witness-model": "^2.84.0",
|
|
25
23
|
"ethers": "^6.9.0"
|
|
26
24
|
},
|
|
27
25
|
"devDependencies": {
|
|
@@ -29,11 +27,20 @@
|
|
|
29
27
|
"@xylabs/jest-helpers": "^2.13.20",
|
|
30
28
|
"@xylabs/ts-scripts-yarn3": "^3.2.10",
|
|
31
29
|
"@xylabs/tsconfig": "^3.2.10",
|
|
32
|
-
"@xyo-network/account": "^2.
|
|
33
|
-
"@xyo-network/
|
|
30
|
+
"@xyo-network/account": "^2.84.0",
|
|
31
|
+
"@xyo-network/diviner-boundwitness-memory": "^2.84.0",
|
|
32
|
+
"@xyo-network/diviner-jsonpatch": "^2.84.0",
|
|
33
|
+
"@xyo-network/diviner-model": "^2.84.0",
|
|
34
|
+
"@xyo-network/diviner-payload-memory": "^2.84.0",
|
|
35
|
+
"@xyo-network/diviner-payload-model": "^2.84.0",
|
|
36
|
+
"@xyo-network/diviner-temporal-indexing": "^2.83.0",
|
|
37
|
+
"@xyo-network/manifest": "^2.84.0",
|
|
38
|
+
"@xyo-network/memory-archivist": "^2.84.0",
|
|
39
|
+
"@xyo-network/node-memory": "^2.84.0",
|
|
34
40
|
"@xyo-network/open-zeppelin-typechain": "^3.0.5",
|
|
35
|
-
"@xyo-network/sentinel-model": "^2.
|
|
36
|
-
"@xyo-network/witness-blockchain-abstract": "^2.
|
|
41
|
+
"@xyo-network/sentinel-model": "^2.84.0",
|
|
42
|
+
"@xyo-network/witness-blockchain-abstract": "^2.84.0",
|
|
43
|
+
"@xyo-network/witness-timestamp": "^2.84.0",
|
|
37
44
|
"async-mutex": "^0.4.0",
|
|
38
45
|
"jest": "^29.7.0",
|
|
39
46
|
"typescript": "^5.3.3"
|
|
@@ -78,5 +85,5 @@
|
|
|
78
85
|
"url": "https://github.com/XYOracleNetwork/plugins.git"
|
|
79
86
|
},
|
|
80
87
|
"sideEffects": false,
|
|
81
|
-
"version": "2.
|
|
88
|
+
"version": "2.84.0"
|
|
82
89
|
}
|
|
@@ -3,36 +3,21 @@ import { Promisable } from '@xylabs/promise'
|
|
|
3
3
|
import { AbstractDiviner } from '@xyo-network/abstract-diviner'
|
|
4
4
|
import {
|
|
5
5
|
asCryptoContractFunctionCallSuccess,
|
|
6
|
+
ContractInfo,
|
|
7
|
+
ContractInfoSchema,
|
|
8
|
+
CryptoContractDivinerConfigSchema,
|
|
9
|
+
CryptoContractDivinerLabels,
|
|
10
|
+
CryptoContractDivinerParams,
|
|
6
11
|
CryptoContractFunctionCallResult,
|
|
7
12
|
CryptoContractFunctionCallResultSchema,
|
|
8
13
|
} from '@xyo-network/crypto-contract-function-read-payload-plugin'
|
|
9
|
-
import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'
|
|
10
14
|
import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'
|
|
11
15
|
|
|
12
16
|
export type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]
|
|
13
17
|
|
|
14
|
-
export const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'
|
|
15
|
-
export type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema
|
|
16
|
-
|
|
17
|
-
export type CryptoContractDivinerConfig = DivinerConfig<{
|
|
18
|
-
schema: CryptoContractDivinerConfigSchema
|
|
19
|
-
}>
|
|
20
|
-
export type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>
|
|
21
|
-
|
|
22
|
-
export const ContractInfoSchema = 'network.xyo.crypto.contract.info'
|
|
23
|
-
export type ContractInfoSchema = typeof ContractInfoSchema
|
|
24
|
-
|
|
25
|
-
export type ContractInfo = Payload<
|
|
26
|
-
{
|
|
27
|
-
address: string
|
|
28
|
-
chainId: string
|
|
29
|
-
results?: Record<string, unknown>
|
|
30
|
-
},
|
|
31
|
-
ContractInfoSchema
|
|
32
|
-
>
|
|
33
|
-
|
|
34
18
|
export class CryptoContractDiviner<TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams> extends AbstractDiviner<TParams> {
|
|
35
19
|
static override configSchemas = [CryptoContractDivinerConfigSchema]
|
|
20
|
+
static labels: CryptoContractDivinerLabels = CryptoContractDivinerLabels
|
|
36
21
|
|
|
37
22
|
protected static findCallResult<TResult = string>(
|
|
38
23
|
address: string,
|
package/src/Diviner/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './Diviner'
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
|
|
3
|
+
"nodes": [
|
|
4
|
+
{
|
|
5
|
+
"config": {
|
|
6
|
+
"accountPath": "m/44'/60'/2",
|
|
7
|
+
"name": "ERC1155Node",
|
|
8
|
+
"schema": "network.xyo.node.config"
|
|
9
|
+
},
|
|
10
|
+
"modules": {
|
|
11
|
+
"private": [
|
|
12
|
+
{
|
|
13
|
+
"config": {
|
|
14
|
+
"language": "javascript",
|
|
15
|
+
"name": "AddressStateArchivist",
|
|
16
|
+
"schema": "network.xyo.archivist.config",
|
|
17
|
+
"storeQueries": false
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"config": {
|
|
22
|
+
"archivist": "AddressStateArchivist",
|
|
23
|
+
"language": "javascript",
|
|
24
|
+
"name": "AddressStateBoundWitnessDiviner",
|
|
25
|
+
"schema": "network.xyo.diviner.boundwitness.config"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"config": {
|
|
30
|
+
"archivist": "AddressStateArchivist",
|
|
31
|
+
"language": "javascript",
|
|
32
|
+
"name": "AddressStatePayloadDiviner",
|
|
33
|
+
"schema": "network.xyo.diviner.payload.config"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"config": {
|
|
38
|
+
"language": "javascript",
|
|
39
|
+
"name": "NftDivinerIndexArchivist",
|
|
40
|
+
"schema": "network.xyo.archivist.config"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"config": {
|
|
45
|
+
"archivist": "NftDivinerIndexArchivist",
|
|
46
|
+
"language": "javascript",
|
|
47
|
+
"name": "NftDivinerIndexBoundWitnessDiviner",
|
|
48
|
+
"schema": "network.xyo.diviner.boundwitness.config"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"config": {
|
|
53
|
+
"archivist": "NftDivinerIndexArchivist",
|
|
54
|
+
"language": "javascript",
|
|
55
|
+
"name": "NftDivinerIndexPayloadDiviner",
|
|
56
|
+
"schema": "network.xyo.diviner.payload.config"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"config": {
|
|
61
|
+
"filter": {
|
|
62
|
+
"payload_schemas": ["network.xyo.crypto.contract.info.erc1155"]
|
|
63
|
+
},
|
|
64
|
+
"labels": {
|
|
65
|
+
"network.xyo.crypto.contract.info": "diviner",
|
|
66
|
+
"network.xyo.diviner.stage": "stateToIndexCandidateDiviner"
|
|
67
|
+
},
|
|
68
|
+
"language": "javascript",
|
|
69
|
+
"name": "NftStateToIndexCandidateDiviner",
|
|
70
|
+
"payloadStore": {
|
|
71
|
+
"archivist": "NftArchivist",
|
|
72
|
+
"boundWitnessDiviner": "NftBoundWitnessDiviner",
|
|
73
|
+
"payloadDiviner": "NftPayloadDiviner"
|
|
74
|
+
},
|
|
75
|
+
"schema": "network.xyo.diviner.indexing.temporal.stage.stateToIndexCandidateDiviner.config"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"config": {
|
|
80
|
+
"labels": {
|
|
81
|
+
"network.xyo.crypto.contract.info": "diviner",
|
|
82
|
+
"network.xyo.diviner.stage": "indexCandidateToIndexDiviner"
|
|
83
|
+
},
|
|
84
|
+
"language": "javascript",
|
|
85
|
+
"name": "NftIndexCandidateToNftIndexDiviner",
|
|
86
|
+
"schema": "network.xyo.diviner.indexing.temporal.stage.indexCandidateToIndexDiviner.config",
|
|
87
|
+
"schemaTransforms": {
|
|
88
|
+
"network.xyo.crypto.contract.info.erc1155": [
|
|
89
|
+
{
|
|
90
|
+
"destinationField": "address",
|
|
91
|
+
"sourcePathExpression": "$.address"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"destinationField": "chainId",
|
|
95
|
+
"sourcePathExpression": "$.chainId"
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"network.xyo.timestamp": [
|
|
99
|
+
{
|
|
100
|
+
"destinationField": "timestamp",
|
|
101
|
+
"sourcePathExpression": "$.timestamp"
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"config": {
|
|
109
|
+
"divinerQuerySchema": "network.xyo.diviner.payload.query",
|
|
110
|
+
"indexQuerySchema": "network.xyo.diviner.payload.query",
|
|
111
|
+
"indexSchema": "network.xyo.diviner.indexing.temporal.result.index",
|
|
112
|
+
"labels": {
|
|
113
|
+
"network.xyo.crypto.contract.info": "diviner",
|
|
114
|
+
"network.xyo.diviner.stage": "divinerQueryToIndexQueryDiviner"
|
|
115
|
+
},
|
|
116
|
+
"language": "javascript",
|
|
117
|
+
"name": "NftQueryToNftIndexQueryDiviner",
|
|
118
|
+
"schema": "network.xyo.diviner.indexing.temporal.stage.divinerQueryToIndexQueryDiviner.config",
|
|
119
|
+
"schemaTransforms": {
|
|
120
|
+
"network.xyo.diviner.payload.query": [
|
|
121
|
+
{
|
|
122
|
+
"destinationField": "address",
|
|
123
|
+
"sourcePathExpression": "$.address"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"defaultValue": 1,
|
|
127
|
+
"destinationField": "chainId",
|
|
128
|
+
"sourcePathExpression": "$.chainId"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"defaultValue": 1,
|
|
132
|
+
"destinationField": "limit",
|
|
133
|
+
"sourcePathExpression": "$.limit"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"defaultValue": 0,
|
|
137
|
+
"destinationField": "offset",
|
|
138
|
+
"sourcePathExpression": "$.offset"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"defaultValue": "desc",
|
|
142
|
+
"destinationField": "order",
|
|
143
|
+
"sourcePathExpression": "$.order"
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"config": {
|
|
151
|
+
"labels": {
|
|
152
|
+
"network.xyo.crypto.contract.info": "diviner",
|
|
153
|
+
"network.xyo.diviner.stage": "indexQueryResponseToDivinerQueryResponseDiviner"
|
|
154
|
+
},
|
|
155
|
+
"language": "javascript",
|
|
156
|
+
"name": "NftIndexQueryResponseToNftQueryResponseDiviner",
|
|
157
|
+
"schema": "network.xyo.diviner.indexing.temporal.stage.indexQueryResponseToDivinerQueryResponseDiviner.config"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"public": [
|
|
162
|
+
{
|
|
163
|
+
"config": {
|
|
164
|
+
"indexStore": {
|
|
165
|
+
"archivist": "NftDivinerIndexArchivist",
|
|
166
|
+
"boundWitnessDiviner": "NftDivinerIndexBoundWitnessDiviner",
|
|
167
|
+
"payloadDiviner": "NftDivinerIndexPayloadDiviner"
|
|
168
|
+
},
|
|
169
|
+
"indexingDivinerStages": {
|
|
170
|
+
"divinerQueryToIndexQueryDiviner": "NftQueryToNftIndexQueryDiviner",
|
|
171
|
+
"indexCandidateToIndexDiviner": "NftIndexCandidateToNftIndexDiviner",
|
|
172
|
+
"indexQueryResponseToDivinerQueryResponseDiviner": "NftIndexQueryResponseToNftQueryResponseDiviner",
|
|
173
|
+
"stateToIndexCandidateDiviner": "NftStateToIndexCandidateDiviner"
|
|
174
|
+
},
|
|
175
|
+
"language": "javascript",
|
|
176
|
+
"name": "Erc1155IndexDiviner",
|
|
177
|
+
"pollFrequency": 1,
|
|
178
|
+
"schema": "network.xyo.diviner.indexing.temporal.config",
|
|
179
|
+
"stateStore": {
|
|
180
|
+
"archivist": "AddressStateArchivist",
|
|
181
|
+
"boundWitnessDiviner": "AddressStateBoundWitnessDiviner",
|
|
182
|
+
"payloadDiviner": "AddressStatePayloadDiviner"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
],
|
|
190
|
+
"schema": "network.xyo.manifest"
|
|
191
|
+
}
|