@xyo-network/api 2.21.20 → 2.21.23

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 (36) hide show
  1. package/dist/cjs/Archivist/Model/Archivist.d.ts +6 -4
  2. package/dist/cjs/Archivist/Payload/Api.d.ts +1 -7
  3. package/dist/cjs/Archivist/Payload/Api.js.map +1 -1
  4. package/dist/cjs/Archivist/XyoApiArchivist.d.ts +12 -0
  5. package/dist/cjs/Archivist/XyoApiArchivist.js +35 -0
  6. package/dist/cjs/Archivist/XyoApiArchivist.js.map +1 -0
  7. package/dist/cjs/Archivist/XyoArchivist.d.ts +17 -0
  8. package/dist/cjs/Archivist/XyoArchivist.js +35 -0
  9. package/dist/cjs/Archivist/XyoArchivist.js.map +1 -0
  10. package/dist/cjs/Archivist/XyoMemoryArchivist.d.ts +12 -0
  11. package/dist/cjs/Archivist/XyoMemoryArchivist.js +65 -0
  12. package/dist/cjs/Archivist/XyoMemoryArchivist.js.map +1 -0
  13. package/dist/cjs/Archivist/index.d.ts +1 -1
  14. package/dist/cjs/Archivist/index.js +1 -1
  15. package/dist/cjs/Archivist/index.js.map +1 -1
  16. package/dist/esm/Archivist/Model/Archivist.d.ts +6 -4
  17. package/dist/esm/Archivist/Payload/Api.d.ts +1 -7
  18. package/dist/esm/Archivist/Payload/Api.js.map +1 -1
  19. package/dist/esm/Archivist/XyoApiArchivist.d.ts +12 -0
  20. package/dist/esm/Archivist/XyoApiArchivist.js +22 -0
  21. package/dist/esm/Archivist/XyoApiArchivist.js.map +1 -0
  22. package/dist/esm/Archivist/XyoArchivist.d.ts +17 -0
  23. package/dist/esm/Archivist/XyoArchivist.js +28 -0
  24. package/dist/esm/Archivist/XyoArchivist.js.map +1 -0
  25. package/dist/esm/Archivist/XyoMemoryArchivist.d.ts +12 -0
  26. package/dist/esm/Archivist/XyoMemoryArchivist.js +58 -0
  27. package/dist/esm/Archivist/XyoMemoryArchivist.js.map +1 -0
  28. package/dist/esm/Archivist/index.d.ts +1 -1
  29. package/dist/esm/Archivist/index.js +1 -1
  30. package/dist/esm/Archivist/index.js.map +1 -1
  31. package/package.json +8 -6
  32. package/src/Archivist/Payload/Api.ts +1 -8
  33. package/src/Archivist/XyoApiArchivist.ts +31 -0
  34. package/src/Archivist/index.ts +1 -1
  35. package/src/Archivist/Model/Archivist.ts +0 -20
  36. package/src/Archivist/Model/index.ts +0 -1
@@ -1,11 +1,13 @@
1
1
  export interface QueryableArchivist<TQueryResponse, TQuery> {
2
- find(query: TQuery): Promise<TQueryResponse>;
2
+ find(query: TQuery): Promise<TQueryResponse> | TQueryResponse;
3
3
  }
4
4
  export interface ReadArchivist<TReadResponse, TId = string> {
5
- get(id: TId): Promise<TReadResponse>;
5
+ get(id: TId): Promise<TReadResponse | undefined> | TReadResponse | undefined;
6
6
  }
