@deephaven/pouch-storage 0.77.1-beta.4 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,13 +2,16 @@
2
2
  /// <reference types="pouchdb-core" />
3
3
  /// <reference types="pouchdb-mapreduce" />
4
4
  /// <reference types="pouchdb-replication" />
5
- import { FilterConfig, SortConfig, StorageItem, StorageTable, StorageListenerRemover, StorageTableViewport, StorageItemListener, StorageSnapshot, ViewportData, ViewportUpdateCallback, IndexRange } from '@deephaven/storage';
5
+ import { FilterConfig, FilterValue, SortConfig, StorageItem, StorageTable, StorageListenerRemover, StorageTableViewport, StorageItemListener, StorageSnapshot, ViewportData, ViewportUpdateCallback, IndexRange } from '@deephaven/storage';
6
+ import { OnlyOneProp } from '@deephaven/utils';
6
7
  export interface PouchStorageItem {
7
8
  _id?: string;
8
9
  }
9
10
  export type PouchDBSort = Array<string | {
10
11
  [propName: string]: 'asc' | 'desc';
11
12
  }>;
13
+ type PouchFilter = OnlyOneProp<Pick<PouchDB.Find.ConditionOperators, '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte' | '$regex'>>;
14
+ export declare function makePouchFilter(type: string, value: FilterValue | FilterValue[]): PouchFilter;
12
15
  export declare class PouchStorageTable<T extends StorageItem = StorageItem> implements StorageTable<T> {
13
16
  protected db: PouchDB.Database<T & PouchStorageItem>;
14
17
  changes?: PouchDB.Core.Changes<T & PouchStorageItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"PouchStorageTable.d.ts","sourceRoot":"","sources":["../src/PouchStorageTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PouchStorageTable.d.ts","sourceRoot":"","sources":["../src/PouchStorageTable.ts"],"names":[],"mappings":"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"}
@@ -13,29 +13,24 @@ import { PromiseUtils } from '@deephaven/utils';
13
13
  var log = Log.module('PouchStorageTable');
14
14
  var DB_PREFIX = 'Deephaven.';
15
15
  PouchDB.plugin(PouchDBFind);
16
-
17
- // We may want to use `PouchDB.Find.ConditionOperators` instead of this, but
18
- // there are some mismatches in how we use this with the types.
19
- // https://github.com/deephaven/web-client-ui/issues/1505 to address this
20
- function makePouchFilter(type, value) {
16
+ export function makePouchFilter(type, value) {
21
17
  switch (type) {
22
18
  case FilterType.in:
23
19
  case FilterType.contains:
24
20
  return {
25
- $regex: new RegExp("".concat(value))
21
+ $regex: new RegExp("".concat(value)).toString()
26
22
  };
27
23
  case FilterType.inIgnoreCase:
28
24
  return {
29
- $regex: new RegExp("".concat(value), 'i')
25
+ $regex: new RegExp("".concat(value), 'i').toString()
30
26
  };
31
27
  case FilterType.eq:
32
28
  return {
33
29
  $eq: value
34
30
  };
35
31
  case FilterType.notEq:
36
- // This should be `$ne` https://github.com/deephaven/web-client-ui/issues/1505
37
32
  return {
38
- $neq: value
33
+ $ne: value
39
34
  };
40
35
  case FilterType.greaterThan:
41
36
  return {
@@ -55,7 +50,7 @@ function makePouchFilter(type, value) {
55
50
  };
56
51
  case FilterType.startsWith:
57
52
  return {
58
- $regex: new RegExp("^(?".concat(value, ").*"))
53
+ $regex: new RegExp("^".concat(value, ".*")).toString()
59
54
  };
60
55
  default:
61
56
  throw new Error("Unsupported type: ".concat(type));
@@ -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","concat","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","arguments","undefined","map","name","id","sortWithConfigs","sorts","_sorts$map","reverse","sort","column","direction","PouchStorageTable","constructor","databaseName","dbOptions","_defineProperty","Map","db","_remote","listenForChanges","createIndex","index","fields","refreshInfo","changes","live","since","include_docs","on","dbUpdate","bind","onUpdate","callback","listeners","other","onItemUpdate","listener","itemListeners","has","set","get","refreshItem","close","size","currentSize","viewport","currentViewport","setReversed","reversed","currentReverse","currentViewportData","refreshData","setViewport","setSorts","currentSort","setFilters","currentFilter","data","getViewportData","_this","_asyncToGenerator","_this$viewportUpdateP","viewportUpdatePromise","Promise","resolve","items","offset","put","item","_this2","newItem","_objectSpread","_id","sendUpdate","_this$currentViewport","sendItemUpdate","event","debug","doc","fetchInfo","selector","_this3","find","_this4","_this4$infoUpdateProm","_this4$currentFilter","infoUpdatePromise","cancel","makeCancelable","findResult","docs","e","isCanceled","error","fetchViewportData","_this5","skip","top","limit","bottom","then","_this6","_this6$currentFilter","_this6$viewportUpdate","viewportData","_this7","getSnapshot","sortedRanges","_this8","itemMap","all","_ref2","_ref","_this8$currentFilter","from","to","findSnapshotResult","_x","apply"],"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 IndexRange,\n} from '@deephaven/storage';\nimport { CancelablePromise, OnlyOneProp, PromiseUtils } from '@deephaven/utils';\n\nconst log = Log.module('PouchStorageTable');\n\nconst DB_PREFIX = 'Deephaven.';\n\nPouchDB.plugin(PouchDBFind);\n\nexport interface PouchStorageItem {\n _id?: string;\n}\n\nexport type PouchDBSort = Array<\n string | { [propName: string]: 'asc' | 'desc' }\n>;\n\n// We may want to use `PouchDB.Find.ConditionOperators` instead of this, but\n// there are some mismatches in how we use this with the types.\n// https://github.com/deephaven/web-client-ui/issues/1505 to address this\ntype PouchFilter = OnlyOneProp<{\n $eq: FilterValue | FilterValue[];\n $neq: FilterValue | FilterValue[];\n $gt: FilterValue | FilterValue[];\n $gte: FilterValue | FilterValue[];\n $lt: FilterValue | FilterValue[];\n $lte: FilterValue | FilterValue[];\n $regex: RegExp;\n}>;\n\nfunction makePouchFilter(\n type: string,\n value: FilterValue | FilterValue[]\n): PouchFilter {\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 // This should be `$ne` https://github.com/deephaven/web-client-ui/issues/1505\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{\n protected db: PouchDB.Database<T & PouchStorageItem>;\n\n changes?: PouchDB.Core.Changes<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(\n databaseName: string,\n dbOptions?: PouchDB.Configuration.DatabaseConfiguration\n ) {\n this.db = new PouchDB<T & PouchStorageItem>(\n `${DB_PREFIX}${databaseName}`,\n dbOptions\n );\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.listenForChanges();\n\n this.db.createIndex({ index: { fields: ['id', 'name'] } });\n\n this.refreshInfo();\n }\n\n /**\n * Listen for db changes. This can be cancelled by calling\n * `this.changes?.cancel()`\n */\n listenForChanges(): void {\n this.changes = this.db\n .changes({ live: true, since: 'now', include_docs: true })\n .on('change', this.dbUpdate.bind(this));\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(): void {\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): void {\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 protected 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 /**\n * Fetch infor for a given selector.\n * @param selector\n */\n protected async fetchInfo(\n selector: PouchDB.Find.Selector\n ): Promise<PouchDB.Find.FindResponse<T & PouchStorageItem>> {\n return this.db.find({\n selector,\n fields: [],\n });\n }\n\n private async refreshInfo(): Promise<void> {\n try {\n this.infoUpdatePromise?.cancel();\n\n this.infoUpdatePromise = PromiseUtils.makeCancelable(\n this.fetchInfo(selectorWithFilters(this.currentFilter ?? []))\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 /**\n * Fetch data for the given viewport, selector, and sort.\n * @param viewport\n * @param selector\n * @param sort\n */\n protected async fetchViewportData(\n viewport: StorageTableViewport,\n selector: PouchDB.Find.Selector,\n sort: PouchDBSort\n ): Promise<ViewportData<T>> {\n return this.db\n .find({\n selector,\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 private async refreshData(): Promise<ViewportData<T> | undefined> {\n if (!this.currentViewport) {\n return;\n }\n\n try {\n const selector = selectorWithFilters(this.currentFilter ?? []);\n const sort = sortWithConfigs(this.currentSort, this.currentReverse);\n\n this.viewportUpdatePromise?.cancel();\n\n this.viewportUpdatePromise = PromiseUtils.makeCancelable(\n this.fetchViewportData(this.currentViewport, selector, sort)\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(sortedRanges: IndexRange[]): 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","concat","toString","inIgnoreCase","eq","$eq","notEq","$ne","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","arguments","undefined","map","name","id","sortWithConfigs","sorts","_sorts$map","reverse","sort","column","direction","PouchStorageTable","constructor","databaseName","dbOptions","_defineProperty","Map","db","_remote","listenForChanges","createIndex","index","fields","refreshInfo","changes","live","since","include_docs","on","dbUpdate","bind","onUpdate","callback","listeners","other","onItemUpdate","listener","itemListeners","has","set","get","refreshItem","close","size","currentSize","viewport","currentViewport","setReversed","reversed","currentReverse","currentViewportData","refreshData","setViewport","setSorts","currentSort","setFilters","currentFilter","data","getViewportData","_this","_asyncToGenerator","_this$viewportUpdateP","viewportUpdatePromise","Promise","resolve","items","offset","put","item","_this2","newItem","_objectSpread","_id","sendUpdate","_this$currentViewport","sendItemUpdate","event","debug","doc","fetchInfo","selector","_this3","find","_this4","_this4$infoUpdateProm","_this4$currentFilter","infoUpdatePromise","cancel","makeCancelable","findResult","docs","e","isCanceled","error","fetchViewportData","_this5","skip","top","limit","bottom","then","_this6","_this6$currentFilter","_this6$viewportUpdate","viewportData","_this7","getSnapshot","sortedRanges","_this8","itemMap","all","_ref2","_ref","_this8$currentFilter","from","to","findSnapshotResult","_x","apply"],"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 IndexRange,\n} from '@deephaven/storage';\nimport { CancelablePromise, OnlyOneProp, PromiseUtils } from '@deephaven/utils';\n\nconst log = Log.module('PouchStorageTable');\n\nconst DB_PREFIX = 'Deephaven.';\n\nPouchDB.plugin(PouchDBFind);\n\nexport interface PouchStorageItem {\n _id?: string;\n}\n\nexport type PouchDBSort = Array<\n string | { [propName: string]: 'asc' | 'desc' }\n>;\n\ntype PouchFilter = OnlyOneProp<\n Pick<\n PouchDB.Find.ConditionOperators,\n '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte' | '$regex'\n >\n>;\n\nexport function makePouchFilter(\n type: string,\n value: FilterValue | FilterValue[]\n): PouchFilter {\n switch (type) {\n case FilterType.in:\n case FilterType.contains:\n return { $regex: new RegExp(`${value}`).toString() };\n case FilterType.inIgnoreCase:\n return { $regex: new RegExp(`${value}`, 'i').toString() };\n case FilterType.eq:\n return { $eq: value };\n case FilterType.notEq:\n return { $ne: 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}.*`).toString() };\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{\n protected db: PouchDB.Database<T & PouchStorageItem>;\n\n changes?: PouchDB.Core.Changes<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(\n databaseName: string,\n dbOptions?: PouchDB.Configuration.DatabaseConfiguration\n ) {\n this.db = new PouchDB<T & PouchStorageItem>(\n `${DB_PREFIX}${databaseName}`,\n dbOptions\n );\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.listenForChanges();\n\n this.db.createIndex({ index: { fields: ['id', 'name'] } });\n\n this.refreshInfo();\n }\n\n /**\n * Listen for db changes. This can be cancelled by calling\n * `this.changes?.cancel()`\n */\n listenForChanges(): void {\n this.changes = this.db\n .changes({ live: true, since: 'now', include_docs: true })\n .on('change', this.dbUpdate.bind(this));\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(): void {\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): void {\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 protected 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 /**\n * Fetch infor for a given selector.\n * @param selector\n */\n protected async fetchInfo(\n selector: PouchDB.Find.Selector\n ): Promise<PouchDB.Find.FindResponse<T & PouchStorageItem>> {\n return this.db.find({\n selector,\n fields: [],\n });\n }\n\n private async refreshInfo(): Promise<void> {\n try {\n this.infoUpdatePromise?.cancel();\n\n this.infoUpdatePromise = PromiseUtils.makeCancelable(\n this.fetchInfo(selectorWithFilters(this.currentFilter ?? []))\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 /**\n * Fetch data for the given viewport, selector, and sort.\n * @param viewport\n * @param selector\n * @param sort\n */\n protected async fetchViewportData(\n viewport: StorageTableViewport,\n selector: PouchDB.Find.Selector,\n sort: PouchDBSort\n ): Promise<ViewportData<T>> {\n return this.db\n .find({\n selector,\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 private async refreshData(): Promise<ViewportData<T> | undefined> {\n if (!this.currentViewport) {\n return;\n }\n\n try {\n const selector = selectorWithFilters(this.currentFilter ?? []);\n const sort = sortWithConfigs(this.currentSort, this.currentReverse);\n\n this.viewportUpdatePromise?.cancel();\n\n this.viewportUpdatePromise = PromiseUtils.makeCancelable(\n this.fetchViewportData(this.currentViewport, selector, sort)\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(sortedRanges: IndexRange[]): 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.77.1-beta.4+7d59d09d",
3
+ "version": "0.78.0",
4
4
  "description": "Deephaven Storage based on PouchDB",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -21,11 +21,11 @@
21
21
  "build:babel": "babel ./src --out-dir ./dist --extensions \".ts,.tsx,.js,.jsx\" --source-maps --root-mode upward"
22
22
  },
23
23
  "dependencies": {
24
- "@deephaven/console": "^0.77.1-beta.4+7d59d09d",
25
- "@deephaven/filters": "^0.77.1-beta.4+7d59d09d",
26
- "@deephaven/log": "^0.77.1-beta.4+7d59d09d",
27
- "@deephaven/storage": "^0.77.1-beta.4+7d59d09d",
28
- "@deephaven/utils": "^0.77.1-beta.4+7d59d09d",
24
+ "@deephaven/console": "^0.78.0",
25
+ "@deephaven/filters": "^0.78.0",
26
+ "@deephaven/log": "^0.78.0",
27
+ "@deephaven/storage": "^0.78.0",
28
+ "@deephaven/utils": "^0.78.0",
29
29
  "lodash.throttle": "^4.1.1",
30
30
  "pouchdb-browser": "^7.3.0",
31
31
  "pouchdb-find": "^7.3.0"
@@ -40,5 +40,5 @@
40
40
  "publishConfig": {
41
41
  "access": "public"
42
42
  },
43
- "gitHead": "7d59d09d69a843f32c2666ee650a5217b520ba9b"
43
+ "gitHead": "11005198cdd5608ad4c88eb296fd10f51528ff09"
44
44
  }