@deephaven/jsapi-types 1.0.0-dev0.35.1 → 1.0.0-dev0.35.2

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 (2) hide show
  1. package/dist/index.d.ts +1734 -1734
  2. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  // Minimum TypeScript Version: 4.3
2
2
  // Generated using com.vertispan.tsdefs.doclet.TsDoclet
3
3
 
4
+ export interface IIterableResult<T> {
5
+ value:T;
6
+ done:boolean;
7
+ }
4
8
  /**
5
9
  * This is part of EcmaScript 2015, documented here for completeness. It supports a single method, <b>next()</b>, which
6
10
  * returns an object with a <b>boolean</b> named <b>done</b> (true if there are no more items to return; false
@@ -11,28 +15,8 @@ export interface Iterator<T> {
11
15
  hasNext():boolean;
12
16
  next():IIterableResult<T>;
13
17
  }
14
- export interface IIterableResult<T> {
15
- value:T;
16
- done:boolean;
17
- }
18
18
  export namespace dh.storage {
19
19
 
20
- /**
21
- * Represents a file's contents loaded from the server. If an etag was specified when loading, client should first test
22
- * if the etag of this instance matches - if so, the contents will be empty, and the client's existing contents should
23
- * be used.
24
- */
25
- export class FileContents {
26
- protected constructor();
27
-
28
- static blob(blob:Blob):FileContents;
29
- static text(...text:string[]):FileContents;
30
- static arrayBuffers(...buffers:ArrayBuffer[]):FileContents;
31
- text():Promise<string>;
32
- arrayBuffer():Promise<ArrayBuffer>;
33
- get etag():string;
34
- }
35
-
36
20
  /**
37
21
  * Remote service to read and write files on the server. Paths use "/" as a separator, and should not start with "/".
38
22
  */
@@ -106,6 +90,22 @@ export namespace dh.storage {
106
90
  get dirname():string;
107
91
  }
108
92
 
93
+ /**
94
+ * Represents a file's contents loaded from the server. If an etag was specified when loading, client should first test
95
+ * if the etag of this instance matches - if so, the contents will be empty, and the client's existing contents should
96
+ * be used.
97
+ */
98
+ export class FileContents {
99
+ protected constructor();
100
+
101
+ static blob(blob:Blob):FileContents;
102
+ static text(...text:string[]):FileContents;
103
+ static arrayBuffers(...buffers:ArrayBuffer[]):FileContents;
104
+ text():Promise<string>;
105
+ arrayBuffer():Promise<ArrayBuffer>;
106
+ get etag():string;
107
+ }
108
+
109
109
 
110
110
  type ItemTypeType = string;