7
- export interface WriteArchivist<TWriteResponse, TWrite> {
8
- insert(item: TWrite): Promise<TWriteResponse>;
7
+ export interface WriteArchivist<TWriteResponse, TWrite, TId = string> {
8
+ insert(item: TWrite): Promise<TWriteResponse> | TWriteResponse;
9
+ delete?(id: TId): Promise<boolean> | boolean;
10
+ clear?(): void;
9
11
  }
10
12
  export declare type ReadWriteArchivist<TWriteResponse, TWrite, TReadResponse = TWriteResponse, TId = string> = ReadArchivist<TReadResponse, TId> & WriteArchivist<TWriteResponse, TWrite>;
11
13
  export declare type Archivist<TWriteResponse, TWrite, TReadResponse = TWriteResponse, TId = string, TQueryResponse = unknown, TQuery = unknown> = ReadWriteArchivist<TWriteResponse, TWrite, TReadResponse, TId> & QueryableArchivist<TQueryResponse, TQuery>;
@@ -1,15 +1,9 @@
1
+ import { XyoPayloadFindFilter } from '@xyo-network/archivist';
1
2
  import { XyoPayload, XyoPayloadWithPartialMeta } from '@xyo-network/payload';
2
3
  import { XyoApiConfig } from '../../models';
3
4
  import { XyoApiSimple } from '../../Simple';
4
5
  import { WithArchive } from '../../WithArchive';
5
6
  import { XyoArchivistArchivePayloadSchemaApi } from './Schema';
6
- export interface XyoPayloadFindFilter {
7
- [key: string]: unknown;
8
- order?: 'desc' | 'asc';
9
- timestamp?: number;
10
- limit?: number;
11
- schema?: string;
12
- }
13
7
  export interface XyoPayloadStats {
14
8
  count: number;
15
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../../src/Archivist/Payload/Api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../../src/Archivist/Payload/Api.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AAKzC,yCAA2C;AAE3C,qCAA8D;AAM9D,MAAa,sBAGX,SAAQ,qBAA+C;IACvD,IAAW,MAAM;QACf,OAAO,IAAI,4CAAmC,iCACzC,IAAI,CAAC,MAAM,KACd,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,SAAS,IAC3B,CAAA;IACJ,CAAC;IAGD,IAAW,KAAK;;QACd,IAAI,CAAC,MAAM;YACT,MAAA,IAAI,CAAC,MAAM,mCACX,IAAI,qBAAY,iCACX,IAAI,CAAC,MAAM,KACd,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,QAAQ,IAC1B,CAAA;QACJ,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEM,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,qBAAY,iCAClB,IAAI,CAAC,MAAM,KACd,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,IACjC,CAAA;IACJ,CAAC;IAEY,MAAM,CAAC,IAAY;;YAC9B,OAAO,MAAM,IAAI,CAAC,WAAW,CAAM,QAAQ,IAAI,SAAS,CAAC,CAAA;QAC3D,CAAC;KAAA;IAED,oCAAoC;IACvB,QAAQ;;YACnB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAkB,OAAO,CAAC,CAAA;QACzD,CAAC;KAAA;IAED,2BAA2B;IACd,SAAS,CAAC,IAAY;;YACjC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAM,QAAQ,IAAI,EAAE,CAAC,CAAA;QACpD,CAAC;KAAA;IAED,6BAA6B;IAChB,YAAY,CAAC,IAAY;;YACpC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;KAAA;IAED,2BAA2B;IACd,UAAU,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;;YACnD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7D,CAAC;KAAA;IAED,iCAAiC;IACpB,SAAS,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;;YAClD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7D,CAAC;KAAA;IAED,2BAA2B;IACd,SAAS,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;;YAClD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC5D,CAAC;KAAA;IAED,2BAA2B;IACd,QAAQ,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;;YACjD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC5D,CAAC;KAAA;IAED,2BAA2B;IACd,cAAc,CAAC,KAAK,GAAG,EAAE;;YACpC,IAAA,iBAAQ,EAAC,KAAK,GAAG,CAAC,EAAE,eAAe,CAAC,CAAA;YACpC,IAAA,iBAAQ,EAAC,KAAK,IAAI,GAAG,EAAE,iBAAiB,CAAC,CAAA;YACzC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;QAC3E,CAAC;KAAA;IAED,2BAA2B;IACd,aAAa,CAAC,KAAK,GAAG,EAAE;;YACnC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;QAC3E,CAAC;KAAA;CACF;AA/ED,wDA+EC"}
@@ -0,0 +1,12 @@
1
+ import { XyoAccount } from '@xyo-network/account';
2
+ import { XyoArchivist, XyoPayloadFindFilter } from '@xyo-network/archivist';
3
+ import { XyoBoundWitnessWithPartialMeta } from '@xyo-network/boundwitness';
4
+ import { XyoArchivistApi } from './Api';
5
+ export declare class XyoApiArchivist extends XyoArchivist {
6
+ protected api: XyoArchivistApi;
7
+ protected archive: string;
8
+ constructor(api: XyoArchivistApi, archive: string, parent?: XyoArchivist, account?: XyoAccount);
9
+ get(hash: string): Promise<import("@xyo-network/payload").XyoPayload<object> | undefined>;
10
+ insert(payload: XyoBoundWitnessWithPartialMeta): Promise<string[]>;
11
+ find(filter: XyoPayloadFindFilter): Promise<import("@xyo-network/payload").XyoPayloadWithPartialMeta<unknown>[]>;
12
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XyoApiArchivist = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sdk_js_1 = require("@xylabs/sdk-js");
6
+ const archivist_1 = require("@xyo-network/archivist");
7
+ class XyoApiArchivist extends archivist_1.XyoArchivist {
8
+ constructor(api, archive, parent, account) {
9
+ super(parent, account);
10
+ this.api = api;
11
+ this.archive = archive;
12
+ }
13
+ get(hash) {
14
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
15
+ const [payloads] = yield this.api.archive(this.archive).payload.hash(hash).get('tuple');
16
+ return payloads === null || payloads === void 0 ? void 0 : payloads.pop();
17
+ });
18
+ }
19
+ insert(payload) {
20
+ var _a, _b;
21
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
22
+ return (_b = (_a = (yield this.api.archive(this.archive).block.post([payload]))) === null || _a === void 0 ? void 0 : _a.map((value) => (0, sdk_js_1.assertEx)(value._hash))) !== null && _b !== void 0 ? _b : [];
23
+ });
24
+ }
25
+ find(filter) {
26
+ var _a, _b;
27
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
28
+ const [payloads = []] = (_a = (yield this.api.archive(this.archive).payload.find(filter, 'tuple'))) !== null && _a !== void 0 ? _a : [];
29
+ const [blocks = []] = (_b = (yield this.api.archive(this.archive).block.find(filter, 'tuple'))) !== null && _b !== void 0 ? _b : [];
30
+ return payloads.concat(blocks);
31
+ });
32
+ }
33
+ }
34
+ exports.XyoApiArchivist = XyoApiArchivist;
35
+ //# sourceMappingURL=XyoApiArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoApiArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoApiArchivist.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AAEzC,sDAA2E;AAK3E,MAAa,eAAgB,SAAQ,wBAAY;IAG/C,YAAY,GAAoB,EAAE,OAAe,EAAE,MAAqB,EAAE,OAAoB;QAC5F,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEY,GAAG,CAAC,IAAY;;YAC3B,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACvF,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,EAAE,CAAA;QACxB,CAAC;KAAA;IAEY,MAAM,CAAC,OAAuC;;;YACzD,OAAO,MAAA,MAAA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,iBAAQ,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,mCAAI,EAAE,CAAA;;KACjH;IAEY,IAAI,CAAC,MAA4B;;;YAC5C,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,MAAA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,mCAAI,EAAE,CAAA;YAClG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,MAAA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,mCAAI,EAAE,CAAA;YAC9F,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;;KAC/B;CACF;AAvBD,0CAuBC"}
@@ -0,0 +1,17 @@
1
+ import { XyoAccount } from '@xyo-network/account';
2
+ import { XyoBoundWitness, XyoBoundWitnessWithPartialMeta } from '@xyo-network/boundwitness';
3
+ import { XyoPayload, XyoPayloadWithPartialMeta } from '@xyo-network/payload';
4
+ import { Archivist } from './Model';
5
+ import { XyoPayloadFindFilter } from './Payload';
6
+ export declare abstract class XyoArchivist<TWrite extends XyoBoundWitness = XyoBoundWitnessWithPartialMeta, TRead extends XyoPayload = XyoPayloadWithPartialMeta> implements Archivist<string[], TWrite, TRead | undefined, string, TRead[], XyoPayloadFindFilter> {
7
+ protected parent?: XyoArchivist;
8
+ protected account?: XyoAccount;
9
+ constructor(parent?: XyoArchivist, account?: XyoAccount);
10
+ abstract insert(item: TWrite): string[] | Promise<string[]>;
11
+ abstract find(query: XyoPayloadFindFilter): TRead[] | Promise<TRead[]>;
12
+ abstract get(hash: string): TRead | Promise<TRead | undefined> | undefined;
13
+ all(): TRead[] | Promise<TRead[] | undefined> | undefined;
14
+ delete(_hash: string): boolean | Promise<boolean>;
15
+ clear(): void | Promise<void>;
16
+ commit(): Promise<string>;
17
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XyoArchivist = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sdk_js_1 = require("@xylabs/sdk-js");
6
+ const boundwitness_1 = require("@xyo-network/boundwitness");
7
+ class XyoArchivist {
8
+ constructor(parent, account) {
9
+ this.parent = parent;
10
+ this.account = account;
11
+ }
12
+ all() {
13
+ throw Error('getAll not supported');
14
+ }
15
+ delete(_hash) {
16
+ throw Error('delete not supported');
17
+ }
18
+ clear() {
19
+ throw Error('clear not supported');
20
+ }
21
+ commit() {
22
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
23
+ const parent = (0, sdk_js_1.assertEx)(this.parent, 'Parent is required for commit');
24
+ const account = (0, sdk_js_1.assertEx)(this.account, 'Account is required for commit');
25
+ const payloads = (0, sdk_js_1.assertEx)(yield parent.all(), 'Nothing to commit');
26
+ const builder = new boundwitness_1.XyoBoundWitnessBuilder();
27
+ const block = builder.payloads(payloads).witness(account).build();
28
+ const [hash] = yield parent.insert(block);
29
+ yield this.clear();
30
+ return hash;
31
+ });
32
+ }
33
+ }
34
+ exports.XyoArchivist = XyoArchivist;
35
+ //# sourceMappingURL=XyoArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoArchivist.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AAEzC,4DAAmH;AAMnH,MAAsB,YAAY;IAKhC,YAAY,MAAqB,EAAE,OAAoB;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAIM,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;IACY,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,MAAM,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAA;YAClE,MAAM,OAAO,GAAG,IAAI,qCAAsB,EAAE,CAAA;YAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAA;YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;CACF;AA/BD,oCA+BC"}
@@ -0,0 +1,12 @@
1
+ import { XyoBoundWitnessWithMeta } from '@xyo-network/boundwitness';
2
+ import { XyoPayload, XyoPayloadWithPartialMeta } from '@xyo-network/payload';
3
+ import { XyoPayloadFindFilter } from './Payload';
4
+ import { XyoArchivist } from './XyoArchivist';
5
+ export declare class XyoMemoryArchivist extends XyoArchivist {
6
+ private cache;
7
+ delete(hash: string): boolean;
8
+ clear(): void;
9
+ get(hash: string): XyoPayloadWithPartialMeta<unknown> | Promise<XyoPayloadWithPartialMeta<unknown> | undefined> | undefined;
10
+ insert(payload: XyoBoundWitnessWithMeta): string[];
11
+ find<T extends XyoPayload = XyoPayload>(filter: XyoPayloadFindFilter): T[];
12
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XyoMemoryArchivist = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const boundwitness_1 = require("@xyo-network/boundwitness");
6
+ const payload_1 = require("@xyo-network/payload");
7
+ const lru_cache_1 = tslib_1.__importDefault(require("lru-cache"));
8
+ const XyoArchivist_1 = require("./XyoArchivist");
9
+ class XyoMemoryArchivist extends XyoArchivist_1.XyoArchivist {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.cache = new lru_cache_1.default({ max: 10000 });
13
+ }
14
+ delete(hash) {
15
+ return this.cache.delete(hash);
16
+ }
17
+ clear() {
18
+ this.cache.clear();
19
+ }
20
+ get(hash) {
21
+ var _a, _b;
22
+ return (_a = this.cache.get(hash)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.get(hash);
23
+ }
24
+ insert(payload) {
25
+ var _a;
26
+ const wrapper = new boundwitness_1.XyoBoundWitnessWrapper(payload);
27
+ const payloadWithmeta = Object.assign(Object.assign({}, payload), { _hash: wrapper.hash, _timestamp: Date.now() });
28
+ const hashes = [];
29
+ hashes.push(payloadWithmeta._hash);
30
+ this.cache.set(payloadWithmeta._hash, payloadWithmeta);
31
+ (_a = payload._payloads) === null || _a === void 0 ? void 0 : _a.forEach((payload) => {
32
+ const wrapper = new payload_1.XyoPayloadWrapper(payload);
33
+ const payloadWithmeta = Object.assign(Object.assign({}, payload), { _hash: wrapper.hash, _timestamp: Date.now() });
34
+ hashes.push(payloadWithmeta._hash);
35
+ this.cache.set(payloadWithmeta._hash, payloadWithmeta);
36
+ });
37
+ return hashes;
38
+ }
39
+ find(filter) {
40
+ const result = [];
41
+ if (filter.type === 'schema') {
42
+ const filterSchema = filter.schema !== undefined ? (Array.isArray(filter.schema) ? filter.schema : [filter.schema]) : undefined;
43
+ this.cache.forEach((value) => {
44
+ let match = value;
45
+ match = filterSchema === undefined || filterSchema.includes(value.schema) ? value : undefined;
46
+ if (match) {
47
+ result.push(match);
48
+ }
49
+ });
50
+ }
51
+ if (filter.type === 'hash') {
52
+ const filterHash = filter.hash !== undefined ? (Array.isArray(filter.hash) ? filter.hash : [filter.hash]) : undefined;
53
+ this.cache.forEach((value) => {
54
+ let match = value;
55
+ match = filterHash === undefined || filterHash.includes(new payload_1.XyoPayloadWrapper(value).hash) ? value : undefined;
56
+ if (match) {
57
+ result.push(match);
58
+ }
59
+ });
60
+ }
61
+ return result;
62
+ }
63
+ }
64
+ exports.XyoMemoryArchivist = XyoMemoryArchivist;
65
+ //# sourceMappingURL=XyoMemoryArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ export * from './Api';
3
3
  export * from './Archive';
4
4
  export * from './Archives';
5
5
  export * from './Block';
6
- export * from './Model';
7
6
  export * from './Payload';
7
+ export * from './XyoApiArchivist';
@@ -6,6 +6,6 @@ tslib_1.__exportStar(require("./Api"), exports);
6
6
  tslib_1.__exportStar(require("./Archive"), exports);
7
7
  tslib_1.__exportStar(require("./Archives"), exports);
8
8
  tslib_1.__exportStar(require("./Block"), exports);
9
- tslib_1.__exportStar(require("./Model"), exports);
10
9
  tslib_1.__exportStar(require("./Payload"), exports);
10
+ tslib_1.__exportStar(require("./XyoApiArchivist"), exports);
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Archivist/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,gDAAqB;AACrB,oDAAyB;AACzB,qDAA0B;AAC1B,kDAAuB;AACvB,kDAAuB;AACvB,oDAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Archivist/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,gDAAqB;AACrB,oDAAyB;AACzB,qDAA0B;AAC1B,kDAAuB;AACvB,oDAAyB;AACzB,4DAAiC"}
@@ -1,11 +1,13 @@
1
1
  export interface QueryableArchivist<TQueryResponse, TQuery> {
2
- find(query: TQuery): Promise<TQueryResponse>;
2
+ find(query: TQuery): Promise<TQueryResponse> | TQueryResponse;
3
3
  }
4
4
  export interface ReadArchivist<TReadResponse, TId = string> {
5
- get(id: TId): Promise<TReadResponse>;
5
+ get(id: TId): Promise<TReadResponse | undefined> | TReadResponse | undefined;
6
6
  }
7
- export interface WriteArchivist<TWriteResponse, TWrite> {
8
- insert(item: TWrite): Promise<TWriteResponse>;
7
+ export interface WriteArchivist<TWriteResponse, TWrite, TId = string> {
8
+ insert(item: TWrite): Promise<TWriteResponse> | TWriteResponse;
9
+ delete?(id: TId): Promise<boolean> | boolean;
10
+ clear?(): void;
9
11
  }
10
12
  export declare type ReadWriteArchivist<TWriteResponse, TWrite, TReadResponse = TWriteResponse, TId = string> = ReadArchivist<TReadResponse, TId> & WriteArchivist<TWriteResponse, TWrite>;
11
13
  export declare type Archivist<TWriteResponse, TWrite, TReadResponse = TWriteResponse, TId = string, TQueryResponse = unknown, TQuery = unknown> = ReadWriteArchivist<TWriteResponse, TWrite, TReadResponse, TId> & QueryableArchivist<TQueryResponse, TQuery>;
@@ -1,15 +1,9 @@
1
+ import { XyoPayloadFindFilter } from '@xyo-network/archivist';
1
2
  import { XyoPayload, XyoPayloadWithPartialMeta } from '@xyo-network/payload';
2
3
  import { XyoApiConfig } from '../../models';
3
4
  import { XyoApiSimple } from '../../Simple';
4
5
  import { WithArchive } from '../../WithArchive';
5
6
  import { XyoArchivistArchivePayloadSchemaApi } from './Schema';
6
- export interface XyoPayloadFindFilter {
7
- [key: string]: unknown;
8
- order?: 'desc' | 'asc';
9
- timestamp?: number;
10
- limit?: number;
11
- schema?: string;
12
- }
13
7
  export interface XyoPayloadStats {
14
8
  count: number;
15
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../../src/Archivist/Payload/Api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../../src/Archivist/Payload/Api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { XyoAccount } from '@xyo-network/account';
2
+ import { XyoArchivist, XyoPayloadFindFilter } from '@xyo-network/archivist';
3
+ import { XyoBoundWitnessWithPartialMeta } from '@xyo-network/boundwitness';
4
+ import { XyoArchivistApi } from './Api';
5
+ export declare class XyoApiArchivist extends XyoArchivist {
6
+ protected api: XyoArchivistApi;
7
+ protected archive: string;
8
+ constructor(api: XyoArchivistApi, archive: string, parent?: XyoArchivist, account?: XyoAccount);
9
+ get(hash: string): Promise<import("@xyo-network/payload").XyoPayload<object> | undefined>;
10
+ insert(payload: XyoBoundWitnessWithPartialMeta): Promise<string[]>;
11
+ find(filter: XyoPayloadFindFilter): Promise<import("@xyo-network/payload").XyoPayloadWithPartialMeta<unknown>[]>;
12
+ }
@@ -0,0 +1,22 @@
1
+ import { assertEx } from '@xylabs/sdk-js';
2
+ import { XyoArchivist } from '@xyo-network/archivist';
3
+ export class XyoApiArchivist extends XyoArchivist {
4
+ constructor(api, archive, parent, account) {
5
+ super(parent, account);
6
+ this.api = api;
7
+ this.archive = archive;
8
+ }
9
+ async get(hash) {
10
+ const [payloads] = await this.api.archive(this.archive).payload.hash(hash).get('tuple');
11
+ return payloads?.pop();
12
+ }
13
+ async insert(payload) {
14
+ return (await this.api.archive(this.archive).block.post([payload]))?.map((value) => assertEx(value._hash)) ?? [];
15
+ }
16
+ async find(filter) {
17
+ const [payloads = []] = (await this.api.archive(this.archive).payload.find(filter, 'tuple')) ?? [];
18
+ const [blocks = []] = (await this.api.archive(this.archive).block.find(filter, 'tuple')) ?? [];
19
+ return payloads.concat(blocks);
20
+ }
21
+ }
22
+ //# sourceMappingURL=XyoApiArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoApiArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoApiArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,YAAY,EAAwB,MAAM,wBAAwB,CAAA;AAK3E,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAG/C,YAAY,GAAoB,EAAE,OAAe,EAAE,MAAqB,EAAE,OAAoB;QAC5F,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,IAAY;QAC3B,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACvF,OAAO,QAAQ,EAAE,GAAG,EAAE,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAuC;QACzD,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;IAClH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAA4B;QAC5C,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QAClG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QAC9F,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { XyoAccount } from '@xyo-network/account';
2
+ import { XyoBoundWitness, XyoBoundWitnessWithPartialMeta } from '@xyo-network/boundwitness';
3
+ import { XyoPayload, XyoPayloadWithPartialMeta } from '@xyo-network/payload';
4
+ import { Archivist } from './Model';
5
+ import { XyoPayloadFindFilter } from './Payload';
6
+ export declare abstract class XyoArchivist<TWrite extends XyoBoundWitness = XyoBoundWitnessWithPartialMeta, TRead extends XyoPayload = XyoPayloadWithPartialMeta> implements Archivist<string[], TWrite, TRead | undefined, string, TRead[], XyoPayloadFindFilter> {
7
+ protected parent?: XyoArchivist;
8
+ protected account?: XyoAccount;
9
+ constructor(parent?: XyoArchivist, account?: XyoAccount);
10
+ abstract insert(item: TWrite): string[] | Promise<string[]>;
11
+ abstract find(query: XyoPayloadFindFilter): TRead[] | Promise<TRead[]>;
12
+ abstract get(hash: string): TRead | Promise<TRead | undefined> | undefined;
13
+ all(): TRead[] | Promise<TRead[] | undefined> | undefined;
14
+ delete(_hash: string): boolean | Promise<boolean>;
15
+ clear(): void | Promise<void>;
16
+ commit(): Promise<string>;
17
+ }
@@ -0,0 +1,28 @@
1
+ import { assertEx } from '@xylabs/sdk-js';
2
+ import { XyoBoundWitnessBuilder } from '@xyo-network/boundwitness';
3
+ export class XyoArchivist {
4
+ constructor(parent, account) {
5
+ this.parent = parent;
6
+ this.account = account;
7
+ }
8
+ all() {
9
+ throw Error('getAll not supported');
10
+ }
11
+ delete(_hash) {
12
+ throw Error('delete not supported');
13
+ }
14
+ clear() {
15
+ throw Error('clear not supported');
16
+ }
17
+ async commit() {
18
+ const parent = assertEx(this.parent, 'Parent is required for commit');
19
+ const account = assertEx(this.account, 'Account is required for commit');
20
+ const payloads = assertEx(await parent.all(), 'Nothing to commit');
21
+ const builder = new XyoBoundWitnessBuilder();
22
+ const block = builder.payloads(payloads).witness(account).build();
23
+ const [hash] = await parent.insert(block);
24
+ await this.clear();
25
+ return hash;
26
+ }
27
+ }
28
+ //# sourceMappingURL=XyoArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoArchivist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAmB,sBAAsB,EAAkC,MAAM,2BAA2B,CAAA;AAMnH,MAAM,OAAgB,YAAY;IAKhC,YAAY,MAAqB,EAAE,OAAoB;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAIM,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,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,EAAE,CAAA;QAC5C,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"}
@@ -0,0 +1,12 @@
1
+ import { XyoBoundWitnessWithMeta } from '@xyo-network/boundwitness';
2
+ import { XyoPayload, XyoPayloadWithPartialMeta } from '@xyo-network/payload';
3
+ import { XyoPayloadFindFilter } from './Payload';
4
+ import { XyoArchivist } from './XyoArchivist';
5
+ export declare class XyoMemoryArchivist extends XyoArchivist {
6
+ private cache;
7
+ delete(hash: string): boolean;
8
+ clear(): void;
9
+ get(hash: string): XyoPayloadWithPartialMeta<unknown> | Promise<XyoPayloadWithPartialMeta<unknown> | undefined> | undefined;
10
+ insert(payload: XyoBoundWitnessWithMeta): string[];
11
+ find<T extends XyoPayload = XyoPayload>(filter: XyoPayloadFindFilter): T[];
12
+ }
@@ -0,0 +1,58 @@
1
+ import { XyoBoundWitnessWrapper } from '@xyo-network/boundwitness';
2
+ import { XyoPayloadWrapper } from '@xyo-network/payload';
3
+ import LruCache from 'lru-cache';
4
+ import { XyoArchivist } from './XyoArchivist';
5
+ export class XyoMemoryArchivist extends XyoArchivist {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.cache = new LruCache({ max: 10000 });
9
+ }
10
+ delete(hash) {
11
+ return this.cache.delete(hash);
12
+ }
13
+ clear() {
14
+ this.cache.clear();
15
+ }
16
+ get(hash) {
17
+ return this.cache.get(hash) ?? this.parent?.get(hash);
18
+ }
19
+ insert(payload) {
20
+ const wrapper = new XyoBoundWitnessWrapper(payload);
21
+ const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() };
22
+ const hashes = [];
23
+ hashes.push(payloadWithmeta._hash);
24
+ this.cache.set(payloadWithmeta._hash, payloadWithmeta);
25
+ payload._payloads?.forEach((payload) => {
26
+ const wrapper = new XyoPayloadWrapper(payload);
27
+ const payloadWithmeta = { ...payload, _hash: wrapper.hash, _timestamp: Date.now() };
28
+ hashes.push(payloadWithmeta._hash);
29
+ this.cache.set(payloadWithmeta._hash, payloadWithmeta);
30
+ });
31
+ return hashes;
32
+ }
33
+ find(filter) {
34
+ const result = [];
35
+ if (filter.type === 'schema') {
36
+ const filterSchema = filter.schema !== undefined ? (Array.isArray(filter.schema) ? filter.schema : [filter.schema]) : undefined;
37
+ this.cache.forEach((value) => {
38
+ let match = value;
39
+ match = filterSchema === undefined || filterSchema.includes(value.schema) ? value : undefined;
40
+ if (match) {
41
+ result.push(match);
42
+ }
43
+ });
44
+ }
45
+ if (filter.type === 'hash') {
46
+ const filterHash = filter.hash !== undefined ? (Array.isArray(filter.hash) ? filter.hash : [filter.hash]) : undefined;
47
+ this.cache.forEach((value) => {
48
+ let match = value;
49
+ match = filterHash === undefined || filterHash.includes(new XyoPayloadWrapper(value).hash) ? value : undefined;
50
+ if (match) {
51
+ result.push(match);
52
+ }
53
+ });
54
+ }
55
+ return result;
56
+ }
57
+ }
58
+ //# sourceMappingURL=XyoMemoryArchivist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyoMemoryArchivist.js","sourceRoot":"","sources":["../../../src/Archivist/XyoMemoryArchivist.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ export * from './Api';
3
3
  export * from './Archive';
4
4
  export * from './Archives';
5
5
  export * from './Block';
6
- export * from './Model';
7
6
  export * from './Payload';
7
+ export * from './XyoApiArchivist';
@@ -3,6 +3,6 @@ export * from './Api';
3
3
  export * from './Archive';
4
4
  export * from './Archives';
5
5
  export * from './Block';
6
- export * from './Model';
7
6
  export * from './Payload';
7
+ export * from './XyoApiArchivist';
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Archivist/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Archivist/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA"}
package/package.json CHANGED
@@ -10,12 +10,14 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@xylabs/sdk-js": "^2.6.2",
13
- "@xyo-network/account": "^2.21.20",
14
- "@xyo-network/boundwitness": "^2.21.20",
15
- "@xyo-network/core": "^2.21.20",
16
- "@xyo-network/payload": "^2.21.20",
17
- "@xyo-network/typeof": "^2.21.20",
13
+ "@xyo-network/account": "^2.21.23",
14
+ "@xyo-network/archivist": "^2.21.23",
15
+ "@xyo-network/boundwitness": "^2.21.23",
16
+ "@xyo-network/core": "^2.21.23",
17
+ "@xyo-network/payload": "^2.21.23",
18
+ "@xyo-network/typeof": "^2.21.23",
18
19
  "axios": "^0.27.2",
20
+ "lru-cache": "^7.13.1",
19
21
  "pako": "^2.0.4",
20
22
  "uuid": "^8.3.2"
21
23
  },
