@sisense/sdk-data 1.34.0 → 2.1.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 (68) hide show
  1. package/dist/cjs/dimensional-model/analytics/factory.d.ts +10 -10
  2. package/dist/cjs/dimensional-model/analytics/factory.js +15 -16
  3. package/dist/cjs/dimensional-model/attributes.d.ts +4 -4
  4. package/dist/cjs/dimensional-model/attributes.js +21 -7
  5. package/dist/cjs/dimensional-model/base.d.ts +3 -3
  6. package/dist/cjs/dimensional-model/base.js +7 -4
  7. package/dist/cjs/dimensional-model/compose-code-utils.d.ts +41 -0
  8. package/dist/cjs/dimensional-model/compose-code-utils.js +127 -0
  9. package/dist/cjs/dimensional-model/consts.d.ts +1 -0
  10. package/dist/cjs/dimensional-model/consts.js +4 -0
  11. package/dist/cjs/dimensional-model/dimensions/dimensions.d.ts +5 -5
  12. package/dist/cjs/dimensional-model/dimensions/dimensions.js +25 -16
  13. package/dist/cjs/dimensional-model/filters/factory.d.ts +41 -41
  14. package/dist/cjs/dimensional-model/filters/factory.js +53 -168
  15. package/dist/cjs/dimensional-model/filters/filter-relations.js +2 -5
  16. package/dist/cjs/dimensional-model/filters/filters.d.ts +39 -23
  17. package/dist/cjs/dimensional-model/filters/filters.js +102 -52
  18. package/dist/cjs/dimensional-model/filters/utils/attribute-measure-util.js +6 -14
  19. package/dist/cjs/dimensional-model/filters/utils/condition-filter-util.js +28 -26
  20. package/dist/cjs/dimensional-model/filters/utils/filter-from-jaql-util.js +9 -15
  21. package/dist/cjs/dimensional-model/filters/utils/types.d.ts +10 -0
  22. package/dist/cjs/dimensional-model/interfaces.d.ts +9 -7
  23. package/dist/cjs/dimensional-model/jaql-element.d.ts +13 -1
  24. package/dist/cjs/dimensional-model/jaql-element.js +53 -1
  25. package/dist/cjs/dimensional-model/measures/factory.d.ts +45 -52
  26. package/dist/cjs/dimensional-model/measures/factory.js +55 -184
  27. package/dist/cjs/dimensional-model/measures/measures.d.ts +9 -9
  28. package/dist/cjs/dimensional-model/measures/measures.js +31 -29
  29. package/dist/cjs/dimensional-model/types.d.ts +25 -2
  30. package/dist/cjs/utils.d.ts +26 -19
  31. package/dist/cjs/utils.js +85 -41
  32. package/dist/dimensional-model/analytics/factory.d.ts +10 -10
  33. package/dist/dimensional-model/analytics/factory.js +15 -14
  34. package/dist/dimensional-model/attributes.d.ts +4 -4
  35. package/dist/dimensional-model/attributes.js +21 -7
  36. package/dist/dimensional-model/base.d.ts +3 -3
  37. package/dist/dimensional-model/base.js +7 -4
  38. package/dist/dimensional-model/compose-code-utils.d.ts +41 -0
  39. package/dist/dimensional-model/compose-code-utils.js +119 -0
  40. package/dist/dimensional-model/consts.d.ts +1 -0
  41. package/dist/dimensional-model/consts.js +1 -0
  42. package/dist/dimensional-model/dimensions/dimensions.d.ts +5 -5
  43. package/dist/dimensional-model/dimensions/dimensions.js +26 -17
  44. package/dist/dimensional-model/filters/factory.d.ts +41 -41
  45. package/dist/dimensional-model/filters/factory.js +51 -125
  46. package/dist/dimensional-model/filters/filter-relations.js +3 -6
  47. package/dist/dimensional-model/filters/filters.d.ts +39 -23
  48. package/dist/dimensional-model/filters/filters.js +102 -52
  49. package/dist/dimensional-model/filters/utils/attribute-measure-util.js +6 -14
  50. package/dist/dimensional-model/filters/utils/condition-filter-util.js +28 -26
  51. package/dist/dimensional-model/filters/utils/filter-from-jaql-util.js +9 -15
  52. package/dist/dimensional-model/filters/utils/types.d.ts +10 -0
  53. package/dist/dimensional-model/interfaces.d.ts +9 -7
  54. package/dist/dimensional-model/jaql-element.d.ts +13 -1
  55. package/dist/dimensional-model/jaql-element.js +52 -1
  56. package/dist/dimensional-model/measures/factory.d.ts +45 -52
  57. package/dist/dimensional-model/measures/factory.js +54 -141
  58. package/dist/dimensional-model/measures/measures.d.ts +9 -9
  59. package/dist/dimensional-model/measures/measures.js +31 -29
  60. package/dist/dimensional-model/types.d.ts +25 -2
  61. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -1
  62. package/dist/utils.d.ts +26 -19
  63. package/dist/utils.js +63 -44
  64. package/package.json +3 -3
  65. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.d.ts +0 -17
  66. package/dist/cjs/dimensional-model/filters/utils/filter-code-util.js +0 -82
  67. package/dist/dimensional-model/filters/utils/filter-code-util.d.ts +0 -17
  68. package/dist/dimensional-model/filters/utils/filter-code-util.js +0 -77
