@xyo-network/diviner 2.44.1 → 2.45.0-rc.1
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/AddressHistory/MemoryAddressHistoryDiviner.js +46 -30
- package/dist/cjs/AddressHistory/MemoryAddressHistoryDiviner.js.map +1 -1
- package/dist/cjs/Payload/Archivist/Diviner.js +6 -10
- package/dist/cjs/Payload/Archivist/Diviner.js.map +1 -1
- package/dist/docs.json +10184 -9835
- package/dist/esm/AddressHistory/MemoryAddressHistoryDiviner.js +40 -29
- package/dist/esm/AddressHistory/MemoryAddressHistoryDiviner.js.map +1 -1
- package/dist/esm/Payload/Archivist/Diviner.js +5 -7
- package/dist/esm/Payload/Archivist/Diviner.js.map +1 -1
- package/dist/types/AddressHistory/MemoryAddressHistoryDiviner.d.ts +14 -2
- package/dist/types/AddressHistory/MemoryAddressHistoryDiviner.d.ts.map +1 -1
- package/dist/types/Payload/Archivist/Diviner.d.ts +1 -2
- package/dist/types/Payload/Archivist/Diviner.d.ts.map +1 -1
- package/package.json +17 -16
- package/src/AddressHistory/MemoryAddressHistoryDiviner.ts +60 -31
- package/src/Payload/Archivist/Diviner.ts +5 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MemoryAddressHistoryDiviner = void 0;
|
|
3
|
+
exports.MemoryAddressHistoryDiviner = exports.MemoryAddressHistoryDivinerConfigSchema = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const assert_1 = require("@xylabs/assert");
|
|
6
6
|
const archivist_1 = require("@xyo-network/archivist");
|
|
@@ -8,48 +8,64 @@ const archivist_wrapper_1 = require("@xyo-network/archivist-wrapper");
|
|
|
8
8
|
const boundwitness_model_1 = require("@xyo-network/boundwitness-model");
|
|
9
9
|
const boundwitness_wrapper_1 = require("@xyo-network/boundwitness-wrapper");
|
|
10
10
|
const AbstractDiviner_1 = require("../AbstractDiviner");
|
|
11
|
-
|
|
11
|
+
exports.MemoryAddressHistoryDivinerConfigSchema = 'network.xyo.diviner.address.history.memory.config';
|
|
12
|
+
// This diviner returns the most recent boundwitness signed by the address that can be found
|
|
13
|
+
// if multiple broken chains are found, all the heads are returned
|
|
12
14
|
class MemoryAddressHistoryDiviner extends AbstractDiviner_1.AbstractDiviner {
|
|
15
|
+
static create(params) {
|
|
16
|
+
const _super = Object.create(null, {
|
|
17
|
+
create: { get: () => super.create }
|
|
18
|
+
});
|
|
19
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
return (yield _super.create.call(this, params));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
13
23
|
divine(payloads) {
|
|
14
24
|
var _a, _b, _c;
|
|
15
25
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
|
|
17
|
-
// TODO: Support multiple queries
|
|
18
|
-
if (!query)
|
|
19
|
-
return [];
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
|
-
const { address } = query;
|
|
22
|
-
const assertedAddress = (0, assert_1.assertEx)(address);
|
|
23
|
-
//only supporting single address at this point
|
|
24
|
-
const singleAddress = (0, assert_1.assertEx)((Array.isArray(assertedAddress) ? assertedAddress : [assertedAddress]).shift());
|
|
26
|
+
(0, assert_1.assertEx)(!payloads, 'MemoryAddressHistoryDiviner.divine does not allow payloads to be sent');
|
|
25
27
|
const archivists = (_c = (_b = (yield ((_a = this.resolver) === null || _a === void 0 ? void 0 : _a.resolve({ query: [[archivist_1.ArchivistGetQuerySchema]] })))) === null || _b === void 0 ? void 0 : _b.map((archivist) => new archivist_wrapper_1.ArchivistWrapper(archivist))) !== null && _c !== void 0 ? _c : [];
|
|
26
28
|
const bwLists = (yield Promise.all(archivists.map((archivist) => {
|
|
29
|
+
//Todo: add address to filter
|
|
27
30
|
return archivist.find({ limit: 10000, schema: boundwitness_model_1.XyoBoundWitnessSchema });
|
|
28
31
|
}))).flat();
|
|
29
|
-
const bwRecords =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const wrapper = new boundwitness_wrapper_1.BoundWitnessWrapper(bw);
|
|
34
|
-
bwRecords[wrapper.hash] = [wrapper];
|
|
35
|
-
return bwRecords;
|
|
36
|
-
}, bwRecords);
|
|
37
|
-
return Object.values(this.buildAddressLists(singleAddress, bwRecords)).flat();
|
|
32
|
+
const bwRecords = this.buildWrapperRecords(bwLists);
|
|
33
|
+
const chains = Object.values(this.buildAddressChains(this.config.address, bwRecords));
|
|
34
|
+
//return the heads of each chain (get the last bw on each chain)
|
|
35
|
+
return chains.map((chain) => (0, assert_1.assertEx)(chain.pop()));
|
|
38
36
|
});
|
|
39
37
|
}
|
|
40
|
-
|
|
41
|
-
Object.entries(bwRecords).
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
buildAddressChains(address, bwRecords) {
|
|
39
|
+
const arrayedResult = Object.entries(bwRecords).reduce((prev, [key, value]) => {
|
|
40
|
+
prev[key] = [value];
|
|
41
|
+
return prev;
|
|
42
|
+
}, {});
|
|
43
|
+
return Object.entries(bwRecords).reduce((prev, [key, value]) => {
|
|
44
|
+
//check if key is still there (may have been deleted as prevHash)
|
|
45
|
+
if (prev[key]) {
|
|
46
|
+
const previousHash = value.prev(address);
|
|
47
|
+
if (previousHash) {
|
|
48
|
+
//if we have the previousHash, move this bw to its chain
|
|
49
|
+
if (prev[previousHash]) {
|
|
50
|
+
prev[key].push(...prev[previousHash]);
|
|
51
|
+
delete prev[previousHash];
|
|
52
|
+
}
|
|
48
53
|
}
|
|
49
54
|
}
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
return prev;
|
|
56
|
+
}, arrayedResult);
|
|
57
|
+
}
|
|
58
|
+
//build object with hashes as keys and wrappers as values
|
|
59
|
+
buildWrapperRecords(lists) {
|
|
60
|
+
return lists
|
|
61
|
+
.filter((bw) => bw.addresses.includes(this.config.address))
|
|
62
|
+
.reduce((bwRecords, bw) => {
|
|
63
|
+
const wrapper = new boundwitness_wrapper_1.BoundWitnessWrapper(bw);
|
|
64
|
+
bwRecords[wrapper.hash] = wrapper;
|
|
65
|
+
return bwRecords;
|
|
66
|
+
}, {});
|
|
52
67
|
}
|
|
53
68
|
}
|
|
54
69
|
exports.MemoryAddressHistoryDiviner = MemoryAddressHistoryDiviner;
|
|
70
|
+
MemoryAddressHistoryDiviner.configSchema = exports.MemoryAddressHistoryDivinerConfigSchema;
|
|
55
71
|
//# sourceMappingURL=MemoryAddressHistoryDiviner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryAddressHistoryDiviner.js","sourceRoot":"","sources":["../../../src/AddressHistory/MemoryAddressHistoryDiviner.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,sDAAgE;AAChE,sEAAiE;AACjE,wEAAwF;AACxF,4EAAuE;
|
|
1
|
+
{"version":3,"file":"MemoryAddressHistoryDiviner.js","sourceRoot":"","sources":["../../../src/AddressHistory/MemoryAddressHistoryDiviner.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ class ArchivistPayloadDiviner extends AbstractPayloadDiviner_1.AbstractPayloadDi
|
|
|
23
23
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
24
24
|
const huriPayloads = (0, assert_1.assertEx)(payloads === null || payloads === void 0 ? void 0 : payloads.filter((payload) => (payload === null || payload === void 0 ? void 0 : payload.schema) === XyoHuriPayload_1.XyoHuriSchema), `no huri payloads provided: ${JSON.stringify(payloads, null, 2)}`);
|
|
25
25
|
const hashes = huriPayloads.map((huriPayload) => huriPayload.huri.map((huri) => new huri_1.Huri(huri).hash)).flat();
|
|
26
|
-
const activeArchivist = this.archivist;
|
|
26
|
+
const activeArchivist = yield this.archivist();
|
|
27
27
|
if (activeArchivist) {
|
|
28
28
|
const queryPayload = payload_wrapper_1.PayloadWrapper.parse({ hashes, schema: archivist_1.ArchivistGetQuerySchema });
|
|
29
29
|
const query = yield this.bindQuery(queryPayload);
|
|
@@ -35,23 +35,19 @@ class ArchivistPayloadDiviner extends AbstractPayloadDiviner_1.AbstractPayloadDi
|
|
|
35
35
|
queries() {
|
|
36
36
|
return [diviner_model_1.XyoDivinerDivineQuerySchema, ...super.queries()];
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
start: { get: () => super.start }
|
|
41
|
-
});
|
|
42
|
-
var _a, _b, _c;
|
|
38
|
+
archivist() {
|
|
39
|
+
var _a, _b;
|
|
43
40
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
yield _super.start.call(this);
|
|
45
41
|
const configArchivistAddress = (_a = this.config) === null || _a === void 0 ? void 0 : _a.archivist;
|
|
46
42
|
if (configArchivistAddress) {
|
|
47
43
|
const resolvedArchivist = configArchivistAddress
|
|
48
|
-
? (
|
|
44
|
+
? (_b = (yield this.resolve({ address: [configArchivistAddress] })).shift()) !== null && _b !== void 0 ? _b : null
|
|
49
45
|
: null;
|
|
50
46
|
if (resolvedArchivist) {
|
|
51
|
-
|
|
47
|
+
return resolvedArchivist ? new archivist_wrapper_1.ArchivistWrapper(resolvedArchivist) : null;
|
|
52
48
|
}
|
|
53
49
|
}
|
|
54
|
-
return
|
|
50
|
+
return null;
|
|
55
51
|
});
|
|
56
52
|
}
|
|
57
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../../src/Payload/Archivist/Diviner.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,sDAAqG;AACrG,sEAAiE;AACjE,8DAAwE;AACxE,4CAAwC;AAGxC,kEAA6D;AAE7D,sEAAkE;AAClE,sDAAiE;AAGjE,MAAa,uBAAwB,SAAQ,+CAAwD;
|
|
1
|
+
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../../src/Payload/Archivist/Diviner.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,sDAAqG;AACrG,sEAAiE;AACjE,8DAAwE;AACxE,4CAAwC;AAGxC,kEAA6D;AAE7D,sEAAkE;AAClE,sDAAiE;AAGjE,MAAa,uBAAwB,SAAQ,+CAAwD;IAGnG,MAAM,CAAgB,MAAM,CAAC,MAAuD;;;;;YAClF,OAAO,CAAC,MAAM,OAAM,MAAM,YAAC,MAAM,CAAC,CAA4B,CAAA;QAChE,CAAC;KAAA;IAEY,MAAM,CAAC,QAAuB;;YACzC,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAC3B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,CAAC,OAAO,EAA6B,EAAE,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,8BAAa,CAAC,EAC3F,8BAA8B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAClE,CAAA;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,WAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC5G,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;YAC9C,IAAI,eAAe,EAAE;gBACnB,MAAM,YAAY,GAAG,gCAAc,CAAC,KAAK,CAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,mCAAuB,EAAE,CAAC,CAAA;gBACzG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;gBAChD,OAAO,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5D;YACD,OAAO,EAAE,CAAA;QACX,CAAC;KAAA;IAEQ,OAAO;QACd,OAAO,CAAC,2CAA2B,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAC1D,CAAC;IAEe,SAAS;;;YACvB,MAAM,sBAAsB,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA;YACrD,IAAI,sBAAsB,EAAE;gBAC1B,MAAM,iBAAiB,GAA4B,sBAAsB;oBACvE,CAAC,CAAC,MAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAmC,CAAC,KAAK,EAAE,mCAAI,IAAI;oBAChH,CAAC,CAAC,IAAI,CAAA;gBACR,IAAI,iBAAiB,EAAE;oBACrB,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,oCAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;iBAC1E;aACF;YACD,OAAO,IAAI,CAAA;;KACZ;CACF;AAtCD,0DAsCC"}
|