@devrev/meerkat-browser 0.0.97 → 0.0.99

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,8 +1,8 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-browser",
3
- "version": "0.0.97",
3
+ "version": "0.0.99",
4
4
  "dependencies": {
5
- "@swc/helpers": "~0.5.0",
5
+ "tslib": "^2.3.0",
6
6
  "@devrev/meerkat-core": "*",
7
7
  "@duckdb/duckdb-wasm": "1.28.1-dev258.0"
8
8
  },
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateDimensionQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const meerkat_core_1 = require("@devrev/meerkat-core");
6
+ const query_to_ast_1 = require("./query-to-ast");
7
+ const utils_1 = require("./utils");
8
+ /**
9
+ * Validates the query can be used as a dimension by parsing it to an AST and checking its structure
10
+ * @param connection - DuckDB connection instance
11
+ * @param query - The query string to validate
12
+ * @returns Promise<boolean> - Whether the dimension is valid
13
+ */
14
+ const validateDimensionQuery = ({ connection, query, validFunctions, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
15
+ var _a;
16
+ const parsedSerialization = yield (0, query_to_ast_1.parseQueryToAST)(query, connection);
17
+ if ((0, utils_1.isParseError)(parsedSerialization)) {
18
+ throw new Error((_a = parsedSerialization.error_message) !== null && _a !== void 0 ? _a : 'Unknown error');
19
+ }
20
+ // Only fetch valid functions if not provided
21
+ const availableFunctions = validFunctions !== null && validFunctions !== void 0 ? validFunctions : (yield (0, utils_1.getAvailableFunctions)(connection, 'scalar'));
22
+ return (0, meerkat_core_1.validateDimension)(parsedSerialization, availableFunctions);
23
+ });
24
+ exports.validateDimensionQuery = validateDimensionQuery;
25
+ //# sourceMappingURL=dimension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/ast/dimension.ts"],"names":[],"mappings":";;;;AAAA,uDAAyD;AAEzD,iDAAiD;AACjD,mCAA8D;AAE9D;;;;;GAKG;AACI,MAAM,sBAAsB,GAAG,CAAO,EAC3C,UAAU,EACV,KAAK,EACL,cAAc,GAKf,EAAoB,EAAE;;IACrB,MAAM,mBAAmB,GAAG,MAAM,IAAA,8BAAe,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAErE,IAAI,IAAA,oBAAY,EAAC,mBAAmB,CAAC,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,MAAA,mBAAmB,CAAC,aAAa,mCAAI,eAAe,CAAC,CAAC;KACvE;IAED,6CAA6C;IAC7C,MAAM,kBAAkB,GACtB,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,MAAM,IAAA,6BAAqB,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExE,OAAO,IAAA,gCAAiB,EAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;AACpE,CAAC,CAAA,CAAC;AApBW,QAAA,sBAAsB,0BAoBjC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./dimension"), exports);
5
+ tslib_1.__exportStar(require("./measure"), exports);
6
+ tslib_1.__exportStar(require("./query-to-ast"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/ast/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,oDAA0B;AAC1B,yDAA+B"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateMeasureQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const meerkat_core_1 = require("@devrev/meerkat-core");
6
+ const query_to_ast_1 = require("./query-to-ast");
7
+ const utils_1 = require("./utils");
8
+ /**
9
+ * Validates the query can be used as a measure by parsing it to an AST and checking its structure
10
+ * @param connection - DuckDB connection instance
11
+ * @param query - The query string to validate
12
+ * @returns Promise<boolean> - Whether the measure is valid
13
+ */
14
+ const validateMeasureQuery = ({ connection, query, validFunctions, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
15
+ var _a;
16
+ const parsedSerialization = yield (0, query_to_ast_1.parseQueryToAST)(query, connection);
17
+ if ((0, utils_1.isParseError)(parsedSerialization)) {
18
+ throw new Error((_a = parsedSerialization.error_message) !== null && _a !== void 0 ? _a : 'Unknown error');
19
+ }
20
+ // Only fetch valid functions if not provided
21
+ const availableFunctions = validFunctions !== null && validFunctions !== void 0 ? validFunctions : (yield (0, utils_1.getAvailableFunctions)(connection, 'aggregate'));
22
+ const validScalarFunctions = yield (0, utils_1.getAvailableFunctions)(connection, 'scalar');
23
+ return (0, meerkat_core_1.validateMeasure)(parsedSerialization, availableFunctions, validScalarFunctions);
24
+ });
25
+ exports.validateMeasureQuery = validateMeasureQuery;
26
+ //# sourceMappingURL=measure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/ast/measure.ts"],"names":[],"mappings":";;;;AAAA,uDAAuD;AAEvD,iDAAiD;AACjD,mCAA8D;AAE9D;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,CAAO,EACzC,UAAU,EACV,KAAK,EACL,cAAc,GAKf,EAAoB,EAAE;;IACrB,MAAM,mBAAmB,GAAG,MAAM,IAAA,8BAAe,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAErE,IAAI,IAAA,oBAAY,EAAC,mBAAmB,CAAC,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,MAAA,mBAAmB,CAAC,aAAa,mCAAI,eAAe,CAAC,CAAC;KACvE;IAED,6CAA6C;IAC7C,MAAM,kBAAkB,GACtB,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,MAAM,IAAA,6BAAqB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAE3E,MAAM,oBAAoB,GAAG,MAAM,IAAA,6BAAqB,EACtD,UAAU,EACV,QAAQ,CACT,CAAC;IAEF,OAAO,IAAA,8BAAe,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,CACrB,CAAC;AACJ,CAAC,CAAA,CAAC;AA7BW,QAAA,oBAAoB,wBA6B/B"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseQueryToAST = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const meerkat_core_1 = require("@devrev/meerkat-core");
6
+ /**
7
+ * Converts a query to an AST
8
+ * @param query - The query string to convert
9
+ * @param connection - The DuckDB connection instance
10
+ * @returns The AST as a JSON object
11
+ */
12
+ const parseQueryToAST = (query, connection) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
13
+ const serializedQuery = (0, meerkat_core_1.astSerializerQuery)(query);
14
+ const arrowResult = yield connection.query(serializedQuery);
15
+ const parsedOutputQuery = arrowResult.toArray().map((row) => row.toJSON());
16
+ const deserializedQuery = (0, meerkat_core_1.deserializeQuery)(parsedOutputQuery);
17
+ return JSON.parse(deserializedQuery);
18
+ });
19
+ exports.parseQueryToAST = parseQueryToAST;
20
+ //# sourceMappingURL=query-to-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-to-ast.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/ast/query-to-ast.ts"],"names":[],"mappings":";;;;AAAA,uDAI8B;AAG9B;;;;;GAKG;AACI,MAAM,eAAe,GAAG,CAC7B,KAAa,EACb,UAAiC,EACH,EAAE;IAChC,MAAM,eAAe,GAAG,IAAA,iCAAkB,EAAC,KAAK,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE5D,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,MAAM,iBAAiB,GAAG,IAAA,+BAAgB,EAAC,iBAAiB,CAAC,CAAC;IAE9D,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC,CAAA,CAAC;AAXW,QAAA,eAAe,mBAW1B"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAvailableFunctions = exports.isParseError = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const isParseError = (data) => {
6
+ return !!data.error;
7
+ };
8
+ exports.isParseError = isParseError;
9
+ // Helper function to get available functions from DuckDB based on function type
10
+ const getAvailableFunctions = (connection, function_type) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
11
+ const result = yield connection.query(`SELECT distinct function_name FROM duckdb_functions() WHERE function_type = '${function_type}'`);
12
+ return result.toArray().map((row) => row.toJSON().function_name);
13
+ });
14
+ exports.getAvailableFunctions = getAvailableFunctions;
15
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/ast/utils.ts"],"names":[],"mappings":";;;;AAGO,MAAM,YAAY,GAAG,CAAC,IAAyB,EAAW,EAAE;IACjE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF,gFAAgF;AACzE,MAAM,qBAAqB,GAAG,CACnC,UAAiC,EACjC,aAAqC,EAClB,EAAE;IACrB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CACnC,gFAAgF,aAAa,GAAG,CACjG,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC;AACnE,CAAC,CAAA,CAAC;AATW,QAAA,qBAAqB,yBAShC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cubeQueryToSQL = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const meerkat_core_1 = require("@devrev/meerkat-core");
6
+ const getQueryOutput = (query, connection) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
7
+ const queryOutput = yield connection.query(query);
8
+ const parsedOutputQuery = queryOutput.toArray().map((row) => row.toJSON());
9
+ return parsedOutputQuery;
10
+ });
11
+ const cubeQueryToSQL = ({ connection, query, tableSchemas, contextParams, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
12
+ const updatedTableSchemas = yield Promise.all(tableSchemas.map((schema) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
13
+ const baseFilterParamsSQL = yield (0, meerkat_core_1.getFinalBaseSQL)({
14
+ query,
15
+ tableSchema: schema,
16
+ getQueryOutput: (query) => getQueryOutput(query, connection),
17
+ });
18
+ return Object.assign(Object.assign({}, schema), { sql: baseFilterParamsSQL });
19
+ })));
20
+ const updatedTableSchema = yield (0, meerkat_core_1.getCombinedTableSchema)(updatedTableSchemas, query);
21
+ const ast = (0, meerkat_core_1.cubeToDuckdbAST)(query, updatedTableSchema);
22
+ if (!ast) {
23
+ throw new Error('Could not generate AST');
24
+ }
25
+ const queryTemp = (0, meerkat_core_1.astDeserializerQuery)(ast);
26
+ const arrowResult = yield connection.query(queryTemp);
27
+ const parsedOutputQuery = arrowResult.toArray().map((row) => row.toJSON());
28
+ const preBaseQuery = (0, meerkat_core_1.deserializeQuery)(parsedOutputQuery);
29
+ const filterParamsSQL = yield (0, meerkat_core_1.getFilterParamsSQL)({
30
+ getQueryOutput: (query) => getQueryOutput(query, connection),
31
+ query,
32
+ tableSchema: updatedTableSchema,
33
+ filterType: 'BASE_FILTER',
34
+ });
35
+ const filterParamQuery = (0, meerkat_core_1.applyFilterParamsToBaseSQL)(updatedTableSchema.sql, filterParamsSQL);
36
+ /**
37
+ * Replace CONTEXT_PARAMS with context params
38
+ */
39
+ const baseQuery = (0, meerkat_core_1.detectApplyContextParamsToBaseSQL)(filterParamQuery, contextParams || {});
40
+ /**
41
+ * Replace BASE_TABLE_NAME with cube query
42
+ */
43
+ const replaceBaseTableName = preBaseQuery.replace(meerkat_core_1.BASE_TABLE_NAME, `(${baseQuery}) AS ${updatedTableSchema.name}`);
44
+ /**
45
+ * Add measures to the query
46
+ */
47
+ const measures = query.measures;
48
+ const dimensions = query.dimensions || [];
49
+ const finalQuery = (0, meerkat_core_1.applyProjectionToSQLQuery)(dimensions, measures, updatedTableSchema, replaceBaseTableName);
50
+ return finalQuery;
51
+ });
52
+ exports.cubeQueryToSQL = cubeQueryToSQL;
53
+ //# sourceMappingURL=browser-cube-to-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-cube-to-sql.js","sourceRoot":"","sources":["../../../../meerkat-browser/src/browser-cube-to-sql/browser-cube-to-sql.ts"],"names":[],"mappings":";;;;AAAA,uDAc8B;AAG9B,MAAM,cAAc,GAAG,CACrB,KAAa,EACb,UAAiC,EACjC,EAAE;IACF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3E,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAA,CAAC;AASK,MAAM,cAAc,GAAG,CAAO,EACnC,UAAU,EACV,KAAK,EACL,YAAY,EACZ,aAAa,GACQ,EAAE,EAAE;IACzB,MAAM,mBAAmB,GAAkB,MAAM,OAAO,CAAC,GAAG,CAC1D,YAAY,CAAC,GAAG,CAAC,CAAO,MAAmB,EAAE,EAAE;QAC7C,MAAM,mBAAmB,GAAG,MAAM,IAAA,8BAAe,EAAC;YAChD,KAAK;YACL,WAAW,EAAE,MAAM;YACnB,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC;SAC7D,CAAC,CAAC;QACH,uCACK,MAAM,KACT,GAAG,EAAE,mBAAmB,IACxB;IACJ,CAAC,CAAA,CAAC,CACH,CAAC;IAEF,MAAM,kBAAkB,GAAG,MAAM,IAAA,qCAAsB,EACrD,mBAAmB,EACnB,KAAK,CACN,CAAC;IAEF,MAAM,GAAG,GAAG,IAAA,8BAAe,EAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;IAED,MAAM,SAAS,GAAG,IAAA,mCAAoB,EAAC,GAAG,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3E,MAAM,YAAY,GAAG,IAAA,+BAAgB,EAAC,iBAAiB,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,MAAM,IAAA,iCAAkB,EAAC;QAC/C,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC;QAC5D,KAAK;QACL,WAAW,EAAE,kBAAkB;QAC/B,UAAU,EAAE,aAAa;KAC1B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAA,yCAA0B,EACjD,kBAAkB,CAAC,GAAG,EACtB,eAAe,CAChB,CAAC;IAEF;;OAEG;IACH,MAAM,SAAS,GAAG,IAAA,gDAAiC,EACjD,gBAAgB,EAChB,aAAa,IAAI,EAAE,CACpB,CAAC;IAEF;;OAEG;IACH,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,CAC/C,8BAAe,EACf,IAAI,SAAS,QAAQ,kBAAkB,CAAC,IAAI,EAAE,CAC/C,CAAC;IAEF;;OAEG;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAC1C,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,CACrB,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAA,CAAC;AA7EW,QAAA,cAAc,kBA6EzB"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cubeQueryToSQLWithResolution = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const meerkat_core_1 = require("@devrev/meerkat-core");
6
+ const browser_cube_to_sql_1 = require("../browser-cube-to-sql/browser-cube-to-sql");
7
+ const cubeQueryToSQLWithResolution = ({ connection, query, tableSchemas, resolutionConfig, contextParams, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
+ const baseSql = yield (0, browser_cube_to_sql_1.cubeQueryToSQL)({
9
+ connection,
10
+ query,
11
+ tableSchemas,
12
+ contextParams,
13
+ });
14
+ if (resolutionConfig.columnConfigs.length === 0) {
15
+ // If no resolution is needed, return the base SQL.
16
+ return baseSql;
17
+ }
18
+ // Create a table schema for the base query.
19
+ const baseTable = (0, meerkat_core_1.createBaseTableSchema)(baseSql, tableSchemas, resolutionConfig, query.measures, query.dimensions);
20
+ const resolutionSchemas = (0, meerkat_core_1.generateResolutionSchemas)(resolutionConfig, tableSchemas);
21
+ const resolveParams = {
22
+ connection: connection,
23
+ query: {
24
+ measures: [],
25
+ dimensions: (0, meerkat_core_1.generateResolvedDimensions)(query, resolutionConfig),
26
+ joinPaths: (0, meerkat_core_1.generateResolutionJoinPaths)(resolutionConfig, tableSchemas),
27
+ },
28
+ tableSchemas: [baseTable, ...resolutionSchemas],
29
+ };
30
+ const sql = yield (0, browser_cube_to_sql_1.cubeQueryToSQL)(resolveParams);
31
+ return sql;
32
+ });
33
+ exports.cubeQueryToSQLWithResolution = cubeQueryToSQLWithResolution;
34
+ //# sourceMappingURL=browser-cube-to-sql-with-resolution.js.map
@@ -0,0 +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,uDAS8B;AAE9B,oFAGoD;AAU7C,MAAM,4BAA4B,GAAG,CAAO,EACjD,UAAU,EACV,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,GACsB,EAAE,EAAE;IACvC,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAc,EAAC;QACnC,UAAU;QACV,KAAK;QACL,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;IAEH,IAAI,gBAAgB,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/C,mDAAmD;QACnD,OAAO,OAAO,CAAC;KAChB;IAED,4CAA4C;IAC5C,MAAM,SAAS,GAAgB,IAAA,oCAAqB,EAClD,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,UAAU,CACjB,CAAC;IAEF,MAAM,iBAAiB,GAAkB,IAAA,wCAAyB,EAChE,gBAAgB,EAChB,YAAY,CACb,CAAC;IAEF,MAAM,aAAa,GAAyB;QAC1C,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE;YACL,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,IAAA,yCAA0B,EAAC,KAAK,EAAE,gBAAgB,CAAC;YAC/D,SAAS,EAAE,IAAA,0CAA2B,EAAC,gBAAgB,EAAE,YAAY,CAAC;SACvE;QACD,YAAY,EAAE,CAAC,SAAS,EAAE,GAAG,iBAAiB,CAAC;KAChD,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,IAAA,oCAAc,EAAC,aAAa,CAAC,CAAC;IAEhD,OAAO,GAAG,CAAC;AACb,CAAC,CAAA,CAAC;AA7CW,QAAA,4BAA4B,gCA6CvC"}
package/src/index.d.ts CHANGED
@@ -1,5 +1,3 @@
1
+ export { parseQueryToAST, validateDimensionQuery, validateMeasureQuery, } from './ast';
1
2
  export * from './browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution';
