@xyo-network/evm-call-witness 5.1.3 → 5.1.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.
- package/package.json +46 -43
- package/dist/neutral/spec/Sentinel.collection.spec.d.ts +0 -2
- package/dist/neutral/spec/Sentinel.collection.spec.d.ts.map +0 -1
- package/dist/neutral/spec/Sentinel.token.enumerate.spec.d.ts +0 -2
- package/dist/neutral/spec/Sentinel.token.enumerate.spec.d.ts.map +0 -1
- package/dist/neutral/spec/Sentinel.token.spec.d.ts +0 -2
- package/dist/neutral/spec/Sentinel.token.spec.d.ts.map +0 -1
- package/dist/neutral/spec/Witness.spec.d.ts +0 -2
- package/dist/neutral/spec/Witness.spec.d.ts.map +0 -1
- package/dist/neutral/spec/imported/AddressToContract/AddressToContractIndex/Contract.Sentinel.Node.spec.d.ts +0 -2
- package/dist/neutral/spec/imported/AddressToContract/AddressToContractIndex/Contract.Sentinel.Node.spec.d.ts.map +0 -1
- package/dist/neutral/spec/imported/AddressToContract/CollectionInfo/Sentinel.collection.spec.d.ts +0 -2
- package/dist/neutral/spec/imported/AddressToContract/CollectionInfo/Sentinel.collection.spec.d.ts.map +0 -1
- package/dist/neutral/spec/imported/AddressToContract/ManualTokenIteration/Sentinel.token.spec.d.ts +0 -2
- package/dist/neutral/spec/imported/AddressToContract/ManualTokenIteration/Sentinel.token.spec.d.ts.map +0 -1
- package/dist/neutral/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.d.ts +0 -2
- package/dist/neutral/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.d.ts.map +0 -1
- package/dist/neutral/spec/imported/NftIndexToNftIdIndex/Erc721.NftId.Index.spec.d.ts +0 -2
- package/dist/neutral/spec/imported/NftIndexToNftIdIndex/Erc721.NftId.Index.spec.d.ts.map +0 -1
- package/dist/neutral/spec/imported/TotalSupplyToNftIndexIndex/Erc721.NftIndex.Index.spec.d.ts +0 -2
- package/dist/neutral/spec/imported/TotalSupplyToNftIndexIndex/Erc721.NftIndex.Index.spec.d.ts.map +0 -1
- package/src/spec/Sentinel.collection.spec.ts +0 -127
- package/src/spec/Sentinel.token.enumerate.spec.ts +0 -138
- package/src/spec/Sentinel.token.spec.ts +0 -131
- package/src/spec/Witness.spec.ts +0 -43
- package/src/spec/imported/AddressToContract/AddressToContractIndex/Contract.Sentinel.Node.spec.ts +0 -183
- package/src/spec/imported/AddressToContract/CollectionInfo/Sentinel.collection.spec.ts +0 -143
- package/src/spec/imported/AddressToContract/ManualTokenIteration/Sentinel.token.spec.ts +0 -187
- package/src/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.ts +0 -101
- package/src/spec/imported/NftIndexToNftIdIndex/Erc721.NftId.Index.spec.ts +0 -118
- package/src/spec/imported/TotalSupplyToNftIndexIndex/Erc721.NftIndex.Index.spec.ts +0 -124
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/evm-call-witness",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.5",
|
|
4
4
|
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -30,54 +30,57 @@
|
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
31
|
"files": [
|
|
32
32
|
"dist",
|
|
33
|
-
"src"
|
|
33
|
+
"src",
|
|
34
|
+
"!**/*.bench.*",
|
|
35
|
+
"!**/*.spec.*",
|
|
36
|
+
"!**/*.test.*"
|
|
34
37
|
],
|
|
35
38
|
"dependencies": {
|
|
36
|
-
"@xylabs/assert": "~5.0.
|
|
37
|
-
"@xylabs/hex": "~5.0.
|
|
38
|
-
"@xylabs/promise": "~5.0.
|
|
39
|
-
"@xyo-network/diviner-abstract": "~5.1.
|
|
40
|
-
"@xyo-network/diviner-model": "~5.1.
|
|
41
|
-
"@xyo-network/erc1822-witness": "~5.1.
|
|
42
|
-
"@xyo-network/erc1967-witness": "~5.1.
|
|
43
|
-
"@xyo-network/module-model": "~5.1.
|
|
44
|
-
"@xyo-network/payload-model": "~5.1.
|
|
45
|
-
"@xyo-network/witness-evm-abstract": "~5.1.
|
|
39
|
+
"@xylabs/assert": "~5.0.37",
|
|
40
|
+
"@xylabs/hex": "~5.0.37",
|
|
41
|
+
"@xylabs/promise": "~5.0.37",
|
|
42
|
+
"@xyo-network/diviner-abstract": "~5.1.23",
|
|
43
|
+
"@xyo-network/diviner-model": "~5.1.23",
|
|
44
|
+
"@xyo-network/erc1822-witness": "~5.1.5",
|
|
45
|
+
"@xyo-network/erc1967-witness": "~5.1.5",
|
|
46
|
+
"@xyo-network/module-model": "~5.1.23",
|
|
47
|
+
"@xyo-network/payload-model": "~5.1.23",
|
|
48
|
+
"@xyo-network/witness-evm-abstract": "~5.1.23",
|
|
46
49
|
"ethers": "~6.15.0"
|
|
47
50
|
},
|
|
48
51
|
"devDependencies": {
|
|
49
|
-
"@xylabs/delay": "~5.0.
|
|
50
|
-
"@xylabs/object": "~5.0.
|
|
51
|
-
"@xylabs/profile": "~5.0.
|
|
52
|
-
"@xylabs/ts-scripts-yarn3": "~7.
|
|
53
|
-
"@xylabs/tsconfig": "~7.
|
|
54
|
-
"@xylabs/vitest-extended": "~5.0.
|
|
55
|
-
"@xyo-network/archivist-memory": "~5.1.
|
|
56
|
-
"@xyo-network/crypto-contract-function-read-payload-plugin": "~5.1.
|
|
57
|
-
"@xyo-network/diviner-boundwitness-memory": "~5.1.
|
|
58
|
-
"@xyo-network/diviner-jsonpatch": "~5.1.
|
|
59
|
-
"@xyo-network/diviner-jsonpatch-memory": "~5.1.
|
|
60
|
-
"@xyo-network/diviner-jsonpath-aggregate-memory": "~5.1.
|
|
61
|
-
"@xyo-network/diviner-payload-generic": "~5.1.
|
|
62
|
-
"@xyo-network/diviner-payload-model": "~5.1.
|
|
63
|
-
"@xyo-network/diviner-range": "~5.1.
|
|
64
|
-
"@xyo-network/diviner-temporal-indexing": "~5.1.
|
|
65
|
-
"@xyo-network/evm-contract-witness": "~5.1.
|
|
66
|
-
"@xyo-network/evm-nft-id-payload-plugin": "~5.1.
|
|
67
|
-
"@xyo-network/evm-token-interface-diviner": "~5.1.
|
|
68
|
-
"@xyo-network/manifest": "~5.1.
|
|
69
|
-
"@xyo-network/module-factory-locator": "~5.1.
|
|
70
|
-
"@xyo-network/node-memory": "~5.1.
|
|
71
|
-
"@xyo-network/open-zeppelin-typechain": "~4.0.
|
|
72
|
-
"@xyo-network/sentinel-model": "~5.1.
|
|
73
|
-
"@xyo-network/wallet": "~5.1.
|
|
74
|
-
"@xyo-network/wallet-model": "~5.1.
|
|
75
|
-
"@xyo-network/witness-adhoc": "~5.1.
|
|
76
|
-
"@xyo-network/witness-model": "~5.1.
|
|
77
|
-
"@xyo-network/witness-timestamp": "~5.1.
|
|
52
|
+
"@xylabs/delay": "~5.0.37",
|
|
53
|
+
"@xylabs/object": "~5.0.37",
|
|
54
|
+
"@xylabs/profile": "~5.0.37",
|
|
55
|
+
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
56
|
+
"@xylabs/tsconfig": "~7.2.8",
|
|
57
|
+
"@xylabs/vitest-extended": "~5.0.37",
|
|
58
|
+
"@xyo-network/archivist-memory": "~5.1.23",
|
|
59
|
+
"@xyo-network/crypto-contract-function-read-payload-plugin": "~5.1.5",
|
|
60
|
+
"@xyo-network/diviner-boundwitness-memory": "~5.1.23",
|
|
61
|
+
"@xyo-network/diviner-jsonpatch": "~5.1.23",
|
|
62
|
+
"@xyo-network/diviner-jsonpatch-memory": "~5.1.23",
|
|
63
|
+
"@xyo-network/diviner-jsonpath-aggregate-memory": "~5.1.23",
|
|
64
|
+
"@xyo-network/diviner-payload-generic": "~5.1.23",
|
|
65
|
+
"@xyo-network/diviner-payload-model": "~5.1.23",
|
|
66
|
+
"@xyo-network/diviner-range": "~5.1.23",
|
|
67
|
+
"@xyo-network/diviner-temporal-indexing": "~5.1.23",
|
|
68
|
+
"@xyo-network/evm-contract-witness": "~5.1.5",
|
|
69
|
+
"@xyo-network/evm-nft-id-payload-plugin": "~5.1.5",
|
|
70
|
+
"@xyo-network/evm-token-interface-diviner": "~5.1.5",
|
|
71
|
+
"@xyo-network/manifest": "~5.1.23",
|
|
72
|
+
"@xyo-network/module-factory-locator": "~5.1.23",
|
|
73
|
+
"@xyo-network/node-memory": "~5.1.23",
|
|
74
|
+
"@xyo-network/open-zeppelin-typechain": "~4.0.10",
|
|
75
|
+
"@xyo-network/sentinel-model": "~5.1.23",
|
|
76
|
+
"@xyo-network/wallet": "~5.1.23",
|
|
77
|
+
"@xyo-network/wallet-model": "~5.1.23",
|
|
78
|
+
"@xyo-network/witness-adhoc": "~5.1.23",
|
|
79
|
+
"@xyo-network/witness-model": "~5.1.23",
|
|
80
|
+
"@xyo-network/witness-timestamp": "~5.1.23",
|
|
78
81
|
"async-mutex": "~0.5.0",
|
|
79
|
-
"typescript": "~5.9.
|
|
80
|
-
"vitest": "~
|
|
82
|
+
"typescript": "~5.9.3",
|
|
83
|
+
"vitest": "~4.0.10"
|
|
81
84
|
},
|
|
82
85
|
"publishConfig": {
|
|
83
86
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.collection.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Sentinel.collection.spec.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.token.enumerate.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Sentinel.token.enumerate.spec.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.token.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Sentinel.token.spec.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.spec.d.ts","sourceRoot":"","sources":["../../../src/spec/Witness.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Contract.Sentinel.Node.spec.d.ts","sourceRoot":"","sources":["../../../../../../src/spec/imported/AddressToContract/AddressToContractIndex/Contract.Sentinel.Node.spec.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.collection.spec.d.ts","sourceRoot":"","sources":["../../../../../../src/spec/imported/AddressToContract/CollectionInfo/Sentinel.collection.spec.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sentinel.token.spec.d.ts","sourceRoot":"","sources":["../../../../../../src/spec/imported/AddressToContract/ManualTokenIteration/Sentinel.token.spec.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB,CAAA"}
|
package/dist/neutral/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Erc721.TotalSupply.Index.spec.d.ts","sourceRoot":"","sources":["../../../../../src/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Erc721.NftId.Index.spec.d.ts","sourceRoot":"","sources":["../../../../../src/spec/imported/NftIndexToNftIdIndex/Erc721.NftId.Index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
package/dist/neutral/spec/imported/TotalSupplyToNftIndexIndex/Erc721.NftIndex.Index.spec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Erc721.NftIndex.Index.spec.d.ts","sourceRoot":"","sources":["../../../../../src/spec/imported/TotalSupplyToNftIndexIndex/Erc721.NftIndex.Index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-statements */
|
|
2
|
-
|
|
3
|
-
import '@xylabs/vitest-extended'
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
createProfiler, profile, profileReport,
|
|
7
|
-
} from '@xylabs/profile'
|
|
8
|
-
import { asDivinerInstance } from '@xyo-network/diviner-model'
|
|
9
|
-
import type { PackageManifestPayload } from '@xyo-network/manifest'
|
|
10
|
-
import { ManifestWrapper } from '@xyo-network/manifest'
|
|
11
|
-
import { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'
|
|
12
|
-
import { ModuleFactory } from '@xyo-network/module-model'
|
|
13
|
-
import {
|
|
14
|
-
ERC721__factory, ERC721Enumerable__factory, ERC1155__factory,
|
|
15
|
-
} from '@xyo-network/open-zeppelin-typechain'
|
|
16
|
-
import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
|
|
17
|
-
import { asSentinelInstance } from '@xyo-network/sentinel-model'
|
|
18
|
-
import { HDWallet } from '@xyo-network/wallet'
|
|
19
|
-
import { getProviderFromEnv } from '@xyo-network/witness-evm-abstract'
|
|
20
|
-
import { asWitnessInstance } from '@xyo-network/witness-model'
|
|
21
|
-
import type { Provider } from 'ethers'
|
|
22
|
-
import {
|
|
23
|
-
afterAll, describe, expect,
|
|
24
|
-
it,
|
|
25
|
-
} from 'vitest'
|
|
26
|
-
|
|
27
|
-
import type { EvmCallResults } from '../Diviner.ts'
|
|
28
|
-
import { EvmCallDiviner, EvmCallResultsSchema } from '../Diviner.ts'
|
|
29
|
-
import type { EvmCallWitnessParams } from '../model.ts'
|
|
30
|
-
import type { EvmCall } from '../Payload.ts'
|
|
31
|
-
import { EvmCallSchema } from '../Payload.ts'
|
|
32
|
-
import { EvmCallWitness } from '../Witness.ts'
|
|
33
|
-
import erc721SentinelManifest from './Erc721Sentinel.json' with { type: 'json' }
|
|
34
|
-
|
|
35
|
-
const profiler = createProfiler()
|
|
36
|
-
|
|
37
|
-
const tokenCount = 0
|
|
38
|
-
const maxProviders = 2
|
|
39
|
-
|
|
40
|
-
describe('Erc721Sentinel - Collection', () => {
|
|
41
|
-
// const address = '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea' //Random ERC721
|
|
42
|
-
const address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D' // Bored Apes
|
|
43
|
-
// const address = '0x495f947276749Ce646f68AC8c248420045cb7b5e' //OpenSea Storefront
|
|
44
|
-
// const address = '0x6802df79bcbbf019fe5cb366ff25720d1365cfd3' //Upgradeable
|
|
45
|
-
|
|
46
|
-
const getProviders = () => {
|
|
47
|
-
const providers: Provider[] = []
|
|
48
|
-
for (let i = 0; i < maxProviders; i++) {
|
|
49
|
-
providers.push(getProviderFromEnv(1))
|
|
50
|
-
}
|
|
51
|
-
return providers
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const providers = getProviders()
|
|
55
|
-
|
|
56
|
-
describe.skipIf(!providers)('report', () => {
|
|
57
|
-
it('specifying address', async () => {
|
|
58
|
-
profile(profiler, 'setup')
|
|
59
|
-
const mnemonic = 'later puppy sound rebuild rebuild noise ozone amazing hope broccoli crystal grief'
|
|
60
|
-
const wallet = await HDWallet.fromPhrase(mnemonic)
|
|
61
|
-
const locator = new ModuleFactoryLocator()
|
|
62
|
-
locator.register(EvmCallDiviner.factory())
|
|
63
|
-
|
|
64
|
-
locator.register(
|
|
65
|
-
new ModuleFactory(EvmCallWitness, {
|
|
66
|
-
config: { abi: ERC721__factory.abi },
|
|
67
|
-
providers: () => getProviders(),
|
|
68
|
-
} as EvmCallWitnessParams),
|
|
69
|
-
{ 'network.xyo.evm.interface': 'Erc721' },
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
locator.register(
|
|
73
|
-
new ModuleFactory(EvmCallWitness, {
|
|
74
|
-
config: { abi: ERC721Enumerable__factory.abi },
|
|
75
|
-
providers: () => getProviders(),
|
|
76
|
-
} as EvmCallWitnessParams),
|
|
77
|
-
{ 'network.xyo.evm.interface': 'Erc721Enumerable' },
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
locator.register(
|
|
81
|
-
new ModuleFactory(EvmCallWitness, {
|
|
82
|
-
config: { abi: ERC1155__factory.abi },
|
|
83
|
-
providers: () => getProviders(),
|
|
84
|
-
} as EvmCallWitnessParams),
|
|
85
|
-
{ 'network.xyo.evm.interface': 'Erc1155' },
|
|
86
|
-
)
|
|
87
|
-
profile(profiler, 'setup')
|
|
88
|
-
profile(profiler, 'manifest')
|
|
89
|
-
const manifest = new ManifestWrapper(erc721SentinelManifest as PackageManifestPayload, wallet, locator)
|
|
90
|
-
profile(profiler, 'manifest-load')
|
|
91
|
-
const node = await manifest.loadNodeFromIndex(0)
|
|
92
|
-
profile(profiler, 'manifest-load')
|
|
93
|
-
profile(profiler, 'manifest-resolve')
|
|
94
|
-
const mods = await node.resolve('*')
|
|
95
|
-
profile(profiler, 'manifest-resolve')
|
|
96
|
-
profile(profiler, 'manifest')
|
|
97
|
-
expect(mods.length).toBeGreaterThan(5)
|
|
98
|
-
|
|
99
|
-
const collectionSentinel = asSentinelInstance(await node.resolve('NftInfoSentinel'))
|
|
100
|
-
expect(collectionSentinel).toBeDefined()
|
|
101
|
-
|
|
102
|
-
const nameWitness = asWitnessInstance(await node.resolve('Erc721NameWitness'))
|
|
103
|
-
expect(nameWitness).toBeDefined()
|
|
104
|
-
|
|
105
|
-
const symbolWitness = asWitnessInstance(await node.resolve('Erc721SymbolWitness'))
|
|
106
|
-
expect(symbolWitness).toBeDefined()
|
|
107
|
-
|
|
108
|
-
const diviner = asDivinerInstance(await node.resolve('ContractInfoDiviner'))
|
|
109
|
-
expect(diviner).toBeDefined()
|
|
110
|
-
|
|
111
|
-
const collectionCallPayload: EvmCall = { address, schema: EvmCallSchema }
|
|
112
|
-
profile(profiler, 'collectionReport')
|
|
113
|
-
const report = await collectionSentinel?.report([collectionCallPayload])
|
|
114
|
-
profile(profiler, 'collectionReport')
|
|
115
|
-
profile(profiler, 'tokenCallSetup')
|
|
116
|
-
const info = report?.find(isPayloadOfSchemaType<EvmCallResults>(EvmCallResultsSchema))
|
|
117
|
-
console.log(`info: ${JSON.stringify(info, null, 2)}`)
|
|
118
|
-
|
|
119
|
-
expect(info?.results?.name.result).toBeString()
|
|
120
|
-
})
|
|
121
|
-
afterAll(() => {
|
|
122
|
-
const profileData = profileReport(profiler)
|
|
123
|
-
if (profileData['tokenReport']) console.log(`Timer: ${profileData['tokenReport'] / tokenCount}ms`)
|
|
124
|
-
console.log(`Profile: ${JSON.stringify(profileData, null, 2)}`)
|
|
125
|
-
})
|
|
126
|
-
})
|
|
127
|
-
})
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-statements */
|
|
2
|
-
|
|
3
|
-
import '@xylabs/vitest-extended'
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
createProfiler, profile, profileReport,
|
|
7
|
-
} from '@xylabs/profile'
|
|
8
|
-
import { JsonPatchDiviner } from '@xyo-network/diviner-jsonpatch-memory'
|
|
9
|
-
import { JsonPathAggregateDiviner } from '@xyo-network/diviner-jsonpath-aggregate-memory'
|
|
10
|
-
import { asDivinerInstance } from '@xyo-network/diviner-model'
|
|
11
|
-
import { RangeDiviner } from '@xyo-network/diviner-range'
|
|
12
|
-
import type { Erc1822WitnessParams } from '@xyo-network/erc1822-witness'
|
|
13
|
-
import { Erc1822Witness } from '@xyo-network/erc1822-witness'
|
|
14
|
-
import type { Erc1967WitnessParams } from '@xyo-network/erc1967-witness'
|
|
15
|
-
import { Erc1967Witness } from '@xyo-network/erc1967-witness'
|
|
16
|
-
import type { EvmContractWitnessParams } from '@xyo-network/evm-contract-witness'
|
|
17
|
-
import { EvmContractWitness } from '@xyo-network/evm-contract-witness'
|
|
18
|
-
import { EvmTokenInterfaceImplementedDiviner } from '@xyo-network/evm-token-interface-diviner'
|
|
19
|
-
import type { PackageManifestPayload } from '@xyo-network/manifest'
|
|
20
|
-
import { ManifestWrapper } from '@xyo-network/manifest'
|
|
21
|
-
import { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'
|
|
22
|
-
import { ModuleFactory } from '@xyo-network/module-model'
|
|
23
|
-
import {
|
|
24
|
-
ERC721__factory, ERC721Enumerable__factory, ERC721URIStorage__factory,
|
|
25
|
-
} from '@xyo-network/open-zeppelin-typechain'
|
|
26
|
-
import { asSentinelInstance } from '@xyo-network/sentinel-model'
|
|
27
|
-
import { HDWallet } from '@xyo-network/wallet'
|
|
28
|
-
import { AdhocWitness } from '@xyo-network/witness-adhoc'
|
|
29
|
-
import type { EvmAddress } from '@xyo-network/witness-evm-abstract'
|
|
30
|
-
import { EvmAddressSchema, getProvidersFromEnv } from '@xyo-network/witness-evm-abstract'
|
|
31
|
-
import { asWitnessInstance } from '@xyo-network/witness-model'
|
|
32
|
-
import {
|
|
33
|
-
afterAll,
|
|
34
|
-
describe, expect, it,
|
|
35
|
-
} from 'vitest'
|
|
36
|
-
|
|
37
|
-
import { EvmCallDiviner } from '../Diviner.ts'
|
|
38
|
-
import type { EvmCallWitnessParams } from '../model.ts'
|
|
39
|
-
import { EvmCallWitness } from '../Witness.ts'
|
|
40
|
-
import erc721TokenEnumerateSentinelManifest from './Erc721TokenEnumerateSentinel.json' with { type: 'json' }
|
|
41
|
-
|
|
42
|
-
const profiler = createProfiler()
|
|
43
|
-
|
|
44
|
-
const tokenCount = 0
|
|
45
|
-
const maxProviders = 2
|
|
46
|
-
|
|
47
|
-
describe.skip('Erc721Sentinel-Enumerate', () => {
|
|
48
|
-
// const address = '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea' //Random ERC721
|
|
49
|
-
const address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D' // Bored Apes
|
|
50
|
-
// const address = '0x495f947276749Ce646f68AC8c248420045cb7b5e' //OpenSea Storefront
|
|
51
|
-
// const address = '0x6802df79bcbbf019fe5cb366ff25720d1365cfd3' //Upgradeable
|
|
52
|
-
|
|
53
|
-
const providers = getProvidersFromEnv(maxProviders)
|
|
54
|
-
|
|
55
|
-
describe.skipIf(providers.length === 0)('report', () => {
|
|
56
|
-
it('specifying address', async () => {
|
|
57
|
-
profile(profiler, 'setup')
|
|
58
|
-
const wallet = await HDWallet.random()
|
|
59
|
-
const locator = new ModuleFactoryLocator()
|
|
60
|
-
locator.register(EvmCallDiviner.factory())
|
|
61
|
-
locator.register(AdhocWitness.factory())
|
|
62
|
-
locator.register(
|
|
63
|
-
new ModuleFactory(Erc1822Witness, { providers: () => getProvidersFromEnv(maxProviders) } as Erc1822WitnessParams),
|
|
64
|
-
)
|
|
65
|
-
locator.register(
|
|
66
|
-
new ModuleFactory(Erc1967Witness, { providers: () => getProvidersFromEnv(maxProviders) } as Erc1967WitnessParams),
|
|
67
|
-
)
|
|
68
|
-
locator.register(JsonPathAggregateDiviner.factory())
|
|
69
|
-
locator.register(JsonPatchDiviner.factory())
|
|
70
|
-
locator.register(
|
|
71
|
-
new ModuleFactory(EvmContractWitness, { providers: () => getProvidersFromEnv(maxProviders) } as EvmContractWitnessParams),
|
|
72
|
-
)
|
|
73
|
-
locator.register(EvmTokenInterfaceImplementedDiviner.factory())
|
|
74
|
-
locator.register(RangeDiviner.factory())
|
|
75
|
-
|
|
76
|
-
locator.register(
|
|
77
|
-
new ModuleFactory(EvmCallWitness, {
|
|
78
|
-
config: { abi: ERC721__factory.abi },
|
|
79
|
-
providers: () => getProvidersFromEnv(maxProviders),
|
|
80
|
-
} as EvmCallWitnessParams),
|
|
81
|
-
{ 'network.xyo.evm.interface': 'Erc721' },
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
locator.register(
|
|
85
|
-
new ModuleFactory(EvmCallWitness, {
|
|
86
|
-
config: { abi: ERC721Enumerable__factory.abi },
|
|
87
|
-
providers: () => getProvidersFromEnv(maxProviders),
|
|
88
|
-
} as EvmCallWitnessParams),
|
|
89
|
-
{ 'network.xyo.evm.interface': 'Erc721Enumerable' },
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
locator.register(
|
|
93
|
-
new ModuleFactory(EvmCallWitness, {
|
|
94
|
-
config: { abi: ERC721URIStorage__factory.abi },
|
|
95
|
-
providers: () => getProvidersFromEnv(maxProviders),
|
|
96
|
-
} as EvmCallWitnessParams),
|
|
97
|
-
{ 'network.xyo.evm.interface': 'Erc721UriStorage' },
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
profile(profiler, 'setup')
|
|
101
|
-
profile(profiler, 'manifest')
|
|
102
|
-
const manifest = new ManifestWrapper(erc721TokenEnumerateSentinelManifest as PackageManifestPayload, wallet, locator)
|
|
103
|
-
profile(profiler, 'manifest-load')
|
|
104
|
-
const node = await manifest.loadNodeFromIndex(0)
|
|
105
|
-
profile(profiler, 'manifest-load')
|
|
106
|
-
profile(profiler, 'manifest-resolve')
|
|
107
|
-
const mods = await node.resolve('*')
|
|
108
|
-
profile(profiler, 'manifest-resolve')
|
|
109
|
-
profile(profiler, 'manifest')
|
|
110
|
-
expect(mods.length).toBeGreaterThan(5)
|
|
111
|
-
|
|
112
|
-
const tokenSentinel = asSentinelInstance(await node.resolve('NftTokenInfoAllSentinelDebug'))
|
|
113
|
-
expect(tokenSentinel).toBeDefined()
|
|
114
|
-
|
|
115
|
-
const tokenUriWitness = asWitnessInstance(await node.resolve('Erc721TokenURIWitness'))
|
|
116
|
-
expect(tokenUriWitness).toBeDefined()
|
|
117
|
-
|
|
118
|
-
const ownerOfWitness = asWitnessInstance(await node.resolve('Erc721OwnerOfWitness'))
|
|
119
|
-
expect(ownerOfWitness).toBeDefined()
|
|
120
|
-
|
|
121
|
-
const diviner = asDivinerInstance(await node.resolve('TokenInfoDiviner'))
|
|
122
|
-
expect(diviner).toBeDefined()
|
|
123
|
-
|
|
124
|
-
const addressPayload: EvmAddress = {
|
|
125
|
-
address, chainId: 1, schema: EvmAddressSchema,
|
|
126
|
-
}
|
|
127
|
-
profile(profiler, 'tokenReport')
|
|
128
|
-
const report = await tokenSentinel?.report([addressPayload])
|
|
129
|
-
console.log(`report: ${JSON.stringify(report, null, 2)}`)
|
|
130
|
-
expect(report?.length).toBeGreaterThan(0)
|
|
131
|
-
})
|
|
132
|
-
afterAll(() => {
|
|
133
|
-
const profileData = profileReport(profiler)
|
|
134
|
-
if (profileData['tokenReport']) console.log(`Timer: ${profileData['tokenReport'] / tokenCount}ms`)
|
|
135
|
-
console.log(`Profile: ${JSON.stringify(profileData, null, 2)}`)
|
|
136
|
-
})
|
|
137
|
-
})
|
|
138
|
-
})
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-statements */
|
|
2
|
-
|
|
3
|
-
import '@xylabs/vitest-extended'
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
createProfiler, profile, profileReport,
|
|
7
|
-
} from '@xylabs/profile'
|
|
8
|
-
import { asDivinerInstance } from '@xyo-network/diviner-model'
|
|
9
|
-
import type { PackageManifestPayload } from '@xyo-network/manifest'
|
|
10
|
-
import { ManifestWrapper } from '@xyo-network/manifest'
|
|
11
|
-
import { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'
|
|
12
|
-
import { ModuleFactory } from '@xyo-network/module-model'
|
|
13
|
-
import {
|
|
14
|
-
ERC721__factory, ERC721Enumerable__factory, ERC721URIStorage__factory, ERC1155__factory,
|
|
15
|
-
} from '@xyo-network/open-zeppelin-typechain'
|
|
16
|
-
import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
|
|
17
|
-
import { asSentinelInstance } from '@xyo-network/sentinel-model'
|
|
18
|
-
import { HDWallet } from '@xyo-network/wallet'
|
|
19
|
-
import { getProvidersFromEnv } from '@xyo-network/witness-evm-abstract'
|
|
20
|
-
import { asWitnessInstance } from '@xyo-network/witness-model'
|
|
21
|
-
import {
|
|
22
|
-
afterAll,
|
|
23
|
-
describe, expect, it,
|
|
24
|
-
} from 'vitest'
|
|
25
|
-
|
|
26
|
-
import type { EvmCallResults } from '../Diviner.ts'
|
|
27
|
-
import { EvmCallDiviner, EvmCallResultsSchema } from '../Diviner.ts'
|
|
28
|
-
import type { EvmCallWitnessParams } from '../model.ts'
|
|
29
|
-
import type { EvmCall } from '../Payload.ts'
|
|
30
|
-
import { EvmCallSchema } from '../Payload.ts'
|
|
31
|
-
import { EvmCallWitness } from '../Witness.ts'
|
|
32
|
-
import erc721TokenSentinelManifest from './Erc721TokenSentinel.json' with { type: 'json' }
|
|
33
|
-
|
|
34
|
-
const profiler = createProfiler()
|
|
35
|
-
|
|
36
|
-
const tokenCount = 0
|
|
37
|
-
const maxProviders = 2
|
|
38
|
-
|
|
39
|
-
describe('Erc721Sentinel - Token', () => {
|
|
40
|
-
// const address = '0x562fC2927c77cB975680088566ADa1dC6cB8b5Ea' //Random ERC721
|
|
41
|
-
const address = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D' // Bored Apes
|
|
42
|
-
// const address = '0x495f947276749Ce646f68AC8c248420045cb7b5e' //OpenSea Storefront
|
|
43
|
-
// const address = '0x6802df79bcbbf019fe5cb366ff25720d1365cfd3' //Upgradeable
|
|
44
|
-
|
|
45
|
-
const tokenId = 1
|
|
46
|
-
|
|
47
|
-
const providers = getProvidersFromEnv(maxProviders)
|
|
48
|
-
|
|
49
|
-
describe.skipIf(providers.length === 0)('report', () => {
|
|
50
|
-
it('specifying address', async () => {
|
|
51
|
-
profile(profiler, 'setup')
|
|
52
|
-
const wallet = await HDWallet.random()
|
|
53
|
-
const locator = new ModuleFactoryLocator()
|
|
54
|
-
locator.register(EvmCallDiviner.factory())
|
|
55
|
-
|
|
56
|
-
locator.register(
|
|
57
|
-
new ModuleFactory(EvmCallWitness, {
|
|
58
|
-
config: { abi: ERC721__factory.abi },
|
|
59
|
-
providers: () => getProvidersFromEnv(maxProviders),
|
|
60
|
-
} as EvmCallWitnessParams),
|
|
61
|
-
{ 'network.xyo.evm.interface': 'Erc721' },
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
locator.register(
|
|
65
|
-
new ModuleFactory(EvmCallWitness, {
|
|
66
|
-
config: { abi: ERC721Enumerable__factory.abi },
|
|
67
|
-
providers: () => getProvidersFromEnv(maxProviders),
|
|
68
|
-
} as EvmCallWitnessParams),
|
|
69
|
-
{ 'network.xyo.evm.interface': 'Erc721Enumerable' },
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
locator.register(
|
|
73
|
-
new ModuleFactory(EvmCallWitness, {
|
|
74
|
-
config: { abi: ERC721URIStorage__factory.abi },
|
|
75
|
-
providers: () => getProvidersFromEnv(maxProviders),
|
|
76
|
-
} as EvmCallWitnessParams),
|
|
77
|
-
{ 'network.xyo.evm.interface': 'ERC721URIStorage' },
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
locator.register(
|
|
81
|
-
new ModuleFactory(EvmCallWitness, {
|
|
82
|
-
config: { abi: ERC1155__factory.abi },
|
|
83
|
-
providers: () => getProvidersFromEnv(maxProviders),
|
|
84
|
-
} as EvmCallWitnessParams),
|
|
85
|
-
{ 'network.xyo.evm.interface': 'Erc1155' },
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
profile(profiler, 'setup')
|
|
89
|
-
profile(profiler, 'manifest')
|
|
90
|
-
const manifest = new ManifestWrapper(erc721TokenSentinelManifest as PackageManifestPayload, wallet, locator)
|
|
91
|
-
profile(profiler, 'manifest-load')
|
|
92
|
-
const node = await manifest.loadNodeFromIndex(0)
|
|
93
|
-
profile(profiler, 'manifest-load')
|
|
94
|
-
profile(profiler, 'manifest-resolve')
|
|
95
|
-
const mods = await node.resolve('*')
|
|
96
|
-
profile(profiler, 'manifest-resolve')
|
|
97
|
-
profile(profiler, 'manifest')
|
|
98
|
-
expect(mods.length).toBe(6)
|
|
99
|
-
|
|
100
|
-
const tokenSentinel = asSentinelInstance(await node.resolve('NftTokenInfoSentinel'))
|
|
101
|
-
expect(tokenSentinel).toBeDefined()
|
|
102
|
-
|
|
103
|
-
const tokenUriWitness = asWitnessInstance(await node.resolve('Erc721TokenURIWitness'))
|
|
104
|
-
expect(tokenUriWitness).toBeDefined()
|
|
105
|
-
|
|
106
|
-
const ownerOfWitness = asWitnessInstance(await node.resolve('Erc721OwnerOfWitness'))
|
|
107
|
-
expect(ownerOfWitness).toBeDefined()
|
|
108
|
-
|
|
109
|
-
const uriWitness = asWitnessInstance(await node.resolve('Erc1155UriWitness'))
|
|
110
|
-
expect(uriWitness).toBeDefined()
|
|
111
|
-
|
|
112
|
-
const diviner = asDivinerInstance(await node.resolve('TokenInfoDiviner'))
|
|
113
|
-
expect(diviner).toBeDefined()
|
|
114
|
-
|
|
115
|
-
const tokenCallPayload: EvmCall = {
|
|
116
|
-
address, args: [tokenId], schema: EvmCallSchema,
|
|
117
|
-
}
|
|
118
|
-
profile(profiler, 'tokenReport')
|
|
119
|
-
const report = await tokenSentinel?.report([tokenCallPayload])
|
|
120
|
-
const info = report?.find(isPayloadOfSchemaType<EvmCallResults>(EvmCallResultsSchema))
|
|
121
|
-
console.log(`info: ${JSON.stringify(info, null, 2)}`)
|
|
122
|
-
expect(info?.results?.['ownerOf']?.result).toBeString()
|
|
123
|
-
expect(info?.results?.['tokenURI']?.result).toBeString()
|
|
124
|
-
})
|
|
125
|
-
afterAll(() => {
|
|
126
|
-
const profileData = profileReport(profiler)
|
|
127
|
-
if (profileData['tokenReport']) console.log(`Timer: ${profileData['tokenReport'] / tokenCount}ms`)
|
|
128
|
-
console.log(`Profile: ${JSON.stringify(profileData, null, 2)}`)
|
|
129
|
-
})
|
|
130
|
-
})
|
|
131
|
-
})
|
package/src/spec/Witness.spec.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import '@xylabs/vitest-extended'
|
|
2
|
-
|
|
3
|
-
import { ERC20__factory } from '@xyo-network/open-zeppelin-typechain'
|
|
4
|
-
import type { Payload } from '@xyo-network/payload-model'
|
|
5
|
-
import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
|
|
6
|
-
import { getProvidersFromEnv } from '@xyo-network/witness-evm-abstract'
|
|
7
|
-
import {
|
|
8
|
-
describe, expect,
|
|
9
|
-
it,
|
|
10
|
-
} from 'vitest'
|
|
11
|
-
|
|
12
|
-
import { EvmCallWitnessConfigSchema } from '../model.ts'
|
|
13
|
-
import type { EvmCall, EvmCallResult } from '../Payload.ts'
|
|
14
|
-
import { EvmCallResultSchema, EvmCallSchema } from '../Payload.ts'
|
|
15
|
-
import { EvmCallWitness } from '../Witness.ts'
|
|
16
|
-
|
|
17
|
-
const validateObservation = (observation: Payload[]) => {
|
|
18
|
-
const results = observation.filter(isPayloadOfSchemaType<EvmCallResult>(EvmCallResultSchema))
|
|
19
|
-
expect(results.length).toBeGreaterThan(0)
|
|
20
|
-
expect(observation.length).toEqual(results.length)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
describe.skipIf(!process.env.INFURA_PROJECT_ID)('CryptoWalletNftWitness', () => {
|
|
24
|
-
const address = '0x55296f69f40ea6d20e478533c15a6b08b654e758' // XYO ERC20
|
|
25
|
-
const functionName = 'balanceOf'
|
|
26
|
-
const args = ['0xaDe7DFBC532A01dB67BFEA3b728D4eA22869f381'] // Random Holder
|
|
27
|
-
describe('observe', () => {
|
|
28
|
-
describe('with no address or chainId in query', () => {
|
|
29
|
-
it('uses values from config', async () => {
|
|
30
|
-
const witness = await EvmCallWitness.create({
|
|
31
|
-
account: 'random',
|
|
32
|
-
config: { abi: ERC20__factory.abi, schema: EvmCallWitnessConfigSchema },
|
|
33
|
-
providers: getProvidersFromEnv,
|
|
34
|
-
})
|
|
35
|
-
const call: EvmCall = {
|
|
36
|
-
address, args, functionName, schema: EvmCallSchema,
|
|
37
|
-
}
|
|
38
|
-
const observation = await witness.observe([call])
|
|
39
|
-
validateObservation(observation)
|
|
40
|
-
})
|
|
41
|
-
})
|
|
42
|
-
})
|
|
43
|
-
})
|