@devrev/meerkat-browser 0.0.92 → 0.0.94

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.
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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"}
@@ -6,11 +6,11 @@ function _export(target, all) {
6
6
  });
7
7
  }
8
8
  _export(exports, {
9
- isParseError: function() {
10
- return isParseError;
11
- },
12
9
  getAvailableFunctions: function() {
13
10
  return getAvailableFunctions;
11
+ },
12
+ isParseError: function() {
13
+ return isParseError;
14
14
  }
15
15
  });
16
16
  const isParseError = (data)=>{
@@ -0,0 +1 @@
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"}
@@ -0,0 +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 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"}
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../meerkat-browser/src/index.ts"],"sourcesContent":["export * from './browser-cube-to-sql/browser-cube-to-sql';\nexport { convertCubeStringToTableSchema };\nimport { convertCubeStringToTableSchema } from '@devrev/meerkat-core';\nexport {\n parseQueryToAST,\n validateDimensionQuery,\n validateMeasureQuery,\n} from './ast';\n"],"names":["convertCubeStringToTableSchema","parseQueryToAST","validateDimensionQuery","validateMeasureQuery"],"mappings":";;;;;;;;IACSA,8BAA8B;eAA9BA,2CAA8B;;IAGrCC,eAAe;eAAfA,oBAAe;;IACfC,sBAAsB;eAAtBA,2BAAsB;;IACtBC,oBAAoB;eAApBA,yBAAoB;;;;uBANR;6BAEiC;qBAKxC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-browser",
3
- "version": "0.0.92",
3
+ "version": "0.0.94",
4
4
  "dependencies": {
5
5
  "@swc/helpers": "~0.5.0",
6
6
  "@devrev/meerkat-core": "*",
@@ -25,5 +25,6 @@
25
25
  },
26
26
  "publishConfig": {
27
27
  "registry": "https://registry.npmjs.org"
28
- }
29
- }
28
+ },
29
+ "types": "./src/index.d.ts"
30
+ }
@@ -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"}
@@ -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"}
@@ -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 +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"}
@@ -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":["isParseError","getAvailableFunctions","data","error","connection","function_type","result","query","toArray","map","row","toJSON","function_name"],"mappings":";;;;;;;;IAGaA,YAAY;eAAZA;;IAKAC,qBAAqB;eAArBA;;;AALN,MAAMD,eAAe,CAACE;IAC3B,OAAO,CAAC,CAACA,KAAKC,KAAK;AACrB;AAGO,MAAMF,wBAAwB,OACnCG,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 +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\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"}
package/src/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../meerkat-browser/src/index.ts"],"sourcesContent":["export * from './browser-cube-to-sql/browser-cube-to-sql';\nexport { convertCubeStringToTableSchema };\nimport { convertCubeStringToTableSchema } from '@devrev/meerkat-core';\nexport {\n parseQueryToAST,\n validateDimensionQuery,\n validateMeasureQuery,\n} from './ast';\n"],"names":["convertCubeStringToTableSchema","parseQueryToAST","validateDimensionQuery","validateMeasureQuery"],"mappings":";;;;;;;;IACSA,8BAA8B;eAA9BA,2CAA8B;;IAGrCC,eAAe;eAAfA,oBAAe;;IACfC,sBAAsB;eAAtBA,2BAAsB;;IACtBC,oBAAoB;eAApBA,yBAAoB;;;;uBANR;6BAEiC;qBAKxC"}
File without changes
File without changes
File without changes
File without changes
File without changes