@sisense/sdk-data 1.12.0 → 1.14.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 (48) hide show
  1. package/dist/cjs/dimensional-model/analytics/factory.js +6 -4
  2. package/dist/cjs/dimensional-model/attributes.js +20 -1
  3. package/dist/cjs/dimensional-model/dimensions.d.ts +8 -0
  4. package/dist/cjs/dimensional-model/dimensions.js +4 -0
  5. package/dist/cjs/dimensional-model/dimensions.test.js +30 -0
  6. package/dist/cjs/dimensional-model/filters/factory.d.ts +3 -2
  7. package/dist/cjs/dimensional-model/filters/factory.js +5 -5
  8. package/dist/cjs/dimensional-model/filters/factory.test.js +1 -1
  9. package/dist/cjs/dimensional-model/filters/filters.d.ts +37 -2
  10. package/dist/cjs/dimensional-model/filters/filters.js +88 -4
  11. package/dist/cjs/dimensional-model/filters/filters.test.js +16 -0
  12. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +4 -2
  13. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.js +5 -1
  14. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +10 -1
  15. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +28 -3
  16. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.test.js +80 -15
  17. package/dist/cjs/dimensional-model/filters/utils/filter-types-util.js +3 -3
  18. package/dist/cjs/dimensional-model/filters/utils/types.d.ts +6 -0
  19. package/dist/cjs/dimensional-model/interfaces.d.ts +14 -0
  20. package/dist/cjs/dimensional-model/types.d.ts +2 -0
  21. package/dist/cjs/dimensional-model/types.js +4 -0
  22. package/dist/cjs/interfaces.d.ts +1 -1
  23. package/dist/cjs/translation/resources/en.js +1 -1
  24. package/dist/cjs/translation/resources/uk.js +1 -1
  25. package/dist/cjs/utils.js +6 -2
  26. package/dist/cjs/utils.test.js +24 -0
  27. package/dist/dimensional-model/analytics/factory.js +6 -4
  28. package/dist/dimensional-model/attributes.js +20 -1
  29. package/dist/dimensional-model/dimensions.d.ts +8 -0
  30. package/dist/dimensional-model/dimensions.js +4 -0
  31. package/dist/dimensional-model/filters/factory.d.ts +3 -2
  32. package/dist/dimensional-model/filters/factory.js +6 -6
  33. package/dist/dimensional-model/filters/filters.d.ts +37 -2
  34. package/dist/dimensional-model/filters/filters.js +86 -3
  35. package/dist/dimensional-model/filters/utils/condition-filter-util.js +4 -2
  36. package/dist/dimensional-model/filters/utils/filter-code-util.js +5 -1
  37. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.d.ts +10 -1
  38. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +26 -2
  39. package/dist/dimensional-model/filters/utils/filter-types-util.js +3 -3
  40. package/dist/dimensional-model/filters/utils/types.d.ts +6 -0
  41. package/dist/dimensional-model/interfaces.d.ts +14 -0
  42. package/dist/dimensional-model/types.d.ts +2 -0
  43. package/dist/dimensional-model/types.js +4 -0
  44. package/dist/interfaces.d.ts +1 -1
  45. package/dist/translation/resources/en.js +1 -1
  46. package/dist/translation/resources/uk.js +1 -1
  47. package/dist/utils.js +6 -2
  48. package/package.json +3 -3
@@ -86,6 +86,7 @@ export const FilterTypes = {
86
86
  date: 'date',
87
87
  relativeDate: 'relativeDate',
88
88
  cascading: 'cascading',
89
+ advanced: 'advanced',
89
90
  };
90
91
  // CLASSES
91
92
  /**
@@ -101,6 +102,29 @@ class AbstractFilter extends DimensionalElement {
101
102
  this.attribute = att;
102
103
  this.guid = guid || guidFast(13);
103
104
  this.disabled = false;
105
+ this.locked = false;
106
+ }
107
+ /**
108
+ * Boolean flag whether the filter is disabled
109
+ *
110
+ * @internal
111
+ */
112
+ get disabled() {
113
+ return this._disabled;
114
+ }
115
+ set disabled(value) {
116
+ this._disabled = value;
117
+ }
118
+ /**
119
+ * Boolean flag whether the filter is locked
120
+ *
121
+ * @internal
122
+ */
123
+ get locked() {
124
+ return this._locked;
125
+ }
126
+ set locked(value) {
127
+ this._locked = value;
104
128
  }
