@sisense/sdk-data 2.5.0 → 2.7.0

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 (32) hide show
  1. package/dist/cjs/dimensional-model/attributes.d.ts +17 -1
  2. package/dist/cjs/dimensional-model/attributes.js +23 -3
  3. package/dist/cjs/dimensional-model/base.d.ts +5 -1
  4. package/dist/cjs/dimensional-model/base.js +6 -2
  5. package/dist/cjs/dimensional-model/dimensions/dimensions.d.ts +17 -1
  6. package/dist/cjs/dimensional-model/dimensions/dimensions.js +24 -12
  7. package/dist/cjs/dimensional-model/filters/filters.d.ts +52 -0
  8. package/dist/cjs/dimensional-model/filters/filters.js +68 -31
  9. package/dist/cjs/dimensional-model/interfaces.d.ts +4 -0
  10. package/dist/cjs/dimensional-model/jaql-element.d.ts +9 -1
  11. package/dist/cjs/dimensional-model/jaql-element.js +13 -4
  12. package/dist/cjs/dimensional-model/measures/measures.d.ts +30 -2
  13. package/dist/cjs/dimensional-model/measures/measures.js +50 -16
  14. package/dist/cjs/dimensional-model/types.js +4 -2
  15. package/dist/cjs/utils.d.ts +2 -2
  16. package/dist/dimensional-model/attributes.d.ts +17 -1
  17. package/dist/dimensional-model/attributes.js +21 -3
  18. package/dist/dimensional-model/base.d.ts +5 -1
  19. package/dist/dimensional-model/base.js +6 -2
  20. package/dist/dimensional-model/dimensions/dimensions.d.ts +17 -1
  21. package/dist/dimensional-model/dimensions/dimensions.js +22 -12
  22. package/dist/dimensional-model/filters/filters.d.ts +52 -0
  23. package/dist/dimensional-model/filters/filters.js +69 -32
  24. package/dist/dimensional-model/interfaces.d.ts +4 -0
  25. package/dist/dimensional-model/jaql-element.d.ts +9 -1
  26. package/dist/dimensional-model/jaql-element.js +12 -4
  27. package/dist/dimensional-model/measures/measures.d.ts +30 -2
  28. package/dist/dimensional-model/measures/measures.js +47 -16
  29. package/dist/dimensional-model/types.js +4 -2
  30. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  31. package/dist/utils.d.ts +2 -2
  32. package/package.json +3 -3
@@ -1,10 +1,11 @@
1
+ /* eslint-disable max-lines */
1
2
  import hash from 'hash-it';
2
3
  import merge from 'lodash-es/merge.js';
3
4
  import omit from 'lodash-es/omit.js';
4
5
  import { TranslatableError } from '../../translation/translatable-error.js';
5
6
  import { DimensionalElement } from '../base.js';
6
7
  import { create } from '../factory.js';
7
- import { DimensionalBaseMeasure } from '../measures/measures.js';
8
+ import { isDimensionalBaseMeasure } from '../measures/measures.js';
8
9
  import { DateLevels, MetadataTypes } from '../types.js';
9
10
  import { getDefaultBaseFilterConfig, getDefaultMembersFilterConfig, } from './filter-config-utils.js';
10
11
  /**
@@ -92,6 +93,10 @@ export const FilterTypes = {
92
93
  class AbstractFilter extends DimensionalElement {
93
94
  constructor(att, filterType, config, composeCode) {
94
95
  super('filter', MetadataTypes.Filter, undefined, undefined, composeCode);
96
+ /**
97
+ * @internal
98
+ */
99
+ this.__serializable = 'AbstractFilter';
95
100
  this.filterType = filterType;
96
101
  // need to set isScope
97
102
  // to make filter complete for comparison
