@xyo-network/diviner-payload-memory 2.71.11 → 2.71.13

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.
@@ -3,25 +3,46 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MemoryPayloadDiviner = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const assert_1 = require("@xylabs/assert");
6
+ const core_1 = require("@xyo-network/core");
6
7
  const diviner_payload_abstract_1 = require("@xyo-network/diviner-payload-abstract");
7
8
  const diviner_payload_model_1 = require("@xyo-network/diviner-payload-model");
8
9
  class MemoryPayloadDiviner extends diviner_payload_abstract_1.PayloadDiviner {
9
10
  divineHandler(payloads) {
10
- var _a;
11
+ var _a, _b;
11
12
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
12
13
  const filter = (0, assert_1.assertEx)((_a = payloads === null || payloads === void 0 ? void 0 : payloads.filter(diviner_payload_model_1.isPayloadDivinerQueryPayload)) === null || _a === void 0 ? void 0 : _a.pop(), 'Missing query payload');
13
14
  if (!filter)
14
15
  return [];
15
16
  const archivist = (0, assert_1.assertEx)(yield this.readArchivist(), 'Unable to resolve archivist');
16
- const { schemas, limit, offset, order } = filter;
17
- let all = yield (0, assert_1.assertEx)(archivist.all, 'Archivist does not support "all"')();
18
- if (order === 'desc')
19
- all = all.reverse();
20
- if (schemas === null || schemas === void 0 ? void 0 : schemas.length)
21
- all = all.filter((bw) => schemas.includes(bw.schema));
22
- const parsedLimit = limit || all.length;
23
- const parsedOffset = offset || 0;
24
- return all.slice(parsedOffset, parsedLimit);
17
+ const { schemas, limit, offset, hash, order } = filter;
18
+ let all = yield ((_b = archivist.all) === null || _b === void 0 ? void 0 : _b.call(archivist));
19
+ if (all) {
20
+ if (order === 'desc')
21
+ all = all.reverse();
22
+ if (schemas === null || schemas === void 0 ? void 0 : schemas.length)
23
+ all = all.filter((bw) => schemas.includes(bw.schema));
24
+ const parsedLimit = limit || all.length;
25
+ const parsedOffset = offset || 0;
26
+ return parsedOffset
27
+ ? all.slice(parsedOffset, parsedLimit)
28
+ : (() => tslib_1.__awaiter(this, void 0, void 0, function* () {
29
+ const allPairs = yield Promise.all(all.map((payload) => tslib_1.__awaiter(this, void 0, void 0, function* () { return [yield core_1.PayloadHasher.hashAsync(payload), payload]; })));
30
+ if (hash) {
31
+ //remove all until found
32
+ while (allPairs.length > 0 && allPairs[0][0] !== hash) {
33
+ allPairs.shift();
34
+ }
35
+ //remove it if found
36
+ if (allPairs.length > 0 && allPairs[0][0] === hash) {
37
+ allPairs.shift();
38
+ }
39
+ }
40
+ return allPairs.map(([, payload]) => payload);
41
+ }))();
42
+ }
43
+ else {
44
+ throw Error('Archivist does not support "all"');
45
+ }
25
46
  });
26
47
  }
