@deephaven/pouch-storage 0.22.3-deep-bot-test.14 → 0.23.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.
@@ -1,13 +1,8 @@
1
1
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
2
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
3
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
6
-
7
4
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
8
-
9
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
-
11
6
  /* eslint-disable class-methods-use-this */
12
7
  import Log from '@deephaven/log';
13
8
  import PouchCommandHistoryTable from "./PouchCommandHistoryTable.js";
@@ -16,24 +11,19 @@ export class PouchCommandHistoryStorage {
16
11
  constructor() {
17
12
  _defineProperty(this, "updateTableMap", new Map());
18
13
  }
19
-
20
14
  getUpdateTable(language) {
21
15
  if (!this.updateTableMap.has(language)) {
22
16
  this.updateTableMap.set(language, new PouchCommandHistoryTable(language));
23
17
  }
24
-
25
18
  return this.updateTableMap.get(language);
26
19
  }
27
-
28
20
  getTable(language) {
29
21
  return _asyncToGenerator(function* () {
30
22
  return new PouchCommandHistoryTable(language);
31
23
  })();
32
24
  }
33
-
34
25
  addItem(language, scope, command, data) {
35
26
  var _this = this;
36
-
37
27
  return _asyncToGenerator(function* () {
38
28
  return _this.updateItem(language, {
39
29
  id: "".concat(new Date().getTime()),
@@ -42,29 +32,22 @@ export class PouchCommandHistoryStorage {
42
32
  });
43
33
  })();
44
34
  }
45
-
46
35
  updateItem(language, item) {
47
36
  var _this2 = this;
48
-
49
37
  return _asyncToGenerator(function* () {
50
38
  var updateTable = _this2.getUpdateTable(language);
51
-
52
39
  var dbItem = yield updateTable.refreshItem(item.id);
53
-
54
40
  var updatedItem = _objectSpread(_objectSpread({}, dbItem !== null && dbItem !== void 0 ? dbItem : {}), item);
55
-
56
41
  log.debug('Updating item', updatedItem);
57
42
  yield updateTable.put(updatedItem);
58
43
  log.debug('Update saved');
59
44
  return item;
60
45
  })();
61
46
  }
62
-
63
47
  listenItem(language, id, listener) {
64
48
  var updateTable = this.getUpdateTable(language);
65
49
  return updateTable.onItemUpdate(id, listener);
66
50
  }
67
-
68
51
  }
69
52
  export default PouchCommandHistoryStorage;
70
53
  //# sourceMappingURL=PouchCommandHistoryStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PouchCommandHistoryStorage.js","names":["Log","PouchCommandHistoryTable","log","module","PouchCommandHistoryStorage","Map","getUpdateTable","language","updateTableMap","has","set","get","getTable","addItem","scope","command","data","updateItem","id","Date","getTime","name","item","updateTable","dbItem","refreshItem","updatedItem","debug","put","listenItem","listener","onItemUpdate"],"sources":["../src/PouchCommandHistoryStorage.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport Log from '@deephaven/log';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageData,\n CommandHistoryStorageItem,\n} from '@deephaven/console';\nimport {\n StorageItemListener,\n StorageListenerRemover,\n} from '@deephaven/storage';\nimport PouchCommandHistoryTable from './PouchCommandHistoryTable';\n\nconst log = Log.module('PouchCommandHistoryStorage');\n\nexport class PouchCommandHistoryStorage implements CommandHistoryStorage {\n private updateTableMap = new Map<string, PouchCommandHistoryTable>();\n\n private getUpdateTable(language: string): PouchCommandHistoryTable {\n if (!this.updateTableMap.has(language)) {\n this.updateTableMap.set(language, new PouchCommandHistoryTable(language));\n }\n\n return this.updateTableMap.get(language) as PouchCommandHistoryTable;\n }\n\n async getTable(language: string): Promise<PouchCommandHistoryTable> {\n return new PouchCommandHistoryTable(language);\n }\n\n async addItem(\n language: string,\n scope: string,\n command: string,\n data: CommandHistoryStorageData\n ): Promise<CommandHistoryStorageItem> {\n return this.updateItem(language, {\n id: `${new Date().getTime()}`,\n name: command,\n data,\n } as CommandHistoryStorageItem);\n }\n\n async updateItem(\n language: string,\n item: CommandHistoryStorageItem\n ): Promise<CommandHistoryStorageItem> {\n const updateTable = this.getUpdateTable(language);\n\n const dbItem = await updateTable.refreshItem(item.id);\n\n const updatedItem = { ...(dbItem ?? {}), ...item };\n\n log.debug('Updating item', updatedItem);\n\n await updateTable.put(updatedItem);\n\n log.debug('Update saved');\n\n return item;\n }\n\n listenItem(\n language: string,\n id: string,\n listener: StorageItemListener<CommandHistoryStorageItem>\n ): StorageListenerRemover {\n const updateTable = this.getUpdateTable(language);\n\n return updateTable.onItemUpdate(id, listener);\n }\n}\n\nexport default PouchCommandHistoryStorage;\n"],"mappings":";;;;;;;;;;AAAA;AACA,OAAOA,GAAP,MAAgB,gBAAhB;OAUOC,wB;AAEP,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,4BAAX,CAAZ;AAEA,OAAO,MAAMC,0BAAN,CAAkE;EAAA;IAAA,wCAC9C,IAAIC,GAAJ,EAD8C;EAAA;;EAG/DC,cAAc,CAACC,QAAD,EAA6C;IACjE,IAAI,CAAC,KAAKC,cAAL,CAAoBC,GAApB,CAAwBF,QAAxB,CAAL,EAAwC;MACtC,KAAKC,cAAL,CAAoBE,GAApB,CAAwBH,QAAxB,EAAkC,IAAIN,wBAAJ,CAA6BM,QAA7B,CAAlC;IACD;;IAED,OAAO,KAAKC,cAAL,CAAoBG,GAApB,CAAwBJ,QAAxB,CAAP;EACD;;EAEKK,QAAQ,CAACL,QAAD,EAAsD;IAAA;MAClE,OAAO,IAAIN,wBAAJ,CAA6BM,QAA7B,CAAP;IADkE;EAEnE;;EAEKM,OAAO,CACXN,QADW,EAEXO,KAFW,EAGXC,OAHW,EAIXC,IAJW,EAKyB;IAAA;;IAAA;MACpC,OAAO,KAAI,CAACC,UAAL,CAAgBV,QAAhB,EAA0B;QAC/BW,EAAE,YAAK,IAAIC,IAAJ,GAAWC,OAAX,EAAL,CAD6B;QAE/BC,IAAI,EAAEN,OAFyB;QAG/BC;MAH+B,CAA1B,CAAP;IADoC;EAMrC;;EAEKC,UAAU,CACdV,QADc,EAEde,IAFc,EAGsB;IAAA;;IAAA;MACpC,IAAMC,WAAW,GAAG,MAAI,CAACjB,cAAL,CAAoBC,QAApB,CAApB;;MAEA,IAAMiB,MAAM,SAASD,WAAW,CAACE,WAAZ,CAAwBH,IAAI,CAACJ,EAA7B,CAArB;;MAEA,IAAMQ,WAAW,mCAASF,MAAT,aAASA,MAAT,cAASA,MAAT,GAAmB,EAAnB,GAA2BF,IAA3B,CAAjB;;MAEApB,GAAG,CAACyB,KAAJ,CAAU,eAAV,EAA2BD,WAA3B;MAEA,MAAMH,WAAW,CAACK,GAAZ,CAAgBF,WAAhB,CAAN;MAEAxB,GAAG,CAACyB,KAAJ,CAAU,cAAV;MAEA,OAAOL,IAAP;IAboC;EAcrC;;EAEDO,UAAU,CACRtB,QADQ,EAERW,EAFQ,EAGRY,QAHQ,EAIgB;IACxB,IAAMP,WAAW,GAAG,KAAKjB,cAAL,CAAoBC,QAApB,CAApB;IAEA,OAAOgB,WAAW,CAACQ,YAAZ,CAAyBb,EAAzB,EAA6BY,QAA7B,CAAP;EACD;;AAvDsE;AA0DzE,eAAe1B,0BAAf"}
1
+ {"version":3,"file":"PouchCommandHistoryStorage.js","names":["Log","PouchCommandHistoryTable","log","module","PouchCommandHistoryStorage","Map","getUpdateTable","language","updateTableMap","has","set","get","getTable","addItem","scope","command","data","updateItem","id","Date","getTime","name","item","updateTable","dbItem","refreshItem","updatedItem","debug","put","listenItem","listener","onItemUpdate"],"sources":["../src/PouchCommandHistoryStorage.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport Log from '@deephaven/log';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageData,\n CommandHistoryStorageItem,\n} from '@deephaven/console';\nimport {\n StorageItemListener,\n StorageListenerRemover,\n} from '@deephaven/storage';\nimport PouchCommandHistoryTable from './PouchCommandHistoryTable';\n\nconst log = Log.module('PouchCommandHistoryStorage');\n\nexport class PouchCommandHistoryStorage implements CommandHistoryStorage {\n private updateTableMap = new Map<string, PouchCommandHistoryTable>();\n\n private getUpdateTable(language: string): PouchCommandHistoryTable {\n if (!this.updateTableMap.has(language)) {\n this.updateTableMap.set(language, new PouchCommandHistoryTable(language));\n }\n\n return this.updateTableMap.get(language) as PouchCommandHistoryTable;\n }\n\n async getTable(language: string): Promise<PouchCommandHistoryTable> {\n return new PouchCommandHistoryTable(language);\n }\n\n async addItem(\n language: string,\n scope: string,\n command: string,\n data: CommandHistoryStorageData\n ): Promise<CommandHistoryStorageItem> {\n return this.updateItem(language, {\n id: `${new Date().getTime()}`,\n name: command,\n data,\n } as CommandHistoryStorageItem);\n }\n\n async updateItem(\n language: string,\n item: CommandHistoryStorageItem\n ): Promise<CommandHistoryStorageItem> {\n const updateTable = this.getUpdateTable(language);\n\n const dbItem = await updateTable.refreshItem(item.id);\n\n const updatedItem = { ...(dbItem ?? {}), ...item };\n\n log.debug('Updating item', updatedItem);\n\n await updateTable.put(updatedItem);\n\n log.debug('Update saved');\n\n return item;\n }\n\n listenItem(\n language: string,\n id: string,\n listener: StorageItemListener<CommandHistoryStorageItem>\n ): StorageListenerRemover {\n const updateTable = this.getUpdateTable(language);\n\n return updateTable.onItemUpdate(id, listener);\n }\n}\n\nexport default PouchCommandHistoryStorage;\n"],"mappings":";;;;;AAAA;AACA,OAAOA,GAAG,MAAM,gBAAgB;AAAC,OAU1BC,wBAAwB;AAE/B,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAM,CAAC,4BAA4B,CAAC;AAEpD,OAAO,MAAMC,0BAA0B,CAAkC;EAAA;IAAA,wCAC9C,IAAIC,GAAG,EAAoC;EAAA;EAE5DC,cAAc,CAACC,QAAgB,EAA4B;IACjE,IAAI,CAAC,IAAI,CAACC,cAAc,CAACC,GAAG,CAACF,QAAQ,CAAC,EAAE;MACtC,IAAI,CAACC,cAAc,CAACE,GAAG,CAACH,QAAQ,EAAE,IAAIN,wBAAwB,CAACM,QAAQ,CAAC,CAAC;IAC3E;IAEA,OAAO,IAAI,CAACC,cAAc,CAACG,GAAG,CAACJ,QAAQ,CAAC;EAC1C;EAEMK,QAAQ,CAACL,QAAgB,EAAqC;IAAA;MAClE,OAAO,IAAIN,wBAAwB,CAACM,QAAQ,CAAC;IAAC;EAChD;EAEMM,OAAO,CACXN,QAAgB,EAChBO,KAAa,EACbC,OAAe,EACfC,IAA+B,EACK;IAAA;IAAA;MACpC,OAAO,KAAI,CAACC,UAAU,CAACV,QAAQ,EAAE;QAC/BW,EAAE,YAAK,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE,CAAE;QAC7BC,IAAI,EAAEN,OAAO;QACbC;MACF,CAAC,CAA8B;IAAC;EAClC;EAEMC,UAAU,CACdV,QAAgB,EAChBe,IAA+B,EACK;IAAA;IAAA;MACpC,IAAMC,WAAW,GAAG,MAAI,CAACjB,cAAc,CAACC,QAAQ,CAAC;MAEjD,IAAMiB,MAAM,SAASD,WAAW,CAACE,WAAW,CAACH,IAAI,CAACJ,EAAE,CAAC;MAErD,IAAMQ,WAAW,mCAASF,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,CAAC,CAAC,GAAMF,IAAI,CAAE;MAElDpB,GAAG,CAACyB,KAAK,CAAC,eAAe,EAAED,WAAW,CAAC;MAEvC,MAAMH,WAAW,CAACK,GAAG,CAACF,WAAW,CAAC;MAElCxB,GAAG,CAACyB,KAAK,CAAC,cAAc,CAAC;MAEzB,OAAOL,IAAI;IAAC;EACd;EAEAO,UAAU,CACRtB,QAAgB,EAChBW,EAAU,EACVY,QAAwD,EAChC;IACxB,IAAMP,WAAW,GAAG,IAAI,CAACjB,cAAc,CAACC,QAAQ,CAAC;IAEjD,OAAOgB,WAAW,CAACQ,YAAY,CAACb,EAAE,EAAEY,QAAQ,CAAC;EAC/C;AACF;AAEA,eAAe1B,0BAA0B"}
@@ -5,11 +5,9 @@ export class PouchCommandHistoryTable extends PouchStorageTable<CommandHistorySt
5
5
  constructor(language) {
6
6
  super("CommandHistoryStorage.".concat(language));
7
7
  }
8
-
9
8
  setSearch(search) {
10
9
  this.setFilters(search ? [StorageUtils.makeFilterConfig([StorageUtils.makeFilterItem('name', FilterType.contains, search)])] : []);
11
10
  }
12
-
13
11
  }
