@xyo-network/archivist-indexeddb 2.64.9 → 2.65.0
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/IndexedDbArchivist.js +38 -28
- package/dist/cjs/IndexedDbArchivist.js.map +1 -1
- package/dist/esm/IndexedDbArchivist.js +36 -26
- package/dist/esm/IndexedDbArchivist.js.map +1 -1
- package/dist/types/IndexedDbArchivist.d.ts +7 -7
- package/dist/types/IndexedDbArchivist.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/IndexedDbArchivist.ts +38 -28
- package/src/spec/testArchivist.ts +3 -3
- package/dist/docs.json +0 -15373
|
@@ -10,7 +10,7 @@ const core_1 = require("@xyo-network/core");
|
|
|
10
10
|
const module_1 = require("@xyo-network/module");
|
|
11
11
|
const idb_keyval_1 = require("idb-keyval");
|
|
12
12
|
exports.IndexedDbArchivistConfigSchema = 'network.xyo.archivist.indexeddb.config';
|
|
13
|
-
let IndexedDbArchivist = exports.IndexedDbArchivist = IndexedDbArchivist_1 = class IndexedDbArchivist extends abstract_archivist_1.
|
|
13
|
+
let IndexedDbArchivist = exports.IndexedDbArchivist = IndexedDbArchivist_1 = class IndexedDbArchivist extends abstract_archivist_1.AbstractDirectArchivist {
|
|
14
14
|
/**
|
|
15
15
|
* The database name. If not supplied via config, it defaults
|
|
16
16
|
* to the module name (not guaranteed to be unique) and if module
|
|
@@ -42,49 +42,59 @@ let IndexedDbArchivist = exports.IndexedDbArchivist = IndexedDbArchivist_1 = cla
|
|
|
42
42
|
get db() {
|
|
43
43
|
return (0, assert_1.assertEx)(this._db, 'DB not initialized');
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
start() {
|
|
46
|
+
const _super = Object.create(null, {
|
|
47
|
+
start: { get: () => super.start }
|
|
48
|
+
});
|
|
46
49
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
yield _super.start.call(this);
|
|
51
|
+
// NOTE: We could defer this creation to first access but we
|
|
52
|
+
// want to fail fast here in case something is wrong
|
|
53
|
+
this._db = (0, idb_keyval_1.createStore)(this.dbName, this.storeName);
|
|
49
54
|
});
|
|
50
55
|
}
|
|
51
|
-
|
|
56
|
+
allHandler() {
|
|
52
57
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
yield (0,
|
|
58
|
+
return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
const result = yield (0, idb_keyval_1.entries)(this.db);
|
|
60
|
+
return result.map(([_hash, payload]) => payload);
|
|
61
|
+
}));
|
|
54
62
|
});
|
|
55
63
|
}
|
|
56
|
-
|
|
64
|
+
clearHandler() {
|
|
57
65
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
yield (
|
|
59
|
-
|
|
66
|
+
return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
yield (0, idb_keyval_1.clear)(this.db);
|
|
68
|
+
}));
|
|
60
69
|
});
|
|
61
70
|
}
|
|
62
|
-
|
|
71
|
+
deleteHandler(hashes) {
|
|
63
72
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
yield (0, idb_keyval_1.delMany)(hashes, this.db);
|
|
75
|
+
return hashes.map((_) => true);
|
|
76
|
+
}));
|
|
66
77
|
});
|
|
67
78
|
}
|
|
68
|
-
|
|
79
|
+
getHandler(hashes) {
|
|
69
80
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
return
|
|
73
|
-
}))
|
|
74
|
-
yield (0, idb_keyval_1.setMany)(entries, this.db);
|
|
75
|
-
const [result] = yield this.bindQueryResult({ payloads, schema: archivist_model_1.ArchivistInsertQuerySchema }, payloads);
|
|
76
|
-
return [result[0]];
|
|
81
|
+
return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const result = yield (0, idb_keyval_1.getMany)(hashes, this.db);
|
|
83
|
+
return result;
|
|
84
|
+
}));
|
|
77
85
|
});
|
|
78
86
|
}
|
|
79
|
-
|
|
80
|
-
const _super = Object.create(null, {
|
|
81
|
-
start: { get: () => super.start }
|
|
82
|
-
});
|
|
87
|
+
insertHandler(payloads) {
|
|
83
88
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
84
|
-
yield
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
return yield this.busy(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
const entries = yield Promise.all(payloads.map((payload) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const hash = yield core_1.PayloadHasher.hashAsync(payload);
|
|
92
|
+
return [hash, payload];
|
|
93
|
+
})));
|
|
94
|
+
yield (0, idb_keyval_1.setMany)(entries, this.db);
|
|
95
|
+
const [result] = yield this.bindQueryResult({ payloads, schema: archivist_model_1.ArchivistInsertQuerySchema }, payloads);
|
|
96
|
+
return [result[0]];
|
|
97
|
+
}));
|
|
88
98
|
});
|
|
89
99
|
}
|
|
90
100
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbArchivist.js","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":";;;;;AAAA,2CAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"IndexedDbArchivist.js","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
var IndexedDbArchivist_1;
|
|
2
2
|
import { __decorate } from "tslib";
|
|
3
3
|
import { assertEx } from '@xylabs/assert';
|
|
4
|
-
import {
|
|
4
|
+
import { AbstractDirectArchivist } from '@xyo-network/abstract-archivist';
|
|
5
5
|
import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema, } from '@xyo-network/archivist-model';
|
|
6
6
|
import { PayloadHasher } from '@xyo-network/core';
|
|
7
7
|
import { creatableModule } from '@xyo-network/module';
|
|
8
8
|
import { clear, createStore, delMany, entries, getMany, setMany } from 'idb-keyval';
|
|
9
9
|
export const IndexedDbArchivistConfigSchema = 'network.xyo.archivist.indexeddb.config';
|
|
10
|
-
export let IndexedDbArchivist = class IndexedDbArchivist extends
|
|
10
|
+
export let IndexedDbArchivist = class IndexedDbArchivist extends AbstractDirectArchivist {
|
|
11
11
|
static { IndexedDbArchivist_1 = this; }
|
|
12
12
|
static configSchemas = [IndexedDbArchivistConfigSchema];
|
|
13
13
|
static defaultDbName = 'archivist';
|
|
@@ -42,36 +42,46 @@ export let IndexedDbArchivist = class IndexedDbArchivist extends AbstractArchivi
|
|
|
42
42
|
get db() {
|
|
43
43
|
return assertEx(this._db, 'DB not initialized');
|
|
44
44
|
}
|
|
45
|
-
async all() {
|
|
46
|
-
const result = await entries(this.db);
|
|
47
|
-
return result.map(([_hash, payload]) => payload);
|
|
48
|
-
}
|
|
49
|
-
async clear() {
|
|
50
|
-
await clear(this.db);
|
|
51
|
-
}
|
|
52
|
-
async delete(hashes) {
|
|
53
|
-
await delMany(hashes, this.db);
|
|
54
|
-
return hashes.map((_) => true);
|
|
55
|
-
}
|
|
56
|
-
async get(hashes) {
|
|
57
|
-
const result = await getMany(hashes, this.db);
|
|
58
|
-
return result;
|
|
59
|
-
}
|
|
60
|
-
async insert(payloads) {
|
|
61
|
-
const entries = await Promise.all(payloads.map(async (payload) => {
|
|
62
|
-
const hash = await PayloadHasher.hashAsync(payload);
|
|
63
|
-
return [hash, payload];
|
|
64
|
-
}));
|
|
65
|
-
await setMany(entries, this.db);
|
|
66
|
-
const [result] = await this.bindQueryResult({ payloads, schema: ArchivistInsertQuerySchema }, payloads);
|
|
67
|
-
return [result[0]];
|
|
68
|
-
}
|
|
69
45
|
async start() {
|
|
70
46
|
await super.start();
|
|
71
47
|
// NOTE: We could defer this creation to first access but we
|
|
72
48
|
// want to fail fast here in case something is wrong
|
|
73
49
|
this._db = createStore(this.dbName, this.storeName);
|
|
74
50
|
}
|
|
51
|
+
async allHandler() {
|
|
52
|
+
return await this.busy(async () => {
|
|
53
|
+
const result = await entries(this.db);
|
|
54
|
+
return result.map(([_hash, payload]) => payload);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async clearHandler() {
|
|
58
|
+
return await this.busy(async () => {
|
|
59
|
+
await clear(this.db);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async deleteHandler(hashes) {
|
|
63
|
+
return await this.busy(async () => {
|
|
64
|
+
await delMany(hashes, this.db);
|
|
65
|
+
return hashes.map((_) => true);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async getHandler(hashes) {
|
|
69
|
+
return await this.busy(async () => {
|
|
70
|
+
const result = await getMany(hashes, this.db);
|
|
71
|
+
return result;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async insertHandler(payloads) {
|
|
75
|
+
return await this.busy(async () => {
|
|
76
|
+
const entries = await Promise.all(payloads.map(async (payload) => {
|
|
77
|
+
const hash = await PayloadHasher.hashAsync(payload);
|
|
78
|
+
return [hash, payload];
|
|
79
|
+
}));
|
|
80
|
+
await setMany(entries, this.db);
|
|
81
|
+
const [result] = await this.bindQueryResult({ payloads, schema: ArchivistInsertQuerySchema }, payloads);
|
|
82
|
+
return [result[0]];
|
|
83
|
+
});
|
|
84
|
+
}
|
|
75
85
|
};
|
|
76
86
|
IndexedDbArchivist = IndexedDbArchivist_1 = __decorate([
|
|
77
87
|
creatableModule()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbArchivist.js","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"IndexedDbArchivist.js","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractDirectArchivist } from '@xyo-network/abstract-archivist';
|
|
2
2
|
import { ArchivistConfig, ArchivistModuleEventData, ArchivistParams } from '@xyo-network/archivist-model';
|
|
3
3
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
4
|
import { AnyConfigSchema } from '@xyo-network/module';
|
|
@@ -17,7 +17,7 @@ export type IndexedDbArchivistConfig = ArchivistConfig<{
|
|
|
17
17
|
storeName?: string;
|
|
18
18
|
}>;
|
|
19
19
|
export type IndexedDbArchivistParams = ArchivistParams<AnyConfigSchema<IndexedDbArchivistConfig>>;
|
|
20
|
-
export declare class IndexedDbArchivist<TParams extends IndexedDbArchivistParams = IndexedDbArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends
|
|
20
|
+
export declare class IndexedDbArchivist<TParams extends IndexedDbArchivistParams = IndexedDbArchivistParams, TEventData extends ArchivistModuleEventData = ArchivistModuleEventData> extends AbstractDirectArchivist<TParams, TEventData> {
|
|
21
21
|
static configSchemas: "network.xyo.archivist.indexeddb.config"[];
|
|
22
22
|
static defaultDbName: string;
|
|
23
23
|
static defaultStoreName: string;
|
|
@@ -43,11 +43,11 @@ export declare class IndexedDbArchivist<TParams extends IndexedDbArchivistParams
|
|
|
43
43
|
*/
|
|
44
44
|
get storeName(): string;
|
|
45
45
|
private get db();
|
|
46
|
-
all(): Promise<Payload[]>;
|
|
47
|
-
clear(): Promise<void>;
|
|
48
|
-
delete(hashes: string[]): Promise<boolean[]>;
|
|
49
|
-
get(hashes: string[]): Promise<Payload[]>;
|
|
50
|
-
insert(payloads: Payload[]): Promise<BoundWitness[]>;
|
|
51
46
|
start(): Promise<void>;
|
|
47
|
+
protected allHandler(): Promise<Payload[]>;
|
|
48
|
+
protected clearHandler(): Promise<void>;
|
|
49
|
+
protected deleteHandler(hashes: string[]): Promise<boolean[]>;
|
|
50
|
+
protected getHandler(hashes: string[]): Promise<Payload[]>;
|
|
51
|
+
protected insertHandler(payloads: Payload[]): Promise<BoundWitness[]>;
|
|
52
52
|
}
|
|
53
53
|
//# sourceMappingURL=IndexedDbArchivist.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbArchivist.d.ts","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"IndexedDbArchivist.d.ts","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AACzE,OAAO,EAGL,eAAe,EAGf,wBAAwB,EACxB,eAAe,EAChB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,MAAM,MAAM,8BAA8B,GAAG,wCAAwC,CAAA;AACrF,eAAO,MAAM,8BAA8B,EAAE,8BAAyE,CAAA;AAEtH,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC;IACrD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,8BAA8B,CAAA;IACtC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAC,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAA;AAEjG,qBACa,kBAAkB,CAC7B,OAAO,SAAS,wBAAwB,GAAG,wBAAwB,EACnE,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CACtE,SAAQ,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC;IACpD,OAAgB,aAAa,6CAAmC;IAChE,MAAM,CAAC,aAAa,SAAc;IAClC,MAAM,CAAC,gBAAgB,SAAa;IAEpC,OAAO,CAAC,GAAG,CAAsB;IAEjC;;;;;;OAMG;IACH,IAAI,MAAM,WAET;IAED,IAAa,OAAO,aAEnB;IACD;;;;;;;;;OASG;IACH,IAAI,SAAS,WAEZ;IAED,OAAO,KAAK,EAAE,GAEb;IAEc,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAOZ,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;cAOhC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAM7B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAOnD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAOzD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAa5E"}
|
package/package.json
CHANGED
|
@@ -11,22 +11,22 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.9.3",
|
|
14
|
-
"@xyo-network/abstract-archivist": "^2.
|
|
15
|
-
"@xyo-network/archivist-model": "^2.
|
|
16
|
-
"@xyo-network/boundwitness-model": "^2.
|
|
17
|
-
"@xyo-network/core": "^2.
|
|
18
|
-
"@xyo-network/module": "^2.
|
|
19
|
-
"@xyo-network/payload-model": "^2.
|
|
20
|
-
"@xyo-network/payload-wrapper": "^2.
|
|
21
|
-
"@xyo-network/promise": "^2.
|
|
14
|
+
"@xyo-network/abstract-archivist": "^2.65.0",
|
|
15
|
+
"@xyo-network/archivist-model": "^2.65.0",
|
|
16
|
+
"@xyo-network/boundwitness-model": "^2.65.0",
|
|
17
|
+
"@xyo-network/core": "^2.65.0",
|
|
18
|
+
"@xyo-network/module": "^2.65.0",
|
|
19
|
+
"@xyo-network/payload-model": "^2.65.0",
|
|
20
|
+
"@xyo-network/payload-wrapper": "^2.65.0",
|
|
21
|
+
"@xyo-network/promise": "^2.65.0",
|
|
22
22
|
"idb-keyval": "^6.2.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@xylabs/delay": "^2.9.3",
|
|
26
|
-
"@xylabs/ts-scripts-yarn3": "^2.18.
|
|
27
|
-
"@xylabs/tsconfig": "^2.18.
|
|
28
|
-
"@xyo-network/boundwitness-wrapper": "^2.
|
|
29
|
-
"@xyo-network/plugins": "^2.
|
|
26
|
+
"@xylabs/ts-scripts-yarn3": "^2.18.10",
|
|
27
|
+
"@xylabs/tsconfig": "^2.18.10",
|
|
28
|
+
"@xyo-network/boundwitness-wrapper": "^2.65.0",
|
|
29
|
+
"@xyo-network/plugins": "^2.65.0",
|
|
30
30
|
"fake-indexeddb": "^4.0.1",
|
|
31
31
|
"typescript": "^5.1.6"
|
|
32
32
|
},
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
},
|
|
64
64
|
"sideEffects": false,
|
|
65
65
|
"types": "dist/types/index.d.ts",
|
|
66
|
-
"version": "2.
|
|
66
|
+
"version": "2.65.0"
|
|
67
67
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import {
|
|
2
|
+
import { AbstractDirectArchivist } from '@xyo-network/abstract-archivist'
|
|
3
3
|
import {
|
|
4
4
|
ArchivistAllQuerySchema,
|
|
5
5
|
ArchivistClearQuerySchema,
|
|
@@ -36,7 +36,7 @@ export type IndexedDbArchivistParams = ArchivistParams<AnyConfigSchema<IndexedDb
|
|
|
36
36
|
export class IndexedDbArchivist<
|
|
37
37
|
TParams extends IndexedDbArchivistParams = IndexedDbArchivistParams,
|
|
38
38
|
TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,
|
|
39
|
-
> extends
|
|
39
|
+
> extends AbstractDirectArchivist<TParams, TEventData> {
|
|
40
40
|
static override configSchemas = [IndexedDbArchivistConfigSchema]
|
|
41
41
|
static defaultDbName = 'archivist'
|
|
42
42
|
static defaultStoreName = 'payloads'
|
|
@@ -75,41 +75,51 @@ export class IndexedDbArchivist<
|
|
|
75
75
|
return assertEx(this._db, 'DB not initialized')
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
override async
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
override async start(): Promise<void> {
|
|
79
|
+
await super.start()
|
|
80
|
+
// NOTE: We could defer this creation to first access but we
|
|
81
|
+
// want to fail fast here in case something is wrong
|
|
82
|
+
this._db = createStore(this.dbName, this.storeName)
|
|
81
83
|
}
|
|
82
84
|
|
|
83
|
-
override async
|
|
84
|
-
await
|
|
85
|
+
protected override async allHandler(): Promise<Payload[]> {
|
|
86
|
+
return await this.busy(async () => {
|
|
87
|
+
const result = await entries<string, Payload>(this.db)
|
|
88
|
+
return result.map<Payload>(([_hash, payload]) => payload)
|
|
89
|
+
})
|
|
85
90
|
}
|
|
86
91
|
|
|
87
|
-
override async
|
|
88
|
-
await
|
|
89
|
-
|
|
92
|
+
protected override async clearHandler(): Promise<void> {
|
|
93
|
+
return await this.busy(async () => {
|
|
94
|
+
await clear(this.db)
|
|
95
|
+
})
|
|
90
96
|
}
|
|
91
97
|
|
|
92
|
-
override async
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
protected override async deleteHandler(hashes: string[]): Promise<boolean[]> {
|
|
99
|
+
return await this.busy(async () => {
|
|
100
|
+
await delMany(hashes, this.db)
|
|
101
|
+
return hashes.map((_) => true)
|
|
102
|
+
})
|
|
95
103
|
}
|
|
96
104
|
|
|
97
|
-
async
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}),
|
|
103
|
-
)
|
|
104
|
-
await setMany(entries, this.db)
|
|
105
|
-
const [result] = await this.bindQueryResult({ payloads, schema: ArchivistInsertQuerySchema }, payloads)
|
|
106
|
-
return [result[0]]
|
|
105
|
+
protected override async getHandler(hashes: string[]): Promise<Payload[]> {
|
|
106
|
+
return await this.busy(async () => {
|
|
107
|
+
const result = await getMany<Payload>(hashes, this.db)
|
|
108
|
+
return result
|
|
109
|
+
})
|
|
107
110
|
}
|
|
108
111
|
|
|
109
|
-
|
|
110
|
-
await
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
protected async insertHandler(payloads: Payload[]): Promise<BoundWitness[]> {
|
|
113
|
+
return await this.busy(async () => {
|
|
114
|
+
const entries = await Promise.all(
|
|
115
|
+
payloads.map<Promise<[string, Payload]>>(async (payload) => {
|
|
116
|
+
const hash = await PayloadHasher.hashAsync(payload)
|
|
117
|
+
return [hash, payload]
|
|
118
|
+
}),
|
|
119
|
+
)
|
|
120
|
+
await setMany(entries, this.db)
|
|
121
|
+
const [result] = await this.bindQueryResult({ payloads, schema: ArchivistInsertQuerySchema }, payloads)
|
|
122
|
+
return [result[0]]
|
|
123
|
+
})
|
|
114
124
|
}
|
|
115
125
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { delay } from '@xylabs/delay'
|
|
6
|
-
import {
|
|
6
|
+
import { ArchivistInstance } from '@xyo-network/archivist-model'
|
|
7
7
|
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|
|
8
8
|
import { PayloadHasher } from '@xyo-network/core'
|
|
9
9
|
import { Payload } from '@xyo-network/payload-model'
|
|
@@ -11,7 +11,7 @@ import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
|
11
11
|
import { IdSchema } from '@xyo-network/plugins'
|
|
12
12
|
import { Promisable } from '@xyo-network/promise'
|
|
13
13
|
|
|
14
|
-
export const testArchivistRoundTrip = (archivist: Promisable<
|
|
14
|
+
export const testArchivistRoundTrip = (archivist: Promisable<ArchivistInstance>, name: string) => {
|
|
15
15
|
test(`Archivist RoundTrip [${name}]`, async () => {
|
|
16
16
|
const idPayload: Payload<{ salt: string }> = {
|
|
17
17
|
salt: Date.now().toString(),
|
|
@@ -37,7 +37,7 @@ export const testArchivistRoundTrip = (archivist: Promisable<ArchivistModule>, n
|
|
|
37
37
|
})
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
export const testArchivistAll = (archivist: Promisable<
|
|
40
|
+
export const testArchivistAll = (archivist: Promisable<ArchivistInstance>, name: string) => {
|
|
41
41
|
test(`Archivist All [${name}]`, async () => {
|
|
42
42
|
const idPayload = {
|
|
43
43
|
salt: Date.now().toString(),
|