@xyo-network/archivist 2.22.6 → 2.22.9
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/XyoArchivist.d.ts +3 -3
- package/dist/cjs/XyoArchivist.js +1 -1
- package/dist/cjs/XyoArchivist.js.map +1 -1
- package/dist/cjs/XyoMemoryArchivist.d.ts +7 -6
- package/dist/cjs/XyoMemoryArchivist.js +28 -7
- package/dist/cjs/XyoMemoryArchivist.js.map +1 -1
- package/dist/cjs/model/Archivist.d.ts +3 -2
- package/dist/esm/XyoArchivist.d.ts +3 -3
- package/dist/esm/XyoArchivist.js +1 -1
- package/dist/esm/XyoArchivist.js.map +1 -1
- package/dist/esm/XyoMemoryArchivist.d.ts +7 -6
- package/dist/esm/XyoMemoryArchivist.js +22 -6
- package/dist/esm/XyoMemoryArchivist.js.map +1 -1
- package/dist/esm/model/Archivist.d.ts +3 -2
- package/package.json +5 -5
- package/src/XyoArchivist.ts +3 -3
- package/src/XyoMemoryArchivist.ts +29 -10
- package/src/model/Archivist.ts +3 -2
|
@@ -8,10 +8,10 @@ export declare abstract class XyoArchivistBase<T extends XyoPayload = XyoPayload
|
|
|
8
8
|
protected account?: XyoAccount;
|
|
9
9
|
constructor(parent?: XyoArchivist<T>, account?: XyoAccount);
|
|
10
10
|
abstract insert(payloads: T[]): T[] | Promise<T[]>;
|
|
11
|
-
abstract find(query: XyoPayloadFindQuery):
|
|
12
|
-
abstract get(hash: string): T | Promise<T |
|
|
11
|
+
abstract find<R extends T = T>(query: XyoPayloadFindQuery): R[] | Promise<R[]>;
|
|
12
|
+
abstract get(hash: string[]): (T | null)[] | Promise<(T | null)[]>;
|
|
13
13
|
all(): T[] | Promise<T[]>;
|
|
14
|
-
delete(
|
|
14
|
+
delete(_hashes: string[]): boolean[] | Promise<boolean[]>;
|
|
15
15
|
clear(): void | Promise<void>;
|
|
16
16
|
commit(): void;
|
|
17
17
|
}
|
package/dist/cjs/XyoArchivist.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../src/XyoArchivist.ts"],"names":[],"mappings":";;;AAQA,MAAsB,gBAAgB;IAGpC,YAAY,MAAwB,EAAE,OAAoB;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAKM,GAAG;QACR,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IACM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../src/XyoArchivist.ts"],"names":[],"mappings":";;;AAQA,MAAsB,gBAAgB;IAGpC,YAAY,MAAwB,EAAE,OAAoB;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAKM,GAAG;QACR,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IACM,MAAM,CAAC,OAAiB;QAC7B,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IACM,KAAK;QACV,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpC,CAAC;IACM,MAAM;QACX,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;CACF;AAvBD,4CAuBC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { XyoPayload } from '@xyo-network/payload';
|
|
2
2
|
import { XyoArchivistBase } from './XyoArchivist';
|
|
3
|
-
import {
|
|
4
|
-
export declare class XyoMemoryArchivist
|
|
3
|
+
import { XyoPayloadFindQuery } from './XyoPayloadFindFilter';
|
|
4
|
+
export declare class XyoMemoryArchivist extends XyoArchivistBase<XyoPayload> {
|
|
5
5
|
private cache;
|
|
6
|
-
delete(
|
|
6
|
+
delete(hashes: string[]): boolean[] | Promise<boolean[]>;
|
|
7
7
|
clear(): void | Promise<void>;
|
|
8
|
-
get(
|
|
9
|
-
insert(payloads:
|
|
10
|
-
find<R extends
|
|
8
|
+
get(hashes: string[]): Promise<(XyoPayload | null)[]>;
|
|
9
|
+
insert(payloads: XyoPayload[]): XyoPayload[] | Promise<XyoPayload[]>;
|
|
10
|
+
find<R extends XyoPayload = XyoPayload>(query: XyoPayloadFindQuery): R[] | Promise<R[]>;
|
|
11
|
+
commit(): Promise<import("@xyo-network/payload").XyoPayloadBase[] | undefined>;
|
|
11
12
|
}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.XyoMemoryArchivist = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const sdk_js_1 = require("@xylabs/sdk-js");
|
|
6
|
+
const boundwitness_1 = require("@xyo-network/boundwitness");
|
|
5
7
|
const payload_1 = require("@xyo-network/payload");
|
|
6
8
|
const lru_cache_1 = tslib_1.__importDefault(require("lru-cache"));
|
|
7
9
|
const XyoArchivist_1 = require("./XyoArchivist");
|
|
@@ -10,15 +12,21 @@ class XyoMemoryArchivist extends XyoArchivist_1.XyoArchivistBase {
|
|
|
10
12
|
super(...arguments);
|
|
11
13
|
this.cache = new lru_cache_1.default({ max: 10000 });
|
|
12
14
|
}
|
|
13
|
-
delete(
|
|
14
|
-
return
|
|
15
|
+
delete(hashes) {
|
|
16
|
+
return hashes.map((hash) => {
|
|
17
|
+
return this.cache.delete(hash);
|
|
18
|
+
});
|
|
15
19
|
}
|
|
16
20
|
clear() {
|
|
17
21
|
this.cache.clear();
|
|
18
22
|
}
|
|
19
|
-
get(
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
get(hashes) {
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return yield Promise.all(hashes.map((hash) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
var _a, _b, _c, _d;
|
|
27
|
+
return (_d = (_a = this.cache.get(hash)) !== null && _a !== void 0 ? _a : (_c = (yield ((_b = this.parent) === null || _b === void 0 ? void 0 : _b.get([hash])))) === null || _c === void 0 ? void 0 : _c.pop()) !== null && _d !== void 0 ? _d : null;
|
|
28
|
+
})));
|
|
29
|
+
});
|
|
22
30
|
}
|
|
23
31
|
insert(payloads) {
|
|
24
32
|
return payloads.map((payload) => {
|
|
@@ -28,15 +36,28 @@ class XyoMemoryArchivist extends XyoArchivist_1.XyoArchivistBase {
|
|
|
28
36
|
return payloadWithmeta;
|
|
29
37
|
});
|
|
30
38
|
}
|
|
31
|
-
find(
|
|
39
|
+
find(query) {
|
|
32
40
|
const result = [];
|
|
33
41
|
this.cache.forEach((value) => {
|
|
34
|
-
if (value.schema === filter.schema) {
|
|
42
|
+
if (value.schema === query.filter.schema) {
|
|
35
43
|
result.push(value);
|
|
36
44
|
}
|
|
37
45
|
});
|
|
38
46
|
return result;
|
|
39
47
|
}
|
|
48
|
+
commit() {
|
|
49
|
+
var _a;
|
|
50
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const parent = (0, sdk_js_1.assertEx)(this.parent, 'Parent is required for commit');
|
|
52
|
+
const account = (0, sdk_js_1.assertEx)(this.account, 'Account is required for commit');
|
|
53
|
+
const payloads = (0, sdk_js_1.assertEx)(yield this.all(), 'Nothing to commit');
|
|
54
|
+
const builder = new boundwitness_1.XyoBoundWitnessBuilder();
|
|
55
|
+
const block = builder.payloads(payloads).witness(account).build();
|
|
56
|
+
const result = yield ((_a = parent.insert) === null || _a === void 0 ? void 0 : _a.call(parent, payloads.concat([block])));
|
|
57
|
+
yield this.clear();
|
|
58
|
+
return result;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
40
61
|
}
|
|
41
62
|
exports.XyoMemoryArchivist = XyoMemoryArchivist;
|
|
42
63
|
//# sourceMappingURL=XyoMemoryArchivist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":";;;;AAAA,kDAAoE;AACpE,kEAAgC;AAEhC,iDAAiD;AAGjD,MAAa,
|
|
1
|
+
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,4DAAmF;AACnF,kDAAoE;AACpE,kEAAgC;AAEhC,iDAAiD;AAGjD,MAAa,kBAAmB,SAAQ,+BAA4B;IAApE;;QACU,UAAK,GAAG,IAAI,mBAAQ,CAAqB,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAiDlE,CAAC;IA/CQ,MAAM,CAAC,MAAgB;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAEY,GAAG,CAAC,MAAgB;;YAC/B,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,MAAM,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;;gBACxB,OAAO,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,MAAA,CAAC,MAAM,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC,0CAAE,GAAG,EAAE,mCAAI,IAAI,CAAA;YAChF,CAAC,CAAA,CAAC,CACH,CAAA;QACH,CAAC;KAAA;IAEM,MAAM,CAAC,QAAsB;QAClC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,IAAI,2BAAiB,CAAC,OAAO,CAAC,CAAA;YAC9C,MAAM,eAAe,mCAAQ,OAAO,KAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAE,CAAA;YACnF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;YACtD,OAAO,eAAe,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,IAAI,CAAoC,KAA0B;QACvE,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;gBACxC,MAAM,CAAC,IAAI,CAAC,KAAU,CAAC,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAEY,MAAM;;;YACjB,MAAM,MAAM,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAA;YACrE,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAA;YACxE,MAAM,QAAQ,GAAG,IAAA,iBAAQ,EAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAA;YAChE,MAAM,OAAO,GAAG,IAAI,qCAAsB,EAA+B,CAAA;YACzE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;YACjE,MAAM,MAAM,GAAG,MAAM,CAAA,MAAA,MAAM,CAAC,MAAM,uDAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA;YAC9D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,OAAO,MAAM,CAAA;;KACd;CACF;AAlDD,gDAkDC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export interface Archivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TQueryResponse = TReadResponse, TQuery = unknown, TId = string> {
|
|
2
|
-
get(
|
|
2
|
+
get(ids: TId[]): Promise<(TReadResponse | null)[]> | (TReadResponse | null)[];
|
|
3
|
+
all?(): Promise<TReadResponse[]> | TReadResponse[];
|
|
3
4
|
find?(query: TQuery): Promise<TQueryResponse[]> | TQueryResponse[];
|
|
4
5
|
insert?(item: TWrite[]): Promise<TWriteResponse[]> | TWriteResponse[];
|
|
5
|
-
delete?(
|
|
6
|
+
delete?(ids: TId[]): Promise<boolean[]> | boolean[];
|
|
6
7
|
clear?(): void;
|
|
7
8
|
}
|
|
@@ -8,10 +8,10 @@ export declare abstract class XyoArchivistBase<T extends XyoPayload = XyoPayload
|
|
|
8
8
|
protected account?: XyoAccount;
|
|
9
9
|
constructor(parent?: XyoArchivist<T>, account?: XyoAccount);
|
|
10
10
|
abstract insert(payloads: T[]): T[] | Promise<T[]>;
|
|
11
|
-
abstract find(query: XyoPayloadFindQuery):
|
|
12
|
-
abstract get(hash: string): T | Promise<T |
|
|
11
|
+
abstract find<R extends T = T>(query: XyoPayloadFindQuery): R[] | Promise<R[]>;
|
|
12
|
+
abstract get(hash: string[]): (T | null)[] | Promise<(T | null)[]>;
|
|
13
13
|
all(): T[] | Promise<T[]>;
|
|
14
|
-
delete(
|
|
14
|
+
delete(_hashes: string[]): boolean[] | Promise<boolean[]>;
|
|
15
15
|
clear(): void | Promise<void>;
|
|
16
16
|
commit(): void;
|
|
17
17
|
}
|
package/dist/esm/XyoArchivist.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../src/XyoArchivist.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,gBAAgB;IAGpC,YAAY,MAAwB,EAAE,OAAoB;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAKM,GAAG;QACR,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IACM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../src/XyoArchivist.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,gBAAgB;IAGpC,YAAY,MAAwB,EAAE,OAAoB;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAKM,GAAG;QACR,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IACM,MAAM,CAAC,OAAiB;QAC7B,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IACM,KAAK;QACV,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpC,CAAC;IACM,MAAM;QACX,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;CACF"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { XyoPayload } from '@xyo-network/payload';
|
|
2
2
|
import { XyoArchivistBase } from './XyoArchivist';
|
|
3
|
-
import {
|
|
4
|
-
export declare class XyoMemoryArchivist
|
|
3
|
+
import { XyoPayloadFindQuery } from './XyoPayloadFindFilter';
|
|
4
|
+
export declare class XyoMemoryArchivist extends XyoArchivistBase<XyoPayload> {
|
|
5
5
|
private cache;
|
|
6
|
-
delete(
|
|
6
|
+
delete(hashes: string[]): boolean[] | Promise<boolean[]>;
|
|
7
7
|
clear(): void | Promise<void>;
|
|
8
|
-
get(
|
|
9
|
-
insert(payloads:
|
|
10
|
-
find<R extends
|
|
8
|
+
get(hashes: string[]): Promise<(XyoPayload | null)[]>;
|
|
9
|
+
insert(payloads: XyoPayload[]): XyoPayload[] | Promise<XyoPayload[]>;
|
|
10
|
+
find<R extends XyoPayload = XyoPayload>(query: XyoPayloadFindQuery): R[] | Promise<R[]>;
|
|
11
|
+
commit(): Promise<import("@xyo-network/payload").XyoPayloadBase[] | undefined>;
|
|
11
12
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/sdk-js';
|
|
2
|
+
import { XyoBoundWitnessBuilder } from '@xyo-network/boundwitness';
|
|
1
3
|
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
|
2
4
|
import LruCache from 'lru-cache';
|
|
3
5
|
import { XyoArchivistBase } from './XyoArchivist';
|
|
@@ -6,14 +8,18 @@ export class XyoMemoryArchivist extends XyoArchivistBase {
|
|
|
6
8
|
super(...arguments);
|
|
7
9
|
this.cache = new LruCache({ max: 10000 });
|
|
8
10
|
}
|
|
9
|
-
delete(
|
|
10
|
-
return
|
|
11
|
+
delete(hashes) {
|
|
12
|
+
return hashes.map((hash) => {
|
|
13
|
+
return this.cache.delete(hash);
|
|
14
|
+
});
|
|
11
15
|
}
|
|
12
16
|
clear() {
|
|
13
17
|
this.cache.clear();
|
|
14
18
|
}
|
|
15
|
-
get(
|
|
16
|
-
return
|
|
19
|
+
async get(hashes) {
|
|
20
|
+
return await Promise.all(hashes.map(async (hash) => {
|
|
21
|
+
return this.cache.get(hash) ?? (await this.parent?.get([hash]))?.pop() ?? null;
|
|
22
|
+
}));
|
|
17
23
|
}
|
|
18
24
|
insert(payloads) {
|
|
19
25
|
return payloads.map((payload) => {
|
|
@@ -23,14 +29,24 @@ export class XyoMemoryArchivist extends XyoArchivistBase {
|
|
|
23
29
|
return payloadWithmeta;
|
|
24
30
|
});
|
|
25
31
|
}
|
|
26
|
-
find(
|
|
32
|
+
find(query) {
|
|
27
33
|
const result = [];
|
|
28
34
|
this.cache.forEach((value) => {
|
|
29
|
-
if (value.schema === filter.schema) {
|
|
35
|
+
if (value.schema === query.filter.schema) {
|
|
30
36
|
result.push(value);
|
|
31
37
|
}
|
|
32
38
|
});
|
|
33
39
|
return result;
|
|
34
40
|
}
|
|
41
|
+
async commit() {
|
|
42
|
+
const parent = assertEx(this.parent, 'Parent is required for commit');
|
|
43
|
+
const account = assertEx(this.account, 'Account is required for commit');
|
|
44
|
+
const payloads = assertEx(await this.all(), 'Nothing to commit');
|
|
45
|
+
const builder = new XyoBoundWitnessBuilder();
|
|
46
|
+
const block = builder.payloads(payloads).witness(account).build();
|
|
47
|
+
const result = await parent.insert?.(payloads.concat([block]));
|
|
48
|
+
await this.clear();
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
35
51
|
}
|
|
36
52
|
//# sourceMappingURL=XyoMemoryArchivist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGjD,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export interface Archivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TQueryResponse = TReadResponse, TQuery = unknown, TId = string> {
|
|
2
|
-
get(
|
|
2
|
+
get(ids: TId[]): Promise<(TReadResponse | null)[]> | (TReadResponse | null)[];
|
|
3
|
+
all?(): Promise<TReadResponse[]> | TReadResponse[];
|
|
3
4
|
find?(query: TQuery): Promise<TQueryResponse[]> | TQueryResponse[];
|
|
4
5
|
insert?(item: TWrite[]): Promise<TWriteResponse[]> | TWriteResponse[];
|
|
5
|
-
delete?(
|
|
6
|
+
delete?(ids: TId[]): Promise<boolean[]> | boolean[];
|
|
6
7
|
clear?(): void;
|
|
7
8
|
}
|
package/package.json
CHANGED
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@xylabs/sdk-js": "^2.6.2",
|
|
13
|
-
"@xyo-network/account": "^2.22.
|
|
14
|
-
"@xyo-network/boundwitness": "^2.22.
|
|
15
|
-
"@xyo-network/core": "^2.22.
|
|
16
|
-
"@xyo-network/payload": "^2.22.
|
|
13
|
+
"@xyo-network/account": "^2.22.9",
|
|
14
|
+
"@xyo-network/boundwitness": "^2.22.9",
|
|
15
|
+
"@xyo-network/core": "^2.22.9",
|
|
16
|
+
"@xyo-network/payload": "^2.22.9",
|
|
17
17
|
"axios": "^0.27.2",
|
|
18
18
|
"lru-cache": "^7.13.1",
|
|
19
19
|
"pako": "^2.0.4"
|
|
@@ -56,6 +56,6 @@
|
|
|
56
56
|
},
|
|
57
57
|
"sideEffects": true,
|
|
58
58
|
"types": "dist/esm/index.d.ts",
|
|
59
|
-
"version": "2.22.
|
|
59
|
+
"version": "2.22.9",
|
|
60
60
|
"packageManager": "yarn@3.1.1"
|
|
61
61
|
}
|
package/src/XyoArchivist.ts
CHANGED
|
@@ -15,12 +15,12 @@ export abstract class XyoArchivistBase<T extends XyoPayload = XyoPayload> implem
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
abstract insert(payloads: T[]): T[] | Promise<T[]>
|
|
18
|
-
abstract find(query: XyoPayloadFindQuery):
|
|
19
|
-
abstract get(hash: string): T | Promise<T |
|
|
18
|
+
abstract find<R extends T = T>(query: XyoPayloadFindQuery): R[] | Promise<R[]>
|
|
19
|
+
abstract get(hash: string[]): (T | null)[] | Promise<(T | null)[]>
|
|
20
20
|
public all(): T[] | Promise<T[]> {
|
|
21
21
|
throw Error('getAll not supported')
|
|
22
22
|
}
|
|
23
|
-
public delete(
|
|
23
|
+
public delete(_hashes: string[]): boolean[] | Promise<boolean[]> {
|
|
24
24
|
throw Error('delete not supported')
|
|
25
25
|
}
|
|
26
26
|
public clear(): void | Promise<void> {
|
|
@@ -1,25 +1,33 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/sdk-js'
|
|
2
|
+
import { XyoBoundWitness, XyoBoundWitnessBuilder } from '@xyo-network/boundwitness'
|
|
1
3
|
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
|
2
4
|
import LruCache from 'lru-cache'
|
|
3
5
|
|
|
4
6
|
import { XyoArchivistBase } from './XyoArchivist'
|
|
5
|
-
import {
|
|
7
|
+
import { XyoPayloadFindQuery } from './XyoPayloadFindFilter'
|
|
6
8
|
|
|
7
|
-
export class XyoMemoryArchivist
|
|
8
|
-
private cache = new LruCache<string,
|
|
9
|
+
export class XyoMemoryArchivist extends XyoArchivistBase<XyoPayload> {
|
|
10
|
+
private cache = new LruCache<string, XyoPayload>({ max: 10000 })
|
|
9
11
|
|
|
10
|
-
public delete(
|
|
11
|
-
return
|
|
12
|
+
public delete(hashes: string[]): boolean[] | Promise<boolean[]> {
|
|
13
|
+
return hashes.map((hash) => {
|
|
14
|
+
return this.cache.delete(hash)
|
|
15
|
+
})
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
public clear(): void | Promise<void> {
|
|
15
19
|
this.cache.clear()
|
|
16
20
|
}
|
|
17
21
|
|
|
18
|
-
public get(
|
|
19
|
-
return
|
|
22
|
+
public async get(hashes: string[]): Promise<(XyoPayload | null)[]> {
|
|
23
|
+
return await Promise.all(
|
|
24
|
+
hashes.map(async (hash) => {
|
|
25
|
+
return this.cache.get(hash) ?? (await this.parent?.get([hash]))?.pop() ?? null
|
|
26
|
+
})
|
|
27
|
+
)
|
|
20
28
|
}
|
|
21
29
|
|
|
22
|
-
public insert(payloads:
|
|
30
|
+
public insert(payloads: XyoPayload[]): XyoPayload[] | Promise<XyoPayload[]> {
|
|
23
31
|
return payloads.map((payload) => {
|
|
24
32
|
const wrapper = new XyoPayloadWrapper(payload)
|
|
25
33
|
const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() }
|
|
@@ -28,13 +36,24 @@ export class XyoMemoryArchivist<T extends XyoPayload = XyoPayload> extends XyoAr
|
|
|
28
36
|
})
|
|
29
37
|
}
|
|
30
38
|
|
|
31
|
-
public find<R extends
|
|
39
|
+
public find<R extends XyoPayload = XyoPayload>(query: XyoPayloadFindQuery): R[] | Promise<R[]> {
|
|
32
40
|
const result: R[] = []
|
|
33
41
|
this.cache.forEach((value) => {
|
|
34
|
-
if (value.schema === filter.schema) {
|
|
42
|
+
if (value.schema === query.filter.schema) {
|
|
35
43
|
result.push(value as R)
|
|
36
44
|
}
|
|
37
45
|
})
|
|
38
46
|
return result
|
|
39
47
|
}
|
|
48
|
+
|
|
49
|
+
public async commit() {
|
|
50
|
+
const parent = assertEx(this.parent, 'Parent is required for commit')
|
|
51
|
+
const account = assertEx(this.account, 'Account is required for commit')
|
|
52
|
+
const payloads = assertEx(await this.all(), 'Nothing to commit')
|
|
53
|
+
const builder = new XyoBoundWitnessBuilder<XyoBoundWitness, XyoPayload>()
|
|
54
|
+
const block = builder.payloads(payloads).witness(account).build()
|
|
55
|
+
const result = await parent.insert?.(payloads.concat([block]))
|
|
56
|
+
await this.clear()
|
|
57
|
+
return result
|
|
58
|
+
}
|
|
40
59
|
}
|
package/src/model/Archivist.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export interface Archivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TQueryResponse = TReadResponse, TQuery = unknown, TId = string> {
|
|
2
|
-
get(
|
|
2
|
+
get(ids: TId[]): Promise<(TReadResponse | null)[]> | (TReadResponse | null)[]
|
|
3
|
+
all?(): Promise<TReadResponse[]> | TReadResponse[]
|
|
3
4
|
find?(query: TQuery): Promise<TQueryResponse[]> | TQueryResponse[]
|
|
4
5
|
insert?(item: TWrite[]): Promise<TWriteResponse[]> | TWriteResponse[]
|
|
5
|
-
delete?(
|
|
6
|
+
delete?(ids: TId[]): Promise<boolean[]> | boolean[]
|
|
6
7
|
clear?(): void
|
|
7
8
|
}
|