@xyo-network/diviner 2.55.4 → 2.56.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/cjs/IdentityDiviner.js +2 -2
- package/dist/cjs/IdentityDiviner.js.map +1 -1
- package/dist/cjs/Payload/AbstractPayloadDiviner.js +2 -2
- package/dist/cjs/Payload/AbstractPayloadDiviner.js.map +1 -1
- package/dist/cjs/Payload/ArchivistDiviner/Config.js.map +1 -0
- package/dist/cjs/Payload/ArchivistDiviner/Diviner.js.map +1 -0
- package/dist/cjs/Payload/ArchivistDiviner/index.js.map +1 -0
- package/dist/cjs/Payload/index.js +1 -1
- package/dist/cjs/Payload/index.js.map +1 -1
- package/dist/cjs/index.js +0 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +35752 -70925
- package/dist/esm/IdentityDiviner.js +1 -1
- package/dist/esm/IdentityDiviner.js.map +1 -1
- package/dist/esm/Payload/AbstractPayloadDiviner.js +1 -1
- package/dist/esm/Payload/AbstractPayloadDiviner.js.map +1 -1
- package/dist/esm/Payload/ArchivistDiviner/Config.js.map +1 -0
- package/dist/esm/Payload/ArchivistDiviner/Diviner.js.map +1 -0
- package/dist/esm/Payload/ArchivistDiviner/index.js.map +1 -0
- package/dist/esm/Payload/index.js +1 -1
- package/dist/esm/Payload/index.js.map +1 -1
- package/dist/esm/index.js +0 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/types/IdentityDiviner.d.ts +1 -1
- package/dist/types/IdentityDiviner.d.ts.map +1 -1
- package/dist/types/Payload/AbstractPayloadDiviner.d.ts +1 -1
- package/dist/types/Payload/AbstractPayloadDiviner.d.ts.map +1 -1
- package/dist/types/Payload/ArchivistDiviner/Config.d.ts.map +1 -0
- package/dist/types/Payload/ArchivistDiviner/Diviner.d.ts.map +1 -0
- package/dist/types/Payload/ArchivistDiviner/index.d.ts.map +1 -0
- package/dist/types/Payload/index.d.ts +1 -1
- package/dist/types/Payload/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +13 -17
- package/src/IdentityDiviner.ts +1 -2
- package/src/Payload/AbstractPayloadDiviner.ts +1 -2
- package/src/Payload/index.ts +1 -1
- package/src/index.ts +0 -3
- package/dist/cjs/AbstractDiviner.js +0 -47
- package/dist/cjs/AbstractDiviner.js.map +0 -1
- package/dist/cjs/AddressChain/Config.js +0 -6
- package/dist/cjs/AddressChain/Config.js.map +0 -1
- package/dist/cjs/AddressChain/Diviner.js +0 -10
- package/dist/cjs/AddressChain/Diviner.js.map +0 -1
- package/dist/cjs/AddressChain/MemoryDiviner.js +0 -48
- package/dist/cjs/AddressChain/MemoryDiviner.js.map +0 -1
- package/dist/cjs/AddressChain/index.js +0 -7
- package/dist/cjs/AddressChain/index.js.map +0 -1
- package/dist/cjs/AddressHistory/Config.js +0 -6
- package/dist/cjs/AddressHistory/Config.js.map +0 -1
- package/dist/cjs/AddressHistory/Diviner.js +0 -10
- package/dist/cjs/AddressHistory/Diviner.js.map +0 -1
- package/dist/cjs/AddressHistory/MemoryDiviner.js +0 -66
- package/dist/cjs/AddressHistory/MemoryDiviner.js.map +0 -1
- package/dist/cjs/AddressHistory/index.js +0 -7
- package/dist/cjs/AddressHistory/index.js.map +0 -1
- package/dist/cjs/AddressSpace/AddressSpaceDiviner.js +0 -10
- package/dist/cjs/AddressSpace/AddressSpaceDiviner.js.map +0 -1
- package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js +0 -49
- package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js.map +0 -1
- package/dist/cjs/AddressSpace/index.js +0 -6
- package/dist/cjs/AddressSpace/index.js.map +0 -1
- package/dist/cjs/Payload/Archivist/Config.js.map +0 -1
- package/dist/cjs/Payload/Archivist/Diviner.js.map +0 -1
- package/dist/cjs/Payload/Archivist/index.js.map +0 -1
- package/dist/esm/AbstractDiviner.js +0 -38
- package/dist/esm/AbstractDiviner.js.map +0 -1
- package/dist/esm/AddressChain/Config.js +0 -3
- package/dist/esm/AddressChain/Config.js.map +0 -1
- package/dist/esm/AddressChain/Diviner.js +0 -5
- package/dist/esm/AddressChain/Diviner.js.map +0 -1
- package/dist/esm/AddressChain/MemoryDiviner.js +0 -38
- package/dist/esm/AddressChain/MemoryDiviner.js.map +0 -1
- package/dist/esm/AddressChain/index.js +0 -4
- package/dist/esm/AddressChain/index.js.map +0 -1
- package/dist/esm/AddressHistory/Config.js +0 -3
- package/dist/esm/AddressHistory/Config.js.map +0 -1
- package/dist/esm/AddressHistory/Diviner.js +0 -5
- package/dist/esm/AddressHistory/Diviner.js.map +0 -1
- package/dist/esm/AddressHistory/MemoryDiviner.js +0 -58
- package/dist/esm/AddressHistory/MemoryDiviner.js.map +0 -1
- package/dist/esm/AddressHistory/index.js +0 -4
- package/dist/esm/AddressHistory/index.js.map +0 -1
- package/dist/esm/AddressSpace/AddressSpaceDiviner.js +0 -5
- package/dist/esm/AddressSpace/AddressSpaceDiviner.js.map +0 -1
- package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js +0 -39
- package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js.map +0 -1
- package/dist/esm/AddressSpace/index.js +0 -3
- package/dist/esm/AddressSpace/index.js.map +0 -1
- package/dist/esm/Payload/Archivist/Config.js.map +0 -1
- package/dist/esm/Payload/Archivist/Diviner.js.map +0 -1
- package/dist/esm/Payload/Archivist/index.js.map +0 -1
- package/dist/types/AbstractDiviner.d.ts +0 -12
- package/dist/types/AbstractDiviner.d.ts.map +0 -1
- package/dist/types/AddressChain/Config.d.ts +0 -11
- package/dist/types/AddressChain/Config.d.ts.map +0 -1
- package/dist/types/AddressChain/Diviner.d.ts +0 -19
- package/dist/types/AddressChain/Diviner.d.ts.map +0 -1
- package/dist/types/AddressChain/MemoryDiviner.d.ts +0 -14
- package/dist/types/AddressChain/MemoryDiviner.d.ts.map +0 -1
- package/dist/types/AddressChain/index.d.ts +0 -4
- package/dist/types/AddressChain/index.d.ts.map +0 -1
- package/dist/types/AddressHistory/Config.d.ts +0 -9
- package/dist/types/AddressHistory/Config.d.ts.map +0 -1
- package/dist/types/AddressHistory/Diviner.d.ts +0 -19
- package/dist/types/AddressHistory/Diviner.d.ts.map +0 -1
- package/dist/types/AddressHistory/MemoryDiviner.d.ts +0 -15
- package/dist/types/AddressHistory/MemoryDiviner.d.ts.map +0 -1
- package/dist/types/AddressHistory/index.d.ts +0 -4
- package/dist/types/AddressHistory/index.d.ts.map +0 -1
- package/dist/types/AddressSpace/AddressSpaceDiviner.d.ts +0 -19
- package/dist/types/AddressSpace/AddressSpaceDiviner.d.ts.map +0 -1
- package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts +0 -22
- package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts.map +0 -1
- package/dist/types/AddressSpace/index.d.ts +0 -3
- package/dist/types/AddressSpace/index.d.ts.map +0 -1
- package/dist/types/Payload/Archivist/Config.d.ts.map +0 -1
- package/dist/types/Payload/Archivist/Diviner.d.ts.map +0 -1
- package/dist/types/Payload/Archivist/index.d.ts.map +0 -1
- package/src/AbstractDiviner.ts +0 -60
- package/src/AddressChain/Config.ts +0 -13
- package/src/AddressChain/Diviner.ts +0 -18
- package/src/AddressChain/MemoryDiviner.ts +0 -58
- package/src/AddressChain/index.ts +0 -3
- package/src/AddressHistory/Config.ts +0 -11
- package/src/AddressHistory/Diviner.ts +0 -18
- package/src/AddressHistory/MemoryDiviner.ts +0 -85
- package/src/AddressHistory/index.ts +0 -3
- package/src/AddressSpace/AddressSpaceDiviner.ts +0 -18
- package/src/AddressSpace/MemoryAddressSpaceDiviner.ts +0 -67
- package/src/AddressSpace/index.ts +0 -2
- /package/dist/cjs/Payload/{Archivist → ArchivistDiviner}/Config.js +0 -0
- /package/dist/cjs/Payload/{Archivist → ArchivistDiviner}/Diviner.js +0 -0
- /package/dist/cjs/Payload/{Archivist → ArchivistDiviner}/index.js +0 -0
- /package/dist/esm/Payload/{Archivist → ArchivistDiviner}/Config.js +0 -0
- /package/dist/esm/Payload/{Archivist → ArchivistDiviner}/Diviner.js +0 -0
- /package/dist/esm/Payload/{Archivist → ArchivistDiviner}/index.js +0 -0
- /package/dist/types/Payload/{Archivist → ArchivistDiviner}/Config.d.ts +0 -0
- /package/dist/types/Payload/{Archivist → ArchivistDiviner}/Diviner.d.ts +0 -0
- /package/dist/types/Payload/{Archivist → ArchivistDiviner}/index.d.ts +0 -0
- /package/src/Payload/{Archivist → ArchivistDiviner}/Config.ts +0 -0
- /package/src/Payload/{Archivist → ArchivistDiviner}/Diviner.ts +0 -0
- /package/src/Payload/{Archivist → ArchivistDiviner}/index.ts +0 -0
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { DivinerConfig } from '@xyo-network/diviner-model'
|
|
2
|
-
|
|
3
|
-
import { AddressChainSchema } from './Diviner'
|
|
4
|
-
|
|
5
|
-
export type AddressChainDivinerConfigSchema = `${AddressChainSchema}.config`
|
|
6
|
-
export const AddressChainDivinerConfigSchema: AddressChainDivinerConfigSchema = `${AddressChainSchema}.config`
|
|
7
|
-
|
|
8
|
-
export type AddressChainDivinerConfig = DivinerConfig<{
|
|
9
|
-
address?: string
|
|
10
|
-
maxResults?: number
|
|
11
|
-
schema: AddressChainDivinerConfigSchema
|
|
12
|
-
startHash?: string
|
|
13
|
-
}>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Query } from '@xyo-network/module-model'
|
|
2
|
-
import { Payload, PayloadFindFilter } from '@xyo-network/payload-model'
|
|
3
|
-
|
|
4
|
-
import { AbstractDiviner } from '../AbstractDiviner'
|
|
5
|
-
|
|
6
|
-
export type AddressChainSchema = 'network.xyo.diviner.address.chain'
|
|
7
|
-
export const AddressChainSchema: AddressChainSchema = 'network.xyo.diviner.address.chain'
|
|
8
|
-
|
|
9
|
-
export type AddressChainQuerySchema = 'network.xyo.diviner.address.chain.query'
|
|
10
|
-
export const AddressChainQuerySchema: AddressChainQuerySchema = 'network.xyo.diviner.address.chain.query'
|
|
11
|
-
|
|
12
|
-
export type AddressChainPayload = Payload<{ schema: AddressChainSchema }>
|
|
13
|
-
export const isAddressChainPayload = (x?: Payload | null): x is AddressChainPayload => x?.schema === AddressChainSchema
|
|
14
|
-
|
|
15
|
-
export type AddressChainQueryPayload = Query<{ schema: AddressChainQuerySchema } & PayloadFindFilter>
|
|
16
|
-
export const isAddressChainQueryPayload = (x?: Payload | null): x is AddressChainQueryPayload => x?.schema === AddressChainQuerySchema
|
|
17
|
-
|
|
18
|
-
export type AddressChainDiviner = AbstractDiviner
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import { ArchivistGetQuerySchema, ArchivistModule } from '@xyo-network/archivist'
|
|
3
|
-
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
4
|
-
import { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
5
|
-
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|
|
6
|
-
import { DivinerParams } from '@xyo-network/diviner-model'
|
|
7
|
-
import { AnyConfigSchema } from '@xyo-network/module'
|
|
8
|
-
import { Payload } from '@xyo-network/payload-model'
|
|
9
|
-
|
|
10
|
-
import { AbstractDiviner } from '../AbstractDiviner'
|
|
11
|
-
import { AddressChainDivinerConfig, AddressChainDivinerConfigSchema } from './Config'
|
|
12
|
-
import { AddressChainDiviner } from './Diviner'
|
|
13
|
-
|
|
14
|
-
// This diviner returns the most recent boundwitness signed by the address that can be found
|
|
15
|
-
// if multiple broken chains are found, all the heads are returned
|
|
16
|
-
|
|
17
|
-
export type MemoryAddressChainDivinerParams = DivinerParams<AnyConfigSchema<AddressChainDivinerConfig>>
|
|
18
|
-
|
|
19
|
-
export class MemoryAddressChainDiviner<TParams extends MemoryAddressChainDivinerParams>
|
|
20
|
-
extends AbstractDiviner<TParams>
|
|
21
|
-
implements AddressChainDiviner
|
|
22
|
-
{
|
|
23
|
-
static override configSchema = AddressChainDivinerConfigSchema
|
|
24
|
-
|
|
25
|
-
get queryAddress() {
|
|
26
|
-
return assertEx(this.config.address, 'Missing address')
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async divine(payloads?: Payload[]): Promise<Payload[]> {
|
|
30
|
-
const result: Payload[] = []
|
|
31
|
-
assertEx(!payloads?.length, 'MemoryAddressChainDiviner.divine does not allow payloads to be sent')
|
|
32
|
-
const archivists =
|
|
33
|
-
(await this.resolve({ query: [[ArchivistGetQuerySchema]] }))?.map(
|
|
34
|
-
(archivist) => new ArchivistWrapper({ account: this.account, module: archivist as ArchivistModule }),
|
|
35
|
-
) ?? []
|
|
36
|
-
let currentHash: string | null = assertEx(this.config.startHash, 'Missing startHash')
|
|
37
|
-
while (currentHash && result.length < (this.config.maxResults ?? 1000)) {
|
|
38
|
-
const bwPayload: BoundWitness | undefined = await this.archivistFindHash(archivists, currentHash)
|
|
39
|
-
const bw: BoundWitnessWrapper | undefined = BoundWitnessWrapper.parse(bwPayload)
|
|
40
|
-
if (bw) {
|
|
41
|
-
result.push(bw)
|
|
42
|
-
currentHash = bw.prev(this.queryAddress)
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return result
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
private async archivistFindHash(archivists: ArchivistWrapper[], hash: string): Promise<BoundWitness | undefined> {
|
|
49
|
-
let index = 0
|
|
50
|
-
if (archivists[index]) {
|
|
51
|
-
const result = (await archivists[index].get([hash])).pop() as BoundWitness
|
|
52
|
-
if (result) {
|
|
53
|
-
return result
|
|
54
|
-
}
|
|
55
|
-
index++
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DivinerConfig } from '@xyo-network/diviner-model'
|
|
2
|
-
|
|
3
|
-
import { AddressHistorySchema } from './Diviner'
|
|
4
|
-
|
|
5
|
-
export type AddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.config`
|
|
6
|
-
export const AddressHistoryDivinerConfigSchema: AddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.config`
|
|
7
|
-
|
|
8
|
-
export type AddressHistoryDivinerConfig = DivinerConfig<{
|
|
9
|
-
address?: string
|
|
10
|
-
schema: AddressHistoryDivinerConfigSchema
|
|
11
|
-
}>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Query } from '@xyo-network/module-model'
|
|
2
|
-
import { Payload, PayloadFindFilter } from '@xyo-network/payload-model'
|
|
3
|
-
|
|
4
|
-
import { AbstractDiviner } from '../AbstractDiviner'
|
|
5
|
-
|
|
6
|
-
export type AddressHistorySchema = 'network.xyo.diviner.address.history'
|
|
7
|
-
export const AddressHistorySchema: AddressHistorySchema = 'network.xyo.diviner.address.history'
|
|
8
|
-
|
|
9
|
-
export type AddressHistoryQuerySchema = 'network.xyo.diviner.address.history.query'
|
|
10
|
-
export const AddressHistoryQuerySchema: AddressHistoryQuerySchema = 'network.xyo.diviner.address.history.query'
|
|
11
|
-
|
|
12
|
-
export type AddressHistoryPayload = Payload<{ schema: AddressHistorySchema }>
|
|
13
|
-
export const isAddressHistoryPayload = (x?: Payload | null): x is AddressHistoryPayload => x?.schema === AddressHistorySchema
|
|
14
|
-
|
|
15
|
-
export type AddressHistoryQueryPayload = Query<{ schema: AddressHistoryQuerySchema } & PayloadFindFilter>
|
|
16
|
-
export const isAddressHistoryQueryPayload = (x?: Payload | null): x is AddressHistoryQueryPayload => x?.schema === AddressHistoryQuerySchema
|
|
17
|
-
|
|
18
|
-
export type AddressHistoryDiviner = AbstractDiviner
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import { ArchivistGetQuerySchema, ArchivistModule } from '@xyo-network/archivist'
|
|
3
|
-
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
4
|
-
import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'
|
|
5
|
-
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|
|
6
|
-
import { DivinerParams } from '@xyo-network/diviner-model'
|
|
7
|
-
import { AnyConfigSchema } from '@xyo-network/module-model'
|
|
8
|
-
import { Payload } from '@xyo-network/payload-model'
|
|
9
|
-
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
10
|
-
|
|
11
|
-
import { AbstractDiviner } from '../AbstractDiviner'
|
|
12
|
-
import { AddressHistoryDivinerConfig, AddressHistoryDivinerConfigSchema } from './Config'
|
|
13
|
-
import { AddressHistoryDiviner } from './Diviner'
|
|
14
|
-
|
|
15
|
-
// This diviner returns the most recent boundwitness signed by the address that can be found
|
|
16
|
-
// if multiple broken chains are found, all the heads are returned
|
|
17
|
-
|
|
18
|
-
export type MemoryAddressHistoryDivinerParams = DivinerParams<AnyConfigSchema<AddressHistoryDivinerConfig>>
|
|
19
|
-
|
|
20
|
-
export class MemoryAddressHistoryDiviner<TParams extends MemoryAddressHistoryDivinerParams>
|
|
21
|
-
extends AbstractDiviner<TParams>
|
|
22
|
-
implements AddressHistoryDiviner
|
|
23
|
-
{
|
|
24
|
-
static override configSchema = AddressHistoryDivinerConfigSchema
|
|
25
|
-
|
|
26
|
-
get queryAddress() {
|
|
27
|
-
return assertEx(this.config.address, 'Missing address')
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async divine(payloads?: Payload[]): Promise<Payload[]> {
|
|
31
|
-
assertEx(!payloads?.length, 'MemoryAddressHistoryDiviner.divine does not allow payloads to be sent')
|
|
32
|
-
const archivists =
|
|
33
|
-
(await this.resolve({ query: [[ArchivistGetQuerySchema]] }))?.map(
|
|
34
|
-
(archivist) => new ArchivistWrapper({ account: this.account, module: archivist as ArchivistModule }),
|
|
35
|
-
) ?? []
|
|
36
|
-
assertEx(archivists.length > 0, 'Did not find any archivists')
|
|
37
|
-
const bwLists = (
|
|
38
|
-
await Promise.all(
|
|
39
|
-
archivists.map(async (archivist) => {
|
|
40
|
-
const all = await archivist.all()
|
|
41
|
-
return all.filter((payload) => payload.schema === BoundWitnessSchema) as BoundWitness[]
|
|
42
|
-
}),
|
|
43
|
-
)
|
|
44
|
-
).flat()
|
|
45
|
-
|
|
46
|
-
const bwRecords = this.buildWrapperRecords(bwLists)
|
|
47
|
-
|
|
48
|
-
const chains = Object.values(this.buildAddressChains(this.queryAddress, bwRecords))
|
|
49
|
-
|
|
50
|
-
//return the heads of each chain (get the last bw on each chain)
|
|
51
|
-
return chains.map((chain) => assertEx(PayloadWrapper.unwrap(chain.shift())))
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
private buildAddressChains(address: string, bwRecords: Record<string, BoundWitnessWrapper>): Record<string, BoundWitnessWrapper[]> {
|
|
55
|
-
const arrayedResult = Object.entries(bwRecords).reduce<Record<string, BoundWitnessWrapper[]>>((prev, [key, value]) => {
|
|
56
|
-
prev[key] = [value]
|
|
57
|
-
return prev
|
|
58
|
-
}, {})
|
|
59
|
-
return Object.entries(bwRecords).reduce<Record<string, BoundWitnessWrapper[]>>((prev, [key, value]) => {
|
|
60
|
-
//check if key is still there (may have been deleted as prevHash)
|
|
61
|
-
if (prev[key]) {
|
|
62
|
-
const previousHash = value.prev(address)
|
|
63
|
-
if (previousHash) {
|
|
64
|
-
//if we have the previousHash, move this bw to its chain
|
|
65
|
-
if (prev[previousHash]) {
|
|
66
|
-
prev[key].push(...prev[previousHash])
|
|
67
|
-
delete prev[previousHash]
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return prev
|
|
72
|
-
}, arrayedResult)
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
//build object with hashes as keys and wrappers as values
|
|
76
|
-
private buildWrapperRecords(lists: BoundWitness[]) {
|
|
77
|
-
return lists
|
|
78
|
-
.filter((bw) => bw.addresses.includes(this.queryAddress))
|
|
79
|
-
.reduce<Record<string, BoundWitnessWrapper>>((bwRecords, bw) => {
|
|
80
|
-
const wrapper = new BoundWitnessWrapper(bw)
|
|
81
|
-
bwRecords[wrapper.hash] = wrapper
|
|
82
|
-
return bwRecords
|
|
83
|
-
}, {})
|
|
84
|
-
}
|
|
85
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Query } from '@xyo-network/module-model'
|
|
2
|
-
import { Payload, PayloadFindFilter } from '@xyo-network/payload-model'
|
|
3
|
-
|
|
4
|
-
import { AbstractDiviner } from '../AbstractDiviner'
|
|
5
|
-
|
|
6
|
-
export type AddressSpaceSchema = 'network.xyo.diviner.address.space'
|
|
7
|
-
export const AddressSpaceSchema: AddressSpaceSchema = 'network.xyo.diviner.address.space'
|
|
8
|
-
|
|
9
|
-
export type AddressSpaceQuerySchema = 'network.xyo.diviner.address.space.query'
|
|
10
|
-
export const AddressSpaceQuerySchema: AddressSpaceQuerySchema = 'network.xyo.diviner.address.space.query'
|
|
11
|
-
|
|
12
|
-
export type AddressSpacePayload = Payload<{ schema: AddressSpaceSchema }>
|
|
13
|
-
export const isAddressSpacePayload = (x?: Payload | null): x is AddressSpacePayload => x?.schema === AddressSpaceSchema
|
|
14
|
-
|
|
15
|
-
export type AddressSpaceQueryPayload = Query<{ schema: AddressSpaceQuerySchema } & PayloadFindFilter>
|
|
16
|
-
export const isAddressSpaceQueryPayload = (x?: Payload | null): x is AddressSpaceQueryPayload => x?.schema === AddressSpaceQuerySchema
|
|
17
|
-
|
|
18
|
-
export type AddressSpaceDiviner = AbstractDiviner
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import { AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
3
|
-
import { ArchivistGetQuerySchema, ArchivistModule } from '@xyo-network/archivist'
|
|
4
|
-
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
5
|
-
import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'
|
|
6
|
-
import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'
|
|
7
|
-
import { AnyConfigSchema } from '@xyo-network/module'
|
|
8
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
9
|
-
import { Payload } from '@xyo-network/payload-model'
|
|
10
|
-
|
|
11
|
-
import { AbstractDiviner } from '../AbstractDiviner'
|
|
12
|
-
import { AddressSpaceDiviner, AddressSpaceSchema } from './AddressSpaceDiviner'
|
|
13
|
-
|
|
14
|
-
export type MemoryAddressSpaceDivinerConfigSchema = `${AddressSpaceSchema}.memory.config`
|
|
15
|
-
export const MemoryAddressSpaceDivinerConfigSchema: MemoryAddressSpaceDivinerConfigSchema = `${AddressSpaceSchema}.memory.config`
|
|
16
|
-
|
|
17
|
-
export type MemoryAddressSpaceDivinerConfig = DivinerConfig<{
|
|
18
|
-
address?: string
|
|
19
|
-
archivists?: string[]
|
|
20
|
-
schema: MemoryAddressSpaceDivinerConfigSchema
|
|
21
|
-
}>
|
|
22
|
-
|
|
23
|
-
export type MemoryAddressSpaceDivinerParams<
|
|
24
|
-
TConfig extends AnyConfigSchema<MemoryAddressSpaceDivinerConfig> = AnyConfigSchema<MemoryAddressSpaceDivinerConfig>,
|
|
25
|
-
> = DivinerParams<TConfig>
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* This Diviner returns the list of all addresses encountered for the reachable archivists
|
|
29
|
-
*/
|
|
30
|
-
export class MemoryAddressSpaceDiviner<TParams extends MemoryAddressSpaceDivinerParams>
|
|
31
|
-
extends AbstractDiviner<TParams>
|
|
32
|
-
implements AddressSpaceDiviner
|
|
33
|
-
{
|
|
34
|
-
static override configSchema = MemoryAddressSpaceDivinerConfigSchema
|
|
35
|
-
|
|
36
|
-
async divine(payloads?: Payload[]): Promise<Payload[]> {
|
|
37
|
-
assertEx(!payloads?.length, 'MemoryAddressSpaceDiviner.divine does not allow payloads to be sent')
|
|
38
|
-
const archivists = await this.archivists()
|
|
39
|
-
assertEx(archivists.length > 0, 'Did not find any archivists')
|
|
40
|
-
const bwLists = (
|
|
41
|
-
await Promise.all(
|
|
42
|
-
archivists.map(async (archivist) => {
|
|
43
|
-
const all = await archivist.all?.()
|
|
44
|
-
return (all?.filter((payload) => payload.schema === BoundWitnessSchema) as BoundWitness[]) ?? []
|
|
45
|
-
}),
|
|
46
|
-
)
|
|
47
|
-
).flat()
|
|
48
|
-
const addresses = new Set<string>(
|
|
49
|
-
bwLists
|
|
50
|
-
.map((bw) => bw.addresses)
|
|
51
|
-
.flat()
|
|
52
|
-
.map((address) => address.toLowerCase()),
|
|
53
|
-
)
|
|
54
|
-
return [...addresses].map((address) => new PayloadBuilder({ schema: AddressSchema }).fields({ address }).build())
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private async archivists(): Promise<ArchivistModule[]> {
|
|
58
|
-
if (this.config.archivists) {
|
|
59
|
-
return await this.resolve<ArchivistModule>({ address: this.config.archivists })
|
|
60
|
-
} else {
|
|
61
|
-
//get all reachable archivists
|
|
62
|
-
return (await this.resolve<ArchivistModule>({ query: [[ArchivistGetQuerySchema]] })).map(
|
|
63
|
-
(archivist) => new ArchivistWrapper({ account: this.account, module: archivist }),
|
|
64
|
-
)
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|