@xyo-network/evm-call-witness 5.1.3 → 5.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/package.json +44 -41
  2. package/dist/neutral/spec/Sentinel.collection.spec.d.ts +0 -2
  3. package/dist/neutral/spec/Sentinel.collection.spec.d.ts.map +0 -1
  4. package/dist/neutral/spec/Sentinel.token.enumerate.spec.d.ts +0 -2
  5. package/dist/neutral/spec/Sentinel.token.enumerate.spec.d.ts.map +0 -1
  6. package/dist/neutral/spec/Sentinel.token.spec.d.ts +0 -2
  7. package/dist/neutral/spec/Sentinel.token.spec.d.ts.map +0 -1
  8. package/dist/neutral/spec/Witness.spec.d.ts +0 -2
  9. package/dist/neutral/spec/Witness.spec.d.ts.map +0 -1
  10. package/dist/neutral/spec/imported/AddressToContract/AddressToContractIndex/Contract.Sentinel.Node.spec.d.ts +0 -2
  11. package/dist/neutral/spec/imported/AddressToContract/AddressToContractIndex/Contract.Sentinel.Node.spec.d.ts.map +0 -1
  12. package/dist/neutral/spec/imported/AddressToContract/CollectionInfo/Sentinel.collection.spec.d.ts +0 -2
  13. package/dist/neutral/spec/imported/AddressToContract/CollectionInfo/Sentinel.collection.spec.d.ts.map +0 -1
  14. package/dist/neutral/spec/imported/AddressToContract/ManualTokenIteration/Sentinel.token.spec.d.ts +0 -2
  15. package/dist/neutral/spec/imported/AddressToContract/ManualTokenIteration/Sentinel.token.spec.d.ts.map +0 -1
  16. package/dist/neutral/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.d.ts +0 -2
  17. package/dist/neutral/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.d.ts.map +0 -1
  18. package/dist/neutral/spec/imported/NftIndexToNftIdIndex/Erc721.NftId.Index.spec.d.ts +0 -2
  19. package/dist/neutral/spec/imported/NftIndexToNftIdIndex/Erc721.NftId.Index.spec.d.ts.map +0 -1
  20. package/dist/neutral/spec/imported/TotalSupplyToNftIndexIndex/Erc721.NftIndex.Index.spec.d.ts +0 -2
  21. package/dist/neutral/spec/imported/TotalSupplyToNftIndexIndex/Erc721.NftIndex.Index.spec.d.ts.map +0 -1
  22. package/src/spec/Sentinel.collection.spec.ts +0 -127
  23. package/src/spec/Sentinel.token.enumerate.spec.ts +0 -138
  24. package/src/spec/Sentinel.token.spec.ts +0 -131
  25. package/src/spec/Witness.spec.ts +0 -43
  26. package/src/spec/imported/AddressToContract/AddressToContractIndex/Contract.Sentinel.Node.spec.ts +0 -183
  27. package/src/spec/imported/AddressToContract/CollectionInfo/Sentinel.collection.spec.ts +0 -143
  28. package/src/spec/imported/AddressToContract/ManualTokenIteration/Sentinel.token.spec.ts +0 -187
  29. package/src/spec/imported/AddressToTotalSupplyIndex/Erc721.TotalSupply.Index.spec.ts +0 -101
  30. package/src/spec/imported/NftIndexToNftIdIndex/Erc721.NftId.Index.spec.ts +0 -118
  31. 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",