@@ -60,6 +62,6 @@
60
62
  },
61
63
  "sideEffects": true,
62
64
  "types": "dist/esm/index.d.ts",
63
- "version": "2.21.20",
65
+ "version": "2.21.23",
64
66
  "packageManager": "yarn@3.1.1"
65
67
  }
@@ -1,4 +1,5 @@
1
1
  import { assertEx } from '@xylabs/sdk-js'
2
+ import { XyoPayloadFindFilter } from '@xyo-network/archivist'
2
3
  import { XyoPayload, XyoPayloadWithPartialMeta } from '@xyo-network/payload'
3
4
 
4
5
  import { XyoApiConfig } from '../../models'
@@ -6,14 +7,6 @@ import { XyoApiSimple } from '../../Simple'
6
7
  import { WithArchive } from '../../WithArchive'
7
8
  import { XyoArchivistArchivePayloadSchemaApi } from './Schema'
8
9
 
9
- export interface XyoPayloadFindFilter {
10
- [key: string]: unknown
11
- order?: 'desc' | 'asc'
12
- timestamp?: number
13
- limit?: number
14
- schema?: string
15
- }
16
-
17
10
  export interface XyoPayloadStats {
18
11
  count: number
19
12
  }
@@ -0,0 +1,31 @@
1
+ import { assertEx } from '@xylabs/sdk-js'
2
+ import { XyoAccount } from '@xyo-network/account'
3
+ import { XyoArchivist, XyoPayloadFindFilter } from '@xyo-network/archivist'
4
+ import { XyoBoundWitnessWithPartialMeta } from '@xyo-network/boundwitness'
5
+
6
+ import { XyoArchivistApi } from './Api'
7
+
8
+ export class XyoApiArchivist extends XyoArchivist {
9
+ protected api: XyoArchivistApi
10
+ protected archive: string
11
+ constructor(api: XyoArchivistApi, archive: string, parent?: XyoArchivist, account?: XyoAccount) {
12
+ super(parent, account)
13
+ this.api = api
14
+ this.archive = archive
15
+ }
16
+
17
+ public async get(hash: string) {
18
+ const [payloads] = await this.api.archive(this.archive).payload.hash(hash).get('tuple')
19
+ return payloads?.pop()
20
+ }
21
+
22
+ public async insert(payload: XyoBoundWitnessWithPartialMeta) {
23
+ return (await this.api.archive(this.archive).block.post([payload]))?.map((value) => assertEx(value._hash)) ?? []
24
+ }
25
+
26
+ public async find(filter: XyoPayloadFindFilter) {
27
+ const [payloads = []] = (await this.api.archive(this.archive).payload.find(filter, 'tuple')) ?? []
28
+ const [blocks = []] = (await this.api.archive(this.archive).block.find(filter, 'tuple')) ?? []
29
+ return payloads.concat(blocks)
30
+ }
31
+ }
@@ -3,5 +3,5 @@ export * from './Api'
3
3
  export * from './Archive'
