@devrev/meerkat-core 0.0.85 → 0.0.87

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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/ast-validator/index.d.ts +1 -0
  3. package/src/ast-validator/index.js +4 -0
  4. package/src/ast-validator/index.js.map +1 -1
  5. package/src/ast-validator/tests/test-data.d.ts +18 -0
  6. package/src/ast-validator/tests/test-data.js +67 -6
  7. package/src/ast-validator/tests/test-data.js.map +1 -1
  8. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +3 -2
  9. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -1
  10. package/src/cube-filter-transformer/constant.d.ts +1 -0
  11. package/src/cube-filter-transformer/constant.js +10 -0
  12. package/src/cube-filter-transformer/constant.js.map +1 -0
  13. package/src/cube-filter-transformer/contains/contains.js +2 -1
  14. package/src/cube-filter-transformer/contains/contains.js.map +1 -1
  15. package/src/cube-filter-transformer/in/in.d.ts +1 -1
  16. package/src/cube-filter-transformer/in/in.js +22 -21
  17. package/src/cube-filter-transformer/in/in.js.map +1 -1
  18. package/src/cube-filter-transformer/not-contains/not-contains.d.ts +1 -1
  19. package/src/cube-filter-transformer/not-contains/not-contains.js +2 -1
  20. package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -1
  21. package/src/cube-filter-transformer/not-in/not-in.d.ts +1 -1
  22. package/src/cube-filter-transformer/not-in/not-in.js +23 -22
  23. package/src/cube-filter-transformer/not-in/not-in.js.map +1 -1
  24. package/src/cube-filter-transformer/not-set/not-set.d.ts +1 -1
  25. package/src/cube-filter-transformer/not-set/not-set.js +6 -5
  26. package/src/cube-filter-transformer/not-set/not-set.js.map +1 -1
  27. package/src/cube-filter-transformer/set/set.d.ts +1 -1
  28. package/src/cube-filter-transformer/set/set.js +6 -5
  29. package/src/cube-filter-transformer/set/set.js.map +1 -1
  30. package/src/index.d.ts +1 -0
  31. package/src/index.js +1 -0
  32. package/src/index.js.map +1 -1
  33. package/src/utils/get-column-names-from-ast.d.ts +2 -0
  34. package/src/utils/get-column-names-from-ast.js +45 -0
  35. package/src/utils/get-column-names-from-ast.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-core",
3
- "version": "0.0.85",
3
+ "version": "0.0.87",
4
4
  "dependencies": {
5
5
  "@swc/helpers": "~0.5.0"
6
6
  },
@@ -1,3 +1,4 @@
1
1
  export { validateDimension } from './dimension-validator';
2
2
  export { validateMeasure } from './measure-validator';
3
3
  export * from './types';
4
+ export { getSelectNode } from './utils';
@@ -11,11 +11,15 @@ _export(exports, {
11
11
  },
12
12
  validateMeasure: function() {
13
13
  return _measurevalidator.validateMeasure;
14
+ },
15
+ getSelectNode: function() {
16
+ return _utils.getSelectNode;
14
17
  }
15
18
  });
16
19
  const _export_star = require("@swc/helpers/_/_export_star");
17
20
  const _dimensionvalidator = require("./dimension-validator");
18
21
  const _measurevalidator = require("./measure-validator");
19
22
  _export_star._(require("./types"), exports);
23
+ const _utils = require("./utils");
20
24
 
