@deephaven/pouch-storage 0.22.3-beta.15 → 0.22.3-beta.21
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/PouchCommandHistoryStorage.js +0 -17
- package/dist/PouchCommandHistoryStorage.js.map +1 -1
- package/dist/PouchCommandHistoryTable.js +0 -2
- package/dist/PouchCommandHistoryTable.js.map +1 -1
- package/dist/PouchStorageTable.js +2 -82
- package/dist/PouchStorageTable.js.map +1 -1
- package/package.json +8 -8
|
@@ -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":"
|
|
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,
|
|
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,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
|
-
|
|
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":"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"}
|
|
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-beta.
|
|
3
|
+
"version": "0.22.3-beta.21+6d63afd",
|
|
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-beta.
|
|
25
|
-
"@deephaven/filters": "^0.22.3-beta.
|
|
26
|
-
"@deephaven/log": "^0.22.3-beta.
|
|
27
|
-
"@deephaven/storage": "^0.22.3-beta.
|
|
28
|
-
"@deephaven/utils": "^0.22.3-beta.
|
|
24
|
+
"@deephaven/console": "^0.22.3-beta.21+6d63afd",
|
|
25
|
+
"@deephaven/filters": "^0.22.3-beta.21+6d63afd",
|
|
26
|
+
"@deephaven/log": "^0.22.3-beta.21+6d63afd",
|
|
27
|
+
"@deephaven/storage": "^0.22.3-beta.21+6d63afd",
|
|
28
|
+
"@deephaven/utils": "^0.22.3-beta.21+6d63afd",
|
|
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-beta.
|
|
37
|
+
"@deephaven/tsconfig": "^0.22.3-beta.21+6d63afd"
|
|
38
38
|
},
|
|
39
39
|
"files": [
|
|
40
40
|
"dist"
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"publishConfig": {
|
|
43
43
|
"access": "public"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "6d63afd124485605d545e0104d0cb437eb8993ab"
|
|
46
46
|
}
|