@@ -1,3 +1,7 @@
1
+ /* eslint-disable max-lines */
2
+ /* eslint-disable max-params */
3
+ /* eslint-disable @typescript-eslint/no-shadow */
4
+ import { withComposeCodeForFilter, withComposeCodeForFilterRelations, } from '../compose-code-utils.js';
1
5
  import { CascadingFilter, CustomFilter, DateOperators, DateRangeFilter, ExcludeFilter, LogicalAttributeFilter, LogicalOperators, MeasureFilter, MembersFilter, NumericFilter, NumericOperators, RankingFilter, RankingOperators, RelativeDateFilter, TextFilter, TextOperators, } from './filters.js';
2
6
  // LOGICAL FILTERS
3
7
  /**
@@ -19,9 +23,7 @@ import { CascadingFilter, CustomFilter, DateOperators, DateRangeFilter, ExcludeF
19
23
  * @param config - Optional configuration for the filter
20
24
  * @returns A filter instance
21
25
  */
22
- export function union(filters, config) {
23
- return new LogicalAttributeFilter(filters, LogicalOperators.Union, config);
24
- }
26
+ export const union = withComposeCodeForFilter((filters, config) => new LogicalAttributeFilter(filters, LogicalOperators.Union, config), 'union');
25
27
  /**
26
28
  * Creates a filter representing the intersection of multiple filters on the same attribute. The resulting
27
29
  * intersection filter filters on items that match all of the given filters.
@@ -41,9 +43,7 @@ export function union(filters, config) {
41
43
  * @param config - Optional configuration for the filter
42
44
  * @returns A filter instance
43
45
  */
44
- export function intersection(filters, config) {
45
- return new LogicalAttributeFilter(filters, LogicalOperators.Intersection, config);
46
- }
46
+ export const intersection = withComposeCodeForFilter((filters, config) => new LogicalAttributeFilter(filters, LogicalOperators.Intersection, config), 'intersection');
47
47
  /**
48
48
  * Creates a filter that excludes items matching the given filter
49
49
  * from all items or from items matching the optional input filter.
@@ -70,9 +70,7 @@ export function intersection(filters, config) {
70
70
  * @returns A filter representing an exclusion of the given filter
71
71
  * from all attribute members or from the optional input filter
72
72
  */
73
- export function exclude(filter, input, config) {
74
- return new ExcludeFilter(filter, input, config);
75
- }
73
+ export const exclude = withComposeCodeForFilter((filter, input, config) => new ExcludeFilter(filter, input, config), 'exclude');
76
74
  // TEXT / NUMERIC FILTERS
77
75
  /**
78
76
  * Creates a filter to isolate attribute values that do not contain a specified string.
@@ -93,9 +91,7 @@ export function exclude(filter, input, config) {
93
91
  * @param config - Optional configuration for the filter
94
92
  * @returns A filter instance
95
93
  */
96
- export function doesntContain(attribute, value, config) {
97
- return new TextFilter(attribute, TextOperators.DoesntContain, value, config);
98
- }
94
+ export const doesntContain = withComposeCodeForFilter((attribute, value, config) => new TextFilter(attribute, TextOperators.DoesntContain, value, config), 'doesntContain');
99
95
  /**
100
96
  * Creates a filter to isolate attribute values that do not end with a specified string.
101
97
  *
@@ -115,9 +111,7 @@ export function doesntContain(attribute, value, config) {
115
111
  * @param config - Optional configuration for the filter
116
112
  * @returns A filter instance
117
113
  */
