@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.
@@ -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.AbstractArchivist {
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
- all() {
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
- const result = yield (0, idb_keyval_1.entries)(this.db);
48
- return result.map(([_hash, payload]) => payload);
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
- clear() {
56
+ allHandler() {
52
57
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
53
- yield (0, idb_keyval_1.clear)(this.db);
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
- delete(hashes) {
64
+ clearHandler() {
57
65
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
58
- yield (0, idb_keyval_1.delMany)(hashes, this.db);
59
- return hashes.map((_) => true);
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
- get(hashes) {
71
+ deleteHandler(hashes) {
63
72
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
64
- const result = yield (0, idb_keyval_1.getMany)(hashes, this.db);
65
- return result;
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
- insert(payloads) {
79
+ getHandler(hashes) {
69
80
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
70
- const entries = yield Promise.all(payloads.map((payload) => tslib_1.__awaiter(this, void 0, void 0, function* () {
71
- const hash = yield core_1.PayloadHasher.hashAsync(payload);
72
- return [hash, payload];
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
- start() {
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 _super.start.call(this);
85
- // NOTE: We could defer this creation to first access but we
86
- // want to fail fast here in case something is wrong
87
- this._db = (0, idb_keyval_1.createStore)(this.dbName, this.storeName);
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,wEAAmE;AACnE,kEAQqC;AAErC,4CAAiD;AACjD,gDAAsE;AAEtE,2CAA6F;AAGhF,QAAA,8BAA8B,GAAmC,wCAAwC,CAAA;AAiB/G,IAAM,kBAAkB,uDAAxB,MAAM,kBAGX,SAAQ,sCAAsC;IAO9C;;;;;;OAMG;IACH,IAAI,MAAM;;QACR,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,mCAAI,oBAAkB,CAAC,aAAa,CAAA;IACrF,CAAC;IAED,IAAa,OAAO;QAClB,OAAO,CAAC,yCAAuB,EAAE,2CAAyB,EAAE,4CAA0B,EAAE,4CAA0B,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACvI,CAAC;IACD;;;;;;;;;OASG;IACH,IAAI,SAAS;;QACX,OAAO,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,mCAAI,oBAAkB,CAAC,gBAAgB,CAAA;IACtE,CAAC;IAED,IAAY,EAAE;QACZ,OAAO,IAAA,iBAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IACjD,CAAC;IAEc,GAAG;;YAChB,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAO,EAAkB,IAAI,CAAC,EAAE,CAAC,CAAA;YACtD,OAAO,MAAM,CAAC,GAAG,CAAU,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;QAC3D,CAAC;KAAA;IAEc,KAAK;;YAClB,MAAM,IAAA,kBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;KAAA;IAEc,MAAM,CAAC,MAAgB;;YACpC,MAAM,IAAA,oBAAO,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;KAAA;IAEc,GAAG,CAAC,MAAgB;;YACjC,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAO,EAAU,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YACtD,OAAO,MAAM,CAAA;QACf,CAAC;KAAA;IAEK,MAAM,CAAC,QAAmB;;YAC9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAA6B,CAAO,OAAO,EAAE,EAAE;gBACzD,MAAM,IAAI,GAAG,MAAM,oBAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;gBACnD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACxB,CAAC,CAAA,CAAC,CACH,CAAA;YACD,MAAM,IAAA,oBAAO,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,4CAA0B,EAAE,EAAE,QAAQ,CAAC,CAAA;YACvG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;KAAA;IAEc,KAAK;;;;;YAClB,MAAM,OAAM,KAAK,WAAE,CAAA;YACnB,4DAA4D;YAC5D,oDAAoD;YACpD,IAAI,CAAC,GAAG,GAAG,IAAA,wBAAW,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACrD,CAAC;KAAA;;AA1Ee,gCAAa,GAAG,CAAC,sCAA8B,CAAC,AAAnC,CAAmC;AACzD,gCAAa,GAAG,WAAW,AAAd,CAAc;AAC3B,mCAAgB,GAAG,UAAU,AAAb,CAAa;6BANzB,kBAAkB;IAD9B,IAAA,wBAAe,GAAE;GACL,kBAAkB,CA+E9B"}
1
+ {"version":3,"file":"IndexedDbArchivist.js","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":";;;;;AAAA,2CAAyC;AACzC,wEAAyE;AACzE,kEAQqC;AAErC,4CAAiD;AACjD,gDAAsE;AAEtE,2CAA6F;AAGhF,QAAA,8BAA8B,GAAmC,wCAAwC,CAAA;AAiB/G,IAAM,kBAAkB,uDAAxB,MAAM,kBAGX,SAAQ,4CAA4C;IAOpD;;;;;;OAMG;IACH,IAAI,MAAM;;QACR,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,mCAAI,oBAAkB,CAAC,aAAa,CAAA;IACrF,CAAC;IAED,IAAa,OAAO;QAClB,OAAO,CAAC,yCAAuB,EAAE,2CAAyB,EAAE,4CAA0B,EAAE,4CAA0B,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACvI,CAAC;IACD;;;;;;;;;OASG;IACH,IAAI,SAAS;;QACX,OAAO,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,mCAAI,oBAAkB,CAAC,gBAAgB,CAAA;IACtE,CAAC;IAED,IAAY,EAAE;QACZ,OAAO,IAAA,iBAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IACjD,CAAC;IAEc,KAAK;;;;;YAClB,MAAM,OAAM,KAAK,WAAE,CAAA;YACnB,4DAA4D;YAC5D,oDAAoD;YACpD,IAAI,CAAC,GAAG,GAAG,IAAA,wBAAW,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACrD,CAAC;KAAA;IAEwB,UAAU;;YACjC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAO,EAAkB,IAAI,CAAC,EAAE,CAAC,CAAA;gBACtD,OAAO,MAAM,CAAC,GAAG,CAAU,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;YAC3D,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEwB,YAAY;;YACnC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,MAAM,IAAA,kBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACtB,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEwB,aAAa,CAAC,MAAgB;;YACrD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,MAAM,IAAA,oBAAO,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;YAChC,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEwB,UAAU,CAAC,MAAgB;;YAClD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAO,EAAU,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;gBACtD,OAAO,MAAM,CAAA;YACf,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;IAEe,aAAa,CAAC,QAAmB;;YAC/C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE;gBAChC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAA6B,CAAO,OAAO,EAAE,EAAE;oBACzD,MAAM,IAAI,GAAG,MAAM,oBAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;oBACnD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;gBACxB,CAAC,CAAA,CAAC,CACH,CAAA;gBACD,MAAM,IAAA,oBAAO,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,4CAA0B,EAAE,EAAE,QAAQ,CAAC,CAAA;gBACvG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACpB,CAAC,CAAA,CAAC,CAAA;QACJ,CAAC;KAAA;;AApFe,gCAAa,GAAG,CAAC,sCAA8B,CAAC,AAAnC,CAAmC;AACzD,gCAAa,GAAG,WAAW,AAAd,CAAc;AAC3B,mCAAgB,GAAG,UAAU,AAAb,CAAa;6BANzB,kBAAkB;IAD9B,IAAA,wBAAe,GAAE;GACL,kBAAkB,CAyF9B"}
@@ -1,13 +1,13 @@
1
1
  var IndexedDbArchivist_1;
2
2
  import { __decorate } from "tslib";
3
3
  import { assertEx } from '@xylabs/assert';
4
- import { AbstractArchivist } from '@xyo-network/abstract-archivist';
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 AbstractArchivist {
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,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAEzB,0BAA0B,EAC1B,0BAA0B,GAG3B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAmB,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEtE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAY,MAAM,YAAY,CAAA;AAG7F,MAAM,CAAC,MAAM,8BAA8B,GAAmC,wCAAwC,CAAA;AAiB/G,WAAM,kBAAkB,GAAxB,MAAM,kBAGX,SAAQ,iBAAsC;;IAC9C,MAAM,CAAU,aAAa,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAChE,MAAM,CAAC,aAAa,GAAG,WAAW,CAAA;IAClC,MAAM,CAAC,gBAAgB,GAAG,UAAU,CAAA;IAE5B,GAAG,CAAsB;IAEjC;;;;;;OAMG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,oBAAkB,CAAC,aAAa,CAAA;IACrF,CAAC;IAED,IAAa,OAAO;QAClB,OAAO,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACvI,CAAC;IACD;;;;;;;;;OASG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,oBAAkB,CAAC,gBAAgB,CAAA;IACtE,CAAC;IAED,IAAY,EAAE;QACZ,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IACjD,CAAC;IAEQ,KAAK,CAAC,GAAG;QAChB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,EAAE,CAAC,CAAA;QACtD,OAAO,MAAM,CAAC,GAAG,CAAU,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACtB,CAAC;IAEQ,KAAK,CAAC,MAAM,CAAC,MAAgB;QACpC,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEQ,KAAK,CAAC,GAAG,CAAC,MAAgB;QACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAU,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QACtD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAmB;QAC9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAA6B,KAAK,EAAE,OAAO,EAAE,EAAE;YACzD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACnD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACxB,CAAC,CAAC,CACH,CAAA;QACD,MAAM,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,EAAE,QAAQ,CAAC,CAAA;QACvG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACpB,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,4DAA4D;QAC5D,oDAAoD;QACpD,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACrD,CAAC;;AA9EU,kBAAkB;IAD9B,eAAe,EAAE;GACL,kBAAkB,CA+E9B"}
1
+ {"version":3,"file":"IndexedDbArchivist.js","sourceRoot":"","sources":["../../src/IndexedDbArchivist.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AbstractArchivist } from '@xyo-network/abstract-archivist';
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 AbstractArchivist<TParams, TEventData> {
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,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,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,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC;IAC9C,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,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAK5C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAKlD,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAMtC"}
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.64.9",
15
- "@xyo-network/archivist-model": "^2.64.9",
16
- "@xyo-network/boundwitness-model": "^2.64.9",
17
- "@xyo-network/core": "^2.64.9",
18
- "@xyo-network/module": "^2.64.9",
19
- "@xyo-network/payload-model": "^2.64.9",
20
- "@xyo-network/payload-wrapper": "^2.64.9",
21
- "@xyo-network/promise": "^2.64.9",
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.7",
27
- "@xylabs/tsconfig": "^2.18.7",
28
- "@xyo-network/boundwitness-wrapper": "^2.64.9",
29
- "@xyo-network/plugins": "^2.64.9",
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.64.9"
66
+ "version": "2.65.0"
67
67
  }
@@ -1,5 +1,5 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
- import { AbstractArchivist } from '@xyo-network/abstract-archivist'
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 AbstractArchivist<TParams, TEventData> {
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 all(): Promise<Payload[]> {
79
- const result = await entries<string, Payload>(this.db)
80
- return result.map<Payload>(([_hash, payload]) => payload)
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 clear(): Promise<void> {
84
- await clear(this.db)
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 delete(hashes: string[]): Promise<boolean[]> {
88
- await delMany(hashes, this.db)
89
- return hashes.map((_) => true)
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 get(hashes: string[]): Promise<Payload[]> {
93
- const result = await getMany<Payload>(hashes, this.db)
94
- return result
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 insert(payloads: Payload[]): Promise<BoundWitness[]> {
98
- const entries = await Promise.all(
99
- payloads.map<Promise<[string, Payload]>>(async (payload) => {
100
- const hash = await PayloadHasher.hashAsync(payload)
101
- return [hash, payload]
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
- override async start(): Promise<void> {
110
- await super.start()
111
- // NOTE: We could defer this creation to first access but we
112
- // want to fail fast here in case something is wrong
113
- this._db = createStore(this.dbName, this.storeName)
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 { ArchivistModule } from '@xyo-network/archivist-model'
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<ArchivistModule>, name: string) => {
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<ArchivistModule>, name: string) => {
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(),