21
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../meerkat-core/src/ast-validator/index.ts"],"sourcesContent":["export { validateDimension } from './dimension-validator';\nexport { validateMeasure } from './measure-validator';\nexport * from './types';\n"],"names":["validateDimension","validateMeasure"],"mappings":";;;;;;;;IAASA,iBAAiB;eAAjBA,qCAAiB;;IACjBC,eAAe;eAAfA,iCAAe;;;;oCADU;kCACF;uBAClB"}
1
+ {"version":3,"sources":["../../../../meerkat-core/src/ast-validator/index.ts"],"sourcesContent":["export { validateDimension } from './dimension-validator';\nexport { validateMeasure } from './measure-validator';\nexport * from './types';\nexport { getSelectNode } from './utils';\n"],"names":["validateDimension","validateMeasure","getSelectNode"],"mappings":";;;;;;;;IAASA,iBAAiB;eAAjBA,qCAAiB;;IACjBC,eAAe;eAAfA,iCAAe;;IAEfC,aAAa;eAAbA,oBAAa;;;;oCAHY;kCACF;uBAClB;uBACgB"}
@@ -28,11 +28,13 @@ export declare const DIMENSION_TEST_CASES: ({
28
28
  else_expr?: undefined;
29
29
  };
30
30
  validFunctions: Set<string>;
31
+ columnNames: string[];
31
32
  expected: boolean;
32
33
  } | {
33
34
  description: string;
34
35
  node: import("../../types/duckdb-serialization-types").ColumnRefExpression;
35
36
  validFunctions: Set<string>;
37
+ columnNames: string[];
36
38
  expected: boolean;
37
39
  } | {
38
40
  description: string;
@@ -57,6 +59,7 @@ export declare const DIMENSION_TEST_CASES: ({
57
59
  case_checks?: undefined;
58
60
  else_expr?: undefined;
59
61
  };
62
+ columnNames: never[];
60
63
  validFunctions: Set<string>;
61
64
  expected: boolean;
62
65
  } | {
@@ -91,6 +94,7 @@ export declare const DIMENSION_TEST_CASES: ({
91
94
  else_expr?: undefined;
92
95
  };
93
96
  validFunctions: Set<string>;
97
+ columnNames: string[];
94
98
  expected: boolean;
95
99
  } | {
96
100
  description: string;
@@ -137,9 +141,11 @@ export declare const DIMENSION_TEST_CASES: ({
137
141
  else_expr?: undefined;
138
142
  };
139
143
  validFunctions: Set<string>;
144
+ columnNames: string[];
140
145
  expected: boolean;
141
146
  } | {
142
147
  description: string;
148
+ columnNames: string[];
143
149
  node: {
144
150
  class: ExpressionClass;
145
151
  type: ExpressionType;
@@ -189,6 +195,7 @@ export declare const DIMENSION_TEST_CASES: ({
189
195
  expected: boolean;
190
196
  } | {
191
197
  description: string;
198
+ columnNames: string[];
192
199
  node: {
193
200
  class: ExpressionClass;
194
201
  type: ExpressionType;
@@ -289,6 +296,7 @@ export declare const MEASURE_TEST_CASES: ({
289
296
  };
290
297
  validFunctions: Set<string>;
291
298
  validScalarFunctions: Set<string>;
299
+ columnNames: never[];
292
300
  expected: boolean;
293
301
  error?: undefined;
294
302
  } | {
@@ -335,6 +343,7 @@ export declare const MEASURE_TEST_CASES: ({
335
343
  };
336
344
  validFunctions: Set<string>;
337
345
  validScalarFunctions: Set<string>;
346
+ columnNames: string[];
338
347
  expected: boolean;
339
348
  error?: undefined;
340
349
  } | {
@@ -383,8 +392,10 @@ export declare const MEASURE_TEST_CASES: ({
383
392
  validScalarFunctions: Set<string>;
384
393
  error: string;
385
394
  expected: string;
395
+ columnNames: string[];
386
396
  } | {
387
397
  description: string;
398
+ columnNames: string[];
388
399
  query: string;
389
400
  node: {
390
401
  class: ExpressionClass;
@@ -473,6 +484,7 @@ export declare const MEASURE_TEST_CASES: ({
473
484
  } | {
474
485
  description: string;
475
486
  query: string;
487
+ columnNames: string[];
476
488
  node: {
477
489
  class: ExpressionClass;
478
490
  type: ExpressionType;
@@ -591,6 +603,7 @@ export declare const MEASURE_TEST_CASES: ({
591
603
  error?: undefined;
592
604
  } | {
593
605
  description: string;
606
+ columnNames: string[];
594
607
  node: {
595
608
  class: ExpressionClass;
596
609
  type: ExpressionType;
@@ -718,6 +731,7 @@ export declare const MEASURE_TEST_CASES: ({
718
731
  error?: undefined;
719
732
  } | {
720
733
  description: string;
734
+ columnNames: string[];
721
735
  node: {
722
736
  class: ExpressionClass;
723
737
  type: ExpressionType;
@@ -823,6 +837,7 @@ export declare const MEASURE_TEST_CASES: ({
823
837
  } | {
824
838
  description: string;
825
839
  query: string;
840
+ columnNames: string[];
826
841
  node: {
827
842
  class: ExpressionClass;
828
843
  type: ExpressionType;
@@ -1093,6 +1108,7 @@ export declare const MEASURE_TEST_CASES: ({
1093
1108
  } | {
1094
1109
  description: string;
1095
1110
  query: string;
1111
+ columnNames: string[];
1096
1112
  node: {
1097
1113
  class: ExpressionClass;
1098
1114
  type: ExpressionType;
@@ -1196,6 +1212,7 @@ export declare const MEASURE_TEST_CASES: ({
1196
1212
  } | {
1197
1213
  description: string;
1198
1214
  query: string;
1215
+ columnNames: string[];
1199
1216
  node: {
1200
1217
  class: ExpressionClass;
1201
1218
  type: ExpressionType;
@@ -1300,6 +1317,7 @@ export declare const MEASURE_TEST_CASES: ({
1300
1317
  error?: undefined;
1301
1318
  } | {
1302
1319
  description: string;
1320
+ columnNames: string[];
1303
1321
  query: string;
1304
1322
  node: {
1305
1323
  class: ExpressionClass;
@@ -61,12 +61,18 @@ const DIMENSION_TEST_CASES = [
61
61
  ]
62
62
  },
63
63
  validFunctions: EMPTY_VALID_FUNCTIONS,
64
+ columnNames: [
65
+ 'column_name'
66
+ ],
64
67
  expected: true
65
68
  },
66
69
  {
67
70
  description: 'node type COLUMN_REF with alias',
68
71
  node: COLUMN_REF_NODE,
69
72
  validFunctions: EMPTY_VALID_FUNCTIONS,
73
+ columnNames: [
74
+ 'column_name'
75
+ ],
70
76
  expected: true
71
77
  },
72
78
  {
@@ -78,6 +84,7 @@ const DIMENSION_TEST_CASES = [
78
84
  query_location: 0,
79
85
  value: '1'
80
86
  },
87
+ columnNames: [],
81
88
  validFunctions: EMPTY_VALID_FUNCTIONS,
82
89
  expected: true
83
90
  },
@@ -94,7 +101,7 @@ const DIMENSION_TEST_CASES = [
94
101
  alias: '',
95
102
  query_location: 12,
96
103
  column_names: [
97
- 'column_name'
104
+ 'column_name1'
98
105
  ]
99
106
  },
100
107
  cast_type: {
@@ -103,6 +110,9 @@ const DIMENSION_TEST_CASES = [
103
110
  try_cast: false
104
111
  },
105
112
  validFunctions: EMPTY_VALID_FUNCTIONS,
113
+ columnNames: [
114
+ 'column_name1'
115
+ ],
106
116
  expected: true
107
117
  },
108
118
  {
@@ -119,7 +129,7 @@ const DIMENSION_TEST_CASES = [
119
129
  alias: '',
120
130
  query_location: 16,
121
131
  column_names: [
122
- 'column_name'
132
+ 'column_name2'
123
133
  ]
124
134
  },
125
135
  {
@@ -139,10 +149,16 @@ const DIMENSION_TEST_CASES = [
139
149
  ]
140
150
  },
141
151
  validFunctions: EMPTY_VALID_FUNCTIONS,
152
+ columnNames: [
153
+ 'column_name2'
154
+ ],
142
155
  expected: true
143
156
  },
144
157
  {
145
158
  description: 'node type FUNCTION with ROUND function and if it contains in validFunctions',
159
+ columnNames: [
160
+ 'schema.column_name'
161
+ ],
146
162
  node: {
147
163
  class: _Expression.ExpressionClass.FUNCTION,
148
164
  type: _duckdbserializationtypes.ExpressionType.FUNCTION,
@@ -157,6 +173,7 @@ const DIMENSION_TEST_CASES = [
157
173
  alias: '',
158
174
  query_location: 13,
159
175
  column_names: [
176
+ 'schema',
160
177
  'column_name'
161
178
  ]
162
179
  },
@@ -189,6 +206,11 @@ const DIMENSION_TEST_CASES = [
189
206
  },
190
207
  {
191
208
  description: 'node type CASE',
209
+ columnNames: [
210
+ 'actual_close_date1',
211
+ 'actual_close_date',
212
+ 'created_date'
213
+ ],
192
214
  node: {
193
215
  class: _Expression.ExpressionClass.CASE,
194
216
  type: _duckdbserializationtypes.ExpressionType.CASE_EXPR,
@@ -226,7 +248,7 @@ const DIMENSION_TEST_CASES = [
226
248
  alias: '',
227
249
  query_location: 55,
228
250
  column_names: [
229
- 'actual_close_date'
251
+ 'actual_close_date1'
230
252
  ]
231
253
  }
232
254
  }
@@ -266,6 +288,7 @@ const MEASURE_TEST_CASES = [
266
288
  'count_star'
267
289
  ]),
268
290
  validScalarFunctions: EMPTY_VALID_FUNCTIONS,
291
+ columnNames: [],
269
292
  expected: true
270
293
  },
271
294
  {
@@ -301,6 +324,9 @@ const MEASURE_TEST_CASES = [
301
324
  'sum'
302
325
  ]),
303
326
  validScalarFunctions: EMPTY_VALID_FUNCTIONS,
327
+ columnNames: [
328
+ 'column1'
329
+ ],
304
330
  expected: true
305
331
  },
306
332
  {
@@ -339,10 +365,16 @@ const MEASURE_TEST_CASES = [
339
365
  '/'
340
366
  ]),
341
367
  error: 'Invalid function type: sum',
342
- expected: 'error'
368
+ expected: 'error',
369
+ columnNames: [
370
+ 'column1'
371
+ ]
343
372
  },
344
373
  {
345
374
  description: 'node type FUNCTION with MAX and operator',
375
+ columnNames: [
376
+ 'column1'
377
+ ],
346
378
  query: 'max(column1) / 1000',
347
379
  node: {
348
380
  class: _Expression.ExpressionClass.FUNCTION,
@@ -416,6 +448,10 @@ const MEASURE_TEST_CASES = [
416
448
  {
417
449
  description: 'node type CASE_EXPR',
418
450
  query: 'CASE WHEN COUNT(id) > 1 THEN AVG(mtbf_hours) ELSE null END',
451
+ columnNames: [
452
+ 'mtbf_hours',
453
+ 'id'
454
+ ],
419
455
  node: {
420
456
  class: _Expression.ExpressionClass.CASE,
421
457
  type: _duckdbserializationtypes.ExpressionType.CASE_EXPR,
@@ -524,6 +560,10 @@ const MEASURE_TEST_CASES = [
524
560
  },
525
561
  {
526
562
  description: 'node type FUNCTION with aggregation and case statement within',
563
+ columnNames: [
564
+ 'modified_date',
565
+ 'stage_json'
566
+ ],
527
567
  node: {
528
568
  class: _Expression.ExpressionClass.FUNCTION,
529
569
  type: _duckdbserializationtypes.ExpressionType.FUNCTION,
@@ -646,6 +686,10 @@ const MEASURE_TEST_CASES = [
646
686
  },
647
687
  {
648
688
  description: 'node type FUNCTION two children of aggregation and operator operation on them',
689
+ columnNames: [
690
+ 'mean_reciprocal_rank',
691
+ 'total_queries'
692
+ ],
649
693
  node: {
650
694
  class: _Expression.ExpressionClass.FUNCTION,
651
695
  type: _duckdbserializationtypes.ExpressionType.FUNCTION,
@@ -762,6 +806,11 @@ const MEASURE_TEST_CASES = [
762
806
  {
763
807
  description: 'node type CAST',
764
808
  query: "CAST(COUNT(DISTINCT(id)) AS FLOAT) / NULLIF(DATEDIFF('day', MIN(created_date), MAX(created_date)) / 7 + 1, 0)",
809
+ columnNames: [
810
+ 'id',
811
+ 'created_date',
812
+ 'created_date1'
813
+ ],
765
814
  node: {
766
815
  class: _Expression.ExpressionClass.FUNCTION,
767
816
  type: _duckdbserializationtypes.ExpressionType.FUNCTION,
@@ -897,7 +946,7 @@ const MEASURE_TEST_CASES = [
897
946
  alias: '',
898
947
  query_location: 90,
899
948
  column_names: [
900
- 'created_date'
949
+ 'created_date1'
901
950
  ]
902
951
  }
903
952
  ],
@@ -1023,6 +1072,9 @@ const MEASURE_TEST_CASES = [
1023
1072
  {
1024
1073
  description: 'node type COALESCE',
1025
1074
  query: 'COALESCE(SUM(amount) FILTER(direction = "Income"), 0)',
1075
+ columnNames: [
1076
+ 'amount'
1077
+ ],
1026
1078
  node: {
1027
1079
  class: _Expression.ExpressionClass.OPERATOR,
1028
1080
  type: _duckdbserializationtypes.ExpressionType.OPERATOR_COALESCE,
@@ -1107,6 +1159,9 @@ const MEASURE_TEST_CASES = [
1107
1159
  {
1108
1160
  description: 'node type WINDOW_AGGREGATE',
1109
1161
  query: 'AVG(COUNT(column1)) OVER (ORDER BY (MEERKAT).record_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)',
1162
+ columnNames: [
1163
+ 'column1'
1164
+ ],
1110
1165
  node: {
1111
1166
  class: _Expression.ExpressionClass.WINDOW,
1112
1167
  type: _duckdbserializationtypes.ExpressionType.WINDOW_AGGREGATE,
@@ -1130,7 +1185,7 @@ const MEASURE_TEST_CASES = [
1130
1185
  alias: '',
1131
1186
  query_location: 17,
1132
1187
  column_names: [
1133
- 'number_deployments'
1188
+ 'column1'
1134
1189
  ]
1135
1190
  }
1136
1191
  ],
@@ -1218,6 +1273,12 @@ const MEASURE_TEST_CASES = [
1218
1273
  },
1219
1274
  {
1220
1275
  description: 'node type SUBQUERY',
1276
+ columnNames: [
1277
+ 'id',
1278
+ 'sla_stage',
1279
+ 'first_resp_time_arr',
1280
+ 'total_first_resp_breaches_ever'
1281
+ ],
1221
1282
  query: "(SELECT CASE WHEN COUNT(DISTINCT CASE WHEN sla_stage = ''breached'' THEN id END) + COUNT(DISTINCT CASE WHEN sla_stage = ''completed'' AND ARRAY_LENGTH(first_resp_time_arr) > 0 AND (total_first_resp_breaches_ever = 0 OR total_first_resp_breaches_ever IS NULL) THEN id END) > 0 THEN 100 - (COUNT(DISTINCT CASE WHEN sla_stage = ''breached'' THEN id END) * 100.0 / (COUNT(DISTINCT CASE WHEN sla_stage = ''breached'' THEN id END) + COUNT(DISTINCT CASE WHEN sla_stage = ''completed'' AND ARRAY_LENGTH(first_resp_time_arr) > 0 AND (total_first_resp_breaches_ever = 0 OR total_first_resp_breaches_ever IS NULL) THEN id END))) ELSE NULL END AS result)",
1222
1283
  node: {
1223
1284
  class: _Expression.ExpressionClass.SUBQUERY,