@vuu-ui/vuu-data-remote 3.5.12 → 3.5.14

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.5.12",
2
+ "version": "3.5.14",
3
3
  "main": "./src/index.js",
4
4
  "author": "heswell",
5
5
  "license": "Apache-2.0",
@@ -11,14 +11,14 @@
11
11
  "type-defs": "node ../../scripts/build-type-defs.mjs"
12
12
  },
13
13
  "devDependencies": {
14
- "@vuu-ui/vuu-data-types": "3.5.12",
15
- "@vuu-ui/vuu-table-types": "3.5.12",
16
- "@vuu-ui/vuu-filter-types": "3.5.12",
17
- "@vuu-ui/vuu-protocol-types": "3.5.12"
14
+ "@vuu-ui/vuu-data-types": "3.5.14",
15
+ "@vuu-ui/vuu-table-types": "3.5.14",
16
+ "@vuu-ui/vuu-filter-types": "3.5.14",
17
+ "@vuu-ui/vuu-protocol-types": "3.5.14"
18
18
  },
19
19
  "dependencies": {
20
- "@vuu-ui/vuu-filter-parser": "3.5.12",
21
- "@vuu-ui/vuu-utils": "3.5.12"
20
+ "@vuu-ui/vuu-filter-parser": "3.5.14",
21
+ "@vuu-ui/vuu-utils": "3.5.14"
22
22
  },
23
23
  "files": [
24
24
  "README.md",
@@ -4,19 +4,15 @@ import { isDataSourceConfigMessage } from "./data-source.js";
4
4
  const { info: info, infoEnabled: infoEnabled } = logger("VuuDataSource");
5
5
  const combineColumnsWithAutosubscribeColumns = (columns, autosubscribeColumns = [])=>{
6
6
  if (0 === autosubscribeColumns.length) return columns;
7
- {
8
- const out = columns.slice();
9
- autosubscribeColumns.forEach((name)=>{
10
- if (!out.includes(name)) out.push(name);
11
- });
12
- return out;
13
- }
7
+ return Array.from(new Set([
8
+ ...columns,
9
+ ...autosubscribeColumns
10
+ ]));
14
11
  };
15
12
  class VuuDataSource extends BaseDataSource {
16
13
  bufferSize;
17
14
  server = null;
18
15
  rangeRequest;
19
- #allColumns;
20
16
  #autosubscribeColumns = [];
21
17
  #pendingVisualLink;
22
18
  #links;
@@ -32,8 +28,11 @@ class VuuDataSource extends BaseDataSource {
32
28
  #tableSchema;
33
29
  isRemote = true;
34
30
  table;
35
- constructor({ session, sessionTableMessageColumn, ...props }){
36
- super(props);
31
+ constructor({ autosubscribeColumns, columns, session, sessionTableMessageColumn, ...props }){
32
+ super({
33
+ ...props,
34
+ columns: autosubscribeColumns ? combineColumnsWithAutosubscribeColumns(columns ?? [], autosubscribeColumns) : columns
35
+ });
37
36
  const { bufferSize = 100, table, visualLink } = props;
38
37
  if (!table) throw Error("RemoteDataSource constructor called without table");
39
38
  this.bufferSize = bufferSize;
@@ -42,13 +41,13 @@ class VuuDataSource extends BaseDataSource {
42
41
  this.#session = session;
43
42
  this.#sessionTableMessageColumn = sessionTableMessageColumn;
44
43
  this.rangeRequest = this.rawRangeRequest;
45
- if (props.autosubscribeColumns) {
46
- this.#autosubscribeColumns = props.autosubscribeColumns;
47
- this.#allColumns = combineColumnsWithAutosubscribeColumns(super.columns, props.autosubscribeColumns);
48
- }
44
+ if (autosubscribeColumns) this.#autosubscribeColumns = autosubscribeColumns;
49
45
  }
50
46
  async subscribe(subscribeProps, callback) {
51
- super.subscribe(subscribeProps, callback);
47
+ super.subscribe(subscribeProps.columns && this.#autosubscribeColumns.length ? {
48
+ ...subscribeProps,
49
+ columns: combineColumnsWithAutosubscribeColumns(subscribeProps.columns, this.#autosubscribeColumns)
50
+ } : subscribeProps, callback);
52
51
  const { viewport = this.viewport || (this.viewport = uuid()) } = subscribeProps;
53
52
  if ("disabled" === this.#status || "disabling" === this.#status || "enabling" === this.#status) return void this.enable(callback);
54
53
  if ("initialising" !== this.#status && "unsubscribed" !== this.#status) throw Error(`[VuuDataSource] invalid status ${this.#status} for subscribe`);
@@ -252,11 +251,10 @@ class VuuDataSource extends BaseDataSource {
252
251
  }
253
252
  }
254
253
  get columns() {
255
- return this.#allColumns ?? super.columns;
254
+ return super.columns;
256
255
  }
257
256
  set columns(columns) {
258
- super.columns = columns;
259
- if (this.#autosubscribeColumns.length) this.#allColumns = combineColumnsWithAutosubscribeColumns(columns, this.#autosubscribeColumns);
257
+ super.columns = combineColumnsWithAutosubscribeColumns(columns, this.#autosubscribeColumns);
260
258
  }
261
259
  get tableSchema() {
262
260
  return this.#tableSchema;
@@ -327,19 +325,17 @@ class VuuDataSource extends BaseDataSource {
327
325
  return super.config;
328
326
  }
329
327
  set config(config) {
330
- const { noChanges, columnsChanged } = isConfigChanged(this.config, config);
328
+ const nextConfig = this.#autosubscribeColumns.length ? {
329
+ ...config,
330
+ columns: combineColumnsWithAutosubscribeColumns(config.columns, this.#autosubscribeColumns)
331
+ } : config;
332
+ const { noChanges } = isConfigChanged(this.config, nextConfig);
331
333
  if (!noChanges) {
332
- super.config = config;
333
- const { columns, ...dataSourceConfig } = combineFilters(this.config);
334
- const serverConfig = {
335
- ...dataSourceConfig,
336
- columns: combineColumnsWithAutosubscribeColumns(columns, this.#autosubscribeColumns)
337
- };
338
- if (columnsChanged && this.#autosubscribeColumns.length) this.#allColumns = combineColumnsWithAutosubscribeColumns(columns, this.#autosubscribeColumns);
334
+ super.config = nextConfig;
339
335
  this.server?.send({
340
336
  viewport: this.viewport,
341
337
  type: "config",
342
- config: serverConfig
338
+ config: combineFilters(this.config)
343
339
  });
344
340
  }
345
341
  }
@@ -10,7 +10,7 @@ export declare class VuuDataSource extends BaseDataSource implements DataSourceB
10
10
  rangeRequest: RangeRequest;
11
11
  readonly isRemote = true;
12
12
  table: VuuTable;
13
- constructor({ session, sessionTableMessageColumn, ...props }: DataSourceConstructorProps);
13
+ constructor({ autosubscribeColumns, columns, session, sessionTableMessageColumn, ...props }: DataSourceConstructorProps);
14
14
  subscribe(subscribeProps: DataSourceSubscribeProps, callback: DataSourceSubscribeCallback): Promise<void>;
15
15
  handleMessageFromServer: (message: DataSourceCallbackMessage) => void;
16
16
  handleSessionMessageFromServer: (msg: DataSourceCallbackMessage) => void;