118
- export function doesntEndWith(attribute, value, config) {
119
- return new TextFilter(attribute, TextOperators.DoesntEndWith, value, config);
120
- }
114
+ export const doesntEndWith = withComposeCodeForFilter((attribute, value, config) => new TextFilter(attribute, TextOperators.DoesntEndWith, value, config), 'doesntEndWith');
121
115
  /**
122
116
  * Creates a filter to isolate attribute values that do not start with a specified string.
123
117
  *
@@ -137,9 +131,7 @@ export function doesntEndWith(attribute, value, config) {
137
131
  * @param config - Optional configuration for the filter
138
132
  * @returns A filter instance
139
133
  */
140
- export function doesntStartWith(attribute, value, config) {
141
- return new TextFilter(attribute, TextOperators.DoesntStartWith, value, config);
142
- }
134
+ export const doesntStartWith = withComposeCodeForFilter((attribute, value, config) => new TextFilter(attribute, TextOperators.DoesntStartWith, value, config), 'doesntStartWith');
143
135
  /**
144
136
  * Creates a filter to isolate attribute values that contain a specified string.
145
137
  *
@@ -159,9 +151,7 @@ export function doesntStartWith(attribute, value, config) {
159
151
  * @param config - Optional configuration for the filter
160
152
  * @returns A filter instance
161
153
  */
162
- export function contains(attribute, value, config) {
163
- return new TextFilter(attribute, TextOperators.Contains, value, config);
164
- }
154
+ export const contains = withComposeCodeForFilter((attribute, value, config) => new TextFilter(attribute, TextOperators.Contains, value, config), 'contains');
165
155
  /**
166
156
  * Creates a filter to isolate attribute values that end with a specified string.
167
157
  *
@@ -181,9 +171,7 @@ export function contains(attribute, value, config) {
181
171
  * @param config - Optional configuration for the filter
182
172
  * @returns A filter instance
183
173
  */
184
- export function endsWith(attribute, value, config) {
185
- return new TextFilter(attribute, TextOperators.EndsWith, value, config);
186
- }
174
+ export const endsWith = withComposeCodeForFilter((attribute, value, config) => new TextFilter(attribute, TextOperators.EndsWith, value, config), 'endsWith');
187
175
  /**
188
176
  * Creates a filter to isolate attribute values that start with a specified string.
189
177
  *
@@ -203,9 +191,7 @@ export function endsWith(attribute, value, config) {
203
191
  * @param config - Optional configuration for the filter
204
192
  * @returns A filter instance
205
193
  */
206
- export function startsWith(attribute, value, config) {
207
- return new TextFilter(attribute, TextOperators.StartsWith, value, config);
208
- }
194
+ export const startsWith = withComposeCodeForFilter((attribute, value, config) => new TextFilter(attribute, TextOperators.StartsWith, value, config), 'startsWith');
209
195
  /**
210
196
  * Creates a filter to isolate attribute values that match a specified string pattern.
211
197
  *
@@ -230,9 +216,7 @@ export function startsWith(attribute, value, config) {
230
216
  * @param config - Optional configuration for the filter
231
217
  * @returns A filter instance
232
218
  */
233
- export function like(attribute, value, config) {
234
- return new TextFilter(attribute, TextOperators.Like, value, config);
235
- }
219
+ export const like = withComposeCodeForFilter((attribute, value, config) => new TextFilter(attribute, TextOperators.Like, value, config), 'like');
236
220
  /**
237
221
  * Creates a filter to isolate attribute values that do not equal a specified string or number.
238
222
  *
@@ -252,14 +236,14 @@ export function like(attribute, value, config) {
252
236
  * @param config - Optional configuration for the filter
253
237
  * @returns A filter instance
254
238
  */
255
- export function doesntEqual(attribute, value, config) {
239
+ export const doesntEqual = withComposeCodeForFilter((attribute, value, config) => {
256
240
  if (typeof value === 'string') {
257
241
  return new TextFilter(attribute, TextOperators.DoesntEqual, value, config);
258
242
  }
259
243
  else {
260
244
  return numeric(attribute, NumericOperators.DoesntEqual, value, undefined, undefined, config);
261
245
  }
262
- }
246
+ }, 'doesntEqual');
263
247
  /**
264
248
  * Creates a filter to isolate attribute values that equal a specified string or number.
265
249
  *
@@ -279,14 +263,14 @@ export function doesntEqual(attribute, value, config) {
279
263
  * @param config - Optional configuration for the filter
280
264
  * @returns A filter instance
281
265
  */