27
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryPayloadDiviner.js","sourceRoot":"","sources":["../../src/MemoryPayloadDiviner.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,oFAAsE;AACtE,8EAAmI;AAGnI,MAAa,oBAAkF,SAAQ,yCAAuB;IAGnG,aAAa,CAAC,QAAoB;;;YACzD,MAAM,MAAM,GAAG,IAAA,iBAAQ,EAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,oDAA4B,CAAC,0CAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAA;YACvG,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAA;YACtB,MAAM,SAAS,GAAG,IAAA,iBAAQ,EAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,6BAA6B,CAAC,CAAA;YACrF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;YAChD,IAAI,GAAG,GAAG,MAAM,IAAA,iBAAQ,EAAC,SAAS,CAAC,GAAG,EAAE,kCAAkC,CAAC,EAAE,CAAA;YAC7E,IAAI,KAAK,KAAK,MAAM;gBAAE,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;YACzC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;gBAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1E,MAAM,WAAW,GAAG,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA;YACvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,CAAA;YAChC,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;;KAC5C;;AAdH,oDAeC;AAdiB,kCAAa,GAAG,CAAC,kDAA0B,CAAC,CAAA"}
1
+ {"version":3,"file":"MemoryPayloadDiviner.js","sourceRoot":"","sources":["../../src/MemoryPayloadDiviner.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,4CAAiD;AACjD,oFAAsE;AACtE,8EAAmI;AAGnI,MAAa,oBAAkF,SAAQ,yCAAuB;IAGnG,aAAa,CAAC,QAAoB;;;YACzD,MAAM,MAAM,GAAG,IAAA,iBAAQ,EAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,oDAA4B,CAAC,0CAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAA;YACvG,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAA;YACtB,MAAM,SAAS,GAAG,IAAA,iBAAQ,EAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,6BAA6B,CAAC,CAAA;YACrF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;YACtD,IAAI,GAAG,GAAG,MAAM,CAAA,MAAA,SAAS,CAAC,GAAG,yDAAI,CAAA,CAAA;YACjC,IAAI,GAAG,EAAE;gBACP,IAAI,KAAK,KAAK,MAAM;oBAAE,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;gBACzC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;oBAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC1E,MAAM,WAAW,GAAG,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA;gBACvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,CAAA;gBAChC,OAAO,YAAY;oBACjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC;oBACtC,CAAC,CAAC,CAAC,GAAS,EAAE;wBACV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,GAAG,CAAC,GAAG,CAA6B,CAAO,OAAO,EAAE,EAAE,wDAAC,OAAA,CAAC,MAAM,oBAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA,GAAA,CAAC,CAC1G,CAAA;wBACD,IAAI,IAAI,EAAE;4BACR,wBAAwB;4BACxB,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gCACrD,QAAQ,CAAC,KAAK,EAAE,CAAA;6BACjB;4BACD,oBAAoB;4BACpB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gCAClD,QAAQ,CAAC,KAAK,EAAE,CAAA;6BACjB;yBACF;wBACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;oBAC/C,CAAC,CAAA,CAAC,EAAE,CAAA;aACT;iBAAM;gBACL,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAA;aAChD;;KACF;;AAnCH,oDAoCC;AAnCiB,kCAAa,GAAG,CAAC,kDAA0B,CAAC,CAAA"}
package/dist/docs.json CHANGED
@@ -3523,7 +3523,7 @@
3523
3523
  {
3524
3524
  "type": "reference",
3525
3525
  "target": {
3526
- "sourceFileName": "../../../../../archivist/packages/model/src/Archivist.ts",
3526
+ "sourceFileName": "../../../../../archivist/packages/model/src/ArchivistInstance.ts",
3527
3527
  "qualifiedName": "ArchivistInstance"
3528
3528
  },
3529
3529
  "name": "ArchivistInstance",
@@ -3756,7 +3756,7 @@
3756
3756
  {
3757
3757
  "type": "reference",
3758
3758
  "target": {
3759
- "sourceFileName": "../../../../../archivist/packages/model/src/Archivist.ts",
3759
+ "sourceFileName": "../../../../../archivist/packages/model/src/ArchivistInstance.ts",
3760
3760
  "qualifiedName": "ArchivistInstance"
3761
3761
  },
3762
3762
  "name": "ArchivistInstance",
@@ -3915,7 +3915,7 @@
3915
3915
  {
3916
3916
  "type": "reference",
3917
3917
  "target": {
3918
- "sourceFileName": "../../../../../archivist/packages/model/src/Archivist.ts",
3918
+ "sourceFileName": "../../../../../archivist/packages/model/src/ArchivistInstance.ts",
3919
3919
  "qualifiedName": "ArchivistInstance"
3920
3920
  },
3921
3921
  "name": "ArchivistInstance",
@@ -3948,9 +3948,9 @@
3948
3948
  "sources": [
3949
3949
  {
3950
3950
  "fileName": "modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts",
3951
- "line": 7,
3951
+ "line": 8,
3952
3952
  "character": 18,
3953
- "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/a75205b833475/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L7"
3953
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/9489f3a475c43/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L8"
3954
3954
  }
3955
3955
  ],
3956
3956
  "type": {
@@ -7549,9 +7549,9 @@
7549
7549
  "sources": [
7550
7550
  {
7551
7551
  "fileName": "modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts",
7552
- "line": 9,
7552
+ "line": 10,
7553
7553
  "character": 27,
7554
- "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/a75205b833475/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L9"
7554
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/9489f3a475c43/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L10"
7555
7555
  }
7556
7556
  ],
7557
7557
  "signatures": [
@@ -7564,9 +7564,9 @@
7564
7564
  "sources": [
7565
7565
  {
7566
7566
  "fileName": "modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts",
7567
- "line": 9,
7567
+ "line": 10,
7568
7568
  "character": 2,
7569
- "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/a75205b833475/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L9"
7569
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/9489f3a475c43/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L10"
7570
7570
  }
7571
7571
  ],
7572
7572
  "parameters": [
@@ -16195,9 +16195,9 @@
16195
16195
  "sources": [
16196
16196
  {
16197
16197
  "fileName": "modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts",
16198
- "line": 6,
16198
+ "line": 7,
16199
16199
  "character": 13,
16200
- "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/a75205b833475/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L6"
16200
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/blob/9489f3a475c43/packages/modules/packages/diviner/packages/payload/packages/memory/src/MemoryPayloadDiviner.ts#L7"
16201
16201
  }
16202
16202
  ],
16203
16203
  "typeParameters": [
@@ -1,4 +1,5 @@
1
1
  import { assertEx } from '@xylabs/assert';
2
+ import { PayloadHasher } from '@xyo-network/core';
2
3
  import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract';
3
4
  import { isPayloadDivinerQueryPayload, PayloadDivinerConfigSchema } from '@xyo-network/diviner-payload-model';
4
5
  export class MemoryPayloadDiviner extends PayloadDiviner {
@@ -8,15 +9,35 @@ export class MemoryPayloadDiviner extends PayloadDiviner {
8
9
  if (!filter)
9
10
  return [];
10
11
  const archivist = assertEx(await this.readArchivist(), 'Unable to resolve archivist');
11
- const { schemas, limit, offset, order } = filter;
12
- let all = await assertEx(archivist.all, 'Archivist does not support "all"')();
13
- if (order === 'desc')
14
- all = all.reverse();
15
- if (schemas?.length)
16
- all = all.filter((bw) => schemas.includes(bw.schema));
17
- const parsedLimit = limit || all.length;
18
- const parsedOffset = offset || 0;
19
- return all.slice(parsedOffset, parsedLimit);
12
+ const { schemas, limit, offset, hash, order } = filter;
13
+ let all = await archivist.all?.();
14
+ if (all) {
15
+ if (order === 'desc')
16
+ all = all.reverse();
17
+ if (schemas?.length)
18
+ all = all.filter((bw) => schemas.includes(bw.schema));
19
+ const parsedLimit = limit || all.length;
20
+ const parsedOffset = offset || 0;
21
+ return parsedOffset
22
+ ? all.slice(parsedOffset, parsedLimit)
23
+ : (async () => {
24
+ const allPairs = await Promise.all(all.map(async (payload) => [await PayloadHasher.hashAsync(payload), payload]));
25
+ if (hash) {
26
+ //remove all until found
27
+ while (allPairs.length > 0 && allPairs[0][0] !== hash) {
28
+ allPairs.shift();
29
+ }
30
+ //remove it if found
31
+ if (allPairs.length > 0 && allPairs[0][0] === hash) {
32
+ allPairs.shift();
33
+ }
34
+ }
35
+ return allPairs.map(([, payload]) => payload);
36
+ })();
37
+ }
38
+ else {
39
+ throw Error('Archivist does not support "all"');
40
+ }
20
41
  }
21
42
  }
22
43
  //# sourceMappingURL=MemoryPayloadDiviner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryPayloadDiviner.js","sourceRoot":"","sources":["../../src/MemoryPayloadDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAwB,MAAM,oCAAoC,CAAA;AAGnI,MAAM,OAAO,oBAAkF,SAAQ,cAAuB;IAC5H,MAAM,CAAU,aAAa,GAAG,CAAC,0BAA0B,CAAC,CAAA;IAEzC,KAAK,CAAC,aAAa,CAAC,QAAoB;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,4BAA4B,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAA;QACvG,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,6BAA6B,CAAC,CAAA;QACrF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QAChD,IAAI,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,kCAAkC,CAAC,EAAE,CAAA;QAC7E,IAAI,KAAK,KAAK,MAAM;YAAE,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;QACzC,IAAI,OAAO,EAAE,MAAM;YAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;QAC1E,MAAM,WAAW,GAAG,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA;QACvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,CAAA;QAChC,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAC7C,CAAC"}
1
+ {"version":3,"file":"MemoryPayloadDiviner.js","sourceRoot":"","sources":["../../src/MemoryPayloadDiviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAwB,MAAM,oCAAoC,CAAA;AAGnI,MAAM,OAAO,oBAAkF,SAAQ,cAAuB;IAC5H,MAAM,CAAU,aAAa,GAAG,CAAC,0BAA0B,CAAC,CAAA;IAEzC,KAAK,CAAC,aAAa,CAAC,QAAoB;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,4BAA4B,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAA;QACvG,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,6BAA6B,CAAC,CAAA;QACrF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QACtD,IAAI,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,CAAA;QACjC,IAAI,GAAG,EAAE;YACP,IAAI,KAAK,KAAK,MAAM;gBAAE,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;YACzC,IAAI,OAAO,EAAE,MAAM;gBAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;YAC1E,MAAM,WAAW,GAAG,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA;YACvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,CAAA;YAChC,OAAO,YAAY;gBACjB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC;gBACtC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,GAAG,CAAC,GAAG,CAA6B,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAC1G,CAAA;oBACD,IAAI,IAAI,EAAE;wBACR,wBAAwB;wBACxB,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;4BACrD,QAAQ,CAAC,KAAK,EAAE,CAAA;yBACjB;wBACD,oBAAoB;wBACpB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;4BAClD,QAAQ,CAAC,KAAK,EAAE,CAAA;yBACjB;qBACF;oBACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;gBAC/C,CAAC,CAAC,EAAE,CAAA;SACT;aAAM;YACL,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAA;SAChD;IACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryPayloadDiviner.d.ts","sourceRoot":"","sources":["../../src/MemoryPayloadDiviner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,EAA4D,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACnI,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,qBAAa,oBAAoB,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC5H,OAAgB,aAAa,yCAA+B;cAEnC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAYjF"}
1
+ {"version":3,"file":"MemoryPayloadDiviner.d.ts","sourceRoot":"","sources":["../../src/MemoryPayloadDiviner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,EAA4D,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACnI,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,qBAAa,oBAAoB,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC5H,OAAgB,aAAa,yCAA+B;cAEnC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAiCjF"}
package/package.json CHANGED
@@ -11,9 +11,10 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.9.3",
14
- "@xyo-network/diviner-payload-abstract": "~2.71.11",
15
- "@xyo-network/diviner-payload-model": "~2.71.11",
16
- "@xyo-network/payload-model": "~2.71.11"
14
+ "@xyo-network/core": "~2.71.13",
15
+ "@xyo-network/diviner-payload-abstract": "~2.71.13",
16
+ "@xyo-network/diviner-payload-model": "~2.71.13",
17
+ "@xyo-network/payload-model": "~2.71.13"
17
18
  },
18
19
  "devDependencies": {
19
20
  "@xylabs/ts-scripts-yarn3": "^2.19.0",
@@ -53,5 +54,5 @@
53
54
  },
54
55
  "sideEffects": false,
55
56
  "types": "dist/types/index.d.ts",
56
- "version": "2.71.11"
57
+ "version": "2.71.13"
57
58
  }
@@ -1,4 +1,5 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
+ import { PayloadHasher } from '@xyo-network/core'
2
3
  import { PayloadDiviner } from '@xyo-network/diviner-payload-abstract'
3
4
  import { isPayloadDivinerQueryPayload, PayloadDivinerConfigSchema, PayloadDivinerParams } from '@xyo-network/diviner-payload-model'
4
5
  import { Payload } from '@xyo-network/payload-model'
@@ -10,12 +11,33 @@ export class MemoryPayloadDiviner<TParams extends PayloadDivinerParams = Payload
10
11
  const filter = assertEx(payloads?.filter(isPayloadDivinerQueryPayload)?.pop(), 'Missing query payload')
11
12
  if (!filter) return []
12
13
  const archivist = assertEx(await this.readArchivist(), 'Unable to resolve archivist')
13
- const { schemas, limit, offset, order } = filter
14
- let all = await assertEx(archivist.all, 'Archivist does not support "all"')()
15
- if (order === 'desc') all = all.reverse()
16
- if (schemas?.length) all = all.filter((bw) => schemas.includes(bw.schema))
17
- const parsedLimit = limit || all.length
18
- const parsedOffset = offset || 0
19
- return all.slice(parsedOffset, parsedLimit)
14
+ const { schemas, limit, offset, hash, order } = filter
15
+ let all = await archivist.all?.()
16
+ if (all) {
17
+ if (order === 'desc') all = all.reverse()
18
+ if (schemas?.length) all = all.filter((bw) => schemas.includes(bw.schema))
19
+ const parsedLimit = limit || all.length
20
+ const parsedOffset = offset || 0
21
+ return parsedOffset
22
+ ? all.slice(parsedOffset, parsedLimit)
23
+ : (async () => {
24
+ const allPairs = await Promise.all(
25
+ all.map<Promise<[string, Payload]>>(async (payload) => [await PayloadHasher.hashAsync(payload), payload]),
26
+ )
27
+ if (hash) {
28
+ //remove all until found
29
+ while (allPairs.length > 0 && allPairs[0][0] !== hash) {
30
+ allPairs.shift()
31
+ }
32
+ //remove it if found
33
+ if (allPairs.length > 0 && allPairs[0][0] === hash) {
34
+ allPairs.shift()
35
+ }
36
+ }
37
+ return allPairs.map(([, payload]) => payload)
38
+ })()
39
+ } else {
40
+ throw Error('Archivist does not support "all"')
41
+ }
20
42
  }
21
43
  }