@deephaven/app-utils 0.72.1-beta.5 → 0.72.1-core-plugins.9
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/components/AppDashboards.d.ts +18 -0
- package/dist/components/AppDashboards.d.ts.map +1 -0
- package/dist/components/AppDashboards.js +71 -0
- package/dist/components/AppDashboards.js.map +1 -0
- package/dist/components/ConnectionBootstrap.d.ts.map +1 -1
- package/dist/components/ConnectionBootstrap.js +101 -7
- package/dist/components/ConnectionBootstrap.js.map +1 -1
- package/dist/components/FontBootstrap.d.ts +11 -1
- package/dist/components/FontBootstrap.d.ts.map +1 -1
- package/dist/components/FontBootstrap.js +11 -1
- package/dist/components/FontBootstrap.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/PluginUtils.js +10 -2
- package/dist/plugins/PluginUtils.js.map +1 -1
- package/dist/storage/LayoutStorage.d.ts +35 -0
- package/dist/storage/LayoutStorage.d.ts.map +1 -0
- package/dist/storage/LayoutStorage.js +15 -0
- package/dist/storage/LayoutStorage.js.map +1 -0
- package/dist/storage/LocalWorkspaceStorage.d.ts +18 -0
- package/dist/storage/LocalWorkspaceStorage.d.ts.map +1 -0
- package/dist/storage/LocalWorkspaceStorage.js +131 -0
- package/dist/storage/LocalWorkspaceStorage.js.map +1 -0
- package/dist/storage/UserLayoutUtils.d.ts +20 -0
- package/dist/storage/UserLayoutUtils.d.ts.map +1 -0
- package/dist/storage/UserLayoutUtils.js +131 -0
- package/dist/storage/UserLayoutUtils.js.map +1 -0
- package/dist/storage/grpc/GrpcFileStorage.d.ts +28 -0
- package/dist/storage/grpc/GrpcFileStorage.d.ts.map +1 -0
- package/dist/storage/grpc/GrpcFileStorage.js +126 -0
- package/dist/storage/grpc/GrpcFileStorage.js.map +1 -0
- package/dist/storage/grpc/GrpcFileStorageTable.d.ts +52 -0
- package/dist/storage/grpc/GrpcFileStorageTable.d.ts.map +1 -0
- package/dist/storage/grpc/GrpcFileStorageTable.js +245 -0
- package/dist/storage/grpc/GrpcFileStorageTable.js.map +1 -0
- package/dist/storage/grpc/GrpcLayoutStorage.d.ts +16 -0
- package/dist/storage/grpc/GrpcLayoutStorage.d.ts.map +1 -0
- package/dist/storage/grpc/GrpcLayoutStorage.js +36 -0
- package/dist/storage/grpc/GrpcLayoutStorage.js.map +1 -0
- package/dist/storage/grpc/index.d.ts +4 -0
- package/dist/storage/grpc/index.d.ts.map +1 -0
- package/dist/storage/grpc/index.js +4 -0
- package/dist/storage/grpc/index.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/package.json +28 -21
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
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); } }
|
|
2
|
+
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); }); }; }
|
|
3
|
+
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; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
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
|
+
/* eslint-disable class-methods-use-this */
|
|
7
|
+
|
|
8
|
+
import Log from '@deephaven/log';
|
|
9
|
+
import { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';
|
|
10
|
+
import { FileUtils } from '@deephaven/file-explorer';
|
|
11
|
+
import debounce from 'lodash.debounce';
|
|
12
|
+
var log = Log.module('GrpcFileStorageTable');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Implementation of FileStorageTable for gRPC service.
|
|
16
|
+
* Takes a path to specify what root this table should start at.
|
|
17
|
+
*/
|
|
18
|
+
export class GrpcFileStorageTable {
|
|
19
|
+
/**
|
|
20
|
+
* Map of expanded directory paths to the tables that manage that path.
|
|
21
|
+
* We use a tree of tables to query the server so we just get the directories that are expanded.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @param storageService The storage service to use
|
|
26
|
+
* @param baseRoot Base root for the service
|
|
27
|
+
* @param root The root path for this storage table
|
|
28
|
+
*/
|
|
29
|
+
constructor(storageService) {
|
|
30
|
+
var baseRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
31
|
+
var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : baseRoot;
|
|
32
|
+
_defineProperty(this, "storageService", void 0);
|
|
33
|
+
_defineProperty(this, "baseRoot", void 0);
|
|
34
|
+
_defineProperty(this, "root", void 0);
|
|
35
|
+
_defineProperty(this, "currentSize", 0);
|
|
36
|
+
_defineProperty(this, "currentViewport", void 0);
|
|
37
|
+
_defineProperty(this, "listeners", []);
|
|
38
|
+
_defineProperty(this, "viewportUpdatePromise", void 0);
|
|
39
|
+
_defineProperty(this, "currentViewportData", void 0);
|
|
40
|
+
_defineProperty(this, "childTables", new Map());
|
|
41
|
+
this.storageService = storageService;
|
|
42
|
+
this.baseRoot = baseRoot;
|
|
43
|
+
this.root = root;
|
|
44
|
+
if (root === baseRoot) {
|
|
45
|
+
this.doRefresh = debounce(this.doRefresh.bind(this), GrpcFileStorageTable.REFRESH_DEBOUNCE);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
removeBaseRoot(filename) {
|
|
49
|
+
return FileUtils.removeRoot(this.baseRoot, filename);
|
|
50
|
+
}
|
|
51
|
+
getViewportData() {
|
|
52
|
+
var _this$viewportUpdateP;
|
|
53
|
+
if (!this.viewportUpdatePromise) {
|
|
54
|
+
this.refreshInternal();
|
|
55
|
+
}
|
|
56
|
+
return (_this$viewportUpdateP = this.viewportUpdatePromise) !== null && _this$viewportUpdateP !== void 0 ? _this$viewportUpdateP : Promise.resolve({
|
|
57
|
+
items: [],
|
|
58
|
+
offset: 0
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
getSnapshot(sortedRanges) {
|
|
62
|
+
throw new Error('Method not implemented.');
|
|
63
|
+
}
|
|
64
|
+
get size() {
|
|
65
|
+
return this.currentSize;
|
|
66
|
+
}
|
|
67
|
+
setExpanded(path, expanded) {
|
|
68
|
+
var paths = path.split('/');
|
|
69
|
+
var nextPath = paths.shift();
|
|
70
|
+
if (nextPath === undefined || nextPath === '') {
|
|
71
|
+
nextPath = paths.shift();
|
|
72
|
+
}
|
|
73
|
+
if (nextPath === undefined || nextPath === '') {
|
|
74
|
+
throw new Error("Invalid path: ".concat(path));
|
|
75
|
+
}
|
|
76
|
+
var remainingPath = paths.join('/');
|
|
77
|
+
if (expanded) {
|
|
78
|
+
if (!this.childTables.has(nextPath)) {
|
|
79
|
+
var childTable = new GrpcFileStorageTable(this.storageService, this.baseRoot, "".concat(this.root, "/").concat(nextPath));
|
|
80
|
+
this.childTables.set(nextPath, childTable);
|
|
81
|
+
}
|
|
82
|
+
if (remainingPath) {
|
|
83
|
+
var _childTable = this.childTables.get(nextPath);
|
|
84
|
+
_childTable === null || _childTable === void 0 ? void 0 : _childTable.setExpanded(remainingPath, expanded);
|
|
85
|
+
}
|
|
86
|
+
} else if (this.childTables.has(nextPath)) {
|
|
87
|
+
if (remainingPath) {
|
|
88
|
+
var _childTable2 = this.childTables.get(nextPath);
|
|
89
|
+
_childTable2 === null || _childTable2 === void 0 ? void 0 : _childTable2.setExpanded(remainingPath, expanded);
|
|
90
|
+
} else {
|
|
91
|
+
this.childTables.delete(nextPath);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (this.currentViewport) {
|
|
95
|
+
this.refreshInternal();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
collapseAll() {
|
|
99
|
+
this.childTables.clear();
|
|
100
|
+
if (this.currentViewport) {
|
|
101
|
+
this.refreshInternal();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// eslint-disable-next-line class-methods-use-this
|
|
106
|
+
setSearch(search) {
|
|
107
|
+
throw new Error('Method not implemented.');
|
|
108
|
+
}
|
|
109
|
+
setViewport(viewport) {
|
|
110
|
+
this.currentViewport = viewport;
|
|
111
|
+
this.refreshInternal();
|
|
112
|
+
}
|
|
113
|
+
setFilters() {
|
|
114
|
+
throw new Error('Method not implemented.');
|
|
115
|
+
}
|
|
116
|
+
setSorts() {
|
|
117
|
+
throw new Error('Method not implemented.');
|
|
118
|
+
}
|
|
119
|
+
setReversed() {
|
|
120
|
+
throw new Error('Method not implemented.');
|
|
121
|
+
}
|
|
122
|
+
close() {
|
|
123
|
+
this.listeners = [];
|
|
124
|
+
}
|
|
125
|
+
onUpdate(callback) {
|
|
126
|
+
this.listeners = [...this.listeners, callback];
|
|
127
|
+
return () => {
|
|
128
|
+
this.listeners = this.listeners.filter(other => other !== callback);
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
doRefresh(callback) {
|
|
132
|
+
log.debug2('doRefresh', this.root);
|
|
133
|
+
callback(this.fetchData());
|
|
134
|
+
}
|
|
135
|
+
refresh() {
|
|
136
|
+
var _this$viewportUpdateP2;
|
|
137
|
+
log.debug2('refresh', this.root);
|
|
138
|
+
(_this$viewportUpdateP2 = this.viewportUpdatePromise) === null || _this$viewportUpdateP2 === void 0 ? void 0 : _this$viewportUpdateP2.cancel();
|
|
139
|
+
var refreshPromise = new Promise(resolve => {
|
|
140
|
+
this.doRefresh(resolve);
|
|
141
|
+
});
|
|
142
|
+
var viewportUpdatePromise = PromiseUtils.makeCancelable(refreshPromise.then(viewportData => {
|
|
143
|
+
if (this.viewportUpdatePromise !== viewportUpdatePromise) {
|
|
144
|
+
throw new CanceledPromiseError();
|
|
145
|
+
}
|
|
146
|
+
this.currentViewportData = viewportData;
|
|
147
|
+
this.sendUpdate();
|
|
148
|
+
return viewportData;
|
|
149
|
+
}));
|
|
150
|
+
|
|
151
|
+
// Add a catch here as we're not catching the promises anywhere else
|
|
152
|
+
viewportUpdatePromise.catch(e => {
|
|
153
|
+
if (!PromiseUtils.isCanceled(e)) {
|
|
154
|
+
log.error('Error updating viewport', e);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
this.viewportUpdatePromise = viewportUpdatePromise;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Refreshes data, but catches any errors and logs them
|
|
162
|
+
*/
|
|
163
|
+
refreshInternal() {
|
|
164
|
+
try {
|
|
165
|
+
this.refresh();
|
|
166
|
+
} catch (e) {
|
|
167
|
+
if (!PromiseUtils.isCanceled(e)) {
|
|
168
|
+
log.error('Unable to refresh data', e);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
fetchData() {
|
|
173
|
+
var _this = this;
|
|
174
|
+
return _asyncToGenerator(function* () {
|
|
175
|
+
var {
|
|
176
|
+
currentViewport: viewport
|
|
177
|
+
} = _this;
|
|
178
|
+
if (!viewport) {
|
|
179
|
+
throw new Error('No viewport set');
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// First get the root directory contents
|
|
183
|
+
var dirContents = yield _this.storageService.listItems(_this.root);
|
|
184
|
+
var items = dirContents.map(file => ({
|
|
185
|
+
type: file.type,
|
|
186
|
+
filename: _this.removeBaseRoot(file.filename),
|
|
187
|
+
basename: file.basename,
|
|
188
|
+
id: _this.removeBaseRoot(file.filename),
|
|
189
|
+
isExpanded: file.type === 'directory' ? _this.childTables.has(file.basename) : undefined
|
|
190
|
+
})).sort((a, b) => {
|
|
191
|
+
if (a.type !== b.type) {
|
|
192
|
+
return a.type === 'directory' ? -1 : 1;
|
|
193
|
+
}
|
|
194
|
+
return a.basename.localeCompare(b.basename);
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
// Get the data from all expanded directories
|
|
198
|
+
for (var i = 0; i < items.length; i += 1) {
|
|
199
|
+
var item = items[i];
|
|
200
|
+
var {
|
|
201
|
+
basename,
|
|
202
|
+
filename
|
|
203
|
+
} = item;
|
|
204
|
+
if (filename === _this.removeBaseRoot("".concat(_this.root, "/").concat(basename)) && item.type === 'directory') {
|
|
205
|
+
var childTable = _this.childTables.get(basename);
|
|
206
|
+
if (childTable != null) {
|
|
207
|
+
childTable.setViewport({
|
|
208
|
+
top: 0,
|
|
209
|
+
bottom: viewport.bottom - i
|
|
210
|
+
});
|
|
211
|
+
// eslint-disable-next-line no-await-in-loop
|
|
212
|
+
var childViewportData = yield childTable.getViewportData();
|
|
213
|
+
items.splice(i + 1, 0, ...childViewportData.items);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
_this.currentSize = items.length;
|
|
218
|
+
log.debug2(_this.root, 'items', items, viewport);
|
|
219
|
+
|
|
220
|
+
// Slice it to the correct viewport
|
|
221
|
+
items = items.slice(viewport.top, viewport.bottom);
|
|
222
|
+
return {
|
|
223
|
+
items,
|
|
224
|
+
offset: viewport.top
|
|
225
|
+
};
|
|
226
|
+
})();
|
|
227
|
+
}
|
|
228
|
+
sendUpdate() {
|
|
229
|
+
var _this$currentViewport;
|
|
230
|
+
// Retain a reference to it in case a listener gets removed while sending an update
|
|
231
|
+
var {
|
|
232
|
+
listeners
|
|
233
|
+
} = this;
|
|
234
|
+
var data = (_this$currentViewport = this.currentViewportData) !== null && _this$currentViewport !== void 0 ? _this$currentViewport : {
|
|
235
|
+
items: [],
|
|
236
|
+
offset: 0
|
|
237
|
+
};
|
|
238
|
+
for (var i = 0; i < listeners.length; i += 1) {
|
|
239
|
+
listeners[i](data);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
_defineProperty(GrpcFileStorageTable, "REFRESH_DEBOUNCE", 50);
|
|
244
|
+
export default GrpcFileStorageTable;
|
|
245
|
+
//# sourceMappingURL=GrpcFileStorageTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrpcFileStorageTable.js","names":["Log","CanceledPromiseError","PromiseUtils","FileUtils","debounce","log","module","GrpcFileStorageTable","constructor","storageService","baseRoot","arguments","length","undefined","root","_defineProperty","Map","doRefresh","bind","REFRESH_DEBOUNCE","removeBaseRoot","filename","removeRoot","getViewportData","_this$viewportUpdateP","viewportUpdatePromise","refreshInternal","Promise","resolve","items","offset","getSnapshot","sortedRanges","Error","size","currentSize","setExpanded","path","expanded","paths","split","nextPath","shift","concat","remainingPath","join","childTables","has","childTable","set","get","delete","currentViewport","collapseAll","clear","setSearch","search","setViewport","viewport","setFilters","setSorts","setReversed","close","listeners","onUpdate","callback","filter","other","debug2","fetchData","refresh","_this$viewportUpdateP2","cancel","refreshPromise","makeCancelable","then","viewportData","currentViewportData","sendUpdate","catch","e","isCanceled","error","_this","_asyncToGenerator","dirContents","listItems","map","file","type","basename","id","isExpanded","sort","a","b","localeCompare","i","item","top","bottom","childViewportData","splice","slice","_this$currentViewport","data"],"sources":["../../../src/storage/grpc/GrpcFileStorageTable.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\n\nimport Log from '@deephaven/log';\nimport {\n StorageTableViewport,\n StorageListenerRemover,\n ViewportUpdateCallback,\n ViewportData,\n IndexRange,\n StorageSnapshot,\n} from '@deephaven/storage';\nimport {\n CancelablePromise,\n CanceledPromiseError,\n PromiseUtils,\n} from '@deephaven/utils';\nimport {\n FileStorageItem,\n FileStorageTable,\n FileUtils,\n} from '@deephaven/file-explorer';\nimport type { dh } from '@deephaven/jsapi-types';\nimport debounce from 'lodash.debounce';\n\nconst log = Log.module('GrpcFileStorageTable');\n\n/**\n * Implementation of FileStorageTable for gRPC service.\n * Takes a path to specify what root this table should start at.\n */\nexport class GrpcFileStorageTable implements FileStorageTable {\n static REFRESH_DEBOUNCE = 50;\n\n private readonly storageService: dh.storage.StorageService;\n\n private readonly baseRoot: string;\n\n private readonly root: string;\n\n private currentSize = 0;\n\n private currentViewport?: StorageTableViewport;\n\n private listeners: ViewportUpdateCallback<FileStorageItem>[] = [];\n\n private viewportUpdatePromise?: CancelablePromise<\n ViewportData<FileStorageItem>\n >;\n\n private currentViewportData?: ViewportData<FileStorageItem>;\n\n /**\n * Map of expanded directory paths to the tables that manage that path.\n * We use a tree of tables to query the server so we just get the directories that are expanded.\n */\n private childTables: Map<string, GrpcFileStorageTable> = new Map();\n\n /**\n * @param storageService The storage service to use\n * @param baseRoot Base root for the service\n * @param root The root path for this storage table\n */\n constructor(\n storageService: dh.storage.StorageService,\n baseRoot = '',\n root = baseRoot\n ) {\n this.storageService = storageService;\n this.baseRoot = baseRoot;\n this.root = root;\n if (root === baseRoot) {\n this.doRefresh = debounce(\n this.doRefresh.bind(this),\n GrpcFileStorageTable.REFRESH_DEBOUNCE\n );\n }\n }\n\n private removeBaseRoot(filename: string): string {\n return FileUtils.removeRoot(this.baseRoot, filename);\n }\n\n getViewportData(): Promise<ViewportData<FileStorageItem>> {\n if (!this.viewportUpdatePromise) {\n this.refreshInternal();\n }\n return (\n this.viewportUpdatePromise ?? Promise.resolve({ items: [], offset: 0 })\n );\n }\n\n getSnapshot(\n sortedRanges: IndexRange[]\n ): Promise<StorageSnapshot<FileStorageItem>> {\n throw new Error('Method not implemented.');\n }\n\n get size(): number {\n return this.currentSize;\n }\n\n setExpanded(path: string, expanded: boolean): void {\n const paths = path.split('/');\n let nextPath = paths.shift();\n if (nextPath === undefined || nextPath === '') {\n nextPath = paths.shift();\n }\n if (nextPath === undefined || nextPath === '') {\n throw new Error(`Invalid path: ${path}`);\n }\n const remainingPath = paths.join('/');\n if (expanded) {\n if (!this.childTables.has(nextPath)) {\n const childTable = new GrpcFileStorageTable(\n this.storageService,\n this.baseRoot,\n `${this.root}/${nextPath}`\n );\n this.childTables.set(nextPath, childTable);\n }\n if (remainingPath) {\n const childTable = this.childTables.get(nextPath);\n childTable?.setExpanded(remainingPath, expanded);\n }\n } else if (this.childTables.has(nextPath)) {\n if (remainingPath) {\n const childTable = this.childTables.get(nextPath);\n childTable?.setExpanded(remainingPath, expanded);\n } else {\n this.childTables.delete(nextPath);\n }\n }\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n\n collapseAll(): void {\n this.childTables.clear();\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n setSearch(search: string): void {\n throw new Error('Method not implemented.');\n }\n\n setViewport(viewport: StorageTableViewport): void {\n this.currentViewport = viewport;\n\n this.refreshInternal();\n }\n\n setFilters(): void {\n throw new Error('Method not implemented.');\n }\n\n setSorts(): void {\n throw new Error('Method not implemented.');\n }\n\n setReversed(): void {\n throw new Error('Method not implemented.');\n }\n\n close(): void {\n this.listeners = [];\n }\n\n onUpdate(\n callback: ViewportUpdateCallback<FileStorageItem>\n ): StorageListenerRemover {\n this.listeners = [...this.listeners, callback];\n return () => {\n this.listeners = this.listeners.filter(other => other !== callback);\n };\n }\n\n doRefresh(\n callback: (fetchPromise: Promise<ViewportData<FileStorageItem>>) => void\n ): void {\n log.debug2('doRefresh', this.root);\n callback(this.fetchData());\n }\n\n refresh(): void {\n log.debug2('refresh', this.root);\n\n this.viewportUpdatePromise?.cancel();\n\n const refreshPromise = new Promise<ViewportData<FileStorageItem>>(\n resolve => {\n this.doRefresh(resolve);\n }\n );\n\n const viewportUpdatePromise = PromiseUtils.makeCancelable(\n refreshPromise.then(viewportData => {\n if (this.viewportUpdatePromise !== viewportUpdatePromise) {\n throw new CanceledPromiseError();\n }\n\n this.currentViewportData = viewportData;\n\n this.sendUpdate();\n\n return viewportData;\n })\n );\n\n // Add a catch here as we're not catching the promises anywhere else\n viewportUpdatePromise.catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Error updating viewport', e);\n }\n });\n\n this.viewportUpdatePromise = viewportUpdatePromise;\n }\n\n /**\n * Refreshes data, but catches any errors and logs them\n */\n private refreshInternal(): void {\n try {\n this.refresh();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refresh data', e);\n }\n }\n }\n\n private async fetchData(): Promise<ViewportData<FileStorageItem>> {\n const { currentViewport: viewport } = this;\n if (!viewport) {\n throw new Error('No viewport set');\n }\n\n // First get the root directory contents\n const dirContents = await this.storageService.listItems(this.root);\n let items = dirContents\n .map(file => ({\n type: file.type,\n filename: this.removeBaseRoot(file.filename),\n basename: file.basename,\n id: this.removeBaseRoot(file.filename),\n isExpanded:\n file.type === 'directory'\n ? this.childTables.has(file.basename)\n : undefined,\n }))\n .sort((a, b) => {\n if (a.type !== b.type) {\n return a.type === 'directory' ? -1 : 1;\n }\n return a.basename.localeCompare(b.basename);\n }) as FileStorageItem[];\n\n // Get the data from all expanded directories\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { basename, filename } = item;\n if (\n filename === this.removeBaseRoot(`${this.root}/${basename}`) &&\n item.type === 'directory'\n ) {\n const childTable = this.childTables.get(basename);\n if (childTable != null) {\n childTable.setViewport({ top: 0, bottom: viewport.bottom - i });\n // eslint-disable-next-line no-await-in-loop\n const childViewportData = await childTable.getViewportData();\n items.splice(i + 1, 0, ...childViewportData.items);\n }\n }\n }\n\n this.currentSize = items.length;\n\n log.debug2(this.root, 'items', items, viewport);\n\n // Slice it to the correct viewport\n items = items.slice(viewport.top, viewport.bottom);\n\n return { items, offset: viewport.top };\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\nexport default GrpcFileStorageTable;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { dh } from '@deephaven/jsapi-types';
|
|
2
|
+
import LayoutStorage, { ExportedLayout } from '../LayoutStorage';
|
|
3
|
+
export declare class GrpcLayoutStorage implements LayoutStorage {
|
|
4
|
+
readonly storageService: dh.storage.StorageService;
|
|
5
|
+
readonly root: string;
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param storageService The gRPC storage service to use
|
|
9
|
+
* @param root The root path where the layouts are stored
|
|
10
|
+
*/
|
|
11
|
+
constructor(storageService: dh.storage.StorageService, root?: string);
|
|
12
|
+
getLayouts(): Promise<string[]>;
|
|
13
|
+
getLayout(name: string): Promise<ExportedLayout>;
|
|
14
|
+
}
|
|
15
|
+
export default GrpcLayoutStorage;
|
|
16
|
+
//# sourceMappingURL=GrpcLayoutStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrpcLayoutStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/grpc/GrpcLayoutStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,aAAa,EAAE,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;IAEnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;gBACS,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,SAAK;IAK1D,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM/B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAQvD;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
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); } }
|
|
2
|
+
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); }); }; }
|
|
3
|
+
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; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
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
|
+
export class GrpcLayoutStorage {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param storageService The gRPC storage service to use
|
|
10
|
+
* @param root The root path where the layouts are stored
|
|
11
|
+
*/
|
|
12
|
+
constructor(storageService) {
|
|
13
|
+
var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
14
|
+
_defineProperty(this, "storageService", void 0);
|
|
15
|
+
_defineProperty(this, "root", void 0);
|
|
16
|
+
this.storageService = storageService;
|
|
17
|
+
this.root = root;
|
|
18
|
+
}
|
|
19
|
+
getLayouts() {
|
|
20
|
+
var _this = this;
|
|
21
|
+
return _asyncToGenerator(function* () {
|
|
22
|
+
var files = yield _this.storageService.listItems(_this.root, '*.json');
|
|
23
|
+
return files.map(file => file.basename);
|
|
24
|
+
})();
|
|
25
|
+
}
|
|
26
|
+
getLayout(name) {
|
|
27
|
+
var _this2 = this;
|
|
28
|
+
return _asyncToGenerator(function* () {
|
|
29
|
+
var fileContents = yield _this2.storageService.loadFile("".concat(_this2.root, "/").concat(name));
|
|
30
|
+
var content = yield fileContents.text();
|
|
31
|
+
return JSON.parse(content);
|
|
32
|
+
})();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export default GrpcLayoutStorage;
|
|
36
|
+
//# sourceMappingURL=GrpcLayoutStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrpcLayoutStorage.js","names":["GrpcLayoutStorage","constructor","storageService","root","arguments","length","undefined","_defineProperty","getLayouts","_this","_asyncToGenerator","files","listItems","map","file","basename","getLayout","name","_this2","fileContents","loadFile","concat","content","text","JSON","parse"],"sources":["../../../src/storage/grpc/GrpcLayoutStorage.ts"],"sourcesContent":["import type { dh } from '@deephaven/jsapi-types';\nimport LayoutStorage, { ExportedLayout } from '../LayoutStorage';\n\nexport class GrpcLayoutStorage implements LayoutStorage {\n readonly storageService: dh.storage.StorageService;\n\n readonly root: string;\n\n /**\n *\n * @param storageService The gRPC storage service to use\n * @param root The root path where the layouts are stored\n */\n constructor(storageService: dh.storage.StorageService, root = '') {\n this.storageService = storageService;\n this.root = root;\n }\n\n async getLayouts(): Promise<string[]> {\n const files = await this.storageService.listItems(this.root, '*.json');\n\n return files.map(file => file.basename);\n }\n\n async getLayout(name: string): Promise<ExportedLayout> {\n const fileContents = await this.storageService.loadFile(\n `${this.root}/${name}`\n );\n const content = await fileContents.text();\n\n return JSON.parse(content);\n }\n}\n\nexport default GrpcLayoutStorage;\n"],"mappings":";;;;;AAGA,OAAO,MAAMA,iBAAiB,CAA0B;EAKtD;AACF;AACA;AACA;AACA;EACEC,WAAWA,CAACC,cAAyC,EAAa;IAAA,IAAXC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAAG,eAAA;IAAAA,eAAA;IAC9D,IAAI,CAACL,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACC,IAAI,GAAGA,IAAI;EAClB;EAEMK,UAAUA,CAAA,EAAsB;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MACpC,IAAMC,KAAK,SAASF,KAAI,CAACP,cAAc,CAACU,SAAS,CAACH,KAAI,CAACN,IAAI,EAAE,QAAQ,CAAC;MAEtE,OAAOQ,KAAK,CAACE,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,QAAQ,CAAC;IAAC;EAC1C;EAEMC,SAASA,CAACC,IAAY,EAA2B;IAAA,IAAAC,MAAA;IAAA,OAAAR,iBAAA;MACrD,IAAMS,YAAY,SAASD,MAAI,CAAChB,cAAc,CAACkB,QAAQ,IAAAC,MAAA,CAClDH,MAAI,CAACf,IAAI,OAAAkB,MAAA,CAAIJ,IAAI,CACtB,CAAC;MACD,IAAMK,OAAO,SAASH,YAAY,CAACI,IAAI,CAAC,CAAC;MAEzC,OAAOC,IAAI,CAACC,KAAK,CAACH,OAAO,CAAC;IAAC;EAC7B;AACF;AAEA,eAAetB,iBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/grpc/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/storage/grpc/index.ts"],"sourcesContent":["export * from './GrpcFileStorage';\nexport * from './GrpcFileStorageTable';\nexport * from './GrpcLayoutStorage';\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","UserLayoutUtils"],"sources":["../../src/storage/index.ts"],"sourcesContent":["export * from './grpc';\nexport * from './LayoutStorage';\nexport * from './LocalWorkspaceStorage';\nexport * from './UserLayoutUtils';\nexport { default as UserLayoutUtils } from './UserLayoutUtils';\n"],"mappings":";;;;SAISA,OAAO,IAAIC,eAAe"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/app-utils",
|
|
3
|
-
"version": "0.72.1-
|
|
3
|
+
"version": "0.72.1-core-plugins.9+2dd04edb",
|
|
4
4
|
"description": "Deephaven App Utils",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -28,27 +28,34 @@
|
|
|
28
28
|
"redux": "^4.x"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@adobe/react-spectrum": "
|
|
32
|
-
"@deephaven/auth-plugins": "^0.72.1-
|
|
33
|
-
"@deephaven/chart": "^0.72.1-
|
|
34
|
-
"@deephaven/components": "^0.72.1-
|
|
35
|
-
"@deephaven/console": "^0.72.1-
|
|
36
|
-
"@deephaven/dashboard": "^0.72.1-
|
|
37
|
-
"@deephaven/dashboard-core-plugins": "^0.72.1-
|
|
38
|
-
"@deephaven/
|
|
39
|
-
"@deephaven/
|
|
40
|
-
"@deephaven/
|
|
41
|
-
"@deephaven/
|
|
42
|
-
"@deephaven/jsapi-
|
|
43
|
-
"@deephaven/jsapi-
|
|
44
|
-
"@deephaven/
|
|
45
|
-
"@deephaven/
|
|
46
|
-
"@deephaven/
|
|
47
|
-
"@deephaven/
|
|
48
|
-
"@deephaven/
|
|
31
|
+
"@adobe/react-spectrum": "3.35.1",
|
|
32
|
+
"@deephaven/auth-plugins": "^0.72.1-core-plugins.9+2dd04edb",
|
|
33
|
+
"@deephaven/chart": "^0.72.1-core-plugins.9+2dd04edb",
|
|
34
|
+
"@deephaven/components": "^0.72.1-core-plugins.9+2dd04edb",
|
|
35
|
+
"@deephaven/console": "^0.72.1-core-plugins.9+2dd04edb",
|
|
36
|
+
"@deephaven/dashboard": "^0.72.1-core-plugins.9+2dd04edb",
|
|
37
|
+
"@deephaven/dashboard-core-plugins": "^0.72.1-core-plugins.9+2dd04edb",
|
|
38
|
+
"@deephaven/file-explorer": "^0.72.1-core-plugins.9+2dd04edb",
|
|
39
|
+
"@deephaven/golden-layout": "^0.72.1-core-plugins.9+2dd04edb",
|
|
40
|
+
"@deephaven/icons": "^0.72.1-core-plugins.9+2dd04edb",
|
|
41
|
+
"@deephaven/iris-grid": "^0.72.1-core-plugins.9+2dd04edb",
|
|
42
|
+
"@deephaven/jsapi-bootstrap": "^0.72.1-core-plugins.9+2dd04edb",
|
|
43
|
+
"@deephaven/jsapi-components": "^0.72.1-core-plugins.9+2dd04edb",
|
|
44
|
+
"@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
|
|
45
|
+
"@deephaven/jsapi-utils": "^0.72.1-core-plugins.9+2dd04edb",
|
|
46
|
+
"@deephaven/log": "^0.72.1-core-plugins.9+2dd04edb",
|
|
47
|
+
"@deephaven/plugin": "^0.72.1-core-plugins.9+2dd04edb",
|
|
48
|
+
"@deephaven/react-hooks": "^0.72.1-core-plugins.9+2dd04edb",
|
|
49
|
+
"@deephaven/redux": "^0.72.1-core-plugins.9+2dd04edb",
|
|
50
|
+
"@deephaven/storage": "^0.72.1-core-plugins.9+2dd04edb",
|
|
51
|
+
"@deephaven/utils": "^0.72.1-core-plugins.9+2dd04edb",
|
|
52
|
+
"@fontsource/fira-mono": "5.0.13",
|
|
53
|
+
"@fontsource/fira-sans": "5.0.20",
|
|
49
54
|
"@paciolan/remote-component": "2.13.0",
|
|
50
55
|
"@paciolan/remote-module-loader": "^3.0.2",
|
|
51
|
-
"
|
|
56
|
+
"classnames": "^2.5.1",
|
|
57
|
+
"lodash.debounce": "^4.0.8",
|
|
58
|
+
"lodash.throttle": "^4.1.1"
|
|
52
59
|
},
|
|
53
60
|
"peerDependencies": {
|
|
54
61
|
"react": ">=16.8.0",
|
|
@@ -65,5 +72,5 @@
|
|
|
65
72
|
"publishConfig": {
|
|
66
73
|
"access": "public"
|
|
67
74
|
},
|
|
68
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "2dd04edb752fbc59cbcda20383bfcaabd393108b"
|
|
69
76
|
}
|