282
- export function equals(attribute, value, config) {
266
+ export const equals = withComposeCodeForFilter((attribute, value, config) => {
283
267
  if (typeof value === 'string') {
284
268
  return new TextFilter(attribute, TextOperators.Equals, value, config);
285
269
  }
286
270
  else {
287
271
  return numeric(attribute, NumericOperators.Equals, value, undefined, undefined, config);
288
272
  }
289
- }
273
+ }, 'equals');
290
274
  /**
291
275
  * Creates a filter to isolate attribute values strictly greater than a specified number.
292
276
  *
@@ -300,9 +284,7 @@ export function equals(attribute, value, config) {
300
284
  * @param config - Optional configuration for the filter
301
285
  * @returns A filter instance
302
286
  */
303
- export function greaterThan(attribute, value, config) {
304
- return numeric(attribute, NumericOperators.FromNotEqual, value, undefined, undefined, config);
305
- }
287
+ export const greaterThan = withComposeCodeForFilter((attribute, value, config) => numeric(attribute, NumericOperators.FromNotEqual, value, undefined, undefined, config), 'greaterThan');
306
288
  /**
307
289
  * Creates a filter to isolate attribute values greater than or equal to a specified number.
308
290
  *
@@ -316,9 +298,7 @@ export function greaterThan(attribute, value, config) {
316
298
  * @param config - Optional configuration for the filter
317
299
  * @returns A filter instance
318
300
  */
319
- export function greaterThanOrEqual(attribute, value, config) {
320
- return numeric(attribute, NumericOperators.From, value, undefined, undefined, config);
321
- }
301
+ export const greaterThanOrEqual = withComposeCodeForFilter((attribute, value, config) => numeric(attribute, NumericOperators.From, value, undefined, undefined, config), 'greaterThanOrEqual');
322
302
  /**
323
303
  * Creates a filter to isolate attribute values strictly less than a specified number.
324
304
  *
@@ -332,9 +312,7 @@ export function greaterThanOrEqual(attribute, value, config) {
332
312
  * @param config - Optional configuration for the filter
333
313
  * @returns A filter instance
334
314
  */
335
- export function lessThan(attribute, value, config) {
336
- return numeric(attribute, NumericOperators.ToNotEqual, value, undefined, undefined, config);
337
- }
315
+ export const lessThan = withComposeCodeForFilter((attribute, value, config) => numeric(attribute, NumericOperators.ToNotEqual, value, undefined, undefined, config), 'lessThan');
338
316
  /**
339
317
  * Creates a filter to isolate attribute values less than or equal to a specified number.
340
318
  *
@@ -348,9 +326,7 @@ export function lessThan(attribute, value, config) {
348
326
  * @param config - Optional configuration for the filter
349
327
  * @returns A filter instance
350
328
  */
351
- export function lessThanOrEqual(attribute, value, config) {
352
- return numeric(attribute, NumericOperators.To, value, undefined, undefined, config);
353
- }
329
+ export const lessThanOrEqual = withComposeCodeForFilter((attribute, value, config) => numeric(attribute, NumericOperators.To, value, undefined, undefined, config), 'lessThanOrEqual');
354
330
  /**
355
331
  * Creates a filter to isolate attribute values within or exactly matching two specified numerical boundaries.
356
332
  *
@@ -365,9 +341,7 @@ export function lessThanOrEqual(attribute, value, config) {
365
341
  * @param config - Optional configuration for the filter
366
342
  * @returns A filter instance
367
343
  */
368
- export function between(attribute, valueA, valueB, config) {
369
- return numeric(attribute, NumericOperators.From, valueA, NumericOperators.To, valueB, config);
370
- }
344
+ export const between = withComposeCodeForFilter((attribute, valueA, valueB, config) => numeric(attribute, NumericOperators.From, valueA, NumericOperators.To, valueB, config), 'between');
371
345
  /**
372
346
  * Creates a filter that isolates attribute values strictly within two specified numerical boundaries.
373
347
  *
@@ -382,9 +356,7 @@ export function between(attribute, valueA, valueB, config) {
382
356
  * @param config - Optional configuration for the filter
383
357
  * @returns A filter instance
384
358
  */