3
+ "version": "5.1.4",
4
4
  "description": "Typescript/Javascript Plugins for XYO Platform",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -30,51 +30,54 @@
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.11",
37
- "@xylabs/hex": "~5.0.11",
38
- "@xylabs/promise": "~5.0.11",
39
- "@xyo-network/diviner-abstract": "~5.1.2",
40
- "@xyo-network/diviner-model": "~5.1.2",
41
- "@xyo-network/erc1822-witness": "~5.1.3",
42
- "@xyo-network/erc1967-witness": "~5.1.3",
43
- "@xyo-network/module-model": "~5.1.2",
44
- "@xyo-network/payload-model": "~5.1.2",
45
- "@xyo-network/witness-evm-abstract": "~5.1.2",
39
+ "@xylabs/assert": "~5.0.33",
40
+ "@xylabs/hex": "~5.0.33",
41
+ "@xylabs/promise": "~5.0.33",
42
+ "@xyo-network/diviner-abstract": "~5.1.23",
43
+ "@xyo-network/diviner-model": "~5.1.23",
44
+ "@xyo-network/erc1822-witness": "~5.1.4",
45
+ "@xyo-network/erc1967-witness": "~5.1.4",
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.11",
50
- "@xylabs/object": "~5.0.11",
51
- "@xylabs/profile": "~5.0.11",
52
- "@xylabs/ts-scripts-yarn3": "~7.1.7",
53
- "@xylabs/tsconfig": "~7.1.7",
54
- "@xylabs/vitest-extended": "~5.0.11",
55
- "@xyo-network/archivist-memory": "~5.1.2",
56
- "@xyo-network/crypto-contract-function-read-payload-plugin": "~5.1.3",
57
- "@xyo-network/diviner-boundwitness-memory": "~5.1.2",
58
- "@xyo-network/diviner-jsonpatch": "~5.1.2",
59
- "@xyo-network/diviner-jsonpatch-memory": "~5.1.2",
60
- "@xyo-network/diviner-jsonpath-aggregate-memory": "~5.1.2",
61
- "@xyo-network/diviner-payload-generic": "~5.1.2",
62
- "@xyo-network/diviner-payload-model": "~5.1.2",
63
- "@xyo-network/diviner-range": "~5.1.2",
64
- "@xyo-network/diviner-temporal-indexing": "~5.1.2",
65
- "@xyo-network/evm-contract-witness": "~5.1.3",
66
- "@xyo-network/evm-nft-id-payload-plugin": "~5.1.3",
67
- "@xyo-network/evm-token-interface-diviner": "~5.1.3",
68
- "@xyo-network/manifest": "~5.1.2",
69
- "@xyo-network/module-factory-locator": "~5.1.2",
70
- "@xyo-network/node-memory": "~5.1.2",
71
- "@xyo-network/open-zeppelin-typechain": "~4.0.8",
72
- "@xyo-network/sentinel-model": "~5.1.2",
73
- "@xyo-network/wallet": "~5.1.2",
74
- "@xyo-network/wallet-model": "~5.1.2",
75
- "@xyo-network/witness-adhoc": "~5.1.2",
76
- "@xyo-network/witness-model": "~5.1.2",
77
- "@xyo-network/witness-timestamp": "~5.1.2",
52
+ "@xylabs/delay": "~5.0.33",
53
+ "@xylabs/object": "~5.0.33",
54
+ "@xylabs/profile": "~5.0.33",
55
+ "@xylabs/ts-scripts-yarn3": "~7.2.8",
56
+ "@xylabs/tsconfig": "~7.2.8",
57
+ "@xylabs/vitest-extended": "~5.0.33",
58
+ "@xyo-network/archivist-memory": "~5.1.23",
59
+ "@xyo-network/crypto-contract-function-read-payload-plugin": "~5.1.4",
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.4",
69
+ "@xyo-network/evm-nft-id-payload-plugin": "~5.1.4",
70
+ "@xyo-network/evm-token-interface-diviner": "~5.1.4",
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
82
  "typescript": "~5.9.2",
80
83
  "vitest": "~3.2.4"
@@ -1,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Sentinel.collection.spec.d.ts.map
@@ -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,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Sentinel.token.enumerate.spec.d.ts.map
@@ -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,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Sentinel.token.spec.d.ts.map
@@ -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,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Witness.spec.d.ts.map
@@ -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,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Contract.Sentinel.Node.spec.d.ts.map
@@ -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,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Sentinel.collection.spec.d.ts.map
@@ -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,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Sentinel.token.spec.d.ts.map
@@ -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"}
@@ -1,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Erc721.TotalSupply.Index.spec.d.ts.map
@@ -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,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Erc721.NftId.Index.spec.d.ts.map
@@ -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"}
@@ -1,2 +0,0 @@
1
- import '@xylabs/vitest-extended';
2
- //# sourceMappingURL=Erc721.NftIndex.Index.spec.d.ts.map
@@ -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
- })
@@ -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
- })