@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.
Files changed (144) hide show
  1. package/dist/cjs/IdentityDiviner.js +2 -2
  2. package/dist/cjs/IdentityDiviner.js.map +1 -1
  3. package/dist/cjs/Payload/AbstractPayloadDiviner.js +2 -2
  4. package/dist/cjs/Payload/AbstractPayloadDiviner.js.map +1 -1
  5. package/dist/cjs/Payload/ArchivistDiviner/Config.js.map +1 -0
  6. package/dist/cjs/Payload/ArchivistDiviner/Diviner.js.map +1 -0
  7. package/dist/cjs/Payload/ArchivistDiviner/index.js.map +1 -0
  8. package/dist/cjs/Payload/index.js +1 -1
  9. package/dist/cjs/Payload/index.js.map +1 -1
  10. package/dist/cjs/index.js +0 -3
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/docs.json +35752 -70925
  13. package/dist/esm/IdentityDiviner.js +1 -1
  14. package/dist/esm/IdentityDiviner.js.map +1 -1
  15. package/dist/esm/Payload/AbstractPayloadDiviner.js +1 -1
  16. package/dist/esm/Payload/AbstractPayloadDiviner.js.map +1 -1
  17. package/dist/esm/Payload/ArchivistDiviner/Config.js.map +1 -0
  18. package/dist/esm/Payload/ArchivistDiviner/Diviner.js.map +1 -0
  19. package/dist/esm/Payload/ArchivistDiviner/index.js.map +1 -0
  20. package/dist/esm/Payload/index.js +1 -1
  21. package/dist/esm/Payload/index.js.map +1 -1
  22. package/dist/esm/index.js +0 -3
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/types/IdentityDiviner.d.ts +1 -1
  25. package/dist/types/IdentityDiviner.d.ts.map +1 -1
  26. package/dist/types/Payload/AbstractPayloadDiviner.d.ts +1 -1
  27. package/dist/types/Payload/AbstractPayloadDiviner.d.ts.map +1 -1
  28. package/dist/types/Payload/ArchivistDiviner/Config.d.ts.map +1 -0
  29. package/dist/types/Payload/ArchivistDiviner/Diviner.d.ts.map +1 -0
  30. package/dist/types/Payload/ArchivistDiviner/index.d.ts.map +1 -0
  31. package/dist/types/Payload/index.d.ts +1 -1
  32. package/dist/types/Payload/index.d.ts.map +1 -1
  33. package/dist/types/index.d.ts +0 -3
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/package.json +13 -17
  36. package/src/IdentityDiviner.ts +1 -2
  37. package/src/Payload/AbstractPayloadDiviner.ts +1 -2
  38. package/src/Payload/index.ts +1 -1
  39. package/src/index.ts +0 -3
  40. package/dist/cjs/AbstractDiviner.js +0 -47
  41. package/dist/cjs/AbstractDiviner.js.map +0 -1
  42. package/dist/cjs/AddressChain/Config.js +0 -6
  43. package/dist/cjs/AddressChain/Config.js.map +0 -1
  44. package/dist/cjs/AddressChain/Diviner.js +0 -10
  45. package/dist/cjs/AddressChain/Diviner.js.map +0 -1
  46. package/dist/cjs/AddressChain/MemoryDiviner.js +0 -48
  47. package/dist/cjs/AddressChain/MemoryDiviner.js.map +0 -1
  48. package/dist/cjs/AddressChain/index.js +0 -7
  49. package/dist/cjs/AddressChain/index.js.map +0 -1
  50. package/dist/cjs/AddressHistory/Config.js +0 -6
  51. package/dist/cjs/AddressHistory/Config.js.map +0 -1
  52. package/dist/cjs/AddressHistory/Diviner.js +0 -10
  53. package/dist/cjs/AddressHistory/Diviner.js.map +0 -1
  54. package/dist/cjs/AddressHistory/MemoryDiviner.js +0 -66
  55. package/dist/cjs/AddressHistory/MemoryDiviner.js.map +0 -1
  56. package/dist/cjs/AddressHistory/index.js +0 -7
  57. package/dist/cjs/AddressHistory/index.js.map +0 -1
  58. package/dist/cjs/AddressSpace/AddressSpaceDiviner.js +0 -10
  59. package/dist/cjs/AddressSpace/AddressSpaceDiviner.js.map +0 -1
  60. package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js +0 -49
  61. package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js.map +0 -1
  62. package/dist/cjs/AddressSpace/index.js +0 -6
  63. package/dist/cjs/AddressSpace/index.js.map +0 -1
  64. package/dist/cjs/Payload/Archivist/Config.js.map +0 -1
  65. package/dist/cjs/Payload/Archivist/Diviner.js.map +0 -1
  66. package/dist/cjs/Payload/Archivist/index.js.map +0 -1
  67. package/dist/esm/AbstractDiviner.js +0 -38
  68. package/dist/esm/AbstractDiviner.js.map +0 -1
  69. package/dist/esm/AddressChain/Config.js +0 -3
  70. package/dist/esm/AddressChain/Config.js.map +0 -1
  71. package/dist/esm/AddressChain/Diviner.js +0 -5
  72. package/dist/esm/AddressChain/Diviner.js.map +0 -1
  73. package/dist/esm/AddressChain/MemoryDiviner.js +0 -38
  74. package/dist/esm/AddressChain/MemoryDiviner.js.map +0 -1
  75. package/dist/esm/AddressChain/index.js +0 -4
  76. package/dist/esm/AddressChain/index.js.map +0 -1
  77. package/dist/esm/AddressHistory/Config.js +0 -3
  78. package/dist/esm/AddressHistory/Config.js.map +0 -1
  79. package/dist/esm/AddressHistory/Diviner.js +0 -5
  80. package/dist/esm/AddressHistory/Diviner.js.map +0 -1
  81. package/dist/esm/AddressHistory/MemoryDiviner.js +0 -58
  82. package/dist/esm/AddressHistory/MemoryDiviner.js.map +0 -1
  83. package/dist/esm/AddressHistory/index.js +0 -4
  84. package/dist/esm/AddressHistory/index.js.map +0 -1
  85. package/dist/esm/AddressSpace/AddressSpaceDiviner.js +0 -5
  86. package/dist/esm/AddressSpace/AddressSpaceDiviner.js.map +0 -1
  87. package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js +0 -39
  88. package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js.map +0 -1
  89. package/dist/esm/AddressSpace/index.js +0 -3
  90. package/dist/esm/AddressSpace/index.js.map +0 -1
  91. package/dist/esm/Payload/Archivist/Config.js.map +0 -1
  92. package/dist/esm/Payload/Archivist/Diviner.js.map +0 -1
  93. package/dist/esm/Payload/Archivist/index.js.map +0 -1
  94. package/dist/types/AbstractDiviner.d.ts +0 -12
  95. package/dist/types/AbstractDiviner.d.ts.map +0 -1
  96. package/dist/types/AddressChain/Config.d.ts +0 -11
  97. package/dist/types/AddressChain/Config.d.ts.map +0 -1
  98. package/dist/types/AddressChain/Diviner.d.ts +0 -19
  99. package/dist/types/AddressChain/Diviner.d.ts.map +0 -1
  100. package/dist/types/AddressChain/MemoryDiviner.d.ts +0 -14
  101. package/dist/types/AddressChain/MemoryDiviner.d.ts.map +0 -1
  102. package/dist/types/AddressChain/index.d.ts +0 -4
  103. package/dist/types/AddressChain/index.d.ts.map +0 -1
  104. package/dist/types/AddressHistory/Config.d.ts +0 -9
  105. package/dist/types/AddressHistory/Config.d.ts.map +0 -1
  106. package/dist/types/AddressHistory/Diviner.d.ts +0 -19
  107. package/dist/types/AddressHistory/Diviner.d.ts.map +0 -1
  108. package/dist/types/AddressHistory/MemoryDiviner.d.ts +0 -15
  109. package/dist/types/AddressHistory/MemoryDiviner.d.ts.map +0 -1
  110. package/dist/types/AddressHistory/index.d.ts +0 -4
  111. package/dist/types/AddressHistory/index.d.ts.map +0 -1
  112. package/dist/types/AddressSpace/AddressSpaceDiviner.d.ts +0 -19
  113. package/dist/types/AddressSpace/AddressSpaceDiviner.d.ts.map +0 -1
  114. package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts +0 -22
  115. package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts.map +0 -1
  116. package/dist/types/AddressSpace/index.d.ts +0 -3
  117. package/dist/types/AddressSpace/index.d.ts.map +0 -1
  118. package/dist/types/Payload/Archivist/Config.d.ts.map +0 -1
  119. package/dist/types/Payload/Archivist/Diviner.d.ts.map +0 -1
  120. package/dist/types/Payload/Archivist/index.d.ts.map +0 -1
  121. package/src/AbstractDiviner.ts +0 -60
  122. package/src/AddressChain/Config.ts +0 -13
  123. package/src/AddressChain/Diviner.ts +0 -18
  124. package/src/AddressChain/MemoryDiviner.ts +0 -58
  125. package/src/AddressChain/index.ts +0 -3
  126. package/src/AddressHistory/Config.ts +0 -11
  127. package/src/AddressHistory/Diviner.ts +0 -18
  128. package/src/AddressHistory/MemoryDiviner.ts +0 -85
  129. package/src/AddressHistory/index.ts +0 -3
  130. package/src/AddressSpace/AddressSpaceDiviner.ts +0 -18
  131. package/src/AddressSpace/MemoryAddressSpaceDiviner.ts +0 -67
  132. package/src/AddressSpace/index.ts +0 -2
  133. /package/dist/cjs/Payload/{Archivist → ArchivistDiviner}/Config.js +0 -0
  134. /package/dist/cjs/Payload/{Archivist → ArchivistDiviner}/Diviner.js +0 -0
  135. /package/dist/cjs/Payload/{Archivist → ArchivistDiviner}/index.js +0 -0
  136. /package/dist/esm/Payload/{Archivist → ArchivistDiviner}/Config.js +0 -0
  137. /package/dist/esm/Payload/{Archivist → ArchivistDiviner}/Diviner.js +0 -0
  138. /package/dist/esm/Payload/{Archivist → ArchivistDiviner}/index.js +0 -0
  139. /package/dist/types/Payload/{Archivist → ArchivistDiviner}/Config.d.ts +0 -0
  140. /package/dist/types/Payload/{Archivist → ArchivistDiviner}/Diviner.d.ts +0 -0
  141. /package/dist/types/Payload/{Archivist → ArchivistDiviner}/index.d.ts +0 -0
  142. /package/src/Payload/{Archivist → ArchivistDiviner}/Config.ts +0 -0
  143. /package/src/Payload/{Archivist → ArchivistDiviner}/Diviner.ts +0 -0
  144. /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,3 +0,0 @@
1
- export * from './Config'
2
- export * from './Diviner'
3
- export * from './MemoryDiviner'
@@ -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,3 +0,0 @@
1
- export * from './Config'
2
- export * from './Diviner'
3
- export * from './MemoryDiviner'
@@ -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
- }
@@ -1,2 +0,0 @@
1
- export * from './AddressSpaceDiviner'
2
- export * from './MemoryAddressSpaceDiviner'