385
- export function betweenNotEqual(attribute, valueA, valueB, config) {
386
- return numeric(attribute, NumericOperators.FromNotEqual, valueA, NumericOperators.ToNotEqual, valueB, config);
387
- }
359
+ export const betweenNotEqual = withComposeCodeForFilter((attribute, valueA, valueB, config) => numeric(attribute, NumericOperators.FromNotEqual, valueA, NumericOperators.ToNotEqual, valueB, config), 'betweenNotEqual');
388
360
  /**
389
361
  * Creates a custom numeric filter that filters for given attribute values.
390
362
  *
@@ -408,9 +380,7 @@ export function betweenNotEqual(attribute, valueA, valueB, config) {
408
380
  * @param config - Optional configuration for the filter
409
381
  * @returns A custom numeric filter of the given attribute
410
382
  */
411
- export function numeric(attribute, operatorA, valueA, operatorB, valueB, config) {
412
- return new NumericFilter(attribute, operatorA, valueA, operatorB, valueB, config);
413
- }
383
+ export const numeric = withComposeCodeForFilter((attribute, operatorA, valueA, operatorB, valueB, config) => new NumericFilter(attribute, operatorA, valueA, operatorB, valueB, config), 'numeric');
414
384
  /**
415
385
  * Creates a filter to isolate attribute values that match any of the specified strings.
416
386
  *
@@ -428,9 +398,7 @@ export function numeric(attribute, operatorA, valueA, operatorB, valueB, config)
428
398
  * @returns A filter instance
429
399
  * @shortDescription Creates filter on attribute to match certain string values
430
400
  */
431
- export function members(attribute, members, config) {
432
- return new MembersFilter(attribute, members, config);
433
- }
401
+ export const members = withComposeCodeForFilter((attribute, members, config) => new MembersFilter(attribute, members, config), 'members');
434
402
  // DATE FILTERS
435
403
  /**
436
404
  * Creates a filter to isolate date values starting from and including the given date and level.
@@ -445,9 +413,7 @@ export function members(attribute, members, config) {
445
413
  * @param config - Optional configuration for the filter
446
414
  * @returns A filter instance
447
415
  */
448
- export function dateFrom(level, from, config) {
449
- return dateRange(level, from, undefined, config);
450
- }
416
+ export const dateFrom = withComposeCodeForFilter((level, from, config) => dateRange(level, from, undefined, config), 'dateFrom');
451
417
  /**
452
418
  * Creates a filter to isolate items up until and including the given date and level.
453
419
  *
@@ -461,9 +427,7 @@ export function dateFrom(level, from, config) {
461
427
  * @param config - Optional configuration for the filter
462
428
  * @returns A filter instance
463
429
  */
464
- export function dateTo(level, to, config) {
465
- return dateRange(level, undefined, to, config);
466
- }
430
+ export const dateTo = withComposeCodeForFilter((level, to, config) => dateRange(level, undefined, to, config), 'dateTo');
467
431
  /**
468
432
  * Creates a filter to isolate items between and including the given dates and level.
469
433
  *
@@ -478,9 +442,7 @@ export function dateTo(level, to, config) {
478
442
  * @param config - Optional configuration for the filter
479
443
  * @returns A filter instance
480
444
  */
481
- export function dateRange(level, from, to, config) {
482
- return new DateRangeFilter(level, from, to, config);
483
- }
445
+ export const dateRange = withComposeCodeForFilter((level, from, to, config) => new DateRangeFilter(level, from, to, config), 'dateRange');
484
446
  /**
485
447
  * Creates a filter to isolate items with a date dimension value within a specified range after a
486
448
  * given date and level.
@@ -513,9 +475,7 @@ export function dateRange(level, from, to, config) {
513
475
  * @param config - Optional configuration for the filter
514
476
  * @returns A filter instance
515
477
  */
516
- export function dateRelative(level, offset, count, anchor, config) {
517
- return new RelativeDateFilter(level, offset, count, undefined, anchor, config);
518
- }
478
+ export const dateRelative = withComposeCodeForFilter((level, offset, count, anchor, config) => new RelativeDateFilter(level, offset, count, undefined, anchor, config), 'dateRelative');
519
479
  /**
520
480
  * Creates a filter to isolate items with a date dimension value within a specified range after a
521
481
  * given date and level.
@@ -532,9 +492,7 @@ export function dateRelative(level, offset, count, anchor, config) {
532
492
  * @param config - Optional configuration for the filter
533
493
  * @returns A filter instance
534
494
  */
