@devrev/meerkat-core 0.0.104 → 0.0.106

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 (66) hide show
  1. package/package.json +1 -1
  2. package/src/constants/exports/index.d.ts +1 -0
  3. package/src/constants/exports/index.js +5 -0
  4. package/src/constants/exports/index.js.map +1 -0
  5. package/src/cube-filter-transformer/in/in.js +182 -11
  6. package/src/cube-filter-transformer/in/in.js.map +1 -1
  7. package/src/cube-filter-transformer/not-in/not-in.js +190 -12
  8. package/src/cube-filter-transformer/not-in/not-in.js.map +1 -1
  9. package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.d.ts +1 -1
  10. package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -1
  11. package/src/get-wrapped-base-query-with-projections/index.d.ts +3 -0
  12. package/src/get-wrapped-base-query-with-projections/index.js +9 -0
  13. package/src/get-wrapped-base-query-with-projections/index.js.map +1 -0
  14. package/src/get-wrapped-base-query-with-projections/modifiers/array-flatten-modifier.d.ts +4 -0
  15. package/src/get-wrapped-base-query-with-projections/modifiers/array-flatten-modifier.js +24 -0
  16. package/src/get-wrapped-base-query-with-projections/modifiers/array-flatten-modifier.js.map +1 -0
  17. package/src/get-wrapped-base-query-with-projections/modifiers/array-unnest-modifier.d.ts +4 -0
  18. package/src/get-wrapped-base-query-with-projections/modifiers/array-unnest-modifier.js +21 -0
  19. package/src/get-wrapped-base-query-with-projections/modifiers/array-unnest-modifier.js.map +1 -0
  20. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.d.ts +2 -15
  21. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +17 -21
  22. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +1 -1
  23. package/src/get-wrapped-base-query-with-projections/types.d.ts +12 -0
  24. package/src/get-wrapped-base-query-with-projections/types.js +3 -0
  25. package/src/get-wrapped-base-query-with-projections/types.js.map +1 -0
  26. package/src/index.d.ts +6 -1
  27. package/src/index.js +7 -3
  28. package/src/index.js.map +1 -1
  29. package/src/member-formatters/constants.d.ts +1 -0
  30. package/src/member-formatters/constants.js +4 -1
  31. package/src/member-formatters/constants.js.map +1 -1
  32. package/src/member-formatters/index.d.ts +1 -1
  33. package/src/member-formatters/index.js +2 -1
  34. package/src/member-formatters/index.js.map +1 -1
  35. package/src/resolution/generators/generate-resolution-join-paths.d.ts +4 -0
  36. package/src/resolution/generators/generate-resolution-join-paths.js +23 -0
  37. package/src/resolution/generators/generate-resolution-join-paths.js.map +1 -0
  38. package/src/resolution/generators/generate-resolution-schemas.d.ts +3 -0
  39. package/src/resolution/generators/generate-resolution-schemas.js +51 -0
  40. package/src/resolution/generators/generate-resolution-schemas.js.map +1 -0
  41. package/src/resolution/generators/generate-resolved-dimensions.d.ts +3 -0
  42. package/src/resolution/generators/generate-resolved-dimensions.js +25 -0
  43. package/src/resolution/generators/generate-resolved-dimensions.js.map +1 -0
  44. package/src/resolution/generators/generate-row-number-sql.d.ts +15 -0
  45. package/src/resolution/generators/generate-row-number-sql.js +35 -0
  46. package/src/resolution/generators/generate-row-number-sql.js.map +1 -0
  47. package/src/resolution/generators/index.d.ts +4 -0
  48. package/src/resolution/generators/index.js +8 -0
  49. package/src/resolution/generators/index.js.map +1 -0
  50. package/src/resolution/resolution.d.ts +50 -5
  51. package/src/resolution/resolution.js +73 -81
  52. package/src/resolution/resolution.js.map +1 -1
  53. package/src/resolution/steps/aggregation-step.d.ts +24 -0
  54. package/src/resolution/steps/aggregation-step.js +81 -0
  55. package/src/resolution/steps/aggregation-step.js.map +1 -0
  56. package/src/resolution/steps/resolution-step.d.ts +21 -0
  57. package/src/resolution/steps/resolution-step.js +85 -0
  58. package/src/resolution/steps/resolution-step.js.map +1 -0
  59. package/src/resolution/steps/unnest-step.d.ts +19 -0
  60. package/src/resolution/steps/unnest-step.js +28 -0
  61. package/src/resolution/steps/unnest-step.js.map +1 -0
  62. package/src/resolution/types.d.ts +2 -1
  63. package/src/resolution/types.js.map +1 -1
  64. package/src/types/cube-types/table.d.ts +1 -0
  65. package/src/utils/find-in-table-schema.js +8 -1
  66. package/src/utils/find-in-table-schema.js.map +1 -1
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrayUnnestModifier = exports.shouldUnnest = exports.arrayFieldUnNestModifier = void 0;
4
+ const is_array_member_type_1 = require("../../utils/is-array-member-type");
5
+ const arrayFieldUnNestModifier = ({ sqlExpression, }) => {
6
+ return `array[unnest(${sqlExpression})]`;
7
+ };
8
+ exports.arrayFieldUnNestModifier = arrayFieldUnNestModifier;
9
+ const shouldUnnest = ({ dimension, query, }) => {
10
+ var _a;
11
+ const isArrayType = (0, is_array_member_type_1.isArrayTypeMember)(dimension.type);
12
+ const hasUnNestedGroupBy = (_a = dimension.modifier) === null || _a === void 0 ? void 0 : _a.shouldUnnestGroupBy;
13
+ return !!(isArrayType && hasUnNestedGroupBy && query.measures.length > 0);
14
+ };
15
+ exports.shouldUnnest = shouldUnnest;
16
+ exports.arrayUnnestModifier = {
17
+ name: 'shouldUnnestGroupBy',
18
+ matcher: exports.shouldUnnest,
19
+ modifier: exports.arrayFieldUnNestModifier,
20
+ };
21
+ //# sourceMappingURL=array-unnest-modifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-unnest-modifier.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/get-wrapped-base-query-with-projections/modifiers/array-unnest-modifier.ts"],"names":[],"mappings":";;;AAAA,2EAAqE;AAG9D,MAAM,wBAAwB,GAAG,CAAC,EACvC,aAAa,GACK,EAAU,EAAE;IAC9B,OAAO,gBAAgB,aAAa,IAAI,CAAC;AAC3C,CAAC,CAAC;AAJW,QAAA,wBAAwB,4BAInC;AAEK,MAAM,YAAY,GAAG,CAAC,EAC3B,SAAS,EACT,KAAK,GACa,EAAW,EAAE;;IAC/B,MAAM,WAAW,GAAG,IAAA,wCAAiB,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,kBAAkB,GAAG,MAAA,SAAS,CAAC,QAAQ,0CAAE,mBAAmB,CAAC;IACnE,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,kBAAkB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC;AAPW,QAAA,YAAY,gBAOvB;AAEW,QAAA,mBAAmB,GAAa;IAC3C,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE,oBAAY;IACrB,QAAQ,EAAE,gCAAwB;CACnC,CAAC"}
@@ -1,18 +1,5 @@
1
- import { Dimension, Query } from "../types/cube-types";
2
- export interface DimensionModifier {
3
- sqlExpression: string;
4
- dimension: Dimension;
5
- key: string;
6
- query: Query;
7
- }
8
- export declare const arrayFieldUnNestModifier: ({ sqlExpression }: DimensionModifier) => string;
9
- export declare const shouldUnnest: ({ dimension, query }: DimensionModifier) => boolean;
10
- export type Modifier = {
11
- name: string;
12
- matcher: (modifier: DimensionModifier) => boolean;
13
- modifier: (modifier: DimensionModifier) => string;
14
- };
1
+ import { DimensionModifier, Modifier } from './types';
15
2
  export declare const MODIFIERS: Modifier[];
16
- export declare const getModifiedSqlExpression: ({ sqlExpression, dimension, key, modifiers, query }: DimensionModifier & {
3
+ export declare const getModifiedSqlExpression: ({ sqlExpression, dimension, key, modifiers, query, }: DimensionModifier & {
17
4
  modifiers: Modifier[];
18
5
  }) => string;
@@ -1,29 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getModifiedSqlExpression = exports.MODIFIERS = exports.shouldUnnest = exports.arrayFieldUnNestModifier = void 0;
4
- const is_array_member_type_1 = require("../utils/is-array-member-type");
5
- const arrayFieldUnNestModifier = ({ sqlExpression }) => {
6
- return `array[unnest(${sqlExpression})]`;
7
- };
8
- exports.arrayFieldUnNestModifier = arrayFieldUnNestModifier;
9
- const shouldUnnest = ({ dimension, query }) => {
10
- var _a;
11
- const isArrayType = (0, is_array_member_type_1.isArrayTypeMember)(dimension.type);
12
- const hasUnNestedGroupBy = (_a = dimension.modifier) === null || _a === void 0 ? void 0 : _a.shouldUnnestGroupBy;
13
- return !!(isArrayType && hasUnNestedGroupBy && query.measures.length > 0);
14
- };
15
- exports.shouldUnnest = shouldUnnest;
16
- exports.MODIFIERS = [{
17
- name: 'shouldUnnestGroupBy',
18
- matcher: exports.shouldUnnest,
19
- modifier: exports.arrayFieldUnNestModifier
20
- }];
21
- const getModifiedSqlExpression = ({ sqlExpression, dimension, key, modifiers, query }) => {
3
+ exports.getModifiedSqlExpression = exports.MODIFIERS = void 0;
4
+ const array_flatten_modifier_1 = require("./modifiers/array-flatten-modifier");
5
+ const array_unnest_modifier_1 = require("./modifiers/array-unnest-modifier");
6
+ exports.MODIFIERS = [array_unnest_modifier_1.arrayUnnestModifier, array_flatten_modifier_1.arrayFlattenModifierConfig];
7
+ const getModifiedSqlExpression = ({ sqlExpression, dimension, key, modifiers, query, }) => {
22
8
  let finalDimension = sqlExpression;
23
9
  modifiers.forEach(({ modifier, matcher }) => {
24
- const shouldModify = matcher({ sqlExpression: finalDimension, dimension, key, query });
10
+ const shouldModify = matcher({
11
+ sqlExpression: finalDimension,
12
+ dimension,
13
+ key,
14
+ query,
15
+ });
25
16
  if (shouldModify) {
26
- finalDimension = modifier({ sqlExpression: finalDimension, dimension, key, query });
17
+ finalDimension = modifier({
18
+ sqlExpression: finalDimension,
19
+ dimension,
20
+ key,
21
+ query,
22
+ });
27
23
  }
28
24
  });
29
25
  return finalDimension;
@@ -1 +1 @@
1
- {"version":3,"file":"sql-expression-modifiers.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.ts"],"names":[],"mappings":";;;AACA,wEAAkE;AAS3D,MAAM,wBAAwB,GAAG,CAAC,EAAE,aAAa,EAAqB,EAAU,EAAE;IACxF,OAAO,gBAAgB,aAAa,IAAI,CAAC;AAC1C,CAAC,CAAA;AAFY,QAAA,wBAAwB,4BAEpC;AAEM,MAAM,YAAY,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAqB,EAAW,EAAE;;IAC/E,MAAM,WAAW,GAAI,IAAA,wCAAiB,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,kBAAkB,GAAG,MAAA,SAAS,CAAC,QAAQ,0CAAE,mBAAmB,CAAC;IACnE,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,kBAAkB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAA;AAJY,QAAA,YAAY,gBAIxB;AASY,QAAA,SAAS,GAAe,CAAC;QACpC,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,oBAAY;QACrB,QAAQ,EAAE,gCAAwB;KACnC,CAAC,CAAA;AAGK,MAAM,wBAAwB,GAAG,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAEzF,EAAE,EAAE;IACH,IAAI,cAAc,GAAW,aAAa,CAAC;IAC3C,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACvF,IAAI,YAAY,EAAE;YAChB,cAAc,GAAG,QAAQ,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;SACrF;IACH,CAAC,CAAC,CAAA;IACF,OAAO,cAAc,CAAC;AACxB,CAAC,CAAA;AAXY,QAAA,wBAAwB,4BAWpC"}
1
+ {"version":3,"file":"sql-expression-modifiers.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.ts"],"names":[],"mappings":";;;AAAA,+EAAgF;AAChF,6EAAwE;AAG3D,QAAA,SAAS,GAAG,CAAC,2CAAmB,EAAE,mDAA0B,CAAC,CAAC;AAEpE,MAAM,wBAAwB,GAAG,CAAC,EACvC,aAAa,EACb,SAAS,EACT,GAAG,EACH,SAAS,EACT,KAAK,GAGN,EAAE,EAAE;IACH,IAAI,cAAc,GAAW,aAAa,CAAC;IAC3C,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,OAAO,CAAC;YAC3B,aAAa,EAAE,cAAc;YAC7B,SAAS;YACT,GAAG;YACH,KAAK;SACN,CAAC,CAAC;QACH,IAAI,YAAY,EAAE;YAChB,cAAc,GAAG,QAAQ,CAAC;gBACxB,aAAa,EAAE,cAAc;gBAC7B,SAAS;gBACT,GAAG;gBACH,KAAK;aACN,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AA3BW,QAAA,wBAAwB,4BA2BnC"}
@@ -0,0 +1,12 @@
1
+ import { Dimension, Query } from '../types/cube-types';
2
+ export interface DimensionModifier {
3
+ sqlExpression: string;
4
+ dimension: Dimension;
5
+ key: string;
6
+ query: Query;
7
+ }
8
+ export type Modifier = {
9
+ name: string;
10
+ matcher: (modifier: DimensionModifier) => boolean;
11
+ modifier: (modifier: DimensionModifier) => string;
12
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-wrapped-base-query-with-projections/types.ts"],"names":[],"mappings":""}
package/src/index.d.ts CHANGED
@@ -2,16 +2,21 @@ export * from './ast-builder/ast-builder';
2
2
  export * from './ast-deserializer/ast-deserializer';
3
3
  export * from './ast-serializer/ast-serializer';
4
4
  export * from './ast-validator';
5
+ export * from './constants/exports';
5
6
  export { detectApplyContextParamsToBaseSQL } from './context-params/context-params-ast';
6
7
  export * from './cube-measure-transformer/cube-measure-transformer';
7
8
  export * from './cube-to-duckdb/cube-filter-to-duckdb';
8
9
  export { applyFilterParamsToBaseSQL, detectAllFilterParamsFromSQL, getFilterParamsAST, } from './filter-params/filter-params-ast';
9
10
  export { getFilterParamsSQL } from './get-filter-params-sql/get-filter-params-sql';
10
11
  export { getFinalBaseSQL } from './get-final-base-sql/get-final-base-sql';
11
- export { getWrappedBaseQueryWithProjections } from './get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections';
12
+ export * from './get-wrapped-base-query-with-projections';
12
13
  export * from './joins/joins';
13
14
  export * from './member-formatters';
15
+ export * from './resolution/generators';
14
16
  export * from './resolution/resolution';
17
+ export * from './resolution/steps/aggregation-step';
18
+ export * from './resolution/steps/resolution-step';
19
+ export * from './resolution/steps/unnest-step';
15
20
  export * from './resolution/types';
16
21
  export { FilterType } from './types/cube-types';
17
22
  export * from './types/cube-types/index';
package/src/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.meerkatPlaceholderReplacer = exports.BASE_TABLE_NAME = exports.getWrappedBaseQueryWithProjections = exports.getFinalBaseSQL = exports.getFilterParamsSQL = exports.getFilterParamsAST = exports.detectAllFilterParamsFromSQL = exports.applyFilterParamsToBaseSQL = exports.detectApplyContextParamsToBaseSQL = void 0;
3
+ exports.meerkatPlaceholderReplacer = exports.BASE_TABLE_NAME = exports.getFinalBaseSQL = exports.getFilterParamsSQL = exports.getFilterParamsAST = exports.detectAllFilterParamsFromSQL = exports.applyFilterParamsToBaseSQL = exports.detectApplyContextParamsToBaseSQL = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("./ast-builder/ast-builder"), exports);
6
6
  tslib_1.__exportStar(require("./ast-deserializer/ast-deserializer"), exports);
7
7
  tslib_1.__exportStar(require("./ast-serializer/ast-serializer"), exports);
8
8
  tslib_1.__exportStar(require("./ast-validator"), exports);
9
+ tslib_1.__exportStar(require("./constants/exports"), exports);
9
10
  var context_params_ast_1 = require("./context-params/context-params-ast");
10
11
  Object.defineProperty(exports, "detectApplyContextParamsToBaseSQL", { enumerable: true, get: function () { return context_params_ast_1.detectApplyContextParamsToBaseSQL; } });
11
12
  tslib_1.__exportStar(require("./cube-measure-transformer/cube-measure-transformer"), exports);
@@ -18,11 +19,14 @@ var get_filter_params_sql_1 = require("./get-filter-params-sql/get-filter-params
18
19
  Object.defineProperty(exports, "getFilterParamsSQL", { enumerable: true, get: function () { return get_filter_params_sql_1.getFilterParamsSQL; } });
19
20
  var get_final_base_sql_1 = require("./get-final-base-sql/get-final-base-sql");
20
21
  Object.defineProperty(exports, "getFinalBaseSQL", { enumerable: true, get: function () { return get_final_base_sql_1.getFinalBaseSQL; } });
21
- var get_wrapped_base_query_with_projections_1 = require("./get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections");
22
- Object.defineProperty(exports, "getWrappedBaseQueryWithProjections", { enumerable: true, get: function () { return get_wrapped_base_query_with_projections_1.getWrappedBaseQueryWithProjections; } });
22
+ tslib_1.__exportStar(require("./get-wrapped-base-query-with-projections"), exports);
23
23
  tslib_1.__exportStar(require("./joins/joins"), exports);
24
24
  tslib_1.__exportStar(require("./member-formatters"), exports);
25
+ tslib_1.__exportStar(require("./resolution/generators"), exports);
25
26
  tslib_1.__exportStar(require("./resolution/resolution"), exports);
27
+ tslib_1.__exportStar(require("./resolution/steps/aggregation-step"), exports);
28
+ tslib_1.__exportStar(require("./resolution/steps/resolution-step"), exports);
29
+ tslib_1.__exportStar(require("./resolution/steps/unnest-step"), exports);
26
30
  tslib_1.__exportStar(require("./resolution/types"), exports);
27
31
  tslib_1.__exportStar(require("./types/cube-types/index"), exports);
28
32
  tslib_1.__exportStar(require("./types/duckdb-serialization-types/index"), exports);
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../meerkat-core/src/index.ts"],"names":[],"mappings":";;;;AAAA,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD;AAChD,0DAAgC;AAChC,0EAAwF;AAA/E,uIAAA,iCAAiC,OAAA;AAC1C,8FAAoE;AACpE,iFAAuD;AACvD,uEAI2C;AAHzC,+HAAA,0BAA0B,OAAA;AAC1B,iIAAA,4BAA4B,OAAA;AAC5B,uHAAA,kBAAkB,OAAA;AAEpB,uFAAmF;AAA1E,2HAAA,kBAAkB,OAAA;AAC3B,8EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,6IAAuI;AAA9H,6JAAA,kCAAkC,OAAA;AAC3C,wDAA8B;AAC9B,8DAAoC;AACpC,kEAAwC;AACxC,6DAAmC;AAEnC,mEAAyC;AACzC,mFAAyD;AACzD,wDAA8B;AAC9B,6CAAmD;AAA1C,2GAAA,eAAe,OAAA;AACxB,uEAA6C;AAC7C,4EAAkD;AAClD,qEAA2C;AAC3C,qFAAkF;AAAzE,0IAAA,0BAA0B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../meerkat-core/src/index.ts"],"names":[],"mappings":";;;;AAAA,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD;AAChD,0DAAgC;AAChC,8DAAoC;AACpC,0EAAwF;AAA/E,uIAAA,iCAAiC,OAAA;AAC1C,8FAAoE;AACpE,iFAAuD;AACvD,uEAI2C;AAHzC,+HAAA,0BAA0B,OAAA;AAC1B,iIAAA,4BAA4B,OAAA;AAC5B,uHAAA,kBAAkB,OAAA;AAEpB,uFAAmF;AAA1E,2HAAA,kBAAkB,OAAA;AAC3B,8EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,oFAA0D;AAC1D,wDAA8B;AAC9B,8DAAoC;AACpC,kEAAwC;AACxC,kEAAwC;AACxC,8EAAoD;AACpD,6EAAmD;AACnD,yEAA+C;AAC/C,6DAAmC;AAEnC,mEAAyC;AACzC,mFAAyD;AACzD,wDAA8B;AAC9B,6CAAmD;AAA1C,2GAAA,eAAe,OAAA;AACxB,uEAA6C;AAC7C,4EAAkD;AAClD,qEAA2C;AAC3C,qFAAkF;AAAzE,0IAAA,0BAA0B,OAAA"}
@@ -1,2 +1,3 @@
1
1
  export declare const COLUMN_NAME_DELIMITER = ".";
2
2
  export declare const MEERKAT_OUTPUT_DELIMITER = "__";
3
+ export declare const STRING_ARRAY_DELIMITER = "\u00A7\u2021\u00B6";
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MEERKAT_OUTPUT_DELIMITER = exports.COLUMN_NAME_DELIMITER = void 0;
3
+ exports.STRING_ARRAY_DELIMITER = exports.MEERKAT_OUTPUT_DELIMITER = exports.COLUMN_NAME_DELIMITER = void 0;
4
4
  exports.COLUMN_NAME_DELIMITER = '.';
5
5
  exports.MEERKAT_OUTPUT_DELIMITER = '__';
6
+ // Multi-character delimiter using three different uncommon characters
7
+ // to minimize the chance of collision with real data
8
+ exports.STRING_ARRAY_DELIMITER = '§‡¶';
6
9
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAC5B,QAAA,wBAAwB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAC5B,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAC7C,sEAAsE;AACtE,qDAAqD;AACxC,QAAA,sBAAsB,GAAG,KAAK,CAAC"}
@@ -1,4 +1,4 @@
1
- export { COLUMN_NAME_DELIMITER } from './constants';
1
+ export { COLUMN_NAME_DELIMITER, MEERKAT_OUTPUT_DELIMITER } from './constants';
2
2
  export { constructAlias, getAliasFromSchema } from './get-alias';
3
3
  export { getNamespacedKey } from './get-namespaced-key';
4
4
  export { memberKeyToSafeKey } from './member-key-to-safe-key';
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.splitIntoDataSourceAndFields = exports.memberKeyToSafeKey = exports.getNamespacedKey = exports.getAliasFromSchema = exports.constructAlias = exports.COLUMN_NAME_DELIMITER = void 0;
3
+ exports.splitIntoDataSourceAndFields = exports.memberKeyToSafeKey = exports.getNamespacedKey = exports.getAliasFromSchema = exports.constructAlias = exports.MEERKAT_OUTPUT_DELIMITER = exports.COLUMN_NAME_DELIMITER = void 0;
4
4
  var constants_1 = require("./constants");
5
5
  Object.defineProperty(exports, "COLUMN_NAME_DELIMITER", { enumerable: true, get: function () { return constants_1.COLUMN_NAME_DELIMITER; } });
6
+ Object.defineProperty(exports, "MEERKAT_OUTPUT_DELIMITER", { enumerable: true, get: function () { return constants_1.MEERKAT_OUTPUT_DELIMITER; } });
6
7
  var get_alias_1 = require("./get-alias");
7
8
  Object.defineProperty(exports, "constructAlias", { enumerable: true, get: function () { return get_alias_1.constructAlias; } });
8
9
  Object.defineProperty(exports, "getAliasFromSchema", { enumerable: true, get: function () { return get_alias_1.getAliasFromSchema; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/index.ts"],"names":[],"mappings":";;;AAAA,yCAAoD;AAA3C,kHAAA,qBAAqB,OAAA;AAC9B,yCAAiE;AAAxD,2GAAA,cAAc,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAC3C,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,yFAAmF;AAA1E,iJAAA,4BAA4B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../meerkat-core/src/member-formatters/index.ts"],"names":[],"mappings":";;;AAAA,yCAA8E;AAArE,kHAAA,qBAAqB,OAAA;AAAE,qHAAA,wBAAwB,OAAA;AACxD,yCAAiE;AAAxD,2GAAA,cAAc,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAC3C,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,yFAAmF;AAA1E,iJAAA,4BAA4B,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { JoinPath } from '../../types/cube-types/query';
2
+ import { TableSchema } from '../../types/cube-types/table';
3
+ import { ResolutionConfig } from '../types';
4
+ export declare const generateResolutionJoinPaths: (baseDataSourceName: string, resolutionConfig: ResolutionConfig, baseTableSchemas: TableSchema[]) => JoinPath[];
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateResolutionJoinPaths = void 0;
4
+ const member_formatters_1 = require("../../member-formatters");
5
+ const find_in_table_schema_1 = require("../../utils/find-in-table-schema");
6
+ const generateResolutionJoinPaths = (baseDataSourceName, resolutionConfig, baseTableSchemas) => {
7
+ return resolutionConfig.columnConfigs.map((config) => {
8
+ var _a;
9
+ return [
10
+ {
11
+ left: baseDataSourceName,
12
+ right: (0, member_formatters_1.memberKeyToSafeKey)(config.name),
13
+ on: (0, member_formatters_1.constructAlias)({
14
+ name: config.name,
15
+ alias: (_a = (0, find_in_table_schema_1.findInSchemas)(config.name, baseTableSchemas)) === null || _a === void 0 ? void 0 : _a.alias,
16
+ aliasContext: { isAstIdentifier: false },
17
+ }),
18
+ },
19
+ ];
20
+ });
21
+ };
22
+ exports.generateResolutionJoinPaths = generateResolutionJoinPaths;
23
+ //# sourceMappingURL=generate-resolution-join-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-resolution-join-paths.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-join-paths.ts"],"names":[],"mappings":";;;AAAA,+DAA6E;AAG7E,2EAAiE;AAG1D,MAAM,2BAA2B,GAAG,CACzC,kBAA0B,EAC1B,gBAAkC,EAClC,gBAA+B,EACnB,EAAE;IACd,OAAO,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;QAAC,OAAA;YACpD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,IAAA,sCAAkB,EAAC,MAAM,CAAC,IAAI,CAAC;gBACtC,EAAE,EAAE,IAAA,kCAAc,EAAC;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAA,IAAA,oCAAa,EAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,0CAAE,KAAK;oBAC1D,YAAY,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;iBACzC,CAAC;aACH;SACF,CAAA;KAAA,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,2BAA2B,+BAgBtC"}
@@ -0,0 +1,3 @@
1
+ import { TableSchema } from '../../types/cube-types/table';
2
+ import { ResolutionConfig } from '../types';
3
+ export declare const generateResolutionSchemas: (config: ResolutionConfig, baseTableSchemas: TableSchema[]) => TableSchema[];
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateResolutionSchemas = void 0;
4
+ const member_formatters_1 = require("../../member-formatters");
5
+ const find_in_table_schema_1 = require("../../utils/find-in-table-schema");
6
+ const generateResolutionSchemas = (config, baseTableSchemas) => {
7
+ const resolutionSchemas = [];
8
+ config.columnConfigs.forEach((colConfig) => {
9
+ var _a;
10
+ const tableSchema = config.tableSchemas.find((ts) => ts.name === colConfig.source);
11
+ if (!tableSchema) {
12
+ throw new Error(`Table schema not found for ${colConfig.source}`);
13
+ }
14
+ const baseName = (0, member_formatters_1.memberKeyToSafeKey)(colConfig.name);
15
+ const baseAlias = (0, member_formatters_1.constructAlias)({
16
+ name: colConfig.name,
17
+ alias: (_a = (0, find_in_table_schema_1.findInSchemas)(colConfig.name, baseTableSchemas)) === null || _a === void 0 ? void 0 : _a.alias,
18
+ aliasContext: { isTableSchemaAlias: true },
19
+ });
20
+ // For each column that needs to be resolved, create a copy of the relevant table schema.
21
+ // We use the name of the column in the base query as the table schema name
22
+ // to avoid conflicts.
23
+ const resolutionSchema = {
24
+ name: baseName,
25
+ sql: tableSchema.sql,
26
+ measures: [],
27
+ dimensions: colConfig.resolutionColumns.map((col) => {
28
+ const dimension = (0, find_in_table_schema_1.findInDimensionSchemas)((0, member_formatters_1.getNamespacedKey)(colConfig.source, col), config.tableSchemas);
29
+ if (!dimension) {
30
+ throw new Error(`Dimension not found: ${col}`);
31
+ }
32
+ return {
33
+ // Need to create a new name due to limitations with how
34
+ // CubeToSql handles duplicate dimension names between different sources.
35
+ name: (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(colConfig.name, col)),
36
+ sql: `${baseName}.${col}`,
37
+ type: dimension.type,
38
+ alias: `${baseAlias} - ${(0, member_formatters_1.constructAlias)({
39
+ name: col,
40
+ alias: dimension.alias,
41
+ aliasContext: { isTableSchemaAlias: true },
42
+ })}`,
43
+ };
44
+ }),
45
+ };
46
+ resolutionSchemas.push(resolutionSchema);
47
+ });
48
+ return resolutionSchemas;
49
+ };
50
+ exports.generateResolutionSchemas = generateResolutionSchemas;
51
+ //# sourceMappingURL=generate-resolution-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-resolution-schemas.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolution-schemas.ts"],"names":[],"mappings":";;;AAAA,+DAIiC;AAEjC,2EAG0C;AAGnC,MAAM,yBAAyB,GAAG,CACvC,MAAwB,EACxB,gBAA+B,EAC/B,EAAE;IACF,MAAM,iBAAiB,GAAkB,EAAE,CAAC;IAC5C,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CACrC,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;SACnE;QAED,MAAM,QAAQ,GAAG,IAAA,sCAAkB,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAA,kCAAc,EAAC;YAC/B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,MAAA,IAAA,oCAAa,EAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAC,0CAAE,KAAK;YAC7D,YAAY,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;SAC3C,CAAC,CAAC;QAEH,yFAAyF;QACzF,2EAA2E;QAC3E,sBAAsB;QACtB,MAAM,gBAAgB,GAAgB;YACpC,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,WAAW,CAAC,GAAG;YACpB,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClD,MAAM,SAAS,GAAG,IAAA,6CAAsB,EACtC,IAAA,oCAAgB,EAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EACvC,MAAM,CAAC,YAAY,CACpB,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;iBAChD;gBACD,OAAO;oBACL,wDAAwD;oBACxD,yEAAyE;oBACzE,IAAI,EAAE,IAAA,sCAAkB,EAAC,IAAA,oCAAgB,EAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC/D,GAAG,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE;oBACzB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,GAAG,SAAS,MAAM,IAAA,kCAAc,EAAC;wBACtC,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,YAAY,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;qBAC3C,CAAC,EAAE;iBACL,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;QAEF,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAtDW,QAAA,yBAAyB,6BAsDpC"}
@@ -0,0 +1,3 @@
1
+ import { Member, Query } from '../../types/cube-types/query';
2
+ import { ResolutionConfig } from '../types';
3
+ export declare const generateResolvedDimensions: (baseDataSourceName: string, query: Query, config: ResolutionConfig, columnProjections?: string[]) => Member[];
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateResolvedDimensions = void 0;
4
+ const member_formatters_1 = require("../../member-formatters");
5
+ const generateResolvedDimensions = (baseDataSourceName, query, config, columnProjections) => {
6
+ // If column projections are provided, use those.
7
+ // Otherwise, use all measures and dimensions from the original query.
8
+ const aggregatedDimensions = columnProjections
9
+ ? columnProjections
10
+ : [...query.measures, ...(query.dimensions || [])];
11
+ const resolvedDimensions = aggregatedDimensions.flatMap((dimension) => {
12
+ const columnConfig = config.columnConfigs.find((c) => c.name === dimension);
13
+ if (!columnConfig) {
14
+ return [
15
+ (0, member_formatters_1.getNamespacedKey)(baseDataSourceName, (0, member_formatters_1.memberKeyToSafeKey)(dimension)),
16
+ ];
17
+ }
18
+ else {
19
+ return columnConfig.resolutionColumns.map((col) => (0, member_formatters_1.getNamespacedKey)((0, member_formatters_1.memberKeyToSafeKey)(dimension), (0, member_formatters_1.memberKeyToSafeKey)((0, member_formatters_1.getNamespacedKey)(columnConfig.name, col))));
20
+ }
21
+ });
22
+ return resolvedDimensions;
23
+ };
24
+ exports.generateResolvedDimensions = generateResolvedDimensions;
25
+ //# sourceMappingURL=generate-resolved-dimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-resolved-dimensions.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-resolved-dimensions.ts"],"names":[],"mappings":";;;AAAA,+DAA+E;AAIxE,MAAM,0BAA0B,GAAG,CACxC,kBAA0B,EAC1B,KAAY,EACZ,MAAwB,EACxB,iBAA4B,EAClB,EAAE;IACZ,iDAAiD;IACjD,sEAAsE;IACtE,MAAM,oBAAoB,GAAG,iBAAiB;QAC5C,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAErD,MAAM,kBAAkB,GAAa,oBAAoB,CAAC,OAAO,CAC/D,CAAC,SAAS,EAAE,EAAE;QACZ,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;gBACL,IAAA,oCAAgB,EAAC,kBAAkB,EAAE,IAAA,sCAAkB,EAAC,SAAS,CAAC,CAAC;aACpE,CAAC;SACH;aAAM;YACL,OAAO,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAChD,IAAA,oCAAgB,EACd,IAAA,sCAAkB,EAAC,SAAS,CAAC,EAC7B,IAAA,sCAAkB,EAAC,IAAA,oCAAgB,EAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAC7D,CACF,CAAC;SACH;IACH,CAAC,CACF,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAjCW,QAAA,0BAA0B,8BAiCrC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Generates row_number() OVER (ORDER BY ...) SQL based on query order.
3
+ * This is used to preserve the original query ordering through resolution operations.
4
+ *
5
+ * @param query - The query object that may contain an order clause
6
+ * @param dimensions - The dimensions array from the base table schema
7
+ * @param baseTableName - The base table name to use in column references
8
+ * @returns SQL expression for row_number() OVER (ORDER BY ...)
9
+ */
10
+ export declare const generateRowNumberSql: (query: {
11
+ order?: Record<string, string>;
12
+ }, dimensions: {
13
+ name: string;
14
+ alias?: string;
15
+ }[], baseTableName: string) => string;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRowNumberSql = void 0;
4
+ const member_formatters_1 = require("../../member-formatters");
5
+ /**
6
+ * Generates row_number() OVER (ORDER BY ...) SQL based on query order.
7
+ * This is used to preserve the original query ordering through resolution operations.
8
+ *
9
+ * @param query - The query object that may contain an order clause
10
+ * @param dimensions - The dimensions array from the base table schema
11
+ * @param baseTableName - The base table name to use in column references
12
+ * @returns SQL expression for row_number() OVER (ORDER BY ...)
13
+ */
14
+ const generateRowNumberSql = (query, dimensions, baseTableName) => {
15
+ let rowNumberSql = 'row_number() OVER (';
16
+ if (query.order && Object.keys(query.order).length > 0) {
17
+ const orderClauses = Object.entries(query.order).map(([member, direction]) => {
18
+ // Find the actual column name/alias in the base table dimensions
19
+ const safeMember = (0, member_formatters_1.memberKeyToSafeKey)(member);
20
+ const dimension = dimensions.find((d) => d.name === safeMember || d.alias === safeMember);
21
+ const columnName = dimension
22
+ ? dimension.alias || dimension.name
23
+ : safeMember;
24
+ return generateOrderClause(baseTableName, columnName, direction);
25
+ });
26
+ rowNumberSql += `ORDER BY ${orderClauses.join(', ')}`;
27
+ }
28
+ rowNumberSql += ')';
29
+ return rowNumberSql;
30
+ };
31
+ exports.generateRowNumberSql = generateRowNumberSql;
32
+ const generateOrderClause = (baseTableName, columnName, direction) => {
33
+ return `${baseTableName}."${columnName}" ${direction.toUpperCase()}`;
34
+ };
35
+ //# sourceMappingURL=generate-row-number-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-row-number-sql.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/generate-row-number-sql.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAE7D;;;;;;;;GAQG;AACI,MAAM,oBAAoB,GAAG,CAClC,KAAyC,EACzC,UAA8C,EAC9C,aAAqB,EACb,EAAE;IACV,IAAI,YAAY,GAAG,qBAAqB,CAAC;IACzC,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACtD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE;YACtB,iEAAiE;YACjE,MAAM,UAAU,GAAG,IAAA,sCAAkB,EAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CACvD,CAAC;YACF,MAAM,UAAU,GAAG,SAAS;gBAC1B,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;gBACnC,CAAC,CAAC,UAAU,CAAC;YACf,OAAO,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACnE,CAAC,CACF,CAAC;QACF,YAAY,IAAI,YAAY,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;KACvD;IACD,YAAY,IAAI,GAAG,CAAC;IACpB,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAxBW,QAAA,oBAAoB,wBAwB/B;AAEF,MAAM,mBAAmB,GAAG,CAC1B,aAAqB,EACrB,UAAkB,EAClB,SAAiB,EACjB,EAAE;IACF,OAAO,GAAG,aAAa,KAAK,UAAU,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;AACvE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './generate-resolution-join-paths';
2
+ export * from './generate-resolution-schemas';
3
+ export * from './generate-resolved-dimensions';
4
+ export * from './generate-row-number-sql';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./generate-resolution-join-paths"), exports);
5
+ tslib_1.__exportStar(require("./generate-resolution-schemas"), exports);
6
+ tslib_1.__exportStar(require("./generate-resolved-dimensions"), exports);
7
+ tslib_1.__exportStar(require("./generate-row-number-sql"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/resolution/generators/index.ts"],"names":[],"mappings":";;;AAAA,2EAAiD;AACjD,wEAA8C;AAC9C,yEAA+C;AAC/C,oEAA0C"}
@@ -1,6 +1,26 @@
1
- import { JoinPath, Member, Query } from '../types/cube-types/query';
1
+ import { Member, Query } from '../types/cube-types/query';
2
2
  import { TableSchema } from '../types/cube-types/table';
3
- import { ResolutionConfig } from './types';
3
+ import { ResolutionColumnConfig, ResolutionConfig } from './types';
4
+ /**
5
+ * Constructs a SQL column reference from a table name and a dimension/measure.
6
+ *
7
+ * @param tableName - The name of the table
8
+ * @param member - The dimension or measure object with name and optional alias
9
+ * @returns Formatted SQL column reference like: tableName."columnName"
10
+ */
11
+ export declare const getColumnReference: (tableName: string, member: {
12
+ name: string;
13
+ alias?: string;
14
+ }) => string;
15
+ /**
16
+ * Checks if resolution should be skipped based on the resolution configuration and column projections.
17
+ * Resolution is skipped when there are no columns to resolve and no column projections.
18
+ *
19
+ * @param resolutionConfig - The resolution configuration
20
+ * @param columnProjections - Optional array of column projections
21
+ * @returns true if resolution should be skipped, false otherwise
22
+ */
23
+ export declare const shouldSkipResolution: (resolutionConfig: ResolutionConfig, query: Query, columnProjections?: string[]) => boolean;
4
24
  export declare const createBaseTableSchema: (baseSql: string, tableSchemas: TableSchema[], resolutionConfig: ResolutionConfig, measures: Member[], dimensions?: Member[]) => {
5
25
  name: string;
6
26
  sql: string;
@@ -15,6 +35,31 @@ export declare const createBaseTableSchema: (baseSql: string, tableSchemas: Tabl
15
35
  sql: string;
16
36
  }[];
17
37
  };
18
- export declare const generateResolutionSchemas: (config: ResolutionConfig, baseTableSchemas: TableSchema[]) => TableSchema[];
19
- export declare const generateResolvedDimensions: (query: Query, config: ResolutionConfig, columnProjections?: string[]) => Member[];
20
- export declare const generateResolutionJoinPaths: (resolutionConfig: ResolutionConfig, baseTableSchemas: TableSchema[]) => JoinPath[];
38
+ export declare const createWrapperTableSchema: (sql: string, baseTableSchema: TableSchema) => {
39
+ name: string;
40
+ sql: string;
41
+ dimensions: {
42
+ name: string;
43
+ sql: string;
44
+ type: import("../types/cube-types/table").DimensionType;
45
+ alias: string | undefined;
46
+ }[];
47
+ measures: {
48
+ name: string;
49
+ sql: string;
50
+ type: import("../types/cube-types/table").MeasureType;
51
+ alias: string | undefined;
52
+ }[];
53
+ joins: import("../types/cube-types/table").Join[] | undefined;
54
+ };
55
+ export declare const withArrayFlattenModifier: (baseTableSchema: TableSchema, resolutionConfig: ResolutionConfig) => TableSchema;
56
+ export declare const getArrayTypeResolutionColumnConfigs: (resolutionConfig: ResolutionConfig) => ResolutionColumnConfig[];
57
+ /**
58
+ * Wraps SQL to order by row_id and then exclude it from results.
59
+ * This maintains the ordering from the base query while removing the internal row_id column.
60
+ *
61
+ * @param sql - The SQL query that includes a __row_id column
62
+ * @param rowIdColumnName - The name of the row_id column (defaults to '__row_id')
63
+ * @returns SQL query ordered by row_id with the row_id column excluded
64
+ */
65
+ export declare const wrapWithRowIdOrderingAndExclusion: (sql: string, rowIdColumnName: string) => string;