@devrev/meerkat-browser 0.0.82 → 0.0.84

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.82",
3
+ "version": "0.0.84",
4
4
  "dependencies": {
5
5
  "@swc/helpers": "~0.5.0",
6
6
  "@devrev/meerkat-core": "*",
@@ -1,3 +1,10 @@
1
1
  import { ContextParams, Query, TableSchema } from '@devrev/meerkat-core';
2
2
  import { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';
3
- export declare const cubeQueryToSQL: (connection: AsyncDuckDBConnection, cubeQuery: Query, tableSchemas: TableSchema[], contextParams?: ContextParams) => Promise<string>;
3
+ interface CubeQueryToSQLParams {
4
+ connection: AsyncDuckDBConnection;
5
+ query: Query;
6
+ tableSchemas: TableSchema[];
7
+ contextParams?: ContextParams;
8
+ }
9
+ export declare const cubeQueryToSQL: ({ connection, query, tableSchemas, contextParams }: CubeQueryToSQLParams) => Promise<string>;
10
+ export {};
@@ -7,51 +7,24 @@ Object.defineProperty(exports, "cubeQueryToSQL", {
7
7
  });
8
8
  const _extends = require("@swc/helpers/_/_extends");
9
9
  const _meerkatcore = require("@devrev/meerkat-core");
10
- const getFilterParamsSQL = async ({ cubeQuery, tableSchema, filterType, connection })=>{
11
- const filterParamsAST = (0, _meerkatcore.getFilterParamsAST)(cubeQuery, tableSchema, filterType);
12
- const filterParamsSQL = [];
13
- for (const filterParamAST of filterParamsAST){
14
- if (!filterParamAST.ast) {
15
- continue;
16
- }
17
- const queryOutput = await connection.query((0, _meerkatcore.astDeserializerQuery)(filterParamAST.ast));
18
- const parsedOutputQuery = queryOutput.toArray().map((row)=>row.toJSON());
19
- const sql = (0, _meerkatcore.deserializeQuery)(parsedOutputQuery);
20
- filterParamsSQL.push({
21
- memberKey: filterParamAST.memberKey,
22
- sql: sql,
23
- matchKey: filterParamAST.matchKey
24
- });
25
- }
26
- return filterParamsSQL;
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;
27
14
  };
28
- const getFinalBaseSQL = async (cubeQuery, tableSchema, connection)=>{
29
- /**
30
- * Apply transformation to the supplied base query.
31
- * This involves updating the filter placeholder with the actual filter values.
32
- */ const baseFilterParamsSQL = await getFilterParamsSQL({
33
- cubeQuery: cubeQuery,
34
- tableSchema,
35
- filterType: 'BASE_FILTER',
36
- connection
37
- });
38
- const baseSQL = (0, _meerkatcore.applyFilterParamsToBaseSQL)(tableSchema.sql, baseFilterParamsSQL);
39
- const baseSQLWithFilterProjection = (0, _meerkatcore.getWrappedBaseQueryWithProjections)({
40
- baseQuery: baseSQL,
41
- tableSchema,
42
- query: cubeQuery
43
- });
44
- return baseSQLWithFilterProjection;
45
- };
46
- const cubeQueryToSQL = async (connection, cubeQuery, tableSchemas, contextParams)=>{
15
+ const cubeQueryToSQL = async ({ connection, query, tableSchemas, contextParams })=>{
47
16
  const updatedTableSchemas = await Promise.all(tableSchemas.map(async (schema)=>{
48
- const baseFilterParamsSQL = await getFinalBaseSQL(cubeQuery, schema, connection);
17
+ const baseFilterParamsSQL = await (0, _meerkatcore.getFinalBaseSQL)({
18
+ query,
19
+ tableSchema: schema,
20
+ getQueryOutput: (query)=>getQueryOutput(query, connection)
21
+ });
49
22
  return _extends._({}, schema, {
50
23
  sql: baseFilterParamsSQL
51
24
  });
52
25
  }));
53
- const updatedTableSchema = await (0, _meerkatcore.getCombinedTableSchema)(updatedTableSchemas, cubeQuery);
54
- const ast = (0, _meerkatcore.cubeToDuckdbAST)(cubeQuery, updatedTableSchema);
26
+ const updatedTableSchema = await (0, _meerkatcore.getCombinedTableSchema)(updatedTableSchemas, query);
27
+ const ast = (0, _meerkatcore.cubeToDuckdbAST)(query, updatedTableSchema);
55
28
  if (!ast) {
56
29
  throw new Error('Could not generate AST');
57
30
  }
@@ -59,9 +32,9 @@ const cubeQueryToSQL = async (connection, cubeQuery, tableSchemas, contextParams
59
32
  const arrowResult = await connection.query(queryTemp);
60
33
  const parsedOutputQuery = arrowResult.toArray().map((row)=>row.toJSON());
61
34
  const preBaseQuery = (0, _meerkatcore.deserializeQuery)(parsedOutputQuery);
62
- const filterParamsSQL = await getFilterParamsSQL({
63
- connection,
64
- cubeQuery,
35
+ const filterParamsSQL = await (0, _meerkatcore.getFilterParamsSQL)({
36
+ getQueryOutput: (query)=>getQueryOutput(query, connection),
37
+ query,
65
38
  tableSchema: updatedTableSchema,
66
39
  filterType: 'BASE_FILTER'
67
40
  });
@@ -74,8 +47,8 @@ const cubeQueryToSQL = async (connection, cubeQuery, tableSchemas, contextParams
74
47
  */ const replaceBaseTableName = preBaseQuery.replace(_meerkatcore.BASE_TABLE_NAME, `(${baseQuery}) AS ${updatedTableSchema.name}`);
75
48
  /**
76
49
  * Add measures to the query
77
- */ const measures = cubeQuery.measures;
78
- const dimensions = cubeQuery.dimensions || [];
50
+ */ const measures = query.measures;
51
+ const dimensions = query.dimensions || [];
79
52
  const finalQuery = (0, _meerkatcore.applyProjectionToSQLQuery)(dimensions, measures, updatedTableSchema, replaceBaseTableName);
80
53
  return finalQuery;
81
54
  };
@@ -1 +1 @@
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 FilterType,\n Query,\n TableSchema,\n applyFilterParamsToBaseSQL,\n applyProjectionToSQLQuery,\n astDeserializerQuery,\n cubeToDuckdbAST,\n deserializeQuery,\n detectApplyContextParamsToBaseSQL,\n getCombinedTableSchema,\n getFilterParamsAST,\n getWrappedBaseQueryWithProjections,\n} from '@devrev/meerkat-core';\nimport { AsyncDuckDBConnection } from '@duckdb/duckdb-wasm';\n\nconst getFilterParamsSQL = async ({\n cubeQuery,\n tableSchema,\n filterType,\n connection,\n}: {\n cubeQuery: Query;\n tableSchema: TableSchema;\n filterType?: FilterType;\n connection: AsyncDuckDBConnection;\n}) => {\n const filterParamsAST = getFilterParamsAST(\n cubeQuery,\n tableSchema,\n filterType\n );\n const filterParamsSQL = [];\n\n for (const filterParamAST of filterParamsAST) {\n if (!filterParamAST.ast) {\n continue;\n }\n\n const queryOutput = await connection.query(\n astDeserializerQuery(filterParamAST.ast)\n );\n const parsedOutputQuery = queryOutput.toArray().map((row) => row.toJSON());\n\n const sql = deserializeQuery(parsedOutputQuery);\n\n filterParamsSQL.push({\n memberKey: filterParamAST.memberKey,\n sql: sql,\n matchKey: filterParamAST.matchKey,\n });\n }\n return filterParamsSQL;\n};\n\nconst getFinalBaseSQL = async (\n cubeQuery: Query,\n tableSchema: TableSchema,\n connection: AsyncDuckDBConnection\n) => {\n /**\n * Apply transformation to the supplied base query.\n * This involves updating the filter placeholder with the actual filter values.\n */\n const baseFilterParamsSQL = await getFilterParamsSQL({\n cubeQuery: cubeQuery,\n tableSchema,\n filterType: 'BASE_FILTER',\n connection,\n });\n const baseSQL = applyFilterParamsToBaseSQL(\n tableSchema.sql,\n baseFilterParamsSQL\n );\n const baseSQLWithFilterProjection = getWrappedBaseQueryWithProjections({\n baseQuery: baseSQL,\n tableSchema,\n query: cubeQuery,\n });\n return baseSQLWithFilterProjection;\n};\n\nexport const cubeQueryToSQL = async (\n connection: AsyncDuckDBConnection,\n cubeQuery: Query,\n tableSchemas: TableSchema[],\n contextParams?: ContextParams\n) => {\n const updatedTableSchemas: TableSchema[] = await Promise.all(\n tableSchemas.map(async (schema: TableSchema) => {\n const baseFilterParamsSQL = await getFinalBaseSQL(\n cubeQuery,\n schema,\n connection\n );\n return {\n ...schema,\n sql: baseFilterParamsSQL,\n };\n })\n );\n\n const updatedTableSchema = await getCombinedTableSchema(\n updatedTableSchemas,\n cubeQuery\n );\n\n const ast = cubeToDuckdbAST(cubeQuery, 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 connection,\n cubeQuery,\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 = cubeQuery.measures;\n const dimensions = cubeQuery.dimensions || [];\n const finalQuery = applyProjectionToSQLQuery(\n dimensions,\n measures,\n updatedTableSchema,\n replaceBaseTableName\n );\n\n return finalQuery;\n};\n"],"names":["cubeQueryToSQL","getFilterParamsSQL","cubeQuery","tableSchema","filterType","connection","filterParamsAST","getFilterParamsAST","filterParamsSQL","filterParamAST","ast","queryOutput","query","astDeserializerQuery","parsedOutputQuery","toArray","map","row","toJSON","sql","deserializeQuery","push","memberKey","matchKey","getFinalBaseSQL","baseFilterParamsSQL","baseSQL","applyFilterParamsToBaseSQL","baseSQLWithFilterProjection","getWrappedBaseQueryWithProjections","baseQuery","tableSchemas","contextParams","updatedTableSchemas","Promise","all","schema","updatedTableSchema","getCombinedTableSchema","cubeToDuckdbAST","Error","queryTemp","arrowResult","preBaseQuery","filterParamQuery","detectApplyContextParamsToBaseSQL","replaceBaseTableName","replace","BASE_TABLE_NAME","name","measures","dimensions","finalQuery","applyProjectionToSQLQuery"],"mappings":";+BAoFaA;;;eAAAA;;;;6BArEN;AAGP,MAAMC,qBAAqB,OAAO,EAChCC,SAAS,EACTC,WAAW,EACXC,UAAU,EACVC,UAAU,EAMX;IACC,MAAMC,kBAAkBC,IAAAA,+BAAkB,EACxCL,WACAC,aACAC;IAEF,MAAMI,kBAAkB,EAAE;IAE1B,KAAK,MAAMC,kBAAkBH,gBAAiB;QAC5C,IAAI,CAACG,eAAeC,GAAG,EAAE;YACvB;QACF;QAEA,MAAMC,cAAc,MAAMN,WAAWO,KAAK,CACxCC,IAAAA,iCAAoB,EAACJ,eAAeC,GAAG;QAEzC,MAAMI,oBAAoBH,YAAYI,OAAO,GAAGC,GAAG,CAAC,CAACC,MAAQA,IAAIC,MAAM;QAEvE,MAAMC,MAAMC,IAAAA,6BAAgB,EAACN;QAE7BN,gBAAgBa,IAAI,CAAC;YACnBC,WAAWb,eAAea,SAAS;YACnCH,KAAKA;YACLI,UAAUd,eAAec,QAAQ;QACnC;IACF;IACA,OAAOf;AACT;AAEA,MAAMgB,kBAAkB,OACtBtB,WACAC,aACAE;IAEA;;;GAGC,GACD,MAAMoB,sBAAsB,MAAMxB,mBAAmB;QACnDC,WAAWA;QACXC;QACAC,YAAY;QACZC;IACF;IACA,MAAMqB,UAAUC,IAAAA,uCAA0B,EACxCxB,YAAYgB,GAAG,EACfM;IAEF,MAAMG,8BAA8BC,IAAAA,+CAAkC,EAAC;QACrEC,WAAWJ;QACXvB;QACAS,OAAOV;IACT;IACA,OAAO0B;AACT;AAEO,MAAM5B,iBAAiB,OAC5BK,YACAH,WACA6B,cACAC;IAEA,MAAMC,sBAAqC,MAAMC,QAAQC,GAAG,CAC1DJ,aAAaf,GAAG,CAAC,OAAOoB;QACtB,MAAMX,sBAAsB,MAAMD,gBAChCtB,WACAkC,QACA/B;QAEF,OAAO,eACF+B;YACHjB,KAAKM;;IAET;IAGF,MAAMY,qBAAqB,MAAMC,IAAAA,mCAAsB,EACrDL,qBACA/B;IAGF,MAAMQ,MAAM6B,IAAAA,4BAAe,EAACrC,WAAWmC;IACvC,IAAI,CAAC3B,KAAK;QACR,MAAM,IAAI8B,MAAM;IAClB;IAEA,MAAMC,YAAY5B,IAAAA,iCAAoB,EAACH;IAEvC,MAAMgC,cAAc,MAAMrC,WAAWO,KAAK,CAAC6B;IAC3C,MAAM3B,oBAAoB4B,YAAY3B,OAAO,GAAGC,GAAG,CAAC,CAACC,MAAQA,IAAIC,MAAM;IAEvE,MAAMyB,eAAevB,IAAAA,6BAAgB,EAACN;IACtC,MAAMN,kBAAkB,MAAMP,mBAAmB;QAC/CI;QACAH;QACAC,aAAakC;QACbjC,YAAY;IACd;IAEA,MAAMwC,mBAAmBjB,IAAAA,uCAA0B,EACjDU,mBAAmBlB,GAAG,EACtBX;IAGF;;GAEC,GACD,MAAMsB,YAAYe,IAAAA,8CAAiC,EACjDD,kBACAZ,iBAAiB,CAAC;IAGpB;;GAEC,GACD,MAAMc,uBAAuBH,aAAaI,OAAO,CAC/CC,4BAAe,EACf,CAAC,CAAC,EAAElB,UAAU,KAAK,EAAEO,mBAAmBY,IAAI,CAAC,CAAC;IAGhD;;GAEC,GACD,MAAMC,WAAWhD,UAAUgD,QAAQ;IACnC,MAAMC,aAAajD,UAAUiD,UAAU,IAAI,EAAE;IAC7C,MAAMC,aAAaC,IAAAA,sCAAyB,EAC1CF,YACAD,UACAb,oBACAS;IAGF,OAAOM;AACT"}
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\n\nconst getQueryOutput = async (query: string, connection: AsyncDuckDBConnection) => {\n const queryOutput = await connection.query(query);\n const parsedOutputQuery = queryOutput.toArray().map((row) => row.toJSON());\n return parsedOutputQuery;\n}\n\n\ninterface 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":";+BAgCaA;;;eAAAA;;;;6BAlBN;AAIP,MAAMC,iBAAiB,OAAOC,OAAeC;IAC3C,MAAMC,cAAc,MAAMD,WAAWD,KAAK,CAACA;IAC3C,MAAMG,oBAAoBD,YAAYE,OAAO,GAAGC,GAAG,CAAC,CAACC,MAAQA,IAAIC,MAAM;IACvE,OAAOJ;AACT;AAUO,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"}