@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.
Files changed (72) hide show
  1. package/dist/cjs/AddressChain/Config.js +6 -0
  2. package/dist/cjs/AddressChain/Config.js.map +1 -0
  3. package/dist/cjs/AddressChain/Diviner.js +10 -0
  4. package/dist/cjs/AddressChain/Diviner.js.map +1 -0
  5. package/dist/cjs/AddressChain/MemoryDiviner.js +55 -0
  6. package/dist/cjs/AddressChain/MemoryDiviner.js.map +1 -0
  7. package/dist/cjs/AddressChain/index.js +7 -0
  8. package/dist/cjs/AddressChain/index.js.map +1 -0
  9. package/dist/cjs/AddressHistory/Config.js +6 -0
  10. package/dist/cjs/AddressHistory/Config.js.map +1 -0
  11. package/dist/cjs/AddressHistory/{AddressHistoryDiviner.js → Diviner.js} +1 -1
  12. package/dist/cjs/AddressHistory/Diviner.js.map +1 -0
  13. package/dist/cjs/AddressHistory/{MemoryAddressHistoryDiviner.js → MemoryDiviner.js} +4 -6
  14. package/dist/cjs/AddressHistory/MemoryDiviner.js.map +1 -0
  15. package/dist/cjs/AddressHistory/index.js +3 -2
  16. package/dist/cjs/AddressHistory/index.js.map +1 -1
  17. package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js +15 -4
  18. package/dist/cjs/AddressSpace/MemoryAddressSpaceDiviner.js.map +1 -1
  19. package/dist/docs.json +29381 -15209
  20. package/dist/esm/AddressChain/Config.js +3 -0
  21. package/dist/esm/AddressChain/Config.js.map +1 -0
  22. package/dist/esm/AddressChain/Diviner.js +5 -0
  23. package/dist/esm/AddressChain/Diviner.js.map +1 -0
  24. package/dist/esm/AddressChain/MemoryDiviner.js +40 -0
  25. package/dist/esm/AddressChain/MemoryDiviner.js.map +1 -0
  26. package/dist/esm/AddressChain/index.js +4 -0
  27. package/dist/esm/AddressChain/index.js.map +1 -0
  28. package/dist/esm/AddressHistory/Config.js +3 -0
  29. package/dist/esm/AddressHistory/Config.js.map +1 -0
  30. package/dist/esm/AddressHistory/{AddressHistoryDiviner.js → Diviner.js} +1 -1
  31. package/dist/esm/AddressHistory/Diviner.js.map +1 -0
  32. package/dist/esm/AddressHistory/{MemoryAddressHistoryDiviner.js → MemoryDiviner.js} +3 -5
  33. package/dist/esm/AddressHistory/MemoryDiviner.js.map +1 -0
  34. package/dist/esm/AddressHistory/index.js +3 -2
  35. package/dist/esm/AddressHistory/index.js.map +1 -1
  36. package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js +12 -3
  37. package/dist/esm/AddressSpace/MemoryAddressSpaceDiviner.js.map +1 -1
  38. package/dist/types/AddressChain/Config.d.ts +12 -0
  39. package/dist/types/AddressChain/Config.d.ts.map +1 -0
  40. package/dist/types/AddressChain/Diviner.d.ts +19 -0
  41. package/dist/types/AddressChain/Diviner.d.ts.map +1 -0
  42. package/dist/types/AddressChain/MemoryDiviner.d.ts +12 -0
  43. package/dist/types/AddressChain/MemoryDiviner.d.ts.map +1 -0
  44. package/dist/types/AddressChain/index.d.ts +4 -0
  45. package/dist/types/AddressChain/index.d.ts.map +1 -0
  46. package/dist/types/AddressHistory/Config.d.ts +10 -0
  47. package/dist/types/AddressHistory/Config.d.ts.map +1 -0
  48. package/dist/types/AddressHistory/{AddressHistoryDiviner.d.ts → Diviner.d.ts} +1 -1
  49. package/dist/types/AddressHistory/Diviner.d.ts.map +1 -0
  50. package/dist/types/AddressHistory/MemoryDiviner.d.ts +13 -0
  51. package/dist/types/AddressHistory/MemoryDiviner.d.ts.map +1 -0
  52. package/dist/types/AddressHistory/index.d.ts +3 -2
  53. package/dist/types/AddressHistory/index.d.ts.map +1 -1
  54. package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts +2 -0
  55. package/dist/types/AddressSpace/MemoryAddressSpaceDiviner.d.ts.map +1 -1
  56. package/package.json +19 -19
  57. package/src/AddressChain/Config.ts +17 -0
  58. package/src/AddressChain/Diviner.ts +18 -0
  59. package/src/AddressChain/MemoryDiviner.ts +49 -0
  60. package/src/AddressChain/index.ts +3 -0
  61. package/src/AddressHistory/Config.ts +15 -0
  62. package/src/AddressHistory/{MemoryAddressHistoryDiviner.ts → MemoryDiviner.ts} +5 -18
  63. package/src/AddressHistory/index.ts +3 -2
  64. package/src/AddressSpace/MemoryAddressSpaceDiviner.ts +14 -4
  65. package/dist/cjs/AddressHistory/AddressHistoryDiviner.js.map +0 -1
  66. package/dist/cjs/AddressHistory/MemoryAddressHistoryDiviner.js.map +0 -1
  67. package/dist/esm/AddressHistory/AddressHistoryDiviner.js.map +0 -1
  68. package/dist/esm/AddressHistory/MemoryAddressHistoryDiviner.js.map +0 -1
  69. package/dist/types/AddressHistory/AddressHistoryDiviner.d.ts.map +0 -1
  70. package/dist/types/AddressHistory/MemoryAddressHistoryDiviner.d.ts +0 -20
  71. package/dist/types/AddressHistory/MemoryAddressHistoryDiviner.d.ts.map +0 -1
  72. /package/src/AddressHistory/{AddressHistoryDiviner.ts → Diviner.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ import { AddressChainSchema } from './Diviner';
2
+ export const AddressChainDivinerConfigSchema = `${AddressChainSchema}.config`;
3
+ //# sourceMappingURL=Config.js.map
@@ -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,4 @@
1
+ export * from './Config';
2
+ export * from './Diviner';
3
+ export * from './MemoryDiviner';
4
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ import { AddressHistorySchema } from './Diviner';
2
+ export const AddressHistoryDivinerConfigSchema = `${AddressHistorySchema}.config`;
3
+ //# sourceMappingURL=Config.js.map
@@ -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=AddressHistoryDiviner.js.map
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 { AddressHistorySchema } from './AddressHistoryDiviner';
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 = MemoryAddressHistoryDivinerConfigSchema;
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=MemoryAddressHistoryDiviner.js.map
60
+ //# sourceMappingURL=MemoryDiviner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryDiviner.js","sourceRoot":"","sources":["../../../src/AddressHistory/MemoryDiviner.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- export * from './AddressHistoryDiviner';
2
- export * from './MemoryAddressHistoryDiviner';
1
+ export * from './Config';
2
+ export * from './Diviner';
3
+ export * from './MemoryDiviner';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AddressHistory/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA"}
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 = (await this.resolve({ query: [[ArchivistGetQuerySchema]] }))?.map((archivist) => new ArchivistWrapper(archivist)) ?? [];
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.filter((payload) => payload.schema === XyoBoundWitnessSchema);
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,EAAE,MAAM,wBAAwB,CAAA;AAChE,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;AAUjI;;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,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;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"}
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,4 @@
1
+ export * from './Config';
2
+ export * from './Diviner';
3
+ export * from './MemoryDiviner';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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=AddressHistoryDiviner.d.ts.map
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,3 +1,4 @@
1
- export * from './AddressHistoryDiviner';
2
- export * from './MemoryAddressHistoryDiviner';
1
+ export * from './Config';
2
+ export * from './Diviner';
3
+ export * from './MemoryDiviner';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AddressHistory/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA"}
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;CAoB7D"}
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.4",
16
- "@xyo-network/address-payload-plugin": "^2.50.4",
17
- "@xyo-network/archivist": "^2.50.4",
18
- "@xyo-network/archivist-wrapper": "^2.50.4",
19
- "@xyo-network/boundwitness-model": "^2.50.4",
20
- "@xyo-network/boundwitness-wrapper": "^2.50.4",
21
- "@xyo-network/core": "^2.50.4",
22
- "@xyo-network/diviner-model": "^2.50.4",
23
- "@xyo-network/diviner-wrapper": "^2.50.4",
24
- "@xyo-network/huri": "^2.50.4",
25
- "@xyo-network/module": "^2.50.4",
26
- "@xyo-network/module-model": "^2.50.4",
27
- "@xyo-network/payload-builder": "^2.50.4",
28
- "@xyo-network/payload-model": "^2.50.4",
29
- "@xyo-network/payload-wrapper": "^2.50.4",
30
- "@xyo-network/promise": "^2.50.4",
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-rc.2",
36
- "@xylabs/tsconfig": "^2.16.0-rc.2",
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.4"
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,3 @@
1
+ export * from './Config'
2
+ export * from './Diviner'
3
+ export * from './MemoryDiviner'
@@ -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 { AddressHistoryDiviner, AddressHistorySchema } from './AddressHistoryDiviner'
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<MemoryAddressHistoryDivinerConfig>> implements AddressHistoryDiviner {
29
- static override configSchema = MemoryAddressHistoryDivinerConfigSchema
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<MemoryAddressHistoryDivinerConfig>>): Promise<MemoryAddressHistoryDiviner> {
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 './AddressHistoryDiviner'
2
- export * from './MemoryAddressHistoryDiviner'
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 = (await this.resolve({ query: [[ArchivistGetQuerySchema]] }))?.map((archivist) => new ArchivistWrapper(archivist)) ?? []
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.filter((payload) => payload.schema === XyoBoundWitnessSchema) as XyoBoundWitness[]
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
  }