14
12
  export default PouchCommandHistoryTable;
15
13
  //# sourceMappingURL=PouchCommandHistoryTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PouchCommandHistoryTable.js","names":["Type","FilterType","StorageUtils","PouchStorageTable","PouchCommandHistoryTable","CommandHistoryStorageItem","constructor","language","setSearch","search","setFilters","makeFilterConfig","makeFilterItem","contains"],"sources":["../src/PouchCommandHistoryTable.ts"],"sourcesContent":["import {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from '@deephaven/console';\nimport { Type as FilterType } from '@deephaven/filters';\nimport { StorageUtils } from '@deephaven/storage';\nimport PouchStorageTable from './PouchStorageTable';\n\nexport class PouchCommandHistoryTable\n extends PouchStorageTable<CommandHistoryStorageItem>\n implements CommandHistoryTable {\n constructor(language: string) {\n super(`CommandHistoryStorage.${language}`);\n }\n\n setSearch(search: string): void {\n this.setFilters(\n search\n ? [\n StorageUtils.makeFilterConfig([\n StorageUtils.makeFilterItem('name', FilterType.contains, search),\n ]),\n ]\n : []\n );\n }\n}\n\nexport default PouchCommandHistoryTable;\n"],"mappings":"AAIA,SAASA,IAAI,IAAIC,UAAjB,QAAmC,oBAAnC;AACA,SAASC,YAAT,QAA6B,oBAA7B;OACOC,iB;AAEP,OAAO,MAAMC,wBAAN,SACGD,iBAAiB,CAACE,yBAAD,CADpB,CAE0B;EAC/BC,WAAW,CAACC,QAAD,EAAmB;IAC5B,sCAA+BA,QAA/B;EACD;;EAEDC,SAAS,CAACC,MAAD,EAAuB;IAC9B,KAAKC,UAAL,CACED,MAAM,GACF,CACEP,YAAY,CAACS,gBAAb,CAA8B,CAC5BT,YAAY,CAACU,cAAb,CAA4B,MAA5B,EAAoCX,UAAU,CAACY,QAA/C,EAAyDJ,MAAzD,CAD4B,CAA9B,CADF,CADE,GAMF,EAPN;EASD;;AAf8B;AAkBjC,eAAeL,wBAAf"}
1
+ {"version":3,"file":"PouchCommandHistoryTable.js","names":["Type","FilterType","StorageUtils","PouchStorageTable","PouchCommandHistoryTable","CommandHistoryStorageItem","constructor","language","setSearch","search","setFilters","makeFilterConfig","makeFilterItem","contains"],"sources":["../src/PouchCommandHistoryTable.ts"],"sourcesContent":["import {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from '@deephaven/console';\nimport { Type as FilterType } from '@deephaven/filters';\nimport { StorageUtils } from '@deephaven/storage';\nimport PouchStorageTable from './PouchStorageTable';\n\nexport class PouchCommandHistoryTable\n extends PouchStorageTable<CommandHistoryStorageItem>\n implements CommandHistoryTable {\n constructor(language: string) {\n super(`CommandHistoryStorage.${language}`);\n }\n\n setSearch(search: string): void {\n this.setFilters(\n search\n ? [\n StorageUtils.makeFilterConfig([\n StorageUtils.makeFilterItem('name', FilterType.contains, search),\n ]),\n ]\n : []\n );\n }\n}\n\nexport default PouchCommandHistoryTable;\n"],"mappings":"AAIA,SAASA,IAAI,IAAIC,UAAU,QAAQ,oBAAoB;AACvD,SAASC,YAAY,QAAQ,oBAAoB;AAAC,OAC3CC,iBAAiB;AAExB,OAAO,MAAMC,wBAAwB,SAC3BD,iBAAiB,CAACE,yBAAyB,CAAC,CACrB;EAC/BC,WAAW,CAACC,QAAgB,EAAE;IAC5B,KAAK,iCAA0BA,QAAQ,EAAG;EAC5C;EAEAC,SAAS,CAACC,MAAc,EAAQ;IAC9B,IAAI,CAACC,UAAU,CACbD,MAAM,GACF,CACEP,YAAY,CAACS,gBAAgB,CAAC,CAC5BT,YAAY,CAACU,cAAc,CAAC,MAAM,EAAEX,UAAU,CAACY,QAAQ,EAAEJ,MAAM,CAAC,CACjE,CAAC,CACH,GACD,EAAE,CACP;EACH;AACF;AAEA,eAAeL,wBAAwB"}
@@ -1,5 +1,5 @@
1
1
  import { FilterConfig, SortConfig, StorageItem, StorageTable, StorageListenerRemover, StorageTableViewport, StorageItemListener, StorageSnapshot, ViewportData, ViewportUpdateCallback } from '@deephaven/storage';