111
111
  export class ItemType {
@@ -118,37 +118,61 @@ export namespace dh.storage {
118
118
  export namespace dh {
119
119
 
120
120
  /**
121
- * Contains data in the current viewport. Also contains the offset to this data, so that the actual row number may be
122
- * determined. Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided
123
- * for easier scrolling without going to the server.
121
+ * Row implementation that also provides additional read-only properties. represents visible rows in the table,
122
+ * but with additional properties to reflect the tree structure.
124
123
  */
125
- export interface ViewportData extends TableData {
124
+ export interface TreeRow extends ViewportRow {
126
125
  /**
127
- * The index of the first returned row
128
- * @return double
126
+ * True if this node is currently expanded to show its children; false otherwise. Those children will be the
127
+ * rows below this one with a greater depth than this one
128
+ * @return boolean
129
129
  */
130
- get offset():number;
130
+ get isExpanded():boolean;
131
131
  /**
132
- * A list of columns describing the data types in each row
133
- * @return {@link dh.Column} array.
132
+ * The number of levels above this node; zero for top level nodes. Generally used by the UI to indent the
133
+ * row and its expand/collapse icon
134
+ * @return int
134
135
  */
135
- get columns():Array<Column>;
136
+ get depth():number;
136
137
  /**
137
- * An array of rows of data
138
- * @return {@link dh.ViewportRow} array.
138
+ * True if this node has children and can be expanded; false otherwise. Note that this value may change when
139
+ * the table updates, depending on the table's configuration
140
+ * @return boolean
139
141
  */
140
- get rows():Array<ViewportRow>;
142
+ get hasChildren():boolean;
143
+ get index():LongWrapper;
141
144
  }
142
145
  /**
143
- * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
146
+ * Represents the contents of a single widget data message from the server, with a binary data paylod and exported
147
+ * objects. Implemented both by Widget itself and by the `event.details` when data is received by the client.
148
+ *
149
+ * Terminology note: the name of this type should probably use "Data" instead of "Message", and the methods should use
150
+ * "payload" rather than "data" to match other platforms and the protobuf itself. These names are instead used for
151
+ * backwards compatibility and to better follow JS expectations.
144
152
  */
145
- export interface LocalTimeWrapper {
146
- valueOf():string;
147
- getHour():number;
148
- getMinute():number;
149
- getSecond():number;
150
- getNano():number;
151
- toString():string;
153
+ export interface WidgetMessageDetails {
154
+ /**
155
+ * Returns the data from this message as a base64-encoded string.
156
+ */
157
+ getDataAsBase64():string;
158
+ /**
159
+ * Returns the data from this message as a Uint8Array.
160
+ */
161
+ getDataAsU8():Uint8Array;
162
+ /**
163
+ * Returns the data from this message as a utf-8 string.
164
+ */
165
+ getDataAsString():string;
166
+ /**
167
+ * Returns an array of exported objects sent from the server. The plugin implementation is now responsible for these
168
+ * objects, and should close them when no longer needed.
169
+ */
170
+ get exportedObjects():WidgetExportedObject[];
171
+ }
172
+ export interface Row {
173
+ get(column:Column):any;
174
+ getFormat(column:Column):Format;
175
+ get index():LongWrapper;
152
176
  }
153
177
  export interface LayoutHints {
154
178
  readonly searchDisplayMode?:SearchDisplayModeType|null;
@@ -160,278 +184,61 @@ export namespace dh {
160
184
  get frontColumns():string[]|null;
161
185
  get backColumns():string[]|null;
162
186
  }
163
- export interface Row {
164
- get(column:Column):any;
165
- getFormat(column:Column):Format;
166
- get index():LongWrapper;
167
- }
168
187
  /**
169
- * Represents a table which can be joined to another table. Current implementations are {@link dh.Table} and
170
- * {@link dh.TotalsTable}.
188
+ * Contains data in the current viewport. Also contains the offset to this data, so that the actual row number may be
189
+ * determined. Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided
190
+ * for easier scrolling without going to the server.
171
191
  */
172
- export interface JoinableTable {
173
- freeze():Promise<Table>;
174
- snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
175
- /**
176
- * Joins this table to the provided table, using one of the specified join types:
177
- * <ul>
178
- * <li><code>AJ</code>, <code>ReverseAJ</code> (or <code>RAJ</code>) - inexact timeseries joins, based on the
179
- * provided matching rule.</li>
180
- * <li><code>CROSS_JOIN</code> (or <code>Join</code>) - cross join of all rows that have matching values in both
181
- * tables.</li>
182
- * <li><code>EXACT_JOIN</code> (or <code>ExactJoin</code> - matches values in exactly one row in the right table,
183
- * with errors if there is not exactly one.</li>
184
- * <li><code>NATURAL_JOIN</code> (or <code>Natural</code> - matches values in at most one row in the right table,
185
- * with nulls if there is no match or errors if there are multiple matches.</li>
186
- * </ul>
187
- *
188
- * Note that <code>Left</code> join is not supported here, unlike DHE.
189
- * <p>
190
- * See the <a href="https://deephaven.io/core/docs/conceptual/choose-joins/">Choose a join method</a> document for
191
- * more guidance on picking a join operation.
192
- * @deprecated Instead, call the specific method for the join type.
193
- * @param joinType - The type of join to perform, see the list above.
194
- * @param rightTable - The table to match to values in this table
195
- * @param columnsToMatch - Columns that should match
196
- * @param columnsToAdd - Columns from the right table to add to the result - empty/null/absent to add all columns
197
- * @param asOfMatchRule - If joinType is AJ/RAJ/ReverseAJ, the match rule to use
198
- * @return a promise that will resolve to the joined table
199
- */
200
- join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
201
- /**
202
- * Performs an inexact timeseries join, where rows in this table will have columns added from the closest matching
203
- * row from the right table.
204
- * <p>
205
- * The `asOfMatchRule` value can be one of:
206
- * <ul>
207
- * <li>LESS_THAN_EQUAL</li>
208
- * <li>LESS_THAN</li>
209
- * <li>GREATER_THAN_EQUAL</li>
210
- * <li>GREATER_THAN</li>
211
- * </ul>
212
- * @param rightTable - the table to match to values in this table
213
- * @param columnsToMatch - the columns that should match, according to the asOfMatchRole
214
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
215
- * columns
216
- * @param asOfMatchRule - the match rule to use, see above
217
- * @return a promise that will resolve to the joined table
218
- */
219
- asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
192
+ export interface ViewportData extends TableData {
220
193
  /**
221
- * a promise that will be resolved with the newly created table holding the results of the specified cross join
222
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
223
- * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
224
- * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
225
- * @param rightTable - the table to match to values in this table
226
- * @param columnsToMatch - the columns that should match exactly
227
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
228
- * columns
229
- * @param reserveBits - the number of bits of key-space to initially reserve per group, null/absent will let the
230
- * server select a value
231
- * @return a promise that will resolve to the joined table
194
+ * The index of the first returned row
195
+ * @return double
232
196
  */
233
- crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
197
+ get offset():number;
234
198
  /**
235
- * a promise that will be resolved with the newly created table holding the results of the specified exact join
236
- * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
237
- * table being added to the output.
238
- * @param rightTable - the table to match to values in this table
239
- * @param columnsToMatch - the columns that should match exactly
240
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
241
- * columns
242
- * @return a promise that will resolve to the joined table
199
+ * A list of columns describing the data types in each row
200
+ * @return {@link dh.Column} array.
243
201
  */
244
- exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
202
+ get columns():Array<Column>;
245
203
  /**
246
- * a promise that will be resolved with the newly created table holding the results of the specified natural join
247
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
248
- * right table being added to the output.
249
- * @param rightTable - the table to match to values in this table
250
- * @param columnsToMatch - the columns that should match exactly
251
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
252
- * columns
253
- * @return a promise that will resolve to the joined table
204
+ * An array of rows of data
205
+ * @return {@link dh.ViewportRow} array.
254
206
  */
255
- naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
207
+ get rows():Array<ViewportRow>;
256
208
  }
257
209
  /**
258
- * Common interface for various ways of accessing table data and formatting.
210
+ * Behaves like a Table, but doesn't expose all of its API for changing the internal state. Instead, state is driven by
211
+ * the upstream table - when it changes handle, this listens and updates its own handle accordingly.
259
212
  *
260
- * Java note: this interface contains some extra overloads that aren't available in JS. Implementations are expected to
261
- * implement only abstract methods, and default methods present in this interface will dispatch accordingly.
262
- */
263
- export interface TableData {
264
- get(index:LongWrapper|number):Row;
265
- getData(index:LongWrapper|number, column:Column):any;
266
- getFormat(index:LongWrapper|number, column:Column):Format;
267
- get columns():Array<Column>;
268
- get rows():Array<Row>;
269
- }
270
- /**
271
- * Represents a server-side object that may not yet have been fetched by the client. When this object will no longer be
272
- * used, if {@link fetch} is not called on this object, then {@link close} must be to ensure server-side resources
273
- * are correctly freed.
213
+ * Additionally, this is automatically subscribed to its one and only row, across all columns.
214
+ *
215
+ * A new config is returned any time it is accessed, to prevent accidental mutation, and to allow it to be used as a
216
+ * template when fetching a new totals table, or changing the totals table in use.
217
+ *
218
+ * A simplistic Table, providing access to aggregation of the table it is sourced from. This table is always
219
+ * automatically subscribed to its parent, and adopts changes automatically from it. This class has limited methods
220
+ * found on Table. Instances of this type always have a size of one when no groupBy is set on the config, but may
221
+ * potentially contain as few as zero rows, or as many as the parent table if each row gets its own group.
222
+ *
223
+ * When using the `groupBy` feature, it may be desireable to also provide a row to the user with all values across all
224
+ * rows. To achieve this, request the same Totals Table again, but remove the `groupBy` setting.
274
225
  */
275
- export interface WidgetExportedObject {
226
+ export interface TotalsTable extends JoinableTable {
276
227
  /**
277
- * Returns the type of this export, typically one of {@link dh.VariableType}, but may also include plugin types. If
278
- * null, this object cannot be fetched, but can be passed to the server, such as via
279
- * {@link Widget.sendMessage}.
280
- * @return the string type of this server-side object, or null.
228
+ * Specifies the range of items to pass to the client and update as they change. If the columns parameter is not
229
+ * provided, all columns will be used. Until this is called, no data will be available. Invoking this will result in
230
+ * events to be fired once data becomes available, starting with an <b>updated</b> event and one <b>rowadded</b>
231
+ * event per row in that range.
232
+ * @param firstRow -
233
+ * @param lastRow -
234
+ * @param columns -
235
+ * @param updateIntervalMs -
281
236
  */
282
- readonly type?:string|null;
283
-
237
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>, updateIntervalMs?:number):void;
284
238
  /**
285
- * Exports another copy of this reference, allowing it to be fetched separately. Results in rejection if the ticket
286
- * was already closed (either by calling {@link WidgetExportedObject.close} or closing the object returned from {@link WidgetExportedObject.fetch}).
287
- * @return a promise returning a reexported copy of this object, still referencing the same server-side object.
288
- */
289
- reexport():Promise<WidgetExportedObject>;
290
- /**
291
- * Returns a promise that will fetch the object represented by this reference. Multiple calls to this will return
292
- * the same instance.
293
- * @return a promise that will resolve to a client side object that represents the reference on the server.
294
- */
295
- fetch():Promise<any>;
296
- /**
297
- * Releases the server-side resources associated with this object, regardless of whether other client-side objects
298
- * exist that also use that object. Should not be called after fetch() has been invoked.
299
- */
300
- close():void;
301
- }
302
- /**
303
- * Encapsulates event handling around table subscriptions by "cheating" and wrapping up a JsTable instance to do the
304
- * real dirty work. This allows a viewport to stay open on the old table if desired, while this one remains open.
305
- * <p>
306
- * As this just wraps a JsTable (and thus a CTS), it holds its own flattened, pUT'd handle to get deltas from the
307
- * server. The setViewport method can be used to adjust this table instead of creating a new one.
308
- * <p>
309
- * Existing methods on JsTable like setViewport and getViewportData are intended to proxy to this, which then will talk
310
- * to the underlying handle and accumulated data.
311
- * <p>
312
- * As long as we keep the existing methods/events on JsTable, close() is not required if no other method is called, with
313
- * the idea then that the caller did not actually use this type. This means that for every exported method (which then
314
- * will mark the instance of "actually being used, please don't automatically close me"), there must be an internal
315
- * version called by those existing JsTable method, which will allow this instance to be cleaned up once the JsTable
316
- * deems it no longer in use.
317
- * <p>
318
- * Note that if the caller does close an instance, this shuts down the JsTable's use of this (while the converse is not
319
- * true), providing a way to stop the server from streaming updates to the client.
320
- *
321
- * This object serves as a "handle" to a subscription, allowing it to be acted on directly or canceled outright. If you
322
- * retain an instance of this, you have two choices - either only use it to call `close()` on it to stop the table's
323
- * viewport without creating a new one, or listen directly to this object instead of the table for data events, and
324
- * always call `close()` when finished. Calling any method on this object other than close() will result in it
325
- * continuing to live on after `setViewport` is called on the original table, or after the table is modified.
326
- */
327
- export interface TableViewportSubscription extends HasEventHandling {
328
- /**
329
- * Changes the rows and columns set on this viewport. This cannot be used to change the update interval.
330
- * @param firstRow -
331
- * @param lastRow -
332
- * @param columns -
333
- * @param updateIntervalMs -
334
- */
335
- setViewport(firstRow:number, lastRow:number, columns?:Column[]|undefined|null, updateIntervalMs?:number|undefined|null):void;
336
- /**
337
- * Stops this viewport from running, stopping all events on itself and on the table that created it.
338
- */
339
- close():void;
340
- /**
341
- * Gets the data currently visible in this viewport
342
- * @return Promise of {@link dh.TableData}.
343
- */
344
- getViewportData():Promise<TableData>;
345
- snapshot(rows:RangeSet, columns:Column[]):Promise<TableData>;
346
- }
347
- /**
348
- * Javascript wrapper for {@link io.deephaven.web.shared.data.ColumnStatistics} This class holds the results of a call to generate statistics on a
349
- * table column.
350
- */
351
- export interface ColumnStatistics {
352
- /**
353
- * Gets the type of formatting that should be used for given statistic.
354
- * <p>
355
- * the format type for a statistic. A null return value means that the column formatting should be used.
356
- * @param name - the display name of the statistic
357
- * @return String
358
- */
359
- getType(name:string):string;
360
- /**
361
- * Gets a map with the name of each unique value as key and the count as the value. A map of each unique value's
362
- * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
363
- * than 19 unique values.
364
- * @return Map of String double
365
- */
366
- get uniqueValues():Map<string, number>;
367
- /**
368
- * Gets a map with the display name of statistics as keys and the numeric stat as a value.
369
- * <p>
370
- * A map of each statistic's name to its value.
371
- * @return Map of String and Object
372
- */
373
- get statisticsMap():Map<string, object>;
374
- }
375
- /**
376
- * Represents the contents of a single widget data message from the server, with a binary data paylod and exported
377
- * objects. Implemented both by Widget itself and by the `event.details` when data is received by the client.
378
- *
379
- * Terminology note: the name of this type should probably use "Data" instead of "Message", and the methods should use
380
- * "payload" rather than "data" to match other platforms and the protobuf itself. These names are instead used for
381
- * backwards compatibility and to better follow JS expectations.
382
- */
383
- export interface WidgetMessageDetails {
384
- /**
385
- * Returns the data from this message as a base64-encoded string.
386
- */
387
- getDataAsBase64():string;
388
- /**
389
- * Returns the data from this message as a Uint8Array.
390
- */
391
- getDataAsU8():Uint8Array;
392
- /**
393
- * Returns the data from this message as a utf-8 string.
394
- */
395
- getDataAsString():string;
396
- /**
397
- * Returns an array of exported objects sent from the server. The plugin implementation is now responsible for these
398
- * objects, and should close them when no longer needed.
399
- */
400
- get exportedObjects():WidgetExportedObject[];
401
- }
402
- /**
403
- * Behaves like a Table, but doesn't expose all of its API for changing the internal state. Instead, state is driven by
404
- * the upstream table - when it changes handle, this listens and updates its own handle accordingly.
405
- *
406
- * Additionally, this is automatically subscribed to its one and only row, across all columns.
407
- *
408
- * A new config is returned any time it is accessed, to prevent accidental mutation, and to allow it to be used as a
409
- * template when fetching a new totals table, or changing the totals table in use.
410
- *
411
- * A simplistic Table, providing access to aggregation of the table it is sourced from. This table is always
412
- * automatically subscribed to its parent, and adopts changes automatically from it. This class has limited methods
413
- * found on Table. Instances of this type always have a size of one when no groupBy is set on the config, but may
414
- * potentially contain as few as zero rows, or as many as the parent table if each row gets its own group.
415
- *
416
- * When using the `groupBy` feature, it may be desireable to also provide a row to the user with all values across all
417
- * rows. To achieve this, request the same Totals Table again, but remove the `groupBy` setting.
418
- */
419
- export interface TotalsTable extends JoinableTable {
420
- /**
421
- * Specifies the range of items to pass to the client and update as they change. If the columns parameter is not
422
- * provided, all columns will be used. Until this is called, no data will be available. Invoking this will result in
423
- * events to be fired once data becomes available, starting with an <b>updated</b> event and one <b>rowadded</b>
424
- * event per row in that range.
425
- * @param firstRow -
426
- * @param lastRow -
427
- * @param columns -
428
- * @param updateIntervalMs -
429
- */
430
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>, updateIntervalMs?:number):void;
431
- /**
432
- * the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
433
- * resolve until that data is ready.
434
- * @return Promise of {@link dh.TableData}
239
+ * the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
240
+ * resolve until that data is ready.
241
+ * @return Promise of {@link dh.TableData}
435
242
  */
436
243
  getViewportData():Promise<TableData>;
437
244
  /**
@@ -528,9 +335,63 @@ export namespace dh {
528
335
  */
529
336
  get isRefreshing():boolean;
530
337
  }
531
- export interface RefreshToken {
532
- get bytes():string;
533
- get expiry():number;
338
+ /**
339
+ * Common interface for various ways of accessing table data and formatting.
340
+ *
341
+ * Java note: this interface contains some extra overloads that aren't available in JS. Implementations are expected to
342
+ * implement only abstract methods, and default methods present in this interface will dispatch accordingly.
343
+ */
344
+ export interface TableData {
345
+ get(index:LongWrapper|number):Row;
346
+ getData(index:LongWrapper|number, column:Column):any;
347
+ getFormat(index:LongWrapper|number, column:Column):Format;
348
+ get columns():Array<Column>;
349
+ get rows():Array<Row>;
350
+ }
351
+ /**
352
+ * Encapsulates event handling around table subscriptions by "cheating" and wrapping up a JsTable instance to do the
353
+ * real dirty work. This allows a viewport to stay open on the old table if desired, while this one remains open.
354
+ * <p>
355
+ * As this just wraps a JsTable (and thus a CTS), it holds its own flattened, pUT'd handle to get deltas from the
356
+ * server. The setViewport method can be used to adjust this table instead of creating a new one.
357
+ * <p>
358
+ * Existing methods on JsTable like setViewport and getViewportData are intended to proxy to this, which then will talk
359
+ * to the underlying handle and accumulated data.
360
+ * <p>
361
+ * As long as we keep the existing methods/events on JsTable, close() is not required if no other method is called, with
362
+ * the idea then that the caller did not actually use this type. This means that for every exported method (which then
363
+ * will mark the instance of "actually being used, please don't automatically close me"), there must be an internal
364
+ * version called by those existing JsTable method, which will allow this instance to be cleaned up once the JsTable
365
+ * deems it no longer in use.
366
+ * <p>
367
+ * Note that if the caller does close an instance, this shuts down the JsTable's use of this (while the converse is not
368
+ * true), providing a way to stop the server from streaming updates to the client.
369
+ *
370
+ * This object serves as a "handle" to a subscription, allowing it to be acted on directly or canceled outright. If you
371
+ * retain an instance of this, you have two choices - either only use it to call `close()` on it to stop the table's
372
+ * viewport without creating a new one, or listen directly to this object instead of the table for data events, and
373
+ * always call `close()` when finished. Calling any method on this object other than close() will result in it
374
+ * continuing to live on after `setViewport` is called on the original table, or after the table is modified.
375
+ */
376
+ export interface TableViewportSubscription extends HasEventHandling {
377
+ /**
378
+ * Changes the rows and columns set on this viewport. This cannot be used to change the update interval.
379
+ * @param firstRow -
380
+ * @param lastRow -
381
+ * @param columns -
382
+ * @param updateIntervalMs -
383
+ */
384
+ setViewport(firstRow:number, lastRow:number, columns?:Column[]|undefined|null, updateIntervalMs?:number|undefined|null):void;
385
+ /**
386
+ * Stops this viewport from running, stopping all events on itself and on the table that created it.
387
+ */
388
+ close():void;
389
+ /**
390
+ * Gets the data currently visible in this viewport
391
+ * @return Promise of {@link dh.TableData}.
392
+ */
393
+ getViewportData():Promise<TableData>;
394
+ snapshot(rows:RangeSet, columns:Column[]):Promise<TableData>;
534
395
  }
535
396
  /**
536
397
  * This object may be pooled internally or discarded and not updated. Do not retain references to it.
@@ -558,46 +419,139 @@ export namespace dh {
558
419
  readonly numberFormat?:string|null;
559
420
  }
560
421
  /**
561
- * Wrap LocalDate values for use in JS. Provides text formatting for display and access to the underlying value.
422
+ * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
562
423
  */
563
- export interface LocalDateWrapper {
424
+ export interface LocalTimeWrapper {
564
425
  valueOf():string;
565
- getYear():number;
566
- getMonthValue():number;
567
- getDayOfMonth():number;
426
+ getHour():number;
427
+ getMinute():number;
428
+ getSecond():number;
429
+ getNano():number;
568
430
  toString():string;
569
431
  }
570
432
  /**
571
- * Event data, describing the indexes that were added/removed/updated, and providing access to Rows (and thus data
572
- * in columns) either by index, or scanning the complete present index.
573
- *
574
- * This class supports two ways of reading the table - checking the changes made since the last update, and reading
575
- * all data currently in the table. While it is more expensive to always iterate over every single row in the table,
576
- * it may in some cases actually be cheaper than maintaining state separately and updating only the changes, though
577
- * both options should be considered.
578
- *
579
- * The RangeSet objects allow iterating over the LongWrapper indexes in the table. Note that these "indexes" are not
580
- * necessarily contiguous and may be negative, and represent some internal state on the server, allowing it to keep
581
- * track of data efficiently. Those LongWrapper objects can be passed to the various methods on this instance to
582
- * read specific rows or cells out of the table.
433
+ * Javascript wrapper for {@link io.deephaven.web.shared.data.ColumnStatistics} This class holds the results of a call to generate statistics on a
434
+ * table column.
583
435
  */
584
- export interface SubscriptionTableData extends TableData {
585
- get fullIndex():RangeSet;
436
+ export interface ColumnStatistics {
586
437
  /**
587
- * The ordered set of row indexes removed since the last update
588
- * @return dh.RangeSet
438
+ * Gets the type of formatting that should be used for given statistic.
439
+ * <p>
440
+ * the format type for a statistic. A null return value means that the column formatting should be used.
441
+ * @param name - the display name of the statistic
442
+ * @return String
589
443
  */
590
- get removed():RangeSet;
444
+ getType(name:string):string;
591
445
  /**
592
- * The ordered set of row indexes added since the last update
593
- * @return dh.RangeSet
446
+ * Gets a map with the name of each unique value as key and the count as the value. A map of each unique value's
447
+ * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
448
+ * than 19 unique values.
449
+ * @return Map of String double
594
450
  */
595
- get added():RangeSet;
596
- get columns():Array<Column>;
451
+ get uniqueValues():Map<string, number>;
597
452
  /**
598
- * The ordered set of row indexes updated since the last update
599
- * @return dh.RangeSet
600
- */
453
+ * Gets a map with the display name of statistics as keys and the numeric stat as a value.
454
+ * <p>
455
+ * A map of each statistic's name to its value.
456
+ * @return Map of String and Object
457
+ */
458
+ get statisticsMap():Map<string, object>;
459
+ }
460
+ export interface ColumnGroup {
461
+ get name():string|null;
462
+ get children():string[]|null;
463
+ get color():string|null;
464
+ }
465
+ export interface WorkerHeapInfo {
466
+ /**
467
+ * Total heap size available for this worker.
468
+ */
469
+ get totalHeapSize():number;
470
+ get freeMemory():number;
471
+ get maximumHeapSize():number;
472
+ }
473
+ export interface RefreshToken {
474
+ get bytes():string;
475
+ get expiry():number;
476
+ }
477
+ /**
478
+ * Wrap LocalDate values for use in JS. Provides text formatting for display and access to the underlying value.
479
+ */
480
+ export interface LocalDateWrapper {
481
+ valueOf():string;
482
+ getYear():number;
483
+ getMonthValue():number;
484
+ getDayOfMonth():number;
485
+ toString():string;
486
+ }
487
+ /**
488
+ * Represents a server-side object that may not yet have been fetched by the client. When this object will no longer be
489
+ * used, if {@link fetch} is not called on this object, then {@link close} must be to ensure server-side resources
490
+ * are correctly freed.
491
+ */
492
+ export interface WidgetExportedObject {
493
+ /**
494
+ * Returns the type of this export, typically one of {@link dh.VariableType}, but may also include plugin types. If
495
+ * null, this object cannot be fetched, but can be passed to the server, such as via
496
+ * {@link Widget.sendMessage}.
497
+ * @return the string type of this server-side object, or null.
498
+ */
499
+ readonly type?:string|null;
500
+
501
+ /**
502
+ * Exports another copy of this reference, allowing it to be fetched separately. Results in rejection if the ticket
503
+ * was already closed (either by calling {@link WidgetExportedObject.close} or closing the object returned from {@link WidgetExportedObject.fetch}).
504
+ * @return a promise returning a reexported copy of this object, still referencing the same server-side object.
505
+ */
506
+ reexport():Promise<WidgetExportedObject>;
507
+ /**
508
+ * Returns a promise that will fetch the object represented by this reference. Multiple calls to this will return
509
+ * the same instance.
510
+ * @return a promise that will resolve to a client side object that represents the reference on the server.
511
+ */
512
+ fetch():Promise<any>;
513
+ /**
514
+ * Releases the server-side resources associated with this object, regardless of whether other client-side objects
515
+ * exist that also use that object. Should not be called after fetch() has been invoked.
516
+ */
517
+ close():void;
518
+ }
519
+ export interface TreeViewportData extends TableData {
520
+ get offset():number;
521
+ get columns():Array<Column>;
522
+ get rows():Array<TreeRow>;
523
+ }
524
+ /**
525
+ * Event data, describing the indexes that were added/removed/updated, and providing access to Rows (and thus data
526
+ * in columns) either by index, or scanning the complete present index.
527
+ *
528
+ * This class supports two ways of reading the table - checking the changes made since the last update, and reading
529
+ * all data currently in the table. While it is more expensive to always iterate over every single row in the table,
530
+ * it may in some cases actually be cheaper than maintaining state separately and updating only the changes, though
531
+ * both options should be considered.
532
+ *
533
+ * The RangeSet objects allow iterating over the LongWrapper indexes in the table. Note that these "indexes" are not
534
+ * necessarily contiguous and may be negative, and represent some internal state on the server, allowing it to keep
535
+ * track of data efficiently. Those LongWrapper objects can be passed to the various methods on this instance to
536
+ * read specific rows or cells out of the table.
537
+ */
538
+ export interface SubscriptionTableData extends TableData {
539
+ get fullIndex():RangeSet;
540
+ /**
541
+ * The ordered set of row indexes removed since the last update
542
+ * @return dh.RangeSet
543
+ */
544
+ get removed():RangeSet;
545
+ /**
546
+ * The ordered set of row indexes added since the last update
547
+ * @return dh.RangeSet
548
+ */
549
+ get added():RangeSet;
550
+ get columns():Array<Column>;
551
+ /**
552
+ * The ordered set of row indexes updated since the last update
553
+ * @return dh.RangeSet
554
+ */
601
555
  get modified():RangeSet;
602
556
  get rows():Array<Row>;
603
557
  }
@@ -621,11 +575,6 @@ export namespace dh {
621
575
  */
622
576
  removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
623
577
  }
624
- export interface TreeViewportData extends TableData {
625
- get offset():number;
626
- get columns():Array<Column>;
627
- get rows():Array<TreeRow>;
628
- }
629
578
  /**
630
579
  * This object may be pooled internally or discarded and not updated. Do not retain references to it. Instead, request
631
580
  * the viewport again.
@@ -634,387 +583,520 @@ export namespace dh {
634
583
  get index():LongWrapper;
635
584
  }
636
585
  /**
637
- * Row implementation that also provides additional read-only properties. represents visible rows in the table,
638
- * but with additional properties to reflect the tree structure.
586
+ * Represents a table which can be joined to another table. Current implementations are {@link dh.Table} and
587
+ * {@link dh.TotalsTable}.
639
588
  */
640
- export interface TreeRow extends ViewportRow {
589
+ export interface JoinableTable {
590
+ freeze():Promise<Table>;
591
+ snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
641
592
  /**
642
- * True if this node is currently expanded to show its children; false otherwise. Those children will be the
643
- * rows below this one with a greater depth than this one
644
- * @return boolean
593
+ * Joins this table to the provided table, using one of the specified join types:
594
+ * <ul>
595
+ * <li><code>AJ</code>, <code>ReverseAJ</code> (or <code>RAJ</code>) - inexact timeseries joins, based on the
596
+ * provided matching rule.</li>
597
+ * <li><code>CROSS_JOIN</code> (or <code>Join</code>) - cross join of all rows that have matching values in both
598
+ * tables.</li>
599
+ * <li><code>EXACT_JOIN</code> (or <code>ExactJoin</code> - matches values in exactly one row in the right table,
600
+ * with errors if there is not exactly one.</li>
601
+ * <li><code>NATURAL_JOIN</code> (or <code>Natural</code> - matches values in at most one row in the right table,
602
+ * with nulls if there is no match or errors if there are multiple matches.</li>
603
+ * </ul>
604
+ *
605
+ * Note that <code>Left</code> join is not supported here, unlike DHE.
606
+ * <p>
607
+ * See the <a href="https://deephaven.io/core/docs/conceptual/choose-joins/">Choose a join method</a> document for
608
+ * more guidance on picking a join operation.
609
+ * @deprecated Instead, call the specific method for the join type.
610
+ * @param joinType - The type of join to perform, see the list above.
611
+ * @param rightTable - The table to match to values in this table
612
+ * @param columnsToMatch - Columns that should match
613
+ * @param columnsToAdd - Columns from the right table to add to the result - empty/null/absent to add all columns
614
+ * @param asOfMatchRule - If joinType is AJ/RAJ/ReverseAJ, the match rule to use
615
+ * @return a promise that will resolve to the joined table
645
616
  */
646
- get isExpanded():boolean;
617
+ join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
647
618
  /**
648
- * The number of levels above this node; zero for top level nodes. Generally used by the UI to indent the
649
- * row and its expand/collapse icon
650
- * @return int
619
+ * Performs an inexact timeseries join, where rows in this table will have columns added from the closest matching
620
+ * row from the right table.
621
+ * <p>
622
+ * The `asOfMatchRule` value can be one of:
623
+ * <ul>
624
+ * <li>LESS_THAN_EQUAL</li>
625
+ * <li>LESS_THAN</li>
626
+ * <li>GREATER_THAN_EQUAL</li>
627
+ * <li>GREATER_THAN</li>
628
+ * </ul>
629
+ * @param rightTable - the table to match to values in this table
630
+ * @param columnsToMatch - the columns that should match, according to the asOfMatchRole
631
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
632
+ * columns
633
+ * @param asOfMatchRule - the match rule to use, see above
634
+ * @return a promise that will resolve to the joined table
651
635
  */
652
- get depth():number;
636
+ asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
653
637
  /**
654
- * True if this node has children and can be expanded; false otherwise. Note that this value may change when
655
- * the table updates, depending on the table's configuration
656
- * @return boolean
638
+ * a promise that will be resolved with the newly created table holding the results of the specified cross join
639
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
640
+ * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
641
+ * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
642
+ * @param rightTable - the table to match to values in this table
643
+ * @param columnsToMatch - the columns that should match exactly
644
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
645
+ * columns
646
+ * @param reserveBits - the number of bits of key-space to initially reserve per group, null/absent will let the
647
+ * server select a value
648
+ * @return a promise that will resolve to the joined table
657
649
  */
658
- get hasChildren():boolean;
659
- get index():LongWrapper;
660
- }
661
- export interface WorkerHeapInfo {
650
+ crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
662
651
  /**
663
- * Total heap size available for this worker.
652
+ * a promise that will be resolved with the newly created table holding the results of the specified exact join
653
+ * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
654
+ * table being added to the output.
655
+ * @param rightTable - the table to match to values in this table
656
+ * @param columnsToMatch - the columns that should match exactly
657
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
658
+ * columns
659
+ * @return a promise that will resolve to the joined table
664
660
  */
665
- get totalHeapSize():number;
666
- get freeMemory():number;
667
- get maximumHeapSize():number;
661
+ exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
662
+ /**
663
+ * a promise that will be resolved with the newly created table holding the results of the specified natural join
664
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
665
+ * right table being added to the output.
666
+ * @param rightTable - the table to match to values in this table
667
+ * @param columnsToMatch - the columns that should match exactly
668
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
669
+ * columns
670
+ * @return a promise that will resolve to the joined table
671
+ */
672
+ naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
668
673
  }
669
- export interface ColumnGroup {
670
- get name():string|null;
671
- get children():string[]|null;
672
- get color():string|null;
674
+
675
+ /**
676
+ * Event fired when a command is issued from the client.
677
+ */
678
+ export class CommandInfo {
679
+ constructor(code:string, result:Promise<dh.ide.CommandResult>);
680
+
681
+ get result():Promise<dh.ide.CommandResult>;
682
+ get code():string;
673
683
  }
674
684
 
675
685
  /**
676
- * Describes a Sort present on the table. No visible constructor, created through the use of Column.sort(), will be tied
677
- * to that particular column data. Sort instances are immutable, and use a builder pattern to make modifications. All
678
- * methods return a new Sort instance.
686
+ * Deprecated for use in Deephaven Core.
687
+ * @deprecated
679
688
  */
680
- export class Sort {
681
- static readonly ASCENDING:string;
682
- static readonly DESCENDING:string;
683
- static readonly REVERSE:string;
689
+ export class Client {
690
+ static readonly EVENT_REQUEST_FAILED:string;
691
+ static readonly EVENT_REQUEST_STARTED:string;
692
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
684
693
 
685
- protected constructor();
694
+ constructor();
695
+ }
696
+
697
+ export class Ide {
698
+ constructor();
686
699
 
687
700
  /**
688
- * Builds a Sort instance to sort values in ascending order.
689
- * @return {@link dh.Sort}
690
- */
691
- asc():Sort;
692
- /**
693
- * Builds a Sort instance to sort values in descending order.
694
- * @return {@link dh.Sort}
701
+ * @deprecated
695
702
  */
696
- desc():Sort;
703
+ getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
697
704
  /**
698
- * Builds a Sort instance which takes the absolute value before applying order.
699
- * @return {@link dh.Sort}
705
+ * @deprecated
700
706
  */
701
- abs():Sort;
702
- toString():string;
703
- /**
704
- * True if the absolute value of the column should be used when sorting; defaults to false.
705
- * @return boolean
706
- */
707
- get isAbs():boolean;
708
- /**
709
- * The column which is sorted.
710
- * @return {@link dh.Column}
711
- */
712
- get column():Column;
713
- /**
714
- * The direction of this sort, either <b>ASC</b>, <b>DESC</b>, or <b>REVERSE</b>.
715
- * @return String
716
- */
717
- get direction():string;
707
+ static getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
718
708
  }
719
709
 
720
- /**
721
- * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
722
- */
723
- export class BigIntegerWrapper {
710
+ export class CustomColumn {
711
+ static readonly TYPE_FORMAT_COLOR:string;
712
+ static readonly TYPE_FORMAT_NUMBER:string;
713
+ static readonly TYPE_FORMAT_DATE:string;
714
+ static readonly TYPE_NEW:string;
715
+
724
716
  protected constructor();
725
717
 
726
- static ofString(str:string):BigIntegerWrapper;
727
- asNumber():number;
728
718
  valueOf():string;
729
719
  toString():string;
730
- }
731
-
732
- /**
733
- * Event fired when a command is issued from the client.
734
- */
735
- export class CommandInfo {
736
- constructor(code:string, result:Promise<dh.ide.CommandResult>);
737
-
738
- get result():Promise<dh.ide.CommandResult>;
739
- get code():string;
740
- }
741
-
742
- /**
743
- * Describes data that can be filtered, either a column reference or a literal value. Used this way, the type of a value
744
- * can be specified so that values which are ambiguous or not well supported in JS will not be confused with Strings or
745
- * imprecise numbers (e.g., nanosecond-precision date values). Additionally, once wrapped in this way, methods can be
746
- * called on these value literal instances. These instances are immutable - any method called on them returns a new
747
- * instance.
748
- */
749
- export class FilterValue {
750
- protected constructor();
751
-
752
- /**
753
- * Constructs a number for the filter API from the given parameter. Can also be used on the values returned from
754
- * {@link TableData.get} for DateTime values. To create
755
- * a filter with a date, use <b>dh.DateWrapper.ofJsDate</b> or
756
- * {@link i18n.DateTimeFormat.parse}. To create a filter with a
757
- * 64-bit long integer, use {@link LongWrapper.ofString}.
758
- * @param input - the number to wrap as a FilterValue
759
- * @return an immutable FilterValue that can be built into a filter
760
- */
761
- static ofNumber(input:LongWrapper|number):FilterValue;
762
- /**
763
- * a filter condition checking if the current value is equal to the given parameter
764
- * @param term -
765
- * @return {@link dh.FilterCondition}
766
- */
767
- eq(term:FilterValue):FilterCondition;
768
720
  /**
769
- * a filter condition checking if the current value is equal to the given parameter, ignoring differences of upper
770
- * vs lower case
771
- * @param term -
772
- * @return {@link dh.FilterCondition}
773
- */
774
- eqIgnoreCase(term:FilterValue):FilterCondition;
775
- /**
776
- * a filter condition checking if the current value is not equal to the given parameter
777
- * @param term -
778
- * @return {@link dh.FilterCondition}
721
+ * The expression to evaluate this custom column.
722
+ * @return String
779
723
  */
780
- notEq(term:FilterValue):FilterCondition;
724
+ get expression():string;
781
725
  /**
782
- * a filter condition checking if the current value is not equal to the given parameter, ignoring differences of
783
- * upper vs lower case
784
- * @param term -
785
- * @return {@link dh.FilterCondition}
726
+ * The name of the column to use.
727
+ * @return String
786
728
  */
787
- notEqIgnoreCase(term:FilterValue):FilterCondition;
729
+ get name():string;
788
730
  /**
789
- * a filter condition checking if the current value is greater than the given parameter
790
- * @param term -
791
- * @return {@link dh.FilterCondition}
731
+ * Type of custom column. One of
732
+ *
733
+ * <ul>
734
+ * <li>FORMAT_COLOR</li>
735
+ * <li>FORMAT_NUMBER</li>
736
+ * <li>FORMAT_DATE</li>
737
+ * <li>NEW</li>
738
+ * </ul>
739
+ * @return String
792
740
  */
793
- greaterThan(term:FilterValue):FilterCondition;
741
+ get type():string;
742
+ }
743
+
744
+ /**
745
+ * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
746
+ * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
747
+ *
748
+ * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
749
+ * "private" table instance does, since the original cannot modify the subscription, and the private instance must
750
+ * forward data to it.
751
+ *
752
+ * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
753
+ * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
754
+ * viewports to make it less expensive to compute for large tables.
755
+ */
756
+ export class TableSubscription implements HasEventHandling {
794
757
  /**
795
- * a filter condition checking if the current value is less than the given parameter
796
- * @param term -
797
- * @return {@link dh.FilterCondition}
758
+ * Indicates that some new data is available on the client, either an initial snapshot or a delta update. The
759
+ * <b>detail</b> field of the event will contain a TableSubscriptionEventData detailing what has changed, or
760
+ * allowing access to the entire range of items currently in the subscribed columns.
798
761
  */
799
- lessThan(term:FilterValue):FilterCondition;
762
+ static readonly EVENT_UPDATED:string;
763
+
764
+ protected constructor();
765
+
800
766
  /**
801
- * a filter condition checking if the current value is greater than or equal to the given parameter
802
- * @param term -
803
- * @return {@link dh.FilterCondition}
767
+ * Stops the subscription on the server.
804
768
  */
805
- greaterThanOrEqualTo(term:FilterValue):FilterCondition;
769
+ close():void;
770
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
771
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
772
+ hasListeners(name:string):boolean;
773
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
806
774
  /**
807
- * a filter condition checking if the current value is less than or equal to the given parameter
808
- * @param term -
809
- * @return {@link dh.FilterCondition}
775
+ * The columns that were subscribed to when this subscription was created
776
+ * @return {@link dh.Column}
810
777
  */
811
- lessThanOrEqualTo(term:FilterValue):FilterCondition;
778
+ get columns():Array<Column>;
779
+ }
780
+
781
+ /**
782
+ * A js type for operating on input tables.
783
+ *
784
+ * Represents a User Input Table, which can have data added to it from other sources.
785
+ *
786
+ * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
787
+ * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
788
+ * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
789
+ * before sending the next operation.
790
+ *
791
+ * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
792
+ *
793
+ * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
794
+ * object.
795
+ */
796
+ export class InputTable {
797
+ protected constructor();
798
+
812
799
  /**
813
- * a filter condition checking if the current value is in the given set of values
814
- * @param terms -
815
- * @return {@link dh.FilterCondition}
800
+ * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
801
+ * property at that name and validate it can be put into the given column type.
802
+ * @param row -
803
+ * @param userTimeZone -
804
+ * @return Promise of dh.InputTable
816
805
  */
817
- in(terms:FilterValue[]):FilterCondition;
806
+ addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
818
807
  /**
819
- * a filter condition checking if the current value is in the given set of values, ignoring differences of upper vs
820
- * lower case
821
- * @param terms -
822
- * @return {@link dh.FilterCondition}
808
+ * Add multiple rows to a table.
809
+ * @param rows -
810
+ * @param userTimeZone -
811
+ * @return Promise of dh.InputTable
823
812
  */
824
- inIgnoreCase(terms:FilterValue[]):FilterCondition;
813
+ addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
825
814
  /**
826
- * a filter condition checking that the current value is not in the given set of values
827
- * @param terms -
828
- * @return {@link dh.FilterCondition}
815
+ * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
816
+ * copied, and all key columns must have values filled in. This only copies the current state of the source table;
817
+ * future updates to the source table will not be reflected in the Input Table. The returned promise will be
818
+ * resolved to the same InputTable instance this method was called upon once the server returns.
819
+ * @param tableToAdd -
820
+ * @return Promise of dh.InputTable
829
821
  */
830
- notIn(terms:FilterValue[]):FilterCondition;
822
+ addTable(tableToAdd:Table):Promise<InputTable>;
831
823
  /**
832
- * a filter condition checking that the current value is not in the given set of values, ignoring differences of
833
- * upper vs lower case
834
- * @param terms -
835
- * @return {@link dh.FilterCondition}
824
+ * Add multiple tables to this Input Table.
825
+ * @param tablesToAdd -
826
+ * @return Promise of dh.InputTable
836
827
  */
837
- notInIgnoreCase(terms:FilterValue[]):FilterCondition;
828
+ addTables(tablesToAdd:Table[]):Promise<InputTable>;
838
829
  /**
839
- * a filter condition checking if the given value contains the given string value
840
- * @param term -
841
- * @return {@link dh.FilterCondition}
830
+ * Deletes an entire table from this Input Table. Key columns must match the Input Table.
831
+ * @param tableToDelete -
832
+ * @return Promise of dh.InputTable
842
833
  */
843
- contains(term:FilterValue):FilterCondition;
834
+ deleteTable(tableToDelete:Table):Promise<InputTable>;
844
835
  /**
845
- * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
846
- * lower case
847
- * @param term -
848
- * @return {@link dh.FilterCondition}
836
+ * Delete multiple tables from this Input Table.
837
+ * @param tablesToDelete -
838
+ * @return
849
839
  */
850
- containsIgnoreCase(term:FilterValue):FilterCondition;
840
+ deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
851
841
  /**
852
- * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
853
- * use Java regex syntax
854
- * @param pattern -
855
- * @return {@link dh.FilterCondition}
842
+ * A list of the key columns, by name
843
+ * @return String array.
856
844
  */
857
- matches(pattern:FilterValue):FilterCondition;
845
+ get keys():string[];
858
846
  /**
859
- * a filter condition checking if the given value matches the provided regular expressions string, ignoring
860
- * differences of upper vs lower case. Regex patterns use Java regex syntax
861
- * @param pattern -
862
- * @return {@link dh.FilterCondition}
847
+ * A list of the value columns, by name
848
+ * @return String array.
863
849
  */
864
- matchesIgnoreCase(pattern:FilterValue):FilterCondition;
850
+ get values():string[];
865
851
  /**
866
- * a filter condition checking if the current value is a true boolean
867
- * @return {@link dh.FilterCondition}
852
+ * A list of the key columns.
853
+ * @return Column array.
868
854
  */
869
- isTrue():FilterCondition;
855
+ get keyColumns():Column[];
870
856
  /**
871
- * a filter condition checking if the current value is a false boolean
872
- * @return {@link dh.FilterCondition}
857
+ * A list of the value Column objects
858
+ * @return {@link dh.Column} array.
873
859
  */
874
- isFalse():FilterCondition;
860
+ get valueColumns():Column[];
875
861
  /**
876
- * a filter condition checking if the current value is a null value
877
- * @return {@link dh.FilterCondition}
862
+ * The source table for this Input Table
863
+ * @return dh.table
878
864
  */
879
- isNull():FilterCondition;
880
- /**
881
- * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
882
- * functions that can be invoked on a String:
883
- * <ul>
884
- * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
885
- * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
886
- * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
887
- * regular expression</li>
888
- * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
889
- * <p>
890
- * When invoking against a constant, this should be avoided in favor of FilterValue.contains
891
- * </p>
892
- * </li>
893
- * </ul>
894
- * @param method -
895
- * @param args -
896
- * @return
897
- */
898
- invoke(method:string, ...args:FilterValue[]):FilterCondition;
865
+ get table():Table;
866
+ }
867
+
868
+ export class QueryInfo {
869
+ static readonly EVENT_TABLE_OPENED:string;
870
+ static readonly EVENT_DISCONNECT:string;
871
+ static readonly EVENT_RECONNECT:string;
872
+ static readonly EVENT_CONNECT:string;
873
+
874
+ protected constructor();
875
+ }
876
+
877
+ export class CoreClient implements HasEventHandling {
878
+ static readonly EVENT_CONNECT:string;
879
+ static readonly EVENT_DISCONNECT:string;
880
+ static readonly EVENT_RECONNECT:string;
881
+ static readonly EVENT_RECONNECT_AUTH_FAILED:string;
882
+ static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
883
+ static readonly EVENT_REQUEST_FAILED:string;
884
+ static readonly EVENT_REQUEST_STARTED:string;
885
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
886
+ static readonly LOGIN_TYPE_PASSWORD:string;
887
+ static readonly LOGIN_TYPE_ANONYMOUS:string;
888
+
889
+ constructor(serverUrl:string, connectOptions?:ConnectOptions);
890
+
891
+ running():Promise<CoreClient>;
892
+ getServerUrl():string;
893
+ getAuthConfigValues():Promise<string[][]>;
894
+ login(credentials:LoginCredentials):Promise<void>;
895
+ relogin(token:RefreshToken):Promise<void>;
896
+ onConnected(timeoutInMillis?:number):Promise<void>;
897
+ getServerConfigValues():Promise<string[][]>;
898
+ getStorageService():dh.storage.StorageService;
899
+ getAsIdeConnection():Promise<IdeConnection>;
900
+ disconnect():void;
901
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
902
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
903
+ hasListeners(name:string):boolean;
904
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
905
+ }
906
+
907
+ /**
908
+ * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
909
+ */
910
+ export class BigDecimalWrapper {
911
+ protected constructor();
912
+
913
+ static ofString(value:string):BigDecimalWrapper;
914
+ asNumber():number;
915
+ valueOf():string;
899
916
  toString():string;
900
- /**
901
- * Constructs a string for the filter API from the given parameter.
902
- * @param input -
903
- * @return
904
- */
905
- static ofString(input:any):FilterValue;
906
- /**
907
- * Constructs a boolean for the filter API from the given parameter.
908
- * @param b -
909
- * @return
910
- */
911
- static ofBoolean(b:boolean):FilterValue;
912
917
  }
913
918
 
919
+ export class DateWrapper extends LongWrapper {
920
+ protected constructor();
921
+
922
+ static ofJsDate(date:Date):DateWrapper;
923
+ asDate():Date;
924
+ }
914
925
 
915
- export class LongWrapper {
926
+ /**
927
+ * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
928
+ */
929
+ export class BigIntegerWrapper {
916
930
  protected constructor();
917
931
 
918
- static ofString(str:string):LongWrapper;
932
+ static ofString(str:string):BigIntegerWrapper;
919
933
  asNumber():number;
920
934
  valueOf():string;
921
935
  toString():string;
922
936
  }
923
937
 
924
938
  /**
925
- * Deprecated for use in Deephaven Core.
926
- * @deprecated
939
+ * Configuration object for running Table.treeTable to produce a hierarchical view of a given "flat" table.
940
+ *
941
+ * Like TotalsTableConfig, `TreeTableConfig` supports an operation map indicating how to aggregate the data, as well as
942
+ * an array of column names which will be the layers in the roll-up tree, grouped at each level. An additional optional
943
+ * value can be provided describing the strategy the engine should use when grouping the rows.
927
944
  */
928
- export class Client {
929
- static readonly EVENT_REQUEST_FAILED:string;
930
- static readonly EVENT_REQUEST_STARTED:string;
931
- static readonly EVENT_REQUEST_SUCCEEDED:string;
945
+ export class TreeTableConfig {
946
+ /**
947
+ * The column representing the unique ID for each item
948
+ */
949
+ idColumn:string;
950
+ /**
951
+ * The column representing the parent ID for each item
952
+ */
953
+ parentColumn:string;
954
+ /**
955
+ * Optional parameter indicating if items with an invalid parent ID should be promoted to root. Defaults to false.
956
+ */
957
+ promoteOrphansToRoot:boolean;
932
958
 
933
959
  constructor();
934
960
  }
935
961
 
936
- export class IdeSession implements HasEventHandling {
937
- static readonly EVENT_COMMANDSTARTED:string;
938
- static readonly EVENT_REQUEST_FAILED:string;
962
+ /**
963
+ * Presently optional and not used by the server, this allows the client to specify some authentication details. String
964
+ * authToken <i>- base 64 encoded auth token. String serviceId -</i> The service ID to use for the connection.
965
+ */
966
+ export class ConnectOptions {
967
+ headers:{ [key: string]: string; };
939
968
 
940
- protected constructor();
969
+ constructor();
970
+ }
941
971
 
972
+ /**
973
+ * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
974
+ * indicating how that table was configured when it was declared, and each Totals Table has a similar property
975
+ * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
976
+ * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
977
+ * of <b>TotalsTableConfig</b> will be supplied.
978
+ *
979
+ * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
980
+ * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
981
+ * expected formats.
982
+ */
983
+ export class TotalsTableConfig {
942
984
  /**
943
- * Load the named table, with columns and size information already fully populated.
944
- * @param name -
945
- * @param applyPreviewColumns - optional boolean
946
- * @return {@link Promise} of {@link dh.Table}
985
+ * @deprecated
947
986
  */
948
- getTable(name:string, applyPreviewColumns?:boolean):Promise<Table>;
987
+ static readonly COUNT:string;
949
988
  /**
950
- * Load the named Figure, including its tables and tablemaps as needed.
951
- * @param name -
952
- * @return promise of dh.plot.Figure
989
+ * @deprecated
953
990
  */
954
- getFigure(name:string):Promise<dh.plot.Figure>;
991
+ static readonly MIN:string;
955
992
  /**
956
- * Loads the named tree table or roll-up table, with column data populated. All nodes are collapsed by default, and
957
- * size is presently not available until the viewport is first set.
958
- * @param name -
959
- * @return {@link Promise} of {@link dh.TreeTable}
993
+ * @deprecated
960
994
  */
961
- getTreeTable(name:string):Promise<TreeTable>;
962
- getHierarchicalTable(name:string):Promise<TreeTable>;
963
- getPartitionedTable(name:string):Promise<PartitionedTable>;
964
- getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
965
- newTable(columnNames:string[], types:string[], data:string[][], userTimeZone:string):Promise<Table>;
995
+ static readonly MAX:string;
966
996
  /**
967
- * Merges the given tables into a single table. Assumes all tables have the same structure.
968
- * @param tables -
969
- * @return {@link Promise} of {@link dh.Table}
997
+ * @deprecated
970
998
  */
971
- mergeTables(tables:Table[]):Promise<Table>;
972
- bindTableToVariable(table:Table, name:string):Promise<void>;
973
- subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
974
- close():void;
975
- runCode(code:string):Promise<dh.ide.CommandResult>;
976
- onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
977
- openDocument(params:object):void;
978
- changeDocument(params:object):void;
979
- getCompletionItems(params:object):Promise<Array<dh.lsp.CompletionItem>>;
980
- getSignatureHelp(params:object):Promise<Array<dh.lsp.SignatureInformation>>;
981
- getHover(params:object):Promise<dh.lsp.Hover>;
982
- closeDocument(params:object):void;
999
+ static readonly SUM:string;
983
1000
  /**
984
- * Creates an empty table with the specified number of rows. Optionally columns and types may be specified, but all
985
- * values will be null.
986
- * @param size -
987
- * @return {@link Promise} of {@link dh.Table}
1001
+ * @deprecated
988
1002
  */
989
- emptyTable(size:number):Promise<Table>;
1003
+ static readonly ABS_SUM:string;
990
1004
  /**
991
- * Creates a new table that ticks automatically every "periodNanos" nanoseconds. A start time may be provided; if so
992
- * the table will be populated with the interval from the specified date until now.
993
- * @param periodNanos -
994
- * @param startTime -
995
- * @return {@link Promise} of {@link dh.Table}
1005
+ * @deprecated
996
1006
  */
997
- timeTable(periodNanos:number, startTime?:DateWrapper):Promise<Table>;
998
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
999
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1000
- hasListeners(name:string):boolean;
1001
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1002
- }
1007
+ static readonly VAR:string;
1008
+ /**
1009
+ * @deprecated
1010
+ */
1011
+ static readonly AVG:string;
1012
+ /**
1013
+ * @deprecated
1014
+ */
1015
+ static readonly STD:string;
1016
+ /**
1017
+ * @deprecated
1018
+ */
1019
+ static readonly FIRST:string;
1020
+ /**
1021
+ * @deprecated
1022
+ */
1023
+ static readonly LAST:string;
1024
+ /**
1025
+ * @deprecated
1026
+ */
1027
+ static readonly SKIP:string;
1028
+ /**
1029
+ * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
1030
+ */
1031
+ showTotalsByDefault:boolean;
1032
+ /**
1033
+ * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
1034
+ */
1035
+ showGrandTotalsByDefault:boolean;
1036
+ /**
1037
+ * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
1038
+ */
1039
+ defaultOperation:AggregationOperationType;
1040
+ /**
1041
+ * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
1042
+ * Table. If a column is omitted, the defaultOperation is used.
1043
+ */
1044
+ operationMap:{ [key: string]: Array<AggregationOperationType>; };
1045
+ /**
1046
+ * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
1047
+ * these columns. See also `Table.selectDistinct`.
1048
+ */
1049
+ groupBy:Array<string>;
1003
1050
 
1004
- export class QueryInfo {
1005
- static readonly EVENT_TABLE_OPENED:string;
1006
- static readonly EVENT_DISCONNECT:string;
1007
- static readonly EVENT_RECONNECT:string;
1008
- static readonly EVENT_CONNECT:string;
1051
+ constructor();
1009
1052
 
1010
- protected constructor();
1053
+ toString():string;
1011
1054
  }
1012
1055
 
1013
- /**
1014
- * A Widget represents a server side object that sends one or more responses to the client. The client can then
1015
- * interpret these responses to see what to render, or how to respond.
1016
- * <p>
1017
- * Most custom object types result in a single response being sent to the client, often with other exported objects, but
1056
+ export class LongWrapper {
1057
+ protected constructor();
1058
+
1059
+ static ofString(str:string):LongWrapper;
1060
+ asNumber():number;
1061
+ valueOf():string;
1062
+ toString():string;
1063
+ }
1064
+
1065
+ /**
1066
+ * Describes a grouping and aggregations for a roll-up table. Pass to the <b>Table.rollup</b> function to create a
1067
+ * roll-up table.
1068
+ */
1069
+ export class RollupConfig {
1070
+ /**
1071
+ * Ordered list of columns to group by to form the hierarchy of the resulting roll-up table.
1072
+ */
1073
+ groupingColumns:Array<String>;
1074
+ /**
1075
+ * Mapping from each aggregation name to the ordered list of columns it should be applied to in the resulting
1076
+ * roll-up table.
1077
+ */
1078
+ aggregations:{ [key: string]: Array<AggregationOperationType>; };
1079
+ /**
1080
+ * Optional parameter indicating if an extra leaf node should be added at the bottom of the hierarchy, showing the
1081
+ * rows in the underlying table which make up that grouping. Since these values might be a different type from the
1082
+ * rest of the column, any client code must check if TreeRow.hasChildren = false, and if so, interpret those values
1083
+ * as if they were Column.constituentType instead of Column.type. Defaults to false.
1084
+ */
1085
+ includeConstituents:boolean;
1086
+ includeOriginalColumns?:boolean|null;
1087
+ /**
1088
+ * Optional parameter indicating if original column descriptions should be included. Defaults to true.
1089
+ */
1090
+ includeDescriptions:boolean;
1091
+
1092
+ constructor();
1093
+ }
1094
+
1095
+ /**
1096
+ * A Widget represents a server side object that sends one or more responses to the client. The client can then
1097
+ * interpret these responses to see what to render, or how to respond.
1098
+ * <p>
1099
+ * Most custom object types result in a single response being sent to the client, often with other exported objects, but
1018
1100
  * some will have streamed responses, and allow the client to send follow-up requests of its own. This class's API is
1019
1101
  * backwards compatible, but as such does not offer a way to tell the difference between a streaming or non-streaming
1020
1102
  * object type, the client code that handles the payloads is expected to know what to expect. See
@@ -1101,225 +1183,287 @@ export namespace dh {
1101
1183
  get type():string;
1102
1184
  }
1103
1185
 
1186
+
1104
1187
  /**
1105
- * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
1106
- * indicating how that table was configured when it was declared, and each Totals Table has a similar property
1107
- * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
1108
- * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
1109
- * of <b>TotalsTableConfig</b> will be supplied.
1110
- *
1111
- * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
1112
- * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
1113
- * expected formats.
1188
+ * Provides access to data in a table. Note that several methods present their response through Promises. This allows
1189
+ * the client to both avoid actually connecting to the server until necessary, and also will permit some changes not to
1190
+ * inform the UI right away that they have taken place.
1114
1191
  */
1115
- export class TotalsTableConfig {
1116
- /**
1117
- * @deprecated
1118
- */
1119
- static readonly COUNT:string;
1192
+ export class Table implements JoinableTable, HasEventHandling {
1193
+ readonly description?:string|null;
1194
+ readonly pluginName?:string|null;
1195
+ readonly layoutHints?:null|LayoutHints;
1196
+ static readonly EVENT_SIZECHANGED:string;
1197
+ static readonly EVENT_UPDATED:string;
1198
+ static readonly EVENT_ROWADDED:string;
1199
+ static readonly EVENT_ROWREMOVED:string;
1200
+ static readonly EVENT_ROWUPDATED:string;
1201
+ static readonly EVENT_SORTCHANGED:string;
1202
+ static readonly EVENT_FILTERCHANGED:string;
1203
+ static readonly EVENT_CUSTOMCOLUMNSCHANGED:string;
1204
+ static readonly EVENT_DISCONNECT:string;
1205
+ static readonly EVENT_RECONNECT:string;
1206
+ static readonly EVENT_RECONNECTFAILED:string;
1207
+ static readonly EVENT_REQUEST_FAILED:string;
1208
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
1209
+ static readonly SIZE_UNCOALESCED:number;
1210
+
1211
+ protected constructor();
1212
+
1213
+ batch(userCode:(arg0:unknown)=>void):Promise<Table>;
1120
1214
  /**
1121
- * @deprecated
1215
+ * Retrieve a column by the given name. You should prefer to always retrieve a new Column instance instead of
1216
+ * caching a returned value.
1217
+ * @param key -
1218
+ * @return {@link dh.Column}
1122
1219
  */
1123
- static readonly MIN:string;
1220
+ findColumn(key:string):Column;
1124
1221
  /**
1125
- * @deprecated
1222
+ * Retrieve multiple columns specified by the given names.
1223
+ * @param keys -
1224
+ * @return {@link dh.Column} array
1126
1225
  */
1127
- static readonly MAX:string;
1226
+ findColumns(keys:string[]):Column[];
1227
+ isBlinkTable():boolean;
1128
1228
  /**
1129
- * @deprecated
1229
+ * If .hasInputTable is true, you may call this method to gain access to an InputTable object which can be used to
1230
+ * mutate the data within the table. If the table is not an Input Table, the promise will be immediately rejected.
1231
+ * @return Promise of dh.InputTable
1130
1232
  */
1131
- static readonly SUM:string;
1233
+ inputTable():Promise<InputTable>;
1132
1234
  /**
1133
- * @deprecated
1235
+ * Indicates that this Table instance will no longer be used, and its connection to the server can be cleaned up.
1134
1236
  */
1135
- static readonly ABS_SUM:string;
1237
+ close():void;
1238
+ getAttributes():string[];
1136
1239
  /**
1137
- * @deprecated
1240
+ * null if no property exists, a string if it is an easily serializable property, or a ```Promise
1241
+ * &lt;Table&gt;``` that will either resolve with a table or error out if the object can't be passed to JS.
1242
+ * @param attributeName -
1243
+ * @return Object
1138
1244
  */
1139
- static readonly VAR:string;
1245
+ getAttribute(attributeName:string):unknown|undefined|null;
1140
1246
  /**
1141
- * @deprecated
1247
+ * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
1248
+ * immediately return the new value, but you may receive update events using the old sort before the new sort is
1249
+ * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
1250
+ * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
1251
+ * not.
1252
+ * @param sort -
1253
+ * @return {@link dh.Sort} array
1142
1254
  */
1143
- static readonly AVG:string;
1255
+ applySort(sort:Sort[]):Array<Sort>;
1144
1256
  /**
1145
- * @deprecated
1257
+ * Replace the currently set filters on the table. Returns the previously set value. Note that the filter property
1258
+ * will immediately return the new value, but you may receive update events using the old filter before the new one
1259
+ * is applied, and the <b>filterchanged</b> event fires. Reusing existing, applied filters may enable this to
1260
+ * perform better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b>
1261
+ * will not.
1262
+ * @param filter -
1263
+ * @return {@link dh.FilterCondition} array
1146
1264
  */
1147
- static readonly STD:string;
1265
+ applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1148
1266
  /**
1149
- * @deprecated
1267
+ * used when adding new filter and sort operations to the table, as long as they are present.
1268
+ * @param customColumns -
1269
+ * @return {@link dh.CustomColumn} array
1150
1270
  */
1151
- static readonly FIRST:string;
1271
+ applyCustomColumns(customColumns:Array<string|CustomColumn>):Array<CustomColumn>;
1152
1272
  /**
1153
- * @deprecated
1273
+ * If the columns parameter is not provided, all columns will be used. If the updateIntervalMs parameter is not
1274
+ * provided, a default of one second will be used. Until this is called, no data will be available. Invoking this
1275
+ * will result in events to be fired once data becomes available, starting with an `updated` event and a
1276
+ * <b>rowadded</b> event per row in that range. The returned object allows the viewport to be closed when no longer
1277
+ * needed.
1278
+ * @param firstRow -
1279
+ * @param lastRow -
1280
+ * @param columns -
1281
+ * @param updateIntervalMs -
1282
+ * @return {@link dh.TableViewportSubscription}
1154
1283
  */
1155
- static readonly LAST:string;
1284
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateIntervalMs?:number|undefined|null):TableViewportSubscription;
1156
1285
  /**
1157
- * @deprecated
1286
+ * Gets the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
1287
+ * resolve until that data is ready. If this table is closed before the promise resolves, it will be rejected - to
1288
+ * separate the lifespan of this promise from the table itself, call
1289
+ * {@link TableViewportSubscription.getViewportData} on the result from {@link Table.setViewport}.
1290
+ * @return Promise of {@link dh.TableData}
1158
1291
  */
1159
- static readonly SKIP:string;
1292
+ getViewportData():Promise<TableData>;
1160
1293
  /**
1161
- * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
1294
+ * Creates a subscription to the specified columns, across all rows in the table. The optional parameter
1295
+ * updateIntervalMs may be specified to indicate how often the server should send updates, defaulting to one second
1296
+ * if omitted. Useful for charts or taking a snapshot of the table atomically. The initial snapshot will arrive in a
1297
+ * single event, but later changes will be sent as updates. However, this may still be very expensive to run from a
1298
+ * browser for very large tables. Each call to subscribe creates a new subscription, which must have <b>close()</b>
1299
+ * called on it to stop it, and all events are fired from the TableSubscription instance.
1300
+ * @param columns -
1301
+ * @param updateIntervalMs -
1302
+ * @return {@link dh.TableSubscription}
1162
1303
  */
1163
- showTotalsByDefault:boolean;
1304
+ subscribe(columns:Array<Column>, updateIntervalMs?:number):TableSubscription;
1164
1305
  /**
1165
- * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
1306
+ * a new table containing the distinct tuples of values from the given columns that are present in the original
1307
+ * table. This table can be manipulated as any other table. Sorting is often desired as the default sort is the
1308
+ * order of appearance of values from the original table.
1309
+ * @param columns -
1310
+ * @return Promise of dh.Table
1166
1311
  */
1167
- showGrandTotalsByDefault:boolean;
1312
+ selectDistinct(columns:Column[]):Promise<Table>;
1168
1313
  /**
1169
- * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
1314
+ * Creates a new copy of this table, so it can be sorted and filtered separately, and maintain a different viewport.
1315
+ * @return Promise of dh.Table
1170
1316
  */
1171
- defaultOperation:AggregationOperationType;
1317
+ copy():Promise<Table>;
1172
1318
  /**
1173
- * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
1174
- * Table. If a column is omitted, the defaultOperation is used.
1319
+ * a promise that will resolve to a Totals Table of this table. This table will obey the configurations provided as
1320
+ * a parameter, or will use the table's default if no parameter is provided, and be updated once per second as
1321
+ * necessary. Note that multiple calls to this method will each produce a new TotalsTable which must have close()
1322
+ * called on it when not in use.
1323
+ * @param config -
1324
+ * @return Promise of dh.TotalsTable
1175
1325
  */
1176
- operationMap:{ [key: string]: Array<AggregationOperationType>; };
1326
+ getTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1177
1327
  /**
1178
- * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
1179
- * these columns. See also `Table.selectDistinct`.
1328
+ * a promise that will resolve to a Totals Table of this table, ignoring any filters. See <b>getTotalsTable()</b>
1329
+ * above for more specifics.
1330
+ * @param config -
1331
+ * @return promise of dh.TotalsTable
1180
1332
  */
1181
- groupBy:Array<string>;
1182
-
1183
- constructor();
1184
-
1185
- toString():string;
1186
- }
1187
-
1188
- /**
1189
- * Configuration object for running Table.treeTable to produce a hierarchical view of a given "flat" table.
1190
- *
1191
- * Like TotalsTableConfig, `TreeTableConfig` supports an operation map indicating how to aggregate the data, as well as
1192
- * an array of column names which will be the layers in the roll-up tree, grouped at each level. An additional optional
1193
- * value can be provided describing the strategy the engine should use when grouping the rows.
1194
- */
1195
- export class TreeTableConfig {
1333
+ getGrandTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1196
1334
  /**
1197
- * The column representing the unique ID for each item
1335
+ * a promise that will resolve to a new roll-up <b>TreeTable</b> of this table. Multiple calls to this method will
1336
+ * each produce a new <b>TreeTable</b> which must have close() called on it when not in use.
1337
+ * @param configObject -
1338
+ * @return Promise of dh.TreeTable
1198
1339
  */
1199
- idColumn:string;
1340
+ rollup(configObject:RollupConfig):Promise<TreeTable>;
1200
1341
  /**
1201
- * The column representing the parent ID for each item
1342
+ * a promise that will resolve to a new `TreeTable` of this table. Multiple calls to this method will each produce a
1343
+ * new `TreeTable` which must have close() called on it when not in use.
1344
+ * @param configObject -
1345
+ * @return Promise dh.TreeTable
1202
1346
  */
1203
- parentColumn:string;
1347
+ treeTable(configObject:TreeTableConfig):Promise<TreeTable>;
1204
1348
  /**
1205
- * Optional parameter indicating if items with an invalid parent ID should be promoted to root. Defaults to false.
1349
+ * a "frozen" version of this table (a server-side snapshot of the entire source table). Viewports on the frozen
1350
+ * table will not update. This does not change the original table, and the new table will not have any of the client
1351
+ * side sorts/filters/columns. New client side sorts/filters/columns can be added to the frozen copy.
1352
+ * @return Promise of dh.Table
1206
1353
  */
1207
- promoteOrphansToRoot:boolean;
1208
-
1209
- constructor();
1210
- }
1211
-
1212
- /**
1213
- * Describes a grouping and aggregations for a roll-up table. Pass to the <b>Table.rollup</b> function to create a
1214
- * roll-up table.
1215
- */
1216
- export class RollupConfig {
1354
+ freeze():Promise<Table>;
1355
+ snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
1217
1356
  /**
1218
- * Ordered list of columns to group by to form the hierarchy of the resulting roll-up table.
1357
+ *
1358
+ * @inheritDoc
1359
+ * @deprecated
1219
1360
  */
1220
- groupingColumns:Array<String>;
1361
+ join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
1362
+ asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
1363
+ crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
1364
+ exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1365
+ naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
1366
+ byExternal(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1221
1367
  /**
1222
- * Mapping from each aggregation name to the ordered list of columns it should be applied to in the resulting
1223
- * roll-up table.
1368
+ * Creates a new PartitionedTable from the contents of the current table, partitioning data based on the specified
1369
+ * keys.
1370
+ * @param keys -
1371
+ * @param dropKeys -
1372
+ * @return Promise dh.PartitionedTable
1224
1373
  */
1225
- aggregations:{ [key: string]: Array<AggregationOperationType>; };
1374
+ partitionBy(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1226
1375
  /**
1227
- * Optional parameter indicating if an extra leaf node should be added at the bottom of the hierarchy, showing the
1228
- * rows in the underlying table which make up that grouping. Since these values might be a different type from the
1229
- * rest of the column, any client code must check if TreeRow.hasChildren = false, and if so, interpret those values
1230
- * as if they were Column.constituentType instead of Column.type. Defaults to false.
1376
+ * a promise that will resolve to ColumnStatistics for the column of this table.
1377
+ * @param column -
1378
+ * @return Promise of dh.ColumnStatistics
1231
1379
  */
1232
- includeConstituents:boolean;
1233
- includeOriginalColumns?:boolean|null;
1380
+ getColumnStatistics(column:Column):Promise<ColumnStatistics>;
1234
1381
  /**
1235
- * Optional parameter indicating if original column descriptions should be included. Defaults to true.
1382
+ * Seek the row matching the data provided
1383
+ * @param startingRow - Row to start the seek from
1384
+ * @param column - Column to seek for value on
1385
+ * @param valueType - Type of value provided
1386
+ * @param seekValue - Value to seek
1387
+ * @param insensitive - Optional value to flag a search as case-insensitive. Defaults to `false`.
1388
+ * @param contains - Optional value to have the seek value do a contains search instead of exact equality. Defaults to
1389
+ * `false`.
1390
+ * @param isBackwards - Optional value to seek backwards through the table instead of forwards. Defaults to `false`.
1391
+ * @return A promise that resolves to the row value found.
1236
1392
  */
1237
- includeDescriptions:boolean;
1238
-
1239
- constructor();
1240
- }
1241
-
1242
- /**
1243
- * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
1244
- */
1245
- export class BigDecimalWrapper {
1246
- protected constructor();
1247
-
1248
- static ofString(value:string):BigDecimalWrapper;
1249
- asNumber():number;
1250
- valueOf():string;
1393
+ seekRow(startingRow:number, column:Column, valueType:ValueTypeType, seekValue:any, insensitive?:boolean|undefined|null, contains?:boolean|undefined|null, isBackwards?:boolean|undefined|null):Promise<number>;
1251
1394
  toString():string;
1252
- }
1253
-
1254
- /**
1255
- * Represents a set of Tables each corresponding to some key. The keys are available locally, but a call must be made to
1256
- * the server to get each Table. All tables will have the same structure.
1257
- */
1258
- export class PartitionedTable implements HasEventHandling {
1259
- /**
1260
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1261
- */
1262
- static readonly EVENT_KEYADDED:string;
1263
1395
  /**
1264
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1396
+ * True if this table represents a user Input Table (created by InputTable.newInputTable). When true, you may call
1397
+ * .inputTable() to add or remove data from the underlying table.
1398
+ * @return boolean
1265
1399
  */
1266
- static readonly EVENT_DISCONNECT:string;
1400
+ get hasInputTable():boolean;
1267
1401
  /**
1268
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1402
+ * The columns that are present on this table. This is always all possible columns. If you specify fewer columns in
1403
+ * .setViewport(), you will get only those columns in your ViewportData. <b>Number size</b> The total count of rows
1404
+ * in the table. The size can and will change; see the <b>sizechanged</b> event for details. Size will be negative
1405
+ * in exceptional cases (eg. the table is uncoalesced, see the <b>isUncoalesced</b> property for details).
1406
+ * @return {@link dh.Column} array
1269
1407
  */
1270
- static readonly EVENT_RECONNECT:string;
1408
+ get columns():Array<Column>;
1271
1409
  /**
1272
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1410
+ * The default configuration to be used when building a <b>TotalsTable</b> for this table.
1411
+ * @return dh.TotalsTableConfig
1273
1412
  */
1274
- static readonly EVENT_RECONNECTFAILED:string;
1275
-
1276
- protected constructor();
1277
-
1278
- typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
1413
+ get totalsTableConfig():TotalsTableConfig;
1279
1414
  /**
1280
- * Fetch the table with the given key. If the key does not exist, returns `null`.
1281
- * @param key - The key to fetch. An array of values for each key column, in the same order as the key columns are.
1282
- * @return Promise of dh.Table, or `null` if the key does not exist.
1415
+ * An ordered list of Sorts to apply to the table. To update, call <b>applySort()</b>. Note that this getter will
1416
+ * return the new value immediately, even though it may take a little time to update on the server. You may listen
1417
+ * for the <b>sortchanged</b> event to know when to update the UI.
1418
+ * @return {@link dh.Sort} array
1283
1419
  */
1284
- getTable(key:object):Promise<Table|undefined|null>;
1420
+ get sort():Array<Sort>;
1285
1421
  /**
1286
- * Open a new table that is the result of merging all constituent tables. See
1287
- * {@link io.deephaven.engine.table.PartitionedTable#merge()} for details.
1288
- * @return A merged representation of the constituent tables.
1422
+ * An ordered list of custom column formulas to add to the table, either adding new columns or replacing existing
1423
+ * ones. To update, call <b>applyCustomColumns()</b>.
1424
+ * @return {@link dh.CustomColumn} array
1289
1425
  */
1290
- getMergedTable():Promise<Table>;
1426
+ get customColumns():Array<CustomColumn>;
1291
1427
  /**
1292
- * The set of all currently known keys. This is kept up to date, so getting the list after adding an event listener
1293
- * for <b>keyadded</b> will ensure no keys are missed.
1294
- * @return Set of Object
1428
+ * True if this table may receive updates from the server, including size changed events, updated events after
1429
+ * initial snapshot.
1430
+ * @return boolean
1295
1431
  */
1296
- getKeys():Set<object>;
1432
+ get isRefreshing():boolean;
1297
1433
  /**
1298
- * Fetch a table containing all the valid keys of the partitioned table.
1299
- * @return Promise of a Table
1434
+ * An ordered list of Filters to apply to the table. To update, call applyFilter(). Note that this getter will
1435
+ * return the new value immediately, even though it may take a little time to update on the server. You may listen
1436
+ * for the <b>filterchanged</b> event to know when to update the UI.
1437
+ * @return {@link dh.FilterCondition} array
1300
1438
  */
1301
- getKeyTable():Promise<Table>;
1439
+ get filter():Array<FilterCondition>;
1302
1440
  /**
1303
- * Indicates that this PartitionedTable will no longer be used, removing subcriptions to updated keys, etc. This
1304
- * will not affect tables in use.
1441
+ * The total count of the rows in the table, excluding any filters. Unlike <b>size</b>, changes to this value will
1442
+ * not result in any event. <b>Sort[] sort</b> an ordered list of Sorts to apply to the table. To update, call
1443
+ * applySort(). Note that this getter will return the new value immediately, even though it may take a little time
1444
+ * to update on the server. You may listen for the <b>sortchanged</b> event to know when to update the UI.
1445
+ * @return double
1305
1446
  */
1306
- close():void;
1447
+ get totalSize():number;
1307
1448
  /**
1308
- * The count of known keys.
1309
- * @return int
1449
+ * The total count of rows in the table. The size can and will change; see the <b>sizechanged</b> event for details.
1450
+ * Size will be negative in exceptional cases (e.g., the table is uncoalesced; see the <b>isUncoalesced</b>
1451
+ * property). for details).
1452
+ * @return double
1310
1453
  */
1311
1454
  get size():number;
1312
1455
  /**
1313
- * An array of the columns in the tables that can be retrieved from this partitioned table, including both key and
1314
- * non-key columns.
1315
- * @return Array of Column
1456
+ * True if this table has been closed.
1457
+ * @return boolean
1316
1458
  */
1317
- get columns():Column[];
1459
+ get isClosed():boolean;
1318
1460
  /**
1319
- * An array of all the key columns that the tables are partitioned by.
1320
- * @return Array of Column
1461
+ * Read-only. True if this table is uncoalesced. Set a viewport or filter on the partition columns to coalesce the
1462
+ * table. Check the <b>isPartitionColumn</b> property on the table columns to retrieve the partition columns. Size
1463
+ * will be unavailable until table is coalesced.
1464
+ * @return boolean
1321
1465
  */
1322
- get keyColumns():Column[];
1466
+ get isUncoalesced():boolean;
1323
1467
  /**
1324
1468
  * Listen for events on this object.
1325
1469
  * @param name - the name of the event to listen for
@@ -1338,484 +1482,302 @@ export namespace dh {
1338
1482
  * @typeParam T -
1339
1483
  */
1340
1484
  removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1341
- }
1342
-
1343
- /**
1344
- * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
1345
- * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
1346
- * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
1347
- */
1348
- export class RangeSet {
1349
- protected constructor();
1350
-
1351
- static ofRange(first:number, last:number):RangeSet;
1352
- static ofItems(rows:number[]):RangeSet;
1353
- static ofRanges(ranges:RangeSet[]):RangeSet;
1354
- static ofSortedRanges(ranges:RangeSet[]):RangeSet;
1355
- /**
1356
- * a new iterator over all indexes in this collection.
1357
- * @return Iterator of {@link dh.LongWrapper}
1358
- */
1359
- iterator():Iterator<LongWrapper>;
1360
1485
  /**
1361
- * The total count of items contained in this collection. In some cases this can be expensive to compute, and
1362
- * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
1363
- * property each time through a loop).
1364
- * @return double
1486
+ * a Sort than can be used to reverse a table. This can be passed into n array in applySort. Note that Tree Tables
1487
+ * do not support reverse.
1488
+ * @return {@link dh.Sort}
1365
1489
  */
1366
- get size():number;
1367
- }
1368
-
1369
- export class DateWrapper extends LongWrapper {
1370
- protected constructor();
1371
-
1372
- static ofJsDate(date:Date):DateWrapper;
1373
- asDate():Date;
1490
+ static reverse():Sort;
1374
1491
  }
1375
1492
 
1376
1493
  /**
1377
- * Presently optional and not used by the server, this allows the client to specify some authentication details. String
1378
- * authToken <i>- base 64 encoded auth token. String serviceId -</i> The service ID to use for the connection.
1494
+ * Describes a Sort present on the table. No visible constructor, created through the use of Column.sort(), will be tied
1495
+ * to that particular column data. Sort instances are immutable, and use a builder pattern to make modifications. All
1496
+ * methods return a new Sort instance.
1379
1497
  */
1380
- export class ConnectOptions {
1381
- headers:{ [key: string]: string; };
1498
+ export class Sort {
1499
+ static readonly ASCENDING:string;
1500
+ static readonly DESCENDING:string;
1501
+ static readonly REVERSE:string;
1382
1502
 
1383
- constructor();
1384
- }
1503
+ protected constructor();
1385
1504
 
1386
- /**
1387
- * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
1388
- * mechanism, and so reimplemented here.
1389
- * <p>
1390
- * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
1391
- * <p>
1392
- * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
1393
- * operations are performed, but encourage the client code to re-set them to the desired position.
1394
- * <p>
1395
- * The table size will be -1 until a viewport has been fetched.
1396
- * <p>
1397
- * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
1398
- * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
1399
- * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
1400
- * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
1401
- * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
1402
- * the viewport).
1403
- * <p>
1404
- * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
1405
- * and count of children at each level of the hierarchy, and differences in the data that is available.
1406
- * <p>
1407
- * <ul>
1408
- * <li>There is no {@link Table.totalSize | totalSize} property.</li>
1409
- * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
1410
- * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
1411
- * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
1412
- * new operation is pending.</li>
1413
- * <li>Custom columns are not directly supported. If the TreeTable was created client-side, the original Table can have
1414
- * custom columns applied, and the TreeTable can be recreated.</li>
1415
- * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
1416
- * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
1417
- * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
1418
- * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
1419
- * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
1420
- * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
1421
- * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
1422
- * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
1423
- * where {@link TreeRow.hasChildren} is false will be different from usual.</li>
1424
- * </ul>
1425
- */
1426
- export class TreeTable implements HasEventHandling {
1427
1505
  /**
1428
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1506
+ * Builds a Sort instance to sort values in ascending order.
1507
+ * @return {@link dh.Sort}
1429
1508
  */
1430
- static readonly EVENT_UPDATED:string;
1509
+ asc():Sort;
1431
1510
  /**
1432
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1511
+ * Builds a Sort instance to sort values in descending order.
1512
+ * @return {@link dh.Sort}
1433
1513
  */
1434
- static readonly EVENT_DISCONNECT:string;
1514
+ desc():Sort;
1435
1515
  /**
1436
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1516
+ * Builds a Sort instance which takes the absolute value before applying order.
1517
+ * @return {@link dh.Sort}
1437
1518
  */
1438
- static readonly EVENT_RECONNECT:string;
1519
+ abs():Sort;
1520
+ toString():string;
1439
1521
  /**
1440
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1441
- */
1442
- static readonly EVENT_RECONNECTFAILED:string;
1443
- /**
1444
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1445
- */
1446
- static readonly EVENT_REQUEST_FAILED:string;
1447
- readonly description?:string|null;
1448
- readonly layoutHints?:null|LayoutHints;
1449
-
1450
- protected constructor();
1451
-
1452
- /**
1453
- * Expands the given node, so that its children are visible when they are in the viewport. The parameter can be the
1454
- * row index, or the row object itself. The second parameter is a boolean value, false by default, specifying if the
1455
- * row and all descendants should be fully expanded. Equivalent to `setExpanded(row, true)` with an optional third
1456
- * boolean parameter.
1457
- * @param row -
1458
- * @param expandDescendants -
1459
- */
1460
- expand(row:TreeRow|number, expandDescendants?:boolean):void;
1461
- /**
1462
- * Collapses the given node, so that its children and descendants are not visible in the size or the viewport. The
1463
- * parameter can be the row index, or the row object itself. Equivalent to <b>setExpanded(row, false, false)</b>.
1464
- * @param row -
1465
- */
1466
- collapse(row:TreeRow|number):void;
1467
- /**
1468
- * Specifies if the given node should be expanded or collapsed. If this node has children, and the value is changed,
1469
- * the size of the table will change. If node is to be expanded and the third parameter, <b>expandDescendants</b>,
1470
- * is true, then its children will also be expanded.
1471
- * @param row -
1472
- * @param isExpanded -
1473
- * @param expandDescendants -
1474
- */
1475
- setExpanded(row:TreeRow|number, isExpanded:boolean, expandDescendants?:boolean):void;
1476
- expandAll():void;
1477
- collapseAll():void;
1478
- /**
1479
- * true if the given row is expanded, false otherwise. Equivalent to `TreeRow.isExpanded`, if an instance of the row
1480
- * is available
1481
- * @param row -
1522
+ * True if the absolute value of the column should be used when sorting; defaults to false.
1482
1523
  * @return boolean
1483
1524
  */
1484
- isExpanded(row:TreeRow|number):boolean;
1485
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateInterval?:number|undefined|null):void;
1486
- getViewportData():Promise<TreeViewportData>;
1487
- /**
1488
- * Indicates that the table will no longer be used, and server resources can be freed.
1489
- */
1490
- close():void;
1491
- typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
1492
- /**
1493
- * Applies the given sort to all levels of the tree. Returns the previous sort in use.
1494
- * @param sort -
1495
- * @return {@link dh.Sort} array
1496
- */
1497
- applySort(sort:Sort[]):Array<Sort>;
1498
- /**
1499
- * Applies the given filter to the contents of the tree in such a way that if any node is visible, then any parent
1500
- * node will be visible as well even if that parent node would not normally be visible due to the filter's
1501
- * condition. Returns the previous sort in use.
1502
- * @param filter -
1503
- * @return {@link dh.FilterCondition} array
1504
- */
1505
- applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1525
+ get isAbs():boolean;
1506
1526
  /**
1507
- * a column with the given name, or throws an exception if it cannot be found
1508
- * @param key -
1527
+ * The column which is sorted.
1509
1528
  * @return {@link dh.Column}
1510
1529
  */
1511
- findColumn(key:string):Column;
1530
+ get column():Column;
1512
1531
  /**
1513
- * an array with all of the named columns in order, or throws an exception if one cannot be found.
1514
- * @param keys -
1515
- * @return {@link dh.Column} array
1532
+ * The direction of this sort, either <b>ASC</b>, <b>DESC</b>, or <b>REVERSE</b>.
1533
+ * @return String
1516
1534
  */
1517
- findColumns(keys:string[]):Column[];
1535
+ get direction():string;
1536
+ }
1537
+
1538
+ /**
1539
+ * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
1540
+ * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
1541
+ * instance.
1542
+ */
1543
+ export class FilterCondition {
1544
+ protected constructor();
1545
+
1518
1546
  /**
1519
- * Provides Table-like selectDistinct functionality, but with a few quirks, since it is only fetching the distinct
1520
- * values for the given columns in the source table:
1521
- * <ul>
1522
- * <li>Rollups may make no sense, since values are aggregated.</li>
1523
- * <li>Values found on orphaned (and removed) nodes will show up in the resulting table, even though they are not in
1524
- * the tree.</li>
1525
- * <li>Values found on parent nodes which are only present in the tree since a child is visible will not be present
1526
- * in the resulting table.</li>
1527
- * </ul>
1547
+ * the opposite of this condition
1548
+ * @return FilterCondition
1528
1549
  */
1529
- selectDistinct(columns:Column[]):Promise<Table>;
1530
- getTotalsTableConfig():Promise<TotalsTableConfig>;
1531
- getTotalsTable(config?:object):Promise<TotalsTable>;
1532
- getGrandTotalsTable(config?:object):Promise<TotalsTable>;
1550
+ not():FilterCondition;
1533
1551
  /**
1534
- * a new copy of this treetable, so it can be sorted and filtered separately, and maintain a different viewport.
1535
- * Unlike Table, this will _not_ copy the filter or sort, since tree table viewport semantics differ, and without a
1536
- * viewport set, the treetable doesn't evaluate these settings, and they aren't readable on the properties. Expanded
1537
- * state is also not copied.
1538
- * @return Promise of dh.TreeTable
1552
+ * a condition representing the current condition logically ANDed with the other parameters
1553
+ * @param filters -
1554
+ * @return FilterCondition
1539
1555
  */
1540
- copy():Promise<TreeTable>;
1556
+ and(...filters:FilterCondition[]):FilterCondition;
1541
1557
  /**
1542
- * The current filter configuration of this Tree Table.
1543
- * @return {@link dh.FilterCondition} array
1558
+ * a condition representing the current condition logically ORed with the other parameters
1559
+ * @param filters -
1560
+ * @return FilterCondition.
1544
1561
  */
1545
- get filter():Array<FilterCondition>;
1562
+ or(...filters:FilterCondition[]):FilterCondition;
1546
1563
  /**
1547
- * True if this is a roll-up and will provide the original rows that make up each grouping.
1548
- * @return boolean
1564
+ * a string suitable for debugging showing the details of this condition.
1565
+ * @return String.
1549
1566
  */
1550
- get includeConstituents():boolean;
1551
- get groupedColumns():Array<Column>;
1567
+ toString():string;
1568
+ get columns():Array<Column>;
1552
1569
  /**
1553
- * True if this table has been closed.
1554
- * @return boolean
1570
+ * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
1571
+ * functions:
1572
+ * <ul>
1573
+ * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
1574
+ * than the third</li>
1575
+ * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
1576
+ * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
1577
+ * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
1578
+ * "not a number"</i></li>
1579
+ * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
1580
+ * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
1581
+ * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
1582
+ * expression</li>
1583
+ * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
1584
+ * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
1585
+ * <p>
1586
+ * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
1587
+ * method should be used in other cases
1588
+ * </p>
1589
+ * </li>
1590
+ * </ul>
1591
+ * @param function -
1592
+ * @param args -
1593
+ * @return dh.FilterCondition
1555
1594
  */
1556
- get isClosed():boolean;
1595
+ static invoke(func:string, ...args:FilterValue[]):FilterCondition;
1557
1596
  /**
1558
- * The current number of rows given the table's contents and the various expand/collapse states of each node. (No
1559
- * totalSize is provided at this time; its definition becomes unclear between roll-up and tree tables, especially
1560
- * when considering collapse/expand states).
1561
- * @return double
1597
+ * a filter condition which will check if the given value can be found in any supported column on whatever table
1598
+ * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
1599
+ * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
1600
+ * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
1601
+ * String columns, the given value will match any column which contains this string in a case-insensitive search. An
1602
+ * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
1603
+ * {@link dh.Column.filter}).
1604
+ * @param value -
1605
+ * @param columns -
1606
+ * @return dh.FilterCondition
1562
1607
  */
1563
- get size():number;
1608
+ static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
1609
+ }
1610
+
1611
+ /**
1612
+ * Describes data that can be filtered, either a column reference or a literal value. Used this way, the type of a value
1613
+ * can be specified so that values which are ambiguous or not well supported in JS will not be confused with Strings or
1614
+ * imprecise numbers (e.g., nanosecond-precision date values). Additionally, once wrapped in this way, methods can be
1615
+ * called on these value literal instances. These instances are immutable - any method called on them returns a new
1616
+ * instance.
1617
+ */
1618
+ export class FilterValue {
1619
+ protected constructor();
1620
+
1564
1621
  /**
1565
- * The columns that can be shown in this Tree Table.
1566
- * @return {@link dh.Column} array
1622
+ * Constructs a number for the filter API from the given parameter. Can also be used on the values returned from
1623
+ * {@link TableData.get} for DateTime values. To create
1624
+ * a filter with a date, use <b>dh.DateWrapper.ofJsDate</b> or
1625
+ * {@link i18n.DateTimeFormat.parse}. To create a filter with a
1626
+ * 64-bit long integer, use {@link LongWrapper.ofString}.
1627
+ * @param input - the number to wrap as a FilterValue
1628
+ * @return an immutable FilterValue that can be built into a filter
1567
1629
  */
1568
- get columns():Array<Column>;
1630
+ static ofNumber(input:LongWrapper|number):FilterValue;
1569
1631
  /**
1570
- * The current sort configuration of this Tree Table
1571
- * @return {@link dh.Sort} array.
1632
+ * a filter condition checking if the current value is equal to the given parameter
1633
+ * @param term -
1634
+ * @return {@link dh.FilterCondition}
1572
1635
  */
1573
- get sort():Array<Sort>;
1636
+ eq(term:FilterValue):FilterCondition;
1574
1637
  /**
1575
- * True if this table may receive updates from the server, including size changed events, updated events after
1576
- * initial snapshot.
1577
- * @return boolean
1638
+ * a filter condition checking if the current value is equal to the given parameter, ignoring differences of upper
1639
+ * vs lower case
1640
+ * @param term -
1641
+ * @return {@link dh.FilterCondition}
1578
1642
  */
1579
- get isRefreshing():boolean;
1643
+ eqIgnoreCase(term:FilterValue):FilterCondition;
1580
1644
  /**
1581
- * Listen for events on this object.
1582
- * @param name - the name of the event to listen for
1583
- * @param callback - a function to call when the event occurs
1584
- * @return Returns a cleanup function.
1585
- * @typeParam T - the type of the data that the event will provide
1645
+ * a filter condition checking if the current value is not equal to the given parameter
1646
+ * @param term -
1647
+ * @return {@link dh.FilterCondition}
1586
1648
  */
1587
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1588
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1589
- hasListeners(name:string):boolean;
1649
+ notEq(term:FilterValue):FilterCondition;
1590
1650
  /**
1591
- * Removes an event listener added to this table.
1592
- * @param name -
1593
- * @param callback -
1594
- * @return
1595
- * @typeParam T -
1651
+ * a filter condition checking if the current value is not equal to the given parameter, ignoring differences of
1652
+ * upper vs lower case
1653
+ * @param term -
1654
+ * @return {@link dh.FilterCondition}
1596
1655
  */
1597
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1598
- }
1599
-
1600
- /**
1601
- * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
1602
- * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
1603
- *
1604
- * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
1605
- * "private" table instance does, since the original cannot modify the subscription, and the private instance must
1606
- * forward data to it.
1607
- *
1608
- * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
1609
- * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
1610
- * viewports to make it less expensive to compute for large tables.
1611
- */
1612
- export class TableSubscription implements HasEventHandling {
1656
+ notEqIgnoreCase(term:FilterValue):FilterCondition;
1613
1657
  /**
1614
- * Indicates that some new data is available on the client, either an initial snapshot or a delta update. The
1615
- * <b>detail</b> field of the event will contain a TableSubscriptionEventData detailing what has changed, or
1616
- * allowing access to the entire range of items currently in the subscribed columns.
1658
+ * a filter condition checking if the current value is greater than the given parameter
1659
+ * @param term -
1660
+ * @return {@link dh.FilterCondition}
1617
1661
  */
1618
- static readonly EVENT_UPDATED:string;
1619
-
1620
- protected constructor();
1621
-
1662
+ greaterThan(term:FilterValue):FilterCondition;
1622
1663
  /**
1623
- * Stops the subscription on the server.
1664
+ * a filter condition checking if the current value is less than the given parameter
1665
+ * @param term -
1666
+ * @return {@link dh.FilterCondition}
1624
1667
  */
1625
- close():void;
1626
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1627
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1628
- hasListeners(name:string):boolean;
1629
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1668
+ lessThan(term:FilterValue):FilterCondition;
1630
1669
  /**
1631
- * The columns that were subscribed to when this subscription was created
1632
- * @return {@link dh.Column}
1670
+ * a filter condition checking if the current value is greater than or equal to the given parameter
1671
+ * @param term -
1672
+ * @return {@link dh.FilterCondition}
1633
1673
  */
1634
- get columns():Array<Column>;
1635
- }
1636
-
1637
- export class Ide {
1638
- constructor();
1639
-
1674
+ greaterThanOrEqualTo(term:FilterValue):FilterCondition;
1640
1675
  /**
1641
- * @deprecated
1676
+ * a filter condition checking if the current value is less than or equal to the given parameter
1677
+ * @param term -
1678
+ * @return {@link dh.FilterCondition}
1642
1679
  */
1643
- getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
1680
+ lessThanOrEqualTo(term:FilterValue):FilterCondition;
1644
1681
  /**
1645
- * @deprecated
1682
+ * a filter condition checking if the current value is in the given set of values
1683
+ * @param terms -
1684
+ * @return {@link dh.FilterCondition}
1646
1685
  */
1647
- static getExistingSession(websocketUrl:string, authToken:string, serviceId:string, language:string):Promise<IdeSession>;
1648
- }
1649
-
1650
- export class LoginCredentials {
1651
- type?:string|null;
1652
- username?:string|null;
1653
- token?:string|null;
1654
-
1655
- constructor();
1656
- }
1657
-
1658
- export class CoreClient implements HasEventHandling {
1659
- static readonly EVENT_CONNECT:string;
1660
- static readonly EVENT_DISCONNECT:string;
1661
- static readonly EVENT_RECONNECT:string;
1662
- static readonly EVENT_RECONNECT_AUTH_FAILED:string;
1663
- static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
1664
- static readonly EVENT_REQUEST_FAILED:string;
1665
- static readonly EVENT_REQUEST_STARTED:string;
1666
- static readonly EVENT_REQUEST_SUCCEEDED:string;
1667
- static readonly LOGIN_TYPE_PASSWORD:string;
1668
- static readonly LOGIN_TYPE_ANONYMOUS:string;
1669
-
1670
- constructor(serverUrl:string, connectOptions?:ConnectOptions);
1671
-
1672
- running():Promise<CoreClient>;
1673
- getServerUrl():string;
1674
- getAuthConfigValues():Promise<string[][]>;
1675
- login(credentials:LoginCredentials):Promise<void>;
1676
- relogin(token:RefreshToken):Promise<void>;
1677
- onConnected(timeoutInMillis?:number):Promise<void>;
1678
- getServerConfigValues():Promise<string[][]>;
1679
- getStorageService():dh.storage.StorageService;
1680
- getAsIdeConnection():Promise<IdeConnection>;
1681
- disconnect():void;
1682
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1683
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1684
- hasListeners(name:string):boolean;
1685
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1686
- }
1687
-
1688
- /**
1689
- * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
1690
- * some options, JS applications can run code on the server, and interact with available exportable objects.
1691
- */
1692
- export class IdeConnection implements HasEventHandling {
1686
+ in(terms:FilterValue[]):FilterCondition;
1693
1687
  /**
1694
- * @deprecated
1688
+ * a filter condition checking if the current value is in the given set of values, ignoring differences of upper vs
1689
+ * lower case
1690
+ * @param terms -
1691
+ * @return {@link dh.FilterCondition}
1695
1692
  */
1696
- static readonly HACK_CONNECTION_FAILURE:string;
1697
- static readonly EVENT_DISCONNECT:string;
1698
- static readonly EVENT_RECONNECT:string;
1699
- static readonly EVENT_SHUTDOWN:string;
1700
-
1693
+ inIgnoreCase(terms:FilterValue[]):FilterCondition;
1701
1694
  /**
1702
- * creates a new instance, from which console sessions can be made. <b>options</b> are optional.
1703
- * @param serverUrl - The url used when connecting to the server. Read-only.
1704
- * @param connectOptions - Optional Object
1705
- * @param fromJava - Optional boolean
1706
- * @deprecated
1695
+ * a filter condition checking that the current value is not in the given set of values
1696
+ * @param terms -
1697
+ * @return {@link dh.FilterCondition}
1707
1698
  */
1708
- constructor(serverUrl:string, connectOptions?:ConnectOptions, fromJava?:boolean);
1709
-
1699
+ notIn(terms:FilterValue[]):FilterCondition;
1710
1700
  /**
1711
- * closes the current connection, releasing any resources on the server or client.
1701
+ * a filter condition checking that the current value is not in the given set of values, ignoring differences of
1702
+ * upper vs lower case
1703
+ * @param terms -
1704
+ * @return {@link dh.FilterCondition}
1712
1705
  */
1713
- close():void;
1714
- running():Promise<IdeConnection>;
1715
- getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
1716
- subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
1706
+ notInIgnoreCase(terms:FilterValue[]):FilterCondition;
1717
1707
  /**
1718
- * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
1719
- * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
1720
- * log messages as are presently available.
1721
- * @param callback -
1722
- * @return {@link io.deephaven.web.shared.fu.JsRunnable}
1708
+ * a filter condition checking if the given value contains the given string value
1709
+ * @param term -
1710
+ * @return {@link dh.FilterCondition}
1723
1711
  */
1724
- onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
1725
- startSession(type:string):Promise<IdeSession>;
1726
- getConsoleTypes():Promise<Array<string>>;
1727
- getWorkerHeapInfo():Promise<WorkerHeapInfo>;
1712
+ contains(term:FilterValue):FilterCondition;
1728
1713
  /**
1729
- * Listen for events on this object.
1730
- * @param name - the name of the event to listen for
1731
- * @param callback - a function to call when the event occurs
1732
- * @return Returns a cleanup function.
1733
- * @typeParam T - the type of the data that the event will provide
1714
+ * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
1715
+ * lower case
1716
+ * @param term -
1717
+ * @return {@link dh.FilterCondition}
1734
1718
  */
1735
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
1736
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
1737
- hasListeners(name:string):boolean;
1719
+ containsIgnoreCase(term:FilterValue):FilterCondition;
1738
1720
  /**
1739
- * Removes an event listener added to this table.
1740
- * @param name -
1741
- * @param callback -
1742
- * @return
1743
- * @typeParam T -
1721
+ * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
1722
+ * use Java regex syntax
1723
+ * @param pattern -
1724
+ * @return {@link dh.FilterCondition}
1744
1725
  */
1745
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
1746
- }
1747
-
1748
- /**
1749
- * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
1750
- * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
1751
- * instance.
1752
- */
1753
- export class FilterCondition {
1754
- protected constructor();
1755
-
1726
+ matches(pattern:FilterValue):FilterCondition;
1756
1727
  /**
1757
- * the opposite of this condition
1758
- * @return FilterCondition
1728
+ * a filter condition checking if the given value matches the provided regular expressions string, ignoring
1729
+ * differences of upper vs lower case. Regex patterns use Java regex syntax
1730
+ * @param pattern -
1731
+ * @return {@link dh.FilterCondition}
1759
1732
  */
1760
- not():FilterCondition;
1733
+ matchesIgnoreCase(pattern:FilterValue):FilterCondition;
1761
1734
  /**
1762
- * a condition representing the current condition logically ANDed with the other parameters
1763
- * @param filters -
1764
- * @return FilterCondition
1735
+ * a filter condition checking if the current value is a true boolean
1736
+ * @return {@link dh.FilterCondition}
1765
1737
  */
1766
- and(...filters:FilterCondition[]):FilterCondition;
1738
+ isTrue():FilterCondition;
1767
1739
  /**
1768
- * a condition representing the current condition logically ORed with the other parameters
1769
- * @param filters -
1770
- * @return FilterCondition.
1740
+ * a filter condition checking if the current value is a false boolean
1741
+ * @return {@link dh.FilterCondition}
1771
1742
  */
1772
- or(...filters:FilterCondition[]):FilterCondition;
1743
+ isFalse():FilterCondition;
1773
1744
  /**
1774
- * a string suitable for debugging showing the details of this condition.
1775
- * @return String.
1745
+ * a filter condition checking if the current value is a null value
1746
+ * @return {@link dh.FilterCondition}
1776
1747
  */
1777
- toString():string;
1778
- get columns():Array<Column>;
1748
+ isNull():FilterCondition;
1779
1749
  /**
1780
- * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
1781
- * functions:
1750
+ * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
1751
+ * functions that can be invoked on a String:
1782
1752
  * <ul>
1783
- * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
1784
- * than the third</li>
1785
- * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
1786
- * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
1787
- * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
1788
- * "not a number"</i></li>
1789
- * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
1790
- * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
1791
- * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
1792
- * expression</li>
1793
- * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
1794
- * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
1753
+ * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
1754
+ * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
1755
+ * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
1756
+ * regular expression</li>
1757
+ * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
1795
1758
  * <p>
1796
- * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
1797
- * method should be used in other cases
1759
+ * When invoking against a constant, this should be avoided in favor of FilterValue.contains
1798
1760
  * </p>
1799
1761
  * </li>
1800
1762
  * </ul>
1801
- * @param function -
1763
+ * @param method -
1802
1764
  * @param args -
1803
- * @return dh.FilterCondition
1765
+ * @return
1804
1766
  */
1805
- static invoke(func:string, ...args:FilterValue[]):FilterCondition;
1767
+ invoke(method:string, ...args:FilterValue[]):FilterCondition;
1768
+ toString():string;
1806
1769
  /**
1807
- * a filter condition which will check if the given value can be found in any supported column on whatever table
1808
- * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
1809
- * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
1810
- * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
1811
- * String columns, the given value will match any column which contains this string in a case-insensitive search. An
1812
- * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
1813
- * {@link dh.Column.filter}).
1814
- * @param value -
1815
- * @param columns -
1816
- * @return dh.FilterCondition
1770
+ * Constructs a string for the filter API from the given parameter.
1771
+ * @param input -
1772
+ * @return
1817
1773
  */
1818
- static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
1774
+ static ofString(input:any):FilterValue;
1775
+ /**
1776
+ * Constructs a boolean for the filter API from the given parameter.
1777
+ * @param b -
1778
+ * @return
1779
+ */
1780
+ static ofBoolean(b:boolean):FilterValue;
1819
1781
  }
1820
1782
 
1821
1783
  /**
@@ -1833,285 +1795,290 @@ export namespace dh {
1833
1795
  }
1834
1796
 
1835
1797
  /**
1836
- * Provides access to data in a table. Note that several methods present their response through Promises. This allows
1837
- * the client to both avoid actually connecting to the server until necessary, and also will permit some changes not to
1838
- * inform the UI right away that they have taken place.
1798
+ * Describes the structure of the column, and if desired can be used to get access to the data to be rendered in this
1799
+ * column.
1839
1800
  */
1840
- export class Table implements JoinableTable, HasEventHandling {
1801
+ export class Column {
1802
+ /**
1803
+ * If this column is part of a roll-up tree table, represents the type of the row data that can be found in this
1804
+ * column for leaf nodes if includeConstituents is enabled. Otherwise, it is <b>null</b>.
1805
+ * @return String
1806
+ */
1807
+ readonly constituentType?:string|null;
1841
1808
  readonly description?:string|null;
1842
- readonly pluginName?:string|null;
1843
- readonly layoutHints?:null|LayoutHints;
1844
- static readonly EVENT_SIZECHANGED:string;
1845
- static readonly EVENT_UPDATED:string;
1846
- static readonly EVENT_ROWADDED:string;
1847
- static readonly EVENT_ROWREMOVED:string;
1848
- static readonly EVENT_ROWUPDATED:string;
1849
- static readonly EVENT_SORTCHANGED:string;
1850
- static readonly EVENT_FILTERCHANGED:string;
1851
- static readonly EVENT_CUSTOMCOLUMNSCHANGED:string;
1852
- static readonly EVENT_DISCONNECT:string;
1853
- static readonly EVENT_RECONNECT:string;
1854
- static readonly EVENT_RECONNECTFAILED:string;
1855
- static readonly EVENT_REQUEST_FAILED:string;
1856
- static readonly EVENT_REQUEST_SUCCEEDED:string;
1857
- static readonly SIZE_UNCOALESCED:number;
1858
1809
 
1859
1810
  protected constructor();
1860
1811
 
1861
- batch(userCode:(arg0:unknown)=>void):Promise<Table>;
1862
1812
  /**
1863
- * Retrieve a column by the given name. You should prefer to always retrieve a new Column instance instead of
1864
- * caching a returned value.
1865
- * @param key -
1866
- * @return {@link dh.Column}
1813
+ * the value for this column in the given row. Type will be consistent with the type of the Column.
1814
+ * @param row -
1815
+ * @return Any
1867
1816
  */
1868
- findColumn(key:string):Column;
1817
+ get(row:Row):any;
1818
+ getFormat(row:Row):Format;
1869
1819
  /**
1870
- * Retrieve multiple columns specified by the given names.
1871
- * @param keys -
1872
- * @return {@link dh.Column} array
1820
+ * Creates a sort builder object, to be used when sorting by this column.
1821
+ * @return {@link dh.Sort}
1873
1822
  */
1874
- findColumns(keys:string[]):Column[];
1875
- isBlinkTable():boolean;
1823
+ sort():Sort;
1876
1824
  /**
1877
- * If .hasInputTable is true, you may call this method to gain access to an InputTable object which can be used to
1878
- * mutate the data within the table. If the table is not an Input Table, the promise will be immediately rejected.
1879
- * @return Promise of dh.InputTable
1825
+ * Creates a new value for use in filters based on this column. Used either as a parameter to another filter
1826
+ * operation, or as a builder to create a filter operation.
1827
+ * @return {@link dh.FilterValue}
1880
1828
  */
1881
- inputTable():Promise<InputTable>;
1829
+ filter():FilterValue;
1882
1830
  /**
1883
- * Indicates that this Table instance will no longer be used, and its connection to the server can be cleaned up.
1831
+ * a <b>CustomColumn</b> object to apply using `applyCustomColumns` with the expression specified.
1832
+ * @param expression -
1833
+ * @return {@link dh.CustomColumn}
1884
1834
  */
1885
- close():void;
1886
- getAttributes():string[];
1835
+ formatColor(expression:string):CustomColumn;
1887
1836
  /**
1888
- * null if no property exists, a string if it is an easily serializable property, or a ```Promise
1889
- * &lt;Table&gt;``` that will either resolve with a table or error out if the object can't be passed to JS.
1890
- * @param attributeName -
1891
- * @return Object
1837
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1838
+ * @param expression -
1839
+ * @return {@link dh.CustomColumn}
1892
1840
  */
1893
- getAttribute(attributeName:string):unknown|undefined|null;
1841
+ formatNumber(expression:string):CustomColumn;
1894
1842
  /**
1895
- * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
1896
- * immediately return the new value, but you may receive update events using the old sort before the new sort is
1897
- * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
1898
- * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
1899
- * not.
1900
- * @param sort -
1901
- * @return {@link dh.Sort} array
1843
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1844
+ * @param expression -
1845
+ * @return {@link dh.CustomColumn}
1902
1846
  */
1903
- applySort(sort:Sort[]):Array<Sort>;
1847
+ formatDate(expression:string):CustomColumn;
1848
+ toString():string;
1904
1849
  /**
1905
- * Replace the currently set filters on the table. Returns the previously set value. Note that the filter property
1906
- * will immediately return the new value, but you may receive update events using the old filter before the new one
1907
- * is applied, and the <b>filterchanged</b> event fires. Reusing existing, applied filters may enable this to
1908
- * perform better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b>
1909
- * will not.
1910
- * @param filter -
1911
- * @return {@link dh.FilterCondition} array
1850
+ * Label for this column.
1851
+ * @return String
1912
1852
  */
1913
- applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
1853
+ get name():string;
1914
1854
  /**
1915
- * used when adding new filter and sort operations to the table, as long as they are present.
1916
- * @param customColumns -
1917
- * @return {@link dh.CustomColumn} array
1855
+ * True if this column is a partition column. Partition columns are used for filtering uncoalesced tables (see
1856
+ * <b>isUncoalesced</b> property on <b>Table</b>)
1857
+ * @return boolean
1918
1858
  */
1919
- applyCustomColumns(customColumns:Array<string|CustomColumn>):Array<CustomColumn>;
1859
+ get isPartitionColumn():boolean;
1920
1860
  /**
1921
- * If the columns parameter is not provided, all columns will be used. If the updateIntervalMs parameter is not
1922
- * provided, a default of one second will be used. Until this is called, no data will be available. Invoking this
1923
- * will result in events to be fired once data becomes available, starting with an `updated` event and a
1924
- * <b>rowadded</b> event per row in that range. The returned object allows the viewport to be closed when no longer
1925
- * needed.
1926
- * @param firstRow -
1927
- * @param lastRow -
1928
- * @param columns -
1929
- * @param updateIntervalMs -
1930
- * @return {@link dh.TableViewportSubscription}
1861
+ *
1862
+ * @deprecated do not use. Internal index of the column in the table, to be used as a key on the Row.
1863
+ * @return int
1931
1864
  */
1932
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateIntervalMs?:number|undefined|null):TableViewportSubscription;
1865
+ get index():number;
1866
+ get isSortable():boolean;
1933
1867
  /**
1934
- * Gets the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
1935
- * resolve until that data is ready. If this table is closed before the promise resolves, it will be rejected - to
1936
- * separate the lifespan of this promise from the table itself, call
1937
- * {@link TableViewportSubscription.getViewportData} on the result from {@link Table.setViewport}.
1938
- * @return Promise of {@link dh.TableData}
1868
+ * Type of the row data that can be found in this column.
1869
+ * @return String
1939
1870
  */
1940
- getViewportData():Promise<TableData>;
1871
+ get type():string;
1872
+ /**
1873
+ * Format entire rows colors using the expression specified. Returns a <b>CustomColumn</b> object to apply to a
1874
+ * table using <b>applyCustomColumns</b> with the parameters specified.
1875
+ * @param expression -
1876
+ * @return {@link dh.CustomColumn}
1877
+ */
1878
+ static formatRowColor(expression:string):CustomColumn;
1879
+ /**
1880
+ * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
1881
+ * @param name -
1882
+ * @param expression -
1883
+ * @return {@link dh.CustomColumn}
1884
+ */
1885
+ static createCustomColumn(name:string, expression:string):CustomColumn;
1886
+ }
1887
+
1888
+ /**
1889
+ * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
1890
+ * mechanism, and so reimplemented here.
1891
+ * <p>
1892
+ * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
1893
+ * <p>
1894
+ * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
1895
+ * operations are performed, but encourage the client code to re-set them to the desired position.
1896
+ * <p>
1897
+ * The table size will be -1 until a viewport has been fetched.
1898
+ * <p>
1899
+ * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
1900
+ * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
1901
+ * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
1902
+ * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
1903
+ * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
1904
+ * the viewport).
1905
+ * <p>
1906
+ * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
1907
+ * and count of children at each level of the hierarchy, and differences in the data that is available.
1908
+ * <p>
1909
+ * <ul>
1910
+ * <li>There is no {@link Table.totalSize | totalSize} property.</li>
1911
+ * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
1912
+ * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
1913
+ * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
1914
+ * new operation is pending.</li>
1915
+ * <li>Custom columns are not directly supported. If the TreeTable was created client-side, the original Table can have
1916
+ * custom columns applied, and the TreeTable can be recreated.</li>
1917
+ * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
1918
+ * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
1919
+ * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
1920
+ * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
1921
+ * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
1922
+ * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
1923
+ * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
1924
+ * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
1925
+ * where {@link TreeRow.hasChildren} is false will be different from usual.</li>
1926
+ * </ul>
1927
+ */
1928
+ export class TreeTable implements HasEventHandling {
1941
1929
  /**
1942
- * Creates a subscription to the specified columns, across all rows in the table. The optional parameter
1943
- * updateIntervalMs may be specified to indicate how often the server should send updates, defaulting to one second
1944
- * if omitted. Useful for charts or taking a snapshot of the table atomically. The initial snapshot will arrive in a
1945
- * single event, but later changes will be sent as updates. However, this may still be very expensive to run from a
1946
- * browser for very large tables. Each call to subscribe creates a new subscription, which must have <b>close()</b>
1947
- * called on it to stop it, and all events are fired from the TableSubscription instance.
1948
- * @param columns -
1949
- * @param updateIntervalMs -
1950
- * @return {@link dh.TableSubscription}
1930
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1951
1931
  */
1952
- subscribe(columns:Array<Column>, updateIntervalMs?:number):TableSubscription;
1932
+ static readonly EVENT_UPDATED:string;
1953
1933
  /**
1954
- * a new table containing the distinct tuples of values from the given columns that are present in the original
1955
- * table. This table can be manipulated as any other table. Sorting is often desired as the default sort is the
1956
- * order of appearance of values from the original table.
1957
- * @param columns -
1958
- * @return Promise of dh.Table
1934
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1959
1935
  */
1960
- selectDistinct(columns:Column[]):Promise<Table>;
1936
+ static readonly EVENT_DISCONNECT:string;
1961
1937
  /**
1962
- * Creates a new copy of this table, so it can be sorted and filtered separately, and maintain a different viewport.
1963
- * @return Promise of dh.Table
1938
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1964
1939
  */
1965
- copy():Promise<Table>;
1940
+ static readonly EVENT_RECONNECT:string;
1966
1941
  /**
1967
- * a promise that will resolve to a Totals Table of this table. This table will obey the configurations provided as
1968
- * a parameter, or will use the table's default if no parameter is provided, and be updated once per second as
1969
- * necessary. Note that multiple calls to this method will each produce a new TotalsTable which must have close()
1970
- * called on it when not in use.
1971
- * @param config -
1972
- * @return Promise of dh.TotalsTable
1942
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1973
1943
  */
1974
- getTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1944
+ static readonly EVENT_RECONNECTFAILED:string;
1975
1945
  /**
1976
- * a promise that will resolve to a Totals Table of this table, ignoring any filters. See <b>getTotalsTable()</b>
1977
- * above for more specifics.
1978
- * @param config -
1979
- * @return promise of dh.TotalsTable
1946
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1980
1947
  */
1981
- getGrandTotalsTable(config?:TotalsTableConfig|undefined|null):Promise<TotalsTable>;
1948
+ static readonly EVENT_REQUEST_FAILED:string;
1949
+ readonly description?:string|null;
1950
+ readonly layoutHints?:null|LayoutHints;
1951
+
1952
+ protected constructor();
1953
+
1982
1954
  /**
1983
- * a promise that will resolve to a new roll-up <b>TreeTable</b> of this table. Multiple calls to this method will
1984
- * each produce a new <b>TreeTable</b> which must have close() called on it when not in use.
1985
- * @param configObject -
1986
- * @return Promise of dh.TreeTable
1955
+ * Expands the given node, so that its children are visible when they are in the viewport. The parameter can be the
1956
+ * row index, or the row object itself. The second parameter is a boolean value, false by default, specifying if the
1957
+ * row and all descendants should be fully expanded. Equivalent to `setExpanded(row, true)` with an optional third
1958
+ * boolean parameter.
1959
+ * @param row -
1960
+ * @param expandDescendants -
1987
1961
  */
1988
- rollup(configObject:RollupConfig):Promise<TreeTable>;
1962
+ expand(row:TreeRow|number, expandDescendants?:boolean):void;
1989
1963
  /**
1990
- * a promise that will resolve to a new `TreeTable` of this table. Multiple calls to this method will each produce a
1991
- * new `TreeTable` which must have close() called on it when not in use.
1992
- * @param configObject -
1993
- * @return Promise dh.TreeTable
1964
+ * Collapses the given node, so that its children and descendants are not visible in the size or the viewport. The
1965
+ * parameter can be the row index, or the row object itself. Equivalent to <b>setExpanded(row, false, false)</b>.
1966
+ * @param row -
1994
1967
  */
1995
- treeTable(configObject:TreeTableConfig):Promise<TreeTable>;
1968
+ collapse(row:TreeRow|number):void;
1996
1969
  /**
1997
- * a "frozen" version of this table (a server-side snapshot of the entire source table). Viewports on the frozen
1998
- * table will not update. This does not change the original table, and the new table will not have any of the client
1999
- * side sorts/filters/columns. New client side sorts/filters/columns can be added to the frozen copy.
2000
- * @return Promise of dh.Table
1970
+ * Specifies if the given node should be expanded or collapsed. If this node has children, and the value is changed,
1971
+ * the size of the table will change. If node is to be expanded and the third parameter, <b>expandDescendants</b>,
1972
+ * is true, then its children will also be expanded.
1973
+ * @param row -
1974
+ * @param isExpanded -
1975
+ * @param expandDescendants -
2001
1976
  */
2002
- freeze():Promise<Table>;
2003
- snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
1977
+ setExpanded(row:TreeRow|number, isExpanded:boolean, expandDescendants?:boolean):void;
1978
+ expandAll():void;
1979
+ collapseAll():void;
2004
1980
  /**
2005
- *
2006
- * @inheritDoc
2007
- * @deprecated
1981
+ * true if the given row is expanded, false otherwise. Equivalent to `TreeRow.isExpanded`, if an instance of the row
1982
+ * is available
1983
+ * @param row -
1984
+ * @return boolean
2008
1985
  */
2009
- join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
2010
- asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
2011
- crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
2012
- exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
2013
- naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>):Promise<Table>;
2014
- byExternal(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1986
+ isExpanded(row:TreeRow|number):boolean;
1987
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>|undefined|null, updateInterval?:number|undefined|null):void;
1988
+ getViewportData():Promise<TreeViewportData>;
2015
1989
  /**
2016
- * Creates a new PartitionedTable from the contents of the current table, partitioning data based on the specified
2017
- * keys.
2018
- * @param keys -
2019
- * @param dropKeys -
2020
- * @return Promise dh.PartitionedTable
1990
+ * Indicates that the table will no longer be used, and server resources can be freed.
2021
1991
  */
2022
- partitionBy(keys:object, dropKeys?:boolean):Promise<PartitionedTable>;
1992
+ close():void;
1993
+ typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
2023
1994
  /**
2024
- * a promise that will resolve to ColumnStatistics for the column of this table.
2025
- * @param column -
2026
- * @return Promise of dh.ColumnStatistics
1995
+ * Applies the given sort to all levels of the tree. Returns the previous sort in use.
1996
+ * @param sort -
1997
+ * @return {@link dh.Sort} array
2027
1998
  */
2028
- getColumnStatistics(column:Column):Promise<ColumnStatistics>;
1999
+ applySort(sort:Sort[]):Array<Sort>;
2029
2000
  /**
2030
- * Seek the row matching the data provided
2031
- * @param startingRow - Row to start the seek from
2032
- * @param column - Column to seek for value on
2033
- * @param valueType - Type of value provided
2034
- * @param seekValue - Value to seek
2035
- * @param insensitive - Optional value to flag a search as case-insensitive. Defaults to `false`.
2036
- * @param contains - Optional value to have the seek value do a contains search instead of exact equality. Defaults to
2037
- * `false`.
2038
- * @param isBackwards - Optional value to seek backwards through the table instead of forwards. Defaults to `false`.
2039
- * @return A promise that resolves to the row value found.
2001
+ * Applies the given filter to the contents of the tree in such a way that if any node is visible, then any parent
2002
+ * node will be visible as well even if that parent node would not normally be visible due to the filter's
2003
+ * condition. Returns the previous sort in use.
2004
+ * @param filter -
2005
+ * @return {@link dh.FilterCondition} array
2040
2006
  */
2041
- seekRow(startingRow:number, column:Column, valueType:ValueTypeType, seekValue:any, insensitive?:boolean|undefined|null, contains?:boolean|undefined|null, isBackwards?:boolean|undefined|null):Promise<number>;
2042
- toString():string;
2007
+ applyFilter(filter:FilterCondition[]):Array<FilterCondition>;
2043
2008
  /**
2044
- * True if this table represents a user Input Table (created by InputTable.newInputTable). When true, you may call
2045
- * .inputTable() to add or remove data from the underlying table.
2046
- * @return boolean
2009
+ * a column with the given name, or throws an exception if it cannot be found
2010
+ * @param key -
2011
+ * @return {@link dh.Column}
2047
2012
  */
2048
- get hasInputTable():boolean;
2013
+ findColumn(key:string):Column;
2049
2014
  /**
2050
- * The columns that are present on this table. This is always all possible columns. If you specify fewer columns in
2051
- * .setViewport(), you will get only those columns in your ViewportData. <b>Number size</b> The total count of rows
2052
- * in the table. The size can and will change; see the <b>sizechanged</b> event for details. Size will be negative
2053
- * in exceptional cases (eg. the table is uncoalesced, see the <b>isUncoalesced</b> property for details).
2015
+ * an array with all of the named columns in order, or throws an exception if one cannot be found.
2016
+ * @param keys -
2054
2017
  * @return {@link dh.Column} array
2055
2018
  */
2056
- get columns():Array<Column>;
2019
+ findColumns(keys:string[]):Column[];
2057
2020
  /**
2058
- * The default configuration to be used when building a <b>TotalsTable</b> for this table.
2059
- * @return dh.TotalsTableConfig
2021
+ * Provides Table-like selectDistinct functionality, but with a few quirks, since it is only fetching the distinct
2022
+ * values for the given columns in the source table:
2023
+ * <ul>
2024
+ * <li>Rollups may make no sense, since values are aggregated.</li>
2025
+ * <li>Values found on orphaned (and removed) nodes will show up in the resulting table, even though they are not in
2026
+ * the tree.</li>
2027
+ * <li>Values found on parent nodes which are only present in the tree since a child is visible will not be present
2028
+ * in the resulting table.</li>
2029
+ * </ul>
2060
2030
  */
2061
- get totalsTableConfig():TotalsTableConfig;
2031
+ selectDistinct(columns:Column[]):Promise<Table>;
2032
+ getTotalsTableConfig():Promise<TotalsTableConfig>;
2033
+ getTotalsTable(config?:object):Promise<TotalsTable>;
2034
+ getGrandTotalsTable(config?:object):Promise<TotalsTable>;
2062
2035
  /**
2063
- * An ordered list of Sorts to apply to the table. To update, call <b>applySort()</b>. Note that this getter will
2064
- * return the new value immediately, even though it may take a little time to update on the server. You may listen
2065
- * for the <b>sortchanged</b> event to know when to update the UI.
2066
- * @return {@link dh.Sort} array
2036
+ * a new copy of this treetable, so it can be sorted and filtered separately, and maintain a different viewport.
2037
+ * Unlike Table, this will _not_ copy the filter or sort, since tree table viewport semantics differ, and without a
2038
+ * viewport set, the treetable doesn't evaluate these settings, and they aren't readable on the properties. Expanded
2039
+ * state is also not copied.
2040
+ * @return Promise of dh.TreeTable
2067
2041
  */
2068
- get sort():Array<Sort>;
2042
+ copy():Promise<TreeTable>;
2069
2043
  /**
2070
- * An ordered list of custom column formulas to add to the table, either adding new columns or replacing existing
2071
- * ones. To update, call <b>applyCustomColumns()</b>.
2072
- * @return {@link dh.CustomColumn} array
2044
+ * The current filter configuration of this Tree Table.
2045
+ * @return {@link dh.FilterCondition} array
2073
2046
  */
2074
- get customColumns():Array<CustomColumn>;
2047
+ get filter():Array<FilterCondition>;
2075
2048
  /**
2076
- * True if this table may receive updates from the server, including size changed events, updated events after
2077
- * initial snapshot.
2049
+ * True if this is a roll-up and will provide the original rows that make up each grouping.
2078
2050
  * @return boolean
2079
2051
  */
2080
- get isRefreshing():boolean;
2081
- /**
2082
- * An ordered list of Filters to apply to the table. To update, call applyFilter(). Note that this getter will
2083
- * return the new value immediately, even though it may take a little time to update on the server. You may listen
2084
- * for the <b>filterchanged</b> event to know when to update the UI.
2085
- * @return {@link dh.FilterCondition} array
2086
- */
2087
- get filter():Array<FilterCondition>;
2052
+ get includeConstituents():boolean;
2053
+ get groupedColumns():Array<Column>;
2088
2054
  /**
2089
- * The total count of the rows in the table, excluding any filters. Unlike <b>size</b>, changes to this value will
2090
- * not result in any event. <b>Sort[] sort</b> an ordered list of Sorts to apply to the table. To update, call
2091
- * applySort(). Note that this getter will return the new value immediately, even though it may take a little time
2092
- * to update on the server. You may listen for the <b>sortchanged</b> event to know when to update the UI.
2093
- * @return double
2055
+ * True if this table has been closed.
2056
+ * @return boolean
2094
2057
  */
2095
- get totalSize():number;
2058
+ get isClosed():boolean;
2096
2059
  /**
2097
- * The total count of rows in the table. The size can and will change; see the <b>sizechanged</b> event for details.
2098
- * Size will be negative in exceptional cases (e.g., the table is uncoalesced; see the <b>isUncoalesced</b>
2099
- * property). for details).
2060
+ * The current number of rows given the table's contents and the various expand/collapse states of each node. (No
2061
+ * totalSize is provided at this time; its definition becomes unclear between roll-up and tree tables, especially
2062
+ * when considering collapse/expand states).
2100
2063
  * @return double
2101
2064
  */
2102
2065
  get size():number;
2103
2066
  /**
2104
- * True if this table has been closed.
2105
- * @return boolean
2067
+ * The columns that can be shown in this Tree Table.
2068
+ * @return {@link dh.Column} array
2106
2069
  */
2107
- get isClosed():boolean;
2070
+ get columns():Array<Column>;
2108
2071
  /**
2109
- * Read-only. True if this table is uncoalesced. Set a viewport or filter on the partition columns to coalesce the
2110
- * table. Check the <b>isPartitionColumn</b> property on the table columns to retrieve the partition columns. Size
2111
- * will be unavailable until table is coalesced.
2072
+ * The current sort configuration of this Tree Table
2073
+ * @return {@link dh.Sort} array.
2074
+ */
2075
+ get sort():Array<Sort>;
2076
+ /**
2077
+ * True if this table may receive updates from the server, including size changed events, updated events after
2078
+ * initial snapshot.
2112
2079
  * @return boolean
2113
2080
  */
2114
- get isUncoalesced():boolean;
2081
+ get isRefreshing():boolean;
2115
2082
  /**
2116
2083
  * Listen for events on this object.
2117
2084
  * @param name - the name of the event to listen for
@@ -2130,243 +2097,259 @@ export namespace dh {
2130
2097
  * @typeParam T -
2131
2098
  */
2132
2099
  removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2133
- /**
2134
- * a Sort than can be used to reverse a table. This can be passed into n array in applySort. Note that Tree Tables
2135
- * do not support reverse.
2136
- * @return {@link dh.Sort}
2137
- */
2138
- static reverse():Sort;
2139
2100
  }
2140
2101
 
2141
2102
  /**
2142
- * Describes the structure of the column, and if desired can be used to get access to the data to be rendered in this
2143
- * column.
2103
+ * Represents a set of Tables each corresponding to some key. The keys are available locally, but a call must be made to
2104
+ * the server to get each Table. All tables will have the same structure.
2144
2105
  */
2145
- export class Column {
2106
+ export class PartitionedTable implements HasEventHandling {
2146
2107
  /**
2147
- * If this column is part of a roll-up tree table, represents the type of the row data that can be found in this
2148
- * column for leaf nodes if includeConstituents is enabled. Otherwise, it is <b>null</b>.
2149
- * @return String
2108
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2150
2109
  */
2151
- readonly constituentType?:string|null;
2152
- readonly description?:string|null;
2153
-
2154
- protected constructor();
2155
-
2110
+ static readonly EVENT_KEYADDED:string;
2156
2111
  /**
2157
- * the value for this column in the given row. Type will be consistent with the type of the Column.
2158
- * @param row -
2159
- * @return Any
2112
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2160
2113
  */
2161
- get(row:Row):any;
2162
- getFormat(row:Row):Format;
2114
+ static readonly EVENT_DISCONNECT:string;
2163
2115
  /**
2164
- * Creates a sort builder object, to be used when sorting by this column.
2165
- * @return {@link dh.Sort}
2116
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2166
2117
  */
2167
- sort():Sort;
2118
+ static readonly EVENT_RECONNECT:string;
2168
2119
  /**
2169
- * Creates a new value for use in filters based on this column. Used either as a parameter to another filter
2170
- * operation, or as a builder to create a filter operation.
2171
- * @return {@link dh.FilterValue}
2120
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
2172
2121
  */
2173
- filter():FilterValue;
2122
+ static readonly EVENT_RECONNECTFAILED:string;
2123
+
2124
+ protected constructor();
2125
+
2126
+ typedTicket():dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
2174
2127
  /**
2175
- * a <b>CustomColumn</b> object to apply using `applyCustomColumns` with the expression specified.
2176
- * @param expression -
2177
- * @return {@link dh.CustomColumn}
2128
+ * Fetch the table with the given key. If the key does not exist, returns `null`.
2129
+ * @param key - The key to fetch. An array of values for each key column, in the same order as the key columns are.
2130
+ * @return Promise of dh.Table, or `null` if the key does not exist.
2178
2131
  */
2179
- formatColor(expression:string):CustomColumn;
2132
+ getTable(key:object):Promise<Table|undefined|null>;
2180
2133
  /**
2181
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
2182
- * @param expression -
2183
- * @return {@link dh.CustomColumn}
2134
+ * Open a new table that is the result of merging all constituent tables. See
2135
+ * {@link io.deephaven.engine.table.PartitionedTable#merge()} for details.
2136
+ * @return A merged representation of the constituent tables.
2184
2137
  */
2185
- formatNumber(expression:string):CustomColumn;
2138
+ getMergedTable():Promise<Table>;
2186
2139
  /**
2187
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
2188
- * @param expression -
2189
- * @return {@link dh.CustomColumn}
2140
+ * The set of all currently known keys. This is kept up to date, so getting the list after adding an event listener
2141
+ * for <b>keyadded</b> will ensure no keys are missed.
2142
+ * @return Set of Object
2190
2143
  */
2191
- formatDate(expression:string):CustomColumn;
2192
- toString():string;
2144
+ getKeys():Set<object>;
2193
2145
  /**
2194
- * Label for this column.
2195
- * @return String
2146
+ * Fetch a table containing all the valid keys of the partitioned table.
2147
+ * @return Promise of a Table
2196
2148
  */
2197
- get name():string;
2149
+ getKeyTable():Promise<Table>;
2198
2150
  /**
2199
- * True if this column is a partition column. Partition columns are used for filtering uncoalesced tables (see
2200
- * <b>isUncoalesced</b> property on <b>Table</b>)
2201
- * @return boolean
2151
+ * Indicates that this PartitionedTable will no longer be used, removing subcriptions to updated keys, etc. This
2152
+ * will not affect tables in use.
2202
2153
  */
2203
- get isPartitionColumn():boolean;
2154
+ close():void;
2204
2155
  /**
2205
- *
2206
- * @deprecated do not use. Internal index of the column in the table, to be used as a key on the Row.
2156
+ * The count of known keys.
2207
2157
  * @return int
2208
2158
  */
2209
- get index():number;
2210
- get isSortable():boolean;
2159
+ get size():number;
2211
2160
  /**
2212
- * Type of the row data that can be found in this column.
2213
- * @return String
2161
+ * An array of the columns in the tables that can be retrieved from this partitioned table, including both key and
2162
+ * non-key columns.
2163
+ * @return Array of Column
2214
2164
  */
2215
- get type():string;
2165
+ get columns():Column[];
2216
2166
  /**
2217
- * Format entire rows colors using the expression specified. Returns a <b>CustomColumn</b> object to apply to a
2218
- * table using <b>applyCustomColumns</b> with the parameters specified.
2219
- * @param expression -
2220
- * @return {@link dh.CustomColumn}
2167
+ * An array of all the key columns that the tables are partitioned by.
2168
+ * @return Array of Column
2221
2169
  */
2222
- static formatRowColor(expression:string):CustomColumn;
2170
+ get keyColumns():Column[];
2223
2171
  /**
2224
- * a <b>CustomColumn</b> object to apply using <b>applyCustomColumns</b> with the expression specified.
2172
+ * Listen for events on this object.
2173
+ * @param name - the name of the event to listen for
2174
+ * @param callback - a function to call when the event occurs
2175
+ * @return Returns a cleanup function.
2176
+ * @typeParam T - the type of the data that the event will provide
2177
+ */
2178
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2179
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2180
+ hasListeners(name:string):boolean;
2181
+ /**
2182
+ * Removes an event listener added to this table.
2225
2183
  * @param name -
2226
- * @param expression -
2227
- * @return {@link dh.CustomColumn}
2184
+ * @param callback -
2185
+ * @return
2186
+ * @typeParam T -
2228
2187
  */
2229
- static createCustomColumn(name:string, expression:string):CustomColumn;
2188
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2230
2189
  }
2231
2190
 
2232
- export class CustomColumn {
2233
- static readonly TYPE_FORMAT_COLOR:string;
2234
- static readonly TYPE_FORMAT_NUMBER:string;
2235
- static readonly TYPE_FORMAT_DATE:string;
2236
- static readonly TYPE_NEW:string;
2191
+ export class IdeSession implements HasEventHandling {
2192
+ static readonly EVENT_COMMANDSTARTED:string;
2193
+ static readonly EVENT_REQUEST_FAILED:string;
2237
2194
 
2238
2195
  protected constructor();
2239
2196
 
2240
- valueOf():string;
2241
- toString():string;
2242
2197
  /**
2243
- * The expression to evaluate this custom column.
2244
- * @return String
2198
+ * Load the named table, with columns and size information already fully populated.
2199
+ * @param name -
2200
+ * @param applyPreviewColumns - optional boolean
2201
+ * @return {@link Promise} of {@link dh.Table}
2245
2202
  */
2246
- get expression():string;
2203
+ getTable(name:string, applyPreviewColumns?:boolean):Promise<Table>;
2247
2204
  /**
2248
- * The name of the column to use.
2249
- * @return String
2205
+ * Load the named Figure, including its tables and tablemaps as needed.
2206
+ * @param name -
2207
+ * @return promise of dh.plot.Figure
2250
2208
  */
2251
- get name():string;
2209
+ getFigure(name:string):Promise<dh.plot.Figure>;
2252
2210
  /**
2253
- * Type of custom column. One of
2254
- *
2255
- * <ul>
2256
- * <li>FORMAT_COLOR</li>
2257
- * <li>FORMAT_NUMBER</li>
2258
- * <li>FORMAT_DATE</li>
2259
- * <li>NEW</li>
2260
- * </ul>
2261
- * @return String
2211
+ * Loads the named tree table or roll-up table, with column data populated. All nodes are collapsed by default, and
2212
+ * size is presently not available until the viewport is first set.
2213
+ * @param name -
2214
+ * @return {@link Promise} of {@link dh.TreeTable}
2262
2215
  */
2263
- get type():string;
2264
- }
2265
-
2266
- /**
2267
- * A js type for operating on input tables.
2268
- *
2269
- * Represents a User Input Table, which can have data added to it from other sources.
2270
- *
2271
- * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
2272
- * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
2273
- * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
2274
- * before sending the next operation.
2275
- *
2276
- * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
2277
- *
2278
- * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
2279
- * object.
2280
- */
2281
- export class InputTable {
2282
- protected constructor();
2283
-
2216
+ getTreeTable(name:string):Promise<TreeTable>;
2217
+ getHierarchicalTable(name:string):Promise<TreeTable>;
2218
+ getPartitionedTable(name:string):Promise<PartitionedTable>;
2219
+ getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
2220
+ newTable(columnNames:string[], types:string[], data:string[][], userTimeZone:string):Promise<Table>;
2284
2221
  /**
2285
- * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
2286
- * property at that name and validate it can be put into the given column type.
2287
- * @param row -
2288
- * @param userTimeZone -
2289
- * @return Promise of dh.InputTable
2222
+ * Merges the given tables into a single table. Assumes all tables have the same structure.
2223
+ * @param tables -
2224
+ * @return {@link Promise} of {@link dh.Table}
2290
2225
  */
2291
- addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
2226
+ mergeTables(tables:Table[]):Promise<Table>;
2227
+ bindTableToVariable(table:Table, name:string):Promise<void>;
2228
+ subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
2229
+ close():void;
2230
+ runCode(code:string):Promise<dh.ide.CommandResult>;
2231
+ onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
2232
+ openDocument(params:object):void;
2233
+ changeDocument(params:object):void;
2234
+ getCompletionItems(params:object):Promise<Array<dh.lsp.CompletionItem>>;
2235
+ getSignatureHelp(params:object):Promise<Array<dh.lsp.SignatureInformation>>;
2236
+ getHover(params:object):Promise<dh.lsp.Hover>;
2237
+ closeDocument(params:object):void;
2292
2238
  /**
2293
- * Add multiple rows to a table.
2294
- * @param rows -
2295
- * @param userTimeZone -
2296
- * @return Promise of dh.InputTable
2239
+ * Creates an empty table with the specified number of rows. Optionally columns and types may be specified, but all
2240
+ * values will be null.
2241
+ * @param size -
2242
+ * @return {@link Promise} of {@link dh.Table}
2297
2243
  */
2298
- addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
2244
+ emptyTable(size:number):Promise<Table>;
2299
2245
  /**
2300
- * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
2301
- * copied, and all key columns must have values filled in. This only copies the current state of the source table;
2302
- * future updates to the source table will not be reflected in the Input Table. The returned promise will be
2303
- * resolved to the same InputTable instance this method was called upon once the server returns.
2304
- * @param tableToAdd -
2305
- * @return Promise of dh.InputTable
2246
+ * Creates a new table that ticks automatically every "periodNanos" nanoseconds. A start time may be provided; if so
2247
+ * the table will be populated with the interval from the specified date until now.
2248
+ * @param periodNanos -
2249
+ * @param startTime -
2250
+ * @return {@link Promise} of {@link dh.Table}
2306
2251
  */
2307
- addTable(tableToAdd:Table):Promise<InputTable>;
2252
+ timeTable(periodNanos:number, startTime?:DateWrapper):Promise<Table>;
2253
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2254
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2255
+ hasListeners(name:string):boolean;
2256
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2257
+ }
2258
+
2259
+ /**
2260
+ * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
2261
+ * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
2262
+ * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
2263
+ */
2264
+ export class RangeSet {
2265
+ protected constructor();
2266
+
2267
+ static ofRange(first:number, last:number):RangeSet;
2268
+ static ofItems(rows:number[]):RangeSet;
2269
+ static ofRanges(ranges:RangeSet[]):RangeSet;
2270
+ static ofSortedRanges(ranges:RangeSet[]):RangeSet;
2308
2271
  /**
2309
- * Add multiple tables to this Input Table.
2310
- * @param tablesToAdd -
2311
- * @return Promise of dh.InputTable
2272
+ * a new iterator over all indexes in this collection.
2273
+ * @return Iterator of {@link dh.LongWrapper}
2312
2274
  */
2313
- addTables(tablesToAdd:Table[]):Promise<InputTable>;
2275
+ iterator():Iterator<LongWrapper>;
2314
2276
  /**
2315
- * Deletes an entire table from this Input Table. Key columns must match the Input Table.
2316
- * @param tableToDelete -
2317
- * @return Promise of dh.InputTable
2277
+ * The total count of items contained in this collection. In some cases this can be expensive to compute, and
2278
+ * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
2279
+ * property each time through a loop).
2280
+ * @return double
2318
2281
  */
2319
- deleteTable(tableToDelete:Table):Promise<InputTable>;
2282
+ get size():number;
2283
+ }
2284
+
2285
+ export class LoginCredentials {
2286
+ type?:string|null;
2287
+ username?:string|null;
2288
+ token?:string|null;
2289
+
2290
+ constructor();
2291
+ }
2292
+
2293
+ /**
2294
+ * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
2295
+ * some options, JS applications can run code on the server, and interact with available exportable objects.
2296
+ */
2297
+ export class IdeConnection implements HasEventHandling {
2320
2298
  /**
2321
- * Delete multiple tables from this Input Table.
2322
- * @param tablesToDelete -
2323
- * @return
2299
+ * @deprecated
2324
2300
  */
2325
- deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
2301
+ static readonly HACK_CONNECTION_FAILURE:string;
2302
+ static readonly EVENT_DISCONNECT:string;
2303
+ static readonly EVENT_RECONNECT:string;
2304
+ static readonly EVENT_SHUTDOWN:string;
2305
+
2326
2306
  /**
2327
- * A list of the key columns, by name
2328
- * @return String array.
2307
+ * creates a new instance, from which console sessions can be made. <b>options</b> are optional.
2308
+ * @param serverUrl - The url used when connecting to the server. Read-only.
2309
+ * @param connectOptions - Optional Object
2310
+ * @param fromJava - Optional boolean
2311
+ * @deprecated
2329
2312
  */
2330
- get keys():string[];
2313
+ constructor(serverUrl:string, connectOptions?:ConnectOptions, fromJava?:boolean);
2314
+
2331
2315
  /**
2332
- * A list of the value columns, by name
2333
- * @return String array.
2316
+ * closes the current connection, releasing any resources on the server or client.
2334
2317
  */
2335
- get values():string[];
2318
+ close():void;
2319
+ running():Promise<IdeConnection>;
2320
+ getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
2321
+ subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
2336
2322
  /**
2337
- * A list of the key columns.
2338
- * @return Column array.
2323
+ * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
2324
+ * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
2325
+ * log messages as are presently available.
2326
+ * @param callback -
2327
+ * @return {@link io.deephaven.web.shared.fu.JsRunnable}
2339
2328
  */
2340
- get keyColumns():Column[];
2329
+ onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
2330
+ startSession(type:string):Promise<IdeSession>;
2331
+ getConsoleTypes():Promise<Array<string>>;
2332
+ getWorkerHeapInfo():Promise<WorkerHeapInfo>;
2341
2333
  /**
2342
- * A list of the value Column objects
2343
- * @return {@link dh.Column} array.
2334
+ * Listen for events on this object.
2335
+ * @param name - the name of the event to listen for
2336
+ * @param callback - a function to call when the event occurs
2337
+ * @return Returns a cleanup function.
2338
+ * @typeParam T - the type of the data that the event will provide
2344
2339
  */
2345
- get valueColumns():Column[];
2340
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
2341
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
2342
+ hasListeners(name:string):boolean;
2346
2343
  /**
2347
- * The source table for this Input Table
2348
- * @return dh.table
2344
+ * Removes an event listener added to this table.
2345
+ * @param name -
2346
+ * @param callback -
2347
+ * @return
2348
+ * @typeParam T -
2349
2349
  */
2350
- get table():Table;
2351
- }
2352
-
2353
-
2354
- type SearchDisplayModeType = string;
2355
- export class SearchDisplayMode {
2356
- static readonly SEARCH_DISPLAY_DEFAULT:SearchDisplayModeType;
2357
- static readonly SEARCH_DISPLAY_HIDE:SearchDisplayModeType;
2358
- static readonly SEARCH_DISPLAY_SHOW:SearchDisplayModeType;
2350
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
2359
2351
  }
2360
2352
 
2361
- type ValueTypeType = string;
2362
- export class ValueType {
2363
- static readonly STRING:ValueTypeType;
2364
- static readonly NUMBER:ValueTypeType;
2365
- static readonly DOUBLE:ValueTypeType;
2366
- static readonly LONG:ValueTypeType;
2367
- static readonly DATETIME:ValueTypeType;
2368
- static readonly BOOLEAN:ValueTypeType;
2369
- }
2370
2353
 
2371
2354
  /**
2372
2355
  * This enum describes the name of each supported operation/aggregation type when creating a `TreeTable`.
@@ -2389,6 +2372,23 @@ export namespace dh {
2389
2372
  static readonly SKIP:AggregationOperationType;
2390
2373
  }
2391
2374
 
2375
+ type ValueTypeType = string;
2376
+ export class ValueType {
2377
+ static readonly STRING:ValueTypeType;
2378
+ static readonly NUMBER:ValueTypeType;
2379
+ static readonly DOUBLE:ValueTypeType;
2380
+ static readonly LONG:ValueTypeType;
2381
+ static readonly DATETIME:ValueTypeType;
2382
+ static readonly BOOLEAN:ValueTypeType;
2383
+ }
2384
+
2385
+ type SearchDisplayModeType = string;
2386
+ export class SearchDisplayMode {
2387
+ static readonly SEARCH_DISPLAY_DEFAULT:SearchDisplayModeType;
2388
+ static readonly SEARCH_DISPLAY_HIDE:SearchDisplayModeType;
2389
+ static readonly SEARCH_DISPLAY_SHOW:SearchDisplayModeType;
2390
+ }
2391
+
2392
2392
  /**
2393
2393
  * A set of string constants that can be used to describe the different objects the JS API can export.
2394
2394
  */
@@ -2409,6 +2409,14 @@ export namespace dh {
2409
2409
 
2410
2410
  export namespace dh.ide {
2411
2411
 
2412
+ /**
2413
+ * Specifies a type and either id or name (but not both).
2414
+ */
2415
+ export interface VariableDescriptor {
2416
+ type:string;
2417
+ id?:string|null;
2418
+ name?:string|null;
2419
+ }
2412
2420
  /**
2413
2421
  * Represents a serialized fishlib LogRecord, suitable for display on javascript clients. A log entry sent from the
2414
2422
  * server.
@@ -2431,14 +2439,6 @@ export namespace dh.ide {
2431
2439
  get message():string;
2432
2440
  }
2433
2441
  /**
2434
- * Specifies a type and either id or name (but not both).
2435
- */
2436
- export interface VariableDescriptor {
2437
- type:string;
2438
- id?:string|null;
2439
- name?:string|null;
2440
- }
2441
- /**
2442
2442
  * A format to describe a variable available to be read from the server. Application fields are optional, and only
2443
2443
  * populated when a variable is provided by application mode.
2444
2444
  * <p>
@@ -2789,10 +2789,6 @@ export namespace dh.i18n {
2789
2789
 
2790
2790
  export namespace dh.plot {
2791
2791
 
2792
- export interface FigureDataUpdatedEvent {
2793
- getArray(series:Series, sourceType:number, mappingFunc?:(arg0:any)=>any):Array<any>;
2794
- get series():Series[];
2795
- }
2796
2792
  /**
2797
2793
  * Defines one axis used with by series. These instances will be found both on the Chart and the Series instances, and
2798
2794
  * may be shared between Series instances.
@@ -2862,21 +2858,6 @@ export namespace dh.plot {
2862
2858
  get minRange():number;
2863
2859
  }
2864
2860
  /**
2865
- * Describes a template that will be used to make new series instances when a new table added to a plotBy.
2866
- */
2867
- export interface MultiSeries {
2868
- /**
2869
- * The name for this multi-series.
2870
- * @return String
2871
- */
2872
- get name():string;
2873
- /**
2874
- * The plotting style to use for the series that will be created. See <b>SeriesPlotStyle</b> enum for more details.
2875
- * @return int
2876
- */
2877
- get plotStyle():SeriesPlotStyleType;
2878
- }
2879
- /**
2880
2861
  * Describes how to access and display data required within a series.
2881
2862
  */
2882
2863
  export interface SeriesDataSource {
@@ -2897,6 +2878,21 @@ export namespace dh.plot {
2897
2878
  get type():SourceTypeType;
2898
2879
  }
2899
2880
  /**
2881
+ * Describes a template that will be used to make new series instances when a new table added to a plotBy.
2882
+ */
2883
+ export interface MultiSeries {
2884
+ /**
2885
+ * The name for this multi-series.
2886
+ * @return String
2887
+ */
2888
+ get name():string;
2889
+ /**
2890
+ * The plotting style to use for the series that will be created. See <b>SeriesPlotStyle</b> enum for more details.
2891
+ * @return int
2892
+ */
2893
+ get plotStyle():SeriesPlotStyleType;
2894
+ }
2895
+ /**
2900
2896
  * Provides access to the data for displaying in a figure.
2901
2897
  */
2902
2898
  export interface Series {
@@ -2940,6 +2936,10 @@ export namespace dh.plot {
2940
2936
  get multiSeries():MultiSeries;
2941
2937
  get shapeLabel():string;
2942
2938
  }
2939
+ export interface FigureDataUpdatedEvent {
2940
+ getArray(series:Series, sourceType:number, mappingFunc?:(arg0:any)=>any):Array<any>;
2941
+ get series():Series[];
2942
+ }
2943
2943
  export interface OneClick {
2944
2944
  setValueForColumn(columnName:string, value:any):void;
2945
2945
  getValueForColumn(columName:string):any;
@@ -2947,42 +2947,30 @@ export namespace dh.plot {
2947
2947
  get columns():dh.Column[];
2948
2948
  }
2949
2949
 
2950
- export class SeriesDescriptor {
2951
- plotStyle:string;
2952
- name?:string|null;
2953
- linesVisible?:boolean|null;
2954
- shapesVisible?:boolean|null;
2955
- gradientVisible?:boolean|null;
2956
- lineColor?:string|null;
2957
- pointLabelFormat?:string|null;
2958
- xToolTipPattern?:string|null;
2959
- yToolTipPattern?:string|null;
2960
- shapeLabel?:string|null;
2961
- shapeSize?:number|null;
2962
- shapeColor?:string|null;
2963
- shape?:string|null;
2964
- dataSources:Array<SourceDescriptor>;
2950
+ export class AxisDescriptor {
2951
+ formatType:string;
2952
+ type:string;
2953
+ position:string;
2954
+ log?:boolean|null;
2955
+ label?:string|null;
2956
+ labelFont?:string|null;
2957
+ ticksFont?:string|null;
2958
+ formatPattern?:string|null;
2959
+ color?:string|null;
2960
+ minRange?:number|null;
2961
+ maxRange?:number|null;
2962
+ minorTicksVisible?:boolean|null;
2963
+ majorTicksVisible?:boolean|null;
2964
+ minorTickCount?:number|null;
2965
+ gapBetweenMajorTicks?:number|null;
2966
+ majorTickLocations?:Array<number>|null;
2967
+ tickLabelAngle?:number|null;
2968
+ invert?:boolean|null;
2969
+ isTimeAxis?:boolean|null;
2965
2970
 
2966
2971
  constructor();
2967
2972
  }
2968
2973
 
2969
- /**
2970
- * Helper class to manage snapshots and deltas and keep not only a contiguous JS array of data per column in the
2971
- * underlying table, but also support a mapping function to let client code translate data in some way for display and
2972
- * keep that cached as well.
2973
- */
2974
- export class ChartData {
2975
- constructor(table:dh.Table);
2976
-
2977
- update(tableData:dh.SubscriptionTableData):void;
2978
- getColumn(columnName:string, mappingFunc:(arg0:any)=>any, currentUpdate:dh.TableData):Array<any>;
2979
- /**
2980
- * Removes some column from the cache, avoiding extra computation on incoming events, and possibly freeing some
2981
- * memory. If this pair of column name and map function are requested again, it will be recomputed from scratch.
2982
- */
2983
- removeColumn(columnName:string, mappingFunc:(arg0:any)=>any):void;
2984
- }
2985
-
2986
2974
  /**
2987
2975
  * Provides the details for a figure.
2988
2976
  *
@@ -3093,14 +3081,58 @@ export namespace dh.plot {
3093
3081
  nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
3094
3082
  hasListeners(name:string):boolean;
3095
3083
  /**
3096
- * Removes an event listener added to this table.
3097
- * @param name -
3098
- * @param callback -
3099
- * @return
3100
- * @typeParam T -
3084
+ * Removes an event listener added to this table.
3085
+ * @param name -
3086
+ * @param callback -
3087
+ * @return
3088
+ * @typeParam T -
3089
+ */
3090
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3091
+ static create(config:FigureDescriptor):Promise<Figure>;
3092
+ }
3093
+
3094
+ /**
3095
+ * Provide the details for a chart.
3096
+ */
3097
+ export class Chart implements dh.HasEventHandling {
3098
+ /**
3099
+ * a new series was added to this chart as part of a multi-series. The series instance is the detail for this event.
3100
+ */
3101
+ static readonly EVENT_SERIES_ADDED:string;
3102
+ /**
3103
+ * The title of the chart.
3104
+ * @return String
3105
+ */
3106
+ readonly title?:string|null;
3107
+
3108
+ protected constructor();
3109
+
3110
+ addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
3111
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
3112
+ hasListeners(name:string):boolean;
3113
+ removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3114
+ get column():number;
3115
+ get showLegend():boolean;
3116
+ /**
3117
+ * The axes used in this chart.
3118
+ * @return dh.plot.Axis
3101
3119
  */
3102
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3103
- static create(config:FigureDescriptor):Promise<Figure>;
3120
+ get axes():Axis[];
3121
+ get is3d():boolean;
3122
+ get titleFont():string;
3123
+ get colspan():number;
3124
+ get titleColor():string;
3125
+ get series():Series[];
3126
+ get rowspan():number;
3127
+ /**
3128
+ * The type of this chart, see <b>ChartType</b> enum for more details.
3129
+ * @return int
3130
+ */
3131
+ get chartType():ChartTypeType;
3132
+ get row():number;
3133
+ get legendColor():string;
3134
+ get legendFont():string;
3135
+ get multiSeries():MultiSeries[];
3104
3136
  }
3105
3137
 
3106
3138
  export class DownsampleOptions {
@@ -3129,13 +3161,6 @@ export namespace dh.plot {
3129
3161
  protected constructor();
3130
3162
  }
3131
3163
 
3132
- export class FigureFetchError {
3133
- error:object;
3134
- errors:Array<string>;
3135
-
3136
- protected constructor();
3137
- }
3138
-
3139
3164
  /**
3140
3165
  * A descriptor used with JsFigureFactory.create to create a figure from JS.
3141
3166
  */
@@ -3171,73 +3196,55 @@ export namespace dh.plot {
3171
3196
  }
3172
3197
 
3173
3198
  /**
3174
- * Provide the details for a chart.
3199
+ * Helper class to manage snapshots and deltas and keep not only a contiguous JS array of data per column in the
3200
+ * underlying table, but also support a mapping function to let client code translate data in some way for display and
3201
+ * keep that cached as well.
3175
3202
  */
3176
- export class Chart implements dh.HasEventHandling {
3177
- /**
3178
- * a new series was added to this chart as part of a multi-series. The series instance is the detail for this event.
3179
- */
3180
- static readonly EVENT_SERIES_ADDED:string;
3203
+ export class ChartData {
3204
+ constructor(table:dh.Table);
3205
+
3206
+ update(tableData:dh.SubscriptionTableData):void;
3207
+ getColumn(columnName:string, mappingFunc:(arg0:any)=>any, currentUpdate:dh.TableData):Array<any>;
3181
3208
  /**
3182
- * The title of the chart.
3183
- * @return String
3209
+ * Removes some column from the cache, avoiding extra computation on incoming events, and possibly freeing some
3210
+ * memory. If this pair of column name and map function are requested again, it will be recomputed from scratch.
3184
3211
  */
3185
- readonly title?:string|null;
3212
+ removeColumn(columnName:string, mappingFunc:(arg0:any)=>any):void;
3213
+ }
3186
3214
 
3187
- protected constructor();
3215
+ export class FigureSourceException {
3216
+ table:dh.Table;
3217
+ source:SeriesDataSource;
3188
3218
 
3189
- addEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):()=>void;
3190
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<CustomEvent<T>>;
3191
- hasListeners(name:string):boolean;
3192
- removeEventListener<T>(name:string, callback:(e:CustomEvent<T>)=>void):boolean;
3193
- get column():number;
3194
- get showLegend():boolean;
3195
- /**
3196
- * The axes used in this chart.
3197
- * @return dh.plot.Axis
3198
- */
3199
- get axes():Axis[];
3200
- get is3d():boolean;
3201
- get titleFont():string;
3202
- get colspan():number;
3203
- get titleColor():string;
3204
- get series():Series[];
3205
- get rowspan():number;
3206
- /**
3207
- * The type of this chart, see <b>ChartType</b> enum for more details.
3208
- * @return int
3209
- */
3210
- get chartType():ChartTypeType;
3211
- get row():number;
3212
- get legendColor():string;
3213
- get legendFont():string;
3214
- get multiSeries():MultiSeries[];
3219
+ protected constructor();
3215
3220
  }
3216
3221
 
3217
- export class AxisDescriptor {
3218
- formatType:string;
3219
- type:string;
3220
- position:string;
3221
- log?:boolean|null;
3222
- label?:string|null;
3223
- labelFont?:string|null;
3224
- ticksFont?:string|null;
3225
- formatPattern?:string|null;
3226
- color?:string|null;
3227
- minRange?:number|null;
3228
- maxRange?:number|null;
3229
- minorTicksVisible?:boolean|null;
3230
- majorTicksVisible?:boolean|null;
3231
- minorTickCount?:number|null;
3232
- gapBetweenMajorTicks?:number|null;
3233
- majorTickLocations?:Array<number>|null;
3234
- tickLabelAngle?:number|null;
3235
- invert?:boolean|null;
3236
- isTimeAxis?:boolean|null;
3222
+ export class SeriesDescriptor {
3223
+ plotStyle:string;
3224
+ name?:string|null;
3225
+ linesVisible?:boolean|null;
3226
+ shapesVisible?:boolean|null;
3227
+ gradientVisible?:boolean|null;
3228
+ lineColor?:string|null;
3229
+ pointLabelFormat?:string|null;
3230
+ xToolTipPattern?:string|null;
3231
+ yToolTipPattern?:string|null;
3232
+ shapeLabel?:string|null;
3233
+ shapeSize?:number|null;
3234
+ shapeColor?:string|null;
3235
+ shape?:string|null;
3236
+ dataSources:Array<SourceDescriptor>;
3237
3237
 
3238
3238
  constructor();
3239
3239
  }
3240
3240
 
3241
+ export class FigureFetchError {
3242
+ error:object;
3243
+ errors:Array<string>;
3244
+
3245
+ protected constructor();
3246
+ }
3247
+
3241
3248
  export class SeriesDataSourceException {
3242
3249
  protected constructor();
3243
3250
 
@@ -3273,14 +3280,13 @@ export namespace dh.plot {
3273
3280
  static runChartDownsample(table:dh.Table, xCol:string, yCols:string[], width:number, xRange?:dh.LongWrapper[]|undefined|null):Promise<dh.Table>;
3274
3281
  }
3275
3282
 
3276
- export class FigureSourceException {
3277
- table:dh.Table;
3278
- source:SeriesDataSource;
3279
3283
 
3280
- protected constructor();
3284
+ type AxisFormatTypeType = number;
3285
+ export class AxisFormatType {
3286
+ static readonly CATEGORY:AxisFormatTypeType;
3287
+ static readonly NUMBER:AxisFormatTypeType;
3281
3288
  }
3282
3289
 
3283
-
3284
3290
  type AxisPositionType = number;
3285
3291
  export class AxisPosition {
3286
3292
  static readonly TOP:AxisPositionType;
@@ -3290,31 +3296,6 @@ export namespace dh.plot {
3290
3296
  static readonly NONE:AxisPositionType;
3291
3297
  }
3292
3298
 
3293
- type AxisTypeType = number;
3294
- export class AxisType {
3295
- static readonly X:AxisTypeType;
3296
- static readonly Y:AxisTypeType;
3297
- static readonly SHAPE:AxisTypeType;
3298
- static readonly SIZE:AxisTypeType;
3299
- static readonly LABEL:AxisTypeType;
3300
- static readonly COLOR:AxisTypeType;
3301
- }
3302
-
3303
- /**
3304
- * This enum describes what kind of chart is being drawn. This may limit what kinds of series can be found on it, or how
3305
- * those series should be rendered.
3306
- */
3307
- type ChartTypeType = number;
3308
- export class ChartType {
3309
- static readonly XY:ChartTypeType;
3310
- static readonly PIE:ChartTypeType;
3311
- static readonly OHLC:ChartTypeType;
3312
- static readonly CATEGORY:ChartTypeType;
3313
- static readonly XYZ:ChartTypeType;
3314
- static readonly CATEGORY_3D:ChartTypeType;
3315
- static readonly TREEMAP:ChartTypeType;
3316
- }
3317
-
3318
3299
  type SeriesPlotStyleType = number;
3319
3300
  export class SeriesPlotStyle {
3320
3301
  static readonly BAR:SeriesPlotStyleType;
@@ -3331,10 +3312,19 @@ export namespace dh.plot {
3331
3312
  static readonly TREEMAP:SeriesPlotStyleType;
3332
3313
  }
3333
3314
 
3334
- type AxisFormatTypeType = number;
3335
- export class AxisFormatType {
3336
- static readonly CATEGORY:AxisFormatTypeType;
3337
- static readonly NUMBER:AxisFormatTypeType;
3315
+ /**
3316
+ * This enum describes what kind of chart is being drawn. This may limit what kinds of series can be found on it, or how
3317
+ * those series should be rendered.
3318
+ */
3319
+ type ChartTypeType = number;
3320
+ export class ChartType {
3321
+ static readonly XY:ChartTypeType;
3322
+ static readonly PIE:ChartTypeType;
3323
+ static readonly OHLC:ChartTypeType;
3324
+ static readonly CATEGORY:ChartTypeType;
3325
+ static readonly XYZ:ChartTypeType;
3326
+ static readonly CATEGORY_3D:ChartTypeType;
3327
+ static readonly TREEMAP:ChartTypeType;
3338
3328
  }
3339
3329
 
3340
3330
  /**
@@ -3366,15 +3356,23 @@ export namespace dh.plot {
3366
3356
  static readonly HOVER_TEXT:SourceTypeType;
3367
3357
  }
3368
3358
 
3359
+ type AxisTypeType = number;
3360
+ export class AxisType {
3361
+ static readonly X:AxisTypeType;
3362
+ static readonly Y:AxisTypeType;
3363
+ static readonly SHAPE:AxisTypeType;
3364
+ static readonly SIZE:AxisTypeType;
3365
+ static readonly LABEL:AxisTypeType;
3366
+ static readonly COLOR:AxisTypeType;
3367
+ }
3368
+
3369
3369
  }
3370
3370
 
3371
3371
  export namespace dh.lsp {
3372
3372
 
3373
- export class SignatureInformation {
3373
+ export class ParameterInformation {
3374
3374
  label:string;
3375
3375
  documentation:MarkupContent;
3376
- parameters:Array<ParameterInformation>;
3377
- activeParameter:number;
3378
3376
 
3379
3377
  constructor();
3380
3378
  }
@@ -3388,6 +3386,19 @@ export namespace dh.lsp {
3388
3386
  isInside(innerStart:Position, innerEnd:Position):boolean;
3389
3387
  }
3390
3388
 
3389
+ export class Position {
3390
+ line:number;
3391
+ character:number;
3392
+
3393
+ constructor();
3394
+
3395
+ lessThan(start:Position):boolean;
3396
+ lessOrEqual(start:Position):boolean;
3397
+ greaterThan(end:Position):boolean;
3398
+ greaterOrEqual(end:Position):boolean;
3399
+ copy():Position;
3400
+ }
3401
+
3391
3402
  export class MarkupContent {
3392
3403
  kind:string;
3393
3404
  value:string;
@@ -3412,51 +3423,39 @@ export namespace dh.lsp {
3412
3423
  constructor();
3413
3424
  }
3414
3425
 
3415
- export class Position {
3416
- line:number;
3417
- character:number;
3418
-
3419
- constructor();
3420
-
3421
- lessThan(start:Position):boolean;
3422
- lessOrEqual(start:Position):boolean;
3423
- greaterThan(end:Position):boolean;
3424
- greaterOrEqual(end:Position):boolean;
3425
- copy():Position;
3426
- }
3427
-
3428
- export class Hover {
3429
- contents:MarkupContent;
3426
+ export class TextDocumentContentChangeEvent {
3430
3427
  range:Range;
3428
+ rangeLength:number;
3429
+ text:string;
3431
3430
 
3432
3431
  constructor();
3433
3432
  }
3434
3433
 
3435
- export class ParameterInformation {
3436
- label:string;
3437
- documentation:MarkupContent;
3434
+ export class TextEdit {
3435
+ range:Range;
3436
+ text:string;
3438
3437
 
3439
3438
  constructor();
3440
3439
  }
3441
3440
 
3442
- export class TextDocumentContentChangeEvent {
3441
+ export class Hover {
3442
+ contents:MarkupContent;
3443
3443
  range:Range;
3444
- rangeLength:number;
3445
- text:string;
3446
3444
 
3447
3445
  constructor();
3448
3446
  }
3449
3447
 
3450
- export class TextEdit {
3451
- range:Range;
3452
- text:string;
3448
+ export class SignatureInformation {
3449
+ label:string;
3450
+ documentation:MarkupContent;
3451
+ parameters:Array<ParameterInformation>;
3452
+ activeParameter:number;
3453
3453
 
3454
3454
  constructor();
3455
3455
  }
3456
3456
 
3457
3457
  }
3458
3458
 
3459
-
3460
3459
  export namespace dh.calendar {
3461
3460
 
3462
3461
  /**
@@ -3489,10 +3488,6 @@ export namespace dh.calendar {
3489
3488
  */
3490
3489
  get businessPeriods():Array<BusinessPeriod>;
3491
3490
  }
3492
- export interface BusinessPeriod {
3493
- get close():string;
3494
- get open():string;
3495
- }
3496
3491
  export interface Holiday {
3497
3492
  /**
3498
3493
  * The date of the Holiday.
@@ -3505,6 +3500,10 @@ export namespace dh.calendar {
3505
3500
  */
3506
3501
  get businessPeriods():Array<BusinessPeriod>;
3507
3502
  }
3503
+ export interface BusinessPeriod {
3504
+ get close():string;
3505
+ get open():string;
3506
+ }
3508
3507
 
3509
3508
  type DayOfWeekType = string;
3510
3509
  export class DayOfWeek {
@@ -3520,3 +3519,4 @@ export namespace dh.calendar {
3520
3519
  }
3521
3520
 
3522
3521
  }
3522
+