535
- export function dateRelativeFrom(level, offset, count, anchor, config) {
536
- return new RelativeDateFilter(level, offset, count, DateOperators.Next, anchor, config);
537
- }
495
+ export const dateRelativeFrom = withComposeCodeForFilter((level, offset, count, anchor, config) => new RelativeDateFilter(level, offset, count, DateOperators.Next, anchor, config), 'dateRelativeFrom');
538
496
  /**
539
497
  * Creates a filter to isolate items with a date dimension value within a specified range before a
540
498
  * given date and level.
@@ -551,9 +509,7 @@ export function dateRelativeFrom(level, offset, count, anchor, config) {
551
509
  * @param config - Optional configuration for the filter
552
510
  * @returns A filter instance
553
511
  */
554
- export function dateRelativeTo(level, offset, count, anchor, config) {
555
- return new RelativeDateFilter(level, offset, count, DateOperators.Last, anchor, config);
556
- }
512
+ export const dateRelativeTo = withComposeCodeForFilter((level, offset, count, anchor, config) => new RelativeDateFilter(level, offset, count, DateOperators.Last, anchor, config), 'dateRelativeTo');
557
513
  /**
558
514
  * Creates a filter to isolate items with a date dimension value in the current calendar year.
559
515
  *
@@ -566,9 +522,7 @@ export function dateRelativeTo(level, offset, count, anchor, config) {
566
522
  * @param config - Optional configuration for the filter
567
523
  * @returns A filter instance
568
524
  */
569
- export function thisYear(dimension, config) {
570
- return dateRelativeTo(dimension.Years, 0, 1, undefined, config);
571
- }
525
+ export const thisYear = withComposeCodeForFilter((dimension, config) => dateRelativeTo(dimension.Years, 0, 1, undefined, config), 'thisYear');
572
526
  /**
573
527
  * Creates a filter to isolate items with a date dimension value in the current calendar month.
574
528
  *
@@ -581,9 +535,7 @@ export function thisYear(dimension, config) {
581
535
  * @param config - Optional configuration for the filter
582
536
  * @returns A filter instance
583
537
  */
584
- export function thisMonth(dimension, config) {
585
- return dateRelativeTo(dimension.Months, 0, 1, undefined, config);
586
- }
538
+ export const thisMonth = withComposeCodeForFilter((dimension, config) => dateRelativeTo(dimension.Months, 0, 1, undefined, config), 'thisMonth');
587
539
  /**
588
540
  * Creates a filter to isolate items with a date dimension value in the current quarter.
589
541
  *
@@ -596,9 +548,7 @@ export function thisMonth(dimension, config) {
596
548
  * @param config - Optional configuration for the filter
597
549
  * @returns A filter instance
598
550
  */
599
- export function thisQuarter(dimension, config) {
600
- return dateRelativeTo(dimension.Quarters, 0, 1, undefined, config);
601
- }
551
+ export const thisQuarter = withComposeCodeForFilter((dimension, config) => dateRelativeTo(dimension.Quarters, 0, 1, undefined, config), 'thisQuarter');
602
552
  /**
603
553
  * Creates a filter to isolate items with a date dimension value of the current date.
604
554
  *
@@ -611,9 +561,7 @@ export function thisQuarter(dimension, config) {
611
561
  * @param config - Optional configuration for the filter
612
562
  * @returns A filter instance
613
563
  */
614
- export function today(dimension, config) {
615
- return dateRelativeTo(dimension.Days, 0, 1, undefined, config);
616
- }
564
+ export const today = withComposeCodeForFilter((dimension, config) => dateRelativeTo(dimension.Days, 0, 1, undefined, config), 'today');
617
565
  // MEASURE-RELATED FILTERS
618
566
  /**
619
567
  * Creates a filter on all measure values matching the provided criteria.
@@ -647,9 +595,7 @@ export function measureBase(attribute, measure, operatorA, valueA, operatorB, va
647
595
  * @param config - Optional configuration for the filter
648
596
  * @returns A filter instance
649
597
  */
650
- export function measureEquals(measure, value, config) {
651
- return measureBase(measure.attribute, measure, NumericOperators.Equals, value, undefined, undefined, config);
652
- }
598
+ export const measureEquals = withComposeCodeForFilter((measure, value, config) => measureBase(measure.attribute, measure, NumericOperators.Equals, value, undefined, undefined, config), 'measureEquals');
653
599
  /**
654
600
  * Creates a filter to isolate a measure value greater than to a given number.
655
601
  *
@@ -667,9 +613,7 @@ export function measureEquals(measure, value, config) {
667
613
  * @param config - Optional configuration for the filter
668
614
  * @returns A filter instance
669
615
  */