2
- export declare type PouchDBSort = Array<string | {
2
+ export type PouchDBSort = Array<string | {
3
3
  [propName: string]: 'asc' | 'desc';
4
4
  }>;
5
5
  export declare class PouchStorageTable<T extends StorageItem = StorageItem> implements StorageTable<T> {
@@ -1 +1 @@
1
- {"version":3,"file":"PouchStorageTable.d.ts","sourceRoot":"","sources":["../src/PouchStorageTable.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,YAAY,EAEZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAa5B,oBAAY,WAAW,GAAG,KAAK,CAC7B,MAAM,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;CAAE,CAChD,CAAC;AAgFF,qBAAa,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAChE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAyC;IAEnD,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,aAAa,CAAoD;IAEzE,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,eAAe,CAAC,CAAuB;IAE/C,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,aAAa,CAA+B;IAEpD,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,iBAAiB,CAAC,CAExB;IAEF,OAAO,CAAC,qBAAqB,CAAC,CAAqC;IAEnE,OAAO,CAAC,mBAAmB,CAAC,CAAkB;gBAElC,YAAY,EAAE,MAAM;IAgBhC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,sBAAsB;IAOrE,YAAY,CACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,sBAAsB;IAsBzB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,oBAAoB,GAAG,SAAS,CAE/C;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQpC,WAAW,CAAC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI;IAQ7D,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,GAAG,IAAI;IAQ3C,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI;IAU/C,IAAI,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAEtC;IAEK,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAS3C,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAa9B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,QAAQ;YAYF,WAAW;YAwBX,WAAW;IA0CnB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAe/C,WAAW,CACf,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAC/B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CA2B/B;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PouchStorageTable.d.ts","sourceRoot":"","sources":["../src/PouchStorageTable.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,YAAY,EAEZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAa5B,MAAM,MAAM,WAAW,GAAG,KAAK,CAC7B,MAAM,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;CAAE,CAChD,CAAC;AAgFF,qBAAa,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAChE,YAAW,YAAY,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAyC;IAEnD,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,aAAa,CAAoD;IAEzE,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,eAAe,CAAC,CAAuB;IAE/C,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,aAAa,CAA+B;IAEpD,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,iBAAiB,CAAC,CAExB;IAEF,OAAO,CAAC,qBAAqB,CAAC,CAAqC;IAEnE,OAAO,CAAC,mBAAmB,CAAC,CAAkB;gBAElC,YAAY,EAAE,MAAM;IAgBhC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,sBAAsB;IAOrE,YAAY,CACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,sBAAsB;IAsBzB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,oBAAoB,GAAG,SAAS,CAE/C;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQpC,WAAW,CAAC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI;IAQ7D,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,GAAG,IAAI;IAQ3C,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,IAAI;IAU/C,IAAI,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAEtC;IAEK,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAS3C,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAa9B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,QAAQ;YAYF,WAAW;YAwBX,WAAW;IA0CnB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAe/C,WAAW,CACf,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAC/B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CA2B/B;AAED,eAAe,iBAAiB,CAAC"}
@@ -1,13 +1,8 @@
1
1
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
2
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
3
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
6
-
7
4
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
8
-
9
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
-
11
6
  import PouchDB from 'pouchdb-browser';
12
7
  import PouchDBFind from 'pouchdb-find';
13
8
  import { Operator as FilterOperator, Type as FilterType } from '@deephaven/filters';
@@ -16,7 +11,6 @@ import { PromiseUtils } from '@deephaven/utils';
16
11
  var log = Log.module('PouchStorageTable');
17
12
  var DB_PREFIX = 'Deephaven.';
18
13
  PouchDB.plugin(PouchDBFind);
19
-
20
14
  function makePouchFilter(type, value) {
21
15
  switch (type) {
22
16
  case FilterType.in:
@@ -24,59 +18,48 @@ function makePouchFilter(type, value) {
24
18
  return {
25
19
  $regex: new RegExp("".concat(value))
26
20
  };
27
-
28
21
  case FilterType.inIgnoreCase:
29
22
  return {
30
23
  $regex: new RegExp("".concat(value), 'i')
31
24
  };
32
-
33
25
  case FilterType.eq:
34
26
  return {
35
27
  $eq: value
36
28
  };
37
-
38
29
  case FilterType.notEq:
39
30
  return {
40
31
  $neq: value
41
32
  };
42
-
43
33
  case FilterType.greaterThan:
44
34
  return {
45
35
  $gt: value
46
36
  };
47
-
48
37
  case FilterType.greaterThanOrEqualTo:
49
38
  return {
50
39
  $gte: value
51
40
  };
52
-
53
41
  case FilterType.lessThan:
54
42
  return {
55
43
  $lt: value
56
44
  };
57
-
58
45
  case FilterType.lessThanOrEqualTo:
59
46
  return {
60
47
  $lte: value
61
48
  };
62
-
63
49
  case FilterType.startsWith:
64
50
  return {
65
51
  $regex: new RegExp("^(?".concat(value, ").*"))
66
52
  };
67
-
68
53
  default:
69
54
  throw new Error("Unsupported type: ".concat(type));
70
55
  }
71
56
  }
72
-
73
57
  function makePouchSelectorFromConfig(config) {
74
58
  var {
75
59
  filterItems,
76
60
  filterOperators
77
61
  } = config;
78
62
  var filter = null;
79
-
80
63
  for (var i = 0; i < filterItems.length; i += 1) {
81
64
  var filterItem = filterItems[i];
82
65
  var {
@@ -87,12 +70,10 @@ function makePouchSelectorFromConfig(config) {
87
70
  var newFilter = {
88
71
  [columnName]: makePouchFilter(type, value)
89
72
  };
90
-
91
73
  if (i === 0) {
92
74
  filter = newFilter;
93
75
  } else if (filter !== null && i - 1 < filterOperators.length) {
94
76
  var filterOperator = filterOperators[i - 1];
95
-
96
77
  if (filterOperator === FilterOperator.and) {
97
78
  filter = {
98
79
  $and: [filter, newFilter]
@@ -106,14 +87,11 @@ function makePouchSelectorFromConfig(config) {
106
87
  }
107
88
  }
108
89
  }
109
-
110
90
  if (filter == null) {
111
91
  throw new Error("Invalid filter config ".concat(config));
112
92
  }
113
-
114
93
  return filter;
115
94
  }
116
-
117
95
  function selectorWithFilters() {
118
96
  var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
119
97
  return {
@@ -128,10 +106,8 @@ function selectorWithFilters() {
128
106
  }]
129
107
  };
130
108
  }
131
-
132
109
  function sortWithConfigs(sorts) {
133
110
  var _sorts$map;
134
-
135
111
  var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
136
112
  return [{
137
113
  id: reverse ? 'desc' : 'asc'
@@ -139,34 +115,23 @@ function sortWithConfigs(sorts) {
139
115
  [sort.column]: sort.direction
140
116
  }))) !== null && _sorts$map !== void 0 ? _sorts$map : [])];
141
117
  }
142
-
143
118
  export class PouchStorageTable {
144
119
  constructor(databaseName) {
145
120
  _defineProperty(this, "db", void 0);
146
-
147
121
  _defineProperty(this, "listeners", []);
148
-
149
122
  _defineProperty(this, "itemListeners", new Map());
150
-
151
123
  _defineProperty(this, "currentSize", 0);
152
-
153
124
  _defineProperty(this, "currentViewport", void 0);
154
-
155
125
  _defineProperty(this, "currentReverse", false);
156
-
157
126
  _defineProperty(this, "currentFilter", null);
158
-
159
127
  _defineProperty(this, "currentSort", null);
160
-
161
128
  _defineProperty(this, "infoUpdatePromise", void 0);
162
-
163
129
  _defineProperty(this, "viewportUpdatePromise", void 0);
164
-
165
130
  _defineProperty(this, "currentViewportData", void 0);
131
+ this.db = new PouchDB("".concat(DB_PREFIX).concat(databaseName));
166
132
 
167
- this.db = new PouchDB("".concat(DB_PREFIX).concat(databaseName)); // Need to set `_remote` to false to remove deprecation warnings: https://github.com/pouchdb/pouchdb/issues/6106
133
+ // Need to set `_remote` to false to remove deprecation warnings: https://github.com/pouchdb/pouchdb/issues/6106
168
134
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-underscore-dangle
169
-
170
135
  this.db._remote = false;
171
136
  this.db.changes({
172
137
  live: true,
@@ -180,102 +145,82 @@ export class PouchStorageTable {
180
145
  });
181
146
  this.refreshInfo();
182
147
  }
183
-
184
148
  onUpdate(callback) {
185
149
  this.listeners = [...this.listeners, callback];
186
150
  return () => {
187
151
  this.listeners = this.listeners.filter(other => other !== callback);
188
152
  };
189
153
  }
190
-
191
154
  onItemUpdate(id, listener) {
192
155
  if (!this.itemListeners.has(id)) {
193
156
  this.itemListeners.set(id, []);
194
157
  }
195
-
196
158
  this.itemListeners.set(id, [...this.itemListeners.get(id), listener]);
197
159
  this.refreshItem(id);
198
160
  return () => {
199
161
  this.itemListeners.set(id, this.itemListeners.get(id).filter(other => other !== listener));
200
162
  };
201
163
  }
202
-
203
164
  close() {
204
165
  this.listeners = [];
205
166
  }
206
-
207
167
  get size() {
208
168
  return this.currentSize;
209
169
  }
210
-
211
170
  get viewport() {
212
171
  return this.currentViewport;
213
172
  }
214
-
215
173
  setReversed(reversed) {
216
174
  this.currentReverse = reversed;
217
175
  this.currentViewportData = undefined;
218
176
  this.refreshData();
219
177
  }
220
-
221
178
  setViewport(viewport) {
222
179
  this.currentViewport = viewport;
223
180
  this.refreshInfo();
224
181
  this.refreshData();
225
182
  }
226
-
227
183
  setSorts(config) {
228
184
  this.currentSort = config;
229
185
  this.currentViewportData = undefined;
230
186
  this.refreshData();
231
187
  }
232
-
233
188
  setFilters(config) {
234
189
  this.currentFilter = config;
235
190
  this.currentViewportData = undefined;
236
191
  this.refreshInfo();
237
192
  this.refreshData();
238
193
  }
239
-
240
194
  get data() {
241
195
  return this.currentViewportData;
242
196
  }
243
-
244
197
  getViewportData() {
245
198
  var _this = this;
246
-
247
199
  return _asyncToGenerator(function* () {
248
200
  var _this$viewportUpdateP;
249
-
250
201
  if (!_this.viewportUpdatePromise) {
251
202
  _this.refreshData();
252
203
  }
253
-
254
204
  return (_this$viewportUpdateP = _this.viewportUpdatePromise) !== null && _this$viewportUpdateP !== void 0 ? _this$viewportUpdateP : Promise.resolve({
255
205
  items: [],
256
206
  offset: 0
257
207
  });
258
208
  })();
259
209
  }
260
-
261
210
  put(item) {
262
211
  var _this2 = this;
263
-
264
212
  return _asyncToGenerator(function* () {
265
213
  // Put the item ID in both the _id and the id slot
266
214
  // PouchDB uses _id everywhere, StorageTable just uses `id` though
267
215
  var newItem = _objectSpread(_objectSpread({}, item), {}, {
268
216
  _id: item.id
269
217
  });
270
-
271
218
  yield _this2.db.put(newItem);
272
219
  return newItem;
273
220
  })();
274
221
  }
275
-
276
222
  sendUpdate() {
277
223
  var _this$currentViewport;
278
-
279
224
  // Retain a reference to it in case a listener gets removed while sending an update
280
225
  var {
281
226
  listeners
@@ -284,40 +229,31 @@ export class PouchStorageTable {
284
229
  items: [],
285
230
  offset: 0
286
231
  };
287
-
288
232
  for (var i = 0; i < listeners.length; i += 1) {
289
233
  listeners[i](data);
290
234
  }
291
235
  }
292
-
293
236
  sendItemUpdate(item) {
294
237
  var listeners = this.itemListeners.get(item.id);
295
-
296
238
  if (listeners !== undefined) {
297
239
  for (var i = 0; i < listeners.length; i += 1) {
298
240
  listeners[i](item);
299
241
  }
300
242
  }
301
243
  }
302
-
303
244
  dbUpdate(event) {
304
245
  log.debug('Update received', event);
305
246
  this.refreshInfo();
306
-
307
247
  if (event.doc !== undefined) {
308
248
  this.sendItemUpdate(event.doc);
309
249
  }
310
-
311
250
  this.refreshData();
312
251
  }
313
-
314
252
  refreshInfo() {
315
253
  var _this3 = this;
316
-
317
254
  return _asyncToGenerator(function* () {
318
255
  try {
319
256
  var _this3$infoUpdateProm, _this3$currentFilter;
320
-
321
257
  (_this3$infoUpdateProm = _this3.infoUpdatePromise) === null || _this3$infoUpdateProm === void 0 ? void 0 : _this3$infoUpdateProm.cancel();
322
258
  _this3.infoUpdatePromise = PromiseUtils.makeCancelable(_this3.db.find({
323
259
  selector: selectorWithFilters((_this3$currentFilter = _this3.currentFilter) !== null && _this3$currentFilter !== void 0 ? _this3$currentFilter : []),
@@ -325,7 +261,6 @@ export class PouchStorageTable {
325
261
  }));
326
262
  var findResult = yield _this3.infoUpdatePromise;
327
263
  _this3.currentSize = findResult.docs.length;
328
-
329
264
  _this3.sendUpdate();
330
265
  } catch (e) {
331
266
  if (!PromiseUtils.isCanceled(e)) {
@@ -335,18 +270,14 @@ export class PouchStorageTable {
335
270
  }
336
271
  })();
337
272
  }
338
-
339
273
  refreshData() {
340
274
  var _this4 = this;
341
-
342
275
  return _asyncToGenerator(function* () {
343
276
  if (!_this4.currentViewport) {
344
277
  return;
345
278
  }
346
-
347
279
  try {
348
280
  var _this4$viewportUpdate, _this4$currentFilter;
349
-
350
281
  var {
351
282
  currentViewport: viewport
352
283
  } = _this4;
@@ -364,9 +295,7 @@ export class PouchStorageTable {
364
295
  })));
365
296
  var viewportData = yield _this4.viewportUpdatePromise;
366
297
  _this4.currentViewportData = viewportData;
367
-
368
298
  _this4.sendUpdate();
369
-
370
299
  return viewportData;
371
300
  } catch (e) {
372
301
  if (!PromiseUtils.isCanceled(e)) {
@@ -376,10 +305,8 @@ export class PouchStorageTable {
376
305
  }
377
306
  })();
378
307
  }
379
-
380
308
  refreshItem(id) {
381
309
  var _this5 = this;
382
-
383
310
  return _asyncToGenerator(function* () {
384
311
  var findResult = yield _this5.db.find({
385
312
  selector: {
@@ -388,18 +315,14 @@ export class PouchStorageTable {
388
315
  limit: 1
389
316
  });
390
317
  var item = findResult.docs[0];
391
-
392
318
  if (item !== undefined) {
393
319
  _this5.sendItemUpdate(item);
394
320
  }
395
-
396
321
  return item;
397
322
  })();
398
323
  }
399
-
400
324
  getSnapshot(sortedRanges) {
401
325
  var _this6 = this;
402
-
403
326
  return _asyncToGenerator(function* () {
404
327
  var itemMap = new Map();
405
328
  var sort = [{
@@ -408,7 +331,6 @@ export class PouchStorageTable {
408
331
  yield Promise.all(sortedRanges.map( /*#__PURE__*/function () {
409
332
  var _ref2 = _asyncToGenerator(function* (_ref) {
410
333
  var _this6$currentFilter;
411
-
412
334
  var [from, to] = _ref;
413
335
  var limit = to - from + 1;
414
336
  return _this6.db.find({
@@ -424,7 +346,6 @@ export class PouchStorageTable {
424
346
  }
425
347
  });
426
348
  });
427
-
428
349
  return function (_x) {
429
350
  return _ref2.apply(this, arguments);
430
351
  };
@@ -432,7 +353,6 @@ export class PouchStorageTable {
432
353
  return itemMap;
433
354
  })();
434
355
  }
435
-
436
356
  }
437
357
  export default PouchStorageTable;
438
358
  //# sourceMappingURL=PouchStorageTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PouchStorageTable.js","names":["PouchDB","PouchDBFind","Operator","FilterOperator","Type","FilterType","Log","PromiseUtils","log","module","DB_PREFIX","plugin","makePouchFilter","type","value","in","contains","$regex","RegExp","inIgnoreCase","eq","$eq","notEq","$neq","greaterThan","$gt","greaterThanOrEqualTo","$gte","lessThan","$lt","lessThanOrEqualTo","$lte","startsWith","Error","makePouchSelectorFromConfig","config","filterItems","filterOperators","filter","i","length","filterItem","columnName","newFilter","filterOperator","and","$and","or","$or","selectorWithFilters","filters","map","name","id","sortWithConfigs","sorts","reverse","sort","column","direction","PouchStorageTable","constructor","databaseName","Map","db","_remote","changes","live","since","include_docs","on","dbUpdate","bind","createIndex","index","fields","refreshInfo","onUpdate","callback","listeners","other","onItemUpdate","listener","itemListeners","has","set","get","refreshItem","close","size","currentSize","viewport","currentViewport","setReversed","reversed","currentReverse","currentViewportData","undefined","refreshData","setViewport","setSorts","currentSort","setFilters","currentFilter","data","getViewportData","viewportUpdatePromise","Promise","resolve","items","offset","put","item","newItem","_id","sendUpdate","sendItemUpdate","event","debug","doc","infoUpdatePromise","cancel","makeCancelable","find","selector","findResult","docs","e","isCanceled","error","skip","top","limit","bottom","then","viewportData","getSnapshot","sortedRanges","itemMap","all","from","to","findSnapshotResult"],"sources":["../src/PouchStorageTable.ts"],"sourcesContent":["import PouchDB from 'pouchdb-browser';\nimport PouchDBFind from 'pouchdb-find';\nimport {\n Operator as FilterOperator,\n Type as FilterType,\n} from '@deephaven/filters';\nimport Log from '@deephaven/log';\nimport {\n FilterConfig,\n FilterValue,\n SortConfig,\n StorageItem,\n StorageTable,\n StorageListenerRemover,\n StorageTableViewport,\n StorageItemListener,\n StorageSnapshot,\n ViewportData,\n ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport { CancelablePromise, PromiseUtils } from '@deephaven/utils';\n\nconst log = Log.module('PouchStorageTable');\n\nconst DB_PREFIX = 'Deephaven.';\n\nPouchDB.plugin(PouchDBFind);\n\ninterface PouchStorageItem {\n _id?: string;\n}\n\nexport type PouchDBSort = Array<\n string | { [propName: string]: 'asc' | 'desc' }\n>;\n\nfunction makePouchFilter(type: string, value: FilterValue | FilterValue[]) {\n switch (type) {\n case FilterType.in:\n case FilterType.contains:\n return { $regex: new RegExp(`${value}`) };\n case FilterType.inIgnoreCase:\n return { $regex: new RegExp(`${value}`, 'i') };\n case FilterType.eq:\n return { $eq: value };\n case FilterType.notEq:\n return { $neq: value };\n case FilterType.greaterThan:\n return { $gt: value };\n case FilterType.greaterThanOrEqualTo:\n return { $gte: value };\n case FilterType.lessThan:\n return { $lt: value };\n case FilterType.lessThanOrEqualTo:\n return { $lte: value };\n case FilterType.startsWith:\n return { $regex: new RegExp(`^(?${value}).*`) };\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n\nfunction makePouchSelectorFromConfig(\n config: FilterConfig\n): PouchDB.Find.Selector {\n const { filterItems, filterOperators } = config;\n let filter = null;\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { columnName, type, value } = filterItem;\n const newFilter = { [columnName]: makePouchFilter(type, value) };\n if (i === 0) {\n filter = newFilter;\n } else if (filter !== null && i - 1 < filterOperators.length) {\n const filterOperator = filterOperators[i - 1];\n if (filterOperator === FilterOperator.and) {\n filter = { $and: [filter, newFilter] };\n } else if (filterOperator === FilterOperator.or) {\n filter = { $or: [filter, newFilter] };\n } else {\n throw new Error(\n `Unexpected filter operator ${filterOperator}, ${newFilter}`\n );\n }\n }\n }\n if (filter == null) {\n throw new Error(`Invalid filter config ${config}`);\n }\n return filter;\n}\n\nfunction selectorWithFilters(\n filters: FilterConfig[] = []\n): PouchDB.Find.Selector {\n return {\n $and: [\n ...filters.map(filter => makePouchSelectorFromConfig(filter)),\n { name: { $gt: null } },\n { id: { $gt: null } },\n ],\n };\n}\n\nfunction sortWithConfigs(\n sorts: SortConfig[] | null,\n reverse = false\n): PouchDBSort {\n return [\n { id: reverse ? 'desc' : 'asc' },\n ...(sorts?.map(sort => ({ [sort.column]: sort.direction })) ?? []),\n ];\n}\n\nexport class PouchStorageTable<T extends StorageItem = StorageItem>\n implements StorageTable<T> {\n private db: PouchDB.Database<T & PouchStorageItem>;\n\n private listeners: ViewportUpdateCallback<T>[] = [];\n\n private itemListeners: Map<string, StorageItemListener<T>[]> = new Map();\n\n private currentSize = 0;\n\n private currentViewport?: StorageTableViewport;\n\n private currentReverse = false;\n\n private currentFilter: FilterConfig[] | null = null;\n\n private currentSort: SortConfig[] | null = null;\n\n private infoUpdatePromise?: CancelablePromise<\n PouchDB.Find.FindResponse<T & PouchStorageItem>\n >;\n\n private viewportUpdatePromise?: CancelablePromise<ViewportData<T>>;\n\n private currentViewportData?: ViewportData<T>;\n\n constructor(databaseName: string) {\n this.db = new PouchDB<T & PouchStorageItem>(`${DB_PREFIX}${databaseName}`);\n\n // Need to set `_remote` to false to remove deprecation warnings: https://github.com/pouchdb/pouchdb/issues/6106\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-underscore-dangle\n (this.db as any)._remote = false;\n\n this.db\n .changes({ live: true, since: 'now', include_docs: true })\n .on('change', this.dbUpdate.bind(this));\n\n this.db.createIndex({ index: { fields: ['id', 'name'] } });\n\n this.refreshInfo();\n }\n\n onUpdate(callback: ViewportUpdateCallback<T>): StorageListenerRemover {\n this.listeners = [...this.listeners, callback];\n return () => {\n this.listeners = this.listeners.filter(other => other !== callback);\n };\n }\n\n onItemUpdate(\n id: string,\n listener: StorageItemListener<T>\n ): StorageListenerRemover {\n if (!this.itemListeners.has(id)) {\n this.itemListeners.set(id, []);\n }\n\n this.itemListeners.set(id, [\n ...(this.itemListeners.get(id) as StorageItemListener<T>[]),\n listener,\n ]);\n\n this.refreshItem(id);\n\n return () => {\n this.itemListeners.set(\n id,\n (this.itemListeners.get(id) as StorageItemListener<T>[]).filter(\n other => other !== listener\n )\n );\n };\n }\n\n close(): void {\n this.listeners = [];\n }\n\n get size(): number {\n return this.currentSize;\n }\n\n get viewport(): StorageTableViewport | undefined {\n return this.currentViewport;\n }\n\n setReversed(reversed: boolean): void {\n this.currentReverse = reversed;\n\n this.currentViewportData = undefined;\n\n this.refreshData();\n }\n\n setViewport(viewport: StorageTableViewport | undefined): void {\n this.currentViewport = viewport;\n\n this.refreshInfo();\n\n this.refreshData();\n }\n\n setSorts(config: SortConfig[] | null): void {\n this.currentSort = config;\n\n this.currentViewportData = undefined;\n\n this.refreshData();\n }\n\n setFilters(config: FilterConfig[] | null): void {\n this.currentFilter = config;\n\n this.currentViewportData = undefined;\n\n this.refreshInfo();\n\n this.refreshData();\n }\n\n get data(): ViewportData<T> | undefined {\n return this.currentViewportData;\n }\n\n async getViewportData(): Promise<ViewportData<T>> {\n if (!this.viewportUpdatePromise) {\n this.refreshData();\n }\n return (\n this.viewportUpdatePromise ?? Promise.resolve({ items: [], offset: 0 })\n );\n }\n\n async put(item: T): Promise<T> {\n // Put the item ID in both the _id and the id slot\n // PouchDB uses _id everywhere, StorageTable just uses `id` though\n const newItem = {\n ...item,\n _id: item.id,\n } as T;\n\n await this.db.put(newItem);\n\n return newItem;\n }\n\n private sendUpdate() {\n // Retain a reference to it in case a listener gets removed while sending an update\n const { listeners } = this;\n const data = this.currentViewportData ?? { items: [], offset: 0 };\n for (let i = 0; i < listeners.length; i += 1) {\n listeners[i](data);\n }\n }\n\n private sendItemUpdate(item: T) {\n const listeners = this.itemListeners.get(item.id);\n if (listeners !== undefined) {\n for (let i = 0; i < listeners.length; i += 1) {\n listeners[i](item);\n }\n }\n }\n\n private dbUpdate(event: PouchDB.Core.ChangesResponseChange<T>): void {\n log.debug('Update received', event);\n\n this.refreshInfo();\n\n if (event.doc !== undefined) {\n this.sendItemUpdate(event.doc);\n }\n\n this.refreshData();\n }\n\n private async refreshInfo() {\n try {\n this.infoUpdatePromise?.cancel();\n\n this.infoUpdatePromise = PromiseUtils.makeCancelable(\n this.db.find({\n selector: selectorWithFilters(this.currentFilter ?? []),\n fields: [],\n })\n );\n\n const findResult = await this.infoUpdatePromise;\n\n this.currentSize = findResult.docs.length;\n\n this.sendUpdate();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refreshInfo', e);\n throw e;\n }\n }\n }\n\n private async refreshData(): Promise<ViewportData<T> | undefined> {\n if (!this.currentViewport) {\n return;\n }\n\n try {\n const { currentViewport: viewport } = this;\n\n const sort = sortWithConfigs(this.currentSort, this.currentReverse);\n\n this.viewportUpdatePromise?.cancel();\n\n this.viewportUpdatePromise = PromiseUtils.makeCancelable(\n this.db\n .find({\n selector: selectorWithFilters(this.currentFilter ?? []),\n skip: viewport.top,\n limit: viewport.bottom - viewport.top + 1,\n sort,\n fields: ['id', 'name'],\n })\n .then(findResult => ({\n items: findResult.docs,\n offset: viewport.top,\n }))\n );\n\n const viewportData = await this.viewportUpdatePromise;\n\n this.currentViewportData = viewportData;\n\n this.sendUpdate();\n\n return viewportData;\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refreshData', e);\n throw e;\n }\n }\n }\n\n async refreshItem(id: string): Promise<T | undefined> {\n const findResult = await this.db.find({\n selector: { id },\n limit: 1,\n });\n\n const item = findResult.docs[0];\n\n if (item !== undefined) {\n this.sendItemUpdate(item);\n }\n\n return item;\n }\n\n async getSnapshot(\n sortedRanges: [number, number][]\n ): Promise<StorageSnapshot<T>> {\n const itemMap = new Map();\n\n const sort: PouchDBSort = [{ id: this.currentReverse ? 'desc' : 'asc' }];\n\n await Promise.all(\n sortedRanges.map(async ([from, to]) => {\n const limit = to - from + 1;\n return this.db\n .find({\n selector: selectorWithFilters(this.currentFilter ?? []),\n skip: from,\n limit,\n sort,\n fields: ['id', 'name'],\n })\n .then(findSnapshotResult => {\n for (let i = 0; i < limit; i += 1) {\n const index = from + i;\n itemMap.set(index, findSnapshotResult.docs[i]);\n }\n });\n })\n );\n\n return itemMap;\n }\n}\n\nexport default PouchStorageTable;\n"],"mappings":";;;;;;;;;;AAAA,OAAOA,OAAP,MAAoB,iBAApB;AACA,OAAOC,WAAP,MAAwB,cAAxB;AACA,SACEC,QAAQ,IAAIC,cADd,EAEEC,IAAI,IAAIC,UAFV,QAGO,oBAHP;AAIA,OAAOC,GAAP,MAAgB,gBAAhB;AAcA,SAA4BC,YAA5B,QAAgD,kBAAhD;AAEA,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,mBAAX,CAAZ;AAEA,IAAMC,SAAS,GAAG,YAAlB;AAEAV,OAAO,CAACW,MAAR,CAAeV,WAAf;;AAUA,SAASW,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAA2E;EACzE,QAAQD,IAAR;IACE,KAAKR,UAAU,CAACU,EAAhB;IACA,KAAKV,UAAU,CAACW,QAAhB;MACE,OAAO;QAAEC,MAAM,EAAE,IAAIC,MAAJ,WAAcJ,KAAd;MAAV,CAAP;;IACF,KAAKT,UAAU,CAACc,YAAhB;MACE,OAAO;QAAEF,MAAM,EAAE,IAAIC,MAAJ,WAAcJ,KAAd,GAAuB,GAAvB;MAAV,CAAP;;IACF,KAAKT,UAAU,CAACe,EAAhB;MACE,OAAO;QAAEC,GAAG,EAAEP;MAAP,CAAP;;IACF,KAAKT,UAAU,CAACiB,KAAhB;MACE,OAAO;QAAEC,IAAI,EAAET;MAAR,CAAP;;IACF,KAAKT,UAAU,CAACmB,WAAhB;MACE,OAAO;QAAEC,GAAG,EAAEX;MAAP,CAAP;;IACF,KAAKT,UAAU,CAACqB,oBAAhB;MACE,OAAO;QAAEC,IAAI,EAAEb;MAAR,CAAP;;IACF,KAAKT,UAAU,CAACuB,QAAhB;MACE,OAAO;QAAEC,GAAG,EAAEf;MAAP,CAAP;;IACF,KAAKT,UAAU,CAACyB,iBAAhB;MACE,OAAO;QAAEC,IAAI,EAAEjB;MAAR,CAAP;;IACF,KAAKT,UAAU,CAAC2B,UAAhB;MACE,OAAO;QAAEf,MAAM,EAAE,IAAIC,MAAJ,cAAiBJ,KAAjB;MAAV,CAAP;;IACF;MACE,MAAM,IAAImB,KAAJ,6BAA+BpB,IAA/B,EAAN;EArBJ;AAuBD;;AAED,SAASqB,2BAAT,CACEC,MADF,EAEyB;EACvB,IAAM;IAAEC,WAAF;IAAeC;EAAf,IAAmCF,MAAzC;EACA,IAAIG,MAAM,GAAG,IAAb;;EACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,WAAW,CAACI,MAAhC,EAAwCD,CAAC,IAAI,CAA7C,EAAgD;IAC9C,IAAME,UAAU,GAAGL,WAAW,CAACG,CAAD,CAA9B;IACA,IAAM;MAAEG,UAAF;MAAc7B,IAAd;MAAoBC;IAApB,IAA8B2B,UAApC;IACA,IAAME,SAAS,GAAG;MAAE,CAACD,UAAD,GAAc9B,eAAe,CAACC,IAAD,EAAOC,KAAP;IAA/B,CAAlB;;IACA,IAAIyB,CAAC,KAAK,CAAV,EAAa;MACXD,MAAM,GAAGK,SAAT;IACD,CAFD,MAEO,IAAIL,MAAM,KAAK,IAAX,IAAmBC,CAAC,GAAG,CAAJ,GAAQF,eAAe,CAACG,MAA/C,EAAuD;MAC5D,IAAMI,cAAc,GAAGP,eAAe,CAACE,CAAC,GAAG,CAAL,CAAtC;;MACA,IAAIK,cAAc,KAAKzC,cAAc,CAAC0C,GAAtC,EAA2C;QACzCP,MAAM,GAAG;UAAEQ,IAAI,EAAE,CAACR,MAAD,EAASK,SAAT;QAAR,CAAT;MACD,CAFD,MAEO,IAAIC,cAAc,KAAKzC,cAAc,CAAC4C,EAAtC,EAA0C;QAC/CT,MAAM,GAAG;UAAEU,GAAG,EAAE,CAACV,MAAD,EAASK,SAAT;QAAP,CAAT;MACD,CAFM,MAEA;QACL,MAAM,IAAIV,KAAJ,sCAC0BW,cAD1B,eAC6CD,SAD7C,EAAN;MAGD;IACF;EACF;;EACD,IAAIL,MAAM,IAAI,IAAd,EAAoB;IAClB,MAAM,IAAIL,KAAJ,iCAAmCE,MAAnC,EAAN;EACD;;EACD,OAAOG,MAAP;AACD;;AAED,SAASW,mBAAT,GAEyB;EAAA,IADvBC,OACuB,uEADG,EACH;EACvB,OAAO;IACLJ,IAAI,EAAE,CACJ,GAAGI,OAAO,CAACC,GAAR,CAAYb,MAAM,IAAIJ,2BAA2B,CAACI,MAAD,CAAjD,CADC,EAEJ;MAAEc,IAAI,EAAE;QAAE3B,GAAG,EAAE;MAAP;IAAR,CAFI,EAGJ;MAAE4B,EAAE,EAAE;QAAE5B,GAAG,EAAE;MAAP;IAAN,CAHI;EADD,CAAP;AAOD;;AAED,SAAS6B,eAAT,CACEC,KADF,EAGe;EAAA;;EAAA,IADbC,OACa,uEADH,KACG;EACb,OAAO,CACL;IAAEH,EAAE,EAAEG,OAAO,GAAG,MAAH,GAAY;EAAzB,CADK,EAEL,kBAAID,KAAJ,aAAIA,KAAJ,uBAAIA,KAAK,CAAEJ,GAAP,CAAWM,IAAI,KAAK;IAAE,CAACA,IAAI,CAACC,MAAN,GAAeD,IAAI,CAACE;EAAtB,CAAL,CAAf,CAAJ,mDAA+D,EAA/D,CAFK,CAAP;AAID;;AAED,OAAO,MAAMC,iBAAN,CACsB;EAyB3BC,WAAW,CAACC,YAAD,EAAuB;IAAA;;IAAA,mCAtBe,EAsBf;;IAAA,uCApB6B,IAAIC,GAAJ,EAoB7B;;IAAA,qCAlBZ,CAkBY;;IAAA;;IAAA,wCAdT,KAcS;;IAAA,uCAZa,IAYb;;IAAA,qCAVS,IAUT;;IAAA;;IAAA;;IAAA;;IAChC,KAAKC,EAAL,GAAU,IAAIhE,OAAJ,WAAqCU,SAArC,SAAiDoD,YAAjD,EAAV,CADgC,CAGhC;IACA;;IACC,KAAKE,EAAN,CAAiBC,OAAjB,GAA2B,KAA3B;IAEA,KAAKD,EAAL,CACGE,OADH,CACW;MAAEC,IAAI,EAAE,IAAR;MAAcC,KAAK,EAAE,KAArB;MAA4BC,YAAY,EAAE;IAA1C,CADX,EAEGC,EAFH,CAEM,QAFN,EAEgB,KAAKC,QAAL,CAAcC,IAAd,CAAmB,IAAnB,CAFhB;IAIA,KAAKR,EAAL,CAAQS,WAAR,CAAoB;MAAEC,KAAK,EAAE;QAAEC,MAAM,EAAE,CAAC,IAAD,EAAO,MAAP;MAAV;IAAT,CAApB;IAEA,KAAKC,WAAL;EACD;;EAEDC,QAAQ,CAACC,QAAD,EAA8D;IACpE,KAAKC,SAAL,GAAiB,CAAC,GAAG,KAAKA,SAAT,EAAoBD,QAApB,CAAjB;IACA,OAAO,MAAM;MACX,KAAKC,SAAL,GAAiB,KAAKA,SAAL,CAAezC,MAAf,CAAsB0C,KAAK,IAAIA,KAAK,KAAKF,QAAzC,CAAjB;IACD,CAFD;EAGD;;EAEDG,YAAY,CACV5B,EADU,EAEV6B,QAFU,EAGc;IACxB,IAAI,CAAC,KAAKC,aAAL,CAAmBC,GAAnB,CAAuB/B,EAAvB,CAAL,EAAiC;MAC/B,KAAK8B,aAAL,CAAmBE,GAAnB,CAAuBhC,EAAvB,EAA2B,EAA3B;IACD;;IAED,KAAK8B,aAAL,CAAmBE,GAAnB,CAAuBhC,EAAvB,EAA2B,CACzB,GAAI,KAAK8B,aAAL,CAAmBG,GAAnB,CAAuBjC,EAAvB,CADqB,EAEzB6B,QAFyB,CAA3B;IAKA,KAAKK,WAAL,CAAiBlC,EAAjB;IAEA,OAAO,MAAM;MACX,KAAK8B,aAAL,CAAmBE,GAAnB,CACEhC,EADF,EAEG,KAAK8B,aAAL,CAAmBG,GAAnB,CAAuBjC,EAAvB,CAAD,CAAyDf,MAAzD,CACE0C,KAAK,IAAIA,KAAK,KAAKE,QADrB,CAFF;IAMD,CAPD;EAQD;;EAEDM,KAAK,GAAS;IACZ,KAAKT,SAAL,GAAiB,EAAjB;EACD;;EAEO,IAAJU,IAAI,GAAW;IACjB,OAAO,KAAKC,WAAZ;EACD;;EAEW,IAARC,QAAQ,GAAqC;IAC/C,OAAO,KAAKC,eAAZ;EACD;;EAEDC,WAAW,CAACC,QAAD,EAA0B;IACnC,KAAKC,cAAL,GAAsBD,QAAtB;IAEA,KAAKE,mBAAL,GAA2BC,SAA3B;IAEA,KAAKC,WAAL;EACD;;EAEDC,WAAW,CAACR,QAAD,EAAmD;IAC5D,KAAKC,eAAL,GAAuBD,QAAvB;IAEA,KAAKf,WAAL;IAEA,KAAKsB,WAAL;EACD;;EAEDE,QAAQ,CAACjE,MAAD,EAAoC;IAC1C,KAAKkE,WAAL,GAAmBlE,MAAnB;IAEA,KAAK6D,mBAAL,GAA2BC,SAA3B;IAEA,KAAKC,WAAL;EACD;;EAEDI,UAAU,CAACnE,MAAD,EAAsC;IAC9C,KAAKoE,aAAL,GAAqBpE,MAArB;IAEA,KAAK6D,mBAAL,GAA2BC,SAA3B;IAEA,KAAKrB,WAAL;IAEA,KAAKsB,WAAL;EACD;;EAEO,IAAJM,IAAI,GAAgC;IACtC,OAAO,KAAKR,mBAAZ;EACD;;EAEKS,eAAe,GAA6B;IAAA;;IAAA;MAAA;;MAChD,IAAI,CAAC,KAAI,CAACC,qBAAV,EAAiC;QAC/B,KAAI,CAACR,WAAL;MACD;;MACD,gCACE,KAAI,CAACQ,qBADP,yEACgCC,OAAO,CAACC,OAAR,CAAgB;QAAEC,KAAK,EAAE,EAAT;QAAaC,MAAM,EAAE;MAArB,CAAhB,CADhC;IAJgD;EAOjD;;EAEKC,GAAG,CAACC,IAAD,EAAsB;IAAA;;IAAA;MAC7B;MACA;MACA,IAAMC,OAAO,mCACRD,IADQ;QAEXE,GAAG,EAAEF,IAAI,CAAC3D;MAFC,EAAb;;MAKA,MAAM,MAAI,CAACW,EAAL,CAAQ+C,GAAR,CAAYE,OAAZ,CAAN;MAEA,OAAOA,OAAP;IAV6B;EAW9B;;EAEOE,UAAU,GAAG;IAAA;;IACnB;IACA,IAAM;MAAEpC;IAAF,IAAgB,IAAtB;IACA,IAAMyB,IAAI,4BAAG,KAAKR,mBAAR,yEAA+B;MAAEa,KAAK,EAAE,EAAT;MAAaC,MAAM,EAAE;IAArB,CAAzC;;IACA,KAAK,IAAIvE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,SAAS,CAACvC,MAA9B,EAAsCD,CAAC,IAAI,CAA3C,EAA8C;MAC5CwC,SAAS,CAACxC,CAAD,CAAT,CAAaiE,IAAb;IACD;EACF;;EAEOY,cAAc,CAACJ,IAAD,EAAU;IAC9B,IAAMjC,SAAS,GAAG,KAAKI,aAAL,CAAmBG,GAAnB,CAAuB0B,IAAI,CAAC3D,EAA5B,CAAlB;;IACA,IAAI0B,SAAS,KAAKkB,SAAlB,EAA6B;MAC3B,KAAK,IAAI1D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwC,SAAS,CAACvC,MAA9B,EAAsCD,CAAC,IAAI,CAA3C,EAA8C;QAC5CwC,SAAS,CAACxC,CAAD,CAAT,CAAayE,IAAb;MACD;IACF;EACF;;EAEOzC,QAAQ,CAAC8C,KAAD,EAAqD;IACnE7G,GAAG,CAAC8G,KAAJ,CAAU,iBAAV,EAA6BD,KAA7B;IAEA,KAAKzC,WAAL;;IAEA,IAAIyC,KAAK,CAACE,GAAN,KAActB,SAAlB,EAA6B;MAC3B,KAAKmB,cAAL,CAAoBC,KAAK,CAACE,GAA1B;IACD;;IAED,KAAKrB,WAAL;EACD;;EAEatB,WAAW,GAAG;IAAA;;IAAA;MAC1B,IAAI;QAAA;;QACF,+BAAI,CAAC4C,iBAAL,gFAAwBC,MAAxB;QAEA,MAAI,CAACD,iBAAL,GAAyBjH,YAAY,CAACmH,cAAb,CACvB,MAAI,CAAC1D,EAAL,CAAQ2D,IAAR,CAAa;UACXC,QAAQ,EAAE3E,mBAAmB,yBAAC,MAAI,CAACsD,aAAN,uEAAuB,EAAvB,CADlB;UAEX5B,MAAM,EAAE;QAFG,CAAb,CADuB,CAAzB;QAOA,IAAMkD,UAAU,SAAS,MAAI,CAACL,iBAA9B;QAEA,MAAI,CAAC9B,WAAL,GAAmBmC,UAAU,CAACC,IAAX,CAAgBtF,MAAnC;;QAEA,MAAI,CAAC2E,UAAL;MACD,CAfD,CAeE,OAAOY,CAAP,EAAU;QACV,IAAI,CAACxH,YAAY,CAACyH,UAAb,CAAwBD,CAAxB,CAAL,EAAiC;UAC/BvH,GAAG,CAACyH,KAAJ,CAAU,uBAAV,EAAmCF,CAAnC;UACA,MAAMA,CAAN;QACD;MACF;IArByB;EAsB3B;;EAEa7B,WAAW,GAAyC;IAAA;;IAAA;MAChE,IAAI,CAAC,MAAI,CAACN,eAAV,EAA2B;QACzB;MACD;;MAED,IAAI;QAAA;;QACF,IAAM;UAAEA,eAAe,EAAED;QAAnB,IAAgC,MAAtC;QAEA,IAAMlC,IAAI,GAAGH,eAAe,CAAC,MAAI,CAAC+C,WAAN,EAAmB,MAAI,CAACN,cAAxB,CAA5B;QAEA,+BAAI,CAACW,qBAAL,gFAA4Be,MAA5B;QAEA,MAAI,CAACf,qBAAL,GAA6BnG,YAAY,CAACmH,cAAb,CAC3B,MAAI,CAAC1D,EAAL,CACG2D,IADH,CACQ;UACJC,QAAQ,EAAE3E,mBAAmB,yBAAC,MAAI,CAACsD,aAAN,uEAAuB,EAAvB,CADzB;UAEJ2B,IAAI,EAAEvC,QAAQ,CAACwC,GAFX;UAGJC,KAAK,EAAEzC,QAAQ,CAAC0C,MAAT,GAAkB1C,QAAQ,CAACwC,GAA3B,GAAiC,CAHpC;UAIJ1E,IAJI;UAKJkB,MAAM,EAAE,CAAC,IAAD,EAAO,MAAP;QALJ,CADR,EAQG2D,IARH,CAQQT,UAAU,KAAK;UACnBhB,KAAK,EAAEgB,UAAU,CAACC,IADC;UAEnBhB,MAAM,EAAEnB,QAAQ,CAACwC;QAFE,CAAL,CARlB,CAD2B,CAA7B;QAeA,IAAMI,YAAY,SAAS,MAAI,CAAC7B,qBAAhC;QAEA,MAAI,CAACV,mBAAL,GAA2BuC,YAA3B;;QAEA,MAAI,CAACpB,UAAL;;QAEA,OAAOoB,YAAP;MACD,CA7BD,CA6BE,OAAOR,CAAP,EAAU;QACV,IAAI,CAACxH,YAAY,CAACyH,UAAb,CAAwBD,CAAxB,CAAL,EAAiC;UAC/BvH,GAAG,CAACyH,KAAJ,CAAU,uBAAV,EAAmCF,CAAnC;UACA,MAAMA,CAAN;QACD;MACF;IAvC+D;EAwCjE;;EAEKxC,WAAW,CAAClC,EAAD,EAAqC;IAAA;;IAAA;MACpD,IAAMwE,UAAU,SAAS,MAAI,CAAC7D,EAAL,CAAQ2D,IAAR,CAAa;QACpCC,QAAQ,EAAE;UAAEvE;QAAF,CAD0B;QAEpC+E,KAAK,EAAE;MAF6B,CAAb,CAAzB;MAKA,IAAMpB,IAAI,GAAGa,UAAU,CAACC,IAAX,CAAgB,CAAhB,CAAb;;MAEA,IAAId,IAAI,KAAKf,SAAb,EAAwB;QACtB,MAAI,CAACmB,cAAL,CAAoBJ,IAApB;MACD;;MAED,OAAOA,IAAP;IAZoD;EAarD;;EAEKwB,WAAW,CACfC,YADe,EAEc;IAAA;;IAAA;MAC7B,IAAMC,OAAO,GAAG,IAAI3E,GAAJ,EAAhB;MAEA,IAAMN,IAAiB,GAAG,CAAC;QAAEJ,EAAE,EAAE,MAAI,CAAC0C,cAAL,GAAsB,MAAtB,GAA+B;MAArC,CAAD,CAA1B;MAEA,MAAMY,OAAO,CAACgC,GAAR,CACJF,YAAY,CAACtF,GAAb;QAAA,8BAAiB,iBAAsB;UAAA;;UAAA,IAAf,CAACyF,IAAD,EAAOC,EAAP,CAAe;UACrC,IAAMT,KAAK,GAAGS,EAAE,GAAGD,IAAL,GAAY,CAA1B;UACA,OAAO,MAAI,CAAC5E,EAAL,CACJ2D,IADI,CACC;YACJC,QAAQ,EAAE3E,mBAAmB,yBAAC,MAAI,CAACsD,aAAN,uEAAuB,EAAvB,CADzB;YAEJ2B,IAAI,EAAEU,IAFF;YAGJR,KAHI;YAIJ3E,IAJI;YAKJkB,MAAM,EAAE,CAAC,IAAD,EAAO,MAAP;UALJ,CADD,EAQJ2D,IARI,CAQCQ,kBAAkB,IAAI;YAC1B,KAAK,IAAIvG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6F,KAApB,EAA2B7F,CAAC,IAAI,CAAhC,EAAmC;cACjC,IAAMmC,KAAK,GAAGkE,IAAI,GAAGrG,CAArB;cACAmG,OAAO,CAACrD,GAAR,CAAYX,KAAZ,EAAmBoE,kBAAkB,CAAChB,IAAnB,CAAwBvF,CAAxB,CAAnB;YACD;UACF,CAbI,CAAP;QAcD,CAhBD;;QAAA;UAAA;QAAA;MAAA,IADI,CAAN;MAoBA,OAAOmG,OAAP;IAzB6B;EA0B9B;;AA5R0B;AA+R7B,eAAe9E,iBAAf"}
1
+ {"version":3,"file":"PouchStorageTable.js","names":["PouchDB","PouchDBFind","Operator","FilterOperator","Type","FilterType","Log","PromiseUtils","log","module","DB_PREFIX","plugin","makePouchFilter","type","value","in","contains","$regex","RegExp","inIgnoreCase","eq","$eq","notEq","$neq","greaterThan","$gt","greaterThanOrEqualTo","$gte","lessThan","$lt","lessThanOrEqualTo","$lte","startsWith","Error","makePouchSelectorFromConfig","config","filterItems","filterOperators","filter","i","length","filterItem","columnName","newFilter","filterOperator","and","$and","or","$or","selectorWithFilters","filters","map","name","id","sortWithConfigs","sorts","reverse","sort","column","direction","PouchStorageTable","constructor","databaseName","Map","db","_remote","changes","live","since","include_docs","on","dbUpdate","bind","createIndex","index","fields","refreshInfo","onUpdate","callback","listeners","other","onItemUpdate","listener","itemListeners","has","set","get","refreshItem","close","size","currentSize","viewport","currentViewport","setReversed","reversed","currentReverse","currentViewportData","undefined","refreshData","setViewport","setSorts","currentSort","setFilters","currentFilter","data","getViewportData","viewportUpdatePromise","Promise","resolve","items","offset","put","item","newItem","_id","sendUpdate","sendItemUpdate","event","debug","doc","infoUpdatePromise","cancel","makeCancelable","find","selector","findResult","docs","e","isCanceled","error","skip","top","limit","bottom","then","viewportData","getSnapshot","sortedRanges","itemMap","all","from","to","findSnapshotResult"],"sources":["../src/PouchStorageTable.ts"],"sourcesContent":["import PouchDB from 'pouchdb-browser';\nimport PouchDBFind from 'pouchdb-find';\nimport {\n Operator as FilterOperator,\n Type as FilterType,\n} from '@deephaven/filters';\nimport Log from '@deephaven/log';\nimport {\n FilterConfig,\n FilterValue,\n SortConfig,\n StorageItem,\n StorageTable,\n StorageListenerRemover,\n StorageTableViewport,\n StorageItemListener,\n StorageSnapshot,\n ViewportData,\n ViewportUpdateCallback,\n} from '@deephaven/storage';\nimport { CancelablePromise, PromiseUtils } from '@deephaven/utils';\n\nconst log = Log.module('PouchStorageTable');\n\nconst DB_PREFIX = 'Deephaven.';\n\nPouchDB.plugin(PouchDBFind);\n\ninterface PouchStorageItem {\n _id?: string;\n}\n\nexport type PouchDBSort = Array<\n string | { [propName: string]: 'asc' | 'desc' }\n>;\n\nfunction makePouchFilter(type: string, value: FilterValue | FilterValue[]) {\n switch (type) {\n case FilterType.in:\n case FilterType.contains:\n return { $regex: new RegExp(`${value}`) };\n case FilterType.inIgnoreCase:\n return { $regex: new RegExp(`${value}`, 'i') };\n case FilterType.eq:\n return { $eq: value };\n case FilterType.notEq:\n return { $neq: value };\n case FilterType.greaterThan:\n return { $gt: value };\n case FilterType.greaterThanOrEqualTo:\n return { $gte: value };\n case FilterType.lessThan:\n return { $lt: value };\n case FilterType.lessThanOrEqualTo:\n return { $lte: value };\n case FilterType.startsWith:\n return { $regex: new RegExp(`^(?${value}).*`) };\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n}\n\nfunction makePouchSelectorFromConfig(\n config: FilterConfig\n): PouchDB.Find.Selector {\n const { filterItems, filterOperators } = config;\n let filter = null;\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { columnName, type, value } = filterItem;\n const newFilter = { [columnName]: makePouchFilter(type, value) };\n if (i === 0) {\n filter = newFilter;\n } else if (filter !== null && i - 1 < filterOperators.length) {\n const filterOperator = filterOperators[i - 1];\n if (filterOperator === FilterOperator.and) {\n filter = { $and: [filter, newFilter] };\n } else if (filterOperator === FilterOperator.or) {\n filter = { $or: [filter, newFilter] };\n } else {\n throw new Error(\n `Unexpected filter operator ${filterOperator}, ${newFilter}`\n );\n }\n }\n }\n if (filter == null) {\n throw new Error(`Invalid filter config ${config}`);\n }\n return filter;\n}\n\nfunction selectorWithFilters(\n filters: FilterConfig[] = []\n): PouchDB.Find.Selector {\n return {\n $and: [\n ...filters.map(filter => makePouchSelectorFromConfig(filter)),\n { name: { $gt: null } },\n { id: { $gt: null } },\n ],\n };\n}\n\nfunction sortWithConfigs(\n sorts: SortConfig[] | null,\n reverse = false\n): PouchDBSort {\n return [\n { id: reverse ? 'desc' : 'asc' },\n ...(sorts?.map(sort => ({ [sort.column]: sort.direction })) ?? []),\n ];\n}\n\nexport class PouchStorageTable<T extends StorageItem = StorageItem>\n implements StorageTable<T> {\n private db: PouchDB.Database<T & PouchStorageItem>;\n\n private listeners: ViewportUpdateCallback<T>[] = [];\n\n private itemListeners: Map<string, StorageItemListener<T>[]> = new Map();\n\n private currentSize = 0;\n\n private currentViewport?: StorageTableViewport;\n\n private currentReverse = false;\n\n private currentFilter: FilterConfig[] | null = null;\n\n private currentSort: SortConfig[] | null = null;\n\n private infoUpdatePromise?: CancelablePromise<\n PouchDB.Find.FindResponse<T & PouchStorageItem>\n >;\n\n private viewportUpdatePromise?: CancelablePromise<ViewportData<T>>;\n\n private currentViewportData?: ViewportData<T>;\n\n constructor(databaseName: string) {\n this.db = new PouchDB<T & PouchStorageItem>(`${DB_PREFIX}${databaseName}`);\n\n // Need to set `_remote` to false to remove deprecation warnings: https://github.com/pouchdb/pouchdb/issues/6106\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-underscore-dangle\n (this.db as any)._remote = false;\n\n this.db\n .changes({ live: true, since: 'now', include_docs: true })\n .on('change', this.dbUpdate.bind(this));\n\n this.db.createIndex({ index: { fields: ['id', 'name'] } });\n\n this.refreshInfo();\n }\n\n onUpdate(callback: ViewportUpdateCallback<T>): StorageListenerRemover {\n this.listeners = [...this.listeners, callback];\n return () => {\n this.listeners = this.listeners.filter(other => other !== callback);\n };\n }\n\n onItemUpdate(\n id: string,\n listener: StorageItemListener<T>\n ): StorageListenerRemover {\n if (!this.itemListeners.has(id)) {\n this.itemListeners.set(id, []);\n }\n\n this.itemListeners.set(id, [\n ...(this.itemListeners.get(id) as StorageItemListener<T>[]),\n listener,\n ]);\n\n this.refreshItem(id);\n\n return () => {\n this.itemListeners.set(\n id,\n (this.itemListeners.get(id) as StorageItemListener<T>[]).filter(\n other => other !== listener\n )\n );\n };\n }\n\n close(): void {\n this.listeners = [];\n }\n\n get size(): number {\n return this.currentSize;\n }\n\n get viewport(): StorageTableViewport | undefined {\n return this.currentViewport;\n }\n\n setReversed(reversed: boolean): void {\n this.currentReverse = reversed;\n\n this.currentViewportData = undefined;\n\n this.refreshData();\n }\n\n setViewport(viewport: StorageTableViewport | undefined): void {\n this.currentViewport = viewport;\n\n this.refreshInfo();\n\n this.refreshData();\n }\n\n setSorts(config: SortConfig[] | null): void {\n this.currentSort = config;\n\n this.currentViewportData = undefined;\n\n this.refreshData();\n }\n\n setFilters(config: FilterConfig[] | null): void {\n this.currentFilter = config;\n\n this.currentViewportData = undefined;\n\n this.refreshInfo();\n\n this.refreshData();\n }\n\n get data(): ViewportData<T> | undefined {\n return this.currentViewportData;\n }\n\n async getViewportData(): Promise<ViewportData<T>> {\n if (!this.viewportUpdatePromise) {\n this.refreshData();\n }\n return (\n this.viewportUpdatePromise ?? Promise.resolve({ items: [], offset: 0 })\n );\n }\n\n async put(item: T): Promise<T> {\n // Put the item ID in both the _id and the id slot\n // PouchDB uses _id everywhere, StorageTable just uses `id` though\n const newItem = {\n ...item,\n _id: item.id,\n } as T;\n\n await this.db.put(newItem);\n\n return newItem;\n }\n\n private sendUpdate() {\n // Retain a reference to it in case a listener gets removed while sending an update\n const { listeners } = this;\n const data = this.currentViewportData ?? { items: [], offset: 0 };\n for (let i = 0; i < listeners.length; i += 1) {\n listeners[i](data);\n }\n }\n\n private sendItemUpdate(item: T) {\n const listeners = this.itemListeners.get(item.id);\n if (listeners !== undefined) {\n for (let i = 0; i < listeners.length; i += 1) {\n listeners[i](item);\n }\n }\n }\n\n private dbUpdate(event: PouchDB.Core.ChangesResponseChange<T>): void {\n log.debug('Update received', event);\n\n this.refreshInfo();\n\n if (event.doc !== undefined) {\n this.sendItemUpdate(event.doc);\n }\n\n this.refreshData();\n }\n\n private async refreshInfo() {\n try {\n this.infoUpdatePromise?.cancel();\n\n this.infoUpdatePromise = PromiseUtils.makeCancelable(\n this.db.find({\n selector: selectorWithFilters(this.currentFilter ?? []),\n fields: [],\n })\n );\n\n const findResult = await this.infoUpdatePromise;\n\n this.currentSize = findResult.docs.length;\n\n this.sendUpdate();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refreshInfo', e);\n throw e;\n }\n }\n }\n\n private async refreshData(): Promise<ViewportData<T> | undefined> {\n if (!this.currentViewport) {\n return;\n }\n\n try {\n const { currentViewport: viewport } = this;\n\n const sort = sortWithConfigs(this.currentSort, this.currentReverse);\n\n this.viewportUpdatePromise?.cancel();\n\n this.viewportUpdatePromise = PromiseUtils.makeCancelable(\n this.db\n .find({\n selector: selectorWithFilters(this.currentFilter ?? []),\n skip: viewport.top,\n limit: viewport.bottom - viewport.top + 1,\n sort,\n fields: ['id', 'name'],\n })\n .then(findResult => ({\n items: findResult.docs,\n offset: viewport.top,\n }))\n );\n\n const viewportData = await this.viewportUpdatePromise;\n\n this.currentViewportData = viewportData;\n\n this.sendUpdate();\n\n return viewportData;\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refreshData', e);\n throw e;\n }\n }\n }\n\n async refreshItem(id: string): Promise<T | undefined> {\n const findResult = await this.db.find({\n selector: { id },\n limit: 1,\n });\n\n const item = findResult.docs[0];\n\n if (item !== undefined) {\n this.sendItemUpdate(item);\n }\n\n return item;\n }\n\n async getSnapshot(\n sortedRanges: [number, number][]\n ): Promise<StorageSnapshot<T>> {\n const itemMap = new Map();\n\n const sort: PouchDBSort = [{ id: this.currentReverse ? 'desc' : 'asc' }];\n\n await Promise.all(\n sortedRanges.map(async ([from, to]) => {\n const limit = to - from + 1;\n return this.db\n .find({\n selector: selectorWithFilters(this.currentFilter ?? []),\n skip: from,\n limit,\n sort,\n fields: ['id', 'name'],\n })\n .then(findSnapshotResult => {\n for (let i = 0; i < limit; i += 1) {\n const index = from + i;\n itemMap.set(index, findSnapshotResult.docs[i]);\n }\n });\n })\n );\n\n return itemMap;\n }\n}\n\nexport default PouchStorageTable;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/pouch-storage",
3
- "version": "0.22.3-deep-bot-test.14+c0d1d46",
3
+ "version": "0.23.0",
4
4
  "description": "Deephaven Storage based on PouchDB",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -21,11 +21,11 @@
21
21
  "build:babel": "babel ./src --out-dir ./dist --extensions \".ts,.tsx,.js,.jsx\" --source-maps --root-mode upward"
22
22
  },
23
23
  "dependencies": {
24
- "@deephaven/console": "^0.22.3-deep-bot-test.14+c0d1d46",
25
- "@deephaven/filters": "^0.22.3-deep-bot-test.14+c0d1d46",
26
- "@deephaven/log": "^0.22.3-deep-bot-test.14+c0d1d46",
27
- "@deephaven/storage": "^0.22.3-deep-bot-test.14+c0d1d46",
28
- "@deephaven/utils": "^0.22.3-deep-bot-test.14+c0d1d46",
24
+ "@deephaven/console": "^0.23.0",
25
+ "@deephaven/filters": "^0.23.0",
26
+ "@deephaven/log": "^0.23.0",
27
+ "@deephaven/storage": "^0.23.0",
28
+ "@deephaven/utils": "^0.23.0",
29
29
  "lodash.throttle": "^4.1.1",
30
30
  "pouchdb-browser": "^7.3.0",
31
31
  "pouchdb-find": "^7.3.0"
@@ -34,7 +34,7 @@
34
34
  "react": "^17.0.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@deephaven/tsconfig": "^0.22.3-deep-bot-test.14+c0d1d46"
37
+ "@deephaven/tsconfig": "^0.23.0"
38
38
  },
39
39
  "files": [
40
40
  "dist"
@@ -42,5 +42,5 @@
42
42
  "publishConfig": {
43
43
  "access": "public"
44
44
  },
45
- "gitHead": "c0d1d4666f35b21fc8601a6f59a348710f03ca13"
45
+ "gitHead": "94defbc26a5e0e2e3da3d71b5ae770c5bc8155e3"
46
46
  }