@xyo-network/diviner 2.50.4 → 2.50.6
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/AddressChain/Config.js +6 -0
- package/dist/cjs/AddressChain/Config.js.map +1 -0
- package/dist/cjs/AddressChain/Diviner.js +10 -0
- package/dist/cjs/AddressChain/Diviner.js.map +1 -0
- package/dist/cjs/AddressChain/MemoryDiviner.js +55 -0
- package/dist/cjs/AddressChain/MemoryDiviner.js.map +1 -0
- package/dist/cjs/AddressChain/index.js +7 -0
- package/dist/cjs/AddressChain/index.js.map +1 -0
- package/dist/cjs/AddressHistory/Config.js +6 -0
- package/dist/cjs/AddressHistory/Config.js.map +1 -0
- package/dist/cjs/AddressHistory/{AddressHistoryDiviner.js → Diviner.js} +1 -1
- package/dist/cjs/AddressHistory/Diviner.js.map +1 -0
- package/dist/cjs/AddressHistory/{MemoryAddressHistoryDiviner.js → MemoryDiviner.js} +4 -6
- package/dist/cjs/AddressHistory/MemoryDiviner.js.map +1 -0
- package/dist/cjs/AddressHistory/index.js +3 -2
- package/dist/cjs/AddressHistory/index.js.map +1 -1
- package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js +15 -4
- package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js.map +1 -1
- package/dist/docs.json +29381 -15209
- package/dist/esm/AddressChain/Config.js +3 -0
- package/dist/esm/AddressChain/Config.js.map +1 -0
- package/dist/esm/AddressChain/Diviner.js +5 -0
- package/dist/esm/AddressChain/Diviner.js.map +1 -0
- package/dist/esm/AddressChain/MemoryDiviner.js +40 -0
- package/dist/esm/AddressChain/MemoryDiviner.js.map +1 -0
- package/dist/esm/AddressChain/index.js +4 -0
- package/dist/esm/AddressChain/index.js.map +1 -0
- package/dist/esm/AddressHistory/Config.js +3 -0
- package/dist/esm/AddressHistory/Config.js.map +1 -0
- package/dist/esm/AddressHistory/{AddressHistoryDiviner.js → Diviner.js} +1 -1
- package/dist/esm/AddressHistory/Diviner.js.map +1 -0
- package/dist/esm/AddressHistory/{MemoryAddressHistoryDiviner.js → MemoryDiviner.js} +3 -5
- package/dist/esm/AddressHistory/MemoryDiviner.js.map +1 -0
- package/dist/esm/AddressHistory/index.js +3 -2
- package/dist/esm/AddressHistory/index.js.map +1 -1
- package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js +12 -3
- package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js.map +1 -1
- package/dist/types/AddressChain/Config.d.ts +12 -0
- package/dist/types/AddressChain/Config.d.ts.map +1 -0
- package/dist/types/AddressChain/Diviner.d.ts +19 -0
- package/dist/types/AddressChain/Diviner.d.ts.map +1 -0
- package/dist/types/AddressChain/MemoryDiviner.d.ts +12 -0
- package/dist/types/AddressChain/MemoryDiviner.d.ts.map +1 -0
- package/dist/types/AddressChain/index.d.ts +4 -0
- package/dist/types/AddressChain/index.d.ts.map +1 -0
- package/dist/types/AddressHistory/Config.d.ts +10 -0
- package/dist/types/AddressHistory/Config.d.ts.map +1 -0
- package/dist/types/AddressHistory/{AddressHistoryDiviner.d.ts → Diviner.d.ts} +1 -1
- package/dist/types/AddressHistory/Diviner.d.ts.map +1 -0
- package/dist/types/AddressHistory/MemoryDiviner.d.ts +13 -0
- package/dist/types/AddressHistory/MemoryDiviner.d.ts.map +1 -0
- package/dist/types/AddressHistory/index.d.ts +3 -2
- package/dist/types/AddressHistory/index.d.ts.map +1 -1
- package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts +2 -0
- package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/AddressChain/Config.ts +17 -0
- package/src/AddressChain/Diviner.ts +18 -0
- package/src/AddressChain/MemoryDiviner.ts +49 -0
- package/src/AddressChain/index.ts +3 -0
- package/src/AddressHistory/Config.ts +15 -0
- package/src/AddressHistory/{MemoryAddressHistoryDiviner.ts → MemoryDiviner.ts} +5 -18
- package/src/AddressHistory/index.ts +3 -2
- package/src/AddressSpace/MemoryAddressSpaceDiviner.ts +14 -4
- package/dist/cjs/AddressHistory/AddressHistoryDiviner.js.map +0 -1
- package/dist/cjs/AddressHistory/MemoryAddressHistoryDiviner.js.map +0 -1
- package/dist/esm/AddressHistory/AddressHistoryDiviner.js.map +0 -1
- package/dist/esm/AddressHistory/MemoryAddressHistoryDiviner.js.map +0 -1
- package/dist/types/AddressHistory/AddressHistoryDiviner.d.ts.map +0 -1
- package/dist/types/AddressHistory/MemoryAddressHistoryDiviner.d.ts +0 -20
- package/dist/types/AddressHistory/MemoryAddressHistoryDiviner.d.ts.map +0 -1
- /package/src/AddressHistory/{AddressHistoryDiviner.ts → Diviner.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/AddressChain/Config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAG9C,MAAM,CAAC,MAAM,+BAA+B,GAAoC,GAAG,kBAAkB,SAAS,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const AddressChainSchema = 'network.xyo.diviner.address.chain';
|
|
2
|
+
export const AddressChainQuerySchema = 'network.xyo.diviner.address.chain.query';
|
|
3
|
+
export const isAddressChainPayload = (x) => x?.schema === AddressChainSchema;
|
|
4
|
+
export const isAddressChainQueryPayload = (x) => x?.schema === AddressChainQuerySchema;
|
|
5
|
+
//# sourceMappingURL=Diviner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../src/AddressChain/Diviner.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,kBAAkB,GAAuB,mCAAmC,CAAA;AAGzF,MAAM,CAAC,MAAM,uBAAuB,GAA4B,yCAAyC,CAAA;AAGzG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAqB,EAA4B,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,kBAAkB,CAAA;AAG1H,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAqB,EAAiC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { ArchivistGetQuerySchema } from '@xyo-network/archivist';
|
|
3
|
+
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper';
|
|
4
|
+
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
|
|
5
|
+
import { AbstractDiviner } from '../AbstractDiviner';
|
|
6
|
+
import { AddressChainDivinerConfigSchema } from './Config';
|
|
7
|
+
// This diviner returns the most recent boundwitness signed by the address that can be found
|
|
8
|
+
// if multiple broken chains are found, all the heads are returned
|
|
9
|
+
export class MemoryAddressChainDiviner extends AbstractDiviner {
|
|
10
|
+
static configSchema = AddressChainDivinerConfigSchema;
|
|
11
|
+
static async create(params) {
|
|
12
|
+
return (await super.create(params));
|
|
13
|
+
}
|
|
14
|
+
async divine(payloads) {
|
|
15
|
+
const result = [];
|
|
16
|
+
assertEx(!payloads?.length, 'MemoryAddressChainDiviner.divine does not allow payloads to be sent');
|
|
17
|
+
const archivists = (await this.resolve({ query: [[ArchivistGetQuerySchema]] }))?.map((archivist) => new ArchivistWrapper(archivist)) ?? [];
|
|
18
|
+
let currentHash = this.config.startHash;
|
|
19
|
+
while (currentHash && result.length < (this.config.maxResults ?? 1000)) {
|
|
20
|
+
const bwPayload = await this.archivistFindHash(archivists, currentHash);
|
|
21
|
+
const bw = BoundWitnessWrapper.parse(bwPayload);
|
|
22
|
+
if (bw) {
|
|
23
|
+
result.push(bw);
|
|
24
|
+
currentHash = bw.prev(this.config.address);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
async archivistFindHash(archivists, hash) {
|
|
30
|
+
let index = 0;
|
|
31
|
+
if (archivists[index]) {
|
|
32
|
+
const result = (await archivists[index].get([hash])).pop();
|
|
33
|
+
if (result) {
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
index++;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=MemoryDiviner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryDiviner.js","sourceRoot":"","sources":["../../../src/AddressChain/MemoryDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAIvE,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAA6B,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAGrF,4FAA4F;AAC5F,kEAAkE;AAElE,MAAM,OAAO,yBAA0B,SAAQ,eAAyD;IACtG,MAAM,CAAU,YAAY,GAAG,+BAA+B,CAAA;IAE9D,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAAyD;QACpF,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAA8B,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAuB;QAClC,MAAM,MAAM,GAAiB,EAAE,CAAA;QAC/B,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,qEAAqE,CAAC,CAAA;QAClG,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1I,IAAI,WAAW,GAAkB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;QACtD,OAAO,WAAW,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE;YACtE,MAAM,SAAS,GAAgC,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;YACpG,MAAM,EAAE,GAAoC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAChF,IAAI,EAAE,EAAE;gBACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACf,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;aAC3C;SACF;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,UAA8B,EAAE,IAAY;QAC1E,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAqB,CAAA;YAC7E,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAA;aACd;YACD,KAAK,EAAE,CAAA;SACR;IACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AddressChain/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/AddressHistory/Config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAGhD,MAAM,CAAC,MAAM,iCAAiC,GAAsC,GAAG,oBAAoB,SAAS,CAAA"}
|
|
@@ -2,4 +2,4 @@ export const AddressHistorySchema = 'network.xyo.diviner.address.history';
|
|
|
2
2
|
export const AddressHistoryQuerySchema = 'network.xyo.diviner.address.history.query';
|
|
3
3
|
export const isAddressHistoryPayload = (x) => x?.schema === AddressHistorySchema;
|
|
4
4
|
export const isAddressHistoryQueryPayload = (x) => x?.schema === AddressHistoryQuerySchema;
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=Diviner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../src/AddressHistory/Diviner.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,oBAAoB,GAAyB,qCAAqC,CAAA;AAG/F,MAAM,CAAC,MAAM,yBAAyB,GAA8B,2CAA2C,CAAA;AAG/G,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAqB,EAA8B,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,oBAAoB,CAAA;AAGhI,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAqB,EAAmC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,yBAAyB,CAAA"}
|
|
@@ -5,12 +5,11 @@ import { XyoBoundWitnessSchema } from '@xyo-network/boundwitness-model';
|
|
|
5
5
|
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
|
|
6
6
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper';
|
|
7
7
|
import { AbstractDiviner } from '../AbstractDiviner';
|
|
8
|
-
import {
|
|
9
|
-
export const MemoryAddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.memory.config`;
|
|
8
|
+
import { AddressHistoryDivinerConfigSchema } from './Config';
|
|
10
9
|
// This diviner returns the most recent boundwitness signed by the address that can be found
|
|
11
10
|
// if multiple broken chains are found, all the heads are returned
|
|
12
11
|
export class MemoryAddressHistoryDiviner extends AbstractDiviner {
|
|
13
|
-
static configSchema =
|
|
12
|
+
static configSchema = AddressHistoryDivinerConfigSchema;
|
|
14
13
|
static async create(params) {
|
|
15
14
|
return (await super.create(params));
|
|
16
15
|
}
|
|
@@ -24,7 +23,6 @@ export class MemoryAddressHistoryDiviner extends AbstractDiviner {
|
|
|
24
23
|
}))).flat();
|
|
25
24
|
const bwRecords = this.buildWrapperRecords(bwLists);
|
|
26
25
|
const chains = Object.values(this.buildAddressChains(this.config.address, bwRecords));
|
|
27
|
-
console.log(`Chains: ${JSON.stringify(chains, null, 2)}`);
|
|
28
26
|
//return the heads of each chain (get the last bw on each chain)
|
|
29
27
|
return chains.map((chain) => assertEx(PayloadWrapper.unwrap(chain.shift())));
|
|
30
28
|
}
|
|
@@ -59,4 +57,4 @@ export class MemoryAddressHistoryDiviner extends AbstractDiviner {
|
|
|
59
57
|
}, {});
|
|
60
58
|
}
|
|
61
59
|
}
|
|
62
|
-
//# sourceMappingURL=
|
|
60
|
+
//# sourceMappingURL=MemoryDiviner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryDiviner.js","sourceRoot":"","sources":["../../../src/AddressHistory/MemoryDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAmB,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAA+B,iCAAiC,EAAE,MAAM,UAAU,CAAA;AAGzF,4FAA4F;AAC5F,kEAAkE;AAElE,MAAM,OAAO,2BAA4B,SAAQ,eAA2D;IAC1G,MAAM,CAAU,YAAY,GAAG,iCAAiC,CAAA;IAEhE,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAA2D;QACtF,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAgC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAuB;QAClC,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,uEAAuE,CAAC,CAAA;QACpG,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1I,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,CACd,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAA;YACjC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,qBAAqB,CAAsB,CAAA;QAC/F,CAAC,CAAC,CACH,CACF,CAAC,IAAI,EAAE,CAAA;QAER,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAEnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;QAErF,gEAAgE;QAChE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IAC9E,CAAC;IAEO,kBAAkB,CAAC,OAAe,EAAE,SAA8C;QACxF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAwC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,IAAI,CAAA;QACb,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAwC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACpG,iEAAiE;YACjE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;gBACb,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACxC,IAAI,YAAY,EAAE;oBAChB,wDAAwD;oBACxD,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;wBACtB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;wBACrC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAA;qBAC1B;iBACF;aACF;YACD,OAAO,IAAI,CAAA;QACb,CAAC,EAAE,aAAa,CAAC,CAAA;IACnB,CAAC;IAED,yDAAyD;IACjD,mBAAmB,CAAC,KAAwB;QAClD,OAAO,KAAK;aACT,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC1D,MAAM,CAAsC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE;YAC7D,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAA;YAC3C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;YACjC,OAAO,SAAS,CAAA;QAClB,CAAC,EAAE,EAAE,CAAC,CAAA;IACV,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AddressHistory/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AddressHistory/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
@@ -17,11 +17,11 @@ export class MemoryAddressSpaceDiviner extends AbstractDiviner {
|
|
|
17
17
|
}
|
|
18
18
|
async divine(payloads) {
|
|
19
19
|
assertEx(!payloads?.length, 'MemoryAddressSpaceDiviner.divine does not allow payloads to be sent');
|
|
20
|
-
const archivists =
|
|
20
|
+
const archivists = await this.archivists();
|
|
21
21
|
assertEx(archivists.length > 0, 'Did not find any archivists');
|
|
22
22
|
const bwLists = (await Promise.all(archivists.map(async (archivist) => {
|
|
23
|
-
const all = await archivist.all();
|
|
24
|
-
return all
|
|
23
|
+
const all = await archivist.all?.();
|
|
24
|
+
return all?.filter((payload) => payload.schema === XyoBoundWitnessSchema) ?? [];
|
|
25
25
|
}))).flat();
|
|
26
26
|
const addresses = new Set(bwLists
|
|
27
27
|
.map((bw) => bw.addresses)
|
|
@@ -29,5 +29,14 @@ export class MemoryAddressSpaceDiviner extends AbstractDiviner {
|
|
|
29
29
|
.map((address) => address.toLowerCase()));
|
|
30
30
|
return [...addresses].map((address) => new XyoPayloadBuilder({ schema: AddressSchema }).fields({ address }).build());
|
|
31
31
|
}
|
|
32
|
+
async archivists() {
|
|
33
|
+
if (this.config.archivists) {
|
|
34
|
+
return await this.resolve({ address: this.config.archivists });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
//get all reachable archivists
|
|
38
|
+
return (await this.resolve({ query: [[ArchivistGetQuerySchema]] })).map((archivist) => new ArchivistWrapper(archivist));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
32
41
|
}
|
|
33
42
|
//# sourceMappingURL=MemoryAddressSpaceDiviner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryAddressSpaceDiviner.js","sourceRoot":"","sources":["../../../src/AddressSpace/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"MemoryAddressSpaceDiviner.js","sourceRoot":"","sources":["../../../src/AddressSpace/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAmB,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAmB,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAGxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAuB,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG/E,MAAM,CAAC,MAAM,qCAAqC,GAA0C,GAAG,kBAAkB,gBAAgB,CAAA;AAWjI;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,eAA+D;IAC5G,MAAM,CAAU,YAAY,GAAG,qCAAqC,CAAA;IAEpE,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAA+D;QAC1F,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAA8B,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAuB;QAClC,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,qEAAqE,CAAC,CAAA;QAClG,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAC1C,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,CACd,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,CAAA;YACnC,OAAQ,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,qBAAqB,CAAuB,IAAI,EAAE,CAAA;QACxG,CAAC,CAAC,CACH,CACF,CAAC,IAAI,EAAE,CAAA;QACR,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,OAAO;aACJ,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;aACzB,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC3C,CAAA;QACD,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACtH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC1B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;SAChF;aAAM;YACL,8BAA8B;YAC9B,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;SACzI;IACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import { DivinerConfig } from '@xyo-network/diviner-model';
|
|
3
|
+
import { AddressChainSchema } from './Diviner';
|
|
4
|
+
export type AddressChainDivinerConfigSchema = `${AddressChainSchema}.config`;
|
|
5
|
+
export declare const AddressChainDivinerConfigSchema: AddressChainDivinerConfigSchema;
|
|
6
|
+
export type AddressChainDivinerConfig = DivinerConfig<XyoBoundWitness, {
|
|
7
|
+
address: string;
|
|
8
|
+
maxResults?: number;
|
|
9
|
+
schema: AddressChainDivinerConfigSchema;
|
|
10
|
+
startHash: string;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/AddressChain/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAE9C,MAAM,MAAM,+BAA+B,GAAG,GAAG,kBAAkB,SAAS,CAAA;AAC5E,eAAO,MAAM,+BAA+B,EAAE,+BAAgE,CAAA;AAE9G,MAAM,MAAM,yBAAyB,GAAG,aAAa,CACnD,eAAe,EACf;IACE,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,+BAA+B,CAAA;IACvC,SAAS,EAAE,MAAM,CAAA;CAClB,CACF,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module-model';
|
|
2
|
+
import { PayloadFindFilter, XyoPayload } from '@xyo-network/payload-model';
|
|
3
|
+
import { AbstractDiviner } from '../AbstractDiviner';
|
|
4
|
+
export type AddressChainSchema = 'network.xyo.diviner.address.chain';
|
|
5
|
+
export declare const AddressChainSchema: AddressChainSchema;
|
|
6
|
+
export type AddressChainQuerySchema = 'network.xyo.diviner.address.chain.query';
|
|
7
|
+
export declare const AddressChainQuerySchema: AddressChainQuerySchema;
|
|
8
|
+
export type AddressChainPayload = XyoPayload<{
|
|
9
|
+
schema: AddressChainSchema;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const isAddressChainPayload: (x?: XyoPayload | null) => x is import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
12
|
+
schema: AddressChainSchema;
|
|
13
|
+
};
|
|
14
|
+
export type AddressChainQueryPayload = XyoQuery<{
|
|
15
|
+
schema: AddressChainQuerySchema;
|
|
16
|
+
} & PayloadFindFilter>;
|
|
17
|
+
export declare const isAddressChainQueryPayload: (x?: XyoPayload | null) => x is AddressChainQueryPayload;
|
|
18
|
+
export type AddressChainDiviner = AbstractDiviner;
|
|
19
|
+
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../../src/AddressChain/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,MAAM,kBAAkB,GAAG,mCAAmC,CAAA;AACpE,eAAO,MAAM,kBAAkB,EAAE,kBAAwD,CAAA;AAEzF,MAAM,MAAM,uBAAuB,GAAG,yCAAyC,CAAA;AAC/E,eAAO,MAAM,uBAAuB,EAAE,uBAAmE,CAAA;AAEzG,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAAE,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAAA;AAC5E,eAAO,MAAM,qBAAqB,OAAQ,UAAU,GAAG,IAAI;YADJ,kBAAkB;CACiD,CAAA;AAE1H,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,GAAG,iBAAiB,CAAC,CAAA;AACxG,eAAO,MAAM,0BAA0B,OAAQ,UAAU,GAAG,IAAI,kCAAyE,CAAA;AAEzI,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ModuleParams } from '@xyo-network/module';
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload-model';
|
|
3
|
+
import { AbstractDiviner, DivinerParams } from '../AbstractDiviner';
|
|
4
|
+
import { AddressChainDivinerConfig } from './Config';
|
|
5
|
+
import { AddressChainDiviner } from './Diviner';
|
|
6
|
+
export declare class MemoryAddressChainDiviner extends AbstractDiviner<DivinerParams<AddressChainDivinerConfig>> implements AddressChainDiviner {
|
|
7
|
+
static configSchema: "network.xyo.diviner.address.chain.config";
|
|
8
|
+
static create(params?: Partial<ModuleParams<AddressChainDivinerConfig>>): Promise<MemoryAddressChainDiviner>;
|
|
9
|
+
divine(payloads?: XyoPayload[]): Promise<XyoPayload[]>;
|
|
10
|
+
private archivistFindHash;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=MemoryDiviner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryDiviner.d.ts","sourceRoot":"","sources":["../../../src/AddressChain/MemoryDiviner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,yBAAyB,EAAmC,MAAM,UAAU,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAK/C,qBAAa,yBAA0B,SAAQ,eAAe,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAE,YAAW,mBAAmB;IACrI,OAAgB,YAAY,6CAAkC;WAExC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAIrH,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAgB9C,iBAAiB;CAUhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AddressChain/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import { DivinerConfig } from '@xyo-network/diviner-model';
|
|
3
|
+
import { AddressHistorySchema } from './Diviner';
|
|
4
|
+
export type AddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.config`;
|
|
5
|
+
export declare const AddressHistoryDivinerConfigSchema: AddressHistoryDivinerConfigSchema;
|
|
6
|
+
export type AddressHistoryDivinerConfig = DivinerConfig<XyoBoundWitness, {
|
|
7
|
+
address: string;
|
|
8
|
+
schema: AddressHistoryDivinerConfigSchema;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/AddressHistory/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,MAAM,iCAAiC,GAAG,GAAG,oBAAoB,SAAS,CAAA;AAChF,eAAO,MAAM,iCAAiC,EAAE,iCAAoE,CAAA;AAEpH,MAAM,MAAM,2BAA2B,GAAG,aAAa,CACrD,eAAe,EACf;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,iCAAiC,CAAA;CAC1C,CACF,CAAA"}
|
|
@@ -16,4 +16,4 @@ export type AddressHistoryQueryPayload = XyoQuery<{
|
|
|
16
16
|
} & PayloadFindFilter>;
|
|
17
17
|
export declare const isAddressHistoryQueryPayload: (x?: XyoPayload | null) => x is AddressHistoryQueryPayload;
|
|
18
18
|
export type AddressHistoryDiviner = AbstractDiviner;
|
|
19
|
-
//# sourceMappingURL=
|
|
19
|
+
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../../src/AddressHistory/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,MAAM,oBAAoB,GAAG,qCAAqC,CAAA;AACxE,eAAO,MAAM,oBAAoB,EAAE,oBAA4D,CAAA;AAE/F,MAAM,MAAM,yBAAyB,GAAG,2CAA2C,CAAA;AACnF,eAAO,MAAM,yBAAyB,EAAE,yBAAuE,CAAA;AAE/G,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC;IAAE,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAAA;AAChF,eAAO,MAAM,uBAAuB,OAAQ,UAAU,GAAG,IAAI;YADJ,oBAAoB;CACmD,CAAA;AAEhI,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,yBAAyB,CAAA;CAAE,GAAG,iBAAiB,CAAC,CAAA;AAC5G,eAAO,MAAM,4BAA4B,OAAQ,UAAU,GAAG,IAAI,oCAA6E,CAAA;AAE/I,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ModuleParams } from '@xyo-network/module';
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload-model';
|
|
3
|
+
import { AbstractDiviner, DivinerParams } from '../AbstractDiviner';
|
|
4
|
+
import { AddressHistoryDivinerConfig } from './Config';
|
|
5
|
+
import { AddressHistoryDiviner } from './Diviner';
|
|
6
|
+
export declare class MemoryAddressHistoryDiviner extends AbstractDiviner<DivinerParams<AddressHistoryDivinerConfig>> implements AddressHistoryDiviner {
|
|
7
|
+
static configSchema: "network.xyo.diviner.address.history.config";
|
|
8
|
+
static create(params?: Partial<ModuleParams<AddressHistoryDivinerConfig>>): Promise<MemoryAddressHistoryDiviner>;
|
|
9
|
+
divine(payloads?: XyoPayload[]): Promise<XyoPayload[]>;
|
|
10
|
+
private buildAddressChains;
|
|
11
|
+
private buildWrapperRecords;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=MemoryDiviner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryDiviner.d.ts","sourceRoot":"","sources":["../../../src/AddressHistory/MemoryDiviner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAGvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,2BAA2B,EAAqC,MAAM,UAAU,CAAA;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAKjD,qBAAa,2BAA4B,SAAQ,eAAe,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAE,YAAW,qBAAqB;IAC3I,OAAgB,YAAY,+CAAoC;WAE1C,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAIzH,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqB5D,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,mBAAmB;CAS5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AddressHistory/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AddressHistory/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
@@ -8,6 +8,7 @@ export type MemoryAddressSpaceDivinerConfigSchema = `${AddressSpaceSchema}.memor
|
|
|
8
8
|
export declare const MemoryAddressSpaceDivinerConfigSchema: MemoryAddressSpaceDivinerConfigSchema;
|
|
9
9
|
export type MemoryAddressSpaceDivinerConfig = DivinerConfig<XyoBoundWitness, {
|
|
10
10
|
address: string;
|
|
11
|
+
archivists?: string[];
|
|
11
12
|
schema: MemoryAddressSpaceDivinerConfigSchema;
|
|
12
13
|
}>;
|
|
13
14
|
/**
|
|
@@ -17,5 +18,6 @@ export declare class MemoryAddressSpaceDiviner extends AbstractDiviner<DivinerPa
|
|
|
17
18
|
static configSchema: "network.xyo.diviner.address.space.memory.config";
|
|
18
19
|
static create(params?: Partial<ModuleParams<MemoryAddressSpaceDivinerConfig>>): Promise<MemoryAddressSpaceDiviner>;
|
|
19
20
|
divine(payloads?: XyoPayload[]): Promise<XyoPayload[]>;
|
|
21
|
+
private archivists;
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=MemoryAddressSpaceDiviner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryAddressSpaceDiviner.d.ts","sourceRoot":"","sources":["../../../src/AddressSpace/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAyB,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,MAAM,MAAM,qCAAqC,GAAG,GAAG,kBAAkB,gBAAgB,CAAA;AACzF,eAAO,MAAM,qCAAqC,EAAE,qCAA6E,CAAA;AAEjI,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,eAAe,EACf;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,qCAAqC,CAAA;CAC9C,CACF,CAAA;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,eAAe,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAE,YAAW,mBAAmB;IAC3I,OAAgB,YAAY,oDAAwC;WAE9C,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAI3H,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryAddressSpaceDiviner.d.ts","sourceRoot":"","sources":["../../../src/AddressSpace/MemoryAddressSpaceDiviner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAyB,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,MAAM,MAAM,qCAAqC,GAAG,GAAG,kBAAkB,gBAAgB,CAAA;AACzF,eAAO,MAAM,qCAAqC,EAAE,qCAA6E,CAAA;AAEjI,MAAM,MAAM,+BAA+B,GAAG,aAAa,CACzD,eAAe,EACf;IACE,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,MAAM,EAAE,qCAAqC,CAAA;CAC9C,CACF,CAAA;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,eAAe,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAE,YAAW,mBAAmB;IAC3I,OAAgB,YAAY,oDAAwC;WAE9C,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAI3H,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAqB9C,UAAU;CAQzB"}
|
package/package.json
CHANGED
|
@@ -12,28 +12,28 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.7.4",
|
|
14
14
|
"@xylabs/promise": "^2.7.4",
|
|
15
|
-
"@xyo-network/account": "^2.50.
|
|
16
|
-
"@xyo-network/address-payload-plugin": "^2.50.
|
|
17
|
-
"@xyo-network/archivist": "^2.50.
|
|
18
|
-
"@xyo-network/archivist-wrapper": "^2.50.
|
|
19
|
-
"@xyo-network/boundwitness-model": "^2.50.
|
|
20
|
-
"@xyo-network/boundwitness-wrapper": "^2.50.
|
|
21
|
-
"@xyo-network/core": "^2.50.
|
|
22
|
-
"@xyo-network/diviner-model": "^2.50.
|
|
23
|
-
"@xyo-network/diviner-wrapper": "^2.50.
|
|
24
|
-
"@xyo-network/huri": "^2.50.
|
|
25
|
-
"@xyo-network/module": "^2.50.
|
|
26
|
-
"@xyo-network/module-model": "^2.50.
|
|
27
|
-
"@xyo-network/payload-builder": "^2.50.
|
|
28
|
-
"@xyo-network/payload-model": "^2.50.
|
|
29
|
-
"@xyo-network/payload-wrapper": "^2.50.
|
|
30
|
-
"@xyo-network/promise": "^2.50.
|
|
15
|
+
"@xyo-network/account": "^2.50.6",
|
|
16
|
+
"@xyo-network/address-payload-plugin": "^2.50.6",
|
|
17
|
+
"@xyo-network/archivist": "^2.50.6",
|
|
18
|
+
"@xyo-network/archivist-wrapper": "^2.50.6",
|
|
19
|
+
"@xyo-network/boundwitness-model": "^2.50.6",
|
|
20
|
+
"@xyo-network/boundwitness-wrapper": "^2.50.6",
|
|
21
|
+
"@xyo-network/core": "^2.50.6",
|
|
22
|
+
"@xyo-network/diviner-model": "^2.50.6",
|
|
23
|
+
"@xyo-network/diviner-wrapper": "^2.50.6",
|
|
24
|
+
"@xyo-network/huri": "^2.50.6",
|
|
25
|
+
"@xyo-network/module": "^2.50.6",
|
|
26
|
+
"@xyo-network/module-model": "^2.50.6",
|
|
27
|
+
"@xyo-network/payload-builder": "^2.50.6",
|
|
28
|
+
"@xyo-network/payload-model": "^2.50.6",
|
|
29
|
+
"@xyo-network/payload-wrapper": "^2.50.6",
|
|
30
|
+
"@xyo-network/promise": "^2.50.6",
|
|
31
31
|
"lodash": "^4.17.21"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/lodash": "^4.14.191",
|
|
35
|
-
"@xylabs/ts-scripts-yarn3": "^2.16.0
|
|
36
|
-
"@xylabs/tsconfig": "^2.16.0
|
|
35
|
+
"@xylabs/ts-scripts-yarn3": "^2.16.0",
|
|
36
|
+
"@xylabs/tsconfig": "^2.16.0",
|
|
37
37
|
"typescript": "^4.9.5"
|
|
38
38
|
},
|
|
39
39
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
},
|
|
70
70
|
"sideEffects": false,
|
|
71
71
|
"types": "dist/types/index.d.ts",
|
|
72
|
-
"version": "2.50.
|
|
72
|
+
"version": "2.50.6"
|
|
73
73
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness-model'
|
|
2
|
+
import { DivinerConfig } from '@xyo-network/diviner-model'
|
|
3
|
+
|
|
4
|
+
import { AddressChainSchema } from './Diviner'
|
|
5
|
+
|
|
6
|
+
export type AddressChainDivinerConfigSchema = `${AddressChainSchema}.config`
|
|
7
|
+
export const AddressChainDivinerConfigSchema: AddressChainDivinerConfigSchema = `${AddressChainSchema}.config`
|
|
8
|
+
|
|
9
|
+
export type AddressChainDivinerConfig = DivinerConfig<
|
|
10
|
+
XyoBoundWitness,
|
|
11
|
+
{
|
|
12
|
+
address: string
|
|
13
|
+
maxResults?: number
|
|
14
|
+
schema: AddressChainDivinerConfigSchema
|
|
15
|
+
startHash: string
|
|
16
|
+
}
|
|
17
|
+
>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { XyoQuery } from '@xyo-network/module-model'
|
|
2
|
+
import { PayloadFindFilter, XyoPayload } 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 = XyoPayload<{ schema: AddressChainSchema }>
|
|
13
|
+
export const isAddressChainPayload = (x?: XyoPayload | null): x is AddressChainPayload => x?.schema === AddressChainSchema
|
|
14
|
+
|
|
15
|
+
export type AddressChainQueryPayload = XyoQuery<{ schema: AddressChainQuerySchema } & PayloadFindFilter>
|
|
16
|
+
export const isAddressChainQueryPayload = (x?: XyoPayload | null): x is AddressChainQueryPayload => x?.schema === AddressChainQuerySchema
|
|
17
|
+
|
|
18
|
+
export type AddressChainDiviner = AbstractDiviner
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { ArchivistGetQuerySchema } from '@xyo-network/archivist'
|
|
3
|
+
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
4
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness-model'
|
|
5
|
+
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|
|
6
|
+
import { ModuleParams } from '@xyo-network/module'
|
|
7
|
+
import { XyoPayload } from '@xyo-network/payload-model'
|
|
8
|
+
|
|
9
|
+
import { AbstractDiviner, DivinerParams } from '../AbstractDiviner'
|
|
10
|
+
import { AddressChainDivinerConfig, AddressChainDivinerConfigSchema } from './Config'
|
|
11
|
+
import { AddressChainDiviner } from './Diviner'
|
|
12
|
+
|
|
13
|
+
// This diviner returns the most recent boundwitness signed by the address that can be found
|
|
14
|
+
// if multiple broken chains are found, all the heads are returned
|
|
15
|
+
|
|
16
|
+
export class MemoryAddressChainDiviner extends AbstractDiviner<DivinerParams<AddressChainDivinerConfig>> implements AddressChainDiviner {
|
|
17
|
+
static override configSchema = AddressChainDivinerConfigSchema
|
|
18
|
+
|
|
19
|
+
static override async create(params?: Partial<ModuleParams<AddressChainDivinerConfig>>): Promise<MemoryAddressChainDiviner> {
|
|
20
|
+
return (await super.create(params)) as MemoryAddressChainDiviner
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async divine(payloads?: XyoPayload[]): Promise<XyoPayload[]> {
|
|
24
|
+
const result: XyoPayload[] = []
|
|
25
|
+
assertEx(!payloads?.length, 'MemoryAddressChainDiviner.divine does not allow payloads to be sent')
|
|
26
|
+
const archivists = (await this.resolve({ query: [[ArchivistGetQuerySchema]] }))?.map((archivist) => new ArchivistWrapper(archivist)) ?? []
|
|
27
|
+
let currentHash: string | null = this.config.startHash
|
|
28
|
+
while (currentHash && result.length < (this.config.maxResults ?? 1000)) {
|
|
29
|
+
const bwPayload: XyoBoundWitness | undefined = await this.archivistFindHash(archivists, currentHash)
|
|
30
|
+
const bw: BoundWitnessWrapper | undefined = BoundWitnessWrapper.parse(bwPayload)
|
|
31
|
+
if (bw) {
|
|
32
|
+
result.push(bw)
|
|
33
|
+
currentHash = bw.prev(this.config.address)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private async archivistFindHash(archivists: ArchivistWrapper[], hash: string): Promise<XyoBoundWitness | undefined> {
|
|
40
|
+
let index = 0
|
|
41
|
+
if (archivists[index]) {
|
|
42
|
+
const result = (await archivists[index].get([hash])).pop() as XyoBoundWitness
|
|
43
|
+
if (result) {
|
|
44
|
+
return result
|
|
45
|
+
}
|
|
46
|
+
index++
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness-model'
|
|
2
|
+
import { DivinerConfig } from '@xyo-network/diviner-model'
|
|
3
|
+
|
|
4
|
+
import { AddressHistorySchema } from './Diviner'
|
|
5
|
+
|
|
6
|
+
export type AddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.config`
|
|
7
|
+
export const AddressHistoryDivinerConfigSchema: AddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.config`
|
|
8
|
+
|
|
9
|
+
export type AddressHistoryDivinerConfig = DivinerConfig<
|
|
10
|
+
XyoBoundWitness,
|
|
11
|
+
{
|
|
12
|
+
address: string
|
|
13
|
+
schema: AddressHistoryDivinerConfigSchema
|
|
14
|
+
}
|
|
15
|
+
>
|
|
@@ -3,32 +3,21 @@ import { ArchivistGetQuerySchema } from '@xyo-network/archivist'
|
|
|
3
3
|
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
4
4
|
import { XyoBoundWitness, XyoBoundWitnessSchema } from '@xyo-network/boundwitness-model'
|
|
5
5
|
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|
|
6
|
-
import { DivinerConfig } from '@xyo-network/diviner-model'
|
|
7
6
|
import { ModuleParams } from '@xyo-network/module'
|
|
8
7
|
import { XyoPayload } from '@xyo-network/payload-model'
|
|
9
8
|
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
10
9
|
|
|
11
10
|
import { AbstractDiviner, DivinerParams } from '../AbstractDiviner'
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
export type MemoryAddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.memory.config`
|
|
15
|
-
export const MemoryAddressHistoryDivinerConfigSchema: MemoryAddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.memory.config`
|
|
16
|
-
|
|
17
|
-
export type MemoryAddressHistoryDivinerConfig = DivinerConfig<
|
|
18
|
-
XyoBoundWitness,
|
|
19
|
-
{
|
|
20
|
-
address: string
|
|
21
|
-
schema: MemoryAddressHistoryDivinerConfigSchema
|
|
22
|
-
}
|
|
23
|
-
>
|
|
11
|
+
import { AddressHistoryDivinerConfig, AddressHistoryDivinerConfigSchema } from './Config'
|
|
12
|
+
import { AddressHistoryDiviner } from './Diviner'
|
|
24
13
|
|
|
25
14
|
// This diviner returns the most recent boundwitness signed by the address that can be found
|
|
26
15
|
// if multiple broken chains are found, all the heads are returned
|
|
27
16
|
|
|
28
|
-
export class MemoryAddressHistoryDiviner extends AbstractDiviner<DivinerParams<
|
|
29
|
-
static override configSchema =
|
|
17
|
+
export class MemoryAddressHistoryDiviner extends AbstractDiviner<DivinerParams<AddressHistoryDivinerConfig>> implements AddressHistoryDiviner {
|
|
18
|
+
static override configSchema = AddressHistoryDivinerConfigSchema
|
|
30
19
|
|
|
31
|
-
static override async create(params?: Partial<ModuleParams<
|
|
20
|
+
static override async create(params?: Partial<ModuleParams<AddressHistoryDivinerConfig>>): Promise<MemoryAddressHistoryDiviner> {
|
|
32
21
|
return (await super.create(params)) as MemoryAddressHistoryDiviner
|
|
33
22
|
}
|
|
34
23
|
|
|
@@ -49,8 +38,6 @@ export class MemoryAddressHistoryDiviner extends AbstractDiviner<DivinerParams<M
|
|
|
49
38
|
|
|
50
39
|
const chains = Object.values(this.buildAddressChains(this.config.address, bwRecords))
|
|
51
40
|
|
|
52
|
-
console.log(`Chains: ${JSON.stringify(chains, null, 2)}`)
|
|
53
|
-
|
|
54
41
|
//return the heads of each chain (get the last bw on each chain)
|
|
55
42
|
return chains.map((chain) => assertEx(PayloadWrapper.unwrap(chain.shift())))
|
|
56
43
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
1
|
+
export * from './Config'
|
|
2
|
+
export * from './Diviner'
|
|
3
|
+
export * from './MemoryDiviner'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import { AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
3
|
-
import { ArchivistGetQuerySchema } from '@xyo-network/archivist'
|
|
3
|
+
import { ArchivistGetQuerySchema, ArchivistModule } from '@xyo-network/archivist'
|
|
4
4
|
import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
|
|
5
5
|
import { XyoBoundWitness, XyoBoundWitnessSchema } from '@xyo-network/boundwitness-model'
|
|
6
6
|
import { DivinerConfig } from '@xyo-network/diviner-model'
|
|
@@ -18,6 +18,7 @@ export type MemoryAddressSpaceDivinerConfig = DivinerConfig<
|
|
|
18
18
|
XyoBoundWitness,
|
|
19
19
|
{
|
|
20
20
|
address: string
|
|
21
|
+
archivists?: string[]
|
|
21
22
|
schema: MemoryAddressSpaceDivinerConfigSchema
|
|
22
23
|
}
|
|
23
24
|
>
|
|
@@ -34,13 +35,13 @@ export class MemoryAddressSpaceDiviner extends AbstractDiviner<DivinerParams<Mem
|
|
|
34
35
|
|
|
35
36
|
async divine(payloads?: XyoPayload[]): Promise<XyoPayload[]> {
|
|
36
37
|
assertEx(!payloads?.length, 'MemoryAddressSpaceDiviner.divine does not allow payloads to be sent')
|
|
37
|
-
const archivists =
|
|
38
|
+
const archivists = await this.archivists()
|
|
38
39
|
assertEx(archivists.length > 0, 'Did not find any archivists')
|
|
39
40
|
const bwLists = (
|
|
40
41
|
await Promise.all(
|
|
41
42
|
archivists.map(async (archivist) => {
|
|
42
|
-
const all = await archivist.all()
|
|
43
|
-
return all
|
|
43
|
+
const all = await archivist.all?.()
|
|
44
|
+
return (all?.filter((payload) => payload.schema === XyoBoundWitnessSchema) as XyoBoundWitness[]) ?? []
|
|
44
45
|
}),
|
|
45
46
|
)
|
|
46
47
|
).flat()
|
|
@@ -52,4 +53,13 @@ export class MemoryAddressSpaceDiviner extends AbstractDiviner<DivinerParams<Mem
|
|
|
52
53
|
)
|
|
53
54
|
return [...addresses].map((address) => new XyoPayloadBuilder({ schema: AddressSchema }).fields({ address }).build())
|
|
54
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((archivist) => new ArchivistWrapper(archivist))
|
|
63
|
+
}
|
|
64
|
+
}
|
|
55
65
|
}
|