670
- export function measureGreaterThan(measure, value, config) {
671
- return measureBase(measure.attribute, measure, NumericOperators.FromNotEqual, value, undefined, undefined, config);
672
- }
616
+ export const measureGreaterThan = withComposeCodeForFilter((measure, value, config) => measureBase(measure.attribute, measure, NumericOperators.FromNotEqual, value, undefined, undefined, config), 'measureGreaterThan');
673
617
  /**
674
618
  * Creates a filter to isolate a measure value greater than or equal to a given number.
675
619
  *
@@ -687,9 +631,7 @@ export function measureGreaterThan(measure, value, config) {
687
631
  * @param config - Optional configuration for the filter
688
632
  * @returns A filter instance
689
633
  */
690
- export function measureGreaterThanOrEqual(measure, value, config) {
691
- return measureBase(measure.attribute, measure, NumericOperators.From, value, undefined, undefined, config);
692
- }
634
+ export const measureGreaterThanOrEqual = withComposeCodeForFilter((measure, value, config) => measureBase(measure.attribute, measure, NumericOperators.From, value, undefined, undefined, config), 'measureGreaterThanOrEqual');
693
635
  /**
694
636
  * Creates a filter to isolate a measure value less than or equal to a given number.
695
637
  *
@@ -707,9 +649,7 @@ export function measureGreaterThanOrEqual(measure, value, config) {
707
649
  * @param config - Optional configuration for the filter
708
650
  * @returns A filter instance
709
651
  */
710
- export function measureLessThanOrEqual(measure, value, config) {
711
- return measureBase(measure.attribute, measure, NumericOperators.To, value, undefined, undefined, config);
712
- }
652
+ export const measureLessThanOrEqual = withComposeCodeForFilter((measure, value, config) => measureBase(measure.attribute, measure, NumericOperators.To, value, undefined, undefined, config), 'measureLessThanOrEqual');
713
653
  /**
714
654
  * Creates a filter to isolate a measure value less than a given number.
715
655
  *
@@ -726,9 +666,7 @@ export function measureLessThanOrEqual(measure, value, config) {
726
666
  * @param config - Optional configuration for the filter
727
667
  * @returns A filter instance
728
668
  */
729
- export function measureLessThan(measure, value, config) {
730
- return measureBase(measure.attribute, measure, NumericOperators.ToNotEqual, value, undefined, undefined, config);
731
- }
669
+ export const measureLessThan = withComposeCodeForFilter((measure, value, config) => measureBase(measure.attribute, measure, NumericOperators.ToNotEqual, value, undefined, undefined, config), 'measureLessThan');
732
670
  /**
733
671
  * Creates a filter to isolate a measure value between or equal to two given numbers.
734
672
  *
@@ -748,9 +686,7 @@ export function measureLessThan(measure, value, config) {
748
686
  * @param config - Optional configuration for the filter
749
687
  * @returns A filter instance
750
688
  */
751
- export function measureBetween(measure, valueA, valueB, config) {
752
- return measureBase(measure.attribute, measure, NumericOperators.From, valueA, NumericOperators.To, valueB, config);
753
- }
689
+ export const measureBetween = withComposeCodeForFilter((measure, valueA, valueB, config) => measureBase(measure.attribute, measure, NumericOperators.From, valueA, NumericOperators.To, valueB, config), 'measureBetween');
754
690
  /**
755
691
  * Creates a filter to isolate a measure value between but not equal to two given numbers.
756
692
  *
@@ -770,9 +706,7 @@ export function measureBetween(measure, valueA, valueB, config) {
770
706
  * @param config - Optional configuration for the filter
771
707
  * @returns A filter instance
772
708
  */
773
- export function measureBetweenNotEqual(measure, valueA, valueB, config) {
774
- return measureBase(measure.attribute, measure, NumericOperators.FromNotEqual, valueA, NumericOperators.ToNotEqual, valueB, config);
775
- }
709
+ export const measureBetweenNotEqual = withComposeCodeForFilter((measure, valueA, valueB, config) => measureBase(measure.attribute, measure, NumericOperators.FromNotEqual, valueA, NumericOperators.ToNotEqual, valueB, config), 'measureBetweenNotEqual');
776
710
  // RANKING FILTERS