2
3
  export * from './browser-cube-to-sql/browser-cube-to-sql';
3
- export { convertCubeStringToTableSchema };
4
- import { convertCubeStringToTableSchema } from '@devrev/meerkat-core';
5
- export { parseQueryToAST, validateDimensionQuery, validateMeasureQuery } from './ast';
package/src/index.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateMeasureQuery = exports.validateDimensionQuery = exports.parseQueryToAST = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var ast_1 = require("./ast");
6
+ Object.defineProperty(exports, "parseQueryToAST", { enumerable: true, get: function () { return ast_1.parseQueryToAST; } });
7
+ Object.defineProperty(exports, "validateDimensionQuery", { enumerable: true, get: function () { return ast_1.validateDimensionQuery; } });
8
+ Object.defineProperty(exports, "validateMeasureQuery", { enumerable: true, get: function () { return ast_1.validateMeasureQuery; } });
9
+ tslib_1.__exportStar(require("./browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution"), exports);
10
+ tslib_1.__exportStar(require("./browser-cube-to-sql/browser-cube-to-sql"), exports);
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../meerkat-browser/src/index.ts"],"names":[],"mappings":";;;;AAAA,6BAIe;AAHb,sGAAA,eAAe,OAAA;AACf,6GAAA,sBAAsB,OAAA;AACtB,2GAAA,oBAAoB,OAAA;AAEtB,oHAA0F;AAC1F,oFAA0D"}
package/ast/dimension.js DELETED
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "validateDimensionQuery", {
3
- enumerable: true,
4
- get: function() {
5
- return validateDimensionQuery;
6
- }
7
- });
8
- const _meerkatcore = require("@devrev/meerkat-core");
9
- const _querytoast = require("./query-to-ast");
10
- const _utils = require("./utils");
11
- const validateDimensionQuery = async ({ connection, query, validFunctions })=>{
12
- const parsedSerialization = await (0, _querytoast.parseQueryToAST)(query, connection);
13
- if ((0, _utils.isParseError)(parsedSerialization)) {
14
- var _parsedSerialization_error_message;
15
- throw new Error((_parsedSerialization_error_message = parsedSerialization.error_message) != null ? _parsedSerialization_error_message : 'Unknown error');
16
- }
17
- // Only fetch valid functions if not provided
18
- const availableFunctions = validFunctions != null ? validFunctions : await (0, _utils.getAvailableFunctions)(connection, 'scalar');
19
- return (0, _meerkatcore.validateDimension)(parsedSerialization, availableFunctions);
20
- };
21
-
22
- //# sourceMappingURL=dimension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/ast/dimension.ts"],"sourcesContent":["import { validateDimension } from '@devrev/meerkat-core';\nimport { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';\nimport { parseQueryToAST } from './query-to-ast';\nimport { getAvailableFunctions, isParseError } from './utils';\n\n/**\n * Validates the query can be used as a dimension by parsing it to an AST and checking its structure\n * @param connection - DuckDB connection instance\n * @param query - The query string to validate\n * @returns Promise<boolean> - Whether the dimension is valid\n */\nexport const validateDimensionQuery = async ({\n connection,\n query,\n validFunctions,\n}: {\n connection: AsyncDuckDBConnection;\n query: string;\n validFunctions?: string[];\n}): Promise<boolean> => {\n const parsedSerialization = await parseQueryToAST(query, connection);\n\n if (isParseError(parsedSerialization)) {\n throw new Error(parsedSerialization.error_message ?? 'Unknown error');\n }\n\n // Only fetch valid functions if not provided\n const availableFunctions =\n validFunctions ?? (await getAvailableFunctions(connection, 'scalar'));\n\n return validateDimension(parsedSerialization, availableFunctions);\n};\n"],"names":["validateDimensionQuery","connection","query","validFunctions","parsedSerialization","parseQueryToAST","isParseError","Error","error_message","availableFunctions","getAvailableFunctions","validateDimension"],"mappings":";+BAWaA;;;eAAAA;;;6BAXqB;4BAEF;uBACoB;AAQ7C,MAAMA,yBAAyB,OAAO,EAC3CC,UAAU,EACVC,KAAK,EACLC,cAAc,EAKf;IACC,MAAMC,sBAAsB,MAAMC,IAAAA,2BAAe,EAACH,OAAOD;IAEzD,IAAIK,IAAAA,mBAAY,EAACF,sBAAsB;YACrBA;QAAhB,MAAM,IAAIG,MAAMH,CAAAA,qCAAAA,oBAAoBI,aAAa,YAAjCJ,qCAAqC;IACvD;IAEA,6CAA6C;IAC7C,MAAMK,qBACJN,yBAAAA,iBAAmB,MAAMO,IAAAA,4BAAqB,EAACT,YAAY;IAE7D,OAAOU,IAAAA,8BAAiB,EAACP,qBAAqBK;AAChD"}
package/ast/index.js DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- const _export_star = require("@swc/helpers/_/_export_star");
3
- _export_star._(require("./dimension"), exports);
4
- _export_star._(require("./measure"), exports);
5
- _export_star._(require("./query-to-ast"), exports);
6
-
7
- //# sourceMappingURL=index.js.map
package/ast/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/ast/index.ts"],"sourcesContent":["export * from './dimension';\nexport * from './measure';\nexport * from './query-to-ast';\n"],"names":[],"mappings":";;uBAAc;uBACA;uBACA"}
package/ast/measure.js DELETED
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "validateMeasureQuery", {
3
- enumerable: true,
4
- get: function() {
5
- return validateMeasureQuery;
6
- }
7
- });
8
- const _meerkatcore = require("@devrev/meerkat-core");
9
- const _querytoast = require("./query-to-ast");
10
- const _utils = require("./utils");
11
- const validateMeasureQuery = async ({ connection, query, validFunctions })=>{
12
- const parsedSerialization = await (0, _querytoast.parseQueryToAST)(query, connection);
13
- if ((0, _utils.isParseError)(parsedSerialization)) {
14
- var _parsedSerialization_error_message;
15
- throw new Error((_parsedSerialization_error_message = parsedSerialization.error_message) != null ? _parsedSerialization_error_message : 'Unknown error');
16
- }
17
- // Only fetch valid functions if not provided
18
- const availableFunctions = validFunctions != null ? validFunctions : await (0, _utils.getAvailableFunctions)(connection, 'aggregate');
19
- const validScalarFunctions = await (0, _utils.getAvailableFunctions)(connection, 'scalar');
20
- return (0, _meerkatcore.validateMeasure)(parsedSerialization, availableFunctions, validScalarFunctions);
21
- };
22
-
23
- //# sourceMappingURL=measure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/ast/measure.ts"],"sourcesContent":["import { validateMeasure } from '@devrev/meerkat-core';\nimport { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';\nimport { parseQueryToAST } from './query-to-ast';\nimport { getAvailableFunctions, isParseError } from './utils';\n\n/**\n * Validates the query can be used as a measure by parsing it to an AST and checking its structure\n * @param connection - DuckDB connection instance\n * @param query - The query string to validate\n * @returns Promise<boolean> - Whether the measure is valid\n */\nexport const validateMeasureQuery = async ({\n connection,\n query,\n validFunctions,\n}: {\n connection: AsyncDuckDBConnection;\n query: string;\n validFunctions?: string[];\n}): Promise<boolean> => {\n const parsedSerialization = await parseQueryToAST(query, connection);\n\n if (isParseError(parsedSerialization)) {\n throw new Error(parsedSerialization.error_message ?? 'Unknown error');\n }\n\n // Only fetch valid functions if not provided\n const availableFunctions =\n validFunctions ?? (await getAvailableFunctions(connection, 'aggregate'));\n\n const validScalarFunctions = await getAvailableFunctions(\n connection,\n 'scalar'\n );\n\n return validateMeasure(\n parsedSerialization,\n availableFunctions,\n validScalarFunctions\n );\n};\n"],"names":["validateMeasureQuery","connection","query","validFunctions","parsedSerialization","parseQueryToAST","isParseError","Error","error_message","availableFunctions","getAvailableFunctions","validScalarFunctions","validateMeasure"],"mappings":";+BAWaA;;;eAAAA;;;6BAXmB;4BAEA;uBACoB;AAQ7C,MAAMA,uBAAuB,OAAO,EACzCC,UAAU,EACVC,KAAK,EACLC,cAAc,EAKf;IACC,MAAMC,sBAAsB,MAAMC,IAAAA,2BAAe,EAACH,OAAOD;IAEzD,IAAIK,IAAAA,mBAAY,EAACF,sBAAsB;YACrBA;QAAhB,MAAM,IAAIG,MAAMH,CAAAA,qCAAAA,oBAAoBI,aAAa,YAAjCJ,qCAAqC;IACvD;IAEA,6CAA6C;IAC7C,MAAMK,qBACJN,yBAAAA,iBAAmB,MAAMO,IAAAA,4BAAqB,EAACT,YAAY;IAE7D,MAAMU,uBAAuB,MAAMD,IAAAA,4BAAqB,EACtDT,YACA;IAGF,OAAOW,IAAAA,4BAAe,EACpBR,qBACAK,oBACAE;AAEJ"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "parseQueryToAST", {
3
- enumerable: true,
4
- get: function() {
5
- return parseQueryToAST;
6
- }
7
- });
8
- const _meerkatcore = require("@devrev/meerkat-core");
9
- const parseQueryToAST = async (query, connection)=>{
10
- const serializedQuery = (0, _meerkatcore.astSerializerQuery)(query);
11
- const arrowResult = await connection.query(serializedQuery);
12
- const parsedOutputQuery = arrowResult.toArray().map((row)=>row.toJSON());
13
- const deserializedQuery = (0, _meerkatcore.deserializeQuery)(parsedOutputQuery);
14
- return JSON.parse(deserializedQuery);
15
- };
16
-
17
- //# sourceMappingURL=query-to-ast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/ast/query-to-ast.ts"],"sourcesContent":["import {\n astSerializerQuery,\n deserializeQuery,\n ParsedSerialization,\n} from '@devrev/meerkat-core';\nimport { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';\n\n/**\n * Converts a query to an AST\n * @param query - The query string to convert\n * @param connection - The DuckDB connection instance\n * @returns The AST as a JSON object\n */\nexport const parseQueryToAST = async (\n query: string,\n connection: AsyncDuckDBConnection\n): Promise<ParsedSerialization> => {\n const serializedQuery = astSerializerQuery(query);\n const arrowResult = await connection.query(serializedQuery);\n\n const parsedOutputQuery = arrowResult.toArray().map((row) => row.toJSON());\n const deserializedQuery = deserializeQuery(parsedOutputQuery);\n\n return JSON.parse(deserializedQuery);\n};\n"],"names":["parseQueryToAST","query","connection","serializedQuery","astSerializerQuery","arrowResult","parsedOutputQuery","toArray","map","row","toJSON","deserializedQuery","deserializeQuery","JSON","parse"],"mappings":";+BAaaA;;;eAAAA;;;6BATN;AASA,MAAMA,kBAAkB,OAC7BC,OACAC;IAEA,MAAMC,kBAAkBC,IAAAA,+BAAkB,EAACH;IAC3C,MAAMI,cAAc,MAAMH,WAAWD,KAAK,CAACE;IAE3C,MAAMG,oBAAoBD,YAAYE,OAAO,GAAGC,GAAG,CAAC,CAACC,MAAQA,IAAIC,MAAM;IACvE,MAAMC,oBAAoBC,IAAAA,6BAAgB,EAACN;IAE3C,OAAOO,KAAKC,KAAK,CAACH;AACpB"}
package/ast/utils.js DELETED
@@ -1,24 +0,0 @@
1
- "use strict";
2
- function _export(target, all) {
3
- for(var name in all)Object.defineProperty(target, name, {
4
- enumerable: true,
5
- get: all[name]
6
- });
7
- }
8
- _export(exports, {
9
- getAvailableFunctions: function() {
10
- return getAvailableFunctions;
11
- },
12
- isParseError: function() {
13
- return isParseError;
14
- }
15
- });
16
- const isParseError = (data)=>{
17
- return !!data.error;
18
- };
19
- const getAvailableFunctions = async (connection, function_type)=>{
20
- const result = await connection.query(`SELECT distinct function_name FROM duckdb_functions() WHERE function_type = '${function_type}'`);
21
- return result.toArray().map((row)=>row.toJSON().function_name);
22
- };
23
-
24
- //# sourceMappingURL=utils.js.map
package/ast/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/ast/utils.ts"],"sourcesContent":["import { ParsedSerialization } from '@devrev/meerkat-core';\nimport { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';\n\nexport const isParseError = (data: ParsedSerialization): boolean => {\n return !!data.error;\n};\n\n// Helper function to get available functions from DuckDB based on function type\nexport const getAvailableFunctions = async (\n connection: AsyncDuckDBConnection,\n function_type: 'scalar' | 'aggregate'\n): Promise<string[]> => {\n const result = await connection.query(\n `SELECT distinct function_name FROM duckdb_functions() WHERE function_type = '${function_type}'`\n );\n\n return result.toArray().map((row) => row.toJSON().function_name);\n};\n"],"names":["getAvailableFunctions","isParseError","data","error","connection","function_type","result","query","toArray","map","row","toJSON","function_name"],"mappings":";;;;;;;;IAQaA,qBAAqB;eAArBA;;IALAC,YAAY;eAAZA;;;AAAN,MAAMA,eAAe,CAACC;IAC3B,OAAO,CAAC,CAACA,KAAKC,KAAK;AACrB;AAGO,MAAMH,wBAAwB,OACnCI,YACAC;IAEA,MAAMC,SAAS,MAAMF,WAAWG,KAAK,CACnC,CAAC,6EAA6E,EAAEF,cAAc,CAAC,CAAC;IAGlG,OAAOC,OAAOE,OAAO,GAAGC,GAAG,CAAC,CAACC,MAAQA,IAAIC,MAAM,GAAGC,aAAa;AACjE"}
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "cubeQueryToSQL", {
3
- enumerable: true,
4
- get: function() {
5
- return cubeQueryToSQL;
6
- }
7
- });
8
- const _extends = require("@swc/helpers/_/_extends");
9
- const _meerkatcore = require("@devrev/meerkat-core");
10
- const getQueryOutput = async (query, connection)=>{
11
- const queryOutput = await connection.query(query);
12
- const parsedOutputQuery = queryOutput.toArray().map((row)=>row.toJSON());
13
- return parsedOutputQuery;
14
- };
15
- const cubeQueryToSQL = async ({ connection, query, tableSchemas, contextParams })=>{
16
- const updatedTableSchemas = await Promise.all(tableSchemas.map(async (schema)=>{
17
- const baseFilterParamsSQL = await (0, _meerkatcore.getFinalBaseSQL)({
18
- query,
19
- tableSchema: schema,
20
- getQueryOutput: (query)=>getQueryOutput(query, connection)
21
- });
22
- return _extends._({}, schema, {
23
- sql: baseFilterParamsSQL
24
- });
25
- }));
26
- const updatedTableSchema = await (0, _meerkatcore.getCombinedTableSchema)(updatedTableSchemas, query);
27
- const ast = (0, _meerkatcore.cubeToDuckdbAST)(query, updatedTableSchema);
28
- if (!ast) {
29
- throw new Error('Could not generate AST');
30
- }
31
- const queryTemp = (0, _meerkatcore.astDeserializerQuery)(ast);
32
- const arrowResult = await connection.query(queryTemp);
33
- const parsedOutputQuery = arrowResult.toArray().map((row)=>row.toJSON());
34
- const preBaseQuery = (0, _meerkatcore.deserializeQuery)(parsedOutputQuery);
35
- const filterParamsSQL = await (0, _meerkatcore.getFilterParamsSQL)({
36
- getQueryOutput: (query)=>getQueryOutput(query, connection),
37
- query,
38
- tableSchema: updatedTableSchema,
39
- filterType: 'BASE_FILTER'
40
- });
41
- const filterParamQuery = (0, _meerkatcore.applyFilterParamsToBaseSQL)(updatedTableSchema.sql, filterParamsSQL);
42
- /**
43
- * Replace CONTEXT_PARAMS with context params
44
- */ const baseQuery = (0, _meerkatcore.detectApplyContextParamsToBaseSQL)(filterParamQuery, contextParams || {});
45
- /**
46
- * Replace BASE_TABLE_NAME with cube query
47
- */ const replaceBaseTableName = preBaseQuery.replace(_meerkatcore.BASE_TABLE_NAME, `(${baseQuery}) AS ${updatedTableSchema.name}`);
48
- /**
49
- * Add measures to the query
50
- */ const measures = query.measures;
51
- const dimensions = query.dimensions || [];
52
- const finalQuery = (0, _meerkatcore.applyProjectionToSQLQuery)(dimensions, measures, updatedTableSchema, replaceBaseTableName);
53
- return finalQuery;
54
- };
55
-
56
- //# sourceMappingURL=browser-cube-to-sql.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/browser-cube-to-sql/browser-cube-to-sql.ts"],"sourcesContent":["import {\n BASE_TABLE_NAME,\n ContextParams,\n Query,\n TableSchema,\n applyFilterParamsToBaseSQL,\n applyProjectionToSQLQuery,\n astDeserializerQuery,\n cubeToDuckdbAST,\n deserializeQuery,\n detectApplyContextParamsToBaseSQL,\n getCombinedTableSchema,\n getFilterParamsSQL,\n getFinalBaseSQL,\n} from '@devrev/meerkat-core';\nimport { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';\n\nconst getQueryOutput = async (\n query: string,\n connection: AsyncDuckDBConnection\n) => {\n const queryOutput = await connection.query(query);\n const parsedOutputQuery = queryOutput.toArray().map((row) => row.toJSON());\n return parsedOutputQuery;\n};\n\nexport interface CubeQueryToSQLParams {\n connection: AsyncDuckDBConnection;\n query: Query;\n tableSchemas: TableSchema[];\n contextParams?: ContextParams;\n}\n\nexport const cubeQueryToSQL = async ({\n connection,\n query,\n tableSchemas,\n contextParams,\n}: CubeQueryToSQLParams) => {\n const updatedTableSchemas: TableSchema[] = await Promise.all(\n tableSchemas.map(async (schema: TableSchema) => {\n const baseFilterParamsSQL = await getFinalBaseSQL({\n query,\n tableSchema: schema,\n getQueryOutput: (query) => getQueryOutput(query, connection),\n });\n return {\n ...schema,\n sql: baseFilterParamsSQL,\n };\n })\n );\n\n const updatedTableSchema = await getCombinedTableSchema(\n updatedTableSchemas,\n query\n );\n\n const ast = cubeToDuckdbAST(query, updatedTableSchema);\n if (!ast) {\n throw new Error('Could not generate AST');\n }\n\n const queryTemp = astDeserializerQuery(ast);\n\n const arrowResult = await connection.query(queryTemp);\n const parsedOutputQuery = arrowResult.toArray().map((row) => row.toJSON());\n\n const preBaseQuery = deserializeQuery(parsedOutputQuery);\n const filterParamsSQL = await getFilterParamsSQL({\n getQueryOutput: (query) => getQueryOutput(query, connection),\n query,\n tableSchema: updatedTableSchema,\n filterType: 'BASE_FILTER',\n });\n\n const filterParamQuery = applyFilterParamsToBaseSQL(\n updatedTableSchema.sql,\n filterParamsSQL\n );\n\n /**\n * Replace CONTEXT_PARAMS with context params\n */\n const baseQuery = detectApplyContextParamsToBaseSQL(\n filterParamQuery,\n contextParams || {}\n );\n\n /**\n * Replace BASE_TABLE_NAME with cube query\n */\n const replaceBaseTableName = preBaseQuery.replace(\n BASE_TABLE_NAME,\n `(${baseQuery}) AS ${updatedTableSchema.name}`\n );\n\n /**\n * Add measures to the query\n */\n const measures = query.measures;\n const dimensions = query.dimensions || [];\n const finalQuery = applyProjectionToSQLQuery(\n dimensions,\n measures,\n updatedTableSchema,\n replaceBaseTableName\n );\n\n return finalQuery;\n};\n"],"names":["cubeQueryToSQL","getQueryOutput","query","connection","queryOutput","parsedOutputQuery","toArray","map","row","toJSON","tableSchemas","contextParams","updatedTableSchemas","Promise","all","schema","baseFilterParamsSQL","getFinalBaseSQL","tableSchema","sql","updatedTableSchema","getCombinedTableSchema","ast","cubeToDuckdbAST","Error","queryTemp","astDeserializerQuery","arrowResult","preBaseQuery","deserializeQuery","filterParamsSQL","getFilterParamsSQL","filterType","filterParamQuery","applyFilterParamsToBaseSQL","baseQuery","detectApplyContextParamsToBaseSQL","replaceBaseTableName","replace","BASE_TABLE_NAME","name","measures","dimensions","finalQuery","applyProjectionToSQLQuery"],"mappings":";+BAiCaA;;;eAAAA;;;;6BAnBN;AAGP,MAAMC,iBAAiB,OACrBC,OACAC;IAEA,MAAMC,cAAc,MAAMD,WAAWD,KAAK,CAACA;IAC3C,MAAMG,oBAAoBD,YAAYE,OAAO,GAAGC,GAAG,CAAC,CAACC,MAAQA,IAAIC,MAAM;IACvE,OAAOJ;AACT;AASO,MAAML,iBAAiB,OAAO,EACnCG,UAAU,EACVD,KAAK,EACLQ,YAAY,EACZC,aAAa,EACQ;IACrB,MAAMC,sBAAqC,MAAMC,QAAQC,GAAG,CAC1DJ,aAAaH,GAAG,CAAC,OAAOQ;QACtB,MAAMC,sBAAsB,MAAMC,IAAAA,4BAAe,EAAC;YAChDf;YACAgB,aAAaH;YACbd,gBAAgB,CAACC,QAAUD,eAAeC,OAAOC;QACnD;QACA,OAAO,eACFY;YACHI,KAAKH;;IAET;IAGF,MAAMI,qBAAqB,MAAMC,IAAAA,mCAAsB,EACrDT,qBACAV;IAGF,MAAMoB,MAAMC,IAAAA,4BAAe,EAACrB,OAAOkB;IACnC,IAAI,CAACE,KAAK;QACR,MAAM,IAAIE,MAAM;IAClB;IAEA,MAAMC,YAAYC,IAAAA,iCAAoB,EAACJ;IAEvC,MAAMK,cAAc,MAAMxB,WAAWD,KAAK,CAACuB;IAC3C,MAAMpB,oBAAoBsB,YAAYrB,OAAO,GAAGC,GAAG,CAAC,CAACC,MAAQA,IAAIC,MAAM;IAEvE,MAAMmB,eAAeC,IAAAA,6BAAgB,EAACxB;IACtC,MAAMyB,kBAAkB,MAAMC,IAAAA,+BAAkB,EAAC;QAC/C9B,gBAAgB,CAACC,QAAUD,eAAeC,OAAOC;QACjDD;QACAgB,aAAaE;QACbY,YAAY;IACd;IAEA,MAAMC,mBAAmBC,IAAAA,uCAA0B,EACjDd,mBAAmBD,GAAG,EACtBW;IAGF;;GAEC,GACD,MAAMK,YAAYC,IAAAA,8CAAiC,EACjDH,kBACAtB,iBAAiB,CAAC;IAGpB;;GAEC,GACD,MAAM0B,uBAAuBT,aAAaU,OAAO,CAC/CC,4BAAe,EACf,CAAC,CAAC,EAAEJ,UAAU,KAAK,EAAEf,mBAAmBoB,IAAI,CAAC,CAAC;IAGhD;;GAEC,GACD,MAAMC,WAAWvC,MAAMuC,QAAQ;IAC/B,MAAMC,aAAaxC,MAAMwC,UAAU,IAAI,EAAE;IACzC,MAAMC,aAAaC,IAAAA,sCAAyB,EAC1CF,YACAD,UACArB,oBACAiB;IAGF,OAAOM;AACT"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "cubeQueryToSQLWithResolution", {
3
- enumerable: true,
4
- get: function() {
5
- return cubeQueryToSQLWithResolution;
6
- }
7
- });
8
- const _meerkatcore = require("@devrev/meerkat-core");
9
- const _browsercubetosql = require("../browser-cube-to-sql/browser-cube-to-sql");
10
- const cubeQueryToSQLWithResolution = async ({ connection, query, tableSchemas, resolutionConfig, contextParams })=>{
11
- const baseSql = await (0, _browsercubetosql.cubeQueryToSQL)({
12
- connection,
13
- query,
14
- tableSchemas,
15
- contextParams
16
- });
17
- if (resolutionConfig.columnConfigs.length === 0) {
18
- // If no resolution is needed, return the base SQL.
19
- return baseSql;
20
- }
21
- // Create a table schema for the base query.
22
- const baseTable = (0, _meerkatcore.createBaseTableSchema)(baseSql, tableSchemas, resolutionConfig, query.measures, query.dimensions);
23
- const resolutionSchemas = (0, _meerkatcore.generateResolutionSchemas)(resolutionConfig);
24
- const resolveParams = {
25
- connection: connection,
26
- query: {
27
- measures: [],
28
- dimensions: (0, _meerkatcore.generateResolvedDimensions)(query, resolutionConfig),
29
- joinPaths: (0, _meerkatcore.generateResolutionJoinPaths)(resolutionConfig)
30
- },
31
- tableSchemas: [
32
- baseTable,
33
- ...resolutionSchemas
34
- ]
35
- };
36
- const sql = await (0, _browsercubetosql.cubeQueryToSQL)(resolveParams);
37
- return sql;
38
- };
39
-
40
- //# sourceMappingURL=browser-cube-to-sql-with-resolution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution.ts"],"sourcesContent":["import {\n ContextParams,\n createBaseTableSchema,\n generateResolutionJoinPaths,\n generateResolutionSchemas,\n generateResolvedDimensions,\n Query,\n ResolutionConfig,\n TableSchema,\n} from '@devrev/meerkat-core';\nimport { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';\nimport {\n cubeQueryToSQL,\n CubeQueryToSQLParams,\n} from '../browser-cube-to-sql/browser-cube-to-sql';\n\nexport interface CubeQueryToSQLWithResolutionParams {\n connection: AsyncDuckDBConnection;\n query: Query;\n tableSchemas: TableSchema[];\n resolutionConfig: ResolutionConfig;\n contextParams?: ContextParams;\n}\n\nexport const cubeQueryToSQLWithResolution = async ({\n connection,\n query,\n tableSchemas,\n resolutionConfig,\n contextParams,\n}: CubeQueryToSQLWithResolutionParams) => {\n const baseSql = await cubeQueryToSQL({\n connection,\n query,\n tableSchemas,\n contextParams,\n });\n\n if (resolutionConfig.columnConfigs.length === 0) {\n // If no resolution is needed, return the base SQL.\n return baseSql;\n }\n\n // Create a table schema for the base query.\n const baseTable: TableSchema = createBaseTableSchema(\n baseSql,\n tableSchemas,\n resolutionConfig,\n query.measures,\n query.dimensions\n );\n\n const resolutionSchemas: TableSchema[] =\n generateResolutionSchemas(resolutionConfig);\n\n const resolveParams: CubeQueryToSQLParams = {\n connection: connection,\n query: {\n measures: [],\n dimensions: generateResolvedDimensions(query, resolutionConfig),\n joinPaths: generateResolutionJoinPaths(resolutionConfig),\n },\n tableSchemas: [baseTable, ...resolutionSchemas],\n };\n const sql = await cubeQueryToSQL(resolveParams);\n\n return sql;\n};\n"],"names":["cubeQueryToSQLWithResolution","connection","query","tableSchemas","resolutionConfig","contextParams","baseSql","cubeQueryToSQL","columnConfigs","length","baseTable","createBaseTableSchema","measures","dimensions","resolutionSchemas","generateResolutionSchemas","resolveParams","generateResolvedDimensions","joinPaths","generateResolutionJoinPaths","sql"],"mappings":";+BAwBaA;;;eAAAA;;;6BAfN;kCAKA;AAUA,MAAMA,+BAA+B,OAAO,EACjDC,UAAU,EACVC,KAAK,EACLC,YAAY,EACZC,gBAAgB,EAChBC,aAAa,EACsB;IACnC,MAAMC,UAAU,MAAMC,IAAAA,gCAAc,EAAC;QACnCN;QACAC;QACAC;QACAE;IACF;IAEA,IAAID,iBAAiBI,aAAa,CAACC,MAAM,KAAK,GAAG;QAC/C,mDAAmD;QACnD,OAAOH;IACT;IAEA,4CAA4C;IAC5C,MAAMI,YAAyBC,IAAAA,kCAAqB,EAClDL,SACAH,cACAC,kBACAF,MAAMU,QAAQ,EACdV,MAAMW,UAAU;IAGlB,MAAMC,oBACJC,IAAAA,sCAAyB,EAACX;IAE5B,MAAMY,gBAAsC;QAC1Cf,YAAYA;QACZC,OAAO;YACLU,UAAU,EAAE;YACZC,YAAYI,IAAAA,uCAA0B,EAACf,OAAOE;YAC9Cc,WAAWC,IAAAA,wCAA2B,EAACf;QACzC;QACAD,cAAc;YAACO;eAAcI;SAAkB;IACjD;IACA,MAAMM,MAAM,MAAMb,IAAAA,gCAAc,EAACS;IAEjC,OAAOI;AACT"}
package/index.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- function _export(target, all) {
3
- for(var name in all)Object.defineProperty(target, name, {
4
- enumerable: true,
5
- get: all[name]
6
- });
7
- }
8
- _export(exports, {
9
- convertCubeStringToTableSchema: function() {
10
- return _meerkatcore.convertCubeStringToTableSchema;
11
- },
12
- parseQueryToAST: function() {
13
- return _ast.parseQueryToAST;
14
- },
15
- validateDimensionQuery: function() {
16
- return _ast.validateDimensionQuery;
17
- },
18
- validateMeasureQuery: function() {
19
- return _ast.validateMeasureQuery;
20
- }
21
- });
22
- const _export_star = require("@swc/helpers/_/_export_star");
23
- _export_star._(require("./browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution"), exports);
24
- _export_star._(require("./browser-cube-to-sql/browser-cube-to-sql"), exports);
25
- const _meerkatcore = require("@devrev/meerkat-core");
26
- const _ast = require("./ast");
27
-
28
- //# sourceMappingURL=index.js.map
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../meerkat-browser/src/index.ts"],"sourcesContent":["export * from './browser-cube-to-sql-with-resolution/browser-cube-to-sql-with-resolution';\nexport * from './browser-cube-to-sql/browser-cube-to-sql';\nexport { convertCubeStringToTableSchema };\n import { convertCubeStringToTableSchema } from '@devrev/meerkat-core';\nexport {\n parseQueryToAST,\n validateDimensionQuery,\n validateMeasureQuery\n} from './ast';\n\n"],"names":["convertCubeStringToTableSchema","parseQueryToAST","validateDimensionQuery","validateMeasureQuery"],"mappings":";;;;;;;;IAESA,8BAA8B;eAA9BA,2CAA8B;;IAGrCC,eAAe;eAAfA,oBAAe;;IACfC,sBAAsB;eAAtBA,2BAAsB;;IACtBC,oBAAoB;eAApBA,yBAAoB;;;;uBAPR;uBACA;6BAEmC;qBAK1C"}