@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.
Files changed (54) hide show
  1. package/dist/components/AppDashboards.d.ts +18 -0
  2. package/dist/components/AppDashboards.d.ts.map +1 -0
  3. package/dist/components/AppDashboards.js +71 -0
  4. package/dist/components/AppDashboards.js.map +1 -0
  5. package/dist/components/ConnectionBootstrap.d.ts.map +1 -1
  6. package/dist/components/ConnectionBootstrap.js +101 -7
  7. package/dist/components/ConnectionBootstrap.js.map +1 -1
  8. package/dist/components/FontBootstrap.d.ts +11 -1
  9. package/dist/components/FontBootstrap.d.ts.map +1 -1
  10. package/dist/components/FontBootstrap.js +11 -1
  11. package/dist/components/FontBootstrap.js.map +1 -1
  12. package/dist/components/index.d.ts +1 -0
  13. package/dist/components/index.d.ts.map +1 -1
  14. package/dist/components/index.js +1 -0
  15. package/dist/components/index.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/plugins/PluginUtils.js +10 -2
  21. package/dist/plugins/PluginUtils.js.map +1 -1
  22. package/dist/storage/LayoutStorage.d.ts +35 -0
  23. package/dist/storage/LayoutStorage.d.ts.map +1 -0
  24. package/dist/storage/LayoutStorage.js +15 -0
  25. package/dist/storage/LayoutStorage.js.map +1 -0
  26. package/dist/storage/LocalWorkspaceStorage.d.ts +18 -0
  27. package/dist/storage/LocalWorkspaceStorage.d.ts.map +1 -0
  28. package/dist/storage/LocalWorkspaceStorage.js +131 -0
  29. package/dist/storage/LocalWorkspaceStorage.js.map +1 -0
  30. package/dist/storage/UserLayoutUtils.d.ts +20 -0
  31. package/dist/storage/UserLayoutUtils.d.ts.map +1 -0
  32. package/dist/storage/UserLayoutUtils.js +131 -0
  33. package/dist/storage/UserLayoutUtils.js.map +1 -0
  34. package/dist/storage/grpc/GrpcFileStorage.d.ts +28 -0
  35. package/dist/storage/grpc/GrpcFileStorage.d.ts.map +1 -0
  36. package/dist/storage/grpc/GrpcFileStorage.js +126 -0
  37. package/dist/storage/grpc/GrpcFileStorage.js.map +1 -0
  38. package/dist/storage/grpc/GrpcFileStorageTable.d.ts +52 -0
  39. package/dist/storage/grpc/GrpcFileStorageTable.d.ts.map +1 -0
  40. package/dist/storage/grpc/GrpcFileStorageTable.js +245 -0
  41. package/dist/storage/grpc/GrpcFileStorageTable.js.map +1 -0
  42. package/dist/storage/grpc/GrpcLayoutStorage.d.ts +16 -0
  43. package/dist/storage/grpc/GrpcLayoutStorage.d.ts.map +1 -0
  44. package/dist/storage/grpc/GrpcLayoutStorage.js +36 -0
  45. package/dist/storage/grpc/GrpcLayoutStorage.js.map +1 -0
  46. package/dist/storage/grpc/index.d.ts +4 -0
  47. package/dist/storage/grpc/index.d.ts.map +1 -0
  48. package/dist/storage/grpc/index.js +4 -0
  49. package/dist/storage/grpc/index.js.map +1 -0
  50. package/dist/storage/index.d.ts +6 -0
  51. package/dist/storage/index.d.ts.map +1 -0
  52. package/dist/storage/index.js +6 -0
  53. package/dist/storage/index.js.map +1 -0
  54. package/package.json +28 -21