777
711
  /**
778
712
  * Creates a filter to isolate items that rank towards the top for a given measure.
@@ -792,9 +726,7 @@ export function measureBetweenNotEqual(measure, valueA, valueB, config) {
792
726
  * @param config - Optional configuration for the filter
793
727
  * @returns A filter instance
794
728
  */
795
- export function topRanking(attribute, measure, count, config) {
796
- return new RankingFilter(attribute, measure, RankingOperators.Top, count, config);
797
- }
729
+ export const topRanking = withComposeCodeForFilter((attribute, measure, count, config) => new RankingFilter(attribute, measure, RankingOperators.Top, count, config), 'topRanking');
798
730
  /**
799
731
  * Creates a filter to isolate items that rank towards the bottom for a given measure.
800
732
  *
@@ -813,9 +745,7 @@ export function topRanking(attribute, measure, count, config) {
813
745
  * @param config - Optional configuration for the filter
814
746
  * @returns A filter instance
815
747
  */
816
- export function bottomRanking(attribute, measure, count, config) {
817
- return new RankingFilter(attribute, measure, RankingOperators.Bottom, count, config);
818
- }
748
+ export const bottomRanking = withComposeCodeForFilter((attribute, measure, count, config) => new RankingFilter(attribute, measure, RankingOperators.Bottom, count, config), 'bottomRanking');
819
749
  const relate = (node) => {
820
750
  if (Array.isArray(node)) {
821
751
  const [first, ...rest] = node;
@@ -852,9 +782,7 @@ const relate = (node) => {
852
782
  * @param config - Optional configuration for the filter
853
783
  * @returns A filter instance
854
784
  */
855
- export function cascading(filters, config) {
856
- return new CascadingFilter(filters, config);
857
- }
785
+ export const cascading = withComposeCodeForFilter((filters, config) => new CascadingFilter(filters, config), 'cascading');
858
786
  /**
859
787
  * Set of logic operators for filter relations construction
860
788
  *
@@ -904,11 +832,11 @@ export var logic;
904
832
  * @returns Filter relations
905
833
  * @beta
906
834
  */
907
- logic.and = (left, right) => ({
835
+ logic.and = withComposeCodeForFilterRelations((left, right) => ({
908
836
  operator: 'AND',
909
837
  left: relate(left),
910
838
  right: relate(right),
911
- });
839
+ }), 'and');
912
840
  /**
913
841
  * Creates an 'OR' filter relations
914
842
  *
@@ -926,11 +854,11 @@ export var logic;
926
854
  * @returns Filter relations
927
855
  * @beta
928
856
  */
929
- logic.or = (left, right) => ({
857
+ logic.or = withComposeCodeForFilterRelations((left, right) => ({
930
858
  operator: 'OR',
931
859
  left: relate(left),
932
860
  right: relate(right),
933
- });
861
+ }), 'or');
934
862
  })(logic = logic || (logic = {}));
935
863
  // CUSTOM FILTER
936
864
  /**
@@ -942,6 +870,4 @@ export var logic;
942
870
  * @returns A filter instance
943
871
  * @internal
944
872
  */
945
- export function customFilter(attribute, jaql, config) {
946
- return new CustomFilter(attribute, jaql, config);
947
- }
873
+ export const customFilter = withComposeCodeForFilter((attribute, jaql, config) => new CustomFilter(attribute, jaql, config), 'customFilter');
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/default-param-last */
2
2
  import cloneDeep from 'lodash-es/cloneDeep.js';
3
3
  import isArray from 'lodash-es/isArray.js';
4
- import { DimensionalLevelAttribute, isCascadingFilter, } from '../../index.js';
4
+ import { DimensionalLevelAttribute, filterFactory, isCascadingFilter, } from '../../index.js';
5
5
  import { TranslatableError } from '../../translation/translatable-error.js';
6
6
  /**
7
7
  * Type guard for checking if the provided filters are FilterRelations.
@@ -94,11 +94,8 @@ export function combineFiltersAndRelations(filters, relations) {
94
94
  return filters.find((filter) => filter.config.guid === node.instanceid);
95
95
  }
96
96
  if (isRelationsRule(node)) {
97
- return {
98
- left: traverse(node.left),
99
- right: traverse(node.right),
100
- operator: node.operator,
101
- };
97
+ const func = node.operator === 'AND' ? filterFactory.logic.and : filterFactory.logic.or;
98
+ return func(traverse(node.left), traverse(node.right));
102
99
  }
103
100
  throw new UnknownRelationsNodeError();
104
101
  }