4
4
  export * from './Archives'
5
5
  export * from './Block'
6
- export * from './Model'
7
6
  export * from './Payload'
7
+ export * from './XyoApiArchivist'
@@ -1,20 +0,0 @@
1
- export interface QueryableArchivist<TQueryResponse, TQuery> {
2
- find(query: TQuery): Promise<TQueryResponse>
3
- }
4
- export interface ReadArchivist<TReadResponse, TId = string> {
5
- get(id: TId): Promise<TReadResponse>
6
- }
7
-
8
- export interface WriteArchivist<TWriteResponse, TWrite> {
9
- insert(item: TWrite): Promise<TWriteResponse>
10
- }
11
-
12
- export type ReadWriteArchivist<TWriteResponse, TWrite, TReadResponse = TWriteResponse, TId = string> = ReadArchivist<TReadResponse, TId> & WriteArchivist<TWriteResponse, TWrite>
13
-
14
- export type Archivist<TWriteResponse, TWrite, TReadResponse = TWriteResponse, TId = string, TQueryResponse = unknown, TQuery = unknown> = ReadWriteArchivist<
15
- TWriteResponse,
16
- TWrite,
17
- TReadResponse,
18
- TId
19
- > &
20
- QueryableArchivist<TQueryResponse, TQuery>
@@ -1 +0,0 @@
1
- export * from './Archivist'