@@ -0,0 +1,18 @@
1
+ import { WorkspaceStorage, WorkspaceStorageLoadOptions, CustomizableWorkspaceData, CustomizableWorkspace, WorkspaceSettings, ServerConfigValues } from '@deephaven/redux';
2
+ import LayoutStorage from './LayoutStorage';
3
+ /**
4
+ * Implementation of WorkspaceStorage that just stores the workspace data in localStorage
5
+ */
6
+ export declare class LocalWorkspaceStorage implements WorkspaceStorage {
7
+ static readonly STORAGE_KEY = "deephaven.WorkspaceStorage";
8
+ static getBooleanServerConfig(serverConfigValues: Map<string, string> | undefined, key: string): boolean | undefined;
9
+ static makeDefaultWorkspaceSettings(serverConfigValues: ServerConfigValues): WorkspaceSettings;
10
+ static makeWorkspaceData(layoutStorage: LayoutStorage, options?: WorkspaceStorageLoadOptions): Promise<CustomizableWorkspaceData>;
11
+ static makeDefaultWorkspace(layoutStorage: LayoutStorage, options?: WorkspaceStorageLoadOptions): Promise<CustomizableWorkspace>;
12
+ private layoutStorage;
13
+ constructor(layoutStorage: LayoutStorage);
14
+ load(options?: WorkspaceStorageLoadOptions): Promise<CustomizableWorkspace>;
15
+ save(workspace: CustomizableWorkspace): Promise<CustomizableWorkspace>;
16
+ }
17
+ export default LocalWorkspaceStorage;
18
+ //# sourceMappingURL=LocalWorkspaceStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalWorkspaceStorage.d.ts","sourceRoot":"","sources":["../../src/storage/LocalWorkspaceStorage.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C;;GAEG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,MAAM,CAAC,QAAQ,CAAC,WAAW,gCAAgC;IAE3D,MAAM,CAAC,sBAAsB,CAC3B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACnD,GAAG,EAAE,MAAM,GACV,OAAO,GAAG,SAAS;IAUtB,MAAM,CAAC,4BAA4B,CACjC,kBAAkB,EAAE,kBAAkB,GACrC,iBAAiB;WAoFP,iBAAiB,CAC5B,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,yBAAyB,CAAC;WAoBxB,oBAAoB,CAC/B,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,qBAAqB,CAAC;IASjC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,EAAE,aAAa;IAKlC,IAAI,CACR,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,qBAAqB,CAAC;IAiB3B,IAAI,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAO7E;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,131 @@
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
+ import Log from '@deephaven/log';
7
+ import { DateTimeColumnFormatter, DecimalColumnFormatter, IntegerColumnFormatter } from '@deephaven/jsapi-utils';
8
+ import UserLayoutUtils from "./UserLayoutUtils.js";
9
+ var log = Log.module('LocalWorkspaceStorage');
10
+
11
+ /**
12
+ * Implementation of WorkspaceStorage that just stores the workspace data in localStorage
13
+ */
14
+ export class LocalWorkspaceStorage {
15
+ static getBooleanServerConfig(serverConfigValues, key) {
16
+ var _serverConfigValues$g, _serverConfigValues$g2;
17
+ if ((serverConfigValues === null || serverConfigValues === void 0 ? void 0 : (_serverConfigValues$g = serverConfigValues.get(key)) === null || _serverConfigValues$g === void 0 ? void 0 : _serverConfigValues$g.toLowerCase()) === 'true') {
18
+ return true;
19
+ }
20
+ if ((serverConfigValues === null || serverConfigValues === void 0 ? void 0 : (_serverConfigValues$g2 = serverConfigValues.get(key)) === null || _serverConfigValues$g2 === void 0 ? void 0 : _serverConfigValues$g2.toLowerCase()) === 'false') {
21
+ return false;
22
+ }
23
+ return undefined;
24
+ }
25
+ static makeDefaultWorkspaceSettings(serverConfigValues) {
26
+ var settings = {
27
+ defaultDateTimeFormat: DateTimeColumnFormatter.DEFAULT_DATETIME_FORMAT_STRING,
28
+ formatter: [],
29
+ timeZone: DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID,
30
+ showTimeZone: false,
31
+ showTSeparator: true,
32
+ disableMoveConfirmation: false,
33
+ defaultDecimalFormatOptions: {
34
+ defaultFormatString: DecimalColumnFormatter.DEFAULT_FORMAT_STRING
35
+ },
36
+ defaultIntegerFormatOptions: {
37
+ defaultFormatString: IntegerColumnFormatter.DEFAULT_FORMAT_STRING
38
+ },
39
+ truncateNumbersWithPound: false,
40
+ showEmptyStrings: true,
41
+ showNullStrings: true,
42
+ defaultNotebookSettings: {
43
+ isMinimapEnabled: false
44
+ }
45
+ };
46
+ var serverSettings = {
47
+ defaultDateTimeFormat: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('dateTimeFormat'),
48
+ formatter: [],
49
+ timeZone: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('timeZone'),
50
+ showTimeZone: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showTimeZone'),
51
+ showTSeparator: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showTSeparator'),
52
+ disableMoveConfirmation: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'disableMoveConfirmation'),
53
+ defaultDecimalFormatOptions: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('decimalFormat')) !== undefined ? {
54
+ defaultFormatString: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('decimalFormat')
55
+ } : undefined,
56
+ defaultIntegerFormatOptions: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('integerFormat')) !== undefined ? {
57
+ defaultFormatString: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('integerFormat')
58
+ } : undefined,
59
+ truncateNumbersWithPound: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'truncateNumbersWithPound'),
60
+ showEmptyStrings: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showEmptyStrings'),
61
+ showNullStrings: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showNullStrings'),
62
+ defaultNotebookSettings: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('isMinimapEnabled')) !== undefined ? {
63
+ isMinimapEnabled: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'isMinimapEnabled')
64
+ } : undefined
65
+ };
66
+ var keys = Object.keys(serverSettings);
67
+ for (var i = 0; i < keys.length; i += 1) {
68
+ var key = keys[i];
69
+ if (serverSettings[key] !== undefined) {
70
+ // @ts-expect-error override default for defined server settings
71
+ settings[key] = serverSettings[key];
72
+ }
73
+ }
74
+ return settings;
75
+ }
76
+ static makeWorkspaceData(layoutStorage, options) {
77
+ return _asyncToGenerator(function* () {
78
+ var {
79
+ filterSets,
80
+ links,
81
+ layoutConfig,
82
+ pluginDataMap = {}
83
+ } = yield UserLayoutUtils.getDefaultLayout(layoutStorage, options === null || options === void 0 ? void 0 : options.isConsoleAvailable);
84
+ return {
85
+ settings: {},
86
+ layoutConfig,
87
+ closed: [{}],
88
+ links,
89
+ filterSets,
90
+ pluginDataMap
91
+ };
92
+ })();
93
+ }
94
+ static makeDefaultWorkspace(layoutStorage, options) {
95
+ return _asyncToGenerator(function* () {
96
+ return {
97
+ data: yield LocalWorkspaceStorage.makeWorkspaceData(layoutStorage, options)
98
+ };
99
+ })();
100
+ }
101
+ constructor(layoutStorage) {
102
+ _defineProperty(this, "layoutStorage", void 0);
103
+ this.layoutStorage = layoutStorage;
104
+ }
105
+
106
+ // eslint-disable-next-line class-methods-use-this
107
+ load(options) {
108
+ var _this = this;
109
+ return _asyncToGenerator(function* () {
110
+ try {
111
+ var _localStorage$getItem;
112
+ var workspace = JSON.parse((_localStorage$getItem = localStorage.getItem(LocalWorkspaceStorage.STORAGE_KEY)) !== null && _localStorage$getItem !== void 0 ? _localStorage$getItem : '');
113
+ return workspace;
114
+ } catch (e) {
115
+ log.info('Unable to load workspace data, initializing to default data');
116
+ return LocalWorkspaceStorage.makeDefaultWorkspace(_this.layoutStorage, options);
117
+ }
118
+ })();
119
+ }
120
+
121
+ // eslint-disable-next-line class-methods-use-this
122
+ save(workspace) {
123
+ return _asyncToGenerator(function* () {
124
+ localStorage.setItem(LocalWorkspaceStorage.STORAGE_KEY, JSON.stringify(workspace));
125
+ return workspace;
126
+ })();
127
+ }
128
+ }
129
+ _defineProperty(LocalWorkspaceStorage, "STORAGE_KEY", 'deephaven.WorkspaceStorage');
130
+ export default LocalWorkspaceStorage;
131
+ //# sourceMappingURL=LocalWorkspaceStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalWorkspaceStorage.js","names":["Log","DateTimeColumnFormatter","DecimalColumnFormatter","IntegerColumnFormatter","UserLayoutUtils","log","module","LocalWorkspaceStorage","getBooleanServerConfig","serverConfigValues","key","_serverConfigValues$g","_serverConfigValues$g2","get","toLowerCase","undefined","makeDefaultWorkspaceSettings","settings","defaultDateTimeFormat","DEFAULT_DATETIME_FORMAT_STRING","formatter","timeZone","DEFAULT_TIME_ZONE_ID","showTimeZone","showTSeparator","disableMoveConfirmation","defaultDecimalFormatOptions","defaultFormatString","DEFAULT_FORMAT_STRING","defaultIntegerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","defaultNotebookSettings","isMinimapEnabled","serverSettings","keys","Object","i","length","makeWorkspaceData","layoutStorage","options","_asyncToGenerator","filterSets","links","layoutConfig","pluginDataMap","getDefaultLayout","isConsoleAvailable","closed","makeDefaultWorkspace","data","constructor","_defineProperty","load","_this","_localStorage$getItem","workspace","JSON","parse","localStorage","getItem","STORAGE_KEY","e","info","save","setItem","stringify"],"sources":["../../src/storage/LocalWorkspaceStorage.ts"],"sourcesContent":["import Log from '@deephaven/log';\nimport {\n WorkspaceStorage,\n WorkspaceStorageLoadOptions,\n CustomizableWorkspaceData,\n CustomizableWorkspace,\n WorkspaceSettings,\n ServerConfigValues,\n} from '@deephaven/redux';\nimport {\n DateTimeColumnFormatter,\n DecimalColumnFormatter,\n IntegerColumnFormatter,\n} from '@deephaven/jsapi-utils';\nimport UserLayoutUtils from './UserLayoutUtils';\nimport LayoutStorage from './LayoutStorage';\n\nconst log = Log.module('LocalWorkspaceStorage');\n\n/**\n * Implementation of WorkspaceStorage that just stores the workspace data in localStorage\n */\nexport class LocalWorkspaceStorage implements WorkspaceStorage {\n static readonly STORAGE_KEY = 'deephaven.WorkspaceStorage';\n\n static getBooleanServerConfig(\n serverConfigValues: Map<string, string> | undefined,\n key: string\n ): boolean | undefined {\n if (serverConfigValues?.get(key)?.toLowerCase() === 'true') {\n return true;\n }\n if (serverConfigValues?.get(key)?.toLowerCase() === 'false') {\n return false;\n }\n return undefined;\n }\n\n static makeDefaultWorkspaceSettings(\n serverConfigValues: ServerConfigValues\n ): WorkspaceSettings {\n const settings = {\n defaultDateTimeFormat:\n DateTimeColumnFormatter.DEFAULT_DATETIME_FORMAT_STRING,\n formatter: [],\n timeZone: DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID,\n showTimeZone: false,\n showTSeparator: true,\n disableMoveConfirmation: false,\n defaultDecimalFormatOptions: {\n defaultFormatString: DecimalColumnFormatter.DEFAULT_FORMAT_STRING,\n },\n defaultIntegerFormatOptions: {\n defaultFormatString: IntegerColumnFormatter.DEFAULT_FORMAT_STRING,\n },\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n defaultNotebookSettings: {\n isMinimapEnabled: false,\n },\n };\n const serverSettings = {\n defaultDateTimeFormat: serverConfigValues?.get('dateTimeFormat'),\n formatter: [],\n timeZone: serverConfigValues?.get('timeZone'),\n showTimeZone: LocalWorkspaceStorage.getBooleanServerConfig(\n serverConfigValues,\n 'showTimeZone'\n ),\n showTSeparator: LocalWorkspaceStorage.getBooleanServerConfig(\n serverConfigValues,\n 'showTSeparator'\n ),\n disableMoveConfirmation: LocalWorkspaceStorage.getBooleanServerConfig(\n serverConfigValues,\n 'disableMoveConfirmation'\n ),\n defaultDecimalFormatOptions:\n serverConfigValues?.get('decimalFormat') !== undefined\n ? {\n defaultFormatString: serverConfigValues?.get('decimalFormat'),\n }\n : undefined,\n defaultIntegerFormatOptions:\n serverConfigValues?.get('integerFormat') !== undefined\n ? {\n defaultFormatString: serverConfigValues?.get('integerFormat'),\n }\n : undefined,\n truncateNumbersWithPound: LocalWorkspaceStorage.getBooleanServerConfig(\n serverConfigValues,\n 'truncateNumbersWithPound'\n ),\n showEmptyStrings: LocalWorkspaceStorage.getBooleanServerConfig(\n serverConfigValues,\n 'showEmptyStrings'\n ),\n showNullStrings: LocalWorkspaceStorage.getBooleanServerConfig(\n serverConfigValues,\n 'showNullStrings'\n ),\n defaultNotebookSettings:\n serverConfigValues?.get('isMinimapEnabled') !== undefined\n ? {\n isMinimapEnabled: LocalWorkspaceStorage.getBooleanServerConfig(\n serverConfigValues,\n 'isMinimapEnabled'\n ) as boolean,\n }\n : undefined,\n };\n\n const keys = Object.keys(serverSettings) as Array<keyof typeof settings>;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (serverSettings[key] !== undefined) {\n // @ts-expect-error override default for defined server settings\n settings[key] = serverSettings[key];\n }\n }\n return settings;\n }\n\n static async makeWorkspaceData(\n layoutStorage: LayoutStorage,\n options?: WorkspaceStorageLoadOptions\n ): Promise<CustomizableWorkspaceData> {\n const {\n filterSets,\n links,\n layoutConfig,\n pluginDataMap = {},\n } = await UserLayoutUtils.getDefaultLayout(\n layoutStorage,\n options?.isConsoleAvailable\n );\n return {\n settings: {},\n layoutConfig,\n closed: [{}],\n links,\n filterSets,\n pluginDataMap,\n };\n }\n\n static async makeDefaultWorkspace(\n layoutStorage: LayoutStorage,\n options?: WorkspaceStorageLoadOptions\n ): Promise<CustomizableWorkspace> {\n return {\n data: await LocalWorkspaceStorage.makeWorkspaceData(\n layoutStorage,\n options\n ),\n };\n }\n\n private layoutStorage: LayoutStorage;\n\n constructor(layoutStorage: LayoutStorage) {\n this.layoutStorage = layoutStorage;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async load(\n options?: WorkspaceStorageLoadOptions\n ): Promise<CustomizableWorkspace> {\n try {\n const workspace = JSON.parse(\n localStorage.getItem(LocalWorkspaceStorage.STORAGE_KEY) ?? ''\n );\n return workspace;\n } catch (e) {\n log.info('Unable to load workspace data, initializing to default data');\n\n return LocalWorkspaceStorage.makeDefaultWorkspace(\n this.layoutStorage,\n options\n );\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n async save(workspace: CustomizableWorkspace): Promise<CustomizableWorkspace> {\n localStorage.setItem(\n LocalWorkspaceStorage.STORAGE_KEY,\n JSON.stringify(workspace)\n );\n return workspace;\n }\n}\n\nexport default LocalWorkspaceStorage;\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { CustomizableWorkspaceData } from '@deephaven/redux';
2
+ import LayoutStorage, { ExportedLayout, ExportedLayoutV2 } from './LayoutStorage';
3
+ export declare const DEFAULT_LAYOUT_CONFIG: ExportedLayoutV2;
4
+ export declare const DEFAULT_LAYOUT_CONFIG_NO_CONSOLE: ExportedLayoutV2;
5
+ export declare function normalizeLayout(layout: ExportedLayout): ExportedLayoutV2;
6
+ /**
7
+ * Get the default layout for the user to use. Checks layout storage for any layouts, and uses the first one if found.
8
+ * @param layoutStorage The layout storage to get the default layouts from
9
+ * @param isConsoleAvailable Whether console sessions are available.
10
+ * @returns The default layout config to use
11
+ */
12
+ export declare function getDefaultLayout(layoutStorage: LayoutStorage, isConsoleAvailable?: boolean): Promise<ExportedLayoutV2>;
13
+ export declare function exportLayout(data: CustomizableWorkspaceData): ExportedLayoutV2;
14
+ declare const _default: {
15
+ exportLayout: typeof exportLayout;
16
+ getDefaultLayout: typeof getDefaultLayout;
17
+ normalizeLayout: typeof normalizeLayout;
18
+ };
19
+ export default _default;
20
+ //# sourceMappingURL=UserLayoutUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserLayoutUtils.d.ts","sourceRoot":"","sources":["../../src/storage/UserLayoutUtils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,aAAa,EAAE,EACpB,cAAc,EACd,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAIzB,eAAO,MAAM,qBAAqB,EAAE,gBA8DnC,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,gBAK9C,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAexE;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,aAAa,EAC5B,kBAAkB,UAAO,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAqB3B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,yBAAyB,GAC9B,gBAAgB,CAalB;;;;;;AAED,wBAAmE"}
@@ -0,0 +1,131 @@
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
+ import { CommandHistoryPanel, ConsolePanel, FileExplorerPanel, LogPanel } from '@deephaven/dashboard-core-plugins';
4
+ import Log from '@deephaven/log';
5
+ import { isLayoutV1, isLayoutV2 } from "./LayoutStorage.js";
6
+ var log = Log.module('UserLayoutUtils');
7
+ export var DEFAULT_LAYOUT_CONFIG = {
8
+ layoutConfig: [{
9
+ type: 'column',
10
+ content: [{
11
+ type: 'row',
12
+ height: 40,
13
+ // slightly smaller than 50-50 to allow more space for tables below
14
+ content: [{
15
+ type: 'stack',
16
+ content: [{
17
+ type: 'react-component',
18
+ component: ConsolePanel.COMPONENT,
19
+ title: ConsolePanel.TITLE,
20
+ isClosable: false
21
+ }, {
22
+ type: 'react-component',
23
+ component: LogPanel.COMPONENT,
24
+ title: LogPanel.TITLE,
25
+ isClosable: false
26
+ }]
27
+ }, {
28
+ type: 'stack',
29
+ width: 25,
30
+ content: [{
31
+ type: 'react-component',
32
+ component: CommandHistoryPanel.COMPONENT,
33
+ title: CommandHistoryPanel.TITLE,
34
+ isClosable: false
35
+ }, {
36
+ type: 'react-component',
37
+ component: FileExplorerPanel.COMPONENT,
38
+ title: FileExplorerPanel.TITLE,
39
+ isClosable: false
40
+ }]
41
+ }]
42
+ }, {
43
+ type: 'row',
44
+ content: [{
45
+ type: 'stack',
46
+ title: 'Notebooks',
47
+ content: []
48
+ }]
49
+ }]
50
+ }],
51
+ links: [],
52
+ filterSets: [],
53
+ version: 2
54
+ };
55
+ export var DEFAULT_LAYOUT_CONFIG_NO_CONSOLE = {
56
+ layoutConfig: [],
57
+ links: [],
58
+ filterSets: [],
59
+ version: 2
60
+ };
61
+ export function normalizeLayout(layout) {
62
+ if (isLayoutV2(layout)) {
63
+ return layout;
64
+ }
65
+ if (isLayoutV1(layout)) {
66
+ var layoutConfig = layout;
67
+ return {
68
+ layoutConfig,
69
+ links: [],
70
+ filterSets: [],
71
+ version: 2
72
+ };
73
+ }
74
+ throw new Error("Unexpected layout import format: ".concat(layout));
75
+ }
76
+
77
+ /**
78
+ * Get the default layout for the user to use. Checks layout storage for any layouts, and uses the first one if found.
79
+ * @param layoutStorage The layout storage to get the default layouts from
80
+ * @param isConsoleAvailable Whether console sessions are available.
81
+ * @returns The default layout config to use
82
+ */
83
+ export function getDefaultLayout(_x) {
84
+ return _getDefaultLayout.apply(this, arguments);
85
+ }
86
+ function _getDefaultLayout() {
87
+ _getDefaultLayout = _asyncToGenerator(function* (layoutStorage) {
88
+ var isConsoleAvailable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
89
+ try {
90
+ var layouts = yield layoutStorage.getLayouts();
91
+ if (layouts.length > 0) {
92
+ try {
93
+ // We found a layout on the server, use it. It could be an empty layout if they want user to build their own
94
+ var layout = yield layoutStorage.getLayout(layouts[0]);
95
+ return normalizeLayout(layout);
96
+ } catch (err) {
97
+ log.error('Unable to load layout', layouts[0], ':', err);
98
+ log.warn('No valid layouts found, falling back to default layout');
99
+ }
100
+ }
101
+ } catch (err) {
102
+ log.error('Unable to fetch layout list', err);
103
+ log.warn('Falling back to default layout');
104
+ }
105
+ // Otherwise, do the default layout
106
+ return isConsoleAvailable ? DEFAULT_LAYOUT_CONFIG : DEFAULT_LAYOUT_CONFIG_NO_CONSOLE;
107
+ });
108
+ return _getDefaultLayout.apply(this, arguments);
109
+ }
110
+ export function exportLayout(data) {
111
+ var {
112
+ filterSets,
113
+ layoutConfig,
114
+ links,
115
+ pluginDataMap
116
+ } = data;
117
+ var exportedLayout = {
118
+ filterSets,
119
+ layoutConfig,
120
+ links,
121
+ pluginDataMap,
122
+ version: 2
123
+ };
124
+ return exportedLayout;
125
+ }
126
+ export default {
127
+ exportLayout,
128
+ getDefaultLayout,
129
+ normalizeLayout
130
+ };
131
+ //# sourceMappingURL=UserLayoutUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserLayoutUtils.js","names":["CommandHistoryPanel","ConsolePanel","FileExplorerPanel","LogPanel","Log","isLayoutV1","isLayoutV2","log","module","DEFAULT_LAYOUT_CONFIG","layoutConfig","type","content","height","component","COMPONENT","title","TITLE","isClosable","width","links","filterSets","version","DEFAULT_LAYOUT_CONFIG_NO_CONSOLE","normalizeLayout","layout","Error","concat","getDefaultLayout","_x","_getDefaultLayout","apply","arguments","_asyncToGenerator","layoutStorage","isConsoleAvailable","length","undefined","layouts","getLayouts","getLayout","err","error","warn","exportLayout","data","pluginDataMap","exportedLayout"],"sources":["../../src/storage/UserLayoutUtils.ts"],"sourcesContent":["import {\n CommandHistoryPanel,\n ConsolePanel,\n FileExplorerPanel,\n LogPanel,\n} from '@deephaven/dashboard-core-plugins';\nimport Log from '@deephaven/log';\nimport { CustomizableWorkspaceData } from '@deephaven/redux';\nimport LayoutStorage, {\n ExportedLayout,\n ExportedLayoutV2,\n isLayoutV1,\n isLayoutV2,\n} from './LayoutStorage';\n\nconst log = Log.module('UserLayoutUtils');\n\nexport const DEFAULT_LAYOUT_CONFIG: ExportedLayoutV2 = {\n layoutConfig: [\n {\n type: 'column',\n content: [\n {\n type: 'row',\n height: 40, // slightly smaller than 50-50 to allow more space for tables below\n content: [\n {\n type: 'stack',\n content: [\n {\n type: 'react-component',\n component: ConsolePanel.COMPONENT,\n title: ConsolePanel.TITLE,\n isClosable: false,\n },\n {\n type: 'react-component',\n component: LogPanel.COMPONENT,\n title: LogPanel.TITLE,\n isClosable: false,\n },\n ],\n },\n {\n type: 'stack',\n width: 25,\n content: [\n {\n type: 'react-component',\n component: CommandHistoryPanel.COMPONENT,\n title: CommandHistoryPanel.TITLE,\n isClosable: false,\n },\n {\n type: 'react-component',\n component: FileExplorerPanel.COMPONENT,\n title: FileExplorerPanel.TITLE,\n isClosable: false,\n },\n ],\n },\n ],\n },\n {\n type: 'row',\n content: [\n {\n type: 'stack',\n title: 'Notebooks',\n content: [],\n },\n ],\n },\n ],\n },\n ],\n links: [],\n filterSets: [],\n version: 2,\n};\n\nexport const DEFAULT_LAYOUT_CONFIG_NO_CONSOLE: ExportedLayoutV2 = {\n layoutConfig: [],\n links: [],\n filterSets: [],\n version: 2,\n};\n\nexport function normalizeLayout(layout: ExportedLayout): ExportedLayoutV2 {\n if (isLayoutV2(layout)) {\n return layout;\n }\n if (isLayoutV1(layout)) {\n const layoutConfig = layout;\n return {\n layoutConfig,\n links: [],\n filterSets: [],\n version: 2,\n };\n }\n\n throw new Error(`Unexpected layout import format: ${layout}`);\n}\n\n/**\n * Get the default layout for the user to use. Checks layout storage for any layouts, and uses the first one if found.\n * @param layoutStorage The layout storage to get the default layouts from\n * @param isConsoleAvailable Whether console sessions are available.\n * @returns The default layout config to use\n */\nexport async function getDefaultLayout(\n layoutStorage: LayoutStorage,\n isConsoleAvailable = true\n): Promise<ExportedLayoutV2> {\n try {\n const layouts = await layoutStorage.getLayouts();\n if (layouts.length > 0) {\n try {\n // We found a layout on the server, use it. It could be an empty layout if they want user to build their own\n const layout = await layoutStorage.getLayout(layouts[0]);\n return normalizeLayout(layout);\n } catch (err) {\n log.error('Unable to load layout', layouts[0], ':', err);\n log.warn('No valid layouts found, falling back to default layout');\n }\n }\n } catch (err) {\n log.error('Unable to fetch layout list', err);\n log.warn('Falling back to default layout');\n }\n // Otherwise, do the default layout\n return isConsoleAvailable\n ? DEFAULT_LAYOUT_CONFIG\n : DEFAULT_LAYOUT_CONFIG_NO_CONSOLE;\n}\n\nexport function exportLayout(\n data: CustomizableWorkspaceData\n): ExportedLayoutV2 {\n const { filterSets, layoutConfig, links, pluginDataMap } = data as Omit<\n ExportedLayoutV2,\n 'version'\n >;\n const exportedLayout: ExportedLayoutV2 = {\n filterSets,\n layoutConfig,\n links,\n pluginDataMap,\n version: 2,\n };\n return exportedLayout;\n}\n\nexport default { exportLayout, getDefaultLayout, normalizeLayout };\n"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { FileStorage, File, FileStorageItem, FileStorageTable } from '@deephaven/file-explorer';
2
+ import type { dh as DhType } from '@deephaven/jsapi-types';
3
+ export declare class GrpcFileStorage implements FileStorage {
4
+ private static readonly REFRESH_THROTTLE;
5
+ private dh;
6
+ private readonly storageService;
7
+ private tables;
8
+ private readonly root;
9
+ /**
10
+ * FileStorage implementation using gRPC
11
+ * @param storageService Storage service to use
12
+ * @param root Root path for this instance. Should not contain trailing slash.
13
+ */
14
+ constructor(dh: typeof DhType, storageService: DhType.storage.StorageService, root?: string);
15
+ private removeRoot;
16
+ private addRoot;
17
+ createDirectory(path: string): Promise<FileStorageItem>;
18
+ getTable(): Promise<FileStorageTable>;
19
+ saveFile(file: File): Promise<File>;
20
+ loadFile(name: string): Promise<File>;
21
+ copyFile(name: string, newName: string): Promise<void>;
22
+ deleteFile(name: string): Promise<void>;
23
+ moveFile(name: string, newName: string): Promise<void>;
24
+ info(name: string): Promise<FileStorageItem>;
25
+ private refreshTables;
26
+ }
27
+ export default GrpcFileStorage;
28
+ //# sourceMappingURL=GrpcFileStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrpcFileStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/grpc/GrpcFileStorage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,IAAI,EACJ,eAAe,EACf,gBAAgB,EAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAM3D,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAE/C,OAAO,CAAC,EAAE,CAAgB;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAE/D,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B;;;;OAIG;gBAED,EAAE,EAAE,OAAO,MAAM,EACjB,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,EAC7C,IAAI,SAAK;IAOX,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;IAIT,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAWvD,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMrC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA8BlD,OAAO,CAAC,aAAa,CAEgB;CACtC;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,126 @@
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
+ import throttle from 'lodash.throttle';
7
+ import { FileNotFoundError, FileUtils, isFileType } from '@deephaven/file-explorer';
8
+ import Log from '@deephaven/log';
9
+ import GrpcFileStorageTable from "./GrpcFileStorageTable.js";
10
+ var log = Log.module('GrpcFileStorage');
11
+ export class GrpcFileStorage {
12
+ /**
13
+ * FileStorage implementation using gRPC
14
+ * @param storageService Storage service to use
15
+ * @param root Root path for this instance. Should not contain trailing slash.
16
+ */
17
+ constructor(dh, storageService) {
18
+ var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
19
+ _defineProperty(this, "dh", void 0);
20
+ _defineProperty(this, "storageService", void 0);
21
+ _defineProperty(this, "tables", []);
22
+ _defineProperty(this, "root", void 0);
23
+ _defineProperty(this, "refreshTables", throttle(() => {
24
+ this.tables.forEach(table => table.refresh());
25
+ }, GrpcFileStorage.REFRESH_THROTTLE));
26
+ this.dh = dh;
27
+ this.storageService = storageService;
28
+ this.root = root;
29
+ }
30
+ removeRoot(filename) {
31
+ return FileUtils.removeRoot(this.root, filename);
32
+ }
33
+ addRoot(path) {
34
+ return FileUtils.addRoot(this.root, path);
35
+ }
36
+ createDirectory(path) {
37
+ var _this = this;
38
+ return _asyncToGenerator(function* () {
39
+ yield _this.storageService.createDirectory(_this.addRoot(path));
40
+ _this.refreshTables();
41
+ return {
42
+ type: 'directory',
43
+ id: path,
44
+ filename: path,
45
+ basename: FileUtils.getBaseName(path)
46
+ };
47
+ })();
48
+ }
49
+ getTable() {
50
+ var _this2 = this;
51
+ return _asyncToGenerator(function* () {
52
+ var table = new GrpcFileStorageTable(_this2.storageService, _this2.root);
53
+ _this2.tables.push(table);
54
+ return table;
55
+ })();
56
+ }
57
+ saveFile(file) {
58
+ var _this3 = this;
59
+ return _asyncToGenerator(function* () {
60
+ var fileContents = _this3.dh.storage.FileContents.text(file.content);
61
+ yield _this3.storageService.saveFile(_this3.addRoot(file.filename), fileContents, true);
62
+ _this3.refreshTables();
63
+ return file;
64
+ })();
65
+ }
66
+ loadFile(name) {
67
+ var _this4 = this;
68
+ return _asyncToGenerator(function* () {
69
+ var fileContents = yield _this4.storageService.loadFile(_this4.addRoot(name));
70
+ var content = yield fileContents.text();
71
+ return {
72
+ filename: name,
73
+ basename: FileUtils.getBaseName(name),
74
+ content
75
+ };
76
+ })();
77
+ }
78
+ copyFile(name, newName) {
79
+ var _this5 = this;
80
+ return _asyncToGenerator(function* () {
81
+ var fileContents = yield _this5.storageService.loadFile(_this5.addRoot(name));
82
+ yield _this5.storageService.saveFile(_this5.addRoot(newName), fileContents, false);
83
+ _this5.refreshTables();
84
+ })();
85
+ }
86
+ deleteFile(name) {
87
+ var _this6 = this;
88
+ return _asyncToGenerator(function* () {
89
+ yield _this6.storageService.deleteItem(_this6.addRoot(name));
90
+ _this6.refreshTables();
91
+ })();
92
+ }
93
+ moveFile(name, newName) {
94
+ var _this7 = this;
95
+ return _asyncToGenerator(function* () {
96
+ yield _this7.storageService.moveItem(_this7.addRoot(name), _this7.addRoot(newName));
97
+ _this7.refreshTables();
98
+ })();
99
+ }
100
+ info(name) {
101
+ var _this8 = this;
102
+ return _asyncToGenerator(function* () {
103
+ var allItems = yield _this8.storageService.listItems(_this8.addRoot(FileUtils.getPath(name)), FileUtils.getBaseName(name));
104
+ if (allItems.length === 0) {
105
+ throw new FileNotFoundError();
106
+ }
107
+ if (allItems.length > 1) {
108
+ log.error('More than one matching file found, should never happen.', allItems);
109
+ throw new Error('More than one matching file found');
110
+ }
111
+ var itemDetails = allItems[0];
112
+ if (!isFileType(itemDetails.type)) {
113
+ throw new Error("Unexpected file type: ".concat(itemDetails.type));
114
+ }
115
+ return {
116
+ filename: _this8.removeRoot(itemDetails.filename),
117
+ basename: itemDetails.basename,
118
+ id: _this8.removeRoot(itemDetails.filename),
119
+ type: itemDetails.type
120
+ };
121
+ })();
122
+ }
123
+ }
124
+ _defineProperty(GrpcFileStorage, "REFRESH_THROTTLE", 150);
125
+ export default GrpcFileStorage;
126
+ //# sourceMappingURL=GrpcFileStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrpcFileStorage.js","names":["throttle","FileNotFoundError","FileUtils","isFileType","Log","GrpcFileStorageTable","log","module","GrpcFileStorage","constructor","dh","storageService","root","arguments","length","undefined","_defineProperty","tables","forEach","table","refresh","REFRESH_THROTTLE","removeRoot","filename","addRoot","path","createDirectory","_this","_asyncToGenerator","refreshTables","type","id","basename","getBaseName","getTable","_this2","push","saveFile","file","_this3","fileContents","storage","FileContents","text","content","loadFile","name","_this4","copyFile","newName","_this5","deleteFile","_this6","deleteItem","moveFile","_this7","moveItem","info","_this8","allItems","listItems","getPath","error","Error","itemDetails","concat"],"sources":["../../../src/storage/grpc/GrpcFileStorage.ts"],"sourcesContent":["import throttle from 'lodash.throttle';\nimport {\n FileNotFoundError,\n FileStorage,\n File,\n FileStorageItem,\n FileStorageTable,\n FileUtils,\n isFileType,\n} from '@deephaven/file-explorer';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport GrpcFileStorageTable from './GrpcFileStorageTable';\n\nconst log = Log.module('GrpcFileStorage');\n\nexport class GrpcFileStorage implements FileStorage {\n private static readonly REFRESH_THROTTLE = 150;\n\n private dh: typeof DhType;\n\n private readonly storageService: DhType.storage.StorageService;\n\n private tables = [] as GrpcFileStorageTable[];\n\n private readonly root: string;\n\n /**\n * FileStorage implementation using gRPC\n * @param storageService Storage service to use\n * @param root Root path for this instance. Should not contain trailing slash.\n */\n constructor(\n dh: typeof DhType,\n storageService: DhType.storage.StorageService,\n root = ''\n ) {\n this.dh = dh;\n this.storageService = storageService;\n this.root = root;\n }\n\n private removeRoot(filename: string): string {\n return FileUtils.removeRoot(this.root, filename);\n }\n\n private addRoot(path: string): string {\n return FileUtils.addRoot(this.root, path);\n }\n\n async createDirectory(path: string): Promise<FileStorageItem> {\n await this.storageService.createDirectory(this.addRoot(path));\n this.refreshTables();\n return {\n type: 'directory',\n id: path,\n filename: path,\n basename: FileUtils.getBaseName(path),\n };\n }\n\n async getTable(): Promise<FileStorageTable> {\n const table = new GrpcFileStorageTable(this.storageService, this.root);\n this.tables.push(table);\n return table;\n }\n\n async saveFile(file: File): Promise<File> {\n const fileContents = this.dh.storage.FileContents.text(file.content);\n await this.storageService.saveFile(\n this.addRoot(file.filename),\n fileContents,\n true\n );\n this.refreshTables();\n return file;\n }\n\n async loadFile(name: string): Promise<File> {\n const fileContents = await this.storageService.loadFile(this.addRoot(name));\n const content = await fileContents.text();\n return {\n filename: name,\n basename: FileUtils.getBaseName(name),\n content,\n };\n }\n\n async copyFile(name: string, newName: string): Promise<void> {\n const fileContents = await this.storageService.loadFile(this.addRoot(name));\n await this.storageService.saveFile(\n this.addRoot(newName),\n fileContents,\n false\n );\n this.refreshTables();\n }\n\n async deleteFile(name: string): Promise<void> {\n await this.storageService.deleteItem(this.addRoot(name));\n this.refreshTables();\n }\n\n async moveFile(name: string, newName: string): Promise<void> {\n await this.storageService.moveItem(\n this.addRoot(name),\n this.addRoot(newName)\n );\n this.refreshTables();\n }\n\n async info(name: string): Promise<FileStorageItem> {\n const allItems = await this.storageService.listItems(\n this.addRoot(FileUtils.getPath(name)),\n FileUtils.getBaseName(name)\n );\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n log.error(\n 'More than one matching file found, should never happen.',\n allItems\n );\n throw new Error('More than one matching file found');\n }\n\n const itemDetails = allItems[0];\n\n if (!isFileType(itemDetails.type)) {\n throw new Error(`Unexpected file type: ${itemDetails.type}`);\n }\n\n return {\n filename: this.removeRoot(itemDetails.filename),\n basename: itemDetails.basename,\n id: this.removeRoot(itemDetails.filename),\n type: itemDetails.type,\n };\n }\n\n private refreshTables = throttle(() => {\n this.tables.forEach(table => table.refresh());\n }, GrpcFileStorage.REFRESH_THROTTLE);\n}\n\nexport default GrpcFileStorage;\n"],"mappings":";;;;;AAAA,OAAOA,QAAQ,MAAM,iBAAiB;AACtC,SACEC,iBAAiB,EAKjBC,SAAS,EACTC,UAAU,QACL,0BAA0B;AAEjC,OAAOC,GAAG,MAAM,gBAAgB;AAAC,OAC1BC,oBAAoB;AAE3B,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAM,CAAC,iBAAiB,CAAC;AAEzC,OAAO,MAAMC,eAAe,CAAwB;EAWlD;AACF;AACA;AACA;AACA;EACEC,WAAWA,CACTC,EAAiB,EACjBC,cAA6C,EAE7C;IAAA,IADAC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAAG,eAAA;IAAAA,eAAA;IAAAA,eAAA,iBAZM,EAAE;IAAAA,eAAA;IAAAA,eAAA,wBAsHKhB,QAAQ,CAAC,MAAM;MACrC,IAAI,CAACiB,MAAM,CAACC,OAAO,CAACC,KAAK,IAAIA,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAEZ,eAAe,CAACa,gBAAgB,CAAC;IA1GlC,IAAI,CAACX,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACC,IAAI,GAAGA,IAAI;EAClB;EAEQU,UAAUA,CAACC,QAAgB,EAAU;IAC3C,OAAOrB,SAAS,CAACoB,UAAU,CAAC,IAAI,CAACV,IAAI,EAAEW,QAAQ,CAAC;EAClD;EAEQC,OAAOA,CAACC,IAAY,EAAU;IACpC,OAAOvB,SAAS,CAACsB,OAAO,CAAC,IAAI,CAACZ,IAAI,EAAEa,IAAI,CAAC;EAC3C;EAEMC,eAAeA,CAACD,IAAY,EAA4B;IAAA,IAAAE,KAAA;IAAA,OAAAC,iBAAA;MAC5D,MAAMD,KAAI,CAAChB,cAAc,CAACe,eAAe,CAACC,KAAI,CAACH,OAAO,CAACC,IAAI,CAAC,CAAC;MAC7DE,KAAI,CAACE,aAAa,CAAC,CAAC;MACpB,OAAO;QACLC,IAAI,EAAE,WAAW;QACjBC,EAAE,EAAEN,IAAI;QACRF,QAAQ,EAAEE,IAAI;QACdO,QAAQ,EAAE9B,SAAS,CAAC+B,WAAW,CAACR,IAAI;MACtC,CAAC;IAAC;EACJ;EAEMS,QAAQA,CAAA,EAA8B;IAAA,IAAAC,MAAA;IAAA,OAAAP,iBAAA;MAC1C,IAAMT,KAAK,GAAG,IAAId,oBAAoB,CAAC8B,MAAI,CAACxB,cAAc,EAAEwB,MAAI,CAACvB,IAAI,CAAC;MACtEuB,MAAI,CAAClB,MAAM,CAACmB,IAAI,CAACjB,KAAK,CAAC;MACvB,OAAOA,KAAK;IAAC;EACf;EAEMkB,QAAQA,CAACC,IAAU,EAAiB;IAAA,IAAAC,MAAA;IAAA,OAAAX,iBAAA;MACxC,IAAMY,YAAY,GAAGD,MAAI,CAAC7B,EAAE,CAAC+B,OAAO,CAACC,YAAY,CAACC,IAAI,CAACL,IAAI,CAACM,OAAO,CAAC;MACpE,MAAML,MAAI,CAAC5B,cAAc,CAAC0B,QAAQ,CAChCE,MAAI,CAACf,OAAO,CAACc,IAAI,CAACf,QAAQ,CAAC,EAC3BiB,YAAY,EACZ,IACF,CAAC;MACDD,MAAI,CAACV,aAAa,CAAC,CAAC;MACpB,OAAOS,IAAI;IAAC;EACd;EAEMO,QAAQA,CAACC,IAAY,EAAiB;IAAA,IAAAC,MAAA;IAAA,OAAAnB,iBAAA;MAC1C,IAAMY,YAAY,SAASO,MAAI,CAACpC,cAAc,CAACkC,QAAQ,CAACE,MAAI,CAACvB,OAAO,CAACsB,IAAI,CAAC,CAAC;MAC3E,IAAMF,OAAO,SAASJ,YAAY,CAACG,IAAI,CAAC,CAAC;MACzC,OAAO;QACLpB,QAAQ,EAAEuB,IAAI;QACdd,QAAQ,EAAE9B,SAAS,CAAC+B,WAAW,CAACa,IAAI,CAAC;QACrCF;MACF,CAAC;IAAC;EACJ;EAEMI,QAAQA,CAACF,IAAY,EAAEG,OAAe,EAAiB;IAAA,IAAAC,MAAA;IAAA,OAAAtB,iBAAA;MAC3D,IAAMY,YAAY,SAASU,MAAI,CAACvC,cAAc,CAACkC,QAAQ,CAACK,MAAI,CAAC1B,OAAO,CAACsB,IAAI,CAAC,CAAC;MAC3E,MAAMI,MAAI,CAACvC,cAAc,CAAC0B,QAAQ,CAChCa,MAAI,CAAC1B,OAAO,CAACyB,OAAO,CAAC,EACrBT,YAAY,EACZ,KACF,CAAC;MACDU,MAAI,CAACrB,aAAa,CAAC,CAAC;IAAC;EACvB;EAEMsB,UAAUA,CAACL,IAAY,EAAiB;IAAA,IAAAM,MAAA;IAAA,OAAAxB,iBAAA;MAC5C,MAAMwB,MAAI,CAACzC,cAAc,CAAC0C,UAAU,CAACD,MAAI,CAAC5B,OAAO,CAACsB,IAAI,CAAC,CAAC;MACxDM,MAAI,CAACvB,aAAa,CAAC,CAAC;IAAC;EACvB;EAEMyB,QAAQA,CAACR,IAAY,EAAEG,OAAe,EAAiB;IAAA,IAAAM,MAAA;IAAA,OAAA3B,iBAAA;MAC3D,MAAM2B,MAAI,CAAC5C,cAAc,CAAC6C,QAAQ,CAChCD,MAAI,CAAC/B,OAAO,CAACsB,IAAI,CAAC,EAClBS,MAAI,CAAC/B,OAAO,CAACyB,OAAO,CACtB,CAAC;MACDM,MAAI,CAAC1B,aAAa,CAAC,CAAC;IAAC;EACvB;EAEM4B,IAAIA,CAACX,IAAY,EAA4B;IAAA,IAAAY,MAAA;IAAA,OAAA9B,iBAAA;MACjD,IAAM+B,QAAQ,SAASD,MAAI,CAAC/C,cAAc,CAACiD,SAAS,CAClDF,MAAI,CAAClC,OAAO,CAACtB,SAAS,CAAC2D,OAAO,CAACf,IAAI,CAAC,CAAC,EACrC5C,SAAS,CAAC+B,WAAW,CAACa,IAAI,CAC5B,CAAC;MACD,IAAIa,QAAQ,CAAC7C,MAAM,KAAK,CAAC,EAAE;QACzB,MAAM,IAAIb,iBAAiB,CAAC,CAAC;MAC/B;MACA,IAAI0D,QAAQ,CAAC7C,MAAM,GAAG,CAAC,EAAE;QACvBR,GAAG,CAACwD,KAAK,CACP,yDAAyD,EACzDH,QACF,CAAC;QACD,MAAM,IAAII,KAAK,CAAC,mCAAmC,CAAC;MACtD;MAEA,IAAMC,WAAW,GAAGL,QAAQ,CAAC,CAAC,CAAC;MAE/B,IAAI,CAACxD,UAAU,CAAC6D,WAAW,CAAClC,IAAI,CAAC,EAAE;QACjC,MAAM,IAAIiC,KAAK,0BAAAE,MAAA,CAA0BD,WAAW,CAAClC,IAAI,CAAE,CAAC;MAC9D;MAEA,OAAO;QACLP,QAAQ,EAAEmC,MAAI,CAACpC,UAAU,CAAC0C,WAAW,CAACzC,QAAQ,CAAC;QAC/CS,QAAQ,EAAEgC,WAAW,CAAChC,QAAQ;QAC9BD,EAAE,EAAE2B,MAAI,CAACpC,UAAU,CAAC0C,WAAW,CAACzC,QAAQ,CAAC;QACzCO,IAAI,EAAEkC,WAAW,CAAClC;MACpB,CAAC;IAAC;EACJ;AAKF;AAACd,eAAA,CAhIYR,eAAe,sBACiB,GAAG;AAiIhD,eAAeA,eAAe"}
@@ -0,0 +1,52 @@
1
+ import { StorageTableViewport, StorageListenerRemover, ViewportUpdateCallback, ViewportData, IndexRange, StorageSnapshot } from '@deephaven/storage';
2
+ import { FileStorageItem, FileStorageTable } from '@deephaven/file-explorer';
3
+ import type { dh } from '@deephaven/jsapi-types';
4
+ /**
5
+ * Implementation of FileStorageTable for gRPC service.
6
+ * Takes a path to specify what root this table should start at.
7
+ */
8
+ export declare class GrpcFileStorageTable implements FileStorageTable {
9
+ static REFRESH_DEBOUNCE: number;
10
+ private readonly storageService;
11
+ private readonly baseRoot;
12
+ private readonly root;
13
+ private currentSize;
14
+ private currentViewport?;
15
+ private listeners;
16
+ private viewportUpdatePromise?;
17
+ private currentViewportData?;
18
+ /**
19
+ * Map of expanded directory paths to the tables that manage that path.
20
+ * We use a tree of tables to query the server so we just get the directories that are expanded.
21
+ */
22
+ private childTables;
23
+ /**
24
+ * @param storageService The storage service to use
25
+ * @param baseRoot Base root for the service
26
+ * @param root The root path for this storage table
27
+ */
28
+ constructor(storageService: dh.storage.StorageService, baseRoot?: string, root?: string);
29
+ private removeBaseRoot;
30
+ getViewportData(): Promise<ViewportData<FileStorageItem>>;
31
+ getSnapshot(sortedRanges: IndexRange[]): Promise<StorageSnapshot<FileStorageItem>>;
32
+ get size(): number;
33
+ setExpanded(path: string, expanded: boolean): void;
34
+ collapseAll(): void;
35
+ setSearch(search: string): void;
36
+ setViewport(viewport: StorageTableViewport): void;
37
+ setFilters(): void;
38
+ setSorts(): void;
39
+ setReversed(): void;
40
+ close(): void;
41
+ onUpdate(callback: ViewportUpdateCallback<FileStorageItem>): StorageListenerRemover;
42
+ doRefresh(callback: (fetchPromise: Promise<ViewportData<FileStorageItem>>) => void): void;
43
+ refresh(): void;
44
+ /**
45
+ * Refreshes data, but catches any errors and logs them
46
+ */
47
+ private refreshInternal;
48
+ private fetchData;
49
+ private sendUpdate;
50
+ }
51
+ export default GrpcFileStorageTable;
52
+ //# sourceMappingURL=GrpcFileStorageTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrpcFileStorageTable.d.ts","sourceRoot":"","sources":["../../../src/storage/grpc/GrpcFileStorageTable.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,eAAe,EACf,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAKjD;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,MAAM,CAAC,gBAAgB,SAAM;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAE3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,eAAe,CAAC,CAAuB;IAE/C,OAAO,CAAC,SAAS,CAAiD;IAElE,OAAO,CAAC,qBAAqB,CAAC,CAE5B;IAEF,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAE5D;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAgD;IAEnE;;;;OAIG;gBAED,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,EACzC,QAAQ,SAAK,EACb,IAAI,SAAW;IAajB,OAAO,CAAC,cAAc;IAItB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IASzD,WAAW,CACT,YAAY,EAAE,UAAU,EAAE,GACzB,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAI5C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAoClD,WAAW,IAAI,IAAI;IAQnB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,WAAW,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAMjD,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,IAAI;IAIhB,WAAW,IAAI,IAAI;IAInB,KAAK,IAAI,IAAI;IAIb,QAAQ,CACN,QAAQ,EAAE,sBAAsB,CAAC,eAAe,CAAC,GAChD,sBAAsB;IAOzB,SAAS,CACP,QAAQ,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI,GACvE,IAAI;IAKP,OAAO,IAAI,IAAI;IAmCf;;OAEG;IACH,OAAO,CAAC,eAAe;YAUT,SAAS;IAsDvB,OAAO,CAAC,UAAU;CAQnB;AAED,eAAe,oBAAoB,CAAC"}