@vuu-ui/vuu-data-remote 2.1.11 → 2.1.13
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/cjs/VuuDataSource.js +12 -7
- package/cjs/VuuDataSource.js.map +1 -1
- package/cjs/data-source.js +2 -1
- package/cjs/data-source.js.map +1 -1
- package/cjs/inlined-worker.js +25 -7
- package/cjs/inlined-worker.js.map +1 -1
- package/esm/VuuDataSource.js +12 -7
- package/esm/VuuDataSource.js.map +1 -1
- package/esm/data-source.js +2 -1
- package/esm/data-source.js.map +1 -1
- package/esm/inlined-worker.js +25 -7
- package/esm/inlined-worker.js.map +1 -1
- package/package.json +7 -7
- package/types/VuuDataSource.d.ts +1 -1
- package/types/inlined-worker.d.ts +1 -1
package/cjs/VuuDataSource.js
CHANGED
|
@@ -14,8 +14,7 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
14
14
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
15
15
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
16
16
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
17
|
-
var _allColumns, _autosubscribeColumns, _pendingVisualLink, _links, _menu, _optimize, _selectedRowsCount, _sessionDataSource, _status, _tableSchema;
|
|
18
|
-
const SESSION_TABLE_MSG_COLUMN = "vuuMsg";
|
|
17
|
+
var _allColumns, _autosubscribeColumns, _pendingVisualLink, _links, _menu, _optimize, _selectedRowsCount, _sessionDataSource, _sessionTableMessageColumn, _status, _tableSchema;
|
|
19
18
|
const { info, infoEnabled } = vuuUtils.logger("VuuDataSource");
|
|
20
19
|
const combineColumnsWithAutosubscribeColumns = (columns, autosubscribeColumns = []) => {
|
|
21
20
|
if (autosubscribeColumns.length === 0) {
|
|
@@ -31,7 +30,10 @@ const combineColumnsWithAutosubscribeColumns = (columns, autosubscribeColumns =
|
|
|
31
30
|
}
|
|
32
31
|
};
|
|
33
32
|
const _VuuDataSource = class _VuuDataSource extends vuuUtils.BaseDataSource {
|
|
34
|
-
constructor(
|
|
33
|
+
constructor({
|
|
34
|
+
sessionTableMessageColumn,
|
|
35
|
+
...props
|
|
36
|
+
}) {
|
|
35
37
|
super(props);
|
|
36
38
|
__publicField(this, "bufferSize");
|
|
37
39
|
__publicField(this, "server", null);
|
|
@@ -47,6 +49,7 @@ const _VuuDataSource = class _VuuDataSource extends vuuUtils.BaseDataSource {
|
|
|
47
49
|
__privateAdd(this, _optimize, "throttle");
|
|
48
50
|
__privateAdd(this, _selectedRowsCount, 0);
|
|
49
51
|
__privateAdd(this, _sessionDataSource);
|
|
52
|
+
__privateAdd(this, _sessionTableMessageColumn);
|
|
50
53
|
__privateAdd(this, _status, "initialising");
|
|
51
54
|
__privateAdd(this, _tableSchema);
|
|
52
55
|
__publicField(this, "table");
|
|
@@ -155,6 +158,7 @@ const _VuuDataSource = class _VuuDataSource extends vuuUtils.BaseDataSource {
|
|
|
155
158
|
this.bufferSize = bufferSize;
|
|
156
159
|
this.table = table;
|
|
157
160
|
__privateSet(this, _pendingVisualLink, visualLink);
|
|
161
|
+
__privateSet(this, _sessionTableMessageColumn, sessionTableMessageColumn);
|
|
158
162
|
this.rangeRequest = this.rawRangeRequest;
|
|
159
163
|
if (props.autosubscribeColumns) {
|
|
160
164
|
__privateSet(this, _autosubscribeColumns, props.autosubscribeColumns);
|
|
@@ -512,8 +516,9 @@ const _VuuDataSource = class _VuuDataSource extends vuuUtils.BaseDataSource {
|
|
|
512
516
|
return Promise.reject();
|
|
513
517
|
}
|
|
514
518
|
createSessionDataSource(sessionTable) {
|
|
519
|
+
const columns = __privateGet(this, _sessionTableMessageColumn) ? this.columns.concat(__privateGet(this, _sessionTableMessageColumn)) : this.columns;
|
|
515
520
|
return new _VuuDataSource({
|
|
516
|
-
columns
|
|
521
|
+
columns,
|
|
517
522
|
table: sessionTable
|
|
518
523
|
});
|
|
519
524
|
}
|
|
@@ -528,9 +533,10 @@ const _VuuDataSource = class _VuuDataSource extends vuuUtils.BaseDataSource {
|
|
|
528
533
|
if (vuuUtils.isRpcSuccess(rpcResponse)) {
|
|
529
534
|
const { table: sessionTable } = rpcResponse.data;
|
|
530
535
|
if (vuuUtils.isInlineEditingSession(editSessionMode)) {
|
|
536
|
+
const columns = __privateGet(this, _sessionTableMessageColumn) ? this.columns.concat(__privateGet(this, _sessionTableMessageColumn)) : this.columns;
|
|
531
537
|
__privateSet(this, _sessionDataSource, new _VuuDataSource({
|
|
532
538
|
...this.config,
|
|
533
|
-
columns
|
|
539
|
+
columns,
|
|
534
540
|
table: sessionTable,
|
|
535
541
|
viewport: sessionTable.table
|
|
536
542
|
}));
|
|
@@ -540,7 +546,6 @@ const _VuuDataSource = class _VuuDataSource extends vuuUtils.BaseDataSource {
|
|
|
540
546
|
},
|
|
541
547
|
this.handleSessionMessageFromServer
|
|
542
548
|
);
|
|
543
|
-
this.suspend();
|
|
544
549
|
} else {
|
|
545
550
|
return new _VuuDataSource({
|
|
546
551
|
...this.config,
|
|
@@ -580,7 +585,6 @@ const _VuuDataSource = class _VuuDataSource extends vuuUtils.BaseDataSource {
|
|
|
580
585
|
if (vuuUtils.isRpcSuccess(rpcResponse)) {
|
|
581
586
|
if (sessionDataSource) {
|
|
582
587
|
sessionDataSource?.unsubscribe();
|
|
583
|
-
this.resume();
|
|
584
588
|
}
|
|
585
589
|
} else {
|
|
586
590
|
if (rpcResponse?.errorMessage === "stale update") {
|
|
@@ -625,6 +629,7 @@ _menu = new WeakMap();
|
|
|
625
629
|
_optimize = new WeakMap();
|
|
626
630
|
_selectedRowsCount = new WeakMap();
|
|
627
631
|
_sessionDataSource = new WeakMap();
|
|
632
|
+
_sessionTableMessageColumn = new WeakMap();
|
|
628
633
|
_status = new WeakMap();
|
|
629
634
|
_tableSchema = new WeakMap();
|
|
630
635
|
let VuuDataSource = _VuuDataSource;
|
package/cjs/VuuDataSource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VuuDataSource.js","sources":["../../../packages/vuu-data-remote/src/VuuDataSource.ts"],"sourcesContent":["import type {\n DataSource,\n DataSourceCallbackMessage,\n DataSourceConstructorProps,\n DataSourceStatus,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n DataSourceVisualLinkCreatedMessage,\n EditSessionMode,\n OptimizeStrategy,\n ServerAPI,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport type {\n LinkDescriptorWithLabel,\n RpcResultError,\n RpcResultSuccess,\n SelectRequest,\n VuuCreateVisualLink,\n VuuGroupBy,\n VuuMenu,\n VuuRange,\n VuuRowDataItemType,\n VuuRpcMenuRequest,\n VuuRpcResponse,\n VuuRpcServiceRequest,\n VuuTable,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { MenuRpcResponse } from \"@vuu-ui/vuu-data-types\";\nimport {\n BaseDataSource,\n combineFilters,\n debounce,\n isConfigChanged,\n isInlineEditingSession,\n isRpcSuccess,\n isSelectSuccessWithRowCount,\n isViewportMenusAction,\n isVisualLinksAction,\n itemsOrOrderChanged,\n logger,\n Range,\n StaleUpdateError,\n throttle,\n uuid,\n} from \"@vuu-ui/vuu-utils\";\nimport ConnectionManager from \"./ConnectionManager\";\nimport { isDataSourceConfigMessage } from \"./data-source\";\n\ntype RangeRequest = (range: VuuRange) => void;\n\nconst SESSION_TABLE_MSG_COLUMN = \"vuuMsg\";\n\nconst { info, infoEnabled } = logger(\"VuuDataSource\");\n\n/**\n * Autosubscribe columns are always included in a subscription.\n * The same columns may or may not be included in subscription\n * requested by client and client may change column list over\n * lifetime of dataSource. Always make sure we include the\n * autosubscription columns, but never repeat them\n */\nconst combineColumnsWithAutosubscribeColumns = (\n columns: string[],\n autosubscribeColumns: string[] = [],\n) => {\n if (autosubscribeColumns.length === 0) {\n return columns;\n } else {\n const out = columns.slice();\n autosubscribeColumns.forEach((name) => {\n if (!out.includes(name)) {\n out.push(name);\n }\n });\n return out;\n }\n};\n\n/*---------------------------------------------------------------------\n A VuuDataSource manages a single subscription via the ServerProxy\n ---------------------------------------------------------------------*/\nexport class VuuDataSource extends BaseDataSource implements DataSource {\n private bufferSize: number;\n private server: ServerAPI | null = null;\n rangeRequest: RangeRequest;\n\n /**\n * this is the combined set of regular columns and autosubscribe columns\n */\n #allColumns: undefined | string[];\n #autosubscribeColumns: string[] = [];\n #pendingVisualLink?: LinkDescriptorWithLabel;\n #links: LinkDescriptorWithLabel[] | undefined;\n #menu: VuuMenu | undefined;\n #optimize: OptimizeStrategy = \"throttle\";\n #selectedRowsCount = 0;\n #sessionDataSource: DataSource | undefined = undefined;\n #status: DataSourceStatus = \"initialising\";\n #tableSchema: TableSchema | undefined;\n\n public table: VuuTable;\n\n constructor(props: DataSourceConstructorProps) {\n super(props);\n\n const { bufferSize = 100, table, visualLink } = props;\n\n if (!table)\n throw Error(\"RemoteDataSource constructor called without table\");\n\n this.bufferSize = bufferSize;\n this.table = table;\n\n this.#pendingVisualLink = visualLink;\n\n // this.rangeRequest = this.throttleRangeRequest;\n this.rangeRequest = this.rawRangeRequest;\n\n if (props.autosubscribeColumns) {\n this.#autosubscribeColumns = props.autosubscribeColumns;\n this.#allColumns = combineColumnsWithAutosubscribeColumns(\n super.columns,\n props.autosubscribeColumns,\n );\n }\n }\n\n async subscribe(\n subscribeProps: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n // super.subscribe(subscribeProps, this.handleMessageFromServer);\n super.subscribe(subscribeProps, callback);\n const { viewport = this.viewport || (this.viewport = uuid()) } =\n subscribeProps;\n\n console.log(`[VuuDataSource] subscribe ${this.viewport}`);\n\n if (\n this.#status === \"disabled\" ||\n this.#status === \"disabling\" ||\n this.#status === \"enabling\"\n ) {\n // We can subscribe to a disabled dataSource. No request will be\n // sent to server to create a new VP, just to enable the existing one.\n // The current subscribing client becomes the subscription owner\n this.enable(callback);\n return;\n }\n\n if (this.#status !== \"initialising\" && this.#status !== \"unsubscribed\") {\n throw Error(\n `[VuuDataSource] invalid status ${this.#status} for subscribe`,\n );\n }\n\n this.#status = \"subscribing\";\n\n this.server = await ConnectionManager.serverAPI;\n\n const { bufferSize } = this;\n\n const { columns, ...dataSourceConfig } = combineFilters(this.config);\n\n // TODO and await response here\n this.server?.subscribe(\n {\n ...dataSourceConfig,\n bufferSize,\n columns: this.columns,\n range: this._range.withBuffer,\n table: this.table,\n title: this._title,\n viewport,\n },\n this.handleMessageFromServer,\n );\n }\n\n handleMessageFromServer = (message: DataSourceCallbackMessage) => {\n if (message.type === \"subscribed\") {\n this.#status = \"subscribed\";\n this.tableSchema = message.tableSchema;\n this._clientCallback?.(message);\n if (this.#pendingVisualLink) {\n this.visualLink = this.#pendingVisualLink;\n this.#pendingVisualLink = undefined;\n }\n this.emit(\"subscribed\", message);\n } else if (message.type === \"disabled\") {\n this.#status = \"disabled\";\n } else if (message.type === \"enabled\") {\n this.#status = \"subscribed\";\n this.emit(\"enabled\", this.viewport);\n } else if (isDataSourceConfigMessage(message)) {\n // This is an ACK for a CHANGE_VP message. Nothing to do here. We need\n // to wait for data to be returned before we can consider the change\n // to be in effect.\n return;\n } else if (message.type === \"debounce-begin\") {\n this.optimize = \"debounce\";\n } else {\n if (message.type === \"viewport-update\") {\n if (message.size !== undefined && message.size !== this.size) {\n this.size = message.size;\n this.emit(\"resize\", message.size);\n }\n\n if (\n Array.isArray(message.rows) &&\n message.rows.length > 0 &&\n this.#sessionDataSource\n ) {\n this.emit(\"remote-update-during-local-edit\", message.rows);\n console.log(\n `updates incoming whilst edit in progress ${this.viewport}`,\n );\n console.table(message.rows);\n return;\n }\n } else if (message.type === \"viewport-clear\") {\n this.size = 0;\n this.emit(\"resize\", 0);\n }\n // This is used to remove any progress indication from the UI. We wait for actual data rather than\n // just the CHANGE_VP_SUCCESS ack as there is often a delay between receiving the ack and the data.\n // It may be a SIZE only message, eg in the case of removing a groupBy column from a multi-column\n // groupby, where no tree nodes are expanded.\n if (this.isAwaitingConfirmationOfConfigChange) {\n this.confirmConfigChange();\n }\n\n if (isViewportMenusAction(message)) {\n this.#menu = message.menu;\n } else if (isVisualLinksAction(message)) {\n this.#links = message.links as LinkDescriptorWithLabel[];\n } else {\n if (infoEnabled && message.type === \"viewport-update\") {\n info(\n `handleMessageFromServer<viewport-update> range (${message.range?.from}:${message.range?.to}) rows ${message.rows?.at(0)?.[0]} - ${message.rows?.at(-1)?.[0]}`,\n );\n }\n this._clientCallback?.(message);\n }\n\n if (this.optimize === \"debounce\") {\n this.revertDebounce();\n }\n }\n };\n\n handleSessionMessageFromServer = (msg: DataSourceCallbackMessage) => {\n if (msg.type === \"subscribed\") {\n console.log(`[VuuDataSource subscribed to session table]`);\n } else if (msg.type === \"viewport-update\") {\n if (msg.size !== undefined && msg.size !== this.size) {\n this.size = msg.size;\n this.emit(\"resize\", msg.size);\n }\n console.log(`[VuuDataSource] clientCallback with ${msg.type}`);\n this._clientCallback?.(msg);\n }\n };\n\n unsubscribe() {\n if (this.#status !== \"unsubscribed\") {\n info?.(`unsubscribe #${this.viewport}`);\n if (this.viewport) {\n this.server?.unsubscribe(this.viewport);\n this.emit(\"unsubscribed\", this.viewport);\n }\n this.server?.destroy(this.viewport);\n this.server = null;\n this.removeAllListeners();\n this.#status = \"unsubscribed\";\n this.viewport = \"\";\n this.range = Range(0, 0);\n }\n }\n\n suspend(\n escalateToDisable = this._defaultSuspenseProps.escalateToDisable,\n escalateDelay = this._defaultSuspenseProps.escalateDelay,\n ) {\n if (this.#status !== \"unsubscribed\") {\n info?.(`suspend #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"suspended\";\n this.server?.send({\n escalateDelay,\n escalateToDisable,\n type: \"suspend\",\n viewport: this.viewport,\n });\n this.emit(\"suspended\", this.viewport);\n }\n }\n }\n\n /**\n * Tell the server we wish to resume receiving messages. Server will send a\n * snapshot of rows currently in cache. This can be used to update with\n * latest data, e.g after an edit session during which we might have ignored\n * some updates.\n */\n private sendResumeMessage() {\n this.server?.send({\n type: \"resume\",\n viewport: this.viewport,\n });\n }\n\n resume(callback?: DataSourceSubscribeCallback) {\n const isDisabled = this.#status.startsWith(\"disabl\");\n const isSuspended = this.#status === \"suspended\";\n info?.(`resume #${this.viewport}, current status ${this.#status}`);\n if (callback) {\n this._clientCallback = callback;\n }\n if (this.viewport) {\n if (isDisabled) {\n this.enable();\n } else if (isSuspended) {\n this.sendResumeMessage();\n this.#status = \"subscribed\";\n this.emit(\"resumed\", this.viewport);\n\n if (this.#selectedRowsCount > 0) {\n this.emit(\"row-selection\", this.#selectedRowsCount);\n }\n }\n }\n }\n\n freeze() {\n super.freeze();\n if (this.viewport) {\n this.server?.send({\n viewport: this.viewport,\n type: \"FREEZE_VP\",\n });\n }\n }\n\n unfreeze() {\n super.unfreeze();\n if (this.viewport) {\n this.server?.send({\n viewport: this.viewport,\n type: \"UNFREEZE_VP\",\n });\n }\n }\n\n disable() {\n info?.(`disable #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"disabling\";\n this.server?.send({\n viewport: this.viewport,\n type: \"disable\",\n });\n this.emit(\"disabled\", this.viewport);\n }\n }\n\n enable(callback?: DataSourceSubscribeCallback) {\n info?.(`enable #${this.viewport}, current status ${this.#status}`);\n if (\n this.viewport &&\n (this.#status === \"disabled\" || this.#status === \"disabling\")\n ) {\n this.#status = \"enabling\";\n if (callback) {\n this._clientCallback = callback;\n }\n this.server?.send({\n viewport: this.viewport,\n type: \"enable\",\n });\n // TODO is this a bit premature ?\n this.emit(\"enabled\", this.viewport);\n }\n }\n\n async select(selectRequest: Omit<SelectRequest, \"vpId\">) {\n if (this.viewport && this.server) {\n const response = await this.server.select({\n ...selectRequest,\n vpId: this.viewport,\n } as SelectRequest);\n if (isSelectSuccessWithRowCount(response)) {\n console.log(\n `[VuuDataSource] select selectedRowCount ${response.selectedRowCount}`,\n );\n this.#selectedRowsCount = response.selectedRowCount;\n this.emit(\"row-selection\", response.selectedRowCount);\n } else {\n console.warn(`select error`);\n }\n }\n }\n\n openTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"openTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n closeTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"closeTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n //TODO is this going to be confusing - the lack of symmetry between set and get columns\n // when there are autoSubscribe columns ?\n // alternative would be an allColumns prop, but every datasource would then have to add it.\n get columns() {\n return this.#allColumns ?? super.columns;\n }\n\n set columns(columns: string[]) {\n super.columns = columns;\n if (this.#autosubscribeColumns.length) {\n this.#allColumns = combineColumnsWithAutosubscribeColumns(\n columns,\n this.#autosubscribeColumns,\n );\n }\n }\n\n get tableSchema() {\n return this.#tableSchema;\n }\n\n set tableSchema(tableSchema: TableSchema | undefined) {\n this.#tableSchema = tableSchema;\n // TOSO emit an event\n }\n\n get links() {\n return this.#links;\n }\n\n get menu() {\n return this.#menu;\n }\n\n get status() {\n return this.#status;\n }\n\n get optimize() {\n return this.#optimize;\n }\n\n set optimize(optimize: OptimizeStrategy) {\n if (optimize !== this.#optimize) {\n this.#optimize = optimize;\n switch (optimize) {\n case \"none\":\n this.rangeRequest = this.rawRangeRequest;\n break;\n case \"debounce\":\n this.rangeRequest = this.debounceRangeRequest;\n break;\n case \"throttle\":\n this.rangeRequest = this.throttleRangeRequest;\n break;\n }\n this.emit(\"optimize\", optimize);\n }\n }\n\n private revertDebounce = debounce(() => {\n this.optimize = \"throttle\";\n }, 100);\n\n get selectedRowsCount() {\n return this.#selectedRowsCount;\n }\n\n private rawRangeRequest: RangeRequest = (range) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n };\n\n private debounceRangeRequest: RangeRequest = debounce((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 50);\n\n private throttleRangeRequest: RangeRequest = throttle((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 80);\n\n get config() {\n return super.config;\n }\n\n set config(config: WithBaseFilter<WithFullConfig>) {\n const { noChanges, columnsChanged } = isConfigChanged(this.config, config);\n if (!noChanges) {\n super.config = config;\n\n const { columns, ...dataSourceConfig } = combineFilters(this.config);\n const serverConfig: WithFullConfig = {\n ...dataSourceConfig,\n columns: combineColumnsWithAutosubscribeColumns(\n columns,\n this.#autosubscribeColumns,\n ),\n };\n\n if (columnsChanged && this.#autosubscribeColumns.length) {\n this.#allColumns = combineColumnsWithAutosubscribeColumns(\n columns,\n this.#autosubscribeColumns,\n );\n }\n\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: serverConfig,\n });\n }\n }\n\n set impendingConfig(config: WithBaseFilter<WithFullConfig>) {\n if (config !== this.config) {\n super.impendingConfig = config;\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: combineFilters(this.config),\n });\n }\n }\n\n get groupBy() {\n return this._configWithVisualLink.groupBy;\n }\n\n set groupBy(groupBy: VuuGroupBy) {\n if (itemsOrOrderChanged(this.groupBy, groupBy)) {\n const wasGrouped = this.groupBy.length > 0;\n\n this.impendingConfig = {\n ...this._configWithVisualLink,\n groupBy,\n };\n\n if (!wasGrouped && groupBy.length > 0 && this.viewport) {\n // clear data from table whilst we wait for grouped data from server\n this._clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"batch\",\n type: \"viewport-update\",\n size: 0,\n rows: [],\n });\n }\n }\n }\n\n get range() {\n return super.range;\n }\n\n set range(range: Range) {\n super.range = range;\n if (this.#sessionDataSource) {\n this.#sessionDataSource.range = range;\n }\n }\n\n get title() {\n return super.title || `${this.table.module} ${this.table.table}`;\n }\n\n set title(title: string) {\n super.title = title;\n if (this.viewport && title) {\n // This message doesn't actually trigger a message to Vuu server\n // it will be used to recompute visual link labels\n this.server?.send({\n type: \"setTitle\",\n title,\n viewport: this.viewport,\n });\n }\n }\n\n get visualLink() {\n return this._configWithVisualLink.visualLink;\n }\n\n set visualLink(visualLink: LinkDescriptorWithLabel | undefined) {\n this._configWithVisualLink = {\n ...this._configWithVisualLink,\n visualLink,\n };\n\n if (visualLink) {\n const {\n parentClientVpId,\n link: { fromColumn, toColumn },\n } = visualLink;\n\n if (this.viewport) {\n this.server\n ?.rpcCall<DataSourceVisualLinkCreatedMessage>({\n childColumnName: fromColumn,\n childVpId: this.viewport,\n parentColumnName: toColumn,\n parentVpId: parentClientVpId,\n type: \"CREATE_VISUAL_LINK\",\n } as VuuCreateVisualLink)\n .then((response) => {\n this.emit(\"visual-link-created\", response);\n });\n }\n } else {\n if (this.viewport) {\n this.server\n ?.rpcCall({\n type: \"REMOVE_VISUAL_LINK\",\n childVpId: this.viewport,\n })\n .then(() => {\n this.emit(\"visual-link-removed\");\n });\n }\n }\n\n this.emit(\"config\", this._configWithVisualLink, this.range);\n }\n\n async remoteProcedureCall<T extends VuuRpcResponse = VuuRpcResponse>() {\n return Promise.reject<T>();\n }\n\n createSessionDataSource(sessionTable: VuuTable) {\n //TODO filters, sort etc\n return new VuuDataSource({\n columns: this.columns.concat(SESSION_TABLE_MSG_COLUMN),\n table: sessionTable,\n });\n }\n\n async beginEditSession(editSessionMode: EditSessionMode = \"all-rows\") {\n const rpcResponse = await this?.rpcRequest?.({\n type: \"RPC_REQUEST\",\n rpcName: \"beginEditSession\",\n params: {\n editSessionMode,\n },\n });\n\n if (isRpcSuccess(rpcResponse)) {\n const { table: sessionTable } = rpcResponse.data as { table: VuuTable };\n\n if (isInlineEditingSession(editSessionMode)) {\n this.#sessionDataSource = new VuuDataSource({\n ...this.config,\n columns: this.columns.concat(\"vuuMsg\"),\n table: sessionTable,\n viewport: sessionTable.table,\n });\n\n this.#sessionDataSource.subscribe(\n {\n range: this.range,\n },\n this.handleSessionMessageFromServer,\n );\n this.suspend();\n } else {\n return new VuuDataSource({\n ...this.config,\n table: sessionTable,\n viewport: sessionTable.table,\n });\n }\n\n // we need to route messages from the session datasource to listening\n // client whilst still monitoring responses on the source table to which\n // we are currently subscribed.\n } else {\n throw Error(\n `[VuuDataSource] beginEditSession ${rpcResponse.errorMessage}`,\n );\n ///\n }\n }\n\n async editCell(key: string, column: string, data: VuuRowDataItemType) {\n const rpcHost = this.#sessionDataSource ?? this;\n return rpcHost.rpcRequest?.({\n type: \"RPC_REQUEST\",\n rpcName: \"editCell\",\n params: {\n column,\n data,\n key,\n },\n });\n }\n\n async endEditSession(saveChanges = false, force = false) {\n const type = \"RPC_REQUEST\";\n const rpcName = \"endEditSession\";\n const sessionDataSource = this.#sessionDataSource;\n const rpcHost = sessionDataSource ?? this;\n\n if (sessionDataSource) {\n // timing is important here. By breaking this reference before\n // we send the endEdit RPC call, the application of session edits\n // to the source table will be handled correctly.\n this.#sessionDataSource = undefined;\n }\n\n const rpcResponse = await rpcHost.rpcRequest?.(\n saveChanges\n ? { type, rpcName, params: { save: true, force } }\n : { type, rpcName, params: {} },\n );\n\n if (isRpcSuccess(rpcResponse)) {\n if (sessionDataSource) {\n sessionDataSource?.unsubscribe();\n this.resume();\n }\n } else {\n if (rpcResponse?.errorMessage === \"stale update\") {\n this.#sessionDataSource = sessionDataSource;\n throw new StaleUpdateError(rpcResponse.errorMessage);\n } else {\n throw Error(\"unknown error\");\n }\n }\n\n this.sendResumeMessage();\n }\n\n async rpcRequest(rpcRequest: Omit<VuuRpcServiceRequest, \"context\">) {\n if (this.viewport && this.server) {\n return this.server?.rpcCall<RpcResultSuccess | RpcResultError>({\n ...rpcRequest,\n context: { type: \"VIEWPORT_CONTEXT\", viewPortId: this.viewport },\n } as VuuRpcServiceRequest);\n } else {\n throw Error(`rpcCall server or viewport are undefined`);\n }\n }\n\n async menuRpcCall(rpcRequest: Omit<VuuRpcMenuRequest, \"vpId\">) {\n if (this.viewport) {\n return this.server?.rpcCall<MenuRpcResponse>({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcMenuRequest);\n }\n }\n\n insertRow() {\n return Promise.resolve(\"not supported\");\n // return this.menuRpcCall(vuuAddRowRequest(rowKey, data)).then((response) => {\n // if (response?.error) {\n // return response.error;\n // } else {\n // return true;\n // }\n // });\n }\n deleteRow() {\n return Promise.resolve(\"not supported\");\n // return this.menuRpcCall(vuuDeleteRowRequest(rowKey)).then((response) => {\n // if (response?.error) {\n // return response.error;\n // } else {\n // return true;\n // }\n // });\n }\n}\n"],"names":["logger","BaseDataSource","isDataSourceConfigMessage","isViewportMenusAction","isVisualLinksAction","debounce","throttle","uuid","combineFilters","Range","isSelectSuccessWithRowCount","isConfigChanged","itemsOrOrderChanged","isRpcSuccess","isInlineEditingSession","StaleUpdateError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VuuDataSource.js","sources":["../../../packages/vuu-data-remote/src/VuuDataSource.ts"],"sourcesContent":["import type {\n DataSource,\n DataSourceCallbackMessage,\n DataSourceConstructorProps,\n DataSourceStatus,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n DataSourceVisualLinkCreatedMessage,\n EditSessionMode,\n OptimizeStrategy,\n ServerAPI,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport type {\n LinkDescriptorWithLabel,\n RpcResultError,\n RpcResultSuccess,\n SelectRequest,\n VuuCreateVisualLink,\n VuuGroupBy,\n VuuMenu,\n VuuRange,\n VuuRowDataItemType,\n VuuRpcMenuRequest,\n VuuRpcResponse,\n VuuRpcServiceRequest,\n VuuTable,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { MenuRpcResponse } from \"@vuu-ui/vuu-data-types\";\nimport {\n BaseDataSource,\n combineFilters,\n debounce,\n isConfigChanged,\n isInlineEditingSession,\n isRpcSuccess,\n isSelectSuccessWithRowCount,\n isViewportMenusAction,\n isVisualLinksAction,\n itemsOrOrderChanged,\n logger,\n Range,\n StaleUpdateError,\n throttle,\n uuid,\n} from \"@vuu-ui/vuu-utils\";\nimport ConnectionManager from \"./ConnectionManager\";\nimport { isDataSourceConfigMessage } from \"./data-source\";\n\ntype RangeRequest = (range: VuuRange) => void;\n\nconst { info, infoEnabled } = logger(\"VuuDataSource\");\n\n/**\n * Autosubscribe columns are always included in a subscription.\n * The same columns may or may not be included in subscription\n * requested by client and client may change column list over\n * lifetime of dataSource. Always make sure we include the\n * autosubscription columns, but never repeat them\n */\nconst combineColumnsWithAutosubscribeColumns = (\n columns: string[],\n autosubscribeColumns: string[] = [],\n) => {\n if (autosubscribeColumns.length === 0) {\n return columns;\n } else {\n const out = columns.slice();\n autosubscribeColumns.forEach((name) => {\n if (!out.includes(name)) {\n out.push(name);\n }\n });\n return out;\n }\n};\n\n/*---------------------------------------------------------------------\n A VuuDataSource manages a single subscription via the ServerProxy\n ---------------------------------------------------------------------*/\nexport class VuuDataSource extends BaseDataSource implements DataSource {\n private bufferSize: number;\n private server: ServerAPI | null = null;\n rangeRequest: RangeRequest;\n\n /**\n * this is the combined set of regular columns and autosubscribe columns\n */\n #allColumns: undefined | string[];\n #autosubscribeColumns: string[] = [];\n #pendingVisualLink?: LinkDescriptorWithLabel;\n #links: LinkDescriptorWithLabel[] | undefined;\n #menu: VuuMenu | undefined;\n #optimize: OptimizeStrategy = \"throttle\";\n #selectedRowsCount = 0;\n #sessionDataSource: DataSource | undefined = undefined;\n #sessionTableMessageColumn: string | undefined = undefined;\n #status: DataSourceStatus = \"initialising\";\n #tableSchema: TableSchema | undefined;\n\n public table: VuuTable;\n\n constructor({\n sessionTableMessageColumn,\n ...props\n }: DataSourceConstructorProps) {\n super(props);\n\n const { bufferSize = 100, table, visualLink } = props;\n\n if (!table)\n throw Error(\"RemoteDataSource constructor called without table\");\n\n this.bufferSize = bufferSize;\n this.table = table;\n\n this.#pendingVisualLink = visualLink;\n this.#sessionTableMessageColumn = sessionTableMessageColumn;\n // this.rangeRequest = this.throttleRangeRequest;\n this.rangeRequest = this.rawRangeRequest;\n\n if (props.autosubscribeColumns) {\n this.#autosubscribeColumns = props.autosubscribeColumns;\n this.#allColumns = combineColumnsWithAutosubscribeColumns(\n super.columns,\n props.autosubscribeColumns,\n );\n }\n }\n\n async subscribe(\n subscribeProps: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n // super.subscribe(subscribeProps, this.handleMessageFromServer);\n super.subscribe(subscribeProps, callback);\n const { viewport = this.viewport || (this.viewport = uuid()) } =\n subscribeProps;\n\n console.log(`[VuuDataSource] subscribe ${this.viewport}`);\n\n if (\n this.#status === \"disabled\" ||\n this.#status === \"disabling\" ||\n this.#status === \"enabling\"\n ) {\n // We can subscribe to a disabled dataSource. No request will be\n // sent to server to create a new VP, just to enable the existing one.\n // The current subscribing client becomes the subscription owner\n this.enable(callback);\n return;\n }\n\n if (this.#status !== \"initialising\" && this.#status !== \"unsubscribed\") {\n throw Error(\n `[VuuDataSource] invalid status ${this.#status} for subscribe`,\n );\n }\n\n this.#status = \"subscribing\";\n\n this.server = await ConnectionManager.serverAPI;\n\n const { bufferSize } = this;\n\n const { columns, ...dataSourceConfig } = combineFilters(this.config);\n\n // TODO and await response here\n this.server?.subscribe(\n {\n ...dataSourceConfig,\n bufferSize,\n columns: this.columns,\n range: this._range.withBuffer,\n table: this.table,\n title: this._title,\n viewport,\n },\n this.handleMessageFromServer,\n );\n }\n\n handleMessageFromServer = (message: DataSourceCallbackMessage) => {\n if (message.type === \"subscribed\") {\n this.#status = \"subscribed\";\n this.tableSchema = message.tableSchema;\n this._clientCallback?.(message);\n if (this.#pendingVisualLink) {\n this.visualLink = this.#pendingVisualLink;\n this.#pendingVisualLink = undefined;\n }\n this.emit(\"subscribed\", message);\n } else if (message.type === \"disabled\") {\n this.#status = \"disabled\";\n } else if (message.type === \"enabled\") {\n this.#status = \"subscribed\";\n this.emit(\"enabled\", this.viewport);\n } else if (isDataSourceConfigMessage(message)) {\n // This is an ACK for a CHANGE_VP message. Nothing to do here. We need\n // to wait for data to be returned before we can consider the change\n // to be in effect.\n return;\n } else if (message.type === \"debounce-begin\") {\n this.optimize = \"debounce\";\n } else {\n if (message.type === \"viewport-update\") {\n if (message.size !== undefined && message.size !== this.size) {\n this.size = message.size;\n this.emit(\"resize\", message.size);\n }\n\n if (\n Array.isArray(message.rows) &&\n message.rows.length > 0 &&\n this.#sessionDataSource\n ) {\n this.emit(\"remote-update-during-local-edit\", message.rows);\n console.log(\n `updates incoming whilst edit in progress ${this.viewport}`,\n );\n console.table(message.rows);\n return;\n }\n } else if (message.type === \"viewport-clear\") {\n this.size = 0;\n this.emit(\"resize\", 0);\n }\n // This is used to remove any progress indication from the UI. We wait for actual data rather than\n // just the CHANGE_VP_SUCCESS ack as there is often a delay between receiving the ack and the data.\n // It may be a SIZE only message, eg in the case of removing a groupBy column from a multi-column\n // groupby, where no tree nodes are expanded.\n if (this.isAwaitingConfirmationOfConfigChange) {\n this.confirmConfigChange();\n }\n\n if (isViewportMenusAction(message)) {\n this.#menu = message.menu;\n } else if (isVisualLinksAction(message)) {\n this.#links = message.links as LinkDescriptorWithLabel[];\n } else {\n if (infoEnabled && message.type === \"viewport-update\") {\n info(\n `handleMessageFromServer<viewport-update> range (${message.range?.from}:${message.range?.to}) rows ${message.rows?.at(0)?.[0]} - ${message.rows?.at(-1)?.[0]}`,\n );\n }\n this._clientCallback?.(message);\n }\n\n if (this.optimize === \"debounce\") {\n this.revertDebounce();\n }\n }\n };\n\n handleSessionMessageFromServer = (msg: DataSourceCallbackMessage) => {\n if (msg.type === \"subscribed\") {\n console.log(`[VuuDataSource subscribed to session table]`);\n } else if (msg.type === \"viewport-update\") {\n if (msg.size !== undefined && msg.size !== this.size) {\n this.size = msg.size;\n this.emit(\"resize\", msg.size);\n }\n console.log(`[VuuDataSource] clientCallback with ${msg.type}`);\n this._clientCallback?.(msg);\n }\n };\n\n unsubscribe() {\n if (this.#status !== \"unsubscribed\") {\n info?.(`unsubscribe #${this.viewport}`);\n if (this.viewport) {\n this.server?.unsubscribe(this.viewport);\n this.emit(\"unsubscribed\", this.viewport);\n }\n this.server?.destroy(this.viewport);\n this.server = null;\n this.removeAllListeners();\n this.#status = \"unsubscribed\";\n this.viewport = \"\";\n this.range = Range(0, 0);\n }\n }\n\n suspend(\n escalateToDisable = this._defaultSuspenseProps.escalateToDisable,\n escalateDelay = this._defaultSuspenseProps.escalateDelay,\n ) {\n if (this.#status !== \"unsubscribed\") {\n info?.(`suspend #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"suspended\";\n this.server?.send({\n escalateDelay,\n escalateToDisable,\n type: \"suspend\",\n viewport: this.viewport,\n });\n this.emit(\"suspended\", this.viewport);\n }\n }\n }\n\n /**\n * Tell the server we wish to resume receiving messages. Server will send a\n * snapshot of rows currently in cache. This can be used to update with\n * latest data, e.g after an edit session during which we might have ignored\n * some updates.\n */\n private sendResumeMessage() {\n this.server?.send({\n type: \"resume\",\n viewport: this.viewport,\n });\n }\n\n resume(callback?: DataSourceSubscribeCallback) {\n const isDisabled = this.#status.startsWith(\"disabl\");\n const isSuspended = this.#status === \"suspended\";\n info?.(`resume #${this.viewport}, current status ${this.#status}`);\n if (callback) {\n this._clientCallback = callback;\n }\n if (this.viewport) {\n if (isDisabled) {\n this.enable();\n } else if (isSuspended) {\n this.sendResumeMessage();\n this.#status = \"subscribed\";\n this.emit(\"resumed\", this.viewport);\n\n if (this.#selectedRowsCount > 0) {\n this.emit(\"row-selection\", this.#selectedRowsCount);\n }\n }\n }\n }\n\n freeze() {\n super.freeze();\n if (this.viewport) {\n this.server?.send({\n viewport: this.viewport,\n type: \"FREEZE_VP\",\n });\n }\n }\n\n unfreeze() {\n super.unfreeze();\n if (this.viewport) {\n this.server?.send({\n viewport: this.viewport,\n type: \"UNFREEZE_VP\",\n });\n }\n }\n\n disable() {\n info?.(`disable #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"disabling\";\n this.server?.send({\n viewport: this.viewport,\n type: \"disable\",\n });\n this.emit(\"disabled\", this.viewport);\n }\n }\n\n enable(callback?: DataSourceSubscribeCallback) {\n info?.(`enable #${this.viewport}, current status ${this.#status}`);\n if (\n this.viewport &&\n (this.#status === \"disabled\" || this.#status === \"disabling\")\n ) {\n this.#status = \"enabling\";\n if (callback) {\n this._clientCallback = callback;\n }\n this.server?.send({\n viewport: this.viewport,\n type: \"enable\",\n });\n // TODO is this a bit premature ?\n this.emit(\"enabled\", this.viewport);\n }\n }\n\n async select(selectRequest: Omit<SelectRequest, \"vpId\">) {\n if (this.viewport && this.server) {\n const response = await this.server.select({\n ...selectRequest,\n vpId: this.viewport,\n } as SelectRequest);\n if (isSelectSuccessWithRowCount(response)) {\n console.log(\n `[VuuDataSource] select selectedRowCount ${response.selectedRowCount}`,\n );\n this.#selectedRowsCount = response.selectedRowCount;\n this.emit(\"row-selection\", response.selectedRowCount);\n } else {\n console.warn(`select error`);\n }\n }\n }\n\n openTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"openTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n closeTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"closeTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n //TODO is this going to be confusing - the lack of symmetry between set and get columns\n // when there are autoSubscribe columns ?\n // alternative would be an allColumns prop, but every datasource would then have to add it.\n get columns() {\n return this.#allColumns ?? super.columns;\n }\n\n set columns(columns: string[]) {\n super.columns = columns;\n if (this.#autosubscribeColumns.length) {\n this.#allColumns = combineColumnsWithAutosubscribeColumns(\n columns,\n this.#autosubscribeColumns,\n );\n }\n }\n\n get tableSchema() {\n return this.#tableSchema;\n }\n\n set tableSchema(tableSchema: TableSchema | undefined) {\n this.#tableSchema = tableSchema;\n // TOSO emit an event\n }\n\n get links() {\n return this.#links;\n }\n\n get menu() {\n return this.#menu;\n }\n\n get status() {\n return this.#status;\n }\n\n get optimize() {\n return this.#optimize;\n }\n\n set optimize(optimize: OptimizeStrategy) {\n if (optimize !== this.#optimize) {\n this.#optimize = optimize;\n switch (optimize) {\n case \"none\":\n this.rangeRequest = this.rawRangeRequest;\n break;\n case \"debounce\":\n this.rangeRequest = this.debounceRangeRequest;\n break;\n case \"throttle\":\n this.rangeRequest = this.throttleRangeRequest;\n break;\n }\n this.emit(\"optimize\", optimize);\n }\n }\n\n private revertDebounce = debounce(() => {\n this.optimize = \"throttle\";\n }, 100);\n\n get selectedRowsCount() {\n return this.#selectedRowsCount;\n }\n\n private rawRangeRequest: RangeRequest = (range) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n };\n\n private debounceRangeRequest: RangeRequest = debounce((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 50);\n\n private throttleRangeRequest: RangeRequest = throttle((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 80);\n\n get config() {\n return super.config;\n }\n\n set config(config: WithBaseFilter<WithFullConfig>) {\n const { noChanges, columnsChanged } = isConfigChanged(this.config, config);\n if (!noChanges) {\n super.config = config;\n\n const { columns, ...dataSourceConfig } = combineFilters(this.config);\n const serverConfig: WithFullConfig = {\n ...dataSourceConfig,\n columns: combineColumnsWithAutosubscribeColumns(\n columns,\n this.#autosubscribeColumns,\n ),\n };\n\n if (columnsChanged && this.#autosubscribeColumns.length) {\n this.#allColumns = combineColumnsWithAutosubscribeColumns(\n columns,\n this.#autosubscribeColumns,\n );\n }\n\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: serverConfig,\n });\n }\n }\n\n set impendingConfig(config: WithBaseFilter<WithFullConfig>) {\n if (config !== this.config) {\n super.impendingConfig = config;\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: combineFilters(this.config),\n });\n }\n }\n\n get groupBy() {\n return this._configWithVisualLink.groupBy;\n }\n\n set groupBy(groupBy: VuuGroupBy) {\n if (itemsOrOrderChanged(this.groupBy, groupBy)) {\n const wasGrouped = this.groupBy.length > 0;\n\n this.impendingConfig = {\n ...this._configWithVisualLink,\n groupBy,\n };\n\n if (!wasGrouped && groupBy.length > 0 && this.viewport) {\n // clear data from table whilst we wait for grouped data from server\n this._clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"batch\",\n type: \"viewport-update\",\n size: 0,\n rows: [],\n });\n }\n }\n }\n\n get range() {\n return super.range;\n }\n\n set range(range: Range) {\n super.range = range;\n if (this.#sessionDataSource) {\n this.#sessionDataSource.range = range;\n }\n }\n\n get title() {\n return super.title || `${this.table.module} ${this.table.table}`;\n }\n\n set title(title: string) {\n super.title = title;\n if (this.viewport && title) {\n // This message doesn't actually trigger a message to Vuu server\n // it will be used to recompute visual link labels\n this.server?.send({\n type: \"setTitle\",\n title,\n viewport: this.viewport,\n });\n }\n }\n\n get visualLink() {\n return this._configWithVisualLink.visualLink;\n }\n\n set visualLink(visualLink: LinkDescriptorWithLabel | undefined) {\n this._configWithVisualLink = {\n ...this._configWithVisualLink,\n visualLink,\n };\n\n if (visualLink) {\n const {\n parentClientVpId,\n link: { fromColumn, toColumn },\n } = visualLink;\n\n if (this.viewport) {\n this.server\n ?.rpcCall<DataSourceVisualLinkCreatedMessage>({\n childColumnName: fromColumn,\n childVpId: this.viewport,\n parentColumnName: toColumn,\n parentVpId: parentClientVpId,\n type: \"CREATE_VISUAL_LINK\",\n } as VuuCreateVisualLink)\n .then((response) => {\n this.emit(\"visual-link-created\", response);\n });\n }\n } else {\n if (this.viewport) {\n this.server\n ?.rpcCall({\n type: \"REMOVE_VISUAL_LINK\",\n childVpId: this.viewport,\n })\n .then(() => {\n this.emit(\"visual-link-removed\");\n });\n }\n }\n\n this.emit(\"config\", this._configWithVisualLink, this.range);\n }\n\n async remoteProcedureCall<T extends VuuRpcResponse = VuuRpcResponse>() {\n return Promise.reject<T>();\n }\n\n createSessionDataSource(sessionTable: VuuTable) {\n //TODO filters, sort etc\n const columns = this.#sessionTableMessageColumn\n ? this.columns.concat(this.#sessionTableMessageColumn)\n : this.columns;\n return new VuuDataSource({\n columns: columns,\n table: sessionTable,\n });\n }\n\n async beginEditSession(editSessionMode: EditSessionMode = \"all-rows\") {\n const rpcResponse = await this?.rpcRequest?.({\n type: \"RPC_REQUEST\",\n rpcName: \"beginEditSession\",\n params: {\n editSessionMode,\n },\n });\n\n if (isRpcSuccess(rpcResponse)) {\n const { table: sessionTable } = rpcResponse.data as { table: VuuTable };\n\n if (isInlineEditingSession(editSessionMode)) {\n const columns = this.#sessionTableMessageColumn\n ? this.columns.concat(this.#sessionTableMessageColumn)\n : this.columns;\n this.#sessionDataSource = new VuuDataSource({\n ...this.config,\n columns,\n table: sessionTable,\n viewport: sessionTable.table,\n });\n\n this.#sessionDataSource.subscribe(\n {\n range: this.range,\n },\n this.handleSessionMessageFromServer,\n );\n } else {\n return new VuuDataSource({\n ...this.config,\n table: sessionTable,\n viewport: sessionTable.table,\n });\n }\n\n // we need to route messages from the session datasource to listening\n // client whilst still monitoring responses on the source table to which\n // we are currently subscribed.\n } else {\n throw Error(\n `[VuuDataSource] beginEditSession ${rpcResponse.errorMessage}`,\n );\n ///\n }\n }\n\n async editCell(key: string, column: string, data: VuuRowDataItemType) {\n const rpcHost = this.#sessionDataSource ?? this;\n return rpcHost.rpcRequest?.({\n type: \"RPC_REQUEST\",\n rpcName: \"editCell\",\n params: {\n column,\n data,\n key,\n },\n });\n }\n\n async endEditSession(saveChanges = false, force = false) {\n const type = \"RPC_REQUEST\";\n const rpcName = \"endEditSession\";\n const sessionDataSource = this.#sessionDataSource;\n const rpcHost = sessionDataSource ?? this;\n\n if (sessionDataSource) {\n // timing is important here. By breaking this reference before\n // we send the endEdit RPC call, the application of session edits\n // to the source table will be handled correctly.\n this.#sessionDataSource = undefined;\n }\n\n const rpcResponse = await rpcHost.rpcRequest?.(\n saveChanges\n ? { type, rpcName, params: { save: true, force } }\n : { type, rpcName, params: {} },\n );\n\n if (isRpcSuccess(rpcResponse)) {\n if (sessionDataSource) {\n sessionDataSource?.unsubscribe();\n }\n } else {\n if (rpcResponse?.errorMessage === \"stale update\") {\n this.#sessionDataSource = sessionDataSource;\n throw new StaleUpdateError(rpcResponse.errorMessage);\n } else {\n throw Error(\"unknown error\");\n }\n }\n\n this.sendResumeMessage();\n }\n\n async rpcRequest(rpcRequest: Omit<VuuRpcServiceRequest, \"context\">) {\n if (this.viewport && this.server) {\n return this.server?.rpcCall<RpcResultSuccess | RpcResultError>({\n ...rpcRequest,\n context: { type: \"VIEWPORT_CONTEXT\", viewPortId: this.viewport },\n } as VuuRpcServiceRequest);\n } else {\n throw Error(`rpcCall server or viewport are undefined`);\n }\n }\n\n async menuRpcCall(rpcRequest: Omit<VuuRpcMenuRequest, \"vpId\">) {\n if (this.viewport) {\n return this.server?.rpcCall<MenuRpcResponse>({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcMenuRequest);\n }\n }\n\n insertRow() {\n return Promise.resolve(\"not supported\");\n // return this.menuRpcCall(vuuAddRowRequest(rowKey, data)).then((response) => {\n // if (response?.error) {\n // return response.error;\n // } else {\n // return true;\n // }\n // });\n }\n deleteRow() {\n return Promise.resolve(\"not supported\");\n // return this.menuRpcCall(vuuDeleteRowRequest(rowKey)).then((response) => {\n // if (response?.error) {\n // return response.error;\n // } else {\n // return true;\n // }\n // });\n }\n}\n"],"names":["logger","BaseDataSource","isDataSourceConfigMessage","isViewportMenusAction","isVisualLinksAction","debounce","throttle","uuid","combineFilters","Range","isSelectSuccessWithRowCount","isConfigChanged","itemsOrOrderChanged","isRpcSuccess","isInlineEditingSession","StaleUpdateError"],"mappings":"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"}
|
package/cjs/data-source.js
CHANGED
package/cjs/data-source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-source.js","sources":["../../../packages/vuu-data-remote/src/data-source.ts"],"sourcesContent":["import type {\n DataSourceCallbackMessage,\n DataSourceConfig,\n DataSourceConfigMessage,\n DataSourceDataSizeMessage,\n WithRequestId,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { SelectSuccessWithRowCount } from \"@vuu-ui/vuu-protocol-types\";\n\nexport const isSizeOnly = (\n message: DataSourceCallbackMessage,\n): message is DataSourceDataSizeMessage =>\n message.type === \"viewport-update\" && message.mode === \"size-only\";\n\nexport const toDataSourceConfig = (\n message: DataSourceConfigMessage,\n): DataSourceConfig => {\n switch (message.type) {\n case \"aggregate\":\n return { aggregations: message.aggregations };\n case \"columns\":\n return { columns: message.columns };\n case \"filter\":\n return { filterSpec: message.filter };\n case \"groupBy\":\n return { groupBy: message.groupBy };\n case \"sort\":\n return { sort: message.sort };\n case \"config\":\n return message.config;\n }\n};\n\nconst datasourceMessages = [\n \"config\",\n \"aggregate\",\n \"viewport-clear\",\n \"viewport-update\",\n \"columns\",\n \"debounce-begin\",\n \"disabled\",\n \"enabled\",\n \"filter\",\n \"groupBy\",\n \"vuu-links\",\n \"vuu-menu\",\n \"sort\",\n \"subscribed\",\n];\n\nexport const shouldMessageBeRoutedToDataSource = (\n message: unknown,\n): message is Exclude<\n DataSourceCallbackMessage,\n WithRequestId<SelectSuccessWithRowCount>\n> => {\n const type = (message as DataSourceCallbackMessage).type;\n return datasourceMessages.includes(type);\n};\n\nexport const isDataSourceConfigMessage = (\n message: DataSourceCallbackMessage,\n): message is DataSourceConfigMessage =>\n [\"config\", \"aggregate\", \"columns\", \"filter\", \"groupBy\", \"sort\"].includes(\n message.type,\n );\n"],"names":[],"mappings":";;AASO,MAAM,aAAa,CACxB,OAAA,KAEA,QAAQ,IAAS,KAAA,iBAAA,IAAqB,QAAQ,IAAS,KAAA;AAE5C,MAAA,kBAAA,GAAqB,CAChC,OACqB,KAAA;AACrB,EAAA,QAAQ,QAAQ,IAAM;AAAA,IACpB,KAAK,WAAA;AACH,MAAO,OAAA,EAAE,YAAc,EAAA,OAAA,CAAQ,YAAa,EAAA;AAAA,IAC9C,KAAK,SAAA;AACH,MAAO,OAAA,EAAE,OAAS,EAAA,OAAA,CAAQ,OAAQ,EAAA;AAAA,IACpC,KAAK,QAAA;AACH,MAAO,OAAA,EAAE,UAAY,EAAA,OAAA,CAAQ,MAAO,EAAA;AAAA,IACtC,KAAK,SAAA;AACH,MAAO,OAAA,EAAE,OAAS,EAAA,OAAA,CAAQ,OAAQ,EAAA;AAAA,IACpC,KAAK,MAAA;AACH,MAAO,OAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,IAAK,EAAA;AAAA,IAC9B,KAAK,QAAA;AACH,MAAA,OAAO,OAAQ,CAAA,MAAA;AAAA;AAErB;AAEA,MAAM,kBAAqB,GAAA;AAAA,EACzB,QAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA;AAEa,MAAA,iCAAA,GAAoC,CAC/C,OAIG,KAAA;AACH,EAAA,MAAM,OAAQ,OAAsC,CAAA,IAAA;AACpD,EAAO,OAAA,kBAAA,CAAmB,SAAS,IAAI,CAAA;AACzC;AAEa,MAAA,yBAAA,GAA4B,CACvC,OAAA,KAEA,CAAC,QAAA,EAAU,aAAa,SAAW,EAAA,QAAA,EAAU,SAAW,EAAA,MAAM,CAAE,CAAA,QAAA;AAAA,EAC9D,OAAQ,CAAA;AACV;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"data-source.js","sources":["../../../packages/vuu-data-remote/src/data-source.ts"],"sourcesContent":["import type {\n DataSourceCallbackMessage,\n DataSourceConfig,\n DataSourceConfigMessage,\n DataSourceDataSizeMessage,\n WithRequestId,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { SelectSuccessWithRowCount } from \"@vuu-ui/vuu-protocol-types\";\n\nexport const isSizeOnly = (\n message: DataSourceCallbackMessage,\n): message is DataSourceDataSizeMessage =>\n message.type === \"viewport-update\" && message.mode === \"size-only\";\n\nexport const toDataSourceConfig = (\n message: DataSourceConfigMessage,\n): DataSourceConfig => {\n switch (message.type) {\n case \"aggregate\":\n return { aggregations: message.aggregations };\n case \"columns\":\n return { columns: message.columns };\n case \"filter\":\n return { filterSpec: message.filter };\n case \"groupBy\":\n return { groupBy: message.groupBy };\n case \"sort\":\n return { sort: message.sort };\n case \"config\":\n return message.config;\n }\n};\n\nconst datasourceMessages = [\n \"config\",\n \"aggregate\",\n \"viewport-clear\",\n \"viewport-update\",\n \"columns\",\n \"debounce-begin\",\n \"disabled\",\n \"enabled\",\n \"filter\",\n \"groupBy\",\n \"vuu-links\",\n \"vuu-menu\",\n \"sort\",\n \"subscribed\",\n \"subscribe-failed\",\n];\n\nexport const shouldMessageBeRoutedToDataSource = (\n message: unknown,\n): message is Exclude<\n DataSourceCallbackMessage,\n WithRequestId<SelectSuccessWithRowCount>\n> => {\n const type = (message as DataSourceCallbackMessage).type;\n return datasourceMessages.includes(type);\n};\n\nexport const isDataSourceConfigMessage = (\n message: DataSourceCallbackMessage,\n): message is DataSourceConfigMessage =>\n [\"config\", \"aggregate\", \"columns\", \"filter\", \"groupBy\", \"sort\"].includes(\n message.type,\n );\n"],"names":[],"mappings":";;AASO,MAAM,aAAa,CACxB,OAAA,KAEA,QAAQ,IAAS,KAAA,iBAAA,IAAqB,QAAQ,IAAS,KAAA;AAE5C,MAAA,kBAAA,GAAqB,CAChC,OACqB,KAAA;AACrB,EAAA,QAAQ,QAAQ,IAAM;AAAA,IACpB,KAAK,WAAA;AACH,MAAO,OAAA,EAAE,YAAc,EAAA,OAAA,CAAQ,YAAa,EAAA;AAAA,IAC9C,KAAK,SAAA;AACH,MAAO,OAAA,EAAE,OAAS,EAAA,OAAA,CAAQ,OAAQ,EAAA;AAAA,IACpC,KAAK,QAAA;AACH,MAAO,OAAA,EAAE,UAAY,EAAA,OAAA,CAAQ,MAAO,EAAA;AAAA,IACtC,KAAK,SAAA;AACH,MAAO,OAAA,EAAE,OAAS,EAAA,OAAA,CAAQ,OAAQ,EAAA;AAAA,IACpC,KAAK,MAAA;AACH,MAAO,OAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,IAAK,EAAA;AAAA,IAC9B,KAAK,QAAA;AACH,MAAA,OAAO,OAAQ,CAAA,MAAA;AAAA;AAErB;AAEA,MAAM,kBAAqB,GAAA;AAAA,EACzB,QAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA;AAEa,MAAA,iCAAA,GAAoC,CAC/C,OAIG,KAAA;AACH,EAAA,MAAM,OAAQ,OAAsC,CAAA,IAAA;AACpD,EAAO,OAAA,kBAAA,CAAmB,SAAS,IAAI,CAAA;AACzC;AAEa,MAAA,yBAAA,GAA4B,CACvC,OAAA,KAEA,CAAC,QAAA,EAAU,aAAa,SAAW,EAAA,QAAA,EAAU,SAAW,EAAA,MAAM,CAAE,CAAA,QAAA;AAAA,EAC9D,OAAQ,CAAA;AACV;;;;;;;"}
|
package/cjs/inlined-worker.js
CHANGED
|
@@ -323,6 +323,7 @@ var InvalidLoginMessages = [
|
|
|
323
323
|
INVALID_TOKEN,
|
|
324
324
|
TOKEN_EXPIRED
|
|
325
325
|
];
|
|
326
|
+
var isErrorMessage = (message) => typeof message == "object" && (message == null ? void 0 : message.type) === "ERROR";
|
|
326
327
|
var isLoginErrorMessage = (message) => typeof message === "string" && InvalidLoginMessages.includes(message);
|
|
327
328
|
var isSelectRequest = (message) => message && typeof message === "object" && "type" in message && (message.type === "SELECT_ROW" || message.type === "DESELECT_ROW" || message.type === "SELECT_ROW_RANGE" || message.type === "SELECT_ALL" || message.type === "DESELECT_ALL");
|
|
328
329
|
var isRpcServiceRequest = (message) => message.type === "RPC_REQUEST";
|
|
@@ -1771,7 +1772,13 @@ var ServerProxy = class {
|
|
|
1771
1772
|
pendingSubscription,
|
|
1772
1773
|
pendingTableSchema
|
|
1773
1774
|
]);
|
|
1774
|
-
if (
|
|
1775
|
+
if (isErrorMessage(tableSchema)) {
|
|
1776
|
+
this.postMessageToClient({
|
|
1777
|
+
clientViewportId: message.viewport,
|
|
1778
|
+
type: "subscribe-failed",
|
|
1779
|
+
msg: \`failed to fetch schema for table \${message.table.table}: \${tableSchema.msg}\`
|
|
1780
|
+
});
|
|
1781
|
+
} else if (isCreateVpSuccess(subscribeResponse)) {
|
|
1775
1782
|
const { viewPortId: serverViewportId } = subscribeResponse;
|
|
1776
1783
|
const { status: previousViewportStatus } = viewport;
|
|
1777
1784
|
if (message.viewport !== serverViewportId) {
|
|
@@ -1819,6 +1826,11 @@ var ServerProxy = class {
|
|
|
1819
1826
|
});
|
|
1820
1827
|
}
|
|
1821
1828
|
} else {
|
|
1829
|
+
this.postMessageToClient({
|
|
1830
|
+
clientViewportId: message.viewport,
|
|
1831
|
+
type: "subscribe-failed",
|
|
1832
|
+
msg: \`failed to open subscription on table \${message.table.table}: \${subscribeResponse.msg}\`
|
|
1833
|
+
});
|
|
1822
1834
|
}
|
|
1823
1835
|
} else {
|
|
1824
1836
|
error2(\`spurious subscribe call \${message.viewport}\`);
|
|
@@ -2204,7 +2216,8 @@ var ServerProxy = class {
|
|
|
2204
2216
|
}
|
|
2205
2217
|
case "GET_TABLE_META": {
|
|
2206
2218
|
this.getTableMeta(message.table, requestId).then((tableSchema) => {
|
|
2207
|
-
if (tableSchema) {
|
|
2219
|
+
if (isErrorMessage(tableSchema)) {
|
|
2220
|
+
} else if (tableSchema) {
|
|
2208
2221
|
this.postMessageToClient({
|
|
2209
2222
|
type: "TABLE_META_RESP",
|
|
2210
2223
|
tableSchema,
|
|
@@ -2225,10 +2238,9 @@ var ServerProxy = class {
|
|
|
2225
2238
|
}
|
|
2226
2239
|
getTableMeta(table, requestId = nextRequestId()) {
|
|
2227
2240
|
if (isSessionTable(table)) {
|
|
2228
|
-
return this.awaitResponseToMessage(
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
).then(createSchemaFromTableMetadata);
|
|
2241
|
+
return this.awaitResponseToMessage({ type: "GET_TABLE_META", table }, requestId).then(
|
|
2242
|
+
(resp) => isErrorMessage(resp) ? resp : createSchemaFromTableMetadata(resp)
|
|
2243
|
+
);
|
|
2232
2244
|
}
|
|
2233
2245
|
const key = \`\${table.module}:\${table.table}\`;
|
|
2234
2246
|
let tableMetaRequest = this.cachedTableMetaRequests.get(key);
|
|
@@ -2239,7 +2251,13 @@ var ServerProxy = class {
|
|
|
2239
2251
|
);
|
|
2240
2252
|
this.cachedTableMetaRequests.set(key, tableMetaRequest);
|
|
2241
2253
|
}
|
|
2242
|
-
return tableMetaRequest == null ? void 0 : tableMetaRequest.then((response) =>
|
|
2254
|
+
return tableMetaRequest == null ? void 0 : tableMetaRequest.then((response) => {
|
|
2255
|
+
if (isErrorMessage(response)) {
|
|
2256
|
+
return response;
|
|
2257
|
+
} else {
|
|
2258
|
+
return this.cacheTableMeta(response);
|
|
2259
|
+
}
|
|
2260
|
+
});
|
|
2243
2261
|
}
|
|
2244
2262
|
awaitResponseToMessage(message, requestId = nextRequestId()) {
|
|
2245
2263
|
return new Promise((resolve, reject) => {
|