@deephaven/pouch-storage 0.26.1 → 0.26.2-beta.1

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.
@@ -2,7 +2,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
2
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; }
3
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); } }
4
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); }); }; }
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; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
7
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
8
  /* eslint-disable class-methods-use-this */
7
9
  import Log from '@deephaven/log';
8
10
  import PouchCommandHistoryTable from "./PouchCommandHistoryTable.js";
@@ -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,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"}
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"}
@@ -1,7 +1,7 @@
1
1
  import { Type as FilterType } from '@deephaven/filters';
2
2
  import { StorageUtils } from '@deephaven/storage';
3
3
  import PouchStorageTable from "./PouchStorageTable.js";
4
- export class PouchCommandHistoryTable extends PouchStorageTable<CommandHistoryStorageItem> {
4
+ export class PouchCommandHistoryTable extends PouchStorageTable {
5
5
  constructor(language) {
6
6
  super("CommandHistoryStorage.".concat(language));
7
7
  }
@@ -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,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
+ {"version":3,"file":"PouchCommandHistoryTable.js","names":["Type","FilterType","StorageUtils","PouchStorageTable","PouchCommandHistoryTable","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,CACM;EAC/BE,WAAW,CAACC,QAAgB,EAAE;IAC5B,KAAK,iCAA0BA,QAAQ,EAAG;EAC5C;EAEAC,SAAS,CAACC,MAAc,EAAQ;IAC9B,IAAI,CAACC,UAAU,CACbD,MAAM,GACF,CACEN,YAAY,CAACQ,gBAAgB,CAAC,CAC5BR,YAAY,CAACS,cAAc,CAAC,MAAM,EAAEV,UAAU,CAACW,QAAQ,EAAEJ,MAAM,CAAC,CACjE,CAAC,CACH,GACD,EAAE,CACP;EACH;AACF;AAEA,eAAeJ,wBAAwB"}
@@ -2,7 +2,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
2
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; }
3
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); } }
4
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); }); }; }
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; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
7
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
8
  import PouchDB from 'pouchdb-browser';
7
9
  import PouchDBFind from 'pouchdb-find';
8
10
  import { Operator as FilterOperator, Type as FilterType } from '@deephaven/filters';
@@ -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.26.1",
3
+ "version": "0.26.2-beta.1+2bf1a88",
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.26.1",
25
- "@deephaven/filters": "^0.26.0",
26
- "@deephaven/log": "^0.26.0",
27
- "@deephaven/storage": "^0.26.0",
28
- "@deephaven/utils": "^0.26.0",
24
+ "@deephaven/console": "^0.26.2-beta.1+2bf1a88",
25
+ "@deephaven/filters": "^0.26.2-beta.1+2bf1a88",
26
+ "@deephaven/log": "^0.26.2-beta.1+2bf1a88",
27
+ "@deephaven/storage": "^0.26.2-beta.1+2bf1a88",
28
+ "@deephaven/utils": "^0.26.2-beta.1+2bf1a88",
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.26.0"
37
+ "@deephaven/tsconfig": "^0.26.2-beta.1+2bf1a88"
38
38
  },
39
39
  "files": [
40
40
  "dist"
@@ -42,5 +42,5 @@
42
42
  "publishConfig": {
43
43
  "access": "public"
44
44
  },
45
- "gitHead": "41b08af69e9925a95dfbbbe49169db117ab04147"
45
+ "gitHead": "2bf1a885feb422ebf6ce3d7752d289e374df2233"
46
46
  }