105
129
  get name() {
106
130
  return hash(this.jaql());
@@ -143,7 +167,9 @@ class AbstractFilter extends DimensionalElement {
143
167
  const { granularity } = attribute;
144
168
  if (granularity === DateLevels.Hours ||
145
169
  granularity === DateLevels.MinutesRoundTo30 ||
146
- granularity === DateLevels.MinutesRoundTo15) {
170
+ granularity === DateLevels.MinutesRoundTo15 ||
171
+ granularity === DateLevels.Minutes ||
172
+ granularity === DateLevels.Seconds) {
147
173
  throw new TranslatableError('errors.filter.unsupportedDatetimeLevel');
148
174
  }
149
175
  }
@@ -188,9 +214,11 @@ export class LogicalAttributeFilter extends AbstractFilter {
188
214
  * @internal
189
215
  */
190
216
  export class MembersFilter extends AbstractFilter {
191
- constructor(attribute, members, guid) {
217
+ constructor(attribute, members, _deactivatedMembers, guid, backgroundFilter) {
192
218
  super(attribute, FilterTypes.members, guid);
193
219
  this.members = members !== null && members !== void 0 ? members : [];
220
+ this._deactivatedMembers = _deactivatedMembers !== null && _deactivatedMembers !== void 0 ? _deactivatedMembers : [];
221
+ this.backgroundFilter = backgroundFilter;
194
222
  if (this.members.filter((m) => m === null || m === undefined).length > 0) {
195
223
  throw new TranslatableError('errors.filter.membersFilterNullMember', {
196
224
  attributeId: attribute.id,
@@ -209,15 +237,24 @@ export class MembersFilter extends AbstractFilter {
209
237
  serializable() {
210
238
  const result = super.serializable();
211
239
  result.members = this.members;
240
+ if (this.backgroundFilter) {
241
+ result.backgroundFilter = this.backgroundFilter.serializable();
242
+ }
212
243
  return result;
213
244
  }
214
245
  /**
215
246
  * Gets JAQL representing this Filter instance
216
247
  */
217
248
  filterJaql() {
218
- return {
249
+ const filterJaql = {
219
250
  members: this.members.map((m) => m.toString()),
220
251
  };
252
+ if (this.backgroundFilter) {
253
+ return {
254
+ and: [filterJaql, this.backgroundFilter.filterJaql()],
255
+ };
256
+ }
257
+ return filterJaql;
221
258
  }
222
259
  }
223
260
  /**
@@ -234,6 +271,28 @@ export class CascadingFilter extends AbstractFilter {
234
271
  get id() {
235
272
  return `${this.filterType}_${this.filters.map((f) => f.id).join()}`;
236
273
  }
274
+ get disabled() {
275
+ return super.disabled;
276
+ }
277
+ set disabled(value) {
278
+ super.disabled = value;
279
+ if (this.filters) {
280
+ this.filters.forEach((filter) => {
281
+ filter.disabled = value;
282
+ });
283
+ }
284
+ }
285
+ get locked() {
286
+ return super.locked;
287
+ }
288
+ set locked(value) {
289
+ super.locked = value;
290
+ if (this.filters) {
291
+ this.filters.forEach((filter) => {
292
+ filter.locked = value;
293
+ });
294
+ }
295
+ }
237
296
  /**
238
297
  * Gets a serializable representation of the element
239
298
  */
@@ -556,6 +615,30 @@ export class RelativeDateFilter extends AbstractFilter {
556
615
  return result;
557
616
  }
558
617
  }
618
+ /**
619
+ * @internal
620
+ */
621
+ export class CustomFilter extends AbstractFilter {
622
+ constructor(att, jaql, guid) {
623
+ super(att, FilterTypes.advanced, guid);
624
+ // remove filterType from jaql as it is not needed
625
+ delete jaql.filterType;
626
+ this.jaqlExpression = jaql;
627
+ }
628
+ /**
629
+ * gets the element's ID
630
+ */
631
+ get id() {
632
+ return `custom_${this.attribute.id}_${this.guid}`;
633
+ }
634
+ /**
635
+ * Gets JAQL representing this Filter instance
636
+ *
637
+ */
638
+ filterJaql() {
639
+ return this.jaqlExpression;
640
+ }
641
+ }
559
642
  /**
560
643
  * @param json - Filter JSON representation
561
644
  * @internal
@@ -81,7 +81,7 @@ export const getSelectedConditionOption = (filter) => {
81
81
  * @returns attribute filter
82
82
  */
83
83
  export const createAttributeFilterFromConditionFilterJaql = (attribute, conditionFilterJaql, guid) => {
84
- var _a, _b;
84
+ var _a, _b, _c;
85
85
  const conditionType = getSelectedConditionOption(conditionFilterJaql);
86
86
  switch (conditionType) {
87
87
  case ConditionFilterType.BOTTOM:
@@ -119,7 +119,7 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
119
119
  case ConditionFilterType.BETWEEN:
120
120
  return withComposeCode(filterFactory.between)(attribute, conditionFilterJaql.from, conditionFilterJaql.to, guid);
121
121
  case ConditionFilterType.IS_NOT_BETWEEN:
122
- return withComposeCode(filterFactory.exclude)(withComposeCode(filterFactory.between)(attribute, (_a = conditionFilterJaql.exclude) === null || _a === void 0 ? void 0 : _a.from, (_b = conditionFilterJaql.exclude) === null || _b === void 0 ? void 0 : _b.to, guid));
122
+ return withComposeCode(filterFactory.exclude)(withComposeCode(filterFactory.between)(attribute, (_a = conditionFilterJaql.exclude) === null || _a === void 0 ? void 0 : _a.from, (_b = conditionFilterJaql.exclude) === null || _b === void 0 ? void 0 : _b.to, guid), undefined, guid);
123
123
  case ConditionFilterType.MULTIPLE_CONDITION:
124
124
  if (conditionFilterJaql.and) {
125
125
  return withComposeCode(filterFactory.intersection)(conditionFilterJaql.and.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), guid);
@@ -128,6 +128,8 @@ export const createAttributeFilterFromConditionFilterJaql = (attribute, conditio
128
128
  return withComposeCode(filterFactory.union)(conditionFilterJaql.or.map((c) => createAttributeFilterFromConditionFilterJaql(attribute, c, guid)), guid);
129
129
  }
130
130
  break;
131
+ case ConditionFilterType.IS_NOT:
132
+ return withComposeCode(filterFactory.exclude)(withComposeCode(filterFactory.members)(attribute, ((_c = conditionFilterJaql.exclude) === null || _c === void 0 ? void 0 : _c.members) || [], undefined, guid), undefined, guid);
131
133
  case ConditionFilterType.AFTER:
132
134
  case ConditionFilterType.BEFORE:
133
135
  case ConditionFilterType.IS_EMPTY:
@@ -40,7 +40,11 @@ export function stringifyHelper(arg) {
40
40
  */
41
41
  export function withComposeCode(func) {
42
42
  return function (...args) {
43
- const argValues = args.map(stringifyHelper).join(', ').replace(/, $/, '');
43
+ const argValues = args
44
+ .map(stringifyHelper)
45
+ .join(', ')
46
+ // remove any number of trailing commas
47
+ .replace(/(,\s*)+$/, '');
44
48
  const signature = `filterFactory.${func.name}(${argValues})`;
45
49
  const filter = func(...args);
46
50
  filter.composeCode = signature;
@@ -1,4 +1,4 @@
1
- import { ConditionFilterJaql, FilterJaqlInternal, PeriodFilterJaql, RangeFilterJaql, SpecificItemsFilterJaql } from './types.js';
1
+ import { BaseFilterJaql, ConditionFilterJaql, FilterJaqlInternal, PeriodFilterJaql, RangeFilterJaql, SpecificItemsFilterJaql } from './types.js';
2
2
  import { Attribute, BaseMeasure, Filter, LevelAttribute } from '../../interfaces.js';
3
3
  import { FilterJaql } from '../../types.js';
4
4
  /**
@@ -63,6 +63,15 @@ export declare const createFilterFromPeriodFilterJaql: (attribute: LevelAttribut
63
63
  * @returns Filter object
64
64
  */
65
65
  export declare const createFilterFromConditionFilterJaql: (attribute: Attribute, conditionFilterJaql: ConditionFilterJaql, measure?: BaseMeasure, guid?: string) => Filter;
66
+ /**
67
+ * Creates a filter from a custom filter JAQL object.
68
+ *
69
+ * @param attribute - attribute
70
+ * @param customFilterJaql - Custom Filter Jaql
71
+ * @param guid - Optional GUID for the filter
72
+ * @returns Filter object
73
+ */
74
+ export declare const createFilterFromCustomFilterJaql: (attribute: Attribute, customFilterJaql: BaseFilterJaql, guid?: string) => Filter;
66
75
  /**
67
76
  * Creates a filter from a filter JAQL object.
68
77
  *
@@ -44,7 +44,7 @@ export const createGenericFilter = (jaql, guid) => {
44
44
  * @returns The created Filter object.
45
45
  */
46
46
  export const createFilterIncludeAll = (attribute, guid) => {
47
- return withComposeCode(filterFactory.members)(attribute, [], guid);
47
+ return withComposeCode(filterFactory.members)(attribute, [], [], guid);
48
48
  };
49
49
  /**
50
50
  * Creates a filter from a specific items filter JAQL object.
@@ -55,8 +55,20 @@ export const createFilterIncludeAll = (attribute, guid) => {
55
55
  * @returns Filter object
56
56
  */
57
57
  export const createFilterFromSpecificItemsFilterJaql = (attribute, specificItemsFilterJaql, guid) => {
58
- return withComposeCode(filterFactory.members)(attribute, specificItemsFilterJaql.members, guid);
58
+ const deactivatedMembers = getDeactivatedMembersFromFilterJaql(specificItemsFilterJaql);
59
+ const activeMembers = getActiveMembersFromFilterJaql(specificItemsFilterJaql, deactivatedMembers);
60
+ return withComposeCode(filterFactory.members)(attribute, activeMembers, deactivatedMembers, guid);
59
61
  };
62
+ function getDeactivatedMembersFromFilterJaql(filterJaql) {
63
+ var _a, _b, _c;
64
+ return ((_a = filterJaql.filter) === null || _a === void 0 ? void 0 : _a.turnedOff) ? (_c = (_b = filterJaql.filter) === null || _b === void 0 ? void 0 : _b.exclude) === null || _c === void 0 ? void 0 : _c.members : undefined;
65
+ }
66
+ function getActiveMembersFromFilterJaql(filterJaql, deactivatedMembers) {
67
+ const allMembers = filterJaql.members;
68
+ return deactivatedMembers
69
+ ? allMembers.filter((member) => !deactivatedMembers.includes(member))
70
+ : allMembers;
71
+ }
60
72
  /**
61
73
  * Creates a filter from a date range filter JAQL object.
62
74
  *
@@ -112,6 +124,17 @@ export const createFilterFromConditionFilterJaql = (attribute, conditionFilterJa
112
124
  return createAttributeFilterFromConditionFilterJaql(attribute, conditionFilterJaql, guid);
113
125
  }
114
126
  };
127
+ /**
128
+ * Creates a filter from a custom filter JAQL object.
129
+ *
130
+ * @param attribute - attribute
131
+ * @param customFilterJaql - Custom Filter Jaql
132
+ * @param guid - Optional GUID for the filter
133
+ * @returns Filter object
134
+ */
135
+ export const createFilterFromCustomFilterJaql = (attribute, customFilterJaql, guid) => {
136
+ return withComposeCode(filterFactory.customFilter)(attribute, customFilterJaql, guid);
137
+ };
115
138
  /**
116
139
  * Creates a filter from a filter JAQL object.
117
140
  *
@@ -144,6 +167,7 @@ export const createFilterFromJaqlInternal = (jaql, guid) => {
144
167
  case FILTER_TYPES.NUMERIC_RANGE:
145
168
  return createFilterFromNumericRangeJaql(attribute, filterJaqlWithType, guid);
146
169
  case FILTER_TYPES.ADVANCED:
170
+ return createFilterFromCustomFilterJaql(attribute, filterJaqlWithType, guid);
147
171
  case FILTER_TYPES.INVALID:
148
172
  return createGenericFilter(jaql, guid);
149
173
  }
@@ -29,6 +29,8 @@ const isInvalidFilter = (filter) => filter.filterType === FILTER_TYPES.INVALID;
29
29
  export const getFilterType = (filter, dataType = FilterModalType.DATE_TIME, timeData) => {
30
30
  if (timeData && isTimeLevelNotSupported(timeData))
31
31
  return FILTER_TYPES.ADVANCED;
32
+ if (isAdvancedFilter(filter))
33
+ return FILTER_TYPES.ADVANCED;
32
34
  if (isIncludeAllFilter(filter))
33
35
  return FILTER_TYPES.INCLUDE_ALL;
34
36
  if (isPeriodFilter(filter))
@@ -41,11 +43,9 @@ export const getFilterType = (filter, dataType = FilterModalType.DATE_TIME, time
41
43
  return FILTER_TYPES.NUMERIC_RANGE;
42
44
  if (isConditionFilter(filter))
43
45
  return FILTER_TYPES.CONDITION;
44
- if (isAdvancedFilter(filter))
45
- return FILTER_TYPES.ADVANCED;
46
46
  if (isInvalidFilter(filter))
47
47
  return FILTER_TYPES.INVALID;
48
- return FILTER_TYPES.ADVANCED;
48
+ return FILTER_TYPES.INVALID;
49
49
  };
50
50
  /**
51
51
  * Extracts Filter Type from Filter Jaql
@@ -70,6 +70,12 @@ export declare type FilterMultiSelectJaql = {
70
70
  multiSelection: boolean;
71
71
  members: string[];
72
72
  isCondition?: boolean;
73
+ filter?: {
74
+ turnedOff?: boolean;
75
+ exclude?: {
76
+ members?: string[];
77
+ };
78
+ };
73
79
  };
74
80
  export declare type FilterMultipleConditionJaql = {
75
81
  or: ConditionFilterJaql[];
@@ -249,6 +249,14 @@ export interface DateDimension extends Dimension {
249
249
  * Minutes (round to 15) level (for Live Models)
250
250
  */
251
251
  readonly MinutesRoundTo15: LevelAttribute;
252
+ /**
253
+ * Minutes level (for Live Models)
254
+ */
255
+ readonly Minutes: LevelAttribute;
256
+ /**
257
+ * Seconds level (for Live Models)
258
+ */
259
+ readonly Seconds: LevelAttribute;
252
260
  /**
253
261
  * Aggregated Hours level (for Live Models)
254
262
  */
@@ -346,6 +354,12 @@ export interface Filter extends Element {
346
354
  * @internal
347
355
  */
348
356
  disabled: boolean;
357
+ /**
358
+ * Boolean flag whether the filter is locked
359
+ *
360
+ * @internal
361
+ */
362
+ locked: boolean;
349
363
  /**
350
364
  * Gets JAQL representing this Filter instance
351
365
  *
@@ -144,6 +144,8 @@ export declare const DateLevels: {
144
144
  Hours: string;
145
145
  MinutesRoundTo30: string;
146
146
  MinutesRoundTo15: string;
147
+ Minutes: string;
148
+ Seconds: string;
147
149
  AggHours: string;
148
150
  AggMinutesRoundTo30: string;
149
151
  AggMinutesRoundTo15: string;
@@ -258,6 +258,8 @@ export const DateLevels = {
258
258
  Hours: 'Hours',
259
259
  MinutesRoundTo30: 'MinutesRoundTo30',
260
260
  MinutesRoundTo15: 'MinutesRoundTo15',
261
+ Minutes: 'Minutes',
262
+ Seconds: 'Seconds',
261
263
  AggHours: 'AggHours',
262
264
  AggMinutesRoundTo30: 'AggMinutesRoundTo30',
263
265
  AggMinutesRoundTo15: 'AggMinutesRoundTo15',
@@ -273,6 +275,8 @@ export const DateLevels = {
273
275
  DateLevels.Hours,
274
276
  DateLevels.MinutesRoundTo30,
275
277
  DateLevels.MinutesRoundTo15,
278
+ DateLevels.Minutes,
279
+ DateLevels.Seconds,
276
280
  DateLevels.AggHours,
277
281
  DateLevels.AggMinutesRoundTo30,
278
282
  DateLevels.AggMinutesRoundTo15,
@@ -288,7 +288,7 @@ export declare const EMPTY_PIVOT_QUERY_RESULT_DATA: PivotQueryResultData;
288
288
  * @param arg
289
289
  * @internal
290
290
  */
291
- export declare function isDataSource(arg: DataSource | Data | undefined): arg is DataSource;
291
+ export declare function isDataSource(arg: DataSource | Data | undefined): arg is DataSource | undefined;
292
292
  /**
293
293
  * Trend formula options.
294
294
  */
@@ -19,7 +19,7 @@ export const translation = {
19
19
  },
20
20
  filter: {
21
21
  unsupportedType: 'Unsupported filter type: {{filterType}}',
22
- unsupportedDatetimeLevel: 'Filters do not support the next "datetime" levels: Hours, MinutesRoundTo30, MinutesRoundTo15',
22
+ unsupportedDatetimeLevel: 'Filters do not support the next "datetime" levels: Hours, MinutesRoundTo30, MinutesRoundTo15, Minutes, Seconds',
23
23
  membersFilterNullMember: 'MembersFilter of {{attributeId}} - member cannot be null',
24
24
  },
25
25
  unsupportedDimensionalElement: 'Unsupported dimensional element type',
@@ -19,7 +19,7 @@ export const translation = {
19
19
  },
20
20
  filter: {
21
21
  unsupportedType: 'Непідтримуваний тип фільтра: {{filterType}}',
22
- unsupportedDatetimeLevel: 'Фільтри не підтримують наступні рівні "datetime": Hours, MinutesRoundTo30, MinutesRoundTo15',
22
+ unsupportedDatetimeLevel: 'Фільтри не підтримують наступні рівні "datetime": Hours, MinutesRoundTo30, MinutesRoundTo15, Minutes, Seconds',
23
23
  membersFilterNullMember: 'MembersFilter у {{attributeId}} - member не може бути нульовим',
24
24
  },
25
25
  unsupportedDimensionalElement: 'Непідтримуваний тип елемента',
package/dist/utils.js CHANGED
@@ -89,6 +89,10 @@ export function isDataSourceInfo(dataSource) {
89
89
  export const createFilterFromJaql = (jaql, instanceid) => {
90
90
  // translation logic is based on FilterJaqlInternal type (from internal modern-analytics-filters)
91
91
  // TODO reconcile FilterJaql and FilterJaqlInternal
92
- const jaqlInternal = jaql;
93
- return createFilterFromJaqlInternal(jaqlInternal, instanceid);
92
+ const hasBackgroundFilter = jaql.filter.filter && !('turnedOff' in jaql.filter.filter);
93
+ const filter = createFilterFromJaqlInternal(jaql, instanceid);
94
+ if (hasBackgroundFilter) {
95
+ filter.backgroundFilter = createFilterFromJaqlInternal(Object.assign(Object.assign({}, jaql), { filter: jaql.filter.filter }), `${instanceid}-bg`);
96
+ }
97
+ return filter;
94
98
  };
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "Sisense",
12
12
  "Compose SDK"
13
13
  ],
14
- "version": "1.12.0",
14
+ "version": "1.14.0",
15
15
  "type": "module",
16
16
  "main": "./dist/cjs/index.js",
17
17
  "module": "./dist/index.js",
@@ -32,8 +32,8 @@
32
32
  "author": "Sisense",
33
33
  "license": "SEE LICENSE IN LICENSE.md",
34
34
  "dependencies": {
35
- "@sisense/sdk-common": "^1.12.0",
36
- "@sisense/sdk-rest-client": "^1.12.0",
35
+ "@sisense/sdk-common": "^1.14.0",
36
+ "@sisense/sdk-rest-client": "^1.14.0",
37
37
  "guid-typescript": "^1.0.9",
38
38
  "lodash": "^4.17.21",
39
39
  "numeral": "^2.0.6",