@deephaven/jsapi-types 1.0.0-dev0.39.0 → 1.0.0-dev0.39.1

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 +1736 -1772
  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,12 +15,23 @@ 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
+ * Storage service metadata about files and folders.
22
+ */
23
+ export class ItemDetails {
24
+ protected constructor();
25
+
26
+ toString():string;
27
+ get filename():string;
28
+ get basename():string;
29
+ get size():number;
30
+ get etag():string;
31
+ get type():ItemTypeType;
32
+ get dirname():string;
33
+ }
34
+
20
35
  /**
21
36
  * Remote service to read and write files on the server. Paths use "/" as a separator, and should not start with "/".
22
37
  */
@@ -91,21 +106,6 @@ export namespace dh.storage {
91
106
  get etag():string;
92
107
  }
93
108
 
94
- /**
95
- * Storage service metadata about files and folders.
96
- */
97
- export class ItemDetails {
98
- protected constructor();
99
-
100
- toString():string;
101
- get filename():string;
102
- get basename():string;
103
- get size():number;
104
- get etag():string;
105
- get type():ItemTypeType;
106
- get dirname():string;
107
- }
108
-
109
109
 
110
110
  type ItemTypeType = string;
111
111
  export class ItemType {
@@ -117,6 +117,93 @@ export namespace dh.storage {
117
117
 
118
118
  export namespace dh {
119
119
 
120
+ /**
121
+ * Similar to {@link dh.ViewportData}, but with additional properties to reflect
122
+ * the tree structure.
123
+ */
124
+ export interface TreeViewportData extends TableData {
125
+ get(index:LongWrapper|number):TreeRow;
126
+ getData(index:LongWrapper|number, column:Column):any;
127
+ getFormat(index:LongWrapper|number, column:Column):Format;
128
+ get treeSize():number;
129
+ /**
130
+ * The position of the first returned row within the tree.
131
+ */
132
+ get offset():number;
133
+ get columns():Array<Column>;
134
+ get rows():Array<TreeRow>;
135
+ }
136
+ export interface RefreshToken {
137
+ get bytes():string;
138
+ get expiry():number;
139
+ }
140
+ /**
141
+ * Represents a server-side object that may not yet have been fetched by the client. When this object will no longer be
142
+ * used, if {@link fetch} is not called on this object, then {@link close} must be to ensure server-side resources
143
+ * are correctly freed.
144
+ */
145
+ export interface WidgetExportedObject {
146
+ /**
147
+ * Returns the type of this export, typically one of {@link dh.VariableType}, but may also include plugin types. If
148
+ * null, this object cannot be fetched, but can be passed to the server, such as via
149
+ * {@link Widget.sendMessage}.
150
+ * @return the string type of this server-side object, or null.
151
+ */
152
+ readonly type?:string|null;
153
+
154
+ /**
155
+ * Exports another copy of this reference, allowing it to be fetched separately. Results in rejection if the ticket
156
+ * was already closed (either by calling {@link WidgetExportedObject.close} or closing the object returned from {@link WidgetExportedObject.fetch}).
157
+ * @return a promise returning a reexported copy of this object, still referencing the same server-side object.
158
+ */
159
+ reexport():Promise<WidgetExportedObject>;
160
+ /**
161
+ * Returns a promise that will fetch the object represented by this reference. Multiple calls to this will return
162
+ * the same instance.
163
+ * @return a promise that will resolve to a client side object that represents the reference on the server.
164
+ */
165
+ fetch():Promise<any>;
166
+ /**
167
+ * Releases the server-side resources associated with this object, regardless of whether other client-side objects
168
+ * exist that also use that object. Should not be called after fetch() has been invoked.
169
+ */
170
+ close():void;
171
+ }
172
+ export interface WorkerHeapInfo {
173
+ /**
174
+ * Total heap size available for this worker.
175
+ */
176
+ get totalHeapSize():number;
177
+ get freeMemory():number;
178
+ get maximumHeapSize():number;
179
+ }
180
+ /**
181
+ * Row implementation that also provides additional read-only properties. represents visible rows in the table, but
182
+ * with additional properties to reflect the tree structure.
183
+ */
184
+ export interface TreeRow extends Row {
185
+ get(column:Column):any;
186
+ getFormat(column:Column):Format;
187
+ /**
188
+ * True if this node is currently expanded to show its children; false otherwise. Those children will be the
189
+ * rows below this one with a greater depth than this one.
190
+ * @return boolean
191
+ */
192
+ get isExpanded():boolean;
193
+ /**
194
+ * The number of levels above this node; zero for top level nodes. Generally used by the UI to indent the row
195
+ * and its expand/collapse icon.
196
+ * @return int
197
+ */
198
+ get depth():number;
199
+ /**
200
+ * True if this node has children and can be expanded; false otherwise. Note that this value may change when the
201
+ * table updates, depending on the table's configuration.
202
+ * @return boolean
203
+ */
204
+ get hasChildren():boolean;
205
+ get index():LongWrapper;
206
+ }
120
207
  /**
121
208
  * Common interface for various ways of accessing table data and formatting for viewport or non-viewport subscriptions
122
209
  * on tables, data in trees, and snapshots.
@@ -153,6 +240,58 @@ export namespace dh {
153
240
  get rows():Array<Row>;
154
241
  }
155
242
  /**
243
+ * Represents statistics for a given table column.
244
+ */
245
+ export interface ColumnStatistics {
246
+ /**
247
+ * Gets the type of formatting that should be used for given statistic.
248
+ * <p>
249
+ * the format type for a statistic. A null return value means that the column formatting should be used.
250
+ * @param name - the display name of the statistic
251
+ * @return String
252
+ */
253
+ getType(name:string):string;
254
+ /**
255
+ * 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
256
+ * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
257
+ * than 19 unique values.
258
+ * @return Map of String double
259
+ */
260
+ get uniqueValues():Map<string, number>;
261
+ /**
262
+ * Gets a map with the display name of statistics as keys and the numeric stat as a value.
263
+ * <p>
264
+ * A map of each statistic's name to its value.
265
+ * @return Map of String and Object
266
+ */
267
+ get statisticsMap():Map<string, object>;
268
+ }
269
+ /**
270
+ * This object may be pooled internally or discarded and not updated. Do not retain references to it.
271
+ */
272
+ export interface Format {
273
+ /**
274
+ * The format string to apply to the value of this cell.
275
+ * @return String
276
+ */
277
+ readonly formatString?:string|null;
278
+ /**
279
+ * Color to apply to the cell's background, in <b>#rrggbb</b> format.
280
+ * @return String
281
+ */
282
+ readonly backgroundColor?:string|null;
283
+ /**
284
+ * Color to apply to the text, in <b>#rrggbb</b> format.
285
+ * @return String
286
+ */
287
+ readonly color?:string|null;
288
+ /**
289
+ *
290
+ * @deprecated Prefer formatString. Number format string to apply to the value in this cell.
291
+ */
292
+ readonly numberFormat?:string|null;
293
+ }
294
+ /**
156
295
  * Wrap LocalDate values for use in JS. Provides text formatting for display and access to the underlying value.
157
296
  */
158
297
  export interface LocalDateWrapper {
@@ -162,26 +301,6 @@ export namespace dh {
162
301
  getDayOfMonth():number;
163
302
  toString():string;
164
303
  }
165
- export interface HasEventHandling {
166
- /**
167
- * Listen for events on this object.
168
- * @param name - the name of the event to listen for
169
- * @param callback - a function to call when the event occurs
170
- * @return Returns a cleanup function.
171
- * @typeParam T - the type of the data that the event will provide
172
- */
173
- addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
174
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
175
- hasListeners(name:string):boolean;
176
- /**
177
- * Removes an event listener added to this table.
178
- * @param name -
179
- * @param callback -
180
- * @return
181
- * @typeParam T -
182
- */
183
- removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
184
- }
185
304
  /**
186
305
  * Represents the contents of a single widget data message from the server, with a binary data paylod and exported
187
306
  * objects. Implemented both by Widget itself and by the `event.details` when data is received by the client.
@@ -210,63 +329,244 @@ export namespace dh {
210
329
  get exportedObjects():WidgetExportedObject[];
211
330
  }
212
331
  /**
213
- * Behaves like a Table, but doesn't expose all of its API for changing the internal state. Instead, state is driven by
214
- * the upstream table - when it changes handle, this listens and updates its own handle accordingly.
215
- *
216
- * Additionally, this is automatically subscribed to its one and only row, across all columns.
217
- *
218
- * A new config is returned any time it is accessed, to prevent accidental mutation, and to allow it to be used as a
219
- * template when fetching a new totals table, or changing the totals table in use.
220
- *
221
- * A simplistic Table, providing access to aggregation of the table it is sourced from. This table is always
222
- * automatically subscribed to its parent, and adopts changes automatically from it. This class has limited methods
223
- * found on Table. Instances of this type always have a size of one when no groupBy is set on the config, but may
224
- * potentially contain as few as zero rows, or as many as the parent table if each row gets its own group.
225
- *
226
- * When using the `groupBy` feature, it may be desireable to also provide a row to the user with all values across all
227
- * rows. To achieve this, request the same Totals Table again, but remove the `groupBy` setting.
332
+ * Similar to the browser `CustomEvent` type, this class holds only the type of the event, and optionally some
333
+ * details about the event.
334
+ * @typeParam T - the type of the event detail
228
335
  */
229
- export interface TotalsTable extends JoinableTable {
230
- /**
231
- * Specifies the range of items to pass to the client and update as they change. If the columns parameter is not
232
- * provided, all columns will be used. Until this is called, no data will be available. Invoking this will result in
233
- * events to be fired once data becomes available, starting with an <b>updated</b> event and one <b>rowadded</b>
234
- * event per row in that range.
235
- * @param firstRow -
236
- * @param lastRow -
237
- * @param columns -
238
- * @param updateIntervalMs -
239
- */
240
- setViewport(firstRow:number, lastRow:number, columns?:Array<Column>, updateIntervalMs?:number, isReverseViewport?:boolean|undefined|null):void;
241
- /**
242
- * the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
243
- * resolve until that data is ready.
244
- * @return Promise of {@link dh.TableData}
245
- */
246
- getViewportData():Promise<ViewportData>;
247
- /**
248
- * a column by the given name. You should prefer to always retrieve a new Column instance instead of caching a
249
- * returned value.
250
- * @param key -
251
- * @return {@link dh.Column}
252
- */
253
- findColumn(key:string):Column;
254
- /**
255
- * multiple columns specified by the given names.
256
- * @param keys -
257
- * @return {@link dh.Column} array
258
- */
259
- findColumns(keys:string[]):Column[];
260
- /**
261
- * Indicates that the table will no longer be used, and resources used to provide it can be freed up on the server.
262
- */
263
- close():void;
264
- addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
265
- removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
266
- nextEvent<T>(eventName:string, timeoutInMillis:number):Promise<Event<T>>;
267
- hasListeners(name:string):boolean;
268
- /**
269
- * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
336
+ export interface Event<T> {
337
+ get detail():T;
338
+ get type():string;
339
+ }
340
+ export interface LayoutHints {
341
+ readonly searchDisplayMode?:SearchDisplayModeType|null;
342
+
343
+ get hiddenColumns():string[]|null;
344
+ get frozenColumns():string[]|null;
345
+ get columnGroups():ColumnGroup[]|null;
346
+ get areSavedLayoutsAllowed():boolean;
347
+ get frontColumns():string[]|null;
348
+ get backColumns():string[]|null;
349
+ }
350
+ /**
351
+ * This object may be pooled internally or discarded and not updated. Do not retain references to it. Instead,
352
+ * request the viewport again.
353
+ */
354
+ export interface ViewportRow extends Row {
355
+ get(column:Column):any;
356
+ getFormat(column:Column):Format;
357
+ get index():LongWrapper;
358
+ }
359
+ /**
360
+ * Represents a row available in a subscription/snapshot on the client. Do not retain references to rows - they will
361
+ * not function properly when the event isn't actively going off (or promise resolving). Instead, wait for the next
362
+ * event, or re-request the viewport data.
363
+ */
364
+ export interface Row {
365
+ get(column:Column):any;
366
+ getFormat(column:Column):Format;
367
+ get index():LongWrapper;
368
+ }
369
+ /**
370
+ * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
371
+ */
372
+ export interface LocalTimeWrapper {
373
+ valueOf():string;
374
+ getHour():number;
375
+ getMinute():number;
376
+ getSecond():number;
377
+ getNano():number;
378
+ toString():string;
379
+ }
380
+ /**
381
+ * Extends {@link dh.TableData}, but only contains data in the current viewport. The only API change from TableData is that
382
+ * ViewportData also contains the offset to this data, so that the actual row number may be determined.
383
+ * <p>
384
+ * For viewport subscriptions, it is not necessary to read with the key, only with the position.
385
+ * <p>
386
+ * Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided for easier
387
+ * scrolling without going to the server.
388
+ */
389
+ export interface ViewportData extends TableData {
390
+ /**
391
+ * Reads a row object from the viewport, based on its position in the table.
392
+ */
393
+ get(index:LongWrapper|number):ViewportRow;
394
+ getData(index:LongWrapper|number, column:Column):any;
395
+ getFormat(index:LongWrapper|number, column:Column):Format;
396
+ /**
397
+ * The position of the first returned row within the table.
398
+ */
399
+ get offset():number;
400
+ get columns():Array<Column>;
401
+ get rows():Array<ViewportRow>;
402
+ }
403
+ export interface HasEventHandling {
404
+ /**
405
+ * Listen for events on this object.
406
+ * @param name - the name of the event to listen for
407
+ * @param callback - a function to call when the event occurs
408
+ * @return Returns a cleanup function.
409
+ * @typeParam T - the type of the data that the event will provide
410
+ */
411
+ addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
412
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
413
+ hasListeners(name:string):boolean;
414
+ /**
415
+ * Removes an event listener added to this table.
416
+ * @param name -
417
+ * @param callback -
418
+ * @return
419
+ * @typeParam T -
420
+ */
421
+ removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
422
+ }
423
+ /**
424
+ * Represents a table which can be joined to another table. Current implementations are {@link dh.Table} and
425
+ * {@link dh.TotalsTable}.
426
+ */
427
+ export interface JoinableTable {
428
+ freeze():Promise<Table>;
429
+ snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
430
+ /**
431
+ * Joins this table to the provided table, using one of the specified join types:
432
+ * <ul>
433
+ * <li><code>AJ</code>, <code>ReverseAJ</code> (or <code>RAJ</code>) - inexact timeseries joins, based on the
434
+ * provided matching rule.</li>
435
+ * <li><code>CROSS_JOIN</code> (or <code>Join</code>) - cross join of all rows that have matching values in both
436
+ * tables.</li>
437
+ * <li><code>EXACT_JOIN</code> (or <code>ExactJoin</code> - matches values in exactly one row in the right table,
438
+ * with errors if there is not exactly one.</li>
439
+ * <li><code>NATURAL_JOIN</code> (or <code>Natural</code> - matches values in at most one row in the right table,
440
+ * with nulls if there is no match or errors if there are multiple matches.</li>
441
+ * </ul>
442
+ *
443
+ * Note that <code>Left</code> join is not supported here, unlike DHE.
444
+ * <p>
445
+ * See the <a href="https://deephaven.io/core/docs/conceptual/choose-joins/">Choose a join method</a> document for
446
+ * more guidance on picking a join operation.
447
+ * @deprecated Instead, call the specific method for the join type.
448
+ * @param joinType - The type of join to perform, see the list above.
449
+ * @param rightTable - The table to match to values in this table
450
+ * @param columnsToMatch - Columns that should match
451
+ * @param columnsToAdd - Columns from the right table to add to the result - empty/null/absent to add all columns
452
+ * @param asOfMatchRule - If joinType is AJ/RAJ/ReverseAJ, the match rule to use
453
+ * @return a promise that will resolve to the joined table
454
+ */
455
+ join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
456
+ /**
457
+ * Performs an inexact timeseries join, where rows in this table will have columns added from the closest matching
458
+ * row from the right table.
459
+ * <p>
460
+ * The `asOfMatchRule` value can be one of:
461
+ * <ul>
462
+ * <li>LESS_THAN_EQUAL</li>
463
+ * <li>LESS_THAN</li>
464
+ * <li>GREATER_THAN_EQUAL</li>
465
+ * <li>GREATER_THAN</li>
466
+ * </ul>
467
+ * @param rightTable - the table to match to values in this table
468
+ * @param columnsToMatch - the columns that should match, according to the asOfMatchRole
469
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
470
+ * columns
471
+ * @param asOfMatchRule - the match rule to use, see above
472
+ * @return a promise that will resolve to the joined table
473
+ */
474
+ asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
475
+ /**
476
+ * a promise that will be resolved with the newly created table holding the results of the specified cross join
477
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
478
+ * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
479
+ * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
480
+ * @param rightTable - the table to match to values in this table
481
+ * @param columnsToMatch - the columns that should match exactly
482
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
483
+ * columns
484
+ * @param reserveBits - the number of bits of key-space to initially reserve per group, null/absent will let the
485
+ * server select a value
486
+ * @return a promise that will resolve to the joined table
487
+ */
488
+ crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
489
+ /**
490
+ * a promise that will be resolved with the newly created table holding the results of the specified exact join
491
+ * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
492
+ * table being added to the output.
493
+ * @param rightTable - the table to match to values in this table
494
+ * @param columnsToMatch - the columns that should match exactly
495
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
496
+ * columns
497
+ * @return a promise that will resolve to the joined table
498
+ */
499
+ exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
500
+ /**
501
+ * a promise that will be resolved with the newly created table holding the results of the specified natural join
502
+ * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
503
+ * right table being added to the output.
504
+ * @param rightTable - the table to match to values in this table
505
+ * @param columnsToMatch - the columns that should match exactly
506
+ * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
507
+ * columns
508
+ * @return a promise that will resolve to the joined table
509
+ */
510
+ naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
511
+ }
512
+ /**
513
+ * Behaves like a Table, but doesn't expose all of its API for changing the internal state. Instead, state is driven by
514
+ * the upstream table - when it changes handle, this listens and updates its own handle accordingly.
515
+ *
516
+ * Additionally, this is automatically subscribed to its one and only row, across all columns.
517
+ *
518
+ * A new config is returned any time it is accessed, to prevent accidental mutation, and to allow it to be used as a
519
+ * template when fetching a new totals table, or changing the totals table in use.
520
+ *
521
+ * A simplistic Table, providing access to aggregation of the table it is sourced from. This table is always
522
+ * automatically subscribed to its parent, and adopts changes automatically from it. This class has limited methods
523
+ * found on Table. Instances of this type always have a size of one when no groupBy is set on the config, but may
524
+ * potentially contain as few as zero rows, or as many as the parent table if each row gets its own group.
525
+ *
526
+ * When using the `groupBy` feature, it may be desireable to also provide a row to the user with all values across all
527
+ * rows. To achieve this, request the same Totals Table again, but remove the `groupBy` setting.
528
+ */
529
+ export interface TotalsTable extends JoinableTable {
530
+ /**
531
+ * Specifies the range of items to pass to the client and update as they change. If the columns parameter is not
532
+ * provided, all columns will be used. Until this is called, no data will be available. Invoking this will result in
533
+ * events to be fired once data becomes available, starting with an <b>updated</b> event and one <b>rowadded</b>
534
+ * event per row in that range.
535
+ * @param firstRow -
536
+ * @param lastRow -
537
+ * @param columns -
538
+ * @param updateIntervalMs -
539
+ */
540
+ setViewport(firstRow:number, lastRow:number, columns?:Array<Column>, updateIntervalMs?:number, isReverseViewport?:boolean|undefined|null):void;
541
+ /**
542
+ * the currently visible viewport. If the current set of operations has not yet resulted in data, it will not
543
+ * resolve until that data is ready.
544
+ * @return Promise of {@link dh.TableData}
545
+ */
546
+ getViewportData():Promise<ViewportData>;
547
+ /**
548
+ * a column by the given name. You should prefer to always retrieve a new Column instance instead of caching a
549
+ * returned value.
550
+ * @param key -
551
+ * @return {@link dh.Column}
552
+ */
553
+ findColumn(key:string):Column;
554
+ /**
555
+ * multiple columns specified by the given names.
556
+ * @param keys -
557
+ * @return {@link dh.Column} array
558
+ */
559
+ findColumns(keys:string[]):Column[];
560
+ /**
561
+ * Indicates that the table will no longer be used, and resources used to provide it can be freed up on the server.
562
+ */
563
+ close():void;
564
+ addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
565
+ removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
566
+ nextEvent<T>(eventName:string, timeoutInMillis:number):Promise<Event<T>>;
567
+ hasListeners(name:string):boolean;
568
+ /**
569
+ * Replace the currently set sort on this table. Returns the previously set value. Note that the sort property will
270
570
  * immediately return the new value, but you may receive update events using the old sort before the new sort is
271
571
  * applied, and the <b>sortchanged</b> event fires. Reusing existing, applied sorts may enable this to perform
272
572
  * better on the server. The <b>updated</b> event will also fire, but <b>rowadded</b> and <b>rowremoved</b> will
@@ -338,71 +638,10 @@ export namespace dh {
338
638
  */
339
639
  get isRefreshing():boolean;
340
640
  }
341
- /**
342
- * This object may be pooled internally or discarded and not updated. Do not retain references to it. Instead,
343
- * request the viewport again.
344
- */
345
- export interface ViewportRow extends Row {
346
- get(column:Column):any;
347
- getFormat(column:Column):Format;
348
- get index():LongWrapper;
349
- }
350
- /**
351
- * Wrap LocalTime values for use in JS. Provides text formatting for display and access to the underlying value.
352
- */
353
- export interface LocalTimeWrapper {
354
- valueOf():string;
355
- getHour():number;
356
- getMinute():number;
357
- getSecond():number;
358
- getNano():number;
359
- toString():string;
360
- }
361
- /**
362
- * Represents a server-side object that may not yet have been fetched by the client. When this object will no longer be
363
- * used, if {@link fetch} is not called on this object, then {@link close} must be to ensure server-side resources
364
- * are correctly freed.
365
- */
366
- export interface WidgetExportedObject {
367
- /**
368
- * Returns the type of this export, typically one of {@link dh.VariableType}, but may also include plugin types. If
369
- * null, this object cannot be fetched, but can be passed to the server, such as via
370
- * {@link Widget.sendMessage}.
371
- * @return the string type of this server-side object, or null.
372
- */
373
- readonly type?:string|null;
374
-
375
- /**
376
- * Exports another copy of this reference, allowing it to be fetched separately. Results in rejection if the ticket
377
- * was already closed (either by calling {@link WidgetExportedObject.close} or closing the object returned from {@link WidgetExportedObject.fetch}).
378
- * @return a promise returning a reexported copy of this object, still referencing the same server-side object.
379
- */
380
- reexport():Promise<WidgetExportedObject>;
381
- /**
382
- * Returns a promise that will fetch the object represented by this reference. Multiple calls to this will return
383
- * the same instance.
384
- * @return a promise that will resolve to a client side object that represents the reference on the server.
385
- */
386
- fetch():Promise<any>;
387
- /**
388
- * Releases the server-side resources associated with this object, regardless of whether other client-side objects
389
- * exist that also use that object. Should not be called after fetch() has been invoked.
390
- */
391
- close():void;
392
- }
393
- export interface ColumnGroup {
394
- get name():string|null;
395
- get children():string[]|null;
396
- get color():string|null;
397
- }
398
- /**
399
- * Similar to the browser `CustomEvent` type, this class holds only the type of the event, and optionally some
400
- * details about the event.
401
- * @typeParam T - the type of the event detail
402
- */
403
- export interface Event<T> {
404
- get detail():T;
405
- get type():string;
641
+ export interface ColumnGroup {
642
+ get name():string|null;
643
+ get children():string[]|null;
644
+ get color():string|null;
406
645
  }
407
646
  /**
408
647
  * Event data, describing the indexes that were added/removed/updated, and providing access to Rows (and thus data in
@@ -441,244 +680,275 @@ export namespace dh {
441
680
  */
442
681
  get rows():Array<Row>;
443
682
  }
683
+
444
684
  /**
445
- * This object may be pooled internally or discarded and not updated. Do not retain references to it.
685
+ * Configuration object for running Table.treeTable to produce a hierarchical view of a given "flat" table.
686
+ *
687
+ * Like TotalsTableConfig, `TreeTableConfig` supports an operation map indicating how to aggregate the data, as well as
688
+ * an array of column names which will be the layers in the roll-up tree, grouped at each level. An additional optional
689
+ * value can be provided describing the strategy the engine should use when grouping the rows.
446
690
  */
447
- export interface Format {
448
- /**
449
- * The format string to apply to the value of this cell.
450
- * @return String
451
- */
452
- readonly formatString?:string|null;
691
+ export class TreeTableConfig {
453
692
  /**
454
- * Color to apply to the cell's background, in <b>#rrggbb</b> format.
455
- * @return String
693
+ * The column representing the unique ID for each item
456
694
  */
457
- readonly backgroundColor?:string|null;
695
+ idColumn:string;
458
696
  /**
459
- * Color to apply to the text, in <b>#rrggbb</b> format.
460
- * @return String
697
+ * The column representing the parent ID for each item
461
698
  */
462
- readonly color?:string|null;
699
+ parentColumn:string;
463
700
  /**
464
- *
465
- * @deprecated Prefer formatString. Number format string to apply to the value in this cell.
701
+ * Optional parameter indicating if items with an invalid parent ID should be promoted to root. Defaults to false.
466
702
  */
467
- readonly numberFormat?:string|null;
703
+ promoteOrphansToRoot:boolean;
704
+
705
+ constructor();
468
706
  }
707
+
469
708
  /**
470
- * Row implementation that also provides additional read-only properties. represents visible rows in the table, but
471
- * with additional properties to reflect the tree structure.
709
+ * Describes data that can be filtered, either a column reference or a literal value. Used this way, the type of a value
710
+ * can be specified so that values which are ambiguous or not well supported in JS will not be confused with Strings or
711
+ * imprecise numbers (e.g., nanosecond-precision date values). Additionally, once wrapped in this way, methods can be
712
+ * called on these value literal instances. These instances are immutable - any method called on them returns a new
713
+ * instance.
472
714
  */
473
- export interface TreeRow extends Row {
474
- get(column:Column):any;
475
- getFormat(column:Column):Format;
715
+ export class FilterValue {
716
+ protected constructor();
717
+
476
718
  /**
477
- * True if this node is currently expanded to show its children; false otherwise. Those children will be the
478
- * rows below this one with a greater depth than this one.
479
- * @return boolean
719
+ * Constructs a number for the filter API from the given parameter. Can also be used on the values returned from
720
+ * {@link TableData.get} for DateTime values. To create
721
+ * a filter with a date, use <b>dh.DateWrapper.ofJsDate</b> or
722
+ * {@link i18n.DateTimeFormat.parse}. To create a filter with a
723
+ * 64-bit long integer, use {@link LongWrapper.ofString}.
724
+ * @param input - the number to wrap as a FilterValue
725
+ * @return an immutable FilterValue that can be built into a filter
480
726
  */
481
- get isExpanded():boolean;
727
+ static ofNumber(input:LongWrapper|number):FilterValue;
482
728
  /**
483
- * The number of levels above this node; zero for top level nodes. Generally used by the UI to indent the row
484
- * and its expand/collapse icon.
485
- * @return int
729
+ * a filter condition checking if the current value is equal to the given parameter
730
+ * @param term -
731
+ * @return {@link dh.FilterCondition}
486
732
  */
487
- get depth():number;
733
+ eq(term:FilterValue):FilterCondition;
488
734
  /**
489
- * True if this node has children and can be expanded; false otherwise. Note that this value may change when the
490
- * table updates, depending on the table's configuration.
491
- * @return boolean
735
+ * a filter condition checking if the current value is equal to the given parameter, ignoring differences of upper
736
+ * vs lower case
737
+ * @param term -
738
+ * @return {@link dh.FilterCondition}
492
739
  */
493
- get hasChildren():boolean;
494
- get index():LongWrapper;
495
- }
496
- export interface RefreshToken {
497
- get bytes():string;
498
- get expiry():number;
499
- }
500
- export interface LayoutHints {
501
- readonly searchDisplayMode?:SearchDisplayModeType|null;
502
-
503
- get hiddenColumns():string[]|null;
504
- get frozenColumns():string[]|null;
505
- get columnGroups():ColumnGroup[]|null;
506
- get areSavedLayoutsAllowed():boolean;
507
- get frontColumns():string[]|null;
508
- get backColumns():string[]|null;
509
- }
510
- /**
511
- * Similar to {@link dh.ViewportData}, but with additional properties to reflect
512
- * the tree structure.
513
- */
514
- export interface TreeViewportData extends TableData {
515
- get(index:LongWrapper|number):TreeRow;
516
- getData(index:LongWrapper|number, column:Column):any;
517
- getFormat(index:LongWrapper|number, column:Column):Format;
518
- get treeSize():number;
740
+ eqIgnoreCase(term:FilterValue):FilterCondition;
519
741
  /**
520
- * The position of the first returned row within the tree.
742
+ * a filter condition checking if the current value is not equal to the given parameter
743
+ * @param term -
744
+ * @return {@link dh.FilterCondition}
521
745
  */
522
- get offset():number;
523
- get columns():Array<Column>;
524
- get rows():Array<TreeRow>;
525
- }
526
- /**
527
- * Represents a table which can be joined to another table. Current implementations are {@link dh.Table} and
528
- * {@link dh.TotalsTable}.
529
- */
530
- export interface JoinableTable {
531
- freeze():Promise<Table>;
532
- snapshot(baseTable:Table, doInitialSnapshot?:boolean, stampColumns?:string[]):Promise<Table>;
746
+ notEq(term:FilterValue):FilterCondition;
533
747
  /**
534
- * Joins this table to the provided table, using one of the specified join types:
535
- * <ul>
536
- * <li><code>AJ</code>, <code>ReverseAJ</code> (or <code>RAJ</code>) - inexact timeseries joins, based on the
537
- * provided matching rule.</li>
538
- * <li><code>CROSS_JOIN</code> (or <code>Join</code>) - cross join of all rows that have matching values in both
539
- * tables.</li>
540
- * <li><code>EXACT_JOIN</code> (or <code>ExactJoin</code> - matches values in exactly one row in the right table,
541
- * with errors if there is not exactly one.</li>
542
- * <li><code>NATURAL_JOIN</code> (or <code>Natural</code> - matches values in at most one row in the right table,
543
- * with nulls if there is no match or errors if there are multiple matches.</li>
544
- * </ul>
545
- *
546
- * Note that <code>Left</code> join is not supported here, unlike DHE.
547
- * <p>
548
- * See the <a href="https://deephaven.io/core/docs/conceptual/choose-joins/">Choose a join method</a> document for
549
- * more guidance on picking a join operation.
550
- * @deprecated Instead, call the specific method for the join type.
551
- * @param joinType - The type of join to perform, see the list above.
552
- * @param rightTable - The table to match to values in this table
553
- * @param columnsToMatch - Columns that should match
554
- * @param columnsToAdd - Columns from the right table to add to the result - empty/null/absent to add all columns
555
- * @param asOfMatchRule - If joinType is AJ/RAJ/ReverseAJ, the match rule to use
556
- * @return a promise that will resolve to the joined table
748
+ * a filter condition checking if the current value is not equal to the given parameter, ignoring differences of
749
+ * upper vs lower case
750
+ * @param term -
751
+ * @return {@link dh.FilterCondition}
557
752
  */
558
- join(joinType:string, rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
753
+ notEqIgnoreCase(term:FilterValue):FilterCondition;
559
754
  /**
560
- * Performs an inexact timeseries join, where rows in this table will have columns added from the closest matching
561
- * row from the right table.
562
- * <p>
563
- * The `asOfMatchRule` value can be one of:
564
- * <ul>
565
- * <li>LESS_THAN_EQUAL</li>
566
- * <li>LESS_THAN</li>
567
- * <li>GREATER_THAN_EQUAL</li>
568
- * <li>GREATER_THAN</li>
569
- * </ul>
570
- * @param rightTable - the table to match to values in this table
571
- * @param columnsToMatch - the columns that should match, according to the asOfMatchRole
572
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
573
- * columns
574
- * @param asOfMatchRule - the match rule to use, see above
575
- * @return a promise that will resolve to the joined table
755
+ * a filter condition checking if the current value is greater than the given parameter
756
+ * @param term -
757
+ * @return {@link dh.FilterCondition}
576
758
  */
577
- asOfJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, asOfMatchRule?:string|undefined|null):Promise<Table>;
759
+ greaterThan(term:FilterValue):FilterCondition;
578
760
  /**
579
- * a promise that will be resolved with the newly created table holding the results of the specified cross join
580
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
581
- * right table being added to the output. The <b>reserveBits</b> optional parameter lets the client control how the
582
- * key space is distributed between the rows in the two tables, see the Java <b>Table</b> class for details.
583
- * @param rightTable - the table to match to values in this table
584
- * @param columnsToMatch - the columns that should match exactly
585
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
586
- * columns
587
- * @param reserveBits - the number of bits of key-space to initially reserve per group, null/absent will let the
588
- * server select a value
589
- * @return a promise that will resolve to the joined table
761
+ * a filter condition checking if the current value is less than the given parameter
762
+ * @param term -
763
+ * @return {@link dh.FilterCondition}
590
764
  */
591
- crossJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null, reserveBits?:number|undefined|null):Promise<Table>;
765
+ lessThan(term:FilterValue):FilterCondition;
592
766
  /**
593
- * a promise that will be resolved with the newly created table holding the results of the specified exact join
594
- * operation. The `columnsToAdd` parameter is optional, not specifying it will result in all columns from the right
595
- * table being added to the output.
596
- * @param rightTable - the table to match to values in this table
597
- * @param columnsToMatch - the columns that should match exactly
598
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
599
- * columns
600
- * @return a promise that will resolve to the joined table
767
+ * a filter condition checking if the current value is greater than or equal to the given parameter
768
+ * @param term -
769
+ * @return {@link dh.FilterCondition}
601
770
  */
602
- exactJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
771
+ greaterThanOrEqualTo(term:FilterValue):FilterCondition;
603
772
  /**
604
- * a promise that will be resolved with the newly created table holding the results of the specified natural join
605
- * operation. The <b>columnsToAdd</b> parameter is optional, not specifying it will result in all columns from the
606
- * right table being added to the output.
607
- * @param rightTable - the table to match to values in this table
608
- * @param columnsToMatch - the columns that should match exactly
609
- * @param columnsToAdd - columns from the right table to add to the resulting table, empty/null/absent to add all
610
- * columns
611
- * @return a promise that will resolve to the joined table
773
+ * a filter condition checking if the current value is less than or equal to the given parameter
774
+ * @param term -
775
+ * @return {@link dh.FilterCondition}
612
776
  */
613
- naturalJoin(rightTable:JoinableTable, columnsToMatch:Array<string>, columnsToAdd?:Array<string>|undefined|null):Promise<Table>;
614
- }
615
- /**
616
- * Extends {@link dh.TableData}, but only contains data in the current viewport. The only API change from TableData is that
617
- * ViewportData also contains the offset to this data, so that the actual row number may be determined.
618
- * <p>
619
- * For viewport subscriptions, it is not necessary to read with the key, only with the position.
620
- * <p>
621
- * Do not assume that the first row in `rows` is the first visible row, because extra rows may be provided for easier
622
- * scrolling without going to the server.
623
- */
624
- export interface ViewportData extends TableData {
777
+ lessThanOrEqualTo(term:FilterValue):FilterCondition;
625
778
  /**
626
- * Reads a row object from the viewport, based on its position in the table.
779
+ * a filter condition checking if the current value is in the given set of values
780
+ * @param terms -
781
+ * @return {@link dh.FilterCondition}
627
782
  */
628
- get(index:LongWrapper|number):ViewportRow;
629
- getData(index:LongWrapper|number, column:Column):any;
630
- getFormat(index:LongWrapper|number, column:Column):Format;
783
+ in(terms:FilterValue[]):FilterCondition;
631
784
  /**
632
- * The position of the first returned row within the table.
785
+ * a filter condition checking if the current value is in the given set of values, ignoring differences of upper vs
786
+ * lower case
787
+ * @param terms -
788
+ * @return {@link dh.FilterCondition}
633
789
  */
634
- get offset():number;
635
- get columns():Array<Column>;
636
- get rows():Array<ViewportRow>;
637
- }
638
- export interface WorkerHeapInfo {
790
+ inIgnoreCase(terms:FilterValue[]):FilterCondition;
639
791
  /**
640
- * Total heap size available for this worker.
792
+ * a filter condition checking that the current value is not in the given set of values
793
+ * @param terms -
794
+ * @return {@link dh.FilterCondition}
641
795
  */
642
- get totalHeapSize():number;
643
- get freeMemory():number;
644
- get maximumHeapSize():number;
645
- }
646
- /**
647
- * Represents a row available in a subscription/snapshot on the client. Do not retain references to rows - they will
648
- * not function properly when the event isn't actively going off (or promise resolving). Instead, wait for the next
649
- * event, or re-request the viewport data.
650
- */
651
- export interface Row {
652
- get(column:Column):any;
653
- getFormat(column:Column):Format;
654
- get index():LongWrapper;
796
+ notIn(terms:FilterValue[]):FilterCondition;
797
+ /**
798
+ * a filter condition checking that the current value is not in the given set of values, ignoring differences of
799
+ * upper vs lower case
800
+ * @param terms -
801
+ * @return {@link dh.FilterCondition}
802
+ */
803
+ notInIgnoreCase(terms:FilterValue[]):FilterCondition;
804
+ /**
805
+ * a filter condition checking if the given value contains the given string value
806
+ * @param term -
807
+ * @return {@link dh.FilterCondition}
808
+ */
809
+ contains(term:FilterValue):FilterCondition;
810
+ /**
811
+ * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
812
+ * lower case
813
+ * @param term -
814
+ * @return {@link dh.FilterCondition}
815
+ */
816
+ containsIgnoreCase(term:FilterValue):FilterCondition;
817
+ /**
818
+ * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
819
+ * use Java regex syntax
820
+ * @param pattern -
821
+ * @return {@link dh.FilterCondition}
822
+ */
823
+ matches(pattern:FilterValue):FilterCondition;
824
+ /**
825
+ * a filter condition checking if the given value matches the provided regular expressions string, ignoring
826
+ * differences of upper vs lower case. Regex patterns use Java regex syntax
827
+ * @param pattern -
828
+ * @return {@link dh.FilterCondition}
829
+ */
830
+ matchesIgnoreCase(pattern:FilterValue):FilterCondition;
831
+ /**
832
+ * a filter condition checking if the current value is a true boolean
833
+ * @return {@link dh.FilterCondition}
834
+ */
835
+ isTrue():FilterCondition;
836
+ /**
837
+ * a filter condition checking if the current value is a false boolean
838
+ * @return {@link dh.FilterCondition}
839
+ */
840
+ isFalse():FilterCondition;
841
+ /**
842
+ * a filter condition checking if the current value is a null value
843
+ * @return {@link dh.FilterCondition}
844
+ */
845
+ isNull():FilterCondition;
846
+ /**
847
+ * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
848
+ * functions that can be invoked on a String:
849
+ * <ul>
850
+ * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
851
+ * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
852
+ * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
853
+ * regular expression</li>
854
+ * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
855
+ * <p>
856
+ * When invoking against a constant, this should be avoided in favor of FilterValue.contains
857
+ * </p>
858
+ * </li>
859
+ * </ul>
860
+ * @param method -
861
+ * @param args -
862
+ * @return
863
+ */
864
+ invoke(method:string, ...args:FilterValue[]):FilterCondition;
865
+ toString():string;
866
+ /**
867
+ * Constructs a string for the filter API from the given parameter.
868
+ * @param input -
869
+ * @return
870
+ */
871
+ static ofString(input:any):FilterValue;
872
+ /**
873
+ * Constructs a boolean for the filter API from the given parameter.
874
+ * @param b -
875
+ * @return
876
+ */
877
+ static ofBoolean(b:boolean):FilterValue;
655
878
  }
879
+
880
+
656
881
  /**
657
- * Represents statistics for a given table column.
882
+ * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
883
+ * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
884
+ * instance.
658
885
  */
659
- export interface ColumnStatistics {
886
+ export class FilterCondition {
887
+ protected constructor();
888
+
660
889
  /**
661
- * Gets the type of formatting that should be used for given statistic.
662
- * <p>
663
- * the format type for a statistic. A null return value means that the column formatting should be used.
664
- * @param name - the display name of the statistic
665
- * @return String
890
+ * the opposite of this condition
891
+ * @return FilterCondition
666
892
  */
667
- getType(name:string):string;
893
+ not():FilterCondition;
668
894
  /**
669
- * 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
670
- * name to the count of how many times it occurred in the column. This map will be empty for tables containing more
671
- * than 19 unique values.
672
- * @return Map of String double
895
+ * a condition representing the current condition logically ANDed with the other parameters
896
+ * @param filters -
897
+ * @return FilterCondition
673
898
  */
674
- get uniqueValues():Map<string, number>;
899
+ and(...filters:FilterCondition[]):FilterCondition;
675
900
  /**
676
- * Gets a map with the display name of statistics as keys and the numeric stat as a value.
901
+ * a condition representing the current condition logically ORed with the other parameters
902
+ * @param filters -
903
+ * @return FilterCondition.
904
+ */
905
+ or(...filters:FilterCondition[]):FilterCondition;
906
+ /**
907
+ * a string suitable for debugging showing the details of this condition.
908
+ * @return String.
909
+ */
910
+ toString():string;
911
+ get columns():Array<Column>;
912
+ /**
913
+ * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
914
+ * functions:
915
+ * <ul>
916
+ * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
917
+ * than the third</li>
918
+ * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
919
+ * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
920
+ * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
921
+ * "not a number"</i></li>
922
+ * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
923
+ * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
924
+ * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
925
+ * expression</li>
926
+ * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
927
+ * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
677
928
  * <p>
678
- * A map of each statistic's name to its value.
679
- * @return Map of String and Object
929
+ * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
930
+ * method should be used in other cases
931
+ * </p>
932
+ * </li>
933
+ * </ul>
934
+ * @param function -
935
+ * @param args -
936
+ * @return dh.FilterCondition
680
937
  */
681
- get statisticsMap():Map<string, object>;
938
+ static invoke(func:string, ...args:FilterValue[]):FilterCondition;
939
+ /**
940
+ * a filter condition which will check if the given value can be found in any supported column on whatever table
941
+ * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
942
+ * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
943
+ * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
944
+ * String columns, the given value will match any column which contains this string in a case-insensitive search. An
945
+ * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
946
+ * {@link dh.Column.filter}).
947
+ * @param value -
948
+ * @param columns -
949
+ * @return dh.FilterCondition
950
+ */
951
+ static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
682
952
  }
683
953
 
684
954
  /**
@@ -726,32 +996,117 @@ export namespace dh {
726
996
  get direction():string;
727
997
  }
728
998
 
729
- /**
730
- * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
731
- * some options, JS applications can run code on the server, and interact with available exportable objects.
732
- */
733
- export class IdeConnection implements HasEventHandling {
734
- /**
735
- * @deprecated
736
- */
737
- static readonly HACK_CONNECTION_FAILURE:string;
738
- static readonly EVENT_DISCONNECT:string;
739
- static readonly EVENT_RECONNECT:string;
740
- static readonly EVENT_SHUTDOWN:string;
999
+ export class LoginCredentials {
1000
+ type?:string|null;
1001
+ username?:string|null;
1002
+ token?:string|null;
1003
+
1004
+ constructor();
1005
+ }
1006
+
1007
+ export class LongWrapper {
1008
+ protected constructor();
1009
+
1010
+ static ofString(str:string):LongWrapper;
1011
+ asNumber():number;
1012
+ valueOf():string;
1013
+ toString():string;
1014
+ }
1015
+
1016
+ export class CustomColumn {
1017
+ static readonly TYPE_FORMAT_COLOR:string;
1018
+ static readonly TYPE_FORMAT_NUMBER:string;
1019
+ static readonly TYPE_FORMAT_DATE:string;
1020
+ static readonly TYPE_NEW:string;
741
1021
 
742
1022
  protected constructor();
743
1023
 
1024
+ valueOf():string;
1025
+ toString():string;
1026
+ static from(columnInfo:string):CustomColumn;
744
1027
  /**
745
- * Closes the current connection, releasing any resources on the server or client.
1028
+ * The expression to evaluate this custom column.
1029
+ * @return String
746
1030
  */
747
- close():void;
748
- running():Promise<IdeConnection>;
749
- getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
750
- subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
1031
+ get expression():string;
751
1032
  /**
752
- * Makes an `object` available to another user or another client on this same server which knows the value of
753
- * the `sharedTicketBytes`. Use that sharedTicketBytes value like a one-time use password - any other client
754
- * which knows this value can read the same object.
1033
+ * The name of the column to use.
1034
+ * @return String
1035
+ */
1036
+ get name():string;
1037
+ /**
1038
+ * The options for this custom column.
1039
+ * @return CustomColumOptions
1040
+ */
1041
+ get options():CustomColumnOptions;
1042
+ /**
1043
+ * Type of custom column. One of
1044
+ *
1045
+ * <ul>
1046
+ * <li>FORMAT_COLOR</li>
1047
+ * <li>FORMAT_NUMBER</li>
1048
+ * <li>FORMAT_DATE</li>
1049
+ * <li>NEW</li>
1050
+ * </ul>
1051
+ * @return String
1052
+ */
1053
+ get type():string;
1054
+ }
1055
+
1056
+ /**
1057
+ * Options for custom columns.
1058
+ */
1059
+ export class CustomColumnOptions {
1060
+ /**
1061
+ * When specified for custom columns on a rollup table, specifies if the formula apply to rollup or constituent
1062
+ * nodes.
1063
+ */
1064
+ rollupNodeType?:RollupNodeTypeType|null;
1065
+
1066
+ constructor();
1067
+ }
1068
+
1069
+ export class IdeSession implements HasEventHandling {
1070
+ static readonly EVENT_COMMANDSTARTED:string;
1071
+ static readonly EVENT_REQUEST_FAILED:string;
1072
+
1073
+ protected constructor();
1074
+
1075
+ /**
1076
+ * Load the named table, with columns and size information already fully populated.
1077
+ * @param name -
1078
+ * @param applyPreviewColumns - optional boolean
1079
+ * @return {@link Promise} of {@link dh.Table}
1080
+ */
1081
+ getTable(name:string, applyPreviewColumns?:boolean):Promise<Table>;
1082
+ /**
1083
+ * Load the named Figure, including its tables and tablemaps as needed.
1084
+ * @param name -
1085
+ * @return promise of dh.plot.Figure
1086
+ */
1087
+ getFigure(name:string):Promise<dh.plot.Figure>;
1088
+ /**
1089
+ * Loads the named tree table or roll-up table, with column data populated. All nodes are collapsed by default, and
1090
+ * size is presently not available until the viewport is first set.
1091
+ * @param name -
1092
+ * @return {@link Promise} of {@link dh.TreeTable}
1093
+ */
1094
+ getTreeTable(name:string):Promise<TreeTable>;
1095
+ getHierarchicalTable(name:string):Promise<TreeTable>;
1096
+ getPartitionedTable(name:string):Promise<PartitionedTable>;
1097
+ getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
1098
+ newTable(columnNames:string[], types:string[], data:string[][], userTimeZone:string):Promise<Table>;
1099
+ /**
1100
+ * Merges the given tables into a single table. Assumes all tables have the same structure.
1101
+ * @param tables -
1102
+ * @return {@link Promise} of {@link dh.Table}
1103
+ */
1104
+ mergeTables(tables:Table[]):Promise<Table>;
1105
+ bindTableToVariable(table:Table, name:string):Promise<void>;
1106
+ /**
1107
+ * Makes the `object` available to another user or another client on this same server which knows the value of
1108
+ * the `sharedTicketBytes`. Use that sharedTicketBytes value like a one-time use password - any other client
1109
+ * which knows this value can read the same object.
755
1110
  * <p>
756
1111
  * Shared objects will remain available using the sharedTicketBytes until the client that first shared them
757
1112
  * releases/closes their copy of the object. Whatever side-channel is used to share the bytes, be sure to wait until
@@ -778,61 +1133,37 @@ export namespace dh {
778
1133
  * @return A promise that will resolve to the shared object, or will reject with an error if it cannot be read.
779
1134
  */
780
1135
  getSharedObject(sharedTicketBytes:string|Uint8Array, type:string):Promise<any>;
1136
+ subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
1137
+ close():void;
1138
+ runCode(code:string):Promise<dh.ide.CommandResult>;
1139
+ onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
1140
+ openDocument(params:object):void;
1141
+ changeDocument(params:object):void;
1142
+ getCompletionItems(params:object):Promise<Array<dh.lsp.CompletionItem>>;
1143
+ getSignatureHelp(params:object):Promise<Array<dh.lsp.SignatureInformation>>;
1144
+ getHover(params:object):Promise<dh.lsp.Hover>;
1145
+ closeDocument(params:object):void;
781
1146
  /**
782
- * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
783
- * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
784
- * log messages as are presently available.
785
- * @param callback -
786
- * @return {@link io.deephaven.web.shared.fu.JsRunnable}
1147
+ * Creates an empty table with the specified number of rows. Optionally columns and types may be specified, but all
1148
+ * values will be null.
1149
+ * @param size -
1150
+ * @return {@link Promise} of {@link dh.Table}
787
1151
  */
788
- onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
789
- startSession(type:string):Promise<IdeSession>;
790
- getConsoleTypes():Promise<Array<string>>;
791
- getWorkerHeapInfo():Promise<WorkerHeapInfo>;
1152
+ emptyTable(size:number):Promise<Table>;
792
1153
  /**
793
- * Listen for events on this object.
794
- * @param name - the name of the event to listen for
795
- * @param callback - a function to call when the event occurs
796
- * @return Returns a cleanup function.
797
- * @typeParam T - the type of the data that the event will provide
1154
+ * Creates a new table that ticks automatically every "periodNanos" nanoseconds. A start time may be provided; if so
1155
+ * the table will be populated with the interval from the specified date until now.
1156
+ * @param periodNanos -
1157
+ * @param startTime -
1158
+ * @return {@link Promise} of {@link dh.Table}
798
1159
  */
1160
+ timeTable(periodNanos:number, startTime?:DateWrapper):Promise<Table>;
799
1161
  addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
800
1162
  nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
801
1163
  hasListeners(name:string):boolean;
802
- /**
803
- * Removes an event listener added to this table.
804
- * @param name -
805
- * @param callback -
806
- * @return
807
- * @typeParam T -
808
- */
809
1164
  removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
810
1165
  }
811
1166
 
812
- /**
813
- * Configuration object for running Table.treeTable to produce a hierarchical view of a given "flat" table.
814
- *
815
- * Like TotalsTableConfig, `TreeTableConfig` supports an operation map indicating how to aggregate the data, as well as
816
- * an array of column names which will be the layers in the roll-up tree, grouped at each level. An additional optional
817
- * value can be provided describing the strategy the engine should use when grouping the rows.
818
- */
819
- export class TreeTableConfig {
820
- /**
821
- * The column representing the unique ID for each item
822
- */
823
- idColumn:string;
824
- /**
825
- * The column representing the parent ID for each item
826
- */
827
- parentColumn:string;
828
- /**
829
- * Optional parameter indicating if items with an invalid parent ID should be promoted to root. Defaults to false.
830
- */
831
- promoteOrphansToRoot:boolean;
832
-
833
- constructor();
834
- }
835
-
836
1167
  /**
837
1168
  * Provides access to data in a table. Note that several methods present their response through Promises. This allows
838
1169
  * the client to both avoid actually connecting to the server until necessary, and also will permit some changes not to
@@ -1187,35 +1518,69 @@ export namespace dh {
1187
1518
  static reverse():Sort;
1188
1519
  }
1189
1520
 
1190
-
1191
1521
  /**
1192
- * This object serves as a "handle" to a subscription, allowing it to be acted on directly or canceled outright. If you
1193
- * retain an instance of this, you have two choices - either only use it to call `close()` on it to stop the table's
1194
- * viewport without creating a new one, or listen directly to this object instead of the table for data events, and
1195
- * always call `close()` when finished. Calling any method on this object other than close() will result in it
1196
- * continuing to live on after `setViewport` is called on the original table, or after the table is modified.
1522
+ * Presently, this is the entrypoint into the Deephaven JS API. By creating an instance of this with the server URL and
1523
+ * some options, JS applications can run code on the server, and interact with available exportable objects.
1197
1524
  */
1198
- export class TableViewportSubscription implements HasEventHandling {
1525
+ export class IdeConnection implements HasEventHandling {
1526
+ /**
1527
+ * @deprecated
1528
+ */
1529
+ static readonly HACK_CONNECTION_FAILURE:string;
1530
+ static readonly EVENT_DISCONNECT:string;
1531
+ static readonly EVENT_RECONNECT:string;
1532
+ static readonly EVENT_SHUTDOWN:string;
1533
+
1199
1534
  protected constructor();
1200
1535
 
1201
1536
  /**
1202
- * Changes the rows and columns set on this viewport. This cannot be used to change the update interval.
1203
- * @param firstRow -
1204
- * @param lastRow -
1205
- * @param columns -
1206
- * @param updateIntervalMs -
1537
+ * Closes the current connection, releasing any resources on the server or client.
1207
1538
  */
1208
- setViewport(firstRow:number, lastRow:number, columns?:Column[]|undefined|null, updateIntervalMs?:number|undefined|null, isReverseViewport?:boolean|undefined|null):void;
1539
+ close():void;
1540
+ running():Promise<IdeConnection>;
1541
+ getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
1542
+ subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
1209
1543
  /**
1210
- * Stops this viewport from running, stopping all events on itself and on the table that created it.
1544
+ * Makes an `object` available to another user or another client on this same server which knows the value of
1545
+ * the `sharedTicketBytes`. Use that sharedTicketBytes value like a one-time use password - any other client
1546
+ * which knows this value can read the same object.
1547
+ * <p>
1548
+ * Shared objects will remain available using the sharedTicketBytes until the client that first shared them
1549
+ * releases/closes their copy of the object. Whatever side-channel is used to share the bytes, be sure to wait until
1550
+ * the remote end has signaled that it has successfully fetched the object before releasing it from this client.
1551
+ * <p>
1552
+ * Be sure to use an unpredictable value for the shared ticket bytes, like a UUID or other large, random value to
1553
+ * prevent access by unauthorized clients.
1554
+ * @param object - the object to share with another client/user
1555
+ * @param sharedTicketBytes - the value which another client/user must know to obtain the object. It may be a unicode
1556
+ * string (will be encoded as utf8 bytes), or a {@link Uint8Array} value.
1557
+ * @return A promise that will resolve to the value passed as sharedTicketBytes when the object is ready to be read
1558
+ * by another client, or will reject if an error occurs.
1211
1559
  */
1212
- close():void;
1560
+ shareObject(object:Table|Widget|WidgetExportedObject|PartitionedTable|TotalsTable|TreeTable, sharedTicketBytes:string|Uint8Array):Promise<string|Uint8Array>;
1213
1561
  /**
1214
- * Gets the data currently visible in this viewport
1215
- * @return Promise of {@link dh.TableData}.
1562
+ * Reads an object shared by another client to this server with the `sharedTicketBytes`. Until the other
1563
+ * client releases this object (or their session ends), the object will be available on the server.
1564
+ * <p>
1565
+ * The type of the object must be passed so that the object can be read from the server correct - the other client
1566
+ * should provide this information.
1567
+ * @param sharedTicketBytes - the value provided by another client/user to obtain the object. It may be a unicode
1568
+ * string (will be encoded as utf8 bytes), or a {@link Uint8Array} value.
1569
+ * @param type - The type of the object, so it can be correctly read from the server
1570
+ * @return A promise that will resolve to the shared object, or will reject with an error if it cannot be read.
1216
1571
  */
1217
- getViewportData():Promise<ViewportData>;
1218
- snapshot(rows:RangeSet, columns:Column[]):Promise<TableData>;
1572
+ getSharedObject(sharedTicketBytes:string|Uint8Array, type:string):Promise<any>;
1573
+ /**
1574
+ * Register a callback function to handle any log messages that are emitted on the server. Returns a function ,
1575
+ * which can be invoked to remove this log handler. Any log handler registered in this way will receive as many old
1576
+ * log messages as are presently available.
1577
+ * @param callback -
1578
+ * @return {@link io.deephaven.web.shared.fu.JsRunnable}
1579
+ */
1580
+ onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
1581
+ startSession(type:string):Promise<IdeSession>;
1582
+ getConsoleTypes():Promise<Array<string>>;
1583
+ getWorkerHeapInfo():Promise<WorkerHeapInfo>;
1219
1584
  /**
1220
1585
  * Listen for events on this object.
1221
1586
  * @param name - the name of the event to listen for
@@ -1237,20 +1602,155 @@ export namespace dh {
1237
1602
  }
1238
1603
 
1239
1604
  /**
1240
- * Represents a set of Tables each corresponding to some key. The keys are available locally, but a call must be made to
1241
- * the server to get each Table. All tables will have the same structure.
1605
+ * A js type for operating on input tables.
1606
+ *
1607
+ * Represents a User Input Table, which can have data added to it from other sources.
1608
+ *
1609
+ * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
1610
+ * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
1611
+ * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
1612
+ * before sending the next operation.
1613
+ *
1614
+ * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
1615
+ *
1616
+ * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
1617
+ * object.
1242
1618
  */
1243
- export class PartitionedTable implements HasEventHandling {
1619
+ export class InputTable {
1620
+ protected constructor();
1621
+
1244
1622
  /**
1245
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1623
+ * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
1624
+ * property at that name and validate it can be put into the given column type.
1625
+ * @param row -
1626
+ * @param userTimeZone -
1627
+ * @return Promise of dh.InputTable
1246
1628
  */
1247
- static readonly EVENT_KEYADDED:string;
1629
+ addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
1248
1630
  /**
1249
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1631
+ * Add multiple rows to a table.
1632
+ * @param rows -
1633
+ * @param userTimeZone -
1634
+ * @return Promise of dh.InputTable
1250
1635
  */
1251
- static readonly EVENT_DISCONNECT:string;
1636
+ addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
1252
1637
  /**
1253
- * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1638
+ * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
1639
+ * copied, and all key columns must have values filled in. This only copies the current state of the source table;
1640
+ * future updates to the source table will not be reflected in the Input Table. The returned promise will be
1641
+ * resolved to the same InputTable instance this method was called upon once the server returns.
1642
+ * @param tableToAdd -
1643
+ * @return Promise of dh.InputTable
1644
+ */
1645
+ addTable(tableToAdd:Table):Promise<InputTable>;
1646
+ /**
1647
+ * Add multiple tables to this Input Table.
1648
+ * @param tablesToAdd -
1649
+ * @return Promise of dh.InputTable
1650
+ */
1651
+ addTables(tablesToAdd:Table[]):Promise<InputTable>;
1652
+ /**
1653
+ * Deletes an entire table from this Input Table. Key columns must match the Input Table.
1654
+ * @param tableToDelete -
1655
+ * @return Promise of dh.InputTable
1656
+ */
1657
+ deleteTable(tableToDelete:Table):Promise<InputTable>;
1658
+ /**
1659
+ * Delete multiple tables from this Input Table.
1660
+ * @param tablesToDelete -
1661
+ * @return
1662
+ */
1663
+ deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
1664
+ /**
1665
+ * A list of the key columns, by name
1666
+ * @return String array.
1667
+ */
1668
+ get keys():string[];
1669
+ /**
1670
+ * A list of the value columns, by name
1671
+ * @return String array.
1672
+ */
1673
+ get values():string[];
1674
+ /**
1675
+ * A list of the key columns.
1676
+ * @return Column array.
1677
+ */
1678
+ get keyColumns():Column[];
1679
+ /**
1680
+ * A list of the value Column objects
1681
+ * @return {@link dh.Column} array.
1682
+ */
1683
+ get valueColumns():Column[];
1684
+ /**
1685
+ * The source table for this Input Table
1686
+ * @return dh.table
1687
+ */
1688
+ get table():Table;
1689
+ }
1690
+
1691
+ /**
1692
+ * This object serves as a "handle" to a subscription, allowing it to be acted on directly or canceled outright. If you
1693
+ * retain an instance of this, you have two choices - either only use it to call `close()` on it to stop the table's
1694
+ * viewport without creating a new one, or listen directly to this object instead of the table for data events, and
1695
+ * always call `close()` when finished. Calling any method on this object other than close() will result in it
1696
+ * continuing to live on after `setViewport` is called on the original table, or after the table is modified.
1697
+ */
1698
+ export class TableViewportSubscription implements HasEventHandling {
1699
+ protected constructor();
1700
+
1701
+ /**
1702
+ * Changes the rows and columns set on this viewport. This cannot be used to change the update interval.
1703
+ * @param firstRow -
1704
+ * @param lastRow -
1705
+ * @param columns -
1706
+ * @param updateIntervalMs -
1707
+ */
1708
+ setViewport(firstRow:number, lastRow:number, columns?:Column[]|undefined|null, updateIntervalMs?:number|undefined|null, isReverseViewport?:boolean|undefined|null):void;
1709
+ /**
1710
+ * Stops this viewport from running, stopping all events on itself and on the table that created it.
1711
+ */
1712
+ close():void;
1713
+ /**
1714
+ * Gets the data currently visible in this viewport
1715
+ * @return Promise of {@link dh.TableData}.
1716
+ */
1717
+ getViewportData():Promise<ViewportData>;
1718
+ snapshot(rows:RangeSet, columns:Column[]):Promise<TableData>;
1719
+ /**
1720
+ * Listen for events on this object.
1721
+ * @param name - the name of the event to listen for
1722
+ * @param callback - a function to call when the event occurs
1723
+ * @return Returns a cleanup function.
1724
+ * @typeParam T - the type of the data that the event will provide
1725
+ */
1726
+ addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
1727
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
1728
+ hasListeners(name:string):boolean;
1729
+ /**
1730
+ * Removes an event listener added to this table.
1731
+ * @param name -
1732
+ * @param callback -
1733
+ * @return
1734
+ * @typeParam T -
1735
+ */
1736
+ removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
1737
+ }
1738
+
1739
+ /**
1740
+ * Represents a set of Tables each corresponding to some key. The keys are available locally, but a call must be made to
1741
+ * the server to get each Table. All tables will have the same structure.
1742
+ */
1743
+ export class PartitionedTable implements HasEventHandling {
1744
+ /**
1745
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1746
+ */
1747
+ static readonly EVENT_KEYADDED:string;
1748
+ /**
1749
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1750
+ */
1751
+ static readonly EVENT_DISCONNECT:string;
1752
+ /**
1753
+ * Indicates that a new key has been added to the array of keys, which can now be fetched with getTable.
1254
1754
  */
1255
1755
  static readonly EVENT_RECONNECT:string;
1256
1756
  /**
@@ -1331,133 +1831,210 @@ export namespace dh {
1331
1831
  }
1332
1832
 
1333
1833
  /**
1334
- * Describes a filter which can be applied to a table. Replacing these instances may be more expensive than reusing
1335
- * them. These instances are immutable - all operations that compose them to build bigger expressions return a new
1336
- * instance.
1834
+ * Deprecated for use in Deephaven Core.
1835
+ * @deprecated
1337
1836
  */
1338
- export class FilterCondition {
1339
- protected constructor();
1837
+ export class Client {
1838
+ static readonly EVENT_REQUEST_FAILED:string;
1839
+ static readonly EVENT_REQUEST_STARTED:string;
1840
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
1841
+
1842
+ constructor();
1843
+ }
1340
1844
 
1845
+ /**
1846
+ * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
1847
+ * indicating how that table was configured when it was declared, and each Totals Table has a similar property
1848
+ * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
1849
+ * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
1850
+ * of <b>TotalsTableConfig</b> will be supplied.
1851
+ *
1852
+ * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
1853
+ * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
1854
+ * expected formats.
1855
+ */
1856
+ export class TotalsTableConfig {
1341
1857
  /**
1342
- * the opposite of this condition
1343
- * @return FilterCondition
1858
+ * @deprecated
1344
1859
  */
1345
- not():FilterCondition;
1860
+ static readonly COUNT:string;
1346
1861
  /**
1347
- * a condition representing the current condition logically ANDed with the other parameters
1348
- * @param filters -
1349
- * @return FilterCondition
1862
+ * @deprecated
1350
1863
  */
1351
- and(...filters:FilterCondition[]):FilterCondition;
1864
+ static readonly MIN:string;
1352
1865
  /**
1353
- * a condition representing the current condition logically ORed with the other parameters
1354
- * @param filters -
1355
- * @return FilterCondition.
1866
+ * @deprecated
1356
1867
  */
1357
- or(...filters:FilterCondition[]):FilterCondition;
1868
+ static readonly MAX:string;
1358
1869
  /**
1359
- * a string suitable for debugging showing the details of this condition.
1360
- * @return String.
1870
+ * @deprecated
1361
1871
  */
1362
- toString():string;
1363
- get columns():Array<Column>;
1872
+ static readonly SUM:string;
1364
1873
  /**
1365
- * a filter condition invoking a static function with the given parameters. Currently supported Deephaven static
1366
- * functions:
1367
- * <ul>
1368
- * <li><b>inRange</b>: Given three comparable values, returns true if the first is less than the second but greater
1369
- * than the third</li>
1370
- * <li><b>isInf</b>:Returns true if the given number is <i>infinity</i></li>
1371
- * <li><b>isNaN</b>:Returns true if the given number is <i>not a number</i></li>
1372
- * <li><b>isNormal</b>:Returns true if the given number <i>is not null</i>, <i>is not infinity</i>, and <i>is not
1373
- * "not a number"</i></li>
1374
- * <li><b>startsWith</b>:Returns true if the first string starts with the second string</li>
1375
- * <li><b>endsWith</b>Returns true if the first string ends with the second string</li>
1376
- * <li><b>matches</b>:Returns true if the first string argument matches the second string used as a Java regular
1377
- * expression</li>
1378
- * <li><b>contains</b>:Returns true if the first string argument contains the second string as a substring</li>
1379
- * <li><b>in</b>:Returns true if the first string argument can be found in the second array argument.
1380
- * <p>
1381
- * Note that the array can only be specified as a column reference at this time - typically the `FilterValue.in`
1382
- * method should be used in other cases
1383
- * </p>
1384
- * </li>
1385
- * </ul>
1386
- * @param function -
1387
- * @param args -
1388
- * @return dh.FilterCondition
1874
+ * @deprecated
1389
1875
  */
1390
- static invoke(func:string, ...args:FilterValue[]):FilterCondition;
1876
+ static readonly ABS_SUM:string;
1391
1877
  /**
1392
- * a filter condition which will check if the given value can be found in any supported column on whatever table
1393
- * this FilterCondition is passed to. This FilterCondition is somewhat unique in that it need not be given a column
1394
- * instance, but will adapt to any table. On numeric columns, with a value passed in which can be parsed as a
1395
- * number, the column will be filtered to numbers which equal, or can be "rounded" effectively to this number. On
1396
- * String columns, the given value will match any column which contains this string in a case-insensitive search. An
1397
- * optional second argument can be passed, an array of `FilterValue` from the columns to limit this search to (see
1398
- * {@link dh.Column.filter}).
1399
- * @param value -
1400
- * @param columns -
1401
- * @return dh.FilterCondition
1878
+ * @deprecated
1402
1879
  */
1403
- static search(value:FilterValue, columns?:FilterValue[]):FilterCondition;
1404
- }
1405
-
1406
- /**
1407
- * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
1408
- * mechanism, and so reimplemented here.
1409
- * <p>
1410
- * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
1411
- * <p>
1412
- * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
1413
- * operations are performed, but encourage the client code to re-set them to the desired position.
1414
- * <p>
1415
- * The table size will be -1 until a viewport has been fetched.
1416
- * <p>
1417
- * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
1418
- * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
1419
- * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
1420
- * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
1421
- * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
1422
- * the viewport).
1423
- * <p>
1424
- * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
1425
- * and count of children at each level of the hierarchy, and differences in the data that is available.
1426
- * <p>
1427
- * <ul>
1428
- * <li>There is no {@link Table.totalSize | totalSize} property.</li>
1429
- * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
1430
- * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
1431
- * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
1432
- * new operation is pending.</li>
1433
- * <li>Custom columns are supported on Rollup tables, but not on Tree tables. If the TreeTable was created client-side,
1434
- * the original Table can have custom columns applied, and the TreeTable can be recreated.</li>
1435
- * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
1436
- * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
1437
- * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
1438
- * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
1439
- * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
1440
- * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
1441
- * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
1442
- * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
1443
- * where {@link TreeRowImpl.hasChildren} is false will be different from usual.</li>
1444
- * </ul>
1445
- */
1446
- export class TreeTable implements HasEventHandling {
1880
+ static readonly VAR:string;
1447
1881
  /**
1448
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1882
+ * @deprecated
1449
1883
  */
1450
- static readonly EVENT_UPDATED:string;
1884
+ static readonly AVG:string;
1451
1885
  /**
1452
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1886
+ * @deprecated
1453
1887
  */
1454
- static readonly EVENT_DISCONNECT:string;
1888
+ static readonly STD:string;
1455
1889
  /**
1456
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1890
+ * @deprecated
1457
1891
  */
1458
- static readonly EVENT_RECONNECT:string;
1892
+ static readonly FIRST:string;
1459
1893
  /**
1460
- * event.detail is the currently visible viewport data based on the active viewport configuration.
1894
+ * @deprecated
1895
+ */
1896
+ static readonly LAST:string;
1897
+ /**
1898
+ * @deprecated
1899
+ */
1900
+ static readonly SKIP:string;
1901
+ /**
1902
+ * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
1903
+ */
1904
+ showTotalsByDefault:boolean;
1905
+ /**
1906
+ * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
1907
+ */
1908
+ showGrandTotalsByDefault:boolean;
1909
+ /**
1910
+ * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
1911
+ */
1912
+ defaultOperation:AggregationOperationType;
1913
+ /**
1914
+ * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
1915
+ * Table. If a column is omitted, the defaultOperation is used.
1916
+ */
1917
+ operationMap:{ [key: string]: Array<AggregationOperationType>; };
1918
+ /**
1919
+ * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
1920
+ * these columns. See also `Table.selectDistinct`.
1921
+ */
1922
+ groupBy:Array<string>;
1923
+
1924
+ constructor();
1925
+
1926
+ toString():string;
1927
+ }
1928
+
1929
+ /**
1930
+ * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
1931
+ */
1932
+ export class BigIntegerWrapper {
1933
+ protected constructor();
1934
+
1935
+ static ofString(str:string):BigIntegerWrapper;
1936
+ asNumber():number;
1937
+ valueOf():string;
1938
+ toString():string;
1939
+ equals(o:object):boolean;
1940
+ hashCode():number;
1941
+ }
1942
+
1943
+ export class CoreClient implements HasEventHandling {
1944
+ static readonly EVENT_CONNECT:string;
1945
+ static readonly EVENT_DISCONNECT:string;
1946
+ static readonly EVENT_RECONNECT:string;
1947
+ static readonly EVENT_RECONNECT_AUTH_FAILED:string;
1948
+ static readonly EVENT_REQUEST_FAILED:string;
1949
+ static readonly EVENT_REQUEST_STARTED:string;
1950
+ static readonly EVENT_REQUEST_SUCCEEDED:string;
1951
+ /**
1952
+ * @deprecated
1953
+ */
1954
+ static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
1955
+ static readonly LOGIN_TYPE_PASSWORD:string;
1956
+ static readonly LOGIN_TYPE_ANONYMOUS:string;
1957
+
1958
+ constructor(serverUrl:string, connectOptions?:ConnectOptions);
1959
+
1960
+ running():Promise<CoreClient>;
1961
+ getServerUrl():string;
1962
+ getAuthConfigValues():Promise<string[][]>;
1963
+ login(credentials:LoginCredentials):Promise<void>;
1964
+ relogin(token:RefreshToken):Promise<void>;
1965
+ onConnected(timeoutInMillis?:number):Promise<void>;
1966
+ getServerConfigValues():Promise<string[][]>;
1967
+ getStorageService():dh.storage.StorageService;
1968
+ getAsIdeConnection():Promise<IdeConnection>;
1969
+ disconnect():void;
1970
+ addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
1971
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
1972
+ hasListeners(name:string):boolean;
1973
+ removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
1974
+ }
1975
+
1976
+ export class DateWrapper extends LongWrapper {
1977
+ protected constructor();
1978
+
1979
+ static ofJsDate(date:Date):DateWrapper;
1980
+ asDate():Date;
1981
+ }
1982
+
1983
+ /**
1984
+ * Behaves like a {@link dh.Table} externally, but data, state, and viewports are managed by an entirely different
1985
+ * mechanism, and so reimplemented here.
1986
+ * <p>
1987
+ * Any time a change is made, we build a new request and send it to the server, and wait for the updated state.
1988
+ * <p>
1989
+ * Semantics around getting updates from the server are slightly different - we don't "unset" the viewport here after
1990
+ * operations are performed, but encourage the client code to re-set them to the desired position.
1991
+ * <p>
1992
+ * The table size will be -1 until a viewport has been fetched.
1993
+ * <p>
1994
+ * Similar to a table, a Tree Table provides access to subscribed viewport data on the current hierarchy. A different
1995
+ * Row type is used within that viewport, showing the depth of that node within the tree and indicating details about
1996
+ * whether it has children or is expanded. The Tree Table itself then provides the ability to change if a row is
1997
+ * expanded or not. Methods used to control or check if a row should be expanded or not can be invoked on a TreeRow
1998
+ * instance, or on the number of the row (thus allowing for expanding/collapsing rows which are not currently visible in
1999
+ * the viewport).
2000
+ * <p>
2001
+ * Events and viewports are somewhat different from tables, due to the expense of computing the expanded/collapsed rows
2002
+ * and count of children at each level of the hierarchy, and differences in the data that is available.
2003
+ * <p>
2004
+ * <ul>
2005
+ * <li>There is no {@link Table.totalSize | totalSize} property.</li>
2006
+ * <li>The viewport is not un-set when changes are made to filter or sort, but changes will continue to be streamed in.
2007
+ * It is suggested that the viewport be changed to the desired position (usually the first N rows) after any filter/sort
2008
+ * change is made. Likewise, {@link getViewportData} will always return the most recent data, and will not wait if a
2009
+ * new operation is pending.</li>
2010
+ * <li>Custom columns are supported on Rollup tables, but not on Tree tables. If the TreeTable was created client-side,
2011
+ * the original Table can have custom columns applied, and the TreeTable can be recreated.</li>
2012
+ * <li>Whereas Table has a {@link Table.totalsTableConfig} property, it is defined here as a method,
2013
+ * {@link getTotalsTableConfig}. This returns a promise so the config can be fetched asynchronously.</li>
2014
+ * <li>Totals Tables for trees vary in behavior between tree tables and roll-up tables. This behavior is based on the
2015
+ * original flat table used to produce the Tree Table - for a hierarchical table (i.e. Table.treeTable in the query
2016
+ * config), the totals will include non-leaf nodes (since they are themselves actual rows in the table), but in a
2017
+ * roll-up table, the totals only include leaf nodes (as non-leaf nodes are generated through grouping the contents of
2018
+ * the original table). Roll-ups also have the {@link dh.includeConstituents} property, indicating that a
2019
+ * {@link dh.Column} in the tree may have a {@link Column.constituentType} property reflecting that the type of cells
2020
+ * where {@link TreeRowImpl.hasChildren} is false will be different from usual.</li>
2021
+ * </ul>
2022
+ */
2023
+ export class TreeTable implements HasEventHandling {
2024
+ /**
2025
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
2026
+ */
2027
+ static readonly EVENT_UPDATED:string;
2028
+ /**
2029
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
2030
+ */
2031
+ static readonly EVENT_DISCONNECT:string;
2032
+ /**
2033
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
2034
+ */
2035
+ static readonly EVENT_RECONNECT:string;
2036
+ /**
2037
+ * event.detail is the currently visible viewport data based on the active viewport configuration.
1461
2038
  */
1462
2039
  static readonly EVENT_RECONNECTFAILED:string;
1463
2040
  /**
@@ -1629,175 +2206,48 @@ export namespace dh {
1629
2206
  }
1630
2207
 
1631
2208
  /**
1632
- * Describes data that can be filtered, either a column reference or a literal value. Used this way, the type of a value
1633
- * can be specified so that values which are ambiguous or not well supported in JS will not be confused with Strings or
1634
- * imprecise numbers (e.g., nanosecond-precision date values). Additionally, once wrapped in this way, methods can be
1635
- * called on these value literal instances. These instances are immutable - any method called on them returns a new
1636
- * instance.
2209
+ * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
2210
+ * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
2211
+ * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
1637
2212
  */
1638
- export class FilterValue {
2213
+ export class RangeSet {
1639
2214
  protected constructor();
1640
2215
 
2216
+ static ofRange(first:number, last:number):RangeSet;
2217
+ static ofItems(rows:number[]):RangeSet;
2218
+ static ofRanges(ranges:RangeSet[]):RangeSet;
2219
+ static ofSortedRanges(ranges:RangeSet[]):RangeSet;
1641
2220
  /**
1642
- * Constructs a number for the filter API from the given parameter. Can also be used on the values returned from
1643
- * {@link TableData.get} for DateTime values. To create
1644
- * a filter with a date, use <b>dh.DateWrapper.ofJsDate</b> or
1645
- * {@link i18n.DateTimeFormat.parse}. To create a filter with a
1646
- * 64-bit long integer, use {@link LongWrapper.ofString}.
1647
- * @param input - the number to wrap as a FilterValue
1648
- * @return an immutable FilterValue that can be built into a filter
1649
- */
1650
- static ofNumber(input:LongWrapper|number):FilterValue;
1651
- /**
1652
- * a filter condition checking if the current value is equal to the given parameter
1653
- * @param term -
1654
- * @return {@link dh.FilterCondition}
1655
- */
1656
- eq(term:FilterValue):FilterCondition;
1657
- /**
1658
- * a filter condition checking if the current value is equal to the given parameter, ignoring differences of upper
1659
- * vs lower case
1660
- * @param term -
1661
- * @return {@link dh.FilterCondition}
1662
- */
1663
- eqIgnoreCase(term:FilterValue):FilterCondition;
1664
- /**
1665
- * a filter condition checking if the current value is not equal to the given parameter
1666
- * @param term -
1667
- * @return {@link dh.FilterCondition}
1668
- */
1669
- notEq(term:FilterValue):FilterCondition;
1670
- /**
1671
- * a filter condition checking if the current value is not equal to the given parameter, ignoring differences of
1672
- * upper vs lower case
1673
- * @param term -
1674
- * @return {@link dh.FilterCondition}
1675
- */
1676
- notEqIgnoreCase(term:FilterValue):FilterCondition;
1677
- /**
1678
- * a filter condition checking if the current value is greater than the given parameter
1679
- * @param term -
1680
- * @return {@link dh.FilterCondition}
1681
- */
1682
- greaterThan(term:FilterValue):FilterCondition;
1683
- /**
1684
- * a filter condition checking if the current value is less than the given parameter
1685
- * @param term -
1686
- * @return {@link dh.FilterCondition}
1687
- */
1688
- lessThan(term:FilterValue):FilterCondition;
1689
- /**
1690
- * a filter condition checking if the current value is greater than or equal to the given parameter
1691
- * @param term -
1692
- * @return {@link dh.FilterCondition}
1693
- */
1694
- greaterThanOrEqualTo(term:FilterValue):FilterCondition;
1695
- /**
1696
- * a filter condition checking if the current value is less than or equal to the given parameter
1697
- * @param term -
1698
- * @return {@link dh.FilterCondition}
1699
- */
1700
- lessThanOrEqualTo(term:FilterValue):FilterCondition;
1701
- /**
1702
- * a filter condition checking if the current value is in the given set of values
1703
- * @param terms -
1704
- * @return {@link dh.FilterCondition}
1705
- */
1706
- in(terms:FilterValue[]):FilterCondition;
1707
- /**
1708
- * a filter condition checking if the current value is in the given set of values, ignoring differences of upper vs
1709
- * lower case
1710
- * @param terms -
1711
- * @return {@link dh.FilterCondition}
1712
- */
1713
- inIgnoreCase(terms:FilterValue[]):FilterCondition;
1714
- /**
1715
- * a filter condition checking that the current value is not in the given set of values
1716
- * @param terms -
1717
- * @return {@link dh.FilterCondition}
1718
- */
1719
- notIn(terms:FilterValue[]):FilterCondition;
1720
- /**
1721
- * a filter condition checking that the current value is not in the given set of values, ignoring differences of
1722
- * upper vs lower case
1723
- * @param terms -
1724
- * @return {@link dh.FilterCondition}
2221
+ * a new iterator over all indexes in this collection.
2222
+ * @return Iterator of {@link dh.LongWrapper}
1725
2223
  */
1726
- notInIgnoreCase(terms:FilterValue[]):FilterCondition;
2224
+ iterator():Iterator<LongWrapper>;
1727
2225
  /**
1728
- * a filter condition checking if the given value contains the given string value
1729
- * @param term -
1730
- * @return {@link dh.FilterCondition}
2226
+ * The total count of items contained in this collection. In some cases this can be expensive to compute, and
2227
+ * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
2228
+ * property each time through a loop).
2229
+ * @return double
1731
2230
  */
1732
- contains(term:FilterValue):FilterCondition;
1733
- /**
1734
- * a filter condition checking if the given value contains the given string value, ignoring differences of upper vs
1735
- * lower case
1736
- * @param term -
1737
- * @return {@link dh.FilterCondition}
1738
- */
1739
- containsIgnoreCase(term:FilterValue):FilterCondition;
1740
- /**
1741
- * a filter condition checking if the given value matches the provided regular expressions string. Regex patterns
1742
- * use Java regex syntax
1743
- * @param pattern -
1744
- * @return {@link dh.FilterCondition}
1745
- */
1746
- matches(pattern:FilterValue):FilterCondition;
1747
- /**
1748
- * a filter condition checking if the given value matches the provided regular expressions string, ignoring
1749
- * differences of upper vs lower case. Regex patterns use Java regex syntax
1750
- * @param pattern -
1751
- * @return {@link dh.FilterCondition}
1752
- */
1753
- matchesIgnoreCase(pattern:FilterValue):FilterCondition;
1754
- /**
1755
- * a filter condition checking if the current value is a true boolean
1756
- * @return {@link dh.FilterCondition}
1757
- */
1758
- isTrue():FilterCondition;
1759
- /**
1760
- * a filter condition checking if the current value is a false boolean
1761
- * @return {@link dh.FilterCondition}
1762
- */
1763
- isFalse():FilterCondition;
1764
- /**
1765
- * a filter condition checking if the current value is a null value
1766
- * @return {@link dh.FilterCondition}
1767
- */
1768
- isNull():FilterCondition;
1769
- /**
1770
- * a filter condition invoking the given method on the current value, with the given parameters. Currently supported
1771
- * functions that can be invoked on a String:
1772
- * <ul>
1773
- * <li><b>startsWith</b>: Returns true if the current string value starts with the supplied string argument</li>
1774
- * <li><b>endsWith</b>: Returns true if the current string value ends with the supplied string argument</li>
1775
- * <li><b>matches</b>: Returns true if the current string value matches the supplied string argument used as a Java
1776
- * regular expression</li>
1777
- * <li><b>contains</b>: Returns true if the current string value contains the supplied string argument
1778
- * <p>
1779
- * When invoking against a constant, this should be avoided in favor of FilterValue.contains
1780
- * </p>
1781
- * </li>
1782
- * </ul>
1783
- * @param method -
1784
- * @param args -
1785
- * @return
1786
- */
1787
- invoke(method:string, ...args:FilterValue[]):FilterCondition;
1788
- toString():string;
1789
- /**
1790
- * Constructs a string for the filter API from the given parameter.
1791
- * @param input -
1792
- * @return
1793
- */
1794
- static ofString(input:any):FilterValue;
1795
- /**
1796
- * Constructs a boolean for the filter API from the given parameter.
1797
- * @param b -
1798
- * @return
1799
- */
1800
- static ofBoolean(b:boolean):FilterValue;
2231
+ get size():number;
2232
+ }
2233
+
2234
+ export class QueryInfo {
2235
+ static readonly EVENT_TABLE_OPENED:string;
2236
+ static readonly EVENT_DISCONNECT:string;
2237
+ static readonly EVENT_RECONNECT:string;
2238
+ static readonly EVENT_CONNECT:string;
2239
+
2240
+ protected constructor();
2241
+ }
2242
+
2243
+ /**
2244
+ * Event fired when a command is issued from the client.
2245
+ */
2246
+ export class CommandInfo {
2247
+ constructor(code:string, result:Promise<dh.ide.CommandResult>);
2248
+
2249
+ get result():Promise<dh.ide.CommandResult>;
2250
+ get code():string;
1801
2251
  }
1802
2252
 
1803
2253
  /**
@@ -1843,619 +2293,66 @@ export namespace dh {
1843
2293
  * </ul>
1844
2294
  *
1845
2295
  * Handling server objects in messages also has more than one potential pattern that can be used:
1846
- * <ul>
1847
- * <li>One object per message - the message clearly is about that object, no other details required.</li>
1848
- * <li>Objects indexed within their message - as each message comes with a list of objects, those objects can be
1849
- * referenced within the payload by index. This is roughly how {@link dh.plot.Figure}
1850
- * behaves, where the figure descriptor schema includes an index for each created series, describing which table should
1851
- * be used, which columns should be mapped to each axis.</li>
1852
- * <li>Objects indexed since widget creation - each message would append its objects to a list created when the widget
1853
- * was first made, and any new exports that arrive in a new message would be appended to that list. Then, subsequent
1854
- * messages can reference objects already sent. This imposes a limitation where the client cannot release any exports
1855
- * without the server somehow signaling that it will never reference that export again.</li>
1856
- * </ul>
1857
- */
1858
- export class Widget implements WidgetMessageDetails, HasEventHandling {
1859
- static readonly EVENT_MESSAGE:string;
1860
- static readonly EVENT_CLOSE:string;
1861
-
1862
- protected constructor();
1863
-
1864
- /**
1865
- * Ends the client connection to the server.
1866
- */
1867
- close():void;
1868
- getDataAsBase64():string;
1869
- getDataAsU8():Uint8Array;
1870
- getDataAsString():string;
1871
- /**
1872
- * Sends a string/bytes payload to the server, along with references to objects that exist on the server.
1873
- * @param msg - string/buffer/view instance that represents data to send
1874
- * @param references - an array of objects that can be safely sent to the server
1875
- */
1876
- sendMessage(msg:string|ArrayBuffer|ArrayBufferView, references?:Array<Table|Widget|WidgetExportedObject|PartitionedTable|TotalsTable|TreeTable>):void;
1877
- addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
1878
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
1879
- hasListeners(name:string):boolean;
1880
- removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
1881
- /**
1882
- *
1883
- * @return the exported objects sent in the initial message from the server. The client is responsible for closing
1884
- * them when finished using them.
1885
- */
1886
- get exportedObjects():WidgetExportedObject[];
1887
- /**
1888
- *
1889
- * @return the type of this widget
1890
- */
1891
- get type():string;
1892
- }
1893
-
1894
- /**
1895
- * Addition optional configuration that can be passed to the {@link dh.CoreClient} constructor.
1896
- */
1897
- export class ConnectOptions {
1898
- /**
1899
- * Optional map of http header names and values to send to the server with each request.
1900
- */
1901
- headers?:{ [key: string]: string; }|null;
1902
- /**
1903
- * True to enable debug logging. At this time, only enables logging for gRPC calls.
1904
- */
1905
- debug?:boolean|null;
1906
- /**
1907
- * Set this to true to force the use of websockets when connecting to the deephaven instance, false to force the use
1908
- * of `fetch`. Ignored if {@link dh.transportFactory} is set.
1909
- * <p>
1910
- * Defaults to null, indicating that the server URL should be checked to see if we connect with fetch or websockets.
1911
- */
1912
- useWebsockets?:boolean|null;
1913
- /**
1914
- * The transport factory to use for creating gRPC streams. If specified, the JS API will ignore
1915
- * {@link dh.useWebsockets} and its own internal logic for determining the appropriate transport to use.
1916
- * <p>
1917
- * Defaults to null, indicating that the JS API should determine the appropriate transport to use. If
1918
- * `useWebsockets` is set to true, the JS API will use websockets, otherwise if the server url begins with
1919
- * https, it will use fetch, otherwise it will use websockets.
1920
- */
1921
- transportFactory?:dh.grpc.GrpcTransportFactory|null;
1922
-
1923
- constructor();
1924
- }
1925
-
1926
- /**
1927
- * Exists to keep the dh.TableMap namespace so that the web UI can remain compatible with the DHE API, which still calls
1928
- * this type TableMap.
1929
- * @deprecated
1930
- */
1931
- export class TableMap {
1932
- static readonly EVENT_KEYADDED:string;
1933
- static readonly EVENT_DISCONNECT:string;
1934
- static readonly EVENT_RECONNECT:string;
1935
- static readonly EVENT_RECONNECTFAILED:string;
1936
-
1937
- protected constructor();
1938
- }
1939
-
1940
- /**
1941
- * Wrap BigInteger values for use in JS. Provides text formatting for display and access to the underlying value.
1942
- */
1943
- export class BigIntegerWrapper {
1944
- protected constructor();
1945
-
1946
- static ofString(str:string):BigIntegerWrapper;
1947
- asNumber():number;
1948
- valueOf():string;
1949
- toString():string;
1950
- equals(o:object):boolean;
1951
- hashCode():number;
1952
- }
1953
-
1954
- /**
1955
- * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
1956
- * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
1957
- *
1958
- * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
1959
- * "private" table instance does, since the original cannot modify the subscription, and the private instance must
1960
- * forward data to it.
1961
- *
1962
- * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
1963
- * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
1964
- * viewports to make it less expensive to compute for large tables.
1965
- */
1966
- export class TableSubscription implements HasEventHandling {
1967
- protected constructor();
1968
-
1969
- /**
1970
- * Updates the subscription to use the given columns and update interval.
1971
- * @param columns - the new columns to subscribe to
1972
- * @param updateIntervalMs - the new update interval, or null/omit to use the default of one second
1973
- */
1974
- changeSubscription(columns:Array<Column>, updateIntervalMs:number|undefined|null):void;
1975
- get columns():Array<Column>;
1976
- /**
1977
- * Stops the subscription on the server.
1978
- */
1979
- close():void;
1980
- /**
1981
- * Listen for events on this object.
1982
- * @param name - the name of the event to listen for
1983
- * @param callback - a function to call when the event occurs
1984
- * @return Returns a cleanup function.
1985
- * @typeParam T - the type of the data that the event will provide
1986
- */
1987
- addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
1988
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
1989
- hasListeners(name:string):boolean;
1990
- /**
1991
- * Removes an event listener added to this table.
1992
- * @param name -
1993
- * @param callback -
1994
- * @return
1995
- * @typeParam T -
1996
- */
1997
- removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
1998
- }
1999
-
2000
- export class CoreClient implements HasEventHandling {
2001
- static readonly EVENT_CONNECT:string;
2002
- static readonly EVENT_DISCONNECT:string;
2003
- static readonly EVENT_RECONNECT:string;
2004
- static readonly EVENT_RECONNECT_AUTH_FAILED:string;
2005
- static readonly EVENT_REQUEST_FAILED:string;
2006
- static readonly EVENT_REQUEST_STARTED:string;
2007
- static readonly EVENT_REQUEST_SUCCEEDED:string;
2008
- /**
2009
- * @deprecated
2010
- */
2011
- static readonly EVENT_REFRESH_TOKEN_UPDATED:string;
2012
- static readonly LOGIN_TYPE_PASSWORD:string;
2013
- static readonly LOGIN_TYPE_ANONYMOUS:string;
2014
-
2015
- constructor(serverUrl:string, connectOptions?:ConnectOptions);
2016
-
2017
- running():Promise<CoreClient>;
2018
- getServerUrl():string;
2019
- getAuthConfigValues():Promise<string[][]>;
2020
- login(credentials:LoginCredentials):Promise<void>;
2021
- relogin(token:RefreshToken):Promise<void>;
2022
- onConnected(timeoutInMillis?:number):Promise<void>;
2023
- getServerConfigValues():Promise<string[][]>;
2024
- getStorageService():dh.storage.StorageService;
2025
- getAsIdeConnection():Promise<IdeConnection>;
2026
- disconnect():void;
2027
- addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
2028
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
2029
- hasListeners(name:string):boolean;
2030
- removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
2031
- }
2032
-
2033
- /**
2034
- * Describes how a Totals Table will be generated from its parent table. Each table has a default (which may be null)
2035
- * indicating how that table was configured when it was declared, and each Totals Table has a similar property
2036
- * describing how it was created. Both the <b>Table.getTotalsTable</b> and <b>Table.getGrandTotalsTable</b> methods take
2037
- * this config as an optional parameter - without it, the table's default will be used, or if null, a default instance
2038
- * of <b>TotalsTableConfig</b> will be supplied.
2039
- *
2040
- * This class has a no-arg constructor, allowing an instance to be made with the default values provided. However, any
2041
- * JS object can be passed in to the methods which accept instances of this type, provided their values adhere to the
2042
- * expected formats.
2043
- */
2044
- export class TotalsTableConfig {
2045
- /**
2046
- * @deprecated
2047
- */
2048
- static readonly COUNT:string;
2049
- /**
2050
- * @deprecated
2051
- */
2052
- static readonly MIN:string;
2053
- /**
2054
- * @deprecated
2055
- */
2056
- static readonly MAX:string;
2057
- /**
2058
- * @deprecated
2059
- */
2060
- static readonly SUM:string;
2061
- /**
2062
- * @deprecated
2063
- */
2064
- static readonly ABS_SUM:string;
2065
- /**
2066
- * @deprecated
2067
- */
2068
- static readonly VAR:string;
2069
- /**
2070
- * @deprecated
2071
- */
2072
- static readonly AVG:string;
2073
- /**
2074
- * @deprecated
2075
- */
2076
- static readonly STD:string;
2077
- /**
2078
- * @deprecated
2079
- */
2080
- static readonly FIRST:string;
2081
- /**
2082
- * @deprecated
2083
- */
2084
- static readonly LAST:string;
2085
- /**
2086
- * @deprecated
2087
- */
2088
- static readonly SKIP:string;
2089
- /**
2090
- * Specifies if a Totals Table should be expanded by default in the UI. Defaults to false.
2091
- */
2092
- showTotalsByDefault:boolean;
2093
- /**
2094
- * Specifies if a Grand Totals Table should be expanded by default in the UI. Defaults to false.
2095
- */
2096
- showGrandTotalsByDefault:boolean;
2097
- /**
2098
- * Specifies the default operation for columns that do not have a specific operation applied; defaults to "Sum".
2099
- */
2100
- defaultOperation:AggregationOperationType;
2101
- /**
2102
- * Mapping from each column name to the aggregation(s) that should be applied to that column in the resulting Totals
2103
- * Table. If a column is omitted, the defaultOperation is used.
2104
- */
2105
- operationMap:{ [key: string]: Array<AggregationOperationType>; };
2106
- /**
2107
- * Groupings to use when generating the Totals Table. One row will exist for each unique set of values observed in
2108
- * these columns. See also `Table.selectDistinct`.
2109
- */
2110
- groupBy:Array<string>;
2111
-
2112
- constructor();
2113
-
2114
- toString():string;
2115
- }
2116
-
2117
- export class IdeSession implements HasEventHandling {
2118
- static readonly EVENT_COMMANDSTARTED:string;
2119
- static readonly EVENT_REQUEST_FAILED:string;
2120
-
2121
- protected constructor();
2122
-
2123
- /**
2124
- * Load the named table, with columns and size information already fully populated.
2125
- * @param name -
2126
- * @param applyPreviewColumns - optional boolean
2127
- * @return {@link Promise} of {@link dh.Table}
2128
- */
2129
- getTable(name:string, applyPreviewColumns?:boolean):Promise<Table>;
2130
- /**
2131
- * Load the named Figure, including its tables and tablemaps as needed.
2132
- * @param name -
2133
- * @return promise of dh.plot.Figure
2134
- */
2135
- getFigure(name:string):Promise<dh.plot.Figure>;
2136
- /**
2137
- * Loads the named tree table or roll-up table, with column data populated. All nodes are collapsed by default, and
2138
- * size is presently not available until the viewport is first set.
2139
- * @param name -
2140
- * @return {@link Promise} of {@link dh.TreeTable}
2141
- */
2142
- getTreeTable(name:string):Promise<TreeTable>;
2143
- getHierarchicalTable(name:string):Promise<TreeTable>;
2144
- getPartitionedTable(name:string):Promise<PartitionedTable>;
2145
- getObject(definitionObject:dh.ide.VariableDescriptor):Promise<any>;
2146
- newTable(columnNames:string[], types:string[], data:string[][], userTimeZone:string):Promise<Table>;
2147
- /**
2148
- * Merges the given tables into a single table. Assumes all tables have the same structure.
2149
- * @param tables -
2150
- * @return {@link Promise} of {@link dh.Table}
2151
- */
2152
- mergeTables(tables:Table[]):Promise<Table>;
2153
- bindTableToVariable(table:Table, name:string):Promise<void>;
2154
- /**
2155
- * Makes the `object` available to another user or another client on this same server which knows the value of
2156
- * the `sharedTicketBytes`. Use that sharedTicketBytes value like a one-time use password - any other client
2157
- * which knows this value can read the same object.
2158
- * <p>
2159
- * Shared objects will remain available using the sharedTicketBytes until the client that first shared them
2160
- * releases/closes their copy of the object. Whatever side-channel is used to share the bytes, be sure to wait until
2161
- * the remote end has signaled that it has successfully fetched the object before releasing it from this client.
2162
- * <p>
2163
- * Be sure to use an unpredictable value for the shared ticket bytes, like a UUID or other large, random value to
2164
- * prevent access by unauthorized clients.
2165
- * @param object - the object to share with another client/user
2166
- * @param sharedTicketBytes - the value which another client/user must know to obtain the object. It may be a unicode
2167
- * string (will be encoded as utf8 bytes), or a {@link Uint8Array} value.
2168
- * @return A promise that will resolve to the value passed as sharedTicketBytes when the object is ready to be read
2169
- * by another client, or will reject if an error occurs.
2170
- */
2171
- shareObject(object:Table|Widget|WidgetExportedObject|PartitionedTable|TotalsTable|TreeTable, sharedTicketBytes:string|Uint8Array):Promise<string|Uint8Array>;
2172
- /**
2173
- * Reads an object shared by another client to this server with the `sharedTicketBytes`. Until the other
2174
- * client releases this object (or their session ends), the object will be available on the server.
2175
- * <p>
2176
- * The type of the object must be passed so that the object can be read from the server correct - the other client
2177
- * should provide this information.
2178
- * @param sharedTicketBytes - the value provided by another client/user to obtain the object. It may be a unicode
2179
- * string (will be encoded as utf8 bytes), or a {@link Uint8Array} value.
2180
- * @param type - The type of the object, so it can be correctly read from the server
2181
- * @return A promise that will resolve to the shared object, or will reject with an error if it cannot be read.
2182
- */
2183
- getSharedObject(sharedTicketBytes:string|Uint8Array, type:string):Promise<any>;
2184
- subscribeToFieldUpdates(callback:(arg0:dh.ide.VariableChanges)=>void):()=>void;
2185
- close():void;
2186
- runCode(code:string):Promise<dh.ide.CommandResult>;
2187
- onLogMessage(callback:(arg0:dh.ide.LogItem)=>void):()=>void;
2188
- openDocument(params:object):void;
2189
- changeDocument(params:object):void;
2190
- getCompletionItems(params:object):Promise<Array<dh.lsp.CompletionItem>>;
2191
- getSignatureHelp(params:object):Promise<Array<dh.lsp.SignatureInformation>>;
2192
- getHover(params:object):Promise<dh.lsp.Hover>;
2193
- closeDocument(params:object):void;
2194
- /**
2195
- * Creates an empty table with the specified number of rows. Optionally columns and types may be specified, but all
2196
- * values will be null.
2197
- * @param size -
2198
- * @return {@link Promise} of {@link dh.Table}
2199
- */
2200
- emptyTable(size:number):Promise<Table>;
2201
- /**
2202
- * Creates a new table that ticks automatically every "periodNanos" nanoseconds. A start time may be provided; if so
2203
- * the table will be populated with the interval from the specified date until now.
2204
- * @param periodNanos -
2205
- * @param startTime -
2206
- * @return {@link Promise} of {@link dh.Table}
2207
- */
2208
- timeTable(periodNanos:number, startTime?:DateWrapper):Promise<Table>;
2209
- addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
2210
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
2211
- hasListeners(name:string):boolean;
2212
- removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
2213
- }
2214
-
2215
- export class CustomColumn {
2216
- static readonly TYPE_FORMAT_COLOR:string;
2217
- static readonly TYPE_FORMAT_NUMBER:string;
2218
- static readonly TYPE_FORMAT_DATE:string;
2219
- static readonly TYPE_NEW:string;
2220
-
2221
- protected constructor();
2222
-
2223
- valueOf():string;
2224
- toString():string;
2225
- static from(columnInfo:string):CustomColumn;
2226
- /**
2227
- * The expression to evaluate this custom column.
2228
- * @return String
2229
- */
2230
- get expression():string;
2231
- /**
2232
- * The name of the column to use.
2233
- * @return String
2234
- */
2235
- get name():string;
2236
- /**
2237
- * The options for this custom column.
2238
- * @return CustomColumOptions
2239
- */
2240
- get options():CustomColumnOptions;
2241
- /**
2242
- * Type of custom column. One of
2243
- *
2244
- * <ul>
2245
- * <li>FORMAT_COLOR</li>
2246
- * <li>FORMAT_NUMBER</li>
2247
- * <li>FORMAT_DATE</li>
2248
- * <li>NEW</li>
2249
- * </ul>
2250
- * @return String
2251
- */
2252
- get type():string;
2253
- }
2254
-
2255
- /**
2256
- * Deprecated for use in Deephaven Core.
2257
- * @deprecated
2258
- */
2259
- export class Client {
2260
- static readonly EVENT_REQUEST_FAILED:string;
2261
- static readonly EVENT_REQUEST_STARTED:string;
2262
- static readonly EVENT_REQUEST_SUCCEEDED:string;
2263
-
2264
- constructor();
2265
- }
2266
-
2267
- /**
2268
- * A js type for operating on input tables.
2269
- *
2270
- * Represents a User Input Table, which can have data added to it from other sources.
2271
- *
2272
- * You may add rows using dictionaries of key-value tuples (representing columns by name), add tables containing all the
2273
- * key/value columns to add, or delete tables containing the keys to delete. Each operation is atomic, and will either
2274
- * succeed completely or fail completely. To guarantee order of operations, apply an operation and wait for the response
2275
- * before sending the next operation.
2276
- *
2277
- * Each table has one or more key columns, where each unique combination of keys will appear at most once in the table.
2278
- *
2279
- * To view the results of the Input Table, you should use standard table operations on the InputTable's source Table
2280
- * object.
2281
- */
2282
- export class InputTable {
2283
- protected constructor();
2284
-
2285
- /**
2286
- * Adds a single row to the table. For each key or value column name in the Input Table, we retrieve that javascript
2287
- * property at that name and validate it can be put into the given column type.
2288
- * @param row -
2289
- * @param userTimeZone -
2290
- * @return Promise of dh.InputTable
2291
- */
2292
- addRow(row:{ [key: string]: any; }, userTimeZone?:string):Promise<InputTable>;
2293
- /**
2294
- * Add multiple rows to a table.
2295
- * @param rows -
2296
- * @param userTimeZone -
2297
- * @return Promise of dh.InputTable
2298
- */
2299
- addRows(rows:{ [key: string]: any; }[], userTimeZone?:string):Promise<InputTable>;
2300
- /**
2301
- * Add an entire table to this Input Table. Only column names that match the definition of the input table will be
2302
- * copied, and all key columns must have values filled in. This only copies the current state of the source table;
2303
- * future updates to the source table will not be reflected in the Input Table. The returned promise will be
2304
- * resolved to the same InputTable instance this method was called upon once the server returns.
2305
- * @param tableToAdd -
2306
- * @return Promise of dh.InputTable
2307
- */
2308
- addTable(tableToAdd:Table):Promise<InputTable>;
2309
- /**
2310
- * Add multiple tables to this Input Table.
2311
- * @param tablesToAdd -
2312
- * @return Promise of dh.InputTable
2313
- */
2314
- addTables(tablesToAdd:Table[]):Promise<InputTable>;
2315
- /**
2316
- * Deletes an entire table from this Input Table. Key columns must match the Input Table.
2317
- * @param tableToDelete -
2318
- * @return Promise of dh.InputTable
2319
- */
2320
- deleteTable(tableToDelete:Table):Promise<InputTable>;
2321
- /**
2322
- * Delete multiple tables from this Input Table.
2323
- * @param tablesToDelete -
2324
- * @return
2325
- */
2326
- deleteTables(tablesToDelete:Table[]):Promise<InputTable>;
2327
- /**
2328
- * A list of the key columns, by name
2329
- * @return String array.
2330
- */
2331
- get keys():string[];
2332
- /**
2333
- * A list of the value columns, by name
2334
- * @return String array.
2335
- */
2336
- get values():string[];
2337
- /**
2338
- * A list of the key columns.
2339
- * @return Column array.
2340
- */
2341
- get keyColumns():Column[];
2342
- /**
2343
- * A list of the value Column objects
2344
- * @return {@link dh.Column} array.
2345
- */
2346
- get valueColumns():Column[];
2347
- /**
2348
- * The source table for this Input Table
2349
- * @return dh.table
2350
- */
2351
- get table():Table;
2352
- }
2353
-
2354
- /**
2355
- * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
2356
- */
2357
- export class BigDecimalWrapper {
2358
- protected constructor();
2359
-
2360
- static ofString(value:string):BigDecimalWrapper;
2361
- asNumber():number;
2362
- valueOf():string;
2363
- toString():string;
2364
- equals(o:object):boolean;
2365
- hashCode():number;
2366
- }
2367
-
2368
- export class LoginCredentials {
2369
- type?:string|null;
2370
- username?:string|null;
2371
- token?:string|null;
2372
-
2373
- constructor();
2374
- }
2375
-
2376
- /**
2377
- * Options for custom columns.
2378
- */
2379
- export class CustomColumnOptions {
2380
- /**
2381
- * When specified for custom columns on a rollup table, specifies if the formula apply to rollup or constituent
2382
- * nodes.
2383
- */
2384
- rollupNodeType?:RollupNodeTypeType|null;
2385
-
2386
- constructor();
2387
- }
2388
-
2389
- export class DateWrapper extends LongWrapper {
2390
- protected constructor();
2391
-
2392
- static ofJsDate(date:Date):DateWrapper;
2393
- asDate():Date;
2394
- }
2395
-
2396
- /**
2397
- * This class allows iteration over non-contiguous indexes. In the future, this will support the EcmaScript 2015
2398
- * Iteration protocol, but for now has one method which returns an iterator, and also supports querying the size.
2399
- * Additionally, we may add support for creating RangeSet objects to better serve some use cases.
2400
- */
2401
- export class RangeSet {
2402
- protected constructor();
2403
-
2404
- static ofRange(first:number, last:number):RangeSet;
2405
- static ofItems(rows:number[]):RangeSet;
2406
- static ofRanges(ranges:RangeSet[]):RangeSet;
2407
- static ofSortedRanges(ranges:RangeSet[]):RangeSet;
2408
- /**
2409
- * a new iterator over all indexes in this collection.
2410
- * @return Iterator of {@link dh.LongWrapper}
2411
- */
2412
- iterator():Iterator<LongWrapper>;
2413
- /**
2414
- * The total count of items contained in this collection. In some cases this can be expensive to compute, and
2415
- * generally should not be needed except for debugging purposes, or preallocating space (i.e., do not call this
2416
- * property each time through a loop).
2417
- * @return double
2418
- */
2419
- get size():number;
2420
- }
2421
-
2422
- export class QueryInfo {
2423
- static readonly EVENT_TABLE_OPENED:string;
2424
- static readonly EVENT_DISCONNECT:string;
2425
- static readonly EVENT_RECONNECT:string;
2426
- static readonly EVENT_CONNECT:string;
2296
+ * <ul>
2297
+ * <li>One object per message - the message clearly is about that object, no other details required.</li>
2298
+ * <li>Objects indexed within their message - as each message comes with a list of objects, those objects can be
2299
+ * referenced within the payload by index. This is roughly how {@link dh.plot.Figure}
2300
+ * behaves, where the figure descriptor schema includes an index for each created series, describing which table should
2301
+ * be used, which columns should be mapped to each axis.</li>
2302
+ * <li>Objects indexed since widget creation - each message would append its objects to a list created when the widget
2303
+ * was first made, and any new exports that arrive in a new message would be appended to that list. Then, subsequent
2304
+ * messages can reference objects already sent. This imposes a limitation where the client cannot release any exports
2305
+ * without the server somehow signaling that it will never reference that export again.</li>
2306
+ * </ul>
2307
+ */
2308
+ export class Widget implements WidgetMessageDetails, HasEventHandling {
2309
+ static readonly EVENT_MESSAGE:string;
2310
+ static readonly EVENT_CLOSE:string;
2427
2311
 
2428
2312
  protected constructor();
2429
- }
2430
2313
 
2431
- /**
2432
- * Describes a grouping and aggregations for a roll-up table. Pass to the <b>Table.rollup</b> function to create a
2433
- * roll-up table.
2434
- */
2435
- export class RollupConfig {
2436
2314
  /**
2437
- * Ordered list of columns to group by to form the hierarchy of the resulting roll-up table.
2315
+ * Ends the client connection to the server.
2438
2316
  */
2439
- groupingColumns:Array<String>;
2317
+ close():void;
2318
+ getDataAsBase64():string;
2319
+ getDataAsU8():Uint8Array;
2320
+ getDataAsString():string;
2440
2321
  /**
2441
- * Mapping from each aggregation name to the ordered list of columns it should be applied to in the resulting
2442
- * roll-up table.
2322
+ * Sends a string/bytes payload to the server, along with references to objects that exist on the server.
2323
+ * @param msg - string/buffer/view instance that represents data to send
2324
+ * @param references - an array of objects that can be safely sent to the server
2443
2325
  */
2444
- aggregations:{ [key: string]: Array<string>; };
2326
+ sendMessage(msg:string|ArrayBuffer|ArrayBufferView, references?:Array<Table|Widget|WidgetExportedObject|PartitionedTable|TotalsTable|TreeTable>):void;
2327
+ addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
2328
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
2329
+ hasListeners(name:string):boolean;
2330
+ removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
2445
2331
  /**
2446
- * Optional parameter indicating if an extra leaf node should be added at the bottom of the hierarchy, showing the
2447
- * rows in the underlying table which make up that grouping. Since these values might be a different type from the
2448
- * rest of the column, any client code must check if TreeRow.hasChildren = false, and if so, interpret those values
2449
- * as if they were Column.constituentType instead of Column.type. Defaults to false.
2332
+ *
2333
+ * @return the exported objects sent in the initial message from the server. The client is responsible for closing
2334
+ * them when finished using them.
2450
2335
  */
2451
- includeConstituents:boolean;
2452
- includeOriginalColumns?:boolean|null;
2336
+ get exportedObjects():WidgetExportedObject[];
2453
2337
  /**
2454
- * Optional parameter indicating if original column descriptions should be included. Defaults to true.
2338
+ *
2339
+ * @return the type of this widget
2455
2340
  */
2456
- includeDescriptions:boolean;
2341
+ get type():string;
2342
+ }
2457
2343
 
2458
- constructor();
2344
+ /**
2345
+ * Wrap BigDecimal values for use in JS. Provides text formatting for display and access to the underlying value.
2346
+ */
2347
+ export class BigDecimalWrapper {
2348
+ protected constructor();
2349
+
2350
+ static ofString(value:string):BigDecimalWrapper;
2351
+ asNumber():number;
2352
+ valueOf():string;
2353
+ toString():string;
2354
+ equals(o:object):boolean;
2355
+ hashCode():number;
2459
2356
  }
2460
2357
 
2461
2358
  /**
@@ -2552,42 +2449,128 @@ export namespace dh {
2552
2449
  }
2553
2450
 
2554
2451
  /**
2555
- * Event fired when a command is issued from the client.
2452
+ * Exists to keep the dh.TableMap namespace so that the web UI can remain compatible with the DHE API, which still calls
2453
+ * this type TableMap.
2454
+ * @deprecated
2556
2455
  */
2557
- export class CommandInfo {
2558
- constructor(code:string, result:Promise<dh.ide.CommandResult>);
2456
+ export class TableMap {
2457
+ static readonly EVENT_KEYADDED:string;
2458
+ static readonly EVENT_DISCONNECT:string;
2459
+ static readonly EVENT_RECONNECT:string;
2460
+ static readonly EVENT_RECONNECTFAILED:string;
2559
2461
 
2560
- get result():Promise<dh.ide.CommandResult>;
2561
- get code():string;
2462
+ protected constructor();
2562
2463
  }
2563
2464
 
2564
- export class LongWrapper {
2465
+ /**
2466
+ * Represents a non-viewport subscription to a table, and all data currently known to be present in the subscribed
2467
+ * columns. This class handles incoming snapshots and deltas, and fires events to consumers to notify of data changes.
2468
+ *
2469
+ * Unlike {@link dh.TableViewportSubscription}, the "original" table does not have a reference to this instance, only the
2470
+ * "private" table instance does, since the original cannot modify the subscription, and the private instance must
2471
+ * forward data to it.
2472
+ *
2473
+ * Represents a subscription to the table on the server. Changes made to the table will not be reflected here - the
2474
+ * subscription must be closed and a new one optioned to see those changes. The event model is slightly different from
2475
+ * viewports to make it less expensive to compute for large tables.
2476
+ */
2477
+ export class TableSubscription implements HasEventHandling {
2565
2478
  protected constructor();
2566
2479
 
2567
- static ofString(str:string):LongWrapper;
2568
- asNumber():number;
2569
- valueOf():string;
2570
- toString():string;
2480
+ /**
2481
+ * Updates the subscription to use the given columns and update interval.
2482
+ * @param columns - the new columns to subscribe to
2483
+ * @param updateIntervalMs - the new update interval, or null/omit to use the default of one second
2484
+ */
2485
+ changeSubscription(columns:Array<Column>, updateIntervalMs:number|undefined|null):void;
2486
+ get columns():Array<Column>;
2487
+ /**
2488
+ * Stops the subscription on the server.
2489
+ */
2490
+ close():void;
2491
+ /**
2492
+ * Listen for events on this object.
2493
+ * @param name - the name of the event to listen for
2494
+ * @param callback - a function to call when the event occurs
2495
+ * @return Returns a cleanup function.
2496
+ * @typeParam T - the type of the data that the event will provide
2497
+ */
2498
+ addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
2499
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<Event<T>>;
2500
+ hasListeners(name:string):boolean;
2501
+ /**
2502
+ * Removes an event listener added to this table.
2503
+ * @param name -
2504
+ * @param callback -
2505
+ * @return
2506
+ * @typeParam T -
2507
+ */
2508
+ removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
2571
2509
  }
2572
2510
 
2511
+ /**
2512
+ * Addition optional configuration that can be passed to the {@link dh.CoreClient} constructor.
2513
+ */
2514
+ export class ConnectOptions {
2515
+ /**
2516
+ * Optional map of http header names and values to send to the server with each request.
2517
+ */
2518
+ headers?:{ [key: string]: string; }|null;
2519
+ /**
2520
+ * True to enable debug logging. At this time, only enables logging for gRPC calls.
2521
+ */
2522
+ debug?:boolean|null;
2523
+ /**
2524
+ * Set this to true to force the use of websockets when connecting to the deephaven instance, false to force the use
2525
+ * of `fetch`. Ignored if {@link dh.transportFactory} is set.
2526
+ * <p>
2527
+ * Defaults to null, indicating that the server URL should be checked to see if we connect with fetch or websockets.
2528
+ */
2529
+ useWebsockets?:boolean|null;
2530
+ /**
2531
+ * The transport factory to use for creating gRPC streams. If specified, the JS API will ignore
2532
+ * {@link dh.useWebsockets} and its own internal logic for determining the appropriate transport to use.
2533
+ * <p>
2534
+ * Defaults to null, indicating that the JS API should determine the appropriate transport to use. If
2535
+ * `useWebsockets` is set to true, the JS API will use websockets, otherwise if the server url begins with
2536
+ * https, it will use fetch, otherwise it will use websockets.
2537
+ */
2538
+ transportFactory?:dh.grpc.GrpcTransportFactory|null;
2573
2539
 
2574
- type ValueTypeType = string;
2575
- export class ValueType {
2576
- static readonly STRING:ValueTypeType;
2577
- static readonly NUMBER:ValueTypeType;
2578
- static readonly DOUBLE:ValueTypeType;
2579
- static readonly LONG:ValueTypeType;
2580
- static readonly DATETIME:ValueTypeType;
2581
- static readonly BOOLEAN:ValueTypeType;
2540
+ constructor();
2582
2541
  }
2583
2542
 
2584
- type SearchDisplayModeType = string;
2585
- export class SearchDisplayMode {
2586
- static readonly SEARCH_DISPLAY_DEFAULT:SearchDisplayModeType;
2587
- static readonly SEARCH_DISPLAY_HIDE:SearchDisplayModeType;
2588
- static readonly SEARCH_DISPLAY_SHOW:SearchDisplayModeType;
2543
+ /**
2544
+ * Describes a grouping and aggregations for a roll-up table. Pass to the <b>Table.rollup</b> function to create a
2545
+ * roll-up table.
2546
+ */
2547
+ export class RollupConfig {
2548
+ /**
2549
+ * Ordered list of columns to group by to form the hierarchy of the resulting roll-up table.
2550
+ */
2551
+ groupingColumns:Array<String>;
2552
+ /**
2553
+ * Mapping from each aggregation name to the ordered list of columns it should be applied to in the resulting
2554
+ * roll-up table.
2555
+ */
2556
+ aggregations:{ [key: string]: Array<string>; };
2557
+ /**
2558
+ * Optional parameter indicating if an extra leaf node should be added at the bottom of the hierarchy, showing the
2559
+ * rows in the underlying table which make up that grouping. Since these values might be a different type from the
2560
+ * rest of the column, any client code must check if TreeRow.hasChildren = false, and if so, interpret those values
2561
+ * as if they were Column.constituentType instead of Column.type. Defaults to false.
2562
+ */
2563
+ includeConstituents:boolean;
2564
+ includeOriginalColumns?:boolean|null;
2565
+ /**
2566
+ * Optional parameter indicating if original column descriptions should be included. Defaults to true.
2567
+ */
2568
+ includeDescriptions:boolean;
2569
+
2570
+ constructor();
2589
2571
  }
2590
2572
 
2573
+
2591
2574
  /**
2592
2575
  * A set of string constants that can be used to describe the different objects the JS API can export.
2593
2576
  */
@@ -2604,6 +2587,32 @@ export namespace dh {
2604
2587
  static readonly TREEMAP:VariableTypeType;
2605
2588
  }
2606
2589
 
2590
+ /**
2591
+ * Describes the type of node in a rollup table.
2592
+ */
2593
+ type RollupNodeTypeType = string;
2594
+ export class RollupNodeType {
2595
+ static readonly ROLLUP_NODE_TYPE_AGGREGATED:RollupNodeTypeType;
2596
+ static readonly ROLLUP_NODE_TYPE_CONSTITUENT:RollupNodeTypeType;
2597
+ }
2598
+
2599
+ type SearchDisplayModeType = string;
2600
+ export class SearchDisplayMode {
2601
+ static readonly SEARCH_DISPLAY_DEFAULT:SearchDisplayModeType;
2602
+ static readonly SEARCH_DISPLAY_HIDE:SearchDisplayModeType;
2603
+ static readonly SEARCH_DISPLAY_SHOW:SearchDisplayModeType;
2604
+ }
2605
+
2606
+ type ValueTypeType = string;
2607
+ export class ValueType {
2608
+ static readonly STRING:ValueTypeType;
2609
+ static readonly NUMBER:ValueTypeType;
2610
+ static readonly DOUBLE:ValueTypeType;
2611
+ static readonly LONG:ValueTypeType;
2612
+ static readonly DATETIME:ValueTypeType;
2613
+ static readonly BOOLEAN:ValueTypeType;
2614
+ }
2615
+
2607
2616
  /**
2608
2617
  * This enum describes the name of each supported operation/aggregation type when creating a `TreeTable`.
2609
2618
  */
@@ -2626,34 +2635,10 @@ export namespace dh {
2626
2635
  static readonly SKIP:AggregationOperationType;
2627
2636
  }
2628
2637
 
2629
- /**
2630
- * Describes the type of node in a rollup table.
2631
- */
2632
- type RollupNodeTypeType = string;
2633
- export class RollupNodeType {
2634
- static readonly ROLLUP_NODE_TYPE_AGGREGATED:RollupNodeTypeType;
2635
- static readonly ROLLUP_NODE_TYPE_CONSTITUENT:RollupNodeTypeType;
2636
- }
2637
-
2638
2638
  }
2639
2639
 
2640
2640
  export namespace dh.ide {
2641
2641
 
2642
- /**
2643
- * Indicates the result of code run on the server.
2644
- */
2645
- export interface CommandResult {
2646
- /**
2647
- * Describes changes made in the course of this command.
2648
- * @return {@link dh.ide.VariableChanges}.
2649
- */
2650
- get changes():VariableChanges;
2651
- /**
2652
- * If the command failed, the error message will be provided here.
2653
- * @return String
2654
- */
2655
- get error():string;
2656
- }
2657
2642
  /**
2658
2643
  * A format to describe a variable available to be read from the server. Application fields are optional, and only
2659
2644
  * populated when a variable is provided by application mode.
@@ -2696,6 +2681,14 @@ export namespace dh.ide {
2696
2681
  get applicationName():string;
2697
2682
  }
2698
2683
  /**
2684
+ * Specifies a type and either id or name (but not both).
2685
+ */
2686
+ export interface VariableDescriptor {
2687
+ type:string;
2688
+ id?:string|null;
2689
+ name?:string|null;
2690
+ }
2691
+ /**
2699
2692
  * Represents a serialized fishlib LogRecord, suitable for display on javascript clients. A log entry sent from the
2700
2693
  * server.
2701
2694
  */
@@ -2717,6 +2710,21 @@ export namespace dh.ide {
2717
2710
  get message():string;
2718
2711
  }
2719
2712
  /**
2713
+ * Indicates the result of code run on the server.
2714
+ */
2715
+ export interface CommandResult {
2716
+ /**
2717
+ * Describes changes made in the course of this command.
2718
+ * @return {@link dh.ide.VariableChanges}.
2719
+ */
2720
+ get changes():VariableChanges;
2721
+ /**
2722
+ * If the command failed, the error message will be provided here.
2723
+ * @return String
2724
+ */
2725
+ get error():string;
2726
+ }
2727
+ /**
2720
2728
  * Describes changes in the current set of variables in the script session. Note that variables that changed value
2721
2729
  * without changing type will be included as <b>updated</b>, but if a new value with one type replaces an old value with
2722
2730
  * a different type, this will be included as an entry in both <b>removed</b> and <b>created</b> to indicate the old and
@@ -2740,14 +2748,6 @@ export namespace dh.ide {
2740
2748
  */
2741
2749
  get updated():Array<VariableDefinition>;
2742
2750
  }
2743
- /**
2744
- * Specifies a type and either id or name (but not both).
2745
- */
2746
- export interface VariableDescriptor {
2747
- type:string;
2748
- id?:string|null;
2749
- name?:string|null;
2750
- }
2751
2751
  }
2752
2752
 
2753
2753
  export namespace dh.grpc {
@@ -2880,117 +2880,6 @@ export namespace dh.i18n {
2880
2880
  }
2881
2881
 
2882
2882
 
2883
- /**
2884
- * Represents the timezones supported by Deephaven. Can be used to format dates, taking into account the offset changing
2885
- * throughout the year (potentially changing each year). These instances mostly are useful at this time to pass to the
2886
- * <b>DateTimeFormat.format()</b> methods, though also support a few properties at this time to see details about each
2887
- * instance.
2888
- *
2889
- *
2890
- * The following timezone codes are supported when getting a timezone object - instances appearing in the same line will
2891
- * return the same details:
2892
- *
2893
- * <ul>
2894
- * <li>GMT/UTC</li>
2895
- * <li>Asia/Tokyo</li>
2896
- * <li>Asia/Seoul</li>
2897
- * <li>Asia/Hong_Kong</li>
2898
- * <li>Asia/Singapore</li>
2899
- * <li>Asia/Calcutta/Asia/Kolkata</li>
2900
- * <li>Europe/Berlin</li>
2901
- * <li>Europe/London</li>
2902
- * <li>America/Sao_Paulo</li>
2903
- * <li>America/St_Johns</li>
2904
- * <li>America/Halifax</li>
2905
- * <li>America/New_York</li>
2906
- * <li>America/Chicago</li>
2907
- * <li>America/Denver</li>
2908
- * <li>America/Los_Angeles</li>
2909
- * <li>America/Anchorage</li>
2910
- * <li>Pacific/Honolulu</li>
2911
- * </ul>
2912
- *
2913
- * A Timezone object can also be created from an abbreviation. The following abbreviations are supported:
2914
- *
2915
- * <ul>
2916
- * <li>UTC</li>
2917
- * <li>GMT</li>
2918
- * <li>Z</li>
2919
- * <li>NY</li>
2920
- * <li>ET</li>
2921
- * <li>EST</li>
2922
- * <li>EDT</li>
2923
- * <li>MN</li>
2924
- * <li>CT</li>
2925
- * <li>CST</li>
2926
- * <li>CDT</li>
2927
- * <li>MT</li>
2928
- * <li>MST</li>
2929
- * <li>MDT</li>
2930
- * <li>PT</li>
2931
- * <li>PST</li>
2932
- * <li>PDT</li>
2933
- * <li>HI</li>
2934
- * <li>HST</li>
2935
- * <li>HDT</li>
2936
- * <li>BT</li>
2937
- * <li>BRST</li>
2938
- * <li>BRT</li>
2939
- * <li>KR</li>
2940
- * <li>KST</li>
2941
- * <li>HK</li>
2942
- * <li>HKT</li>
2943
- * <li>JP</li>
2944
- * <li>JST</li>
2945
- * <li>AT</li>
2946
- * <li>AST</li>
2947
- * <li>ADT</li>
2948
- * <li>NF</li>
2949
- * <li>NST</li>
2950
- * <li>NDT</li>
2951
- * <li>AL</li>
2952
- * <li>AKST</li>
2953
- * <li>AKDT</li>
2954
- * <li>IN</li>
2955
- * <li>IST</li>
2956
- * <li>CE</li>
2957
- * <li>CET</li>
2958
- * <li>CEST</li>
2959
- * <li>SG</li>
2960
- * <li>SGT</li>
2961
- * <li>LON</li>
2962
- * <li>BST</li>
2963
- * <li>MOS</li>
2964
- * <li>SHG</li>
2965
- * <li>CH</li>
2966
- * <li>NL</li>
2967
- * <li>TW</li>
2968
- * <li>SYD</li>
2969
- * <li>AEST</li>
2970
- * <li>AEDT</li>
2971
- * </ul>
2972
- */
2973
- export class TimeZone {
2974
- protected constructor();
2975
-
2976
- /**
2977
- * Factory method which creates timezone instances from one of the supported keys.
2978
- * @param tzCode -
2979
- * @return dh.i18n.TimeZone
2980
- */
2981
- static getTimeZone(tzCode:string):TimeZone;
2982
- /**
2983
- * the standard offset of this timezone, in minutes
2984
- * @return int
2985
- */
2986
- get standardOffset():number;
2987
- /**
2988
- * the timezone code that represents this `TimeZone`, usually the same key as was use to create this instance
2989
- * @return String
2990
- */
2991
- get id():string;
2992
- }
2993
-
2994
2883
  /**
2995
2884
  * Largely an exported wrapper for the GWT DateFormat, but also includes support for formatting nanoseconds as an
2996
2885
  * additional 6 decimal places after the rest of the number.
@@ -3089,49 +2978,121 @@ export namespace dh.i18n {
3089
2978
  toString():string;
3090
2979
  }
3091
2980
 
3092
- }
3093
-
3094
- export namespace dh.plot {
3095
-
3096
- export interface FigureDataUpdatedEvent {
3097
- getArray(series:Series, sourceType:number, mappingFunc?:(arg0:any)=>any):Array<any>;
3098
- get series():Series[];
3099
- }
3100
2981
  /**
3101
- * Describes a template that will be used to make new series instances when a new table added to a plotBy.
3102
- */
3103
- export interface MultiSeries {
3104
- /**
3105
- * The name for this multi-series.
3106
- * @return String
3107
- */
3108
- get name():string;
3109
- /**
3110
- * The plotting style to use for the series that will be created. See <b>SeriesPlotStyle</b> enum for more details.
3111
- * @return int
3112
- */
3113
- get plotStyle():SeriesPlotStyleType;
3114
- }
3115
- /**
3116
- * Describes how to access and display data required within a series.
2982
+ * Represents the timezones supported by Deephaven. Can be used to format dates, taking into account the offset changing
2983
+ * throughout the year (potentially changing each year). These instances mostly are useful at this time to pass to the
2984
+ * <b>DateTimeFormat.format()</b> methods, though also support a few properties at this time to see details about each
2985
+ * instance.
2986
+ *
2987
+ *
2988
+ * The following timezone codes are supported when getting a timezone object - instances appearing in the same line will
2989
+ * return the same details:
2990
+ *
2991
+ * <ul>
2992
+ * <li>GMT/UTC</li>
2993
+ * <li>Asia/Tokyo</li>
2994
+ * <li>Asia/Seoul</li>
2995
+ * <li>Asia/Hong_Kong</li>
2996
+ * <li>Asia/Singapore</li>
2997
+ * <li>Asia/Calcutta/Asia/Kolkata</li>
2998
+ * <li>Europe/Berlin</li>
2999
+ * <li>Europe/London</li>
3000
+ * <li>America/Sao_Paulo</li>
3001
+ * <li>America/St_Johns</li>
3002
+ * <li>America/Halifax</li>
3003
+ * <li>America/New_York</li>
3004
+ * <li>America/Chicago</li>
3005
+ * <li>America/Denver</li>
3006
+ * <li>America/Los_Angeles</li>
3007
+ * <li>America/Anchorage</li>
3008
+ * <li>Pacific/Honolulu</li>
3009
+ * </ul>
3010
+ *
3011
+ * A Timezone object can also be created from an abbreviation. The following abbreviations are supported:
3012
+ *
3013
+ * <ul>
3014
+ * <li>UTC</li>
3015
+ * <li>GMT</li>
3016
+ * <li>Z</li>
3017
+ * <li>NY</li>
3018
+ * <li>ET</li>
3019
+ * <li>EST</li>
3020
+ * <li>EDT</li>
3021
+ * <li>MN</li>
3022
+ * <li>CT</li>
3023
+ * <li>CST</li>
3024
+ * <li>CDT</li>
3025
+ * <li>MT</li>
3026
+ * <li>MST</li>
3027
+ * <li>MDT</li>
3028
+ * <li>PT</li>
3029
+ * <li>PST</li>
3030
+ * <li>PDT</li>
3031
+ * <li>HI</li>
3032
+ * <li>HST</li>
3033
+ * <li>HDT</li>
3034
+ * <li>BT</li>
3035
+ * <li>BRST</li>
3036
+ * <li>BRT</li>
3037
+ * <li>KR</li>
3038
+ * <li>KST</li>
3039
+ * <li>HK</li>
3040
+ * <li>HKT</li>
3041
+ * <li>JP</li>
3042
+ * <li>JST</li>
3043
+ * <li>AT</li>
3044
+ * <li>AST</li>
3045
+ * <li>ADT</li>
3046
+ * <li>NF</li>
3047
+ * <li>NST</li>
3048
+ * <li>NDT</li>
3049
+ * <li>AL</li>
3050
+ * <li>AKST</li>
3051
+ * <li>AKDT</li>
3052
+ * <li>IN</li>
3053
+ * <li>IST</li>
3054
+ * <li>CE</li>
3055
+ * <li>CET</li>
3056
+ * <li>CEST</li>
3057
+ * <li>SG</li>
3058
+ * <li>SGT</li>
3059
+ * <li>LON</li>
3060
+ * <li>BST</li>
3061
+ * <li>MOS</li>
3062
+ * <li>SHG</li>
3063
+ * <li>CH</li>
3064
+ * <li>NL</li>
3065
+ * <li>TW</li>
3066
+ * <li>SYD</li>
3067
+ * <li>AEST</li>
3068
+ * <li>AEDT</li>
3069
+ * </ul>
3117
3070
  */
3118
- export interface SeriesDataSource {
3119
- /**
3120
- * the type of data stored in the underlying table's Column.
3121
- * @return String
3122
- */
3123
- get columnType():string;
3071
+ export class TimeZone {
3072
+ protected constructor();
3073
+
3124
3074
  /**
3125
- * the axis that this source should be drawn on.
3126
- * @return dh.plot.Axis
3075
+ * Factory method which creates timezone instances from one of the supported keys.
3076
+ * @param tzCode -
3077
+ * @return dh.i18n.TimeZone
3127
3078
  */
3128
- get axis():Axis;
3079
+ static getTimeZone(tzCode:string):TimeZone;
3129
3080
  /**
3130
- * the feature of this series represented by this source. See the <b>SourceType</b> enum for more details.
3081
+ * the standard offset of this timezone, in minutes
3131
3082
  * @return int
3132
3083
  */
3133
- get type():SourceTypeType;
3084
+ get standardOffset():number;
3085
+ /**
3086
+ * the timezone code that represents this `TimeZone`, usually the same key as was use to create this instance
3087
+ * @return String
3088
+ */
3089
+ get id():string;
3134
3090
  }
3091
+
3092
+ }
3093
+
3094
+ export namespace dh.plot {
3095
+
3135
3096
  /**
3136
3097
  * Provides access to the data for displaying in a figure.
3137
3098
  */
@@ -3176,11 +3137,9 @@ export namespace dh.plot {
3176
3137
  get multiSeries():MultiSeries;
3177
3138
  get shapeLabel():string;
3178
3139
  }
3179
- export interface OneClick {
3180
- setValueForColumn(columnName:string, value:any):void;
3181
- getValueForColumn(columName:string):any;
3182
- get requireAllFiltersToDisplay():boolean;
3183
- get columns():dh.Column[];
3140
+ export interface FigureDataUpdatedEvent {
3141
+ getArray(series:Series, sourceType:number, mappingFunc?:(arg0:any)=>any):Array<any>;
3142
+ get series():Series[];
3184
3143
  }
3185
3144
  /**
3186
3145
  * Defines one axis used with by series. These instances will be found both on the Chart and the Series instances, and
@@ -3250,86 +3209,72 @@ export namespace dh.plot {
3250
3209
  get formatType():AxisFormatTypeType;
3251
3210
  get minRange():number;
3252
3211
  }
3253
-
3254
- export class SeriesDescriptor {
3255
- plotStyle:string;
3256
- name?:string|null;
3257
- linesVisible?:boolean|null;
3258
- shapesVisible?:boolean|null;
3259
- gradientVisible?:boolean|null;
3260
- lineColor?:string|null;
3261
- pointLabelFormat?:string|null;
3262
- xToolTipPattern?:string|null;
3263
- yToolTipPattern?:string|null;
3264
- shapeLabel?:string|null;
3265
- shapeSize?:number|null;
3266
- shapeColor?:string|null;
3267
- shape?:string|null;
3268
- dataSources:Array<SourceDescriptor>;
3269
-
3270
- constructor();
3271
- }
3272
-
3273
- export class DownsampleOptions {
3212
+ /**
3213
+ * Describes a template that will be used to make new series instances when a new table added to a plotBy.
3214
+ */
3215
+ export interface MultiSeries {
3274
3216
  /**
3275
- * Max number of items in the series before DEFAULT will not attempt to load the series without downsampling. Above
3276
- * this size if downsample fails or is not applicable, the series won't be loaded unless DISABLE is passed to
3277
- * series.subscribe().
3217
+ * The name for this multi-series.
3218
+ * @return String
3278
3219
  */
3279
- static MAX_SERIES_SIZE:number;
3220
+ get name():string;
3280
3221
  /**
3281
- * Max number of items in the series where the subscription will be allowed at all. Above this limit, even with
3282
- * downsampling disabled, the series will not load data.
3222
+ * The plotting style to use for the series that will be created. See <b>SeriesPlotStyle</b> enum for more details.
3223
+ * @return int
3283
3224
  */
3284
- static MAX_SUBSCRIPTION_SIZE:number;
3225
+ get plotStyle():SeriesPlotStyleType;
3226
+ }
3227
+ /**
3228
+ * Describes how to access and display data required within a series.
3229
+ */
3230
+ export interface SeriesDataSource {
3285
3231
  /**
3286
- * Flag to let the API decide what data will be available, based on the nature of the data, the series, and how the
3287
- * axes are configured.
3232
+ * the type of data stored in the underlying table's Column.
3233
+ * @return String
3288
3234
  */
3289
- static readonly DEFAULT:DownsampleOptions;
3235
+ get columnType():string;
3290
3236
  /**
3291
- * Flat to entirely disable downsampling, and force all data to load, no matter how many items that would be, up to
3292
- * the limit of MAX_SUBSCRIPTION_SIZE.
3237
+ * the axis that this source should be drawn on.
3238
+ * @return dh.plot.Axis
3293
3239
  */
3294
- static readonly DISABLE:DownsampleOptions;
3240
+ get axis():Axis;
3241
+ /**
3242
+ * the feature of this series represented by this source. See the <b>SourceType</b> enum for more details.
3243
+ * @return int
3244
+ */
3245
+ get type():SourceTypeType;
3246
+ }
3247
+ export interface OneClick {
3248
+ setValueForColumn(columnName:string, value:any):void;
3249
+ getValueForColumn(columName:string):any;
3250
+ get requireAllFiltersToDisplay():boolean;
3251
+ get columns():dh.Column[];
3252
+ }
3295
3253
 
3296
- protected constructor();
3254
+ export class AxisDescriptor {
3255
+ formatType:string;
3256
+ type:string;
3257
+ position:string;
3258
+ log?:boolean|null;
3259
+ label?:string|null;
3260
+ labelFont?:string|null;
3261
+ ticksFont?:string|null;
3262
+ formatPattern?:string|null;
3263
+ color?:string|null;
3264
+ minRange?:number|null;
3265
+ maxRange?:number|null;
3266
+ minorTicksVisible?:boolean|null;
3267
+ majorTicksVisible?:boolean|null;
3268
+ minorTickCount?:number|null;
3269
+ gapBetweenMajorTicks?:number|null;
3270
+ majorTickLocations?:Array<number>|null;
3271
+ tickLabelAngle?:number|null;
3272
+ invert?:boolean|null;
3273
+ isTimeAxis?:boolean|null;
3274
+
3275
+ constructor();
3297
3276
  }
3298
3277
 
3299
- /**
3300
- * Provides the details for a figure.
3301
- *
3302
- * The Deephaven JS API supports automatic lossless downsampling of time-series data, when that data is plotted in one
3303
- * or more line series. Using a scatter plot or a X-axis of some type other than DateTime will prevent this feature from
3304
- * being applied to a series. To enable this feature, invoke <b>Axis.range(...)</b> to specify the length in pixels of
3305
- * the axis on the screen, and the range of values that are visible, and the server will use that width (and range, if
3306
- * any) to reduce the number of points sent to the client.
3307
- *
3308
- * Downsampling can also be controlled when calling either <b>Figure.subscribe()</b> or <b>Series.subscribe()</b> - both
3309
- * can be given an optional <b>dh.plot.DownsampleOptions</b> argument. Presently only two valid values exist,
3310
- * <b>DEFAULT</b>, and <b>DISABLE</b>, and if no argument is specified, <b>DEFAULT</b> is assumed. If there are more
3311
- * than 30,000 rows in a table, downsampling will be encouraged - data will not load without calling
3312
- * <b>subscribe(DISABLE)</b> or enabling downsampling via <b>Axis.range(...)</b>. If there are more than 200,000 rows,
3313
- * data will refuse to load without downsampling and <b>subscribe(DISABLE)</b> would have no effect.
3314
- *
3315
- * Downsampled data looks like normal data, except that select items have been removed if they would be redundant in the
3316
- * UI given the current configuration. Individual rows are intact, so that a tooltip or some other UI item is sure to be
3317
- * accurate and consistent, and at least the highest and lowest value for each axis will be retained as well, to ensure
3318
- * that the "important" values are visible.
3319
- *
3320
- * Four events exist to help with interacting with downsampled data, all fired from the <b>Figure</b> instance itself.
3321
- * First, <b>downsampleneeded</b> indicates that more than 30,000 rows would be fetched, and so specifying downsampling
3322
- * is no longer optional - it must either be enabled (calling <b>axis.range(...)</b>), or disabled. If the figure is
3323
- * configured for downsampling, when a change takes place that requires that the server perform some downsampling work,
3324
- * the <b>downsamplestarted</b> event will first be fired, which can be used to present a brief loading message,
3325
- * indicating to the user why data is not ready yet - when the server side process is complete,
3326
- * <b>downsamplefinished</b> will be fired. These events will repeat when the range changes, such as when zooming,
3327
- * panning, or resizing the figure. Finally, <b>downsamplefailed</b> indicates that something when wrong when
3328
- * downsampling, or possibly that downsampling cannot be disabled due to the number of rows in the table.
3329
- *
3330
- * At this time, not marked as a ServerObject, due to internal implementation issues which leave the door open to
3331
- * client-created figures.
3332
- */
3333
3278
  export class Figure implements dh.HasEventHandling {
3334
3279
  /**
3335
3280
  * The title of the figure.
@@ -3373,8 +3318,7 @@ export namespace dh.plot {
3373
3318
  */
3374
3319
  static readonly EVENT_DOWNSAMPLENEEDED:string;
3375
3320
 
3376
- protected constructor();
3377
-
3321
+ static create(config:FigureDescriptor):Promise<Figure>;
3378
3322
  subscribe(forceDisableDownsample?:DownsampleOptions):void;
3379
3323
  /**
3380
3324
  * Disable updates for all series in this figure.
@@ -3413,47 +3357,50 @@ export namespace dh.plot {
3413
3357
  * @typeParam T -
3414
3358
  */
3415
3359
  removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
3416
- static create(config:FigureDescriptor):Promise<Figure>;
3417
3360
  }
3418
3361
 
3419
- export class FigureFetchError {
3420
- error:object;
3421
- errors:Array<string>;
3362
+ /**
3363
+ * Provide the details for a chart.
3364
+ */
3365
+ export class Chart implements dh.HasEventHandling {
3366
+ /**
3367
+ * a new series was added to this chart as part of a multi-series. The series instance is the detail for this event.
3368
+ */
3369
+ static readonly EVENT_SERIES_ADDED:string;
3370
+ /**
3371
+ * The title of the chart.
3372
+ * @return String
3373
+ */
3374
+ readonly title?:string|null;
3422
3375
 
3423
3376
  protected constructor();
3424
- }
3425
-
3426
- export class ChartDescriptor {
3427
- colspan?:number|null;
3428
- rowspan?:number|null;
3429
- series:Array<SeriesDescriptor>;
3430
- axes:Array<AxisDescriptor>;
3431
- chartType:string;
3432
- title?:string|null;
3433
- titleFont?:string|null;
3434
- titleColor?:string|null;
3435
- showLegend?:boolean|null;
3436
- legendFont?:string|null;
3437
- legendColor?:string|null;
3438
- is3d?:boolean|null;
3439
-
3440
- constructor();
3441
- }
3442
-
3443
- export class SourceDescriptor {
3444
- axis:AxisDescriptor;
3445
- table:dh.Table;
3446
- columnName:string;
3447
- type:string;
3448
-
3449
- constructor();
3450
- }
3451
-
3452
- export class FigureSourceException {
3453
- table:dh.Table;
3454
- source:SeriesDataSource;
3455
3377
 
3456
- protected constructor();
3378
+ addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
3379
+ nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<dh.Event<T>>;
3380
+ hasListeners(name:string):boolean;
3381
+ removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
3382
+ get column():number;
3383
+ get showLegend():boolean;
3384
+ /**
3385
+ * The axes used in this chart.
3386
+ * @return dh.plot.Axis
3387
+ */
3388
+ get axes():Axis[];
3389
+ get is3d():boolean;
3390
+ get titleFont():string;
3391
+ get colspan():number;
3392
+ get titleColor():string;
3393
+ get series():Series[];
3394
+ get rowspan():number;
3395
+ /**
3396
+ * The type of this chart, see <b>ChartType</b> enum for more details.
3397
+ * @return int
3398
+ */
3399
+ get chartType():ChartTypeType;
3400
+ get row():number;
3401
+ get legendColor():string;
3402
+ get legendFont():string;
3403
+ get multiSeries():MultiSeries[];
3457
3404
  }
3458
3405
 
3459
3406
  /**
@@ -3475,6 +3422,13 @@ export namespace dh.plot {
3475
3422
  static runChartDownsample(table:dh.Table, xCol:string, yCols:string[], width:number, xRange?:dh.LongWrapper[]|undefined|null):Promise<dh.Table>;
3476
3423
  }
3477
3424
 
3425
+ export class FigureFetchError {
3426
+ error:object;
3427
+ errors:Array<string>;
3428
+
3429
+ protected constructor();
3430
+ }
3431
+
3478
3432
  /**
3479
3433
  * Helper class to manage snapshots and deltas and keep not only a contiguous JS array of data per column in the
3480
3434
  * underlying table, but also support a mapping function to let client code translate data in some way for display and
@@ -3492,48 +3446,44 @@ export namespace dh.plot {
3492
3446
  removeColumn(columnName:string, mappingFunc:(arg0:any)=>any):void;
3493
3447
  }
3494
3448
 
3495
- /**
3496
- * Provide the details for a chart.
3497
- */
3498
- export class Chart implements dh.HasEventHandling {
3499
- /**
3500
- * a new series was added to this chart as part of a multi-series. The series instance is the detail for this event.
3501
- */
3502
- static readonly EVENT_SERIES_ADDED:string;
3503
- /**
3504
- * The title of the chart.
3505
- * @return String
3506
- */
3507
- readonly title?:string|null;
3449
+ export class FigureSourceException {
3450
+ table:dh.Table;
3451
+ source:SeriesDataSource;
3508
3452
 
3509
3453
  protected constructor();
3454
+ }
3510
3455
 
3511
- addEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):()=>void;
3512
- nextEvent<T>(eventName:string, timeoutInMillis?:number):Promise<dh.Event<T>>;
3513
- hasListeners(name:string):boolean;
3514
- removeEventListener<T>(name:string, callback:(e:dh.Event<T>)=>void):boolean;
3515
- get column():number;
3516
- get showLegend():boolean;
3456
+ export class DownsampleOptions {
3517
3457
  /**
3518
- * The axes used in this chart.
3519
- * @return dh.plot.Axis
3458
+ * Max number of items in the series before DEFAULT will not attempt to load the series without downsampling. Above
3459
+ * this size if downsample fails or is not applicable, the series won't be loaded unless DISABLE is passed to
3460
+ * series.subscribe().
3520
3461
  */
3521
- get axes():Axis[];
3522
- get is3d():boolean;
3523
- get titleFont():string;
3524
- get colspan():number;
3525
- get titleColor():string;
3526
- get series():Series[];
3527
- get rowspan():number;
3462
+ static MAX_SERIES_SIZE:number;
3463
+ /**
3464
+ * Max number of items in the series where the subscription will be allowed at all. Above this limit, even with
3465
+ * downsampling disabled, the series will not load data.
3466
+ */
3467
+ static MAX_SUBSCRIPTION_SIZE:number;
3468
+ /**
3469
+ * Flag to let the API decide what data will be available, based on the nature of the data, the series, and how the
3470
+ * axes are configured.
3471
+ */
3472
+ static readonly DEFAULT:DownsampleOptions;
3528
3473
  /**
3529
- * The type of this chart, see <b>ChartType</b> enum for more details.
3530
- * @return int
3474
+ * Flat to entirely disable downsampling, and force all data to load, no matter how many items that would be, up to
3475
+ * the limit of MAX_SUBSCRIPTION_SIZE.
3531
3476
  */
3532
- get chartType():ChartTypeType;
3533
- get row():number;
3534
- get legendColor():string;
3535
- get legendFont():string;
3536
- get multiSeries():MultiSeries[];
3477
+ static readonly DISABLE:DownsampleOptions;
3478
+
3479
+ protected constructor();
3480
+ }
3481
+
3482
+ export class SeriesDataSourceException {
3483
+ protected constructor();
3484
+
3485
+ get source():SeriesDataSource;
3486
+ get message():string;
3537
3487
  }
3538
3488
 
3539
3489
  /**
@@ -3553,82 +3503,60 @@ export namespace dh.plot {
3553
3503
  constructor();
3554
3504
  }
3555
3505
 
3556
- export class SeriesDataSourceException {
3557
- protected constructor();
3558
-
3559
- get source():SeriesDataSource;
3560
- get message():string;
3561
- }
3562
-
3563
- export class AxisDescriptor {
3564
- formatType:string;
3506
+ export class SourceDescriptor {
3507
+ axis:AxisDescriptor;
3508
+ table:dh.Table;
3509
+ columnName:string;
3565
3510
  type:string;
3566
- position:string;
3567
- log?:boolean|null;
3568
- label?:string|null;
3569
- labelFont?:string|null;
3570
- ticksFont?:string|null;
3571
- formatPattern?:string|null;
3572
- color?:string|null;
3573
- minRange?:number|null;
3574
- maxRange?:number|null;
3575
- minorTicksVisible?:boolean|null;
3576
- majorTicksVisible?:boolean|null;
3577
- minorTickCount?:number|null;
3578
- gapBetweenMajorTicks?:number|null;
3579
- majorTickLocations?:Array<number>|null;
3580
- tickLabelAngle?:number|null;
3581
- invert?:boolean|null;
3582
- isTimeAxis?:boolean|null;
3583
3511
 
3584
3512
  constructor();
3585
3513
  }
3586
3514
 
3515
+ export class SeriesDescriptor {
3516
+ plotStyle:string;
3517
+ name?:string|null;
3518
+ linesVisible?:boolean|null;
3519
+ shapesVisible?:boolean|null;
3520
+ gradientVisible?:boolean|null;
3521
+ lineColor?:string|null;
3522
+ pointLabelFormat?:string|null;
3523
+ xToolTipPattern?:string|null;
3524
+ yToolTipPattern?:string|null;
3525
+ shapeLabel?:string|null;
3526
+ shapeSize?:number|null;
3527
+ shapeColor?:string|null;
3528
+ shape?:string|null;
3529
+ dataSources:Array<SourceDescriptor>;
3587
3530
 
3588
- type AxisFormatTypeType = number;
3589
- export class AxisFormatType {
3590
- static readonly CATEGORY:AxisFormatTypeType;
3591
- static readonly NUMBER:AxisFormatTypeType;
3531
+ constructor();
3592
3532
  }
3593
3533
 
3594
- /**
3595
- * This enum describes what kind of chart is being drawn. This may limit what kinds of series can be found on it, or how
3596
- * those series should be rendered.
3597
- */
3598
- type ChartTypeType = number;
3599
- export class ChartType {
3600
- static readonly XY:ChartTypeType;
3601
- static readonly PIE:ChartTypeType;
3602
- static readonly OHLC:ChartTypeType;
3603
- static readonly CATEGORY:ChartTypeType;
3604
- static readonly XYZ:ChartTypeType;
3605
- static readonly CATEGORY_3D:ChartTypeType;
3606
- static readonly TREEMAP:ChartTypeType;
3607
- }
3534
+ export class ChartDescriptor {
3535
+ colspan?:number|null;
3536
+ rowspan?:number|null;
3537
+ series:Array<SeriesDescriptor>;
3538
+ axes:Array<AxisDescriptor>;
3539
+ chartType:string;
3540
+ title?:string|null;
3541
+ titleFont?:string|null;
3542
+ titleColor?:string|null;
3543
+ showLegend?:boolean|null;
3544
+ legendFont?:string|null;
3545
+ legendColor?:string|null;
3546
+ is3d?:boolean|null;
3608
3547
 
3609
- type AxisPositionType = number;
3610
- export class AxisPosition {
3611
- static readonly TOP:AxisPositionType;
3612
- static readonly BOTTOM:AxisPositionType;
3613
- static readonly LEFT:AxisPositionType;
3614
- static readonly RIGHT:AxisPositionType;
3615
- static readonly NONE:AxisPositionType;
3548
+ constructor();
3616
3549
  }
3617
3550
 
3618
- type SeriesPlotStyleType = number;
3619
- export class SeriesPlotStyle {
3620
- static readonly BAR:SeriesPlotStyleType;
3621
- static readonly STACKED_BAR:SeriesPlotStyleType;
3622
- static readonly LINE:SeriesPlotStyleType;
3623
- static readonly AREA:SeriesPlotStyleType;
3624
- static readonly STACKED_AREA:SeriesPlotStyleType;
3625
- static readonly PIE:SeriesPlotStyleType;
3626
- static readonly HISTOGRAM:SeriesPlotStyleType;
3627
- static readonly OHLC:SeriesPlotStyleType;
3628
- static readonly SCATTER:SeriesPlotStyleType;
3629
- static readonly STEP:SeriesPlotStyleType;
3630
- static readonly ERROR_BAR:SeriesPlotStyleType;
3631
- static readonly TREEMAP:SeriesPlotStyleType;
3551
+
3552
+ type AxisTypeType = number;
3553
+ export class AxisType {
3554
+ static readonly X:AxisTypeType;
3555
+ static readonly Y:AxisTypeType;
3556
+ static readonly SHAPE:AxisTypeType;
3557
+ static readonly SIZE:AxisTypeType;
3558
+ static readonly LABEL:AxisTypeType;
3559
+ static readonly COLOR:AxisTypeType;
3632
3560
  }
3633
3561
 
3634
3562
  /**
@@ -3660,14 +3588,50 @@ export namespace dh.plot {
3660
3588
  static readonly HOVER_TEXT:SourceTypeType;
3661
3589
  }
3662
3590
 
3663
- type AxisTypeType = number;
3664
- export class AxisType {
3665
- static readonly X:AxisTypeType;
3666
- static readonly Y:AxisTypeType;
3667
- static readonly SHAPE:AxisTypeType;
3668
- static readonly SIZE:AxisTypeType;
3669
- static readonly LABEL:AxisTypeType;
3670
- static readonly COLOR:AxisTypeType;
3591
+ type AxisPositionType = number;
3592
+ export class AxisPosition {
3593
+ static readonly TOP:AxisPositionType;
3594
+ static readonly BOTTOM:AxisPositionType;
3595
+ static readonly LEFT:AxisPositionType;
3596
+ static readonly RIGHT:AxisPositionType;
3597
+ static readonly NONE:AxisPositionType;
3598
+ }
3599
+
3600
+ type AxisFormatTypeType = number;
3601
+ export class AxisFormatType {
3602
+ static readonly CATEGORY:AxisFormatTypeType;
3603
+ static readonly NUMBER:AxisFormatTypeType;
3604
+ }
3605
+
3606
+ type SeriesPlotStyleType = number;
3607
+ export class SeriesPlotStyle {
3608
+ static readonly BAR:SeriesPlotStyleType;
3609
+ static readonly STACKED_BAR:SeriesPlotStyleType;
3610
+ static readonly LINE:SeriesPlotStyleType;
3611
+ static readonly AREA:SeriesPlotStyleType;
3612
+ static readonly STACKED_AREA:SeriesPlotStyleType;
3613
+ static readonly PIE:SeriesPlotStyleType;
3614
+ static readonly HISTOGRAM:SeriesPlotStyleType;
3615
+ static readonly OHLC:SeriesPlotStyleType;
3616
+ static readonly SCATTER:SeriesPlotStyleType;
3617
+ static readonly STEP:SeriesPlotStyleType;
3618
+ static readonly ERROR_BAR:SeriesPlotStyleType;
3619
+ static readonly TREEMAP:SeriesPlotStyleType;
3620
+ }
3621
+
3622
+ /**
3623
+ * This enum describes what kind of chart is being drawn. This may limit what kinds of series can be found on it, or how
3624
+ * those series should be rendered.
3625
+ */
3626
+ type ChartTypeType = number;
3627
+ export class ChartType {
3628
+ static readonly XY:ChartTypeType;
3629
+ static readonly PIE:ChartTypeType;
3630
+ static readonly OHLC:ChartTypeType;
3631
+ static readonly CATEGORY:ChartTypeType;
3632
+ static readonly XYZ:ChartTypeType;
3633
+ static readonly CATEGORY_3D:ChartTypeType;
3634
+ static readonly TREEMAP:ChartTypeType;
3671
3635
  }
3672
3636
 
3673
3637
  }
@@ -3681,13 +3645,27 @@ export namespace dh.lsp {
3681
3645
  constructor();
3682
3646
  }
3683
3647
 
3684
- export class TextEdit {
3648
+ export class TextDocumentContentChangeEvent {
3685
3649
  range:Range;
3650
+ rangeLength:number;
3686
3651
  text:string;
3687
3652
 
3688
3653
  constructor();
3689
3654
  }
3690
3655
 
3656
+ export class Position {
3657
+ line:number;
3658
+ character:number;
3659
+
3660
+ constructor();
3661
+
3662
+ lessThan(start:Position):boolean;
3663
+ lessOrEqual(start:Position):boolean;
3664
+ greaterThan(end:Position):boolean;
3665
+ greaterOrEqual(end:Position):boolean;
3666
+ copy():Position;
3667
+ }
3668
+
3691
3669
  export class Hover {
3692
3670
  contents:MarkupContent;
3693
3671
  range:Range;
@@ -3695,13 +3673,11 @@ export namespace dh.lsp {
3695
3673
  constructor();
3696
3674
  }
3697
3675
 
3698
- export class Range {
3699
- start:Position;
3700
- end:Position;
3676
+ export class MarkupContent {
3677
+ kind:string;
3678
+ value:string;
3701
3679
 
3702
3680
  constructor();
3703
-
3704
- isInside(innerStart:Position, innerEnd:Position):boolean;
3705
3681
  }
3706
3682
 
3707
3683
  export class SignatureInformation {
@@ -3713,27 +3689,13 @@ export namespace dh.lsp {
3713
3689
  constructor();
3714
3690
  }
3715
3691
 
3716
- export class TextDocumentContentChangeEvent {
3692
+ export class TextEdit {
3717
3693
  range:Range;
3718
- rangeLength:number;
3719
3694
  text:string;
3720
3695
 
3721
3696
  constructor();
3722
3697
  }
3723
3698
 
3724
- export class Position {
3725
- line:number;
3726
- character:number;
3727
-
3728
- constructor();
3729
-
3730
- lessThan(start:Position):boolean;
3731
- lessOrEqual(start:Position):boolean;
3732
- greaterThan(end:Position):boolean;
3733
- greaterOrEqual(end:Position):boolean;
3734
- copy():Position;
3735
- }
3736
-
3737
3699
  export class CompletionItem {
3738
3700
  label:string;
3739
3701
  kind:number;
@@ -3751,17 +3713,32 @@ export namespace dh.lsp {
3751
3713
  constructor();
3752
3714
  }
3753
3715
 
3754
- export class MarkupContent {
3755
- kind:string;
3756
- value:string;
3716
+ export class Range {
3717
+ start:Position;
3718
+ end:Position;
3757
3719
 
3758
3720
  constructor();
3721
+
3722
+ isInside(innerStart:Position, innerEnd:Position):boolean;
3759
3723
  }
3760
3724
 
3761
3725
  }
3762
3726
 
3727
+
3763
3728
  export namespace dh.calendar {
3764
3729
 
3730
+ export interface Holiday {
3731
+ /**
3732
+ * The date of the Holiday.
3733
+ * @return {@link dh.LocalDateWrapper}
3734
+ */
3735
+ get date():dh.LocalDateWrapper;
3736
+ /**
3737
+ * The business periods that are open on the holiday.
3738
+ * @return dh.calendar.BusinessPeriod
3739
+ */
3740
+ get businessPeriods():Array<BusinessPeriod>;
3741
+ }
3765
3742
  /**
3766
3743
  * Defines a calendar with business hours and holidays.
3767
3744
  */
@@ -3792,18 +3769,6 @@ export namespace dh.calendar {
3792
3769
  */
3793
3770
  get businessPeriods():Array<BusinessPeriod>;
3794
3771
  }
3795
- export interface Holiday {
3796
- /**
3797
- * The date of the Holiday.
3798
- * @return {@link dh.LocalDateWrapper}
3799
- */
3800
- get date():dh.LocalDateWrapper;
3801
- /**
3802
- * The business periods that are open on the holiday.
3803
- * @return dh.calendar.BusinessPeriod
3804
- */
3805
- get businessPeriods():Array<BusinessPeriod>;
3806
- }
3807
3772
  export interface BusinessPeriod {
3808
3773
  get close():string;
3809
3774
  get open():string;
@@ -3823,4 +3788,3 @@ export namespace dh.calendar {
3823
3788
  }
3824
3789
 
3825
3790
  }
3826
-