@@ -109,7 +114,6 @@ class AbstractFilter extends DimensionalElement {
109
114
  */
110
115
  serialize() {
111
116
  const result = super.serialize();
112
- result.__serializable = 'AbstractFilter';
113
117
  result.filterType = this.filterType;
114
118
  result.attribute = this.attribute.serialize();
115
119
  if (this.config) {
@@ -167,6 +171,10 @@ class AbstractFilter extends DimensionalElement {
167
171
  export class LogicalAttributeFilter extends AbstractFilter {
168
172
  constructor(filters, operator, config, composeCode) {
169
173
  super(filters[0].attribute, FilterTypes.logicalAttribute, config, composeCode);
174
+ /**
175
+ * @internal
176
+ */
177
+ this.__serializable = 'LogicalAttributeFilter';
170
178
  this.operator = operator;
171
179
  this.filters = filters;
172
180
  }
@@ -181,7 +189,6 @@ export class LogicalAttributeFilter extends AbstractFilter {
181
189
  */
182
190
  serialize() {
183
191
  const result = super.serialize();
184
- result.__serializable = 'LogicalAttributeFilter';
185
192
  result.operator = this.operator;
186
193
  result.filters = this.filters.map((f) => f.serialize());
187
194
  return result;
@@ -201,6 +208,10 @@ export class LogicalAttributeFilter extends AbstractFilter {
201
208
  export class MembersFilter extends AbstractFilter {
202
209
  constructor(attribute, members, config, composeCode) {
203
210
  super(attribute, FilterTypes.members, undefined, composeCode);
211
+ /**
212
+ * @internal
213
+ */
214
+ this.__serializable = 'MembersFilter';
204
215
  this.members = members !== null && members !== void 0 ? members : [];
205
216
  if (this.members.filter((m) => m === null || m === undefined).length > 0) {
206
217
  throw new TranslatableError('errors.filter.membersFilterNullMember', {
@@ -226,7 +237,6 @@ export class MembersFilter extends AbstractFilter {
226
237
  */
227
238
  serialize() {
228
239
  const result = super.serialize();
229
- result.__serializable = 'MembersFilter';
230
240
  if (this.config) {
231
241
  result.config = (this.config.backgroundFilter
232
242
  ? Object.assign(Object.assign({}, this.config), { backgroundFilter: this.config.backgroundFilter.serialize() }) : this.config);
@@ -258,6 +268,10 @@ export class MembersFilter extends AbstractFilter {
258
268
  export class CascadingFilter extends AbstractFilter {
259
269
  constructor(filters, config, composeCode) {
260
270
  super(filters[0].attribute, FilterTypes.cascading, config, composeCode);
271
+ /**
272
+ * @internal
273
+ */
274
+ this.__serializable = 'CascadingFilter';
261
275
  this._filters = filters;
262
276
  }
263
277
  /**
@@ -281,7 +295,6 @@ export class CascadingFilter extends AbstractFilter {
281
295
  */
282
296
  serialize() {
283
297
  const result = super.serialize();
284
- result.__serializable = 'CascadingFilter';
285
298
  result._filters = this.filters.map((f) => f.serialize());
286
299
  return result;
287
300
  }
@@ -309,6 +322,10 @@ export class CascadingFilter extends AbstractFilter {
309
322
  export class ExcludeFilter extends AbstractFilter {
310
323
  constructor(filter, input, config, composeCode) {
311
324
  super(filter.attribute, FilterTypes.exclude, config, composeCode);
325
+ /**
326
+ * @internal
327
+ */
328
+ this.__serializable = 'ExcludeFilter';
312
329
  this.input = input;
313
330
  this.filter = filter;
314
331
  }
@@ -327,7 +344,6 @@ export class ExcludeFilter extends AbstractFilter {
327
344
  */
328
345
  serialize() {
329
346
  const result = super.serialize();
330
- result.__serializable = 'ExcludeFilter';
331
347
  result.filter = this.filter.serialize();
332
348
  if (this.input) {
333
349
  result.input = this.input.serialize();
@@ -356,6 +372,10 @@ export class ExcludeFilter extends AbstractFilter {
356
372
  export class DoubleOperatorFilter extends AbstractFilter {
357
373
  constructor(att, filterType, operatorA, valueA, operatorB, valueB, config, composeCode) {
358
374
  super(att, filterType, config, composeCode);
375
+ /**
376
+ * @internal
377
+ */
378
+ this.__serializable = 'DoubleOperatorFilter';
359
379
  if (operatorA && valueA !== undefined) {
360
380
  this.valueA = valueA;
361
381
  this.operatorA = operatorA;
@@ -383,7 +403,6 @@ export class DoubleOperatorFilter extends AbstractFilter {
383
403
  */
384
404
  serialize() {
385
405
  const result = super.serialize();
386
- result.__serializable = 'DoubleOperatorFilter';
387
406
  if (this.operatorA) {
388
407
  result.operatorA = this.operatorA;
389
408
  }
@@ -418,6 +437,10 @@ export class DoubleOperatorFilter extends AbstractFilter {
418
437
  export class MeasureFilter extends DoubleOperatorFilter {
419
438
  constructor(att, measure, operatorA, valueA, operatorB, valueB, config, composeCode) {
420
439
  super(att, FilterTypes.measure, operatorA, valueA, operatorB, valueB, config, composeCode);
440
+ /**
441
+ * @internal
442
+ */
443
+ this.__serializable = 'MeasureFilter';
421
444
  this.measure = measure;
422
445
  }
423
446
  /**
@@ -438,7 +461,6 @@ export class MeasureFilter extends DoubleOperatorFilter {
438
461
  */
439
462
  serialize() {
440
463
  const result = super.serialize();
441
- result.__serializable = 'MeasureFilter';
442
464
  result.measure = this.measure.serialize();
443
465
  return result;
444
466
  }
@@ -447,7 +469,7 @@ export class MeasureFilter extends DoubleOperatorFilter {
447
469
  return AbstractFilter.disabledJaql(nested);
448
470
  }
449
471
  const result = super.jaql(nested);
450
- if (this.measure instanceof DimensionalBaseMeasure) {
472
+ if (isDimensionalBaseMeasure(this.measure)) {
451
473
  Object.entries(this.measure.jaql().jaql).forEach(([key, value]) => {
452
474
  result.jaql[key] = value;
453
475
  });
@@ -461,6 +483,10 @@ export class MeasureFilter extends DoubleOperatorFilter {
461
483
  export class RankingFilter extends AbstractFilter {
462
484
  constructor(att, measure, operator, count, config, composeCode) {
463
485
  super(att, FilterTypes.ranking, config, composeCode);
486
+ /**
487
+ * @internal
488
+ */
489
+ this.__serializable = 'RankingFilter';
464
490
  this.count = count;
465
491
  this.operator = operator;
466
492
  this.measure = measure;
@@ -476,7 +502,6 @@ export class RankingFilter extends AbstractFilter {
476
502
  */
477
503
  serialize() {
478
504
  const result = super.serialize();
479
- result.__serializable = 'RankingFilter';
480
505
  result.count = this.count;
481
506
  result.operator = this.operator;
482
507
  result.measure = this.measure.serialize();
@@ -498,14 +523,16 @@ export class RankingFilter extends AbstractFilter {
498
523
  export class NumericFilter extends DoubleOperatorFilter {
499
524
  constructor(att, operatorA, valueA, operatorB, valueB, config, composeCode) {
500
525
  super(att, FilterTypes.numeric, operatorA, valueA, operatorB, valueB, config, composeCode);
526
+ /**
527
+ * @internal
528
+ */
529
+ this.__serializable = 'NumericFilter';
501
530
  }
502
531
  /**
503
532
  * Gets a serializable representation of the element
504
533
  */
505
534
  serialize() {
506
- const result = super.serialize();
507
- result.__serializable = 'NumericFilter';
508
- return result;
535
+ return super.serialize();
509
536
  }
510
537
  }
511
538
  /**
@@ -514,14 +541,16 @@ export class NumericFilter extends DoubleOperatorFilter {
514
541
  export class TextFilter extends DoubleOperatorFilter {
515
542
  constructor(att, operator, value, config, composeCode) {
516
543
  super(att, FilterTypes.text, operator, value, undefined, undefined, config, composeCode);
544
+ /**
545
+ * @internal
546
+ */
547
+ this.__serializable = 'TextFilter';
517
548
  }
518
549
  /**
519
550
  * Gets a serializable representation of the element
520
551
  */
521
552
  serialize() {
522
- const result = super.serialize();
523
- result.__serializable = 'TextFilter';
524
- return result;
553
+ return super.serialize();
525
554
  }
526
555
  }
527
556
  /**
@@ -530,6 +559,10 @@ export class TextFilter extends DoubleOperatorFilter {
530
559
  export class DateRangeFilter extends DoubleOperatorFilter {
531
560
  constructor(levelAttribute, valueFrom, valueTo, config, composeCode) {
532
561
  super(levelAttribute, FilterTypes.dateRange, DateOperators.From, valueFrom, DateOperators.To, valueTo, config, composeCode);
562
+ /**
563
+ * @internal
564
+ */
565
+ this.__serializable = 'DateRangeFilter';
533
566
  if (typeof valueFrom === 'object') {
534
567
  this.valueA = valueFrom.toISOString();
535
568
  }
@@ -556,9 +589,7 @@ export class DateRangeFilter extends DoubleOperatorFilter {
556
589
  * Gets a serializable representation of the element
557
590
  */
558
591
  serialize() {
559
- const result = super.serialize();
560
- result.__serializable = 'DateRangeFilter';
561
- return result;
592
+ return super.serialize();
562
593
  }
563
594
  }
564
595
  /**
@@ -567,6 +598,10 @@ export class DateRangeFilter extends DoubleOperatorFilter {
567
598
  export class RelativeDateFilter extends AbstractFilter {
568
599
  constructor(levelAttribute, offset, count, operator, anchor, config, composeCode) {
569
600
  super(levelAttribute, FilterTypes.relativeDate, config, composeCode);
601
+ /**
602
+ * @internal
603
+ */
604
+ this.__serializable = 'RelativeDateFilter';
570
605
  if (!operator) {
571
606
  operator = DateOperators.Next;
572
607
  }
@@ -598,7 +633,6 @@ export class RelativeDateFilter extends AbstractFilter {
598
633
  */
599
634
  serialize() {
600
635
  const result = super.serialize();
601
- result.__serializable = 'RelativeDateFilter';
602
636
  result.offset = this.offset;
603
637
  result.count = this.count;
604
638
  result.operator = this.operator;
@@ -634,6 +668,10 @@ export class RelativeDateFilter extends AbstractFilter {
634
668
  export class CustomFilter extends AbstractFilter {
635
669
  constructor(att, jaql, config, composeCode) {
636
670
  super(att, FilterTypes.advanced, config, composeCode);
671
+ /**
672
+ * @internal
673
+ */
674
+ this.__serializable = 'CustomFilter';
637
675
  // remove filterType from jaql as it is not needed
638
676
  delete jaql.filterType;
639
677
  this.jaqlExpression = jaql;
@@ -656,7 +694,6 @@ export class CustomFilter extends AbstractFilter {
656
694
  */
657
695
  serialize() {
658
696
  const result = super.serialize();
659
- result.__serializable = 'CustomFilter';
660
697
  result.jaqlExpression = this.jaqlExpression;
661
698
  return result;
662
699
  }
@@ -668,7 +705,7 @@ export class CustomFilter extends AbstractFilter {
668
705
  * @internal
669
706
  */
670
707
  export function isCustomFilter(filter) {
671
- return 'filterType' in filter && filter.filterType === FilterTypes.advanced;
708
+ return filter && filter.__serializable === 'CustomFilter';
672
709
  }
673
710
  /**
674
711
  * Checks if a filter is a MembersFilter.
@@ -677,7 +714,7 @@ export function isCustomFilter(filter) {
677
714
  * @internal
678
715
  */
679
716
  export function isMembersFilter(filter) {
680
- return 'filterType' in filter && filter.filterType === FilterTypes.members;
717
+ return filter && filter.__serializable === 'MembersFilter';
681
718
  }
682
719
  /**
683
720
  * Checks if a filter is a NumericFilter.
@@ -686,7 +723,7 @@ export function isMembersFilter(filter) {
686
723
  * @internal
687
724
  */
688
725
  export function isNumericFilter(filter) {
689
- return 'filterType' in filter && filter.filterType === FilterTypes.numeric;
726
+ return filter && filter.__serializable === 'NumericFilter';
690
727
  }
691
728
  /**
692
729
  * Checks if a filter is a TextFilter.
@@ -695,7 +732,7 @@ export function isNumericFilter(filter) {
695
732
  * @internal
696
733
  */
697
734
  export function isRankingFilter(filter) {
698
- return 'filterType' in filter && filter.filterType === FilterTypes.ranking;
735
+ return filter && filter.__serializable === 'RankingFilter';
699
736
  }
700
737
  /**
701
738
  * Checks if a filter is a MeasureFilter.
@@ -704,7 +741,7 @@ export function isRankingFilter(filter) {
704
741
  * @internal
705
742
  */
706
743
  export function isMeasureFilter(filter) {
707
- return 'filterType' in filter && filter.filterType === FilterTypes.measure;
744
+ return filter && filter.__serializable === 'MeasureFilter';
708
745
  }
709
746
  /**
710
747
  * Checks if a filter is a ExcludeFilter.
@@ -713,7 +750,7 @@ export function isMeasureFilter(filter) {
713
750
  * @internal
714
751
  */
715
752
  export function isExcludeFilter(filter) {
716
- return 'filterType' in filter && filter.filterType === FilterTypes.exclude;
753
+ return filter && filter.__serializable === 'ExcludeFilter';
717
754
  }
718
755
  /**
719
756
  * Checks if a filter is a LogicalAttributeFilter.
@@ -722,7 +759,7 @@ export function isExcludeFilter(filter) {
722
759
  * @internal
723
760
  */
724
761
  export function isLogicalAttributeFilter(filter) {
725
- return 'filterType' in filter && filter.filterType === FilterTypes.logicalAttribute;
762
+ return filter && filter.__serializable === 'LogicalAttributeFilter';
726
763
  }
727
764
  /**
728
765
  * Checks if a filter is a CascadingFilter.
@@ -731,7 +768,7 @@ export function isLogicalAttributeFilter(filter) {
731
768
  * @internal
732
769
  */
733
770
  export function isCascadingFilter(filter) {
734
- return 'filterType' in filter && filter.filterType === FilterTypes.cascading;
771
+ return filter && filter.__serializable === 'CascadingFilter';
735
772
  }
736
773
  /**
737
774
  * Checks if a filter is a RelativeDateFilter.
@@ -740,7 +777,7 @@ export function isCascadingFilter(filter) {
740
777
  * @internal
741
778
  */
742
779
  export function isRelativeDateFilter(filter) {
743
- return 'filterType' in filter && filter.filterType === FilterTypes.relativeDate;
780
+ return filter && filter.__serializable === 'RelativeDateFilter';
744
781
  }
745
782
  /**
746
783
  * Checks if a filter is a TextFilter.
@@ -749,7 +786,7 @@ export function isRelativeDateFilter(filter) {
749
786
  * @internal
750
787
  */
751
788
  export function isTextFilter(filter) {
752
- return 'filterType' in filter && filter.filterType === FilterTypes.text;
789
+ return filter && filter.__serializable === 'TextFilter';
753
790
  }
754
791
  /**
755
792
  * Checks if a filter is a DateRangeFilter.
@@ -758,7 +795,7 @@ export function isTextFilter(filter) {
758
795
  * @internal
759
796
  */
760
797
  export function isDateRangeFilter(filter) {
761
- return 'filterType' in filter && filter.filterType === FilterTypes.dateRange;
798
+ return filter && filter.__serializable === 'DateRangeFilter';
762
799
  }
763
800
  /**
764
801
  * @param json - Filter JSON representation
@@ -41,6 +41,10 @@ export interface Element {
41
41
  * @internal
42
42
  */
43
43
  readonly dataSource?: JaqlDataSource;
44
+ /**
45
+ * @internal
46
+ */
47
+ readonly __serializable: string;
44
48
  /**
45
49
  * Gets a serializable representation of the element.
46
50
  *
@@ -1,6 +1,6 @@
1
1
  import { DimensionalElement } from './base.js';
2
2
  import { SortDirection } from './interfaces.js';
3
- import { JSONObject, MetadataItem, MetadataItemJaql } from './types.js';
3
+ import { AnyObject, JSONObject, MetadataItem, MetadataItemJaql } from './types.js';
4
4
  /**
5
5
  * This implementation wraps metadata for a JAQL query. The metadata could be
6
6
  * for a dimension, measure, or filter. We do little to no interpretation of
@@ -16,6 +16,10 @@ import { JSONObject, MetadataItem, MetadataItemJaql } from './types.js';
16
16
  * @internal
17
17
  */
18
18
  export declare class JaqlElement extends DimensionalElement {
19
+ /**
20
+ * @internal
21
+ */
22
+ readonly __serializable: string;
19
23
  private readonly metadataItem;
20
24
  expression: string;
21
25
  skipValidation: boolean;
@@ -31,6 +35,10 @@ export declare class JaqlElement extends DimensionalElement {
31
35
  */
32
36
  serialize(): JSONObject;
33
37
  }
38
+ /**
39
+ * @internal
40
+ */
41
+ export declare const isJaqlElement: (v: AnyObject) => v is JaqlElement;
34
42
  /**
35
43
  * Create a JaqlElement from a MetadataItem
36
44
  *
@@ -1,5 +1,4 @@
1
- import { createAttributeHelper, createCalculatedMeasureHelper, createMeasureHelper, getSortType, } from '../utils.js';
2
- import { DimensionalLevelAttribute } from './attributes.js';
1
+ import { createAttributeHelper, createCalculatedMeasureHelper, createMeasureHelper, getGranularityFromJaql, getSortType, } from '../utils.js';
3
2
  import { DimensionalElement } from './base.js';
4
3
  import { MetadataTypes, } from './types.js';
5
4
  /**
@@ -20,6 +19,10 @@ export class JaqlElement extends DimensionalElement {
20
19
  constructor(item, type) {
21
20
  var _a;
22
21
  super((_a = item.jaql.title) !== null && _a !== void 0 ? _a : '', type);
22
+ /**
23
+ * @internal
24
+ */
25
+ this.__serializable = 'JaqlElement';
23
26
  this.expression = (item.jaql.dim || item.jaql.formula);
24
27
  this.metadataItem = item;
25
28
  if (item.jaql.agg) {
@@ -53,7 +56,6 @@ export class JaqlElement extends DimensionalElement {
53
56
  */
54
57
  serialize() {
55
58
  const result = super.serialize();
56
- result.__serializable = 'JaqlElement';
57
59
  result.metadataItem = this.metadataItem;
58
60
  result.type = this.type;
59
61
  return result;
@@ -64,6 +66,12 @@ const toMetadataType = {
64
66
  numeric: MetadataTypes.NumericAttribute,
65
67
  datetime: MetadataTypes.DateLevel,
66
68
  };
69
+ /**
70
+ * @internal
71
+ */
72
+ export const isJaqlElement = (v) => {
73
+ return v && v.__serializable === 'JaqlElement';
74
+ };
67
75
  /**
68
76
  * Create a JaqlElement from a MetadataItem
69
77
  *
@@ -90,7 +98,7 @@ export function createDimensionalElementFromMetadataItem(item) {
90
98
  if (jaql.formula) {
91
99
  return createCalculatedMeasureHelper(jaql);
92
100
  }
93
- const granularity = DimensionalLevelAttribute.translateJaqlToGranularity(jaql);
101
+ const granularity = getGranularityFromJaql(jaql);
94
102
  // measure
95
103
  if ('agg' in jaql && jaql.dim && jaql.datatype) {
96
104
  return createMeasureHelper({
@@ -1,10 +1,14 @@
1
1
  import { DimensionalElement } from '../base.js';
2
2
  import { Attribute, BaseMeasure, CalculatedMeasure, Measure, MeasureContext, MeasureTemplate } from '../interfaces.js';
3
- import { JaqlDataSource, JSONObject, Sort } from '../types.js';
3
+ import { AnyObject, JaqlDataSource, JSONObject, Sort } from '../types.js';
4
4
  /**
5
5
  * @internal
6
6
  */
7
7
  export declare abstract class AbstractMeasure extends DimensionalElement {
8
+ /**
9
+ * @internal
10
+ */
11
+ readonly __serializable: string;
8
12
  protected _sort: Sort;
9
13
  protected _format: string | undefined;
10
14
  constructor(name: string, type: string, format?: string, desc?: string, sort?: Sort, dataSource?: JaqlDataSource, composeCode?: string);
@@ -49,6 +53,10 @@ export declare abstract class AbstractMeasure extends DimensionalElement {
49
53
  * @internal
50
54
  */
51
55
  export declare class DimensionalBaseMeasure extends AbstractMeasure implements BaseMeasure {
56
+ /**
57
+ * @internal
58
+ */
59
+ readonly __serializable: string;
52
60
  static aggregationFromJAQL(agg: string): string;
53
61
  static aggregationToJAQL(agg: string): string;
54
62
  constructor(name: string, attribute: Attribute, agg: string, format?: string, desc?: string, sort?: Sort, dataSource?: JaqlDataSource, composeCode?: string);
@@ -86,6 +94,10 @@ export declare class DimensionalBaseMeasure extends AbstractMeasure implements B
86
94
  serialize(): JSONObject;
87
95
  jaql(nested?: boolean): any;
88
96
  }
97
+ /**
98
+ * @internal
99
+ */
100
+ export declare const isDimensionalBaseMeasure: (v: AnyObject) => v is DimensionalBaseMeasure;
89
101
  /**
90
102
  * Stands for a Calculated Measure
91
103
  *
@@ -93,6 +105,10 @@ export declare class DimensionalBaseMeasure extends AbstractMeasure implements B
93
105
  * @internal
94
106
  */
95
107
  export declare class DimensionalCalculatedMeasure extends AbstractMeasure implements CalculatedMeasure {
108
+ /**
109
+ * @internal
110
+ */
111
+ readonly __serializable: string;
96
112
  constructor(name: string, expression: string, context: MeasureContext, format?: string, desc?: string, sort?: Sort, dataSource?: JaqlDataSource, composeCode?: string);
97
113
  /**
98
114
  * Defines the Calculated measure's expression
@@ -128,12 +144,20 @@ export declare class DimensionalCalculatedMeasure extends AbstractMeasure implem
128
144
  serialize(): JSONObject;
129
145
  jaql(nested?: boolean): any;
130
146
  }
147
+ /**
148
+ * @internal
149
+ */
150
+ export declare const isDimensionalCalculatedMeasure: (v: AnyObject) => v is DimensionalCalculatedMeasure;
131
151
  /**
132
152
  * Stands for a Measure template - generator for different aggregation over Attribute
133
153
  *
134
154
  * @internal
135
155
  */
136
156
  export declare class DimensionalMeasureTemplate extends AbstractMeasure implements MeasureTemplate {
157
+ /**
158
+ * @internal
159
+ */
160
+ readonly __serializable: string;
137
161
  constructor(name: string, attribute: Attribute, format?: string, desc?: string, sort?: Sort, dataSource?: JaqlDataSource, composeCode?: string);
138
162
  /**
139
163
  * Aggregating attribute
@@ -211,7 +235,11 @@ export declare class DimensionalMeasureTemplate extends AbstractMeasure implemen
211
235
  countDistinct(format?: string): Measure;
212
236
  }
213
237
  /**
214
- * @param json
238
+ * @internal
239
+ */
240
+ export declare const isDimensionalMeasureTemplate: (v: AnyObject) => v is DimensionalMeasureTemplate;
241
+ /**
242
+ * @param json - The JSON object to create a measure from
215
243
  * @internal
216
244
  */
217
245
  export declare function createMeasure(json: any): Measure | BaseMeasure;