@xyo-network/archivist 2.22.3 → 2.22.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/XyoArchivist.d.ts +9 -8
- package/dist/cjs/XyoArchivist.js +3 -3
- package/dist/cjs/XyoArchivist.js.map +1 -1
- package/dist/cjs/XyoBoundWitnessMemoryArchivist.d.ts +2 -2
- package/dist/cjs/XyoBoundWitnessMemoryArchivist.js +7 -1
- package/dist/cjs/XyoBoundWitnessMemoryArchivist.js.map +1 -1
- package/dist/cjs/XyoMemoryArchivist.d.ts +7 -7
- package/dist/cjs/XyoMemoryArchivist.js +17 -10
- package/dist/cjs/XyoMemoryArchivist.js.map +1 -1
- package/dist/cjs/XyoPayloadFindFilter.d.ts +4 -1
- package/dist/cjs/index.d.ts +0 -2
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model/Archivist.d.ts +3 -3
- package/dist/esm/XyoArchivist.d.ts +9 -8
- package/dist/esm/XyoArchivist.js +1 -1
- package/dist/esm/XyoArchivist.js.map +1 -1
- package/dist/esm/XyoBoundWitnessArchivist.js +0 -1
- package/dist/esm/XyoBoundWitnessArchivist.js.map +1 -1
- package/dist/esm/XyoBoundWitnessMemoryArchivist.d.ts +3 -3
- package/dist/esm/XyoBoundWitnessMemoryArchivist.js +7 -1
- package/dist/esm/XyoBoundWitnessMemoryArchivist.js.map +1 -1
- package/dist/esm/XyoMemoryArchivist.d.ts +7 -7
- package/dist/esm/XyoMemoryArchivist.js +17 -10
- package/dist/esm/XyoMemoryArchivist.js.map +1 -1
- package/dist/esm/XyoPayloadFindFilter.d.ts +4 -1
- package/dist/esm/index.d.ts +0 -2
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model/Archivist.d.ts +3 -3
- package/package.json +5 -5
- package/src/XyoArchivist.ts +11 -10
- package/src/XyoMemoryArchivist.ts +22 -15
- package/src/XyoPayloadFindFilter.ts +6 -1
- package/src/index.ts +0 -2
- package/src/model/Archivist.ts +3 -3
- package/src/XyoBoundWitnessArchivist.ts +0 -21
- package/src/XyoBoundWitnessMemoryArchivist.ts +0 -45
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { XyoAccount } from '@xyo-network/account';
|
|
2
2
|
import { XyoPayload } from '@xyo-network/payload';
|
|
3
3
|
import { Archivist } from './model';
|
|
4
|
-
import {
|
|
5
|
-
export declare
|
|
6
|
-
|
|
4
|
+
import { XyoPayloadFindQuery } from './XyoPayloadFindFilter';
|
|
5
|
+
export declare type XyoArchivist<T extends XyoPayload = XyoPayload> = Archivist<T, T, T, T, XyoPayloadFindQuery>;
|
|
6
|
+
export declare abstract class XyoArchivistBase<T extends XyoPayload = XyoPayload> implements XyoArchivist<T> {
|
|
7
|
+
protected parent?: XyoArchivist<T>;
|
|
7
8
|
protected account?: XyoAccount;
|
|
8
|
-
constructor(parent?: XyoArchivist<
|
|
9
|
-
abstract insert(
|
|
10
|
-
abstract find(query:
|
|
11
|
-
abstract get(hash: string):
|
|
12
|
-
all():
|
|
9
|
+
constructor(parent?: XyoArchivist<T>, account?: XyoAccount);
|
|
10
|
+
abstract insert(payloads: T[]): T[] | Promise<T[]>;
|
|
11
|
+
abstract find(query: XyoPayloadFindQuery): T[] | Promise<T[]>;
|
|
12
|
+
abstract get(hash: string): T | Promise<T | undefined> | undefined;
|
|
13
|
+
all(): T[] | Promise<T[]>;
|
|
13
14
|
delete(_hash: string): boolean | Promise<boolean>;
|
|
14
15
|
clear(): void | Promise<void>;
|
|
15
16
|
commit(): void;
|
package/dist/cjs/XyoArchivist.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
class
|
|
3
|
+
exports.XyoArchivistBase = void 0;
|
|
4
|
+
class XyoArchivistBase {
|
|
5
5
|
constructor(parent, account) {
|
|
6
6
|
this.parent = parent;
|
|
7
7
|
this.account = account;
|
|
@@ -19,5 +19,5 @@ class XyoArchivist {
|
|
|
19
19
|
throw Error('commit not supported');
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
exports.
|
|
22
|
+
exports.XyoArchivistBase = XyoArchivistBase;
|
|
23
23
|
//# sourceMappingURL=XyoArchivist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../src/XyoArchivist.ts"],"names":[],"mappings":";;;
|
|
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,KAAa;QACzB,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,5 +1,5 @@
|
|
|
1
1
|
import { XyoBoundWitness, XyoBoundWitnessWithMeta } from '@xyo-network/boundwitness';
|
|
2
|
-
import {
|
|
2
|
+
import { XyoPayloadWithMeta } from '@xyo-network/payload';
|
|
3
3
|
import { XyoBoundWitnessArchivist } from './XyoBoundWitnessArchivist';
|
|
4
4
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
|
|
5
5
|
export declare class XyoBoundWitnessMemoryArchivist<TRead extends XyoPayloadWithMeta = XyoPayloadWithMeta, TWrite extends XyoBoundWitnessWithMeta<XyoBoundWitness, TRead> & TRead = XyoBoundWitnessWithMeta<XyoBoundWitness, TRead> & TRead> extends XyoBoundWitnessArchivist<TRead, TWrite> {
|
|
@@ -8,5 +8,5 @@ export declare class XyoBoundWitnessMemoryArchivist<TRead extends XyoPayloadWith
|
|
|
8
8
|
clear(): void;
|
|
9
9
|
get(hash: string): TRead[] | Promise<TRead[] | undefined> | undefined;
|
|
10
10
|
insert(boundWitness: TWrite): string[];
|
|
11
|
-
find<T extends
|
|
11
|
+
find<T extends TRead = TRead>(filter: XyoPayloadFindFilter): T[];
|
|
12
12
|
}
|
|
@@ -38,7 +38,13 @@ class XyoBoundWitnessMemoryArchivist extends XyoBoundWitnessArchivist_1.XyoBound
|
|
|
38
38
|
return hashes;
|
|
39
39
|
}
|
|
40
40
|
find(filter) {
|
|
41
|
-
|
|
41
|
+
const result = [];
|
|
42
|
+
this.cache.forEach((value) => {
|
|
43
|
+
if (value.schema === filter.schema) {
|
|
44
|
+
result.push(value);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return result;
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
exports.XyoBoundWitnessMemoryArchivist = XyoBoundWitnessMemoryArchivist;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoBoundWitnessMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoBoundWitnessMemoryArchivist.ts"],"names":[],"mappings":";;;;AAAA,4DAA4G;AAC5G,
|
|
1
|
+
{"version":3,"file":"XyoBoundWitnessMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoBoundWitnessMemoryArchivist.ts"],"names":[],"mappings":";;;;AAAA,4DAA4G;AAC5G,kDAA4E;AAC5E,kEAAgC;AAEhC,yEAAqE;AAGrE,MAAa,8BAGX,SAAQ,mDAAuC;IAHjD;;QAIU,UAAK,GAAG,IAAI,mBAAQ,CAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAuC7D,CAAC;IArCQ,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAEM,GAAG,CAAC,IAAY;;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;IAEM,MAAM,CAAC,YAAoB;;QAChC,MAAM,OAAO,GAAG,IAAI,qCAAsB,CAAC,YAAY,CAAC,CAAA;QACxD,MAAM,oBAAoB,mCAAQ,YAAY,KAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAE,CAAA;QAC7F,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;QAChE,MAAA,YAAY,CAAC,SAAS,0CAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAI,2BAAiB,CAAC,OAAO,CAAC,CAAA;YAC9C,MAAM,eAAe,mCAAe,OAAO,KAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAE,CAAA;YAC1F,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,IAAI,CAA0B,MAA4B;QAC/D,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,KAAU,CAAC,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA3CD,wEA2CC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { XyoPayload } from '@xyo-network/payload';
|
|
2
|
-
import {
|
|
2
|
+
import { XyoArchivistBase } from './XyoArchivist';
|
|
3
3
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
|
|
4
|
-
export declare class XyoMemoryArchivist<
|
|
4
|
+
export declare class XyoMemoryArchivist<T extends XyoPayload = XyoPayload> extends XyoArchivistBase<T> {
|
|
5
5
|
private cache;
|
|
6
|
-
delete(hash: string): boolean
|
|
7
|
-
clear(): void
|
|
8
|
-
get(hash: string):
|
|
9
|
-
insert(
|
|
10
|
-
find<
|
|
6
|
+
delete(hash: string): boolean | Promise<boolean>;
|
|
7
|
+
clear(): void | Promise<void>;
|
|
8
|
+
get(hash: string): T | Promise<T | undefined> | undefined;
|
|
9
|
+
insert(payloads: T[]): T[] | Promise<T[]>;
|
|
10
|
+
find<R extends T = T>(filter: XyoPayloadFindFilter): T[] | Promise<T[]>;
|
|
11
11
|
}
|
|
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const payload_1 = require("@xyo-network/payload");
|
|
6
6
|
const lru_cache_1 = tslib_1.__importDefault(require("lru-cache"));
|
|
7
7
|
const XyoArchivist_1 = require("./XyoArchivist");
|
|
8
|
-
class XyoMemoryArchivist extends XyoArchivist_1.
|
|
8
|
+
class XyoMemoryArchivist extends XyoArchivist_1.XyoArchivistBase {
|
|
9
9
|
constructor() {
|
|
10
10
|
super(...arguments);
|
|
11
11
|
this.cache = new lru_cache_1.default({ max: 10000 });
|
|
@@ -17,18 +17,25 @@ class XyoMemoryArchivist extends XyoArchivist_1.XyoArchivist {
|
|
|
17
17
|
this.cache.clear();
|
|
18
18
|
}
|
|
19
19
|
get(hash) {
|
|
20
|
-
var _a;
|
|
21
|
-
|
|
22
|
-
return localResult ? [localResult] : (_a = this.parent) === null || _a === void 0 ? void 0 : _a.get(hash);
|
|
20
|
+
var _a, _b;
|
|
21
|
+
return (_a = this.cache.get(hash)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.get(hash);
|
|
23
22
|
}
|
|
24
|
-
insert(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
insert(payloads) {
|
|
24
|
+
return payloads.map((payload) => {
|
|
25
|
+
const wrapper = new payload_1.XyoPayloadWrapper(payload);
|
|
26
|
+
const payloadWithmeta = Object.assign(Object.assign({}, payload), { _hash: wrapper.hash, _timestamp: Date.now() });
|
|
27
|
+
this.cache.set(payloadWithmeta._hash, payloadWithmeta);
|
|
28
|
+
return payloadWithmeta;
|
|
29
|
+
});
|
|
29
30
|
}
|
|
30
31
|
find(filter) {
|
|
31
|
-
|
|
32
|
+
const result = [];
|
|
33
|
+
this.cache.forEach((value) => {
|
|
34
|
+
if (value.schema === filter.schema) {
|
|
35
|
+
result.push(value);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return result;
|
|
32
39
|
}
|
|
33
40
|
}
|
|
34
41
|
exports.XyoMemoryArchivist = XyoMemoryArchivist;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":";;;;AAAA,kDAAoE;AACpE,kEAAgC;AAEhC,
|
|
1
|
+
{"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoMemoryArchivist.ts"],"names":[],"mappings":";;;;AAAA,kDAAoE;AACpE,kEAAgC;AAEhC,iDAAiD;AAGjD,MAAa,kBAAsD,SAAQ,+BAAmB;IAA9F;;QACU,UAAK,GAAG,IAAI,mBAAQ,CAAY,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAgCzD,CAAC;IA9BQ,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAEM,GAAG,CAAC,IAAY;;QACrB,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IAEM,MAAM,CAAC,QAAa;QACzB,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,CAAkB,MAA4B;QACvD,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,KAAU,CAAC,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAjCD,gDAiCC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload';
|
|
1
2
|
export interface XyoPayloadFindFilter {
|
|
2
|
-
[key: string]: unknown;
|
|
3
3
|
order?: 'desc' | 'asc';
|
|
4
4
|
timestamp?: number;
|
|
5
5
|
limit?: number;
|
|
6
6
|
schema?: string;
|
|
7
7
|
}
|
|
8
|
+
export declare type XyoPayloadFindQuery = XyoQueryPayload<{
|
|
9
|
+
filter: XyoPayloadFindFilter;
|
|
10
|
+
}>;
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./model"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./XyoArchivist"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./XyoBoundWitnessArchivist"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./XyoBoundWitnessMemoryArchivist"), exports);
|
|
8
6
|
tslib_1.__exportStar(require("./XyoMemoryArchivist"), exports);
|
|
9
7
|
tslib_1.__exportStar(require("./XyoPayloadFindFilter"), exports);
|
|
10
8
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kDAAuB;AACvB,yDAA8B;AAC9B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kDAAuB;AACvB,yDAA8B;AAC9B,+DAAoC;AACpC,iEAAsC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export interface Archivist<
|
|
2
|
-
get(id: TId): Promise<TReadResponse
|
|
1
|
+
export interface Archivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TQueryResponse = TReadResponse, TQuery = unknown, TId = string> {
|
|
2
|
+
get(id: TId): Promise<TReadResponse | undefined> | TReadResponse | undefined;
|
|
3
3
|
find?(query: TQuery): Promise<TQueryResponse[]> | TQueryResponse[];
|
|
4
|
-
insert?(item: TWrite): Promise<TWriteResponse[]> | TWriteResponse[];
|
|
4
|
+
insert?(item: TWrite[]): Promise<TWriteResponse[]> | TWriteResponse[];
|
|
5
5
|
delete?(id: TId): Promise<boolean> | boolean;
|
|
6
6
|
clear?(): void;
|
|
7
7
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { XyoAccount } from '@xyo-network/account';
|
|
2
2
|
import { XyoPayload } from '@xyo-network/payload';
|
|
3
3
|
import { Archivist } from './model';
|
|
4
|
-
import {
|
|
5
|
-
export declare
|
|
6
|
-
|
|
4
|
+
import { XyoPayloadFindQuery } from './XyoPayloadFindFilter';
|
|
5
|
+
export declare type XyoArchivist<T extends XyoPayload = XyoPayload> = Archivist<T, T, T, T, XyoPayloadFindQuery>;
|
|
6
|
+
export declare abstract class XyoArchivistBase<T extends XyoPayload = XyoPayload> implements XyoArchivist<T> {
|
|
7
|
+
protected parent?: XyoArchivist<T>;
|
|
7
8
|
protected account?: XyoAccount;
|
|
8
|
-
constructor(parent?: XyoArchivist<
|
|
9
|
-
abstract insert(
|
|
10
|
-
abstract find(query:
|
|
11
|
-
abstract get(hash: string):
|
|
12
|
-
all():
|
|
9
|
+
constructor(parent?: XyoArchivist<T>, account?: XyoAccount);
|
|
10
|
+
abstract insert(payloads: T[]): T[] | Promise<T[]>;
|
|
11
|
+
abstract find(query: XyoPayloadFindQuery): T[] | Promise<T[]>;
|
|
12
|
+
abstract get(hash: string): T | Promise<T | undefined> | undefined;
|
|
13
|
+
all(): T[] | Promise<T[]>;
|
|
13
14
|
delete(_hash: string): boolean | Promise<boolean>;
|
|
14
15
|
clear(): void | Promise<void>;
|
|
15
16
|
commit(): void;
|
package/dist/esm/XyoArchivist.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../src/XyoArchivist.ts"],"names":[],"mappings":"
|
|
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,KAAa;QACzB,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,6 +1,5 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/sdk-js';
|
|
2
2
|
import { XyoBoundWitnessBuilder } from '@xyo-network/boundwitness';
|
|
3
|
-
import { XyoArchivist } from './XyoArchivist';
|
|
4
3
|
export class XyoBoundWitnessArchivist extends XyoArchivist {
|
|
5
4
|
async commit() {
|
|
6
5
|
const parent = assertEx(this.parent, 'Parent is required for commit');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoBoundWitnessArchivist.js","sourceRoot":"","sources":["../../src/XyoBoundWitnessArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAA2B,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"XyoBoundWitnessArchivist.js","sourceRoot":"","sources":["../../src/XyoBoundWitnessArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAA2B,MAAM,2BAA2B,CAAA;AAK3F,MAAM,OAAgB,wBAAkI,SAAQ,YAG/J;IACQ,KAAK,CAAC,MAAM;QACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAA;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAA;QACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAA;QAClE,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAiB,CAAA;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;QACjE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { XyoBoundWitness, XyoBoundWitnessWithMeta } from '@xyo-network/boundwitness';
|
|
2
|
-
import {
|
|
2
|
+
import { XyoPayloadWithMeta } from '@xyo-network/payload';
|
|
3
3
|
import { XyoBoundWitnessArchivist } from './XyoBoundWitnessArchivist';
|
|
4
4
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
|
|
5
5
|
export declare class XyoBoundWitnessMemoryArchivist<TRead extends XyoPayloadWithMeta = XyoPayloadWithMeta, TWrite extends XyoBoundWitnessWithMeta<XyoBoundWitness, TRead> & TRead = XyoBoundWitnessWithMeta<XyoBoundWitness, TRead> & TRead> extends XyoBoundWitnessArchivist<TRead, TWrite> {
|
|
6
6
|
private cache;
|
|
7
7
|
delete(hash: string): boolean;
|
|
8
8
|
clear(): void;
|
|
9
|
-
get(hash: string):
|
|
9
|
+
get(hash: string): any;
|
|
10
10
|
insert(boundWitness: TWrite): string[];
|
|
11
|
-
find<T extends
|
|
11
|
+
find<T extends TRead = TRead>(filter: XyoPayloadFindFilter): T[];
|
|
12
12
|
}
|
|
@@ -32,7 +32,13 @@ export class XyoBoundWitnessMemoryArchivist extends XyoBoundWitnessArchivist {
|
|
|
32
32
|
return hashes;
|
|
33
33
|
}
|
|
34
34
|
find(filter) {
|
|
35
|
-
|
|
35
|
+
const result = [];
|
|
36
|
+
this.cache.forEach((value) => {
|
|
37
|
+
if (value.schema === filter.schema) {
|
|
38
|
+
result.push(value);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return result;
|
|
36
42
|
}
|
|
37
43
|
}
|
|
38
44
|
//# sourceMappingURL=XyoBoundWitnessMemoryArchivist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyoBoundWitnessMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoBoundWitnessMemoryArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAC5G,OAAO,
|
|
1
|
+
{"version":3,"file":"XyoBoundWitnessMemoryArchivist.js","sourceRoot":"","sources":["../../src/XyoBoundWitnessMemoryArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAC5G,OAAO,EAAsB,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAGrE,MAAM,OAAO,8BAGX,SAAQ,wBAAuC;IAHjD;;QAIU,UAAK,GAAG,IAAI,QAAQ,CAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAuC7D,CAAC;IArCQ,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAEM,GAAG,CAAC,IAAY;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;IAEM,MAAM,CAAC,YAAoB;QAChC,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAA;QACxD,MAAM,oBAAoB,GAAG,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QAC7F,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;QAChE,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAC9C,MAAM,eAAe,GAAU,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;YAC1F,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,IAAI,CAA0B,MAA4B;QAC/D,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,KAAU,CAAC,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { XyoPayload } from '@xyo-network/payload';
|
|
2
|
-
import {
|
|
2
|
+
import { XyoArchivistBase } from './XyoArchivist';
|
|
3
3
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter';
|
|
4
|
-
export declare class XyoMemoryArchivist<
|
|
4
|
+
export declare class XyoMemoryArchivist<T extends XyoPayload = XyoPayload> extends XyoArchivistBase<T> {
|
|
5
5
|
private cache;
|
|
6
|
-
delete(hash: string): boolean
|
|
7
|
-
clear(): void
|
|
8
|
-
get(hash: string):
|
|
9
|
-
insert(
|
|
10
|
-
find<
|
|
6
|
+
delete(hash: string): boolean | Promise<boolean>;
|
|
7
|
+
clear(): void | Promise<void>;
|
|
8
|
+
get(hash: string): T | Promise<T | undefined> | undefined;
|
|
9
|
+
insert(payloads: T[]): T[] | Promise<T[]>;
|
|
10
|
+
find<R extends T = T>(filter: XyoPayloadFindFilter): T[] | Promise<T[]>;
|
|
11
11
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
|
2
2
|
import LruCache from 'lru-cache';
|
|
3
|
-
import {
|
|
4
|
-
export class XyoMemoryArchivist extends
|
|
3
|
+
import { XyoArchivistBase } from './XyoArchivist';
|
|
4
|
+
export class XyoMemoryArchivist extends XyoArchivistBase {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
7
7
|
this.cache = new LruCache({ max: 10000 });
|
|
@@ -13,17 +13,24 @@ export class XyoMemoryArchivist extends XyoArchivist {
|
|
|
13
13
|
this.cache.clear();
|
|
14
14
|
}
|
|
15
15
|
get(hash) {
|
|
16
|
-
|
|
17
|
-
return localResult ? [localResult] : this.parent?.get(hash);
|
|
16
|
+
return this.cache.get(hash) ?? this.parent?.get(hash);
|
|
18
17
|
}
|
|
19
|
-
insert(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
insert(payloads) {
|
|
19
|
+
return payloads.map((payload) => {
|
|
20
|
+
const wrapper = new XyoPayloadWrapper(payload);
|
|
21
|
+
const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() };
|
|
22
|
+
this.cache.set(payloadWithmeta._hash, payloadWithmeta);
|
|
23
|
+
return payloadWithmeta;
|
|
24
|
+
});
|
|
24
25
|
}
|
|
25
26
|
find(filter) {
|
|
26
|
-
|
|
27
|
+
const result = [];
|
|
28
|
+
this.cache.forEach((value) => {
|
|
29
|
+
if (value.schema === filter.schema) {
|
|
30
|
+
result.push(value);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return result;
|
|
27
34
|
}
|
|
28
35
|
}
|
|
29
36
|
//# 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,
|
|
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,kBAAsD,SAAQ,gBAAmB;IAA9F;;QACU,UAAK,GAAG,IAAI,QAAQ,CAAY,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAgCzD,CAAC;IA9BQ,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAEM,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IAEM,MAAM,CAAC,QAAa;QACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAC9C,MAAM,eAAe,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,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,CAAkB,MAA4B;QACvD,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;gBAClC,MAAM,CAAC,IAAI,CAAC,KAAU,CAAC,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload';
|
|
1
2
|
export interface XyoPayloadFindFilter {
|
|
2
|
-
[key: string]: unknown;
|
|
3
3
|
order?: 'desc' | 'asc';
|
|
4
4
|
timestamp?: number;
|
|
5
5
|
limit?: number;
|
|
6
6
|
schema?: string;
|
|
7
7
|
}
|
|
8
|
+
export declare type XyoPayloadFindQuery = XyoQueryPayload<{
|
|
9
|
+
filter: XyoPayloadFindFilter;
|
|
10
|
+
}>;
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export * from './model';
|
|
2
2
|
export * from './XyoArchivist';
|
|
3
|
-
export * from './XyoBoundWitnessArchivist';
|
|
4
|
-
export * from './XyoBoundWitnessMemoryArchivist';
|
|
5
3
|
export * from './XyoMemoryArchivist';
|
|
6
4
|
export * from './XyoPayloadFindFilter';
|
|
7
5
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export interface Archivist<
|
|
2
|
-
get(id: TId): Promise<TReadResponse
|
|
1
|
+
export interface Archivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TQueryResponse = TReadResponse, TQuery = unknown, TId = string> {
|
|
2
|
+
get(id: TId): Promise<TReadResponse | undefined> | TReadResponse | undefined;
|
|
3
3
|
find?(query: TQuery): Promise<TQueryResponse[]> | TQueryResponse[];
|
|
4
|
-
insert?(item: TWrite): Promise<TWriteResponse[]> | TWriteResponse[];
|
|
4
|
+
insert?(item: TWrite[]): Promise<TWriteResponse[]> | TWriteResponse[];
|
|
5
5
|
delete?(id: TId): Promise<boolean> | boolean;
|
|
6
6
|
clear?(): void;
|
|
7
7
|
}
|
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.6",
|
|
14
|
+
"@xyo-network/boundwitness": "^2.22.6",
|
|
15
|
+
"@xyo-network/core": "^2.22.6",
|
|
16
|
+
"@xyo-network/payload": "^2.22.6",
|
|
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.6",
|
|
60
60
|
"packageManager": "yarn@3.1.1"
|
|
61
61
|
}
|
package/src/XyoArchivist.ts
CHANGED
|
@@ -2,21 +2,22 @@ import { XyoAccount } from '@xyo-network/account'
|
|
|
2
2
|
import { XyoPayload } from '@xyo-network/payload'
|
|
3
3
|
|
|
4
4
|
import { Archivist } from './model'
|
|
5
|
-
import {
|
|
5
|
+
import { XyoPayloadFindQuery } from './XyoPayloadFindFilter'
|
|
6
6
|
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
{
|
|
10
|
-
protected parent?: XyoArchivist<
|
|
7
|
+
export type XyoArchivist<T extends XyoPayload = XyoPayload> = Archivist<T, T, T, T, XyoPayloadFindQuery>
|
|
8
|
+
|
|
9
|
+
export abstract class XyoArchivistBase<T extends XyoPayload = XyoPayload> implements XyoArchivist<T> {
|
|
10
|
+
protected parent?: XyoArchivist<T>
|
|
11
11
|
protected account?: XyoAccount
|
|
12
|
-
constructor(parent?: XyoArchivist<
|
|
12
|
+
constructor(parent?: XyoArchivist<T>, account?: XyoAccount) {
|
|
13
13
|
this.parent = parent
|
|
14
14
|
this.account = account
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
abstract
|
|
18
|
-
abstract
|
|
19
|
-
|
|
16
|
+
|
|
17
|
+
abstract insert(payloads: T[]): T[] | Promise<T[]>
|
|
18
|
+
abstract find(query: XyoPayloadFindQuery): T[] | Promise<T[]>
|
|
19
|
+
abstract get(hash: string): T | Promise<T | undefined> | undefined
|
|
20
|
+
public all(): T[] | Promise<T[]> {
|
|
20
21
|
throw Error('getAll not supported')
|
|
21
22
|
}
|
|
22
23
|
public delete(_hash: string): boolean | Promise<boolean> {
|
|
@@ -1,33 +1,40 @@
|
|
|
1
1
|
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
|
2
2
|
import LruCache from 'lru-cache'
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { XyoArchivistBase } from './XyoArchivist'
|
|
5
5
|
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
6
6
|
|
|
7
|
-
export class XyoMemoryArchivist<
|
|
8
|
-
private cache
|
|
7
|
+
export class XyoMemoryArchivist<T extends XyoPayload = XyoPayload> extends XyoArchivistBase<T> {
|
|
8
|
+
private cache = new LruCache<string, T>({ max: 10000 })
|
|
9
9
|
|
|
10
|
-
public delete(hash: string) {
|
|
10
|
+
public delete(hash: string): boolean | Promise<boolean> {
|
|
11
11
|
return this.cache.delete(hash)
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
public clear() {
|
|
14
|
+
public clear(): void | Promise<void> {
|
|
15
15
|
this.cache.clear()
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
public get(hash: string) {
|
|
19
|
-
|
|
20
|
-
return localResult ? [localResult] : this.parent?.get(hash)
|
|
18
|
+
public get(hash: string): T | Promise<T | undefined> | undefined {
|
|
19
|
+
return this.cache.get(hash) ?? this.parent?.get(hash)
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
public insert(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
public insert(payloads: T[]): T[] | Promise<T[]> {
|
|
23
|
+
return payloads.map((payload) => {
|
|
24
|
+
const wrapper = new XyoPayloadWrapper(payload)
|
|
25
|
+
const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() }
|
|
26
|
+
this.cache.set(payloadWithmeta._hash, payloadWithmeta)
|
|
27
|
+
return payloadWithmeta
|
|
28
|
+
})
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
public find<
|
|
31
|
-
|
|
31
|
+
public find<R extends T = T>(filter: XyoPayloadFindFilter): T[] | Promise<T[]> {
|
|
32
|
+
const result: R[] = []
|
|
33
|
+
this.cache.forEach((value) => {
|
|
34
|
+
if (value.schema === filter.schema) {
|
|
35
|
+
result.push(value as R)
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
return result
|
|
32
39
|
}
|
|
33
40
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { XyoQueryPayload } from '@xyo-network/payload'
|
|
2
|
+
|
|
1
3
|
export interface XyoPayloadFindFilter {
|
|
2
|
-
[key: string]: unknown
|
|
3
4
|
order?: 'desc' | 'asc'
|
|
4
5
|
timestamp?: number
|
|
5
6
|
limit?: number
|
|
6
7
|
schema?: string
|
|
7
8
|
}
|
|
9
|
+
|
|
10
|
+
export type XyoPayloadFindQuery = XyoQueryPayload<{
|
|
11
|
+
filter: XyoPayloadFindFilter
|
|
12
|
+
}>
|
package/src/index.ts
CHANGED
package/src/model/Archivist.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export interface Archivist<
|
|
2
|
-
get(id: TId): Promise<TReadResponse
|
|
1
|
+
export interface Archivist<TReadResponse, TWriteResponse = TReadResponse, TWrite = TReadResponse, TQueryResponse = TReadResponse, TQuery = unknown, TId = string> {
|
|
2
|
+
get(id: TId): Promise<TReadResponse | undefined> | TReadResponse | undefined
|
|
3
3
|
find?(query: TQuery): Promise<TQueryResponse[]> | TQueryResponse[]
|
|
4
|
-
insert?(item: TWrite): Promise<TWriteResponse[]> | TWriteResponse[]
|
|
4
|
+
insert?(item: TWrite[]): Promise<TWriteResponse[]> | TWriteResponse[]
|
|
5
5
|
delete?(id: TId): Promise<boolean> | boolean
|
|
6
6
|
clear?(): void
|
|
7
7
|
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/sdk-js'
|
|
2
|
-
import { XyoBoundWitnessBuilder, XyoBoundWitnessWithMeta } from '@xyo-network/boundwitness'
|
|
3
|
-
import { XyoPayload } from '@xyo-network/payload'
|
|
4
|
-
|
|
5
|
-
import { XyoArchivist } from './XyoArchivist'
|
|
6
|
-
|
|
7
|
-
export abstract class XyoBoundWitnessArchivist<TRead extends XyoPayload = XyoPayload, TWrite extends XyoBoundWitnessWithMeta = XyoBoundWitnessWithMeta> extends XyoArchivist<
|
|
8
|
-
TRead,
|
|
9
|
-
TWrite
|
|
10
|
-
> {
|
|
11
|
-
public async commit() {
|
|
12
|
-
const parent = assertEx(this.parent, 'Parent is required for commit')
|
|
13
|
-
const account = assertEx(this.account, 'Account is required for commit')
|
|
14
|
-
const payloads = assertEx(await parent.all(), 'Nothing to commit')
|
|
15
|
-
const builder = new XyoBoundWitnessBuilder<TWrite, TRead>()
|
|
16
|
-
const block = builder.payloads(payloads).witness(account).build()
|
|
17
|
-
const [hash] = await parent.insert(block)
|
|
18
|
-
await this.clear()
|
|
19
|
-
return hash
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { XyoBoundWitness, XyoBoundWitnessWithMeta, XyoBoundWitnessWrapper } from '@xyo-network/boundwitness'
|
|
2
|
-
import { XyoPayload, XyoPayloadWithMeta, XyoPayloadWrapper } from '@xyo-network/payload'
|
|
3
|
-
import LruCache from 'lru-cache'
|
|
4
|
-
|
|
5
|
-
import { XyoBoundWitnessArchivist } from './XyoBoundWitnessArchivist'
|
|
6
|
-
import { XyoPayloadFindFilter } from './XyoPayloadFindFilter'
|
|
7
|
-
|
|
8
|
-
export class XyoBoundWitnessMemoryArchivist<
|
|
9
|
-
TRead extends XyoPayloadWithMeta = XyoPayloadWithMeta,
|
|
10
|
-
TWrite extends XyoBoundWitnessWithMeta<XyoBoundWitness, TRead> & TRead = XyoBoundWitnessWithMeta<XyoBoundWitness, TRead> & TRead
|
|
11
|
-
> extends XyoBoundWitnessArchivist<TRead, TWrite> {
|
|
12
|
-
private cache = new LruCache<string, TRead>({ max: 10000 })
|
|
13
|
-
|
|
14
|
-
public delete(hash: string) {
|
|
15
|
-
return this.cache.delete(hash)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public clear() {
|
|
19
|
-
this.cache.clear()
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public get(hash: string) {
|
|
23
|
-
const localResult = this.cache.get(hash)
|
|
24
|
-
return localResult ? [localResult] : this.parent?.get(hash)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public insert(boundWitness: TWrite) {
|
|
28
|
-
const wrapper = new XyoBoundWitnessWrapper(boundWitness)
|
|
29
|
-
const boundWitnessWithMeta = { ...boundWitness, _hash: wrapper.hash, _timestamp: Date.now() }
|
|
30
|
-
const hashes: string[] = []
|
|
31
|
-
hashes.push(boundWitnessWithMeta._hash)
|
|
32
|
-
this.cache.set(boundWitnessWithMeta._hash, boundWitnessWithMeta)
|
|
33
|
-
boundWitness._payloads?.forEach((payload) => {
|
|
34
|
-
const wrapper = new XyoPayloadWrapper(payload)
|
|
35
|
-
const payloadWithMeta: TRead = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() }
|
|
36
|
-
hashes.push(payloadWithMeta._hash)
|
|
37
|
-
this.cache.set(payloadWithMeta._hash, payloadWithMeta)
|
|
38
|
-
})
|
|
39
|
-
return hashes
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public find<T extends XyoPayload = XyoPayload>(filter: XyoPayloadFindFilter): T[] {
|
|
43
|
-
return [this.cache.find((value) => value.schema === filter.schema)]
|
|
44
|
-
}
|
|
45
|
-
}
|