@devrev/meerkat-browser 0.0.111 → 0.0.112

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-browser",
3
- "version": "0.0.111",
3
+ "version": "0.0.112",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0",
6
6
  "@devrev/meerkat-core": "*",
@@ -5,16 +5,39 @@ const tslib_1 = require("tslib");
5
5
  const meerkat_core_1 = require("@devrev/meerkat-core");
6
6
  const browser_cube_to_sql_1 = require("../browser-cube-to-sql/browser-cube-to-sql");
7
7
  const cubeQueryToSQLWithResolution = ({ connection, query, tableSchemas, resolutionConfig, columnProjections, contextParams, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
+ // Check if resolution should be skipped
9
+ if ((0, meerkat_core_1.shouldSkipResolution)(resolutionConfig, query, columnProjections)) {
10
+ return yield (0, browser_cube_to_sql_1.cubeQueryToSQL)({
11
+ connection,
12
+ query,
13
+ tableSchemas,
14
+ contextParams,
15
+ });
16
+ }
17
+ //
18
+ // Why remove aliases?
19
+ // The resolution pipeline (unnest → join lookups → re-aggregate) operates on field names
20
+ // internally for consistency and simplicity. Using aliases throughout would complicate
21
+ // the logic as we transform schemas through multiple steps.
22
+ //
23
+ // Alias handling strategy:
24
+ // 1. Strip aliases here - work with field names (e.g., tickets__id, tickets__owners)
25
+ // 2. Run entire resolution pipeline with field names
26
+ // 3. At the final step (applyAliases), restore aliases from original schemas
27
+ // 4. Generate final SQL with user-friendly aliases (e.g., "ID", "Owners")
28
+ //
29
+ // Benefits:
30
+ // - Cleaner internal logic (no alias tracking through transformations)
31
+ // - Single source of truth for aliases (original tableSchemas)
32
+ // - Easier to debug (field names are consistent throughout pipeline)
33
+ // - Separation of concerns (resolution logic vs. display formatting)
34
+ const tableSchemasWithoutAliases = tableSchemas.map((schema) => (Object.assign(Object.assign({}, schema), { dimensions: schema.dimensions.map((dim) => (Object.assign(Object.assign({}, dim), { alias: undefined }))), measures: schema.measures.map((measure) => (Object.assign(Object.assign({}, measure), { alias: undefined }))) })));
8
35
  const baseSql = yield (0, browser_cube_to_sql_1.cubeQueryToSQL)({
9
36
  connection,
10
37
  query,
11
- tableSchemas,
38
+ tableSchemas: tableSchemasWithoutAliases,
12
39
  contextParams,
13
40
  });
14
- // Check if resolution should be skipped
15
- if ((0, meerkat_core_1.shouldSkipResolution)(resolutionConfig, query, columnProjections)) {
16
- return baseSql;
17
- }
18
41
  if (!columnProjections) {
19
42
  columnProjections = [...(query.dimensions || []), ...query.measures];
20
43
  }
@@ -23,22 +46,26 @@ const cubeQueryToSQLWithResolution = ({ connection, query, tableSchemas, resolut
23
46
  resolutionConfig.columnConfigs = resolutionConfig.columnConfigs.filter((config) => {
24
47
  return columnProjections === null || columnProjections === void 0 ? void 0 : columnProjections.includes(config.name);
25
48
  });
26
- const baseSchema = (0, meerkat_core_1.createBaseTableSchema)(baseSql, tableSchemas, resolutionConfig, query.measures, query.dimensions);
49
+ const baseSchema = (0, meerkat_core_1.createBaseTableSchema)(baseSql, tableSchemasWithoutAliases, // Use alias-free schemas
50
+ resolutionConfig, [], columnProjections);
51
+ // At this point, filters/sorts are baked into baseSql using original values
52
+ // We can now override dimensions/measures in the base schema with custom SQL expressions for display
53
+ const schemaWithOverrides = (0, meerkat_core_1.applySqlOverrides)(baseSchema, resolutionConfig);
54
+ // Transform field names in configs to match base table schema format
55
+ resolutionConfig.columnConfigs.forEach((config) => {
56
+ config.name = (0, meerkat_core_1.memberKeyToSafeKey)(config.name);
57
+ });
27
58
  const rowIdDimension = {
28
59
  name: meerkat_core_1.ROW_ID_DIMENSION_NAME,
29
- sql: (0, meerkat_core_1.generateRowNumberSql)(query, baseSchema.dimensions, meerkat_core_1.BASE_DATA_SOURCE_NAME),
60
+ sql: (0, meerkat_core_1.generateRowNumberSql)(query, schemaWithOverrides.dimensions, meerkat_core_1.BASE_DATA_SOURCE_NAME),
30
61
  type: 'number',
31
62
  alias: meerkat_core_1.ROW_ID_DIMENSION_NAME,
32
63
  };
33
- baseSchema.dimensions.push(rowIdDimension);
64
+ schemaWithOverrides.dimensions.push(rowIdDimension);
34
65
  columnProjections.push(meerkat_core_1.ROW_ID_DIMENSION_NAME);
35
- // Doing this because we need to use the original name of the column in the base table schema.
36
- resolutionConfig.columnConfigs.forEach((config) => {
37
- config.name = (0, meerkat_core_1.memberKeyToSafeKey)(config.name);
38
- });
39
66
  // Generate SQL with row_id and unnested arrays
40
67
  const unnestTableSchema = yield (0, meerkat_core_1.getUnnestTableSchema)({
41
- baseTableSchema: baseSchema,
68
+ baseTableSchema: schemaWithOverrides,
42
69
  resolutionConfig,
43
70
  contextParams,
44
71
  cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
@@ -52,13 +79,22 @@ const cubeQueryToSQLWithResolution = ({ connection, query, tableSchemas, resolut
52
79
  cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
53
80
  });
54
81
  // Re-aggregate to reverse the unnest
55
- const aggregatedSql = yield (0, meerkat_core_1.getAggregatedSql)({
82
+ const aggregatedTableSchema = yield (0, meerkat_core_1.getAggregatedSql)({
56
83
  resolvedTableSchema,
57
84
  resolutionConfig,
58
85
  contextParams,
59
86
  cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
60
87
  });
61
- return aggregatedSql;
88
+ // Apply aliases and generate final SQL
89
+ const sqlWithAliases = yield (0, meerkat_core_1.applyAliases)({
90
+ aggregatedTableSchema,
91
+ originalTableSchemas: tableSchemas,
92
+ resolutionConfig,
93
+ contextParams,
94
+ cubeQueryToSQL: (params) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, browser_cube_to_sql_1.cubeQueryToSQL)(Object.assign({ connection }, params)); }),
95
+ });
96
+ // Wrap with row_id ordering and exclusion
97
+ return (0, meerkat_core_1.wrapWithRowIdOrderingAndExclusion)(sqlWithAliases, meerkat_core_1.ROW_ID_DIMENSION_NAME);
62
98
  });
63
99
  exports.cubeQueryToSQLWithResolution = cubeQueryToSQLWithResolution;
64
100
  //# sourceMappingURL=browser-cube-to-sql-with-resolution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-cube-to-sql-with-resolution.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution.ts"],"names":[],"mappings":";;;;AAAA,uDAe8B;AAE9B,oFAA4E;AAWrE,MAAM,4BAA4B,GAAG,CAAO,EACjD,UAAU,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACsB,EAAE,EAAE;IACvC,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAc,EAAC;QACnC,UAAU;QACV,KAAK;QACL,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;IAEH,wCAAwC;IACxC,IAAI,IAAA,mCAAoB,EAAC,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE;QACpE,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,CAAC,iBAAiB,EAAE;QACtB,iBAAiB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;KACtE;IACD,6DAA6D;IAC7D,wDAAwD;IACxD,gBAAgB,CAAC,aAAa,GAAG,gBAAgB,CAAC,aAAa,CAAC,MAAM,CACpE,CAAC,MAAM,EAAE,EAAE;QACT,OAAO,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,MAAM,UAAU,GAAgB,IAAA,oCAAqB,EACnD,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,CACjB,CAAC;IAEF,MAAM,cAAc,GAAc;QAChC,IAAI,EAAE,oCAAqB;QAC3B,GAAG,EAAE,IAAA,mCAAoB,EACvB,KAAK,EACL,UAAU,CAAC,UAAU,EACrB,oCAAqB,CACtB;QACD,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,oCAAqB;KAC7B,CAAC;IACF,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3C,iBAAiB,CAAC,IAAI,CAAC,oCAAqB,CAAC,CAAC;IAE9C,8FAA8F;IAC9F,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChD,MAAM,CAAC,IAAI,GAAG,IAAA,iCAAkB,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,MAAM,IAAA,mCAAwB,EAAC;QACvD,eAAe,EAAE,UAAU;QAC3B,gBAAgB;QAChB,aAAa;QACb,cAAc,EAAE,CAAO,MAAM,EAAE,EAAE,0DAAC,OAAA,IAAA,oCAAc,kBAAG,UAAU,IAAK,MAAM,EAAG,CAAA,GAAA;KAC5E,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,MAAM,IAAA,qCAA0B,EAAC;QAC3D,eAAe,EAAE,iBAAiB;QAClC,gBAAgB;QAChB,aAAa;QACb,iBAAiB;QACjB,cAAc,EAAE,CAAO,MAAM,EAAE,EAAE,0DAAC,OAAA,IAAA,oCAAc,kBAAG,UAAU,IAAK,MAAM,EAAG,CAAA,GAAA;KAC5E,CAAC,CAAC;IAEH,qCAAqC;IACrC,MAAM,aAAa,GAAG,MAAM,IAAA,+BAAoB,EAAC;QAC/C,mBAAmB;QACnB,gBAAgB;QAChB,aAAa;QACb,cAAc,EAAE,CAAO,MAAM,EAAE,EAAE,0DAAC,OAAA,IAAA,oCAAc,kBAAG,UAAU,IAAK,MAAM,EAAG,CAAA,GAAA;KAC5E,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC,CAAA,CAAC;AAnFW,QAAA,4BAA4B,gCAmFvC"}
1
+ {"version":3,"file":"browser-cube-to-sql-with-resolution.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution.ts"],"names":[],"mappings":";;;;AAAA,uDAkB8B;AAE9B,oFAA4E;AAWrE,MAAM,4BAA4B,GAAG,CAAO,EACjD,UAAU,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACsB,EAAE,EAAE;IACvC,wCAAwC;IACxC,IAAI,IAAA,mCAAoB,EAAC,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE;QACpE,OAAO,MAAM,IAAA,oCAAc,EAAC;YAC1B,UAAU;YACV,KAAK;YACL,YAAY;YACZ,aAAa;SACd,CAAC,CAAC;KACJ;IAED,EAAE;IACF,sBAAsB;IACtB,yFAAyF;IACzF,uFAAuF;IACvF,4DAA4D;IAC5D,EAAE;IACF,2BAA2B;IAC3B,qFAAqF;IACrF,qDAAqD;IACrD,6EAA6E;IAC7E,0EAA0E;IAC1E,EAAE;IACF,YAAY;IACZ,uEAAuE;IACvE,+DAA+D;IAC/D,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,0BAA0B,GAAkB,YAAY,CAAC,GAAG,CAChE,CAAC,MAAM,EAAE,EAAE,CAAC,iCACP,MAAM,KACT,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iCACtC,GAAG,KACN,KAAK,EAAE,SAAS,IAChB,CAAC,EACH,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iCACtC,OAAO,KACV,KAAK,EAAE,SAAS,IAChB,CAAC,IACH,CACH,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAc,EAAC;QACnC,UAAU;QACV,KAAK;QACL,YAAY,EAAE,0BAA0B;QACxC,aAAa;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,EAAE;QACtB,iBAAiB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;KACtE;IACD,6DAA6D;IAC7D,wDAAwD;IACxD,gBAAgB,CAAC,aAAa,GAAG,gBAAgB,CAAC,aAAa,CAAC,MAAM,CACpE,CAAC,MAAM,EAAE,EAAE;QACT,OAAO,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,MAAM,UAAU,GAAgB,IAAA,oCAAqB,EACnD,OAAO,EACP,0BAA0B,EAAE,yBAAyB;IACrD,gBAAgB,EAChB,EAAE,EACF,iBAAiB,CAClB,CAAC;IAEF,4EAA4E;IAC5E,qGAAqG;IACrG,MAAM,mBAAmB,GAAG,IAAA,gCAAiB,EAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAE5E,qEAAqE;IACrE,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChD,MAAM,CAAC,IAAI,GAAG,IAAA,iCAAkB,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAc;QAChC,IAAI,EAAE,oCAAqB;QAC3B,GAAG,EAAE,IAAA,mCAAoB,EACvB,KAAK,EACL,mBAAmB,CAAC,UAAU,EAC9B,oCAAqB,CACtB;QACD,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,oCAAqB;KAC7B,CAAC;IACF,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpD,iBAAiB,CAAC,IAAI,CAAC,oCAAqB,CAAC,CAAC;IAE9C,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,MAAM,IAAA,mCAAwB,EAAC;QACvD,eAAe,EAAE,mBAAmB;QACpC,gBAAgB;QAChB,aAAa;QACb,cAAc,EAAE,CAAO,MAAM,EAAE,EAAE,0DAAC,OAAA,IAAA,oCAAc,kBAAG,UAAU,IAAK,MAAM,EAAG,CAAA,GAAA;KAC5E,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,MAAM,IAAA,qCAA0B,EAAC;QAC3D,eAAe,EAAE,iBAAiB;QAClC,gBAAgB;QAChB,aAAa;QACb,iBAAiB;QACjB,cAAc,EAAE,CAAO,MAAM,EAAE,EAAE,0DAAC,OAAA,IAAA,oCAAc,kBAAG,UAAU,IAAK,MAAM,EAAG,CAAA,GAAA;KAC5E,CAAC,CAAC;IAEH,qCAAqC;IACrC,MAAM,qBAAqB,GAAG,MAAM,IAAA,+BAAoB,EAAC;QACvD,mBAAmB;QACnB,gBAAgB;QAChB,aAAa;QACb,cAAc,EAAE,CAAO,MAAM,EAAE,EAAE,0DAAC,OAAA,IAAA,oCAAc,kBAAG,UAAU,IAAK,MAAM,EAAG,CAAA,GAAA;KAC5E,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,cAAc,GAAG,MAAM,IAAA,2BAAY,EAAC;QACxC,qBAAqB;QACrB,oBAAoB,EAAE,YAAY;QAClC,gBAAgB;QAChB,aAAa;QACb,cAAc,EAAE,CAAO,MAAM,EAAE,EAAE,0DAAC,OAAA,IAAA,oCAAc,kBAAG,UAAU,IAAK,MAAM,EAAG,CAAA,GAAA;KAC5E,CAAC,CAAC;IAEH,0CAA0C;IAC1C,OAAO,IAAA,gDAAiC,EACtC,cAAc,EACd,oCAAqB,CACtB,CAAC;AACJ,CAAC,CAAA,CAAC;AAxIW,QAAA,4BAA